From 6adc434f8e685037eb4ae6ed9422762872fb77fc Mon Sep 17 00:00:00 2001 From: laidu Date: Fri, 30 Mar 2018 08:07:19 +0800 Subject: [PATCH 001/417] sync --- blog | 2 +- .../pom.xml | 15 +++++++++++++++ .../book/learn/dsaa3th/package-info.java | 7 +++++++ .../src/site/markdown/index.md | 1 + code-practice/book-learn/pom.xml | 19 +++++++++++++++++++ .../book-learn/src/site/markdown/index.md | 3 +++ code-practice/pom.xml | 1 + 7 files changed, 47 insertions(+), 1 deletion(-) create mode 100644 code-practice/book-learn/dataStructureandAlgorithmAnalysis3th/pom.xml create mode 100644 code-practice/book-learn/dataStructureandAlgorithmAnalysis3th/src/main/java/org/laidu/learn/book/learn/dsaa3th/package-info.java create mode 100644 code-practice/book-learn/dataStructureandAlgorithmAnalysis3th/src/site/markdown/index.md create mode 100644 code-practice/book-learn/pom.xml create mode 100644 code-practice/book-learn/src/site/markdown/index.md diff --git a/blog b/blog index 7940ca818..4cdb3d2ef 160000 --- a/blog +++ b/blog @@ -1 +1 @@ -Subproject commit 7940ca818cdc0af54097c341b4148a28b50a06df +Subproject commit 4cdb3d2ef356251cf0e8ba817f80510382ece6e4 diff --git a/code-practice/book-learn/dataStructureandAlgorithmAnalysis3th/pom.xml b/code-practice/book-learn/dataStructureandAlgorithmAnalysis3th/pom.xml new file mode 100644 index 000000000..2a4258ca0 --- /dev/null +++ b/code-practice/book-learn/dataStructureandAlgorithmAnalysis3th/pom.xml @@ -0,0 +1,15 @@ + + + + book-learn + org.laidu.learn + 1.0-SNAPSHOT + + 4.0.0 + + dataStructureandAlgorithmAnalysis3th + + + \ No newline at end of file diff --git a/code-practice/book-learn/dataStructureandAlgorithmAnalysis3th/src/main/java/org/laidu/learn/book/learn/dsaa3th/package-info.java b/code-practice/book-learn/dataStructureandAlgorithmAnalysis3th/src/main/java/org/laidu/learn/book/learn/dsaa3th/package-info.java new file mode 100644 index 000000000..d7c1fdbf6 --- /dev/null +++ b/code-practice/book-learn/dataStructureandAlgorithmAnalysis3th/src/main/java/org/laidu/learn/book/learn/dsaa3th/package-info.java @@ -0,0 +1,7 @@ +/** + * homework + *

+ * Created by tiancai.zang + * on 2018-03-24 22:04. + */ +package org.laidu.learn.book.learn.dsaa3th; \ No newline at end of file diff --git a/code-practice/book-learn/dataStructureandAlgorithmAnalysis3th/src/site/markdown/index.md b/code-practice/book-learn/dataStructureandAlgorithmAnalysis3th/src/site/markdown/index.md new file mode 100644 index 000000000..642eb6675 --- /dev/null +++ b/code-practice/book-learn/dataStructureandAlgorithmAnalysis3th/src/site/markdown/index.md @@ -0,0 +1 @@ +# 数据结构与算法分析-java语言描述 diff --git a/code-practice/book-learn/pom.xml b/code-practice/book-learn/pom.xml new file mode 100644 index 000000000..208f0eaf2 --- /dev/null +++ b/code-practice/book-learn/pom.xml @@ -0,0 +1,19 @@ + + + + code-practice + org.laidu.learn + 1.0-SNAPSHOT + + 4.0.0 + + book-learn + pom + + dataStructureandAlgorithmAnalysis3th + + + + \ No newline at end of file diff --git a/code-practice/book-learn/src/site/markdown/index.md b/code-practice/book-learn/src/site/markdown/index.md new file mode 100644 index 000000000..2362ec4a9 --- /dev/null +++ b/code-practice/book-learn/src/site/markdown/index.md @@ -0,0 +1,3 @@ +# 书中代码练习 + +* [数据结构与算法分析-java语言描述]() \ No newline at end of file diff --git a/code-practice/pom.xml b/code-practice/pom.xml index 40b399231..fa5dde064 100644 --- a/code-practice/pom.xml +++ b/code-practice/pom.xml @@ -13,6 +13,7 @@ pom nowcoder + book-learn From b75e67ac9fade18c23c58af03ca753be9b5cf141 Mon Sep 17 00:00:00 2001 From: laidu Date: Mon, 2 Apr 2018 08:10:26 +0800 Subject: [PATCH 002/417] add Reverse Polish --- .../{Btree => Binarytree}/BtreeBasic.java | 2 +- .../structure/tree/basic/ListAllFiles.java | 35 +++++++++++++++++++ .../src/site/markdown/expression.md | 11 ++++++ data-structure/src/site/markdown/index.md | 14 ++++---- 4 files changed, 55 insertions(+), 7 deletions(-) rename data-structure/src/main/java/org/laidu/learn/date/structure/tree/{Btree => Binarytree}/BtreeBasic.java (95%) create mode 100644 data-structure/src/main/java/org/laidu/learn/date/structure/tree/basic/ListAllFiles.java create mode 100644 data-structure/src/site/markdown/expression.md diff --git a/data-structure/src/main/java/org/laidu/learn/date/structure/tree/Btree/BtreeBasic.java b/data-structure/src/main/java/org/laidu/learn/date/structure/tree/Binarytree/BtreeBasic.java similarity index 95% rename from data-structure/src/main/java/org/laidu/learn/date/structure/tree/Btree/BtreeBasic.java rename to data-structure/src/main/java/org/laidu/learn/date/structure/tree/Binarytree/BtreeBasic.java index 7dfba43a0..cc840249d 100644 --- a/data-structure/src/main/java/org/laidu/learn/date/structure/tree/Btree/BtreeBasic.java +++ b/data-structure/src/main/java/org/laidu/learn/date/structure/tree/Binarytree/BtreeBasic.java @@ -1,4 +1,4 @@ -package org.laidu.learn.date.structure.tree.Btree; +package org.laidu.learn.date.structure.tree.Binarytree; import lombok.Data; import lombok.extern.slf4j.Slf4j; diff --git a/data-structure/src/main/java/org/laidu/learn/date/structure/tree/basic/ListAllFiles.java b/data-structure/src/main/java/org/laidu/learn/date/structure/tree/basic/ListAllFiles.java new file mode 100644 index 000000000..0af12ac98 --- /dev/null +++ b/data-structure/src/main/java/org/laidu/learn/date/structure/tree/basic/ListAllFiles.java @@ -0,0 +1,35 @@ +package org.laidu.learn.date.structure.tree.basic; + +import lombok.extern.slf4j.Slf4j; + +import java.io.File; +import java.util.Arrays; +import java.util.Objects; + +/** + * linux common line tool tree impl + *

+ * Created by tiancai.zang + * on 2018-04-01 23:33. + */ +@Slf4j +public class ListAllFiles { + + + public static void printFile(File file){ + + if (file.isDirectory()) { + System.out.println(file.getName()+":"); + Arrays.stream(Objects.requireNonNull(file.listFiles())).forEach(ListAllFiles::printFile); + }else { + System.out.println("\t\t"+file.getPath()+"/"+file.getName()); + } + } + + public static void main(String[] args) { + + File file = new File("/home/laidu/Videos"); + printFile(file); + + } +} \ No newline at end of file diff --git a/data-structure/src/site/markdown/expression.md b/data-structure/src/site/markdown/expression.md new file mode 100644 index 000000000..7acf437b1 --- /dev/null +++ b/data-structure/src/site/markdown/expression.md @@ -0,0 +1,11 @@ +# 表达式计算 + +## 1 中缀表达式 +## 2 后缀表达式(逆波兰表达式) +## 3 转换算法 +## 4 主要代码 + +参考: +* [波兰式、逆波兰式与表达式求值](https://blog.csdn.net/linraise/article/details/20459751) +* [后缀表达式-百度百科](https://baike.baidu.com/item/%E5%90%8E%E7%BC%80%E8%A1%A8%E8%BE%BE%E5%BC%8F/6160580) +* [逆波兰表示法- 维基百科](https://zh.wikipedia.org/wiki/%E9%80%86%E6%B3%A2%E5%85%B0%E8%A1%A8%E7%A4%BA%E6%B3%95) \ No newline at end of file diff --git a/data-structure/src/site/markdown/index.md b/data-structure/src/site/markdown/index.md index 8f929e600..8bfbf6480 100644 --- a/data-structure/src/site/markdown/index.md +++ b/data-structure/src/site/markdown/index.md @@ -1,8 +1,10 @@ # data structure -* [树]() -* [堆]() -* [栈]() -* [队列]() -* [链表]() -* [DP]() +## [树]() +## [堆]() +## [栈]() +### [表达式计算](expression.md) + +## [队列]() +## [链表]() +## [DP]() From 83fd7486c1685343a36dd6d538e7cae176f001a5 Mon Sep 17 00:00:00 2001 From: Tiancai ZANG Date: Tue, 3 Apr 2018 16:28:11 +0800 Subject: [PATCH 003/417] add oracle java 8 --- .../resources/docker/elk/kafka/Dockerfile | 29 +++++++ .../resources/docker/elk/kafka/kafka.conf.txt | 4 + .../resources/docker/elk/kafka/start-kafka.sh | 75 +++++++++++++++++++ .../resources/docker/elk/kafka/zookeeper.conf | 4 + .../resources/docker/elk/logstash/logstash.sh | 11 ++- .../resources/docker/image/java/Dockerfile | 31 ++++---- 6 files changed, 136 insertions(+), 18 deletions(-) create mode 100644 dev-ops/src/main/resources/docker/elk/kafka/Dockerfile create mode 100644 dev-ops/src/main/resources/docker/elk/kafka/kafka.conf.txt create mode 100644 dev-ops/src/main/resources/docker/elk/kafka/start-kafka.sh create mode 100644 dev-ops/src/main/resources/docker/elk/kafka/zookeeper.conf diff --git a/dev-ops/src/main/resources/docker/elk/kafka/Dockerfile b/dev-ops/src/main/resources/docker/elk/kafka/Dockerfile new file mode 100644 index 000000000..0f002d809 --- /dev/null +++ b/dev-ops/src/main/resources/docker/elk/kafka/Dockerfile @@ -0,0 +1,29 @@ +# This dockerfile uses the kibana:6.2.2 image +# VERSION 1 - EDITION 1 +# Author: laidu + +FROM java:openjdk-8-jre + +ENV DEBIAN_FRONTEND noninteractive +ENV SCALA_VERSION 2.11 +ENV KAFKA_VERSION 0.10.1.0 +ENV KAFKA_HOME /opt/kafka_"$SCALA_VERSION"-"$KAFKA_VERSION" + +# Install Kafka, Zookeeper and other needed things +RUN apt-get update && \ + apt-get install -y zookeeper wget supervisor dnsutils && \ + rm -rf /var/lib/apt/lists/* && \ + apt-get clean && \ + wget -q http://apache.mirrors.spacedump.net/kafka/"$KAFKA_VERSION"/kafka_"$SCALA_VERSION"-"$KAFKA_VERSION".tgz -O /tmp/kafka_"$SCALA_VERSION"-"$KAFKA_VERSION".tgz && \ + tar xfz /tmp/kafka_"$SCALA_VERSION"-"$KAFKA_VERSION".tgz -C /opt && \ + rm /tmp/kafka_"$SCALA_VERSION"-"$KAFKA_VERSION".tgz + +ADD scripts/start-kafka.sh /usr/bin/start-kafka.sh + +# Supervisor config +ADD supervisor/kafka.conf supervisor/zookeeper.conf /etc/supervisor/conf.d/ + +# 2181 is zookeeper, 9092 is kafka +EXPOSE 2181 9092 + +CMD ["supervisord", "-n"] \ No newline at end of file diff --git a/dev-ops/src/main/resources/docker/elk/kafka/kafka.conf.txt b/dev-ops/src/main/resources/docker/elk/kafka/kafka.conf.txt new file mode 100644 index 000000000..de058323b --- /dev/null +++ b/dev-ops/src/main/resources/docker/elk/kafka/kafka.conf.txt @@ -0,0 +1,4 @@ +[program:kafka] +command=/usr/bin/start-kafka.sh +autostart=true +autorestart=true \ No newline at end of file diff --git a/dev-ops/src/main/resources/docker/elk/kafka/start-kafka.sh b/dev-ops/src/main/resources/docker/elk/kafka/start-kafka.sh new file mode 100644 index 000000000..168fc97e5 --- /dev/null +++ b/dev-ops/src/main/resources/docker/elk/kafka/start-kafka.sh @@ -0,0 +1,75 @@ +#!/bin/sh + +# Optional ENV variables: +# * ADVERTISED_HOST: the external ip for the container, e.g. `docker-machine ip \`docker-machine active\`` +# * ADVERTISED_PORT: the external port for Kafka, e.g. 9092 +# * ZK_CHROOT: the zookeeper chroot that's used by Kafka (without / prefix), e.g. "kafka" +# * LOG_RETENTION_HOURS: the minimum age of a log file in hours to be eligible for deletion (default is 168, for 1 week) +# * LOG_RETENTION_BYTES: configure the size at which segments are pruned from the log, (default is 1073741824, for 1GB) +# * NUM_PARTITIONS: configure the default number of log partitions per topic + +# Configure advertised host/port if we run in helios +if [ ! -z "$HELIOS_PORT_kafka" ]; then + ADVERTISED_HOST=`echo $HELIOS_PORT_kafka | cut -d':' -f 1 | xargs -n 1 dig +short | tail -n 1` + ADVERTISED_PORT=`echo $HELIOS_PORT_kafka | cut -d':' -f 2` +fi + +# Set the external host and port +if [ ! -z "$ADVERTISED_HOST" ]; then + echo "advertised host: $ADVERTISED_HOST" + if grep -q "^advertised.host.name" $KAFKA_HOME/config/server.properties; then + sed -r -i "s/#(advertised.host.name)=(.*)/\1=$ADVERTISED_HOST/g" $KAFKA_HOME/config/server.properties + else + echo "advertised.host.name=$ADVERTISED_HOST" >> $KAFKA_HOME/config/server.properties + fi +fi +if [ ! -z "$ADVERTISED_PORT" ]; then + echo "advertised port: $ADVERTISED_PORT" + if grep -q "^advertised.port" $KAFKA_HOME/config/server.properties; then + sed -r -i "s/#(advertised.port)=(.*)/\1=$ADVERTISED_PORT/g" $KAFKA_HOME/config/server.properties + else + echo "advertised.port=$ADVERTISED_PORT" >> $KAFKA_HOME/config/server.properties + fi +fi + +# Set the zookeeper chroot +if [ ! -z "$ZK_CHROOT" ]; then + # wait for zookeeper to start up + until /usr/share/zookeeper/bin/zkServer.sh status; do + sleep 0.1 + done + + # create the chroot node + echo "create /$ZK_CHROOT \"\"" | /usr/share/zookeeper/bin/zkCli.sh || { + echo "can't create chroot in zookeeper, exit" + exit 1 + } + + # configure kafka + sed -r -i "s/(zookeeper.connect)=(.*)/\1=localhost:2181\/$ZK_CHROOT/g" $KAFKA_HOME/config/server.properties +fi + +# Allow specification of log retention policies +if [ ! -z "$LOG_RETENTION_HOURS" ]; then + echo "log retention hours: $LOG_RETENTION_HOURS" + sed -r -i "s/(log.retention.hours)=(.*)/\1=$LOG_RETENTION_HOURS/g" $KAFKA_HOME/config/server.properties +fi +if [ ! -z "$LOG_RETENTION_BYTES" ]; then + echo "log retention bytes: $LOG_RETENTION_BYTES" + sed -r -i "s/#(log.retention.bytes)=(.*)/\1=$LOG_RETENTION_BYTES/g" $KAFKA_HOME/config/server.properties +fi + +# Configure the default number of log partitions per topic +if [ ! -z "$NUM_PARTITIONS" ]; then + echo "default number of partition: $NUM_PARTITIONS" + sed -r -i "s/(num.partitions)=(.*)/\1=$NUM_PARTITIONS/g" $KAFKA_HOME/config/server.properties +fi + +# Enable/disable auto creation of topics +if [ ! -z "$AUTO_CREATE_TOPICS" ]; then + echo "auto.create.topics.enable: $AUTO_CREATE_TOPICS" + echo "auto.create.topics.enable=$AUTO_CREATE_TOPICS" >> $KAFKA_HOME/config/server.properties +fi + +# Run Kafka +$KAFKA_HOME/bin/kafka-server-start.sh $KAFKA_HOME/config/server.properties diff --git a/dev-ops/src/main/resources/docker/elk/kafka/zookeeper.conf b/dev-ops/src/main/resources/docker/elk/kafka/zookeeper.conf new file mode 100644 index 000000000..5650d95b1 --- /dev/null +++ b/dev-ops/src/main/resources/docker/elk/kafka/zookeeper.conf @@ -0,0 +1,4 @@ +[program:zookeeper] +command=/usr/share/zookeeper/bin/zkServer.sh start-foreground +autostart=true +autorestart=true \ No newline at end of file diff --git a/dev-ops/src/main/resources/docker/elk/logstash/logstash.sh b/dev-ops/src/main/resources/docker/elk/logstash/logstash.sh index 90eed6ba9..698eebed6 100644 --- a/dev-ops/src/main/resources/docker/elk/logstash/logstash.sh +++ b/dev-ops/src/main/resources/docker/elk/logstash/logstash.sh @@ -3,7 +3,10 @@ logstash_root=/Users/laidu/Files/data/docker/logstash pubilc_path=/Users/laidu/Files/data/docker/upload -docker run --rm -it \ - -v ${logstash_root}/config/logstash.yml:/usr/share/logstash/config/logstash.yml \ - -v ${pubilc_path}/upload:/root \ - daocloud.io/laidu/kibana_6 +#docker run -d --restart=always \ +docker run --rm -d --net=host --name logstash-dev \ + -v /etc/hosts:/etc/hosts \ + -v ${logstash_root}/config:/usr/share/logstash/config \ + -v ${logstash_root}/data:/usr/share/logstash/data \ + -v ${pubilc_path}/upload:/root \ + daocloud.io/laidu/elk-logstash6 \ No newline at end of file diff --git a/dev-ops/src/main/resources/docker/image/java/Dockerfile b/dev-ops/src/main/resources/docker/image/java/Dockerfile index be0281504..af3d4bd58 100644 --- a/dev-ops/src/main/resources/docker/image/java/Dockerfile +++ b/dev-ops/src/main/resources/docker/image/java/Dockerfile @@ -6,27 +6,30 @@ # # Pull base image. -FROM dockerfile/ubuntu - -# Install Java. -RUN \ - echo oracle-java8-installer shared/accepted-oracle-license-v1-1 select true | debconf-set-selections && \ - add-apt-repository -y ppa:webupd8team/java && \ - apt-get update && \ - apt-get install -y oracle-java8-installer && \ - rm -rf /var/lib/apt/lists/* && \ - rm -rf /var/cache/oracle-jdk8-installer - +FROM ubuntu:16.04 # time zone ENV TZ=Asia/Shanghai RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone -# Define working directory. -WORKDIR /data +ENV DEBIAN_FRONTEND noninteractive +ENV LANG en_US.UTF-8 +ENV LC_ALL en_US.UTF-8 + +RUN apt-get update && \ + apt-get install -y --no-install-recommends locales && \ + locale-gen en_US.UTF-8 && \ + apt-get dist-upgrade -y && \ + apt-get --purge remove openjdk* && \ + echo "oracle-java8-installer shared/accepted-oracle-license-v1-1 select true" | debconf-set-selections && \ + echo "deb http://ppa.launchpad.net/webupd8team/java/ubuntu xenial main" > /etc/apt/sources.list.d/webupd8team-java-trusty.list && \ + apt-key adv --keyserver keyserver.ubuntu.com --recv-keys EEA14886 && \ + apt-get update && \ + apt-get install -y --no-install-recommends oracle-java8-installer oracle-java8-set-default && \ + apt-get clean all # Define commonly used JAVA_HOME variable -ENV JAVA_HOME /usr/lib/jvm/java-8-oracle +ENV JAVA_HOME /usr/lib/jvm/java-8-oracle # Define default command. CMD ["bash"] \ No newline at end of file From c025e958dd8b0d10cbf1b6e0daa66ff637e60bb6 Mon Sep 17 00:00:00 2001 From: Tiancai ZANG Date: Tue, 3 Apr 2018 17:16:17 +0800 Subject: [PATCH 004/417] add kafka 2.11_1.1.0 --- .../resources/docker/elk/kafka/Dockerfile | 13 ++-- .../docker/elk/kafka/scripts/start-kafka.sh | 75 +++++++++++++++++++ .../{kafka.conf.txt => supervisor/kafka.conf} | 0 .../elk/kafka/{ => supervisor}/zookeeper.conf | 0 .../resources/docker/image/java/Dockerfile | 2 - 5 files changed, 83 insertions(+), 7 deletions(-) mode change 100644 => 100755 dev-ops/src/main/resources/docker/elk/kafka/Dockerfile create mode 100755 dev-ops/src/main/resources/docker/elk/kafka/scripts/start-kafka.sh rename dev-ops/src/main/resources/docker/elk/kafka/{kafka.conf.txt => supervisor/kafka.conf} (100%) mode change 100644 => 100755 rename dev-ops/src/main/resources/docker/elk/kafka/{ => supervisor}/zookeeper.conf (100%) mode change 100644 => 100755 diff --git a/dev-ops/src/main/resources/docker/elk/kafka/Dockerfile b/dev-ops/src/main/resources/docker/elk/kafka/Dockerfile old mode 100644 new mode 100755 index 0f002d809..a12343dfb --- a/dev-ops/src/main/resources/docker/elk/kafka/Dockerfile +++ b/dev-ops/src/main/resources/docker/elk/kafka/Dockerfile @@ -1,12 +1,10 @@ -# This dockerfile uses the kibana:6.2.2 image -# VERSION 1 - EDITION 1 -# Author: laidu +# Kafka and Zookeeper FROM java:openjdk-8-jre ENV DEBIAN_FRONTEND noninteractive ENV SCALA_VERSION 2.11 -ENV KAFKA_VERSION 0.10.1.0 +ENV KAFKA_VERSION 1.1.0 ENV KAFKA_HOME /opt/kafka_"$SCALA_VERSION"-"$KAFKA_VERSION" # Install Kafka, Zookeeper and other needed things @@ -26,4 +24,9 @@ ADD supervisor/kafka.conf supervisor/zookeeper.conf /etc/supervisor/conf.d/ # 2181 is zookeeper, 9092 is kafka EXPOSE 2181 9092 -CMD ["supervisord", "-n"] \ No newline at end of file +USER root +# time zone +ENV TZ=Asia/Shanghai +RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone + +CMD ["supervisord", "-n"] diff --git a/dev-ops/src/main/resources/docker/elk/kafka/scripts/start-kafka.sh b/dev-ops/src/main/resources/docker/elk/kafka/scripts/start-kafka.sh new file mode 100755 index 000000000..168fc97e5 --- /dev/null +++ b/dev-ops/src/main/resources/docker/elk/kafka/scripts/start-kafka.sh @@ -0,0 +1,75 @@ +#!/bin/sh + +# Optional ENV variables: +# * ADVERTISED_HOST: the external ip for the container, e.g. `docker-machine ip \`docker-machine active\`` +# * ADVERTISED_PORT: the external port for Kafka, e.g. 9092 +# * ZK_CHROOT: the zookeeper chroot that's used by Kafka (without / prefix), e.g. "kafka" +# * LOG_RETENTION_HOURS: the minimum age of a log file in hours to be eligible for deletion (default is 168, for 1 week) +# * LOG_RETENTION_BYTES: configure the size at which segments are pruned from the log, (default is 1073741824, for 1GB) +# * NUM_PARTITIONS: configure the default number of log partitions per topic + +# Configure advertised host/port if we run in helios +if [ ! -z "$HELIOS_PORT_kafka" ]; then + ADVERTISED_HOST=`echo $HELIOS_PORT_kafka | cut -d':' -f 1 | xargs -n 1 dig +short | tail -n 1` + ADVERTISED_PORT=`echo $HELIOS_PORT_kafka | cut -d':' -f 2` +fi + +# Set the external host and port +if [ ! -z "$ADVERTISED_HOST" ]; then + echo "advertised host: $ADVERTISED_HOST" + if grep -q "^advertised.host.name" $KAFKA_HOME/config/server.properties; then + sed -r -i "s/#(advertised.host.name)=(.*)/\1=$ADVERTISED_HOST/g" $KAFKA_HOME/config/server.properties + else + echo "advertised.host.name=$ADVERTISED_HOST" >> $KAFKA_HOME/config/server.properties + fi +fi +if [ ! -z "$ADVERTISED_PORT" ]; then + echo "advertised port: $ADVERTISED_PORT" + if grep -q "^advertised.port" $KAFKA_HOME/config/server.properties; then + sed -r -i "s/#(advertised.port)=(.*)/\1=$ADVERTISED_PORT/g" $KAFKA_HOME/config/server.properties + else + echo "advertised.port=$ADVERTISED_PORT" >> $KAFKA_HOME/config/server.properties + fi +fi + +# Set the zookeeper chroot +if [ ! -z "$ZK_CHROOT" ]; then + # wait for zookeeper to start up + until /usr/share/zookeeper/bin/zkServer.sh status; do + sleep 0.1 + done + + # create the chroot node + echo "create /$ZK_CHROOT \"\"" | /usr/share/zookeeper/bin/zkCli.sh || { + echo "can't create chroot in zookeeper, exit" + exit 1 + } + + # configure kafka + sed -r -i "s/(zookeeper.connect)=(.*)/\1=localhost:2181\/$ZK_CHROOT/g" $KAFKA_HOME/config/server.properties +fi + +# Allow specification of log retention policies +if [ ! -z "$LOG_RETENTION_HOURS" ]; then + echo "log retention hours: $LOG_RETENTION_HOURS" + sed -r -i "s/(log.retention.hours)=(.*)/\1=$LOG_RETENTION_HOURS/g" $KAFKA_HOME/config/server.properties +fi +if [ ! -z "$LOG_RETENTION_BYTES" ]; then + echo "log retention bytes: $LOG_RETENTION_BYTES" + sed -r -i "s/#(log.retention.bytes)=(.*)/\1=$LOG_RETENTION_BYTES/g" $KAFKA_HOME/config/server.properties +fi + +# Configure the default number of log partitions per topic +if [ ! -z "$NUM_PARTITIONS" ]; then + echo "default number of partition: $NUM_PARTITIONS" + sed -r -i "s/(num.partitions)=(.*)/\1=$NUM_PARTITIONS/g" $KAFKA_HOME/config/server.properties +fi + +# Enable/disable auto creation of topics +if [ ! -z "$AUTO_CREATE_TOPICS" ]; then + echo "auto.create.topics.enable: $AUTO_CREATE_TOPICS" + echo "auto.create.topics.enable=$AUTO_CREATE_TOPICS" >> $KAFKA_HOME/config/server.properties +fi + +# Run Kafka +$KAFKA_HOME/bin/kafka-server-start.sh $KAFKA_HOME/config/server.properties diff --git a/dev-ops/src/main/resources/docker/elk/kafka/kafka.conf.txt b/dev-ops/src/main/resources/docker/elk/kafka/supervisor/kafka.conf old mode 100644 new mode 100755 similarity index 100% rename from dev-ops/src/main/resources/docker/elk/kafka/kafka.conf.txt rename to dev-ops/src/main/resources/docker/elk/kafka/supervisor/kafka.conf diff --git a/dev-ops/src/main/resources/docker/elk/kafka/zookeeper.conf b/dev-ops/src/main/resources/docker/elk/kafka/supervisor/zookeeper.conf old mode 100644 new mode 100755 similarity index 100% rename from dev-ops/src/main/resources/docker/elk/kafka/zookeeper.conf rename to dev-ops/src/main/resources/docker/elk/kafka/supervisor/zookeeper.conf diff --git a/dev-ops/src/main/resources/docker/image/java/Dockerfile b/dev-ops/src/main/resources/docker/image/java/Dockerfile index af3d4bd58..c2d011cd0 100644 --- a/dev-ops/src/main/resources/docker/image/java/Dockerfile +++ b/dev-ops/src/main/resources/docker/image/java/Dockerfile @@ -1,8 +1,6 @@ # # Oracle Java 8 Dockerfile # -# https://github.com/dockerfile/java -# https://github.com/dockerfile/java/tree/master/oracle-java8 # # Pull base image. From ced0a2bc5f0e0602b28697b4879bacd241e75d95 Mon Sep 17 00:00:00 2001 From: Tiancai ZANG Date: Tue, 3 Apr 2018 18:57:00 +0800 Subject: [PATCH 005/417] sync --- .../resources/docker/elk/kafka/Dockerfile | 45 ++++++----- .../main/resources/docker/elk/kafka/kafka.sh | 21 ++++++ .../docker/elk/kafka/scripts/start-kafka.sh | 75 ------------------- .../resources/docker/elk/kafka/start-kafka.sh | 75 ------------------- .../docker/elk/kafka/supervisor/kafka.conf | 4 - .../elk/kafka/supervisor/zookeeper.conf | 4 - .../docker/shell/zookeeper_create.sh | 14 ++-- 7 files changed, 52 insertions(+), 186 deletions(-) create mode 100644 dev-ops/src/main/resources/docker/elk/kafka/kafka.sh delete mode 100755 dev-ops/src/main/resources/docker/elk/kafka/scripts/start-kafka.sh delete mode 100644 dev-ops/src/main/resources/docker/elk/kafka/start-kafka.sh delete mode 100755 dev-ops/src/main/resources/docker/elk/kafka/supervisor/kafka.conf delete mode 100755 dev-ops/src/main/resources/docker/elk/kafka/supervisor/zookeeper.conf diff --git a/dev-ops/src/main/resources/docker/elk/kafka/Dockerfile b/dev-ops/src/main/resources/docker/elk/kafka/Dockerfile index a12343dfb..c660474ea 100755 --- a/dev-ops/src/main/resources/docker/elk/kafka/Dockerfile +++ b/dev-ops/src/main/resources/docker/elk/kafka/Dockerfile @@ -1,32 +1,31 @@ # Kafka and Zookeeper -FROM java:openjdk-8-jre +FROM openjdk:8u151-jre-alpine -ENV DEBIAN_FRONTEND noninteractive -ENV SCALA_VERSION 2.11 -ENV KAFKA_VERSION 1.1.0 -ENV KAFKA_HOME /opt/kafka_"$SCALA_VERSION"-"$KAFKA_VERSION" +ARG kafka_version=1.0.1 +ARG scala_version=2.12 -# Install Kafka, Zookeeper and other needed things -RUN apt-get update && \ - apt-get install -y zookeeper wget supervisor dnsutils && \ - rm -rf /var/lib/apt/lists/* && \ - apt-get clean && \ - wget -q http://apache.mirrors.spacedump.net/kafka/"$KAFKA_VERSION"/kafka_"$SCALA_VERSION"-"$KAFKA_VERSION".tgz -O /tmp/kafka_"$SCALA_VERSION"-"$KAFKA_VERSION".tgz && \ - tar xfz /tmp/kafka_"$SCALA_VERSION"-"$KAFKA_VERSION".tgz -C /opt && \ - rm /tmp/kafka_"$SCALA_VERSION"-"$KAFKA_VERSION".tgz +MAINTAINER wurstmeister -ADD scripts/start-kafka.sh /usr/bin/start-kafka.sh +ENV KAFKA_VERSION=$kafka_version \ + SCALA_VERSION=$scala_version \ + KAFKA_HOME=/opt/kafka -# Supervisor config -ADD supervisor/kafka.conf supervisor/zookeeper.conf /etc/supervisor/conf.d/ +ENV PATH=${PATH}:${KAFKA_HOME}/bin -# 2181 is zookeeper, 9092 is kafka -EXPOSE 2181 9092 +COPY download-kafka.sh start-kafka.sh broker-list.sh create-topics.sh /tmp/ -USER root -# time zone -ENV TZ=Asia/Shanghai -RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone +RUN apk add --update bash curl jq docker \ + && mkdir /opt \ + && chmod a+x /tmp/*.sh \ + && mv /tmp/start-kafka.sh /tmp/broker-list.sh /tmp/create-topics.sh /usr/bin \ + && sync && /tmp/download-kafka.sh \ + && tar xfz /tmp/kafka_${SCALA_VERSION}-${KAFKA_VERSION}.tgz -C /opt \ + && rm /tmp/kafka_${SCALA_VERSION}-${KAFKA_VERSION}.tgz \ + && ln -s /opt/kafka_${SCALA_VERSION}-${KAFKA_VERSION} /opt/kafka \ + && rm /tmp/* -CMD ["supervisord", "-n"] +VOLUME ["/kafka"] + +# Use "exec" form so that it runs as PID 1 (useful for graceful shutdown) +CMD ["start-kafka.sh"] \ No newline at end of file diff --git a/dev-ops/src/main/resources/docker/elk/kafka/kafka.sh b/dev-ops/src/main/resources/docker/elk/kafka/kafka.sh new file mode 100644 index 000000000..f711be9bb --- /dev/null +++ b/dev-ops/src/main/resources/docker/elk/kafka/kafka.sh @@ -0,0 +1,21 @@ +#!/bin/bash + +kafka_root=/Users/laidu/Files/data/docker/kibana +pubilc_path=/Users/laidu/Files/data/docker/upload + +docker run --rm --net=host -d daocloud.io/laidu/devops-kafka + + +docker run -p 2181:2181 -p 9092:9092 --env ADVERTISED_HOST=`docker-machine ip \`docker-machine active\`` --env ADVERTISED_PORT=9092 spotify/kafka + +export KAFKA=`docker-machine ip \`docker-machine active\``:9092 +kafka-console-producer.sh --broker-list $KAFKA --topic test +export ZOOKEEPER=`docker-machine ip \`docker-machine active\``:2181 +kafka-console-consumer.sh --zookeeper $ZOOKEEPER --topic test + + +docker run --rm -d \ + -p 2181:2181 \ + -p 9092:9092 \ + --env ADVERTISED_HOST=`docker-machine ip \`docker-machine active\`` \ + --env ADVERTISED_PORT=9092 daocloud.io/laidu/devops-kafka diff --git a/dev-ops/src/main/resources/docker/elk/kafka/scripts/start-kafka.sh b/dev-ops/src/main/resources/docker/elk/kafka/scripts/start-kafka.sh deleted file mode 100755 index 168fc97e5..000000000 --- a/dev-ops/src/main/resources/docker/elk/kafka/scripts/start-kafka.sh +++ /dev/null @@ -1,75 +0,0 @@ -#!/bin/sh - -# Optional ENV variables: -# * ADVERTISED_HOST: the external ip for the container, e.g. `docker-machine ip \`docker-machine active\`` -# * ADVERTISED_PORT: the external port for Kafka, e.g. 9092 -# * ZK_CHROOT: the zookeeper chroot that's used by Kafka (without / prefix), e.g. "kafka" -# * LOG_RETENTION_HOURS: the minimum age of a log file in hours to be eligible for deletion (default is 168, for 1 week) -# * LOG_RETENTION_BYTES: configure the size at which segments are pruned from the log, (default is 1073741824, for 1GB) -# * NUM_PARTITIONS: configure the default number of log partitions per topic - -# Configure advertised host/port if we run in helios -if [ ! -z "$HELIOS_PORT_kafka" ]; then - ADVERTISED_HOST=`echo $HELIOS_PORT_kafka | cut -d':' -f 1 | xargs -n 1 dig +short | tail -n 1` - ADVERTISED_PORT=`echo $HELIOS_PORT_kafka | cut -d':' -f 2` -fi - -# Set the external host and port -if [ ! -z "$ADVERTISED_HOST" ]; then - echo "advertised host: $ADVERTISED_HOST" - if grep -q "^advertised.host.name" $KAFKA_HOME/config/server.properties; then - sed -r -i "s/#(advertised.host.name)=(.*)/\1=$ADVERTISED_HOST/g" $KAFKA_HOME/config/server.properties - else - echo "advertised.host.name=$ADVERTISED_HOST" >> $KAFKA_HOME/config/server.properties - fi -fi -if [ ! -z "$ADVERTISED_PORT" ]; then - echo "advertised port: $ADVERTISED_PORT" - if grep -q "^advertised.port" $KAFKA_HOME/config/server.properties; then - sed -r -i "s/#(advertised.port)=(.*)/\1=$ADVERTISED_PORT/g" $KAFKA_HOME/config/server.properties - else - echo "advertised.port=$ADVERTISED_PORT" >> $KAFKA_HOME/config/server.properties - fi -fi - -# Set the zookeeper chroot -if [ ! -z "$ZK_CHROOT" ]; then - # wait for zookeeper to start up - until /usr/share/zookeeper/bin/zkServer.sh status; do - sleep 0.1 - done - - # create the chroot node - echo "create /$ZK_CHROOT \"\"" | /usr/share/zookeeper/bin/zkCli.sh || { - echo "can't create chroot in zookeeper, exit" - exit 1 - } - - # configure kafka - sed -r -i "s/(zookeeper.connect)=(.*)/\1=localhost:2181\/$ZK_CHROOT/g" $KAFKA_HOME/config/server.properties -fi - -# Allow specification of log retention policies -if [ ! -z "$LOG_RETENTION_HOURS" ]; then - echo "log retention hours: $LOG_RETENTION_HOURS" - sed -r -i "s/(log.retention.hours)=(.*)/\1=$LOG_RETENTION_HOURS/g" $KAFKA_HOME/config/server.properties -fi -if [ ! -z "$LOG_RETENTION_BYTES" ]; then - echo "log retention bytes: $LOG_RETENTION_BYTES" - sed -r -i "s/#(log.retention.bytes)=(.*)/\1=$LOG_RETENTION_BYTES/g" $KAFKA_HOME/config/server.properties -fi - -# Configure the default number of log partitions per topic -if [ ! -z "$NUM_PARTITIONS" ]; then - echo "default number of partition: $NUM_PARTITIONS" - sed -r -i "s/(num.partitions)=(.*)/\1=$NUM_PARTITIONS/g" $KAFKA_HOME/config/server.properties -fi - -# Enable/disable auto creation of topics -if [ ! -z "$AUTO_CREATE_TOPICS" ]; then - echo "auto.create.topics.enable: $AUTO_CREATE_TOPICS" - echo "auto.create.topics.enable=$AUTO_CREATE_TOPICS" >> $KAFKA_HOME/config/server.properties -fi - -# Run Kafka -$KAFKA_HOME/bin/kafka-server-start.sh $KAFKA_HOME/config/server.properties diff --git a/dev-ops/src/main/resources/docker/elk/kafka/start-kafka.sh b/dev-ops/src/main/resources/docker/elk/kafka/start-kafka.sh deleted file mode 100644 index 168fc97e5..000000000 --- a/dev-ops/src/main/resources/docker/elk/kafka/start-kafka.sh +++ /dev/null @@ -1,75 +0,0 @@ -#!/bin/sh - -# Optional ENV variables: -# * ADVERTISED_HOST: the external ip for the container, e.g. `docker-machine ip \`docker-machine active\`` -# * ADVERTISED_PORT: the external port for Kafka, e.g. 9092 -# * ZK_CHROOT: the zookeeper chroot that's used by Kafka (without / prefix), e.g. "kafka" -# * LOG_RETENTION_HOURS: the minimum age of a log file in hours to be eligible for deletion (default is 168, for 1 week) -# * LOG_RETENTION_BYTES: configure the size at which segments are pruned from the log, (default is 1073741824, for 1GB) -# * NUM_PARTITIONS: configure the default number of log partitions per topic - -# Configure advertised host/port if we run in helios -if [ ! -z "$HELIOS_PORT_kafka" ]; then - ADVERTISED_HOST=`echo $HELIOS_PORT_kafka | cut -d':' -f 1 | xargs -n 1 dig +short | tail -n 1` - ADVERTISED_PORT=`echo $HELIOS_PORT_kafka | cut -d':' -f 2` -fi - -# Set the external host and port -if [ ! -z "$ADVERTISED_HOST" ]; then - echo "advertised host: $ADVERTISED_HOST" - if grep -q "^advertised.host.name" $KAFKA_HOME/config/server.properties; then - sed -r -i "s/#(advertised.host.name)=(.*)/\1=$ADVERTISED_HOST/g" $KAFKA_HOME/config/server.properties - else - echo "advertised.host.name=$ADVERTISED_HOST" >> $KAFKA_HOME/config/server.properties - fi -fi -if [ ! -z "$ADVERTISED_PORT" ]; then - echo "advertised port: $ADVERTISED_PORT" - if grep -q "^advertised.port" $KAFKA_HOME/config/server.properties; then - sed -r -i "s/#(advertised.port)=(.*)/\1=$ADVERTISED_PORT/g" $KAFKA_HOME/config/server.properties - else - echo "advertised.port=$ADVERTISED_PORT" >> $KAFKA_HOME/config/server.properties - fi -fi - -# Set the zookeeper chroot -if [ ! -z "$ZK_CHROOT" ]; then - # wait for zookeeper to start up - until /usr/share/zookeeper/bin/zkServer.sh status; do - sleep 0.1 - done - - # create the chroot node - echo "create /$ZK_CHROOT \"\"" | /usr/share/zookeeper/bin/zkCli.sh || { - echo "can't create chroot in zookeeper, exit" - exit 1 - } - - # configure kafka - sed -r -i "s/(zookeeper.connect)=(.*)/\1=localhost:2181\/$ZK_CHROOT/g" $KAFKA_HOME/config/server.properties -fi - -# Allow specification of log retention policies -if [ ! -z "$LOG_RETENTION_HOURS" ]; then - echo "log retention hours: $LOG_RETENTION_HOURS" - sed -r -i "s/(log.retention.hours)=(.*)/\1=$LOG_RETENTION_HOURS/g" $KAFKA_HOME/config/server.properties -fi -if [ ! -z "$LOG_RETENTION_BYTES" ]; then - echo "log retention bytes: $LOG_RETENTION_BYTES" - sed -r -i "s/#(log.retention.bytes)=(.*)/\1=$LOG_RETENTION_BYTES/g" $KAFKA_HOME/config/server.properties -fi - -# Configure the default number of log partitions per topic -if [ ! -z "$NUM_PARTITIONS" ]; then - echo "default number of partition: $NUM_PARTITIONS" - sed -r -i "s/(num.partitions)=(.*)/\1=$NUM_PARTITIONS/g" $KAFKA_HOME/config/server.properties -fi - -# Enable/disable auto creation of topics -if [ ! -z "$AUTO_CREATE_TOPICS" ]; then - echo "auto.create.topics.enable: $AUTO_CREATE_TOPICS" - echo "auto.create.topics.enable=$AUTO_CREATE_TOPICS" >> $KAFKA_HOME/config/server.properties -fi - -# Run Kafka -$KAFKA_HOME/bin/kafka-server-start.sh $KAFKA_HOME/config/server.properties diff --git a/dev-ops/src/main/resources/docker/elk/kafka/supervisor/kafka.conf b/dev-ops/src/main/resources/docker/elk/kafka/supervisor/kafka.conf deleted file mode 100755 index de058323b..000000000 --- a/dev-ops/src/main/resources/docker/elk/kafka/supervisor/kafka.conf +++ /dev/null @@ -1,4 +0,0 @@ -[program:kafka] -command=/usr/bin/start-kafka.sh -autostart=true -autorestart=true \ No newline at end of file diff --git a/dev-ops/src/main/resources/docker/elk/kafka/supervisor/zookeeper.conf b/dev-ops/src/main/resources/docker/elk/kafka/supervisor/zookeeper.conf deleted file mode 100755 index 5650d95b1..000000000 --- a/dev-ops/src/main/resources/docker/elk/kafka/supervisor/zookeeper.conf +++ /dev/null @@ -1,4 +0,0 @@ -[program:zookeeper] -command=/usr/share/zookeeper/bin/zkServer.sh start-foreground -autostart=true -autorestart=true \ No newline at end of file diff --git a/dev-ops/src/main/resources/docker/shell/zookeeper_create.sh b/dev-ops/src/main/resources/docker/shell/zookeeper_create.sh index 54ca5570b..b71a8aa64 100755 --- a/dev-ops/src/main/resources/docker/shell/zookeeper_create.sh +++ b/dev-ops/src/main/resources/docker/shell/zookeeper_create.sh @@ -1,6 +1,10 @@ #! /bin/bash -name=$1 -port1=$2 -port2=$3 -port3=$4 -docker run --name zookeeper-$name -p0.0.0.0:$port1:2181 -p0.0.0.0:$port2:2888 -p0.0.0.0:$port3:3888 --restart always -d zookeeper + +kibana_root=/Users/laidu/Files/data/docker/kibana +pubilc_path=/Users/laidu/Files/data/docker/upload +docker run --name zookeeper-$name -p0.0.0.0:$port1:2181 -p0.0.0.0:$port2:2888 -p0.0.0.0:$port3:3888 -d zookeeper + +#docker run --restart always \ +docker run --rm -d --net=host \ + -v ${pubilc_path}/upload:/root \ + --name zookeeper-dev zookeeper \ No newline at end of file From bd423edec0789bdd6015e00909d2151d29bf4ead Mon Sep 17 00:00:00 2001 From: Tiancai ZANG Date: Wed, 11 Apr 2018 20:33:26 +0800 Subject: [PATCH 006/417] sync --- .../helper/model/http/burp/BurpSiteItem.java | 21 +++++++++ .../crawler/helper/model/http/burp/Host.java | 22 +++++++++ .../crawler/helper/model/http/burp/Item.java | 45 +++++++++++++++++++ .../crawler/helper/model/http/burp/Items.java | 26 +++++++++++ .../helper/model/http/burp/Request.java | 22 +++++++++ .../helper/model/http/burp/Response.java | 22 +++++++++ .../helper/model/http/burp/package-info.java | 7 +++ .../helper/model/http/har/package-info.java | 7 +++ .../src/main/resources/burp-site/request.xml | 42 +++++++++++++++++ 9 files changed, 214 insertions(+) create mode 100644 production-component/crawler-helper/src/main/java/org/laidu/crawler/helper/model/http/burp/BurpSiteItem.java create mode 100644 production-component/crawler-helper/src/main/java/org/laidu/crawler/helper/model/http/burp/Host.java create mode 100644 production-component/crawler-helper/src/main/java/org/laidu/crawler/helper/model/http/burp/Item.java create mode 100644 production-component/crawler-helper/src/main/java/org/laidu/crawler/helper/model/http/burp/Items.java create mode 100644 production-component/crawler-helper/src/main/java/org/laidu/crawler/helper/model/http/burp/Request.java create mode 100644 production-component/crawler-helper/src/main/java/org/laidu/crawler/helper/model/http/burp/Response.java create mode 100644 production-component/crawler-helper/src/main/java/org/laidu/crawler/helper/model/http/burp/package-info.java create mode 100644 production-component/crawler-helper/src/main/java/org/laidu/crawler/helper/model/http/har/package-info.java create mode 100644 production-component/crawler-helper/src/main/resources/burp-site/request.xml diff --git a/production-component/crawler-helper/src/main/java/org/laidu/crawler/helper/model/http/burp/BurpSiteItem.java b/production-component/crawler-helper/src/main/java/org/laidu/crawler/helper/model/http/burp/BurpSiteItem.java new file mode 100644 index 000000000..42881b62c --- /dev/null +++ b/production-component/crawler-helper/src/main/java/org/laidu/crawler/helper/model/http/burp/BurpSiteItem.java @@ -0,0 +1,21 @@ +package org.laidu.crawler.helper.model.http.burp; + +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +/** + * burp site items + *

+ * Created by tiancai.zang + * on 2018-04-11 16:39. + */ +@Data +@Builder +@AllArgsConstructor +@NoArgsConstructor +public class BurpSiteItem { + + private Items items; +} \ No newline at end of file diff --git a/production-component/crawler-helper/src/main/java/org/laidu/crawler/helper/model/http/burp/Host.java b/production-component/crawler-helper/src/main/java/org/laidu/crawler/helper/model/http/burp/Host.java new file mode 100644 index 000000000..86874bd5d --- /dev/null +++ b/production-component/crawler-helper/src/main/java/org/laidu/crawler/helper/model/http/burp/Host.java @@ -0,0 +1,22 @@ +package org.laidu.crawler.helper.model.http.burp; + +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +/** + * host + *

+ * Created by tiancai.zang + * on 2018-04-11 16:57. + */ +@Data +@Builder +@AllArgsConstructor +@NoArgsConstructor +public class Host { + + private String content; + private String ip; +} \ No newline at end of file diff --git a/production-component/crawler-helper/src/main/java/org/laidu/crawler/helper/model/http/burp/Item.java b/production-component/crawler-helper/src/main/java/org/laidu/crawler/helper/model/http/burp/Item.java new file mode 100644 index 000000000..3f3ce6b2d --- /dev/null +++ b/production-component/crawler-helper/src/main/java/org/laidu/crawler/helper/model/http/burp/Item.java @@ -0,0 +1,45 @@ +package org.laidu.crawler.helper.model.http.burp; + +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +/** + * Created by tiancai.zang + * on 2018-04-11 17:02. + */ +@Data +@Builder +@AllArgsConstructor +@NoArgsConstructor +public class Item { + + private String extension; + + private Response response; + + private String port; + + private String mimetype; + + private String time; + + private String protocol; + + private Host host; + + private String status; + + private Request request; + + private String path; + + private String method; + + private String responselength; + + private String comment; + + private String url; +} \ No newline at end of file diff --git a/production-component/crawler-helper/src/main/java/org/laidu/crawler/helper/model/http/burp/Items.java b/production-component/crawler-helper/src/main/java/org/laidu/crawler/helper/model/http/burp/Items.java new file mode 100644 index 000000000..dbd3121b6 --- /dev/null +++ b/production-component/crawler-helper/src/main/java/org/laidu/crawler/helper/model/http/burp/Items.java @@ -0,0 +1,26 @@ +package org.laidu.crawler.helper.model.http.burp; + +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +/** + * Items + *

+ * Created by tiancai.zang + * on 2018-04-11 17:01. + */ +@Data +@Builder +@AllArgsConstructor +@NoArgsConstructor +public class Items { + + private String burpVersion; + + private String exportTime; + + private Item item; + +} \ No newline at end of file diff --git a/production-component/crawler-helper/src/main/java/org/laidu/crawler/helper/model/http/burp/Request.java b/production-component/crawler-helper/src/main/java/org/laidu/crawler/helper/model/http/burp/Request.java new file mode 100644 index 000000000..ffe4cbac7 --- /dev/null +++ b/production-component/crawler-helper/src/main/java/org/laidu/crawler/helper/model/http/burp/Request.java @@ -0,0 +1,22 @@ +package org.laidu.crawler.helper.model.http.burp; + +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +/** + * Created by tiancai.zang + * on 2018-04-11 17:03. + */ +@Data +@Builder +@AllArgsConstructor +@NoArgsConstructor +public class Request { + + private String content; + + private String base64; + +} \ No newline at end of file diff --git a/production-component/crawler-helper/src/main/java/org/laidu/crawler/helper/model/http/burp/Response.java b/production-component/crawler-helper/src/main/java/org/laidu/crawler/helper/model/http/burp/Response.java new file mode 100644 index 000000000..a0a209407 --- /dev/null +++ b/production-component/crawler-helper/src/main/java/org/laidu/crawler/helper/model/http/burp/Response.java @@ -0,0 +1,22 @@ +package org.laidu.crawler.helper.model.http.burp; + +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +/** + * Created by tiancai.zang + * on 2018-04-11 17:03. + */ +@Data +@Builder +@AllArgsConstructor +@NoArgsConstructor +public class Response { + + private String content; + + private String base64; + +} \ No newline at end of file diff --git a/production-component/crawler-helper/src/main/java/org/laidu/crawler/helper/model/http/burp/package-info.java b/production-component/crawler-helper/src/main/java/org/laidu/crawler/helper/model/http/burp/package-info.java new file mode 100644 index 000000000..1f9b4ca06 --- /dev/null +++ b/production-component/crawler-helper/src/main/java/org/laidu/crawler/helper/model/http/burp/package-info.java @@ -0,0 +1,7 @@ +/** + * burp site http save iterms + *

+ * Created by tiancai.zang + * on 2018-04-11 17:04. + */ +package org.laidu.crawler.helper.model.http.burp; \ No newline at end of file diff --git a/production-component/crawler-helper/src/main/java/org/laidu/crawler/helper/model/http/har/package-info.java b/production-component/crawler-helper/src/main/java/org/laidu/crawler/helper/model/http/har/package-info.java new file mode 100644 index 000000000..7673a6750 --- /dev/null +++ b/production-component/crawler-helper/src/main/java/org/laidu/crawler/helper/model/http/har/package-info.java @@ -0,0 +1,7 @@ +/** + * har model + *

+ * Created by tiancai.zang + * on 2018-04-11 17:00. + */ +package org.laidu.crawler.helper.model.http.har; \ No newline at end of file diff --git a/production-component/crawler-helper/src/main/resources/burp-site/request.xml b/production-component/crawler-helper/src/main/resources/burp-site/request.xml new file mode 100644 index 000000000..86d047369 --- /dev/null +++ b/production-component/crawler-helper/src/main/resources/burp-site/request.xml @@ -0,0 +1,42 @@ + + + + + + + + + + + + + + + + + + + + + + +]> + + + + + vulcan.genilex.com + 443 + https + + + null + + 200 + 437 + JSON + + + + From 8348b0dfaacc0ff33192dffc94bada923b572a85 Mon Sep 17 00:00:00 2001 From: laidu Date: Tue, 24 Apr 2018 00:03:24 +0800 Subject: [PATCH 007/417] add mybatis --- .../settle-query.log-druid-2018-04-22 | 33 ++ ...yAppName_IS_UNDEFINED-druid.log.2018-04-22 | 328 ++++++++++++++++++ ...yAppName_IS_UNDEFINED-druid.log.2018-04-23 | 126 +++++++ .../structure/tree/basic/ListAllFiles.java | 2 +- framework/spring/spring-data/pom.xml | 74 +++- .../spring/spring-data/spring-mybatis/pom.xml | 42 +++ .../org/laidu/learn/mybatis/Application.java | 21 ++ .../learn/mybatis/config/DruidConfig.java | 70 ++++ .../controller/UserInfoController.java | 39 +++ .../learn/mybatis/mapper/AppUserMapper.java | 148 ++++++++ .../mybatis/mapper/AppUserSqlProvider.java | 211 +++++++++++ .../laidu/learn/mybatis/model/AppUser.java | 283 +++++++++++++++ .../org/laidu/learn/mybatis/package-info.java | 7 + .../src/main/resources/application.properties | 69 ++++ .../src/main/resources/generatorConfig.xml | 67 ++++ .../src/main/resources/logback-spring.xml | 43 +++ 16 files changed, 1558 insertions(+), 5 deletions(-) create mode 100644 LOG_HOME_IS_UNDEFINED/settle-query.log-druid-2018-04-22 create mode 100644 LOG_PATH_IS_UNDEFINED/myAppName_IS_UNDEFINED-druid.log.2018-04-22 create mode 100644 LOG_PATH_IS_UNDEFINED/myAppName_IS_UNDEFINED-druid.log.2018-04-23 create mode 100644 framework/spring/spring-data/spring-mybatis/pom.xml create mode 100644 framework/spring/spring-data/spring-mybatis/src/main/java/org/laidu/learn/mybatis/Application.java create mode 100644 framework/spring/spring-data/spring-mybatis/src/main/java/org/laidu/learn/mybatis/config/DruidConfig.java create mode 100644 framework/spring/spring-data/spring-mybatis/src/main/java/org/laidu/learn/mybatis/controller/UserInfoController.java create mode 100644 framework/spring/spring-data/spring-mybatis/src/main/java/org/laidu/learn/mybatis/mapper/AppUserMapper.java create mode 100644 framework/spring/spring-data/spring-mybatis/src/main/java/org/laidu/learn/mybatis/mapper/AppUserSqlProvider.java create mode 100644 framework/spring/spring-data/spring-mybatis/src/main/java/org/laidu/learn/mybatis/model/AppUser.java create mode 100644 framework/spring/spring-data/spring-mybatis/src/main/java/org/laidu/learn/mybatis/package-info.java create mode 100644 framework/spring/spring-data/spring-mybatis/src/main/resources/application.properties create mode 100644 framework/spring/spring-data/spring-mybatis/src/main/resources/generatorConfig.xml create mode 100644 framework/spring/spring-data/spring-mybatis/src/main/resources/logback-spring.xml diff --git a/LOG_HOME_IS_UNDEFINED/settle-query.log-druid-2018-04-22 b/LOG_HOME_IS_UNDEFINED/settle-query.log-druid-2018-04-22 new file mode 100644 index 000000000..2380af0cf --- /dev/null +++ b/LOG_HOME_IS_UNDEFINED/settle-query.log-druid-2018-04-22 @@ -0,0 +1,33 @@ +2018-04-22 19:04:52.160 [main] DEBUG druid.sql.Connection - {conn-10001} connected +2018-04-22 19:04:52.165 [main] DEBUG druid.sql.Connection - {conn-10002} connected +2018-04-22 19:04:52.169 [main] DEBUG druid.sql.Connection - {conn-10003} connected +2018-04-22 19:04:52.173 [main] DEBUG druid.sql.Connection - {conn-10004} connected +2018-04-22 19:04:52.176 [main] DEBUG druid.sql.Connection - {conn-10005} connected +2018-04-22 19:04:58.927 [http-nio-8080-exec-4] DEBUG druid.sql.Connection - {conn-10005} pool-connect +2018-04-22 19:04:59.036 [http-nio-8080-exec-4] DEBUG druid.sql.Statement - {conn-10005, pstmt-20000} created. select id, open_id, register_channel, username, id_card, name, id_card_detail_address, is_verify_id_card, id_card_coverup, id_card_coverdown, id_card_hold, is_other_picture_auth, is_bankcard_auth, signature_pic, is_additional_auth, is_emergency_auth, phone, email, address, user_status, create_time, update_time, remark, id_card_police from ca_app_user where id = ? +2018-04-22 19:04:59.041 [http-nio-8080-exec-4] DEBUG druid.sql.Statement - {conn-10005, pstmt-20000} Parameters : [6] +2018-04-22 19:04:59.041 [http-nio-8080-exec-4] DEBUG druid.sql.Statement - {conn-10005, pstmt-20000} Types : [BIGINT] +2018-04-22 19:04:59.061 [http-nio-8080-exec-4] DEBUG druid.sql.Statement - {conn-10005, pstmt-20000} executed. select id, open_id, register_channel, username, id_card + , name, id_card_detail_address, is_verify_id_card, id_card_coverup, id_card_coverdown + , id_card_hold, is_other_picture_auth, is_bankcard_auth, signature_pic, is_additional_auth + , is_emergency_auth, phone, email, address, user_status + , create_time, update_time, remark, id_card_police +from ca_app_user +where id = 6 +2018-04-22 19:04:59.061 [http-nio-8080-exec-4] DEBUG druid.sql.Statement - {conn-10005, pstmt-20000} executed. 20.968017 millis. select id, open_id, register_channel, username, id_card, name, id_card_detail_address, is_verify_id_card, id_card_coverup, id_card_coverdown, id_card_hold, is_other_picture_auth, is_bankcard_auth, signature_pic, is_additional_auth, is_emergency_auth, phone, email, address, user_status, create_time, update_time, remark, id_card_police from ca_app_user where id = ? +2018-04-22 19:04:59.062 [http-nio-8080-exec-4] DEBUG druid.sql.Statement - {conn-10005, pstmt-20000} executed. select id, open_id, register_channel, username, id_card + , name, id_card_detail_address, is_verify_id_card, id_card_coverup, id_card_coverdown + , id_card_hold, is_other_picture_auth, is_bankcard_auth, signature_pic, is_additional_auth + , is_emergency_auth, phone, email, address, user_status + , create_time, update_time, remark, id_card_police +from ca_app_user +where id = 6 +2018-04-22 19:04:59.062 [http-nio-8080-exec-4] DEBUG druid.sql.Statement - {conn-10005, pstmt-20000} executed. 20.968017 millis. select id, open_id, register_channel, username, id_card, name, id_card_detail_address, is_verify_id_card, id_card_coverup, id_card_coverdown, id_card_hold, is_other_picture_auth, is_bankcard_auth, signature_pic, is_additional_auth, is_emergency_auth, phone, email, address, user_status, create_time, update_time, remark, id_card_police from ca_app_user where id = ? +2018-04-22 19:04:59.074 [http-nio-8080-exec-4] DEBUG druid.sql.Statement - {conn-10005, pstmt-20000} clearParameters. +2018-04-22 19:04:59.074 [http-nio-8080-exec-4] DEBUG druid.sql.Connection - {conn-10005} pool-recycle +2018-04-22 19:05:17.864 [Thread-4] DEBUG druid.sql.Connection - {conn-10001} closed +2018-04-22 19:05:17.864 [Thread-4] DEBUG druid.sql.Connection - {conn-10002} closed +2018-04-22 19:05:17.865 [Thread-4] DEBUG druid.sql.Connection - {conn-10003} closed +2018-04-22 19:05:17.865 [Thread-4] DEBUG druid.sql.Connection - {conn-10004} closed +2018-04-22 19:05:17.865 [Thread-4] DEBUG druid.sql.Statement - {conn-10005, pstmt-20000} closed +2018-04-22 19:05:17.865 [Thread-4] DEBUG druid.sql.Connection - {conn-10005} closed diff --git a/LOG_PATH_IS_UNDEFINED/myAppName_IS_UNDEFINED-druid.log.2018-04-22 b/LOG_PATH_IS_UNDEFINED/myAppName_IS_UNDEFINED-druid.log.2018-04-22 new file mode 100644 index 000000000..c691d606e --- /dev/null +++ b/LOG_PATH_IS_UNDEFINED/myAppName_IS_UNDEFINED-druid.log.2018-04-22 @@ -0,0 +1,328 @@ +2018-04-22 19:05:21,675 [DEBUG] [main] d.s.Connection:? {conn-10001} connected +2018-04-22 19:05:21,680 [DEBUG] [main] d.s.Connection:? {conn-10002} connected +2018-04-22 19:05:21,684 [DEBUG] [main] d.s.Connection:? {conn-10003} connected +2018-04-22 19:05:21,688 [DEBUG] [main] d.s.Connection:? {conn-10004} connected +2018-04-22 19:05:21,692 [DEBUG] [main] d.s.Connection:? {conn-10005} connected +2018-04-22 19:05:28,025 [DEBUG] [http-nio-8080-exec-3] d.s.Connection:? {conn-10005} pool-connect +2018-04-22 19:05:28,136 [DEBUG] [http-nio-8080-exec-3] d.sql.Statement:? {conn-10005, pstmt-20000} created. select id, open_id, register_channel, username, id_card, name, id_card_detail_address, is_verify_id_card, id_card_coverup, id_card_coverdown, id_card_hold, is_other_picture_auth, is_bankcard_auth, signature_pic, is_additional_auth, is_emergency_auth, phone, email, address, user_status, create_time, update_time, remark, id_card_police from ca_app_user where id = ? +2018-04-22 19:05:28,142 [DEBUG] [http-nio-8080-exec-3] d.sql.Statement:? {conn-10005, pstmt-20000} Parameters : [6] +2018-04-22 19:05:28,142 [DEBUG] [http-nio-8080-exec-3] d.sql.Statement:? {conn-10005, pstmt-20000} Types : [BIGINT] +2018-04-22 19:05:28,164 [DEBUG] [http-nio-8080-exec-3] d.sql.Statement:? {conn-10005, pstmt-20000} executed. select id, open_id, register_channel, username, id_card + , name, id_card_detail_address, is_verify_id_card, id_card_coverup, id_card_coverdown + , id_card_hold, is_other_picture_auth, is_bankcard_auth, signature_pic, is_additional_auth + , is_emergency_auth, phone, email, address, user_status + , create_time, update_time, remark, id_card_police +from ca_app_user +where id = 6 +2018-04-22 19:05:28,164 [DEBUG] [http-nio-8080-exec-3] d.sql.Statement:? {conn-10005, pstmt-20000} executed. 23.600049 millis. select id, open_id, register_channel, username, id_card, name, id_card_detail_address, is_verify_id_card, id_card_coverup, id_card_coverdown, id_card_hold, is_other_picture_auth, is_bankcard_auth, signature_pic, is_additional_auth, is_emergency_auth, phone, email, address, user_status, create_time, update_time, remark, id_card_police from ca_app_user where id = ? +2018-04-22 19:05:28,165 [DEBUG] [http-nio-8080-exec-3] d.sql.Statement:? {conn-10005, pstmt-20000} executed. select id, open_id, register_channel, username, id_card + , name, id_card_detail_address, is_verify_id_card, id_card_coverup, id_card_coverdown + , id_card_hold, is_other_picture_auth, is_bankcard_auth, signature_pic, is_additional_auth + , is_emergency_auth, phone, email, address, user_status + , create_time, update_time, remark, id_card_police +from ca_app_user +where id = 6 +2018-04-22 19:05:28,165 [DEBUG] [http-nio-8080-exec-3] d.sql.Statement:? {conn-10005, pstmt-20000} executed. 23.670527 millis. select id, open_id, register_channel, username, id_card, name, id_card_detail_address, is_verify_id_card, id_card_coverup, id_card_coverdown, id_card_hold, is_other_picture_auth, is_bankcard_auth, signature_pic, is_additional_auth, is_emergency_auth, phone, email, address, user_status, create_time, update_time, remark, id_card_police from ca_app_user where id = ? +2018-04-22 19:05:28,179 [DEBUG] [http-nio-8080-exec-3] d.sql.Statement:? {conn-10005, pstmt-20000} clearParameters. +2018-04-22 19:05:28,180 [DEBUG] [http-nio-8080-exec-3] d.s.Connection:? {conn-10005} pool-recycle +2018-04-22 19:06:40,051 [DEBUG] [Thread-4] d.s.Connection:? {conn-10001} closed +2018-04-22 19:06:40,051 [DEBUG] [Thread-4] d.s.Connection:? {conn-10002} closed +2018-04-22 19:06:40,051 [DEBUG] [Thread-4] d.s.Connection:? {conn-10003} closed +2018-04-22 19:06:40,052 [DEBUG] [Thread-4] d.s.Connection:? {conn-10004} closed +2018-04-22 19:06:40,052 [DEBUG] [Thread-4] d.sql.Statement:? {conn-10005, pstmt-20000} closed +2018-04-22 19:06:40,052 [DEBUG] [Thread-4] d.s.Connection:? {conn-10005} closed +2018-04-22 19:06:43,871 [DEBUG] [main] d.s.Connection:? {conn-10001} connected +2018-04-22 19:06:43,876 [DEBUG] [main] d.s.Connection:? {conn-10002} connected +2018-04-22 19:06:43,879 [DEBUG] [main] d.s.Connection:? {conn-10003} connected +2018-04-22 19:06:43,883 [DEBUG] [main] d.s.Connection:? {conn-10004} connected +2018-04-22 19:06:43,886 [DEBUG] [main] d.s.Connection:? {conn-10005} connected +2018-04-22 19:06:49,704 [DEBUG] [http-nio-8080-exec-2] d.s.Connection:? {conn-10005} pool-connect +2018-04-22 19:06:49,819 [DEBUG] [http-nio-8080-exec-2] d.sql.Statement:? {conn-10005, pstmt-20000} created. select id, open_id, register_channel, username, id_card, name, id_card_detail_address, is_verify_id_card, id_card_coverup, id_card_coverdown, id_card_hold, is_other_picture_auth, is_bankcard_auth, signature_pic, is_additional_auth, is_emergency_auth, phone, email, address, user_status, create_time, update_time, remark, id_card_police from ca_app_user where id = ? +2018-04-22 19:06:49,825 [DEBUG] [http-nio-8080-exec-2] d.sql.Statement:? {conn-10005, pstmt-20000} Parameters : [6] +2018-04-22 19:06:49,825 [DEBUG] [http-nio-8080-exec-2] d.sql.Statement:? {conn-10005, pstmt-20000} Types : [BIGINT] +2018-04-22 19:06:49,846 [DEBUG] [http-nio-8080-exec-2] d.sql.Statement:? {conn-10005, pstmt-20000} executed. select id, open_id, register_channel, username, id_card + , name, id_card_detail_address, is_verify_id_card, id_card_coverup, id_card_coverdown + , id_card_hold, is_other_picture_auth, is_bankcard_auth, signature_pic, is_additional_auth + , is_emergency_auth, phone, email, address, user_status + , create_time, update_time, remark, id_card_police +from ca_app_user +where id = 6 +2018-04-22 19:06:49,846 [DEBUG] [http-nio-8080-exec-2] d.sql.Statement:? {conn-10005, pstmt-20000} executed. 22.194821 millis. select id, open_id, register_channel, username, id_card, name, id_card_detail_address, is_verify_id_card, id_card_coverup, id_card_coverdown, id_card_hold, is_other_picture_auth, is_bankcard_auth, signature_pic, is_additional_auth, is_emergency_auth, phone, email, address, user_status, create_time, update_time, remark, id_card_police from ca_app_user where id = ? +2018-04-22 19:06:49,847 [DEBUG] [http-nio-8080-exec-2] d.sql.Statement:? {conn-10005, pstmt-20000} executed. select id, open_id, register_channel, username, id_card + , name, id_card_detail_address, is_verify_id_card, id_card_coverup, id_card_coverdown + , id_card_hold, is_other_picture_auth, is_bankcard_auth, signature_pic, is_additional_auth + , is_emergency_auth, phone, email, address, user_status + , create_time, update_time, remark, id_card_police +from ca_app_user +where id = 6 +2018-04-22 19:06:49,847 [DEBUG] [http-nio-8080-exec-2] d.sql.Statement:? {conn-10005, pstmt-20000} executed. 22.248586 millis. select id, open_id, register_channel, username, id_card, name, id_card_detail_address, is_verify_id_card, id_card_coverup, id_card_coverdown, id_card_hold, is_other_picture_auth, is_bankcard_auth, signature_pic, is_additional_auth, is_emergency_auth, phone, email, address, user_status, create_time, update_time, remark, id_card_police from ca_app_user where id = ? +2018-04-22 19:06:49,862 [DEBUG] [http-nio-8080-exec-2] d.sql.Statement:? {conn-10005, pstmt-20000} clearParameters. +2018-04-22 19:06:49,862 [DEBUG] [http-nio-8080-exec-2] d.s.Connection:? {conn-10005} pool-recycle +2018-04-22 19:07:30,850 [DEBUG] [Thread-4] d.s.Connection:? {conn-10001} closed +2018-04-22 19:07:30,850 [DEBUG] [Thread-4] d.s.Connection:? {conn-10002} closed +2018-04-22 19:07:30,850 [DEBUG] [Thread-4] d.s.Connection:? {conn-10003} closed +2018-04-22 19:07:30,850 [DEBUG] [Thread-4] d.s.Connection:? {conn-10004} closed +2018-04-22 19:07:30,850 [DEBUG] [Thread-4] d.sql.Statement:? {conn-10005, pstmt-20000} closed +2018-04-22 19:07:30,851 [DEBUG] [Thread-4] d.s.Connection:? {conn-10005} closed +2018-04-22 19:07:34,767 [DEBUG] [main] d.s.Connection:? {conn-10001} connected +2018-04-22 19:07:34,772 [DEBUG] [main] d.s.Connection:? {conn-10002} connected +2018-04-22 19:07:34,776 [DEBUG] [main] d.s.Connection:? {conn-10003} connected +2018-04-22 19:07:34,779 [DEBUG] [main] d.s.Connection:? {conn-10004} connected +2018-04-22 19:07:34,782 [DEBUG] [main] d.s.Connection:? {conn-10005} connected +2018-04-22 19:08:57,153 [DEBUG] [Thread-4] d.s.Connection:? {conn-10001} closed +2018-04-22 19:08:57,153 [DEBUG] [Thread-4] d.s.Connection:? {conn-10002} closed +2018-04-22 19:08:57,153 [DEBUG] [Thread-4] d.s.Connection:? {conn-10003} closed +2018-04-22 19:08:57,153 [DEBUG] [Thread-4] d.s.Connection:? {conn-10004} closed +2018-04-22 19:08:57,153 [DEBUG] [Thread-4] d.s.Connection:? {conn-10005} closed +2018-04-22 19:08:58,442 [INFO] [main] o.l.l.m.Application:? Starting Application on laidu-pc with PID 10056 (/home/laidu/IdeaProjects/java-learn/framework/spring/spring-data/spring-mybatis/target/classes started by laidu in /home/laidu/IdeaProjects/java-learn) +2018-04-22 19:08:58,444 [INFO] [main] o.l.l.m.Application:? No active profile set, falling back to default profiles: default +2018-04-22 19:08:58,501 [INFO] [main] o.s.b.c.e.AnnotationConfigEmbeddedWebApplicationContext:? Refreshing org.springframework.boot.context.embedded.AnnotationConfigEmbeddedWebApplicationContext@4b520ea8: startup date [Sun Apr 22 19:08:58 CST 2018]; root of context hierarchy +2018-04-22 19:08:58,854 [INFO] [background-preinit] o.h.v.i.u.Version:? HV000001: Hibernate Validator 5.3.6.Final +2018-04-22 19:08:59,432 [INFO] [main] o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker:? Bean 'org.springframework.ws.config.annotation.DelegatingWsConfiguration' of type [org.springframework.ws.config.annotation.DelegatingWsConfiguration$$EnhancerBySpringCGLIB$$3cfd0ef4] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying) +2018-04-22 19:08:59,467 [INFO] [main] o.s.w.s.a.s.AnnotationActionEndpointMapping:? Supporting [WS-Addressing August 2004, WS-Addressing 1.0] +2018-04-22 19:08:59,801 [INFO] [main] o.s.b.c.e.t.TomcatEmbeddedServletContainer:? Tomcat initialized with port(s): 8080 (http) +2018-04-22 19:08:59,812 [INFO] [main] o.a.c.c.StandardService:? Starting service [Tomcat] +2018-04-22 19:08:59,813 [INFO] [main] o.a.c.c.StandardEngine:? Starting Servlet Engine: Apache Tomcat/8.5.23 +2018-04-22 19:08:59,939 [INFO] [localhost-startStop-1] o.a.c.c.C.[.[.[/]:? Initializing Spring embedded WebApplicationContext +2018-04-22 19:08:59,939 [INFO] [localhost-startStop-1] o.s.w.c.ContextLoader:? Root WebApplicationContext: initialization completed in 1438 ms +2018-04-22 19:08:59,949 [INFO] [localhost-startStop-1] o.l.l.m.c.DruidConfig:? init Druid Servlet Configuration +2018-04-22 19:09:00,089 [INFO] [localhost-startStop-1] o.s.b.w.s.ServletRegistrationBean:? Mapping servlet: 'statViewServlet' to [/druid/*] +2018-04-22 19:09:00,090 [INFO] [localhost-startStop-1] o.s.b.w.s.ServletRegistrationBean:? Mapping servlet: 'dispatcherServlet' to [/] +2018-04-22 19:09:00,090 [INFO] [localhost-startStop-1] o.s.b.w.s.ServletRegistrationBean:? Mapping servlet: 'statViewServlet' to [/druid/*] +2018-04-22 19:09:00,090 [INFO] [localhost-startStop-1] o.s.b.w.s.ServletRegistrationBean:? Servlet statViewServlet was not registered (possibly already registered?) +2018-04-22 19:09:00,090 [INFO] [localhost-startStop-1] o.s.b.w.s.ServletRegistrationBean:? Mapping servlet: 'messageDispatcherServlet' to [/services/*] +2018-04-22 19:09:00,093 [INFO] [localhost-startStop-1] o.s.b.w.s.FilterRegistrationBean:? Mapping filter: 'characterEncodingFilter' to: [/*] +2018-04-22 19:09:00,093 [INFO] [localhost-startStop-1] o.s.b.w.s.FilterRegistrationBean:? Mapping filter: 'hiddenHttpMethodFilter' to: [/*] +2018-04-22 19:09:00,093 [INFO] [localhost-startStop-1] o.s.b.w.s.FilterRegistrationBean:? Mapping filter: 'httpPutFormContentFilter' to: [/*] +2018-04-22 19:09:00,093 [INFO] [localhost-startStop-1] o.s.b.w.s.FilterRegistrationBean:? Mapping filter: 'requestContextFilter' to: [/*] +2018-04-22 19:09:00,093 [INFO] [localhost-startStop-1] o.s.b.w.s.FilterRegistrationBean:? Mapping filter: 'webStatFilter' to urls: [/*] +2018-04-22 19:09:00,093 [INFO] [localhost-startStop-1] o.s.b.w.s.FilterRegistrationBean:? Filter webStatFilter was not registered (possibly already registered?) +2018-04-22 19:09:00,161 [INFO] [main] c.a.d.s.b.a.DruidDataSourceAutoConfigure:? Init DruidDataSource +2018-04-22 19:09:00,878 [DEBUG] [main] d.s.Connection:? {conn-10001} connected +2018-04-22 19:09:00,883 [DEBUG] [main] d.s.Connection:? {conn-10002} connected +2018-04-22 19:09:00,887 [DEBUG] [main] d.s.Connection:? {conn-10003} connected +2018-04-22 19:09:00,890 [DEBUG] [main] d.s.Connection:? {conn-10004} connected +2018-04-22 19:09:00,893 [DEBUG] [main] d.s.Connection:? {conn-10005} connected +2018-04-22 19:09:00,896 [INFO] [main] c.a.d.p.DruidDataSource:? {dataSource-1} inited +2018-04-22 19:09:01,309 [INFO] [main] o.s.w.s.m.m.a.RequestMappingHandlerAdapter:? Looking for @ControllerAdvice: org.springframework.boot.context.embedded.AnnotationConfigEmbeddedWebApplicationContext@4b520ea8: startup date [Sun Apr 22 19:08:58 CST 2018]; root of context hierarchy +2018-04-22 19:09:01,376 [INFO] [main] o.s.w.s.m.m.a.RequestMappingHandlerMapping:? Mapped "{[/query/{id}],methods=[GET]}" onto public org.laidu.learn.mybatis.model.AppUser org.laidu.learn.mybatis.controller.UserInfoController.queryById(java.lang.Long) +2018-04-22 19:09:01,379 [INFO] [main] o.s.w.s.m.m.a.RequestMappingHandlerMapping:? Mapped "{[/error],produces=[text/html]}" onto public org.springframework.web.servlet.ModelAndView org.springframework.boot.autoconfigure.web.BasicErrorController.errorHtml(javax.servlet.http.HttpServletRequest,javax.servlet.http.HttpServletResponse) +2018-04-22 19:09:01,379 [INFO] [main] o.s.w.s.m.m.a.RequestMappingHandlerMapping:? Mapped "{[/error]}" onto public org.springframework.http.ResponseEntity> org.springframework.boot.autoconfigure.web.BasicErrorController.error(javax.servlet.http.HttpServletRequest) +2018-04-22 19:09:01,417 [INFO] [main] o.s.w.s.h.SimpleUrlHandlerMapping:? Mapped URL path [/webjars/**] onto handler of type [class org.springframework.web.servlet.resource.ResourceHttpRequestHandler] +2018-04-22 19:09:01,417 [INFO] [main] o.s.w.s.h.SimpleUrlHandlerMapping:? Mapped URL path [/**] onto handler of type [class org.springframework.web.servlet.resource.ResourceHttpRequestHandler] +2018-04-22 19:09:01,466 [INFO] [main] o.s.w.s.h.SimpleUrlHandlerMapping:? Mapped URL path [/**/favicon.ico] onto handler of type [class org.springframework.web.servlet.resource.ResourceHttpRequestHandler] +2018-04-22 19:09:01,855 [INFO] [main] o.s.j.e.a.AnnotationMBeanExporter:? Registering beans for JMX exposure on startup +2018-04-22 19:09:01,856 [INFO] [main] o.s.j.e.a.AnnotationMBeanExporter:? Bean with name 'logFilter' has been autodetected for JMX exposure +2018-04-22 19:09:01,857 [INFO] [main] o.s.j.e.a.AnnotationMBeanExporter:? Bean with name 'statFilter' has been autodetected for JMX exposure +2018-04-22 19:09:01,857 [INFO] [main] o.s.j.e.a.AnnotationMBeanExporter:? Bean with name 'dataSource' has been autodetected for JMX exposure +2018-04-22 19:09:01,862 [INFO] [main] o.s.j.e.a.AnnotationMBeanExporter:? Located MBean 'logFilter': registering with JMX server as MBean [com.alibaba.druid.filter.logging:name=logFilter,type=Slf4jLogFilter] +2018-04-22 19:09:01,863 [INFO] [main] o.s.j.e.a.AnnotationMBeanExporter:? Located MBean 'dataSource': registering with JMX server as MBean [com.alibaba.druid.spring.boot.autoconfigure:name=dataSource,type=DruidDataSourceWrapper] +2018-04-22 19:09:01,864 [INFO] [main] o.s.j.e.a.AnnotationMBeanExporter:? Located MBean 'statFilter': registering with JMX server as MBean [com.alibaba.druid.filter.stat:name=statFilter,type=StatFilter] +2018-04-22 19:09:01,878 [INFO] [main] o.a.c.h.Http11NioProtocol:? Initializing ProtocolHandler ["http-nio-8080"] +2018-04-22 19:09:01,889 [INFO] [main] o.a.c.h.Http11NioProtocol:? Starting ProtocolHandler ["http-nio-8080"] +2018-04-22 19:09:01,894 [INFO] [main] o.a.t.u.n.NioSelectorPool:? Using a shared selector for servlet write/read +2018-04-22 19:09:01,912 [INFO] [main] o.s.b.c.e.t.TomcatEmbeddedServletContainer:? Tomcat started on port(s): 8080 (http) +2018-04-22 19:09:01,916 [INFO] [main] o.l.l.m.Application:? Started Application in 3.809 seconds (JVM running for 4.132) +2018-04-22 19:09:14,860 [INFO] [http-nio-8080-exec-7] o.a.c.c.C.[.[.[/]:? Initializing Spring FrameworkServlet 'dispatcherServlet' +2018-04-22 19:09:14,860 [INFO] [http-nio-8080-exec-7] o.s.w.s.DispatcherServlet:? FrameworkServlet 'dispatcherServlet': initialization started +2018-04-22 19:09:14,876 [INFO] [http-nio-8080-exec-7] o.s.w.s.DispatcherServlet:? FrameworkServlet 'dispatcherServlet': initialization completed in 15 ms +2018-04-22 19:09:14,924 [DEBUG] [http-nio-8080-exec-7] d.s.Connection:? {conn-10005} pool-connect +2018-04-22 19:09:15,034 [DEBUG] [http-nio-8080-exec-7] d.sql.Statement:? {conn-10005, pstmt-20000} created. select id, open_id, register_channel, username, id_card, name, id_card_detail_address, is_verify_id_card, id_card_coverup, id_card_coverdown, id_card_hold, is_other_picture_auth, is_bankcard_auth, signature_pic, is_additional_auth, is_emergency_auth, phone, email, address, user_status, create_time, update_time, remark, id_card_police from ca_app_user where id = ? +2018-04-22 19:09:15,039 [DEBUG] [http-nio-8080-exec-7] d.sql.Statement:? {conn-10005, pstmt-20000} Parameters : [6] +2018-04-22 19:09:15,039 [DEBUG] [http-nio-8080-exec-7] d.sql.Statement:? {conn-10005, pstmt-20000} Types : [BIGINT] +2018-04-22 19:09:15,059 [DEBUG] [http-nio-8080-exec-7] d.sql.Statement:? {conn-10005, pstmt-20000} executed. select id, open_id, register_channel, username, id_card + , name, id_card_detail_address, is_verify_id_card, id_card_coverup, id_card_coverdown + , id_card_hold, is_other_picture_auth, is_bankcard_auth, signature_pic, is_additional_auth + , is_emergency_auth, phone, email, address, user_status + , create_time, update_time, remark, id_card_police +from ca_app_user +where id = 6 +2018-04-22 19:09:15,059 [DEBUG] [http-nio-8080-exec-7] d.sql.Statement:? {conn-10005, pstmt-20000} executed. 20.511951 millis. select id, open_id, register_channel, username, id_card, name, id_card_detail_address, is_verify_id_card, id_card_coverup, id_card_coverdown, id_card_hold, is_other_picture_auth, is_bankcard_auth, signature_pic, is_additional_auth, is_emergency_auth, phone, email, address, user_status, create_time, update_time, remark, id_card_police from ca_app_user where id = ? +2018-04-22 19:09:15,059 [DEBUG] [http-nio-8080-exec-7] d.sql.Statement:? {conn-10005, pstmt-20000} executed. select id, open_id, register_channel, username, id_card + , name, id_card_detail_address, is_verify_id_card, id_card_coverup, id_card_coverdown + , id_card_hold, is_other_picture_auth, is_bankcard_auth, signature_pic, is_additional_auth + , is_emergency_auth, phone, email, address, user_status + , create_time, update_time, remark, id_card_police +from ca_app_user +where id = 6 +2018-04-22 19:09:15,059 [DEBUG] [http-nio-8080-exec-7] d.sql.Statement:? {conn-10005, pstmt-20000} executed. 20.584957 millis. select id, open_id, register_channel, username, id_card, name, id_card_detail_address, is_verify_id_card, id_card_coverup, id_card_coverdown, id_card_hold, is_other_picture_auth, is_bankcard_auth, signature_pic, is_additional_auth, is_emergency_auth, phone, email, address, user_status, create_time, update_time, remark, id_card_police from ca_app_user where id = ? +2018-04-22 19:09:15,071 [DEBUG] [http-nio-8080-exec-7] d.sql.Statement:? {conn-10005, pstmt-20000} clearParameters. +2018-04-22 19:09:15,071 [DEBUG] [http-nio-8080-exec-7] d.s.Connection:? {conn-10005} pool-recycle +2018-04-22 19:09:17,615 [DEBUG] [http-nio-8080-exec-9] d.s.Connection:? {conn-10005} pool-connect +2018-04-22 19:09:17,615 [DEBUG] [http-nio-8080-exec-9] d.sql.Statement:? {conn-10005, pstmt-20000} Parameters : [6] +2018-04-22 19:09:17,616 [DEBUG] [http-nio-8080-exec-9] d.sql.Statement:? {conn-10005, pstmt-20000} Types : [BIGINT] +2018-04-22 19:09:17,617 [DEBUG] [http-nio-8080-exec-9] d.sql.Statement:? {conn-10005, pstmt-20000} executed. select id, open_id, register_channel, username, id_card + , name, id_card_detail_address, is_verify_id_card, id_card_coverup, id_card_coverdown + , id_card_hold, is_other_picture_auth, is_bankcard_auth, signature_pic, is_additional_auth + , is_emergency_auth, phone, email, address, user_status + , create_time, update_time, remark, id_card_police +from ca_app_user +where id = 6 +2018-04-22 19:09:17,617 [DEBUG] [http-nio-8080-exec-9] d.sql.Statement:? {conn-10005, pstmt-20000} executed. 1.567626 millis. select id, open_id, register_channel, username, id_card, name, id_card_detail_address, is_verify_id_card, id_card_coverup, id_card_coverdown, id_card_hold, is_other_picture_auth, is_bankcard_auth, signature_pic, is_additional_auth, is_emergency_auth, phone, email, address, user_status, create_time, update_time, remark, id_card_police from ca_app_user where id = ? +2018-04-22 19:09:17,618 [DEBUG] [http-nio-8080-exec-9] d.sql.Statement:? {conn-10005, pstmt-20000} executed. select id, open_id, register_channel, username, id_card + , name, id_card_detail_address, is_verify_id_card, id_card_coverup, id_card_coverdown + , id_card_hold, is_other_picture_auth, is_bankcard_auth, signature_pic, is_additional_auth + , is_emergency_auth, phone, email, address, user_status + , create_time, update_time, remark, id_card_police +from ca_app_user +where id = 6 +2018-04-22 19:09:17,618 [DEBUG] [http-nio-8080-exec-9] d.sql.Statement:? {conn-10005, pstmt-20000} executed. 1.61479 millis. select id, open_id, register_channel, username, id_card, name, id_card_detail_address, is_verify_id_card, id_card_coverup, id_card_coverdown, id_card_hold, is_other_picture_auth, is_bankcard_auth, signature_pic, is_additional_auth, is_emergency_auth, phone, email, address, user_status, create_time, update_time, remark, id_card_police from ca_app_user where id = ? +2018-04-22 19:09:17,620 [DEBUG] [http-nio-8080-exec-9] d.sql.Statement:? {conn-10005, pstmt-20000} clearParameters. +2018-04-22 19:09:17,620 [DEBUG] [http-nio-8080-exec-9] d.s.Connection:? {conn-10005} pool-recycle +2018-04-22 19:09:18,692 [DEBUG] [http-nio-8080-exec-2] d.s.Connection:? {conn-10005} pool-connect +2018-04-22 19:09:18,692 [DEBUG] [http-nio-8080-exec-2] d.sql.Statement:? {conn-10005, pstmt-20000} Parameters : [6] +2018-04-22 19:09:18,692 [DEBUG] [http-nio-8080-exec-2] d.sql.Statement:? {conn-10005, pstmt-20000} Types : [BIGINT] +2018-04-22 19:09:18,693 [DEBUG] [http-nio-8080-exec-2] d.sql.Statement:? {conn-10005, pstmt-20000} executed. select id, open_id, register_channel, username, id_card + , name, id_card_detail_address, is_verify_id_card, id_card_coverup, id_card_coverdown + , id_card_hold, is_other_picture_auth, is_bankcard_auth, signature_pic, is_additional_auth + , is_emergency_auth, phone, email, address, user_status + , create_time, update_time, remark, id_card_police +from ca_app_user +where id = 6 +2018-04-22 19:09:18,694 [DEBUG] [http-nio-8080-exec-2] d.sql.Statement:? {conn-10005, pstmt-20000} executed. 1.443395 millis. select id, open_id, register_channel, username, id_card, name, id_card_detail_address, is_verify_id_card, id_card_coverup, id_card_coverdown, id_card_hold, is_other_picture_auth, is_bankcard_auth, signature_pic, is_additional_auth, is_emergency_auth, phone, email, address, user_status, create_time, update_time, remark, id_card_police from ca_app_user where id = ? +2018-04-22 19:09:18,694 [DEBUG] [http-nio-8080-exec-2] d.sql.Statement:? {conn-10005, pstmt-20000} executed. select id, open_id, register_channel, username, id_card + , name, id_card_detail_address, is_verify_id_card, id_card_coverup, id_card_coverdown + , id_card_hold, is_other_picture_auth, is_bankcard_auth, signature_pic, is_additional_auth + , is_emergency_auth, phone, email, address, user_status + , create_time, update_time, remark, id_card_police +from ca_app_user +where id = 6 +2018-04-22 19:09:18,694 [DEBUG] [http-nio-8080-exec-2] d.sql.Statement:? {conn-10005, pstmt-20000} executed. 1.487809 millis. select id, open_id, register_channel, username, id_card, name, id_card_detail_address, is_verify_id_card, id_card_coverup, id_card_coverdown, id_card_hold, is_other_picture_auth, is_bankcard_auth, signature_pic, is_additional_auth, is_emergency_auth, phone, email, address, user_status, create_time, update_time, remark, id_card_police from ca_app_user where id = ? +2018-04-22 19:09:18,696 [DEBUG] [http-nio-8080-exec-2] d.sql.Statement:? {conn-10005, pstmt-20000} clearParameters. +2018-04-22 19:09:18,697 [DEBUG] [http-nio-8080-exec-2] d.s.Connection:? {conn-10005} pool-recycle +2018-04-22 20:35:08,010 [DEBUG] [http-nio-8080-exec-6] d.s.Connection:? {conn-10005} pool-connect +2018-04-22 20:35:08,011 [DEBUG] [http-nio-8080-exec-6] d.sql.Statement:? {conn-10005, pstmt-20000} Parameters : [6] +2018-04-22 20:35:08,011 [DEBUG] [http-nio-8080-exec-6] d.sql.Statement:? {conn-10005, pstmt-20000} Types : [BIGINT] +2018-04-22 20:35:08,107 [DEBUG] [http-nio-8080-exec-6] d.sql.Statement:? {conn-10005, pstmt-20000} executed. select id, open_id, register_channel, username, id_card + , name, id_card_detail_address, is_verify_id_card, id_card_coverup, id_card_coverdown + , id_card_hold, is_other_picture_auth, is_bankcard_auth, signature_pic, is_additional_auth + , is_emergency_auth, phone, email, address, user_status + , create_time, update_time, remark, id_card_police +from ca_app_user +where id = 6 +2018-04-22 20:35:08,107 [DEBUG] [http-nio-8080-exec-6] d.sql.Statement:? {conn-10005, pstmt-20000} executed. 96.664173 millis. select id, open_id, register_channel, username, id_card, name, id_card_detail_address, is_verify_id_card, id_card_coverup, id_card_coverdown, id_card_hold, is_other_picture_auth, is_bankcard_auth, signature_pic, is_additional_auth, is_emergency_auth, phone, email, address, user_status, create_time, update_time, remark, id_card_police from ca_app_user where id = ? +2018-04-22 20:35:08,108 [DEBUG] [http-nio-8080-exec-6] d.sql.Statement:? {conn-10005, pstmt-20000} executed. select id, open_id, register_channel, username, id_card + , name, id_card_detail_address, is_verify_id_card, id_card_coverup, id_card_coverdown + , id_card_hold, is_other_picture_auth, is_bankcard_auth, signature_pic, is_additional_auth + , is_emergency_auth, phone, email, address, user_status + , create_time, update_time, remark, id_card_police +from ca_app_user +where id = 6 +2018-04-22 20:35:08,108 [DEBUG] [http-nio-8080-exec-6] d.sql.Statement:? {conn-10005, pstmt-20000} executed. 96.732418 millis. select id, open_id, register_channel, username, id_card, name, id_card_detail_address, is_verify_id_card, id_card_coverup, id_card_coverdown, id_card_hold, is_other_picture_auth, is_bankcard_auth, signature_pic, is_additional_auth, is_emergency_auth, phone, email, address, user_status, create_time, update_time, remark, id_card_police from ca_app_user where id = ? +2018-04-22 20:35:08,110 [DEBUG] [http-nio-8080-exec-6] d.sql.Statement:? {conn-10005, pstmt-20000} clearParameters. +2018-04-22 20:35:08,110 [DEBUG] [http-nio-8080-exec-6] d.s.Connection:? {conn-10005} pool-recycle +2018-04-22 20:35:35,276 [DEBUG] [http-nio-8080-exec-8] d.s.Connection:? {conn-10005} pool-connect +2018-04-22 20:35:35,276 [DEBUG] [http-nio-8080-exec-8] d.sql.Statement:? {conn-10005, pstmt-20000} Parameters : [6] +2018-04-22 20:35:35,276 [DEBUG] [http-nio-8080-exec-8] d.sql.Statement:? {conn-10005, pstmt-20000} Types : [BIGINT] +2018-04-22 20:35:35,277 [DEBUG] [http-nio-8080-exec-8] d.sql.Statement:? {conn-10005, pstmt-20000} executed. select id, open_id, register_channel, username, id_card + , name, id_card_detail_address, is_verify_id_card, id_card_coverup, id_card_coverdown + , id_card_hold, is_other_picture_auth, is_bankcard_auth, signature_pic, is_additional_auth + , is_emergency_auth, phone, email, address, user_status + , create_time, update_time, remark, id_card_police +from ca_app_user +where id = 6 +2018-04-22 20:35:35,277 [DEBUG] [http-nio-8080-exec-8] d.sql.Statement:? {conn-10005, pstmt-20000} executed. 1.530359 millis. select id, open_id, register_channel, username, id_card, name, id_card_detail_address, is_verify_id_card, id_card_coverup, id_card_coverdown, id_card_hold, is_other_picture_auth, is_bankcard_auth, signature_pic, is_additional_auth, is_emergency_auth, phone, email, address, user_status, create_time, update_time, remark, id_card_police from ca_app_user where id = ? +2018-04-22 20:35:35,278 [DEBUG] [http-nio-8080-exec-8] d.sql.Statement:? {conn-10005, pstmt-20000} executed. select id, open_id, register_channel, username, id_card + , name, id_card_detail_address, is_verify_id_card, id_card_coverup, id_card_coverdown + , id_card_hold, is_other_picture_auth, is_bankcard_auth, signature_pic, is_additional_auth + , is_emergency_auth, phone, email, address, user_status + , create_time, update_time, remark, id_card_police +from ca_app_user +where id = 6 +2018-04-22 20:35:35,278 [DEBUG] [http-nio-8080-exec-8] d.sql.Statement:? {conn-10005, pstmt-20000} executed. 1.588714 millis. select id, open_id, register_channel, username, id_card, name, id_card_detail_address, is_verify_id_card, id_card_coverup, id_card_coverdown, id_card_hold, is_other_picture_auth, is_bankcard_auth, signature_pic, is_additional_auth, is_emergency_auth, phone, email, address, user_status, create_time, update_time, remark, id_card_police from ca_app_user where id = ? +2018-04-22 20:35:35,279 [DEBUG] [http-nio-8080-exec-8] d.sql.Statement:? {conn-10005, pstmt-20000} clearParameters. +2018-04-22 20:35:35,279 [DEBUG] [http-nio-8080-exec-8] d.s.Connection:? {conn-10005} pool-recycle +2018-04-22 20:35:50,000 [INFO] [Thread-4] o.s.b.c.e.AnnotationConfigEmbeddedWebApplicationContext:? Closing org.springframework.boot.context.embedded.AnnotationConfigEmbeddedWebApplicationContext@4b520ea8: startup date [Sun Apr 22 19:08:58 CST 2018]; root of context hierarchy +2018-04-22 20:35:50,001 [INFO] [Thread-4] o.s.j.e.a.AnnotationMBeanExporter:? Unregistering JMX-exposed beans on shutdown +2018-04-22 20:35:50,001 [INFO] [Thread-4] o.s.j.e.a.AnnotationMBeanExporter:? Unregistering JMX-exposed beans +2018-04-22 20:35:50,004 [DEBUG] [Thread-4] d.s.Connection:? {conn-10001} closed +2018-04-22 20:35:50,004 [DEBUG] [Thread-4] d.s.Connection:? {conn-10002} closed +2018-04-22 20:35:50,004 [DEBUG] [Thread-4] d.s.Connection:? {conn-10003} closed +2018-04-22 20:35:50,005 [DEBUG] [Thread-4] d.s.Connection:? {conn-10004} closed +2018-04-22 20:35:50,005 [DEBUG] [Thread-4] d.sql.Statement:? {conn-10005, pstmt-20000} closed +2018-04-22 20:35:50,005 [DEBUG] [Thread-4] d.s.Connection:? {conn-10005} closed +2018-04-22 20:35:50,005 [INFO] [Thread-4] c.a.d.p.DruidDataSource:? {dataSource-1} closed +2018-04-22 20:35:51,693 [INFO] [main] o.l.l.m.Application:48 Starting Application on laidu-pc with PID 11095 (/home/laidu/IdeaProjects/java-learn/framework/spring/spring-data/spring-mybatis/target/classes started by laidu in /home/laidu/IdeaProjects/java-learn) +2018-04-22 20:35:51,699 [INFO] [main] o.l.l.m.Application:593 No active profile set, falling back to default profiles: default +2018-04-22 20:35:51,764 [INFO] [main] o.s.b.c.e.AnnotationConfigEmbeddedWebApplicationContext:583 Refreshing org.springframework.boot.context.embedded.AnnotationConfigEmbeddedWebApplicationContext@4b520ea8: startup date [Sun Apr 22 20:35:51 CST 2018]; root of context hierarchy +2018-04-22 20:35:51,990 [INFO] [background-preinit] o.h.v.i.u.Version:30 HV000001: Hibernate Validator 5.3.6.Final +2018-04-22 20:35:52,628 [INFO] [main] o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker:327 Bean 'org.springframework.ws.config.annotation.DelegatingWsConfiguration' of type [org.springframework.ws.config.annotation.DelegatingWsConfiguration$$EnhancerBySpringCGLIB$$1e01f25e] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying) +2018-04-22 20:35:52,660 [INFO] [main] o.s.w.s.a.s.AnnotationActionEndpointMapping:236 Supporting [WS-Addressing August 2004, WS-Addressing 1.0] +2018-04-22 20:35:53,026 [INFO] [main] o.s.b.c.e.t.TomcatEmbeddedServletContainer:89 Tomcat initialized with port(s): 8080 (http) +2018-04-22 20:35:53,038 [INFO] [main] o.a.c.c.StandardService:179 Starting service [Tomcat] +2018-04-22 20:35:53,038 [INFO] [main] o.a.c.c.StandardEngine:179 Starting Servlet Engine: Apache Tomcat/8.5.23 +2018-04-22 20:35:53,138 [INFO] [localhost-startStop-1] o.a.c.c.C.[.[.[/]:179 Initializing Spring embedded WebApplicationContext +2018-04-22 20:35:53,138 [INFO] [localhost-startStop-1] o.s.w.c.ContextLoader:276 Root WebApplicationContext: initialization completed in 1374 ms +2018-04-22 20:35:53,148 [INFO] [localhost-startStop-1] o.l.l.m.c.DruidConfig:47 init Druid Servlet Configuration +2018-04-22 20:35:53,339 [INFO] [localhost-startStop-1] o.s.b.w.s.ServletRegistrationBean:190 Mapping servlet: 'statViewServlet' to [/druid/*] +2018-04-22 20:35:53,342 [INFO] [localhost-startStop-1] o.s.b.w.s.ServletRegistrationBean:190 Mapping servlet: 'dispatcherServlet' to [/] +2018-04-22 20:35:53,342 [INFO] [localhost-startStop-1] o.s.b.w.s.ServletRegistrationBean:190 Mapping servlet: 'statViewServlet' to [/druid/*] +2018-04-22 20:35:53,343 [INFO] [localhost-startStop-1] o.s.b.w.s.ServletRegistrationBean:193 Servlet statViewServlet was not registered (possibly already registered?) +2018-04-22 20:35:53,343 [INFO] [localhost-startStop-1] o.s.b.w.s.ServletRegistrationBean:190 Mapping servlet: 'messageDispatcherServlet' to [/services/*] +2018-04-22 20:35:53,347 [INFO] [localhost-startStop-1] o.s.b.w.s.FilterRegistrationBean:258 Mapping filter: 'characterEncodingFilter' to: [/*] +2018-04-22 20:35:53,347 [INFO] [localhost-startStop-1] o.s.b.w.s.FilterRegistrationBean:258 Mapping filter: 'hiddenHttpMethodFilter' to: [/*] +2018-04-22 20:35:53,348 [INFO] [localhost-startStop-1] o.s.b.w.s.FilterRegistrationBean:258 Mapping filter: 'httpPutFormContentFilter' to: [/*] +2018-04-22 20:35:53,348 [INFO] [localhost-startStop-1] o.s.b.w.s.FilterRegistrationBean:258 Mapping filter: 'requestContextFilter' to: [/*] +2018-04-22 20:35:53,348 [INFO] [localhost-startStop-1] o.s.b.w.s.FilterRegistrationBean:271 Mapping filter: 'webStatFilter' to urls: [/*] +2018-04-22 20:35:53,348 [INFO] [localhost-startStop-1] o.s.b.w.s.FilterRegistrationBean:227 Filter webStatFilter was not registered (possibly already registered?) +2018-04-22 20:35:53,432 [INFO] [main] c.a.d.s.b.a.DruidDataSourceAutoConfigure:56 Init DruidDataSource +2018-04-22 20:35:54,270 [DEBUG] [main] d.s.Connection:? {conn-10001} connected +2018-04-22 20:35:54,274 [DEBUG] [main] d.s.Connection:? {conn-10002} connected +2018-04-22 20:35:54,278 [DEBUG] [main] d.s.Connection:? {conn-10003} connected +2018-04-22 20:35:54,281 [DEBUG] [main] d.s.Connection:? {conn-10004} connected +2018-04-22 20:35:54,284 [DEBUG] [main] d.s.Connection:? {conn-10005} connected +2018-04-22 20:35:54,287 [INFO] [main] c.a.d.p.DruidDataSource:928 {dataSource-1} inited +2018-04-22 20:35:54,683 [INFO] [main] o.s.w.s.m.m.a.RequestMappingHandlerAdapter:534 Looking for @ControllerAdvice: org.springframework.boot.context.embedded.AnnotationConfigEmbeddedWebApplicationContext@4b520ea8: startup date [Sun Apr 22 20:35:51 CST 2018]; root of context hierarchy +2018-04-22 20:35:54,743 [INFO] [main] o.s.w.s.m.m.a.RequestMappingHandlerMapping:543 Mapped "{[/query/{id}],methods=[GET]}" onto public org.laidu.learn.mybatis.model.AppUser org.laidu.learn.mybatis.controller.UserInfoController.queryById(java.lang.Long) +2018-04-22 20:35:54,748 [INFO] [main] o.s.w.s.m.m.a.RequestMappingHandlerMapping:543 Mapped "{[/error],produces=[text/html]}" onto public org.springframework.web.servlet.ModelAndView org.springframework.boot.autoconfigure.web.BasicErrorController.errorHtml(javax.servlet.http.HttpServletRequest,javax.servlet.http.HttpServletResponse) +2018-04-22 20:35:54,749 [INFO] [main] o.s.w.s.m.m.a.RequestMappingHandlerMapping:543 Mapped "{[/error]}" onto public org.springframework.http.ResponseEntity> org.springframework.boot.autoconfigure.web.BasicErrorController.error(javax.servlet.http.HttpServletRequest) +2018-04-22 20:35:54,780 [INFO] [main] o.s.w.s.h.SimpleUrlHandlerMapping:362 Mapped URL path [/webjars/**] onto handler of type [class org.springframework.web.servlet.resource.ResourceHttpRequestHandler] +2018-04-22 20:35:54,781 [INFO] [main] o.s.w.s.h.SimpleUrlHandlerMapping:362 Mapped URL path [/**] onto handler of type [class org.springframework.web.servlet.resource.ResourceHttpRequestHandler] +2018-04-22 20:35:54,820 [INFO] [main] o.s.w.s.h.SimpleUrlHandlerMapping:362 Mapped URL path [/**/favicon.ico] onto handler of type [class org.springframework.web.servlet.resource.ResourceHttpRequestHandler] +2018-04-22 20:35:55,229 [INFO] [main] o.s.j.e.a.AnnotationMBeanExporter:431 Registering beans for JMX exposure on startup +2018-04-22 20:35:55,230 [INFO] [main] o.s.j.e.a.AnnotationMBeanExporter:916 Bean with name 'logFilter' has been autodetected for JMX exposure +2018-04-22 20:35:55,231 [INFO] [main] o.s.j.e.a.AnnotationMBeanExporter:916 Bean with name 'statFilter' has been autodetected for JMX exposure +2018-04-22 20:35:55,231 [INFO] [main] o.s.j.e.a.AnnotationMBeanExporter:916 Bean with name 'dataSource' has been autodetected for JMX exposure +2018-04-22 20:35:55,235 [INFO] [main] o.s.j.e.a.AnnotationMBeanExporter:671 Located MBean 'logFilter': registering with JMX server as MBean [com.alibaba.druid.filter.logging:name=logFilter,type=Slf4jLogFilter] +2018-04-22 20:35:55,237 [INFO] [main] o.s.j.e.a.AnnotationMBeanExporter:671 Located MBean 'dataSource': registering with JMX server as MBean [com.alibaba.druid.spring.boot.autoconfigure:name=dataSource,type=DruidDataSourceWrapper] +2018-04-22 20:35:55,237 [INFO] [main] o.s.j.e.a.AnnotationMBeanExporter:671 Located MBean 'statFilter': registering with JMX server as MBean [com.alibaba.druid.filter.stat:name=statFilter,type=StatFilter] +2018-04-22 20:35:55,251 [INFO] [main] o.a.c.h.Http11NioProtocol:179 Initializing ProtocolHandler ["http-nio-8080"] +2018-04-22 20:35:55,262 [INFO] [main] o.a.c.h.Http11NioProtocol:179 Starting ProtocolHandler ["http-nio-8080"] +2018-04-22 20:35:55,267 [INFO] [main] o.a.t.u.n.NioSelectorPool:179 Using a shared selector for servlet write/read +2018-04-22 20:35:55,287 [INFO] [main] o.s.b.c.e.t.TomcatEmbeddedServletContainer:201 Tomcat started on port(s): 8080 (http) +2018-04-22 20:35:55,291 [INFO] [main] o.l.l.m.Application:57 Started Application in 4.116 seconds (JVM running for 4.636) +2018-04-22 20:36:00,172 [INFO] [http-nio-8080-exec-1] o.a.c.c.C.[.[.[/]:179 Initializing Spring FrameworkServlet 'dispatcherServlet' +2018-04-22 20:36:00,172 [INFO] [http-nio-8080-exec-1] o.s.w.s.DispatcherServlet:489 FrameworkServlet 'dispatcherServlet': initialization started +2018-04-22 20:36:00,189 [INFO] [http-nio-8080-exec-1] o.s.w.s.DispatcherServlet:508 FrameworkServlet 'dispatcherServlet': initialization completed in 17 ms +2018-04-22 20:36:00,233 [DEBUG] [http-nio-8080-exec-1] d.s.Connection:? {conn-10005} pool-connect +2018-04-22 20:36:00,342 [DEBUG] [http-nio-8080-exec-1] d.sql.Statement:? {conn-10005, pstmt-20000} created. select id, open_id, register_channel, username, id_card, name, id_card_detail_address, is_verify_id_card, id_card_coverup, id_card_coverdown, id_card_hold, is_other_picture_auth, is_bankcard_auth, signature_pic, is_additional_auth, is_emergency_auth, phone, email, address, user_status, create_time, update_time, remark, id_card_police from ca_app_user where id = ? +2018-04-22 20:36:00,348 [DEBUG] [http-nio-8080-exec-1] d.sql.Statement:? {conn-10005, pstmt-20000} Parameters : [6] +2018-04-22 20:36:00,348 [DEBUG] [http-nio-8080-exec-1] d.sql.Statement:? {conn-10005, pstmt-20000} Types : [BIGINT] +2018-04-22 20:36:00,369 [DEBUG] [http-nio-8080-exec-1] d.sql.Statement:? {conn-10005, pstmt-20000} executed. select id, open_id, register_channel, username, id_card + , name, id_card_detail_address, is_verify_id_card, id_card_coverup, id_card_coverdown + , id_card_hold, is_other_picture_auth, is_bankcard_auth, signature_pic, is_additional_auth + , is_emergency_auth, phone, email, address, user_status + , create_time, update_time, remark, id_card_police +from ca_app_user +where id = 6 +2018-04-22 20:36:00,369 [DEBUG] [http-nio-8080-exec-1] d.sql.Statement:? {conn-10005, pstmt-20000} executed. 22.038192 millis. select id, open_id, register_channel, username, id_card, name, id_card_detail_address, is_verify_id_card, id_card_coverup, id_card_coverdown, id_card_hold, is_other_picture_auth, is_bankcard_auth, signature_pic, is_additional_auth, is_emergency_auth, phone, email, address, user_status, create_time, update_time, remark, id_card_police from ca_app_user where id = ? +2018-04-22 20:36:00,369 [DEBUG] [http-nio-8080-exec-1] d.sql.Statement:? {conn-10005, pstmt-20000} executed. select id, open_id, register_channel, username, id_card + , name, id_card_detail_address, is_verify_id_card, id_card_coverup, id_card_coverdown + , id_card_hold, is_other_picture_auth, is_bankcard_auth, signature_pic, is_additional_auth + , is_emergency_auth, phone, email, address, user_status + , create_time, update_time, remark, id_card_police +from ca_app_user +where id = 6 +2018-04-22 20:36:00,369 [DEBUG] [http-nio-8080-exec-1] d.sql.Statement:? {conn-10005, pstmt-20000} executed. 22.098017 millis. select id, open_id, register_channel, username, id_card, name, id_card_detail_address, is_verify_id_card, id_card_coverup, id_card_coverdown, id_card_hold, is_other_picture_auth, is_bankcard_auth, signature_pic, is_additional_auth, is_emergency_auth, phone, email, address, user_status, create_time, update_time, remark, id_card_police from ca_app_user where id = ? +2018-04-22 20:36:00,383 [DEBUG] [http-nio-8080-exec-1] d.sql.Statement:? {conn-10005, pstmt-20000} clearParameters. +2018-04-22 20:36:00,383 [DEBUG] [http-nio-8080-exec-1] d.s.Connection:? {conn-10005} pool-recycle +2018-04-22 20:36:14,739 [INFO] [Thread-4] o.s.b.c.e.AnnotationConfigEmbeddedWebApplicationContext:984 Closing org.springframework.boot.context.embedded.AnnotationConfigEmbeddedWebApplicationContext@4b520ea8: startup date [Sun Apr 22 20:35:51 CST 2018]; root of context hierarchy +2018-04-22 20:36:14,741 [INFO] [Thread-4] o.s.j.e.a.AnnotationMBeanExporter:449 Unregistering JMX-exposed beans on shutdown +2018-04-22 20:36:14,741 [INFO] [Thread-4] o.s.j.e.a.AnnotationMBeanExporter:241 Unregistering JMX-exposed beans +2018-04-22 20:36:14,743 [DEBUG] [Thread-4] d.s.Connection:? {conn-10001} closed +2018-04-22 20:36:14,743 [DEBUG] [Thread-4] d.s.Connection:? {conn-10002} closed +2018-04-22 20:36:14,744 [DEBUG] [Thread-4] d.s.Connection:? {conn-10003} closed +2018-04-22 20:36:14,744 [DEBUG] [Thread-4] d.s.Connection:? {conn-10004} closed +2018-04-22 20:36:14,744 [DEBUG] [Thread-4] d.sql.Statement:? {conn-10005, pstmt-20000} closed +2018-04-22 20:36:14,744 [DEBUG] [Thread-4] d.s.Connection:? {conn-10005} closed +2018-04-22 20:36:14,745 [INFO] [Thread-4] c.a.d.p.DruidDataSource:1823 {dataSource-1} closed diff --git a/LOG_PATH_IS_UNDEFINED/myAppName_IS_UNDEFINED-druid.log.2018-04-23 b/LOG_PATH_IS_UNDEFINED/myAppName_IS_UNDEFINED-druid.log.2018-04-23 new file mode 100644 index 000000000..218f1a591 --- /dev/null +++ b/LOG_PATH_IS_UNDEFINED/myAppName_IS_UNDEFINED-druid.log.2018-04-23 @@ -0,0 +1,126 @@ +2018-04-23 11:58:40,329 [INFO] [main] o.l.l.m.Application:48 Starting Application on laidu-pc with PID 11140 (/home/laidu/IdeaProjects/java-learn/framework/spring/spring-data/spring-mybatis/target/classes started by laidu in /home/laidu/IdeaProjects/java-learn) +2018-04-23 11:58:40,334 [INFO] [main] o.l.l.m.Application:593 No active profile set, falling back to default profiles: default +2018-04-23 11:58:40,421 [INFO] [main] o.s.b.c.e.AnnotationConfigEmbeddedWebApplicationContext:583 Refreshing org.springframework.boot.context.embedded.AnnotationConfigEmbeddedWebApplicationContext@4b520ea8: startup date [Mon Apr 23 11:58:40 CST 2018]; root of context hierarchy +2018-04-23 11:58:40,844 [INFO] [background-preinit] o.h.v.i.u.Version:30 HV000001: Hibernate Validator 5.3.6.Final +2018-04-23 11:58:41,453 [INFO] [main] o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker:327 Bean 'org.springframework.ws.config.annotation.DelegatingWsConfiguration' of type [org.springframework.ws.config.annotation.DelegatingWsConfiguration$$EnhancerBySpringCGLIB$$1e8c2f1d] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying) +2018-04-23 11:58:41,493 [INFO] [main] o.s.w.s.a.s.AnnotationActionEndpointMapping:236 Supporting [WS-Addressing August 2004, WS-Addressing 1.0] +2018-04-23 11:58:41,894 [INFO] [main] o.s.b.c.e.t.TomcatEmbeddedServletContainer:89 Tomcat initialized with port(s): 8080 (http) +2018-04-23 11:58:41,906 [INFO] [main] o.a.c.c.StandardService:179 Starting service [Tomcat] +2018-04-23 11:58:41,907 [INFO] [main] o.a.c.c.StandardEngine:179 Starting Servlet Engine: Apache Tomcat/8.5.23 +2018-04-23 11:58:42,008 [INFO] [localhost-startStop-1] o.a.c.c.C.[.[.[/]:179 Initializing Spring embedded WebApplicationContext +2018-04-23 11:58:42,008 [INFO] [localhost-startStop-1] o.s.w.c.ContextLoader:276 Root WebApplicationContext: initialization completed in 1587 ms +2018-04-23 11:58:42,022 [INFO] [localhost-startStop-1] o.l.l.m.c.DruidConfig:47 init Druid Servlet Configuration +2018-04-23 11:58:42,222 [INFO] [localhost-startStop-1] o.s.b.w.s.ServletRegistrationBean:190 Mapping servlet: 'statViewServlet' to [/druid/*] +2018-04-23 11:58:42,224 [INFO] [localhost-startStop-1] o.s.b.w.s.ServletRegistrationBean:190 Mapping servlet: 'dispatcherServlet' to [/] +2018-04-23 11:58:42,224 [INFO] [localhost-startStop-1] o.s.b.w.s.ServletRegistrationBean:190 Mapping servlet: 'statViewServlet' to [/druid/*] +2018-04-23 11:58:42,224 [INFO] [localhost-startStop-1] o.s.b.w.s.ServletRegistrationBean:193 Servlet statViewServlet was not registered (possibly already registered?) +2018-04-23 11:58:42,224 [INFO] [localhost-startStop-1] o.s.b.w.s.ServletRegistrationBean:190 Mapping servlet: 'messageDispatcherServlet' to [/services/*] +2018-04-23 11:58:42,227 [INFO] [localhost-startStop-1] o.s.b.w.s.FilterRegistrationBean:258 Mapping filter: 'characterEncodingFilter' to: [/*] +2018-04-23 11:58:42,228 [INFO] [localhost-startStop-1] o.s.b.w.s.FilterRegistrationBean:258 Mapping filter: 'hiddenHttpMethodFilter' to: [/*] +2018-04-23 11:58:42,228 [INFO] [localhost-startStop-1] o.s.b.w.s.FilterRegistrationBean:258 Mapping filter: 'httpPutFormContentFilter' to: [/*] +2018-04-23 11:58:42,228 [INFO] [localhost-startStop-1] o.s.b.w.s.FilterRegistrationBean:258 Mapping filter: 'requestContextFilter' to: [/*] +2018-04-23 11:58:42,228 [INFO] [localhost-startStop-1] o.s.b.w.s.FilterRegistrationBean:271 Mapping filter: 'webStatFilter' to urls: [/*] +2018-04-23 11:58:42,228 [INFO] [localhost-startStop-1] o.s.b.w.s.FilterRegistrationBean:227 Filter webStatFilter was not registered (possibly already registered?) +2018-04-23 11:58:42,314 [INFO] [main] c.a.d.s.b.a.DruidDataSourceAutoConfigure:56 Init DruidDataSource +2018-04-23 11:58:43,282 [DEBUG] [main] d.s.Connection:? {conn-10001} connected +2018-04-23 11:58:43,290 [DEBUG] [main] d.s.Connection:? {conn-10002} connected +2018-04-23 11:58:43,377 [DEBUG] [main] d.s.Connection:? {conn-10003} connected +2018-04-23 11:58:43,383 [DEBUG] [main] d.s.Connection:? {conn-10004} connected +2018-04-23 11:58:43,388 [DEBUG] [main] d.s.Connection:? {conn-10005} connected +2018-04-23 11:58:43,393 [INFO] [main] c.a.d.p.DruidDataSource:928 {dataSource-1} inited +2018-04-23 11:58:43,779 [INFO] [main] o.s.w.s.m.m.a.RequestMappingHandlerAdapter:534 Looking for @ControllerAdvice: org.springframework.boot.context.embedded.AnnotationConfigEmbeddedWebApplicationContext@4b520ea8: startup date [Mon Apr 23 11:58:40 CST 2018]; root of context hierarchy +2018-04-23 11:58:43,853 [INFO] [main] o.s.w.s.m.m.a.RequestMappingHandlerMapping:543 Mapped "{[/query/{id}],methods=[GET]}" onto public org.laidu.learn.mybatis.model.AppUser org.laidu.learn.mybatis.controller.UserInfoController.queryById(java.lang.Long) +2018-04-23 11:58:43,858 [INFO] [main] o.s.w.s.m.m.a.RequestMappingHandlerMapping:543 Mapped "{[/error],produces=[text/html]}" onto public org.springframework.web.servlet.ModelAndView org.springframework.boot.autoconfigure.web.BasicErrorController.errorHtml(javax.servlet.http.HttpServletRequest,javax.servlet.http.HttpServletResponse) +2018-04-23 11:58:43,858 [INFO] [main] o.s.w.s.m.m.a.RequestMappingHandlerMapping:543 Mapped "{[/error]}" onto public org.springframework.http.ResponseEntity> org.springframework.boot.autoconfigure.web.BasicErrorController.error(javax.servlet.http.HttpServletRequest) +2018-04-23 11:58:43,903 [INFO] [main] o.s.w.s.h.SimpleUrlHandlerMapping:362 Mapped URL path [/webjars/**] onto handler of type [class org.springframework.web.servlet.resource.ResourceHttpRequestHandler] +2018-04-23 11:58:43,904 [INFO] [main] o.s.w.s.h.SimpleUrlHandlerMapping:362 Mapped URL path [/**] onto handler of type [class org.springframework.web.servlet.resource.ResourceHttpRequestHandler] +2018-04-23 11:58:43,959 [INFO] [main] o.s.w.s.h.SimpleUrlHandlerMapping:362 Mapped URL path [/**/favicon.ico] onto handler of type [class org.springframework.web.servlet.resource.ResourceHttpRequestHandler] +2018-04-23 11:58:44,441 [INFO] [main] o.s.j.e.a.AnnotationMBeanExporter:431 Registering beans for JMX exposure on startup +2018-04-23 11:58:44,445 [INFO] [main] o.s.j.e.a.AnnotationMBeanExporter:916 Bean with name 'logFilter' has been autodetected for JMX exposure +2018-04-23 11:58:44,446 [INFO] [main] o.s.j.e.a.AnnotationMBeanExporter:916 Bean with name 'statFilter' has been autodetected for JMX exposure +2018-04-23 11:58:44,446 [INFO] [main] o.s.j.e.a.AnnotationMBeanExporter:916 Bean with name 'dataSource' has been autodetected for JMX exposure +2018-04-23 11:58:44,450 [INFO] [main] o.s.j.e.a.AnnotationMBeanExporter:671 Located MBean 'logFilter': registering with JMX server as MBean [com.alibaba.druid.filter.logging:name=logFilter,type=Slf4jLogFilter] +2018-04-23 11:58:44,451 [INFO] [main] o.s.j.e.a.AnnotationMBeanExporter:671 Located MBean 'dataSource': registering with JMX server as MBean [com.alibaba.druid.spring.boot.autoconfigure:name=dataSource,type=DruidDataSourceWrapper] +2018-04-23 11:58:44,451 [INFO] [main] o.s.j.e.a.AnnotationMBeanExporter:671 Located MBean 'statFilter': registering with JMX server as MBean [com.alibaba.druid.filter.stat:name=statFilter,type=StatFilter] +2018-04-23 11:58:44,464 [INFO] [main] o.a.c.h.Http11NioProtocol:179 Initializing ProtocolHandler ["http-nio-8080"] +2018-04-23 11:58:44,475 [INFO] [main] o.a.c.h.Http11NioProtocol:179 Starting ProtocolHandler ["http-nio-8080"] +2018-04-23 11:58:44,480 [INFO] [main] o.a.t.u.n.NioSelectorPool:179 Using a shared selector for servlet write/read +2018-04-23 11:58:44,496 [INFO] [main] o.s.b.c.e.t.TomcatEmbeddedServletContainer:201 Tomcat started on port(s): 8080 (http) +2018-04-23 11:58:44,500 [INFO] [main] o.l.l.m.Application:57 Started Application in 4.793 seconds (JVM running for 5.916) +2018-04-23 11:59:31,196 [INFO] [http-nio-8080-exec-10] o.a.c.c.C.[.[.[/]:179 Initializing Spring FrameworkServlet 'dispatcherServlet' +2018-04-23 11:59:31,196 [INFO] [http-nio-8080-exec-10] o.s.w.s.DispatcherServlet:489 FrameworkServlet 'dispatcherServlet': initialization started +2018-04-23 11:59:31,214 [INFO] [http-nio-8080-exec-10] o.s.w.s.DispatcherServlet:508 FrameworkServlet 'dispatcherServlet': initialization completed in 18 ms +2018-04-23 12:00:11,624 [DEBUG] [http-nio-8080-exec-7] d.s.Connection:? {conn-10005} pool-connect +2018-04-23 12:00:11,737 [DEBUG] [http-nio-8080-exec-7] d.sql.Statement:? {conn-10005, pstmt-20000} created. select id, open_id, register_channel, username, id_card, name, id_card_detail_address, is_verify_id_card, id_card_coverup, id_card_coverdown, id_card_hold, is_other_picture_auth, is_bankcard_auth, signature_pic, is_additional_auth, is_emergency_auth, phone, email, address, user_status, create_time, update_time, remark, id_card_police from ca_app_user where id = ? +2018-04-23 12:00:11,741 [DEBUG] [http-nio-8080-exec-7] d.sql.Statement:? {conn-10005, pstmt-20000} Parameters : [1] +2018-04-23 12:00:11,741 [DEBUG] [http-nio-8080-exec-7] d.sql.Statement:? {conn-10005, pstmt-20000} Types : [BIGINT] +2018-04-23 12:00:11,810 [DEBUG] [http-nio-8080-exec-7] d.sql.Statement:? {conn-10005, pstmt-20000} executed. select id, open_id, register_channel, username, id_card + , name, id_card_detail_address, is_verify_id_card, id_card_coverup, id_card_coverdown + , id_card_hold, is_other_picture_auth, is_bankcard_auth, signature_pic, is_additional_auth + , is_emergency_auth, phone, email, address, user_status + , create_time, update_time, remark, id_card_police +from ca_app_user +where id = 1 +2018-04-23 12:00:11,810 [DEBUG] [http-nio-8080-exec-7] d.sql.Statement:? {conn-10005, pstmt-20000} executed. 70.763978 millis. select id, open_id, register_channel, username, id_card, name, id_card_detail_address, is_verify_id_card, id_card_coverup, id_card_coverdown, id_card_hold, is_other_picture_auth, is_bankcard_auth, signature_pic, is_additional_auth, is_emergency_auth, phone, email, address, user_status, create_time, update_time, remark, id_card_police from ca_app_user where id = ? +2018-04-23 12:00:11,811 [DEBUG] [http-nio-8080-exec-7] d.sql.Statement:? {conn-10005, pstmt-20000} executed. select id, open_id, register_channel, username, id_card + , name, id_card_detail_address, is_verify_id_card, id_card_coverup, id_card_coverdown + , id_card_hold, is_other_picture_auth, is_bankcard_auth, signature_pic, is_additional_auth + , is_emergency_auth, phone, email, address, user_status + , create_time, update_time, remark, id_card_police +from ca_app_user +where id = 1 +2018-04-23 12:00:11,811 [DEBUG] [http-nio-8080-exec-7] d.sql.Statement:? {conn-10005, pstmt-20000} executed. 70.831333 millis. select id, open_id, register_channel, username, id_card, name, id_card_detail_address, is_verify_id_card, id_card_coverup, id_card_coverdown, id_card_hold, is_other_picture_auth, is_bankcard_auth, signature_pic, is_additional_auth, is_emergency_auth, phone, email, address, user_status, create_time, update_time, remark, id_card_police from ca_app_user where id = ? +2018-04-23 12:00:11,827 [DEBUG] [http-nio-8080-exec-7] d.sql.Statement:? {conn-10005, pstmt-20000} clearParameters. +2018-04-23 12:00:11,828 [DEBUG] [http-nio-8080-exec-7] d.s.Connection:? {conn-10005} pool-recycle +2018-04-23 12:00:15,165 [DEBUG] [http-nio-8080-exec-5] d.s.Connection:? {conn-10005} pool-connect +2018-04-23 12:00:15,166 [DEBUG] [http-nio-8080-exec-5] d.sql.Statement:? {conn-10005, pstmt-20000} Parameters : [6] +2018-04-23 12:00:15,166 [DEBUG] [http-nio-8080-exec-5] d.sql.Statement:? {conn-10005, pstmt-20000} Types : [BIGINT] +2018-04-23 12:00:15,167 [DEBUG] [http-nio-8080-exec-5] d.sql.Statement:? {conn-10005, pstmt-20000} executed. select id, open_id, register_channel, username, id_card + , name, id_card_detail_address, is_verify_id_card, id_card_coverup, id_card_coverdown + , id_card_hold, is_other_picture_auth, is_bankcard_auth, signature_pic, is_additional_auth + , is_emergency_auth, phone, email, address, user_status + , create_time, update_time, remark, id_card_police +from ca_app_user +where id = 6 +2018-04-23 12:00:15,167 [DEBUG] [http-nio-8080-exec-5] d.sql.Statement:? {conn-10005, pstmt-20000} executed. 1.762966 millis. select id, open_id, register_channel, username, id_card, name, id_card_detail_address, is_verify_id_card, id_card_coverup, id_card_coverdown, id_card_hold, is_other_picture_auth, is_bankcard_auth, signature_pic, is_additional_auth, is_emergency_auth, phone, email, address, user_status, create_time, update_time, remark, id_card_police from ca_app_user where id = ? +2018-04-23 12:00:15,168 [DEBUG] [http-nio-8080-exec-5] d.sql.Statement:? {conn-10005, pstmt-20000} executed. select id, open_id, register_channel, username, id_card + , name, id_card_detail_address, is_verify_id_card, id_card_coverup, id_card_coverdown + , id_card_hold, is_other_picture_auth, is_bankcard_auth, signature_pic, is_additional_auth + , is_emergency_auth, phone, email, address, user_status + , create_time, update_time, remark, id_card_police +from ca_app_user +where id = 6 +2018-04-23 12:00:15,168 [DEBUG] [http-nio-8080-exec-5] d.sql.Statement:? {conn-10005, pstmt-20000} executed. 1.807629 millis. select id, open_id, register_channel, username, id_card, name, id_card_detail_address, is_verify_id_card, id_card_coverup, id_card_coverdown, id_card_hold, is_other_picture_auth, is_bankcard_auth, signature_pic, is_additional_auth, is_emergency_auth, phone, email, address, user_status, create_time, update_time, remark, id_card_police from ca_app_user where id = ? +2018-04-23 12:00:15,170 [DEBUG] [http-nio-8080-exec-5] d.sql.Statement:? {conn-10005, pstmt-20000} clearParameters. +2018-04-23 12:00:15,170 [DEBUG] [http-nio-8080-exec-5] d.s.Connection:? {conn-10005} pool-recycle +2018-04-23 12:01:25,453 [DEBUG] [http-nio-8080-exec-10] d.s.Connection:? {conn-10005} pool-connect +2018-04-23 12:01:25,453 [DEBUG] [http-nio-8080-exec-10] d.sql.Statement:? {conn-10005, pstmt-20000} Parameters : [88] +2018-04-23 12:01:25,453 [DEBUG] [http-nio-8080-exec-10] d.sql.Statement:? {conn-10005, pstmt-20000} Types : [BIGINT] +2018-04-23 12:01:25,477 [DEBUG] [http-nio-8080-exec-10] d.sql.Statement:? {conn-10005, pstmt-20000} executed. select id, open_id, register_channel, username, id_card + , name, id_card_detail_address, is_verify_id_card, id_card_coverup, id_card_coverdown + , id_card_hold, is_other_picture_auth, is_bankcard_auth, signature_pic, is_additional_auth + , is_emergency_auth, phone, email, address, user_status + , create_time, update_time, remark, id_card_police +from ca_app_user +where id = 88 +2018-04-23 12:01:25,477 [DEBUG] [http-nio-8080-exec-10] d.sql.Statement:? {conn-10005, pstmt-20000} executed. 24.004966 millis. select id, open_id, register_channel, username, id_card, name, id_card_detail_address, is_verify_id_card, id_card_coverup, id_card_coverdown, id_card_hold, is_other_picture_auth, is_bankcard_auth, signature_pic, is_additional_auth, is_emergency_auth, phone, email, address, user_status, create_time, update_time, remark, id_card_police from ca_app_user where id = ? +2018-04-23 12:01:25,477 [DEBUG] [http-nio-8080-exec-10] d.sql.Statement:? {conn-10005, pstmt-20000} executed. select id, open_id, register_channel, username, id_card + , name, id_card_detail_address, is_verify_id_card, id_card_coverup, id_card_coverdown + , id_card_hold, is_other_picture_auth, is_bankcard_auth, signature_pic, is_additional_auth + , is_emergency_auth, phone, email, address, user_status + , create_time, update_time, remark, id_card_police +from ca_app_user +where id = 88 +2018-04-23 12:01:25,477 [DEBUG] [http-nio-8080-exec-10] d.sql.Statement:? {conn-10005, pstmt-20000} executed. 24.032488 millis. select id, open_id, register_channel, username, id_card, name, id_card_detail_address, is_verify_id_card, id_card_coverup, id_card_coverdown, id_card_hold, is_other_picture_auth, is_bankcard_auth, signature_pic, is_additional_auth, is_emergency_auth, phone, email, address, user_status, create_time, update_time, remark, id_card_police from ca_app_user where id = ? +2018-04-23 12:01:25,478 [DEBUG] [http-nio-8080-exec-10] d.sql.Statement:? {conn-10005, pstmt-20000} clearParameters. +2018-04-23 12:01:25,478 [DEBUG] [http-nio-8080-exec-10] d.s.Connection:? {conn-10005} pool-recycle +2018-04-23 12:03:24,050 [INFO] [Thread-4] o.s.b.c.e.AnnotationConfigEmbeddedWebApplicationContext:984 Closing org.springframework.boot.context.embedded.AnnotationConfigEmbeddedWebApplicationContext@4b520ea8: startup date [Mon Apr 23 11:58:40 CST 2018]; root of context hierarchy +2018-04-23 12:03:24,052 [INFO] [Thread-4] o.s.j.e.a.AnnotationMBeanExporter:449 Unregistering JMX-exposed beans on shutdown +2018-04-23 12:03:24,052 [INFO] [Thread-4] o.s.j.e.a.AnnotationMBeanExporter:241 Unregistering JMX-exposed beans +2018-04-23 12:03:24,055 [DEBUG] [Thread-4] d.s.Connection:? {conn-10001} closed +2018-04-23 12:03:24,055 [DEBUG] [Thread-4] d.s.Connection:? {conn-10002} closed +2018-04-23 12:03:24,056 [DEBUG] [Thread-4] d.s.Connection:? {conn-10003} closed +2018-04-23 12:03:24,056 [DEBUG] [Thread-4] d.s.Connection:? {conn-10004} closed +2018-04-23 12:03:24,056 [DEBUG] [Thread-4] d.sql.Statement:? {conn-10005, pstmt-20000} closed +2018-04-23 12:03:24,056 [DEBUG] [Thread-4] d.s.Connection:? {conn-10005} closed +2018-04-23 12:03:24,057 [INFO] [Thread-4] c.a.d.p.DruidDataSource:1823 {dataSource-1} closed diff --git a/data-structure/src/main/java/org/laidu/learn/date/structure/tree/basic/ListAllFiles.java b/data-structure/src/main/java/org/laidu/learn/date/structure/tree/basic/ListAllFiles.java index 0af12ac98..5dd6449be 100644 --- a/data-structure/src/main/java/org/laidu/learn/date/structure/tree/basic/ListAllFiles.java +++ b/data-structure/src/main/java/org/laidu/learn/date/structure/tree/basic/ListAllFiles.java @@ -28,7 +28,7 @@ public static void printFile(File file){ public static void main(String[] args) { - File file = new File("/home/laidu/Videos"); + File file = new File("~/Videos"); printFile(file); } diff --git a/framework/spring/spring-data/pom.xml b/framework/spring/spring-data/pom.xml index cc6556e37..6778b9f14 100644 --- a/framework/spring/spring-data/pom.xml +++ b/framework/spring/spring-data/pom.xml @@ -10,12 +10,78 @@ 4.0.0 spring-data + pom + + spring-mybatis + - - + + 1.1.9 + 1.3.2 + 5.1.46 + + + + - + + + mysql + mysql-connector-java + runtime + ${mysql-connect.version} + + + com.alibaba + druid-spring-boot-starter + ${druid.version} + + + org.mybatis.spring.boot + mybatis-spring-boot-starter + ${mybatis.version} + - + + + + + + org.springframework.boot + spring-boot-starter + + + + org.springframework.boot + spring-boot-starter-web-services + + + + + + + org.mybatis.generator + mybatis-generator-maven-plugin + 1.3.5 + + + Generate MyBatis Artifacts + + generate + + + + + + mysql + mysql-connector-java + ${mysql-connect.version} + + + + + + + \ No newline at end of file diff --git a/framework/spring/spring-data/spring-mybatis/pom.xml b/framework/spring/spring-data/spring-mybatis/pom.xml new file mode 100644 index 000000000..a5aba23c3 --- /dev/null +++ b/framework/spring/spring-data/spring-mybatis/pom.xml @@ -0,0 +1,42 @@ + + + + spring-data + org.laidu.learn + 1.0-SNAPSHOT + + 4.0.0 + + spring-mybatis + + + + + + mysql + mysql-connector-java + runtime + + + com.alibaba + druid-spring-boot-starter + + + org.mybatis.spring.boot + mybatis-spring-boot-starter + + + + + + + + org.mybatis.generator + mybatis-generator-maven-plugin + + + + + \ No newline at end of file diff --git a/framework/spring/spring-data/spring-mybatis/src/main/java/org/laidu/learn/mybatis/Application.java b/framework/spring/spring-data/spring-mybatis/src/main/java/org/laidu/learn/mybatis/Application.java new file mode 100644 index 000000000..a48c519eb --- /dev/null +++ b/framework/spring/spring-data/spring-mybatis/src/main/java/org/laidu/learn/mybatis/Application.java @@ -0,0 +1,21 @@ +package org.laidu.learn.mybatis; + +import org.mybatis.spring.annotation.MapperScan; +import org.springframework.boot.SpringApplication; +import org.springframework.boot.autoconfigure.SpringBootApplication; +import org.springframework.context.annotation.PropertySource; + +/** + * org.laidu.learn.amqp.Application + *

+ * Created by tiancai.zang on 2017-11-28 16:35. + */ +@MapperScan("org.laidu.learn.mybatis.mapper") +@SpringBootApplication +public class Application { + + public static void main(String[] args){ + SpringApplication.run(Application.class); + } + +} \ No newline at end of file diff --git a/framework/spring/spring-data/spring-mybatis/src/main/java/org/laidu/learn/mybatis/config/DruidConfig.java b/framework/spring/spring-data/spring-mybatis/src/main/java/org/laidu/learn/mybatis/config/DruidConfig.java new file mode 100644 index 000000000..07275b34a --- /dev/null +++ b/framework/spring/spring-data/spring-mybatis/src/main/java/org/laidu/learn/mybatis/config/DruidConfig.java @@ -0,0 +1,70 @@ +package org.laidu.learn.mybatis.config; + +import com.alibaba.druid.filter.logging.Slf4jLogFilter; +import com.alibaba.druid.spring.boot.autoconfigure.DruidDataSourceBuilder; +import com.alibaba.druid.support.http.StatViewServlet; +import com.alibaba.druid.support.http.WebStatFilter; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean; +import org.springframework.boot.context.properties.ConfigurationProperties; +import org.springframework.boot.web.servlet.FilterRegistrationBean; +import org.springframework.boot.web.servlet.ServletRegistrationBean; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; +import org.springframework.context.annotation.Primary; +import org.springframework.core.env.Environment; + +import javax.sql.DataSource; +import java.util.HashMap; +import java.util.Map; + +/** + * durid config + *

+ * Created by tiancai.zang + * on 2018-04-22 16:22. + */ +@Slf4j +@Configuration +public class DruidConfig { + + @Bean + public Slf4jLogFilter logFilter(){ + Slf4jLogFilter filter = new Slf4jLogFilter(); + filter.setResultSetLogEnabled(false); + filter.setConnectionLogEnabled(false); + filter.setStatementParameterClearLogEnable(false); + filter.setStatementCreateAfterLogEnabled(false); + filter.setStatementCloseAfterLogEnabled(false); + filter.setStatementParameterSetLogEnabled(false); + filter.setStatementPrepareAfterLogEnabled(false); + return filter; + } + + @Bean + public ServletRegistrationBean druidServlet() { + log.info("init Druid Servlet Configuration "); + ServletRegistrationBean servletRegistrationBean = new ServletRegistrationBean(); + servletRegistrationBean.setServlet(new StatViewServlet()); + servletRegistrationBean.addUrlMappings("/druid/*"); + Map initParameters = new HashMap(); +// initParameters.put("loginUsername", "admin");// 用户名 +// initParameters.put("loginPassword", "admin");// 密码 + initParameters.put("resetEnable", "false");// 禁用HTML页面上的“Reset All”功能 + initParameters.put("allow", ""); // IP白名单 (没有配置或者为空,则允许所有访问) + //initParameters.put("deny", "192.168.20.38");// IP黑名单 (存在共同时,deny优先于allow) + servletRegistrationBean.setInitParameters(initParameters); + return servletRegistrationBean; + } + + @Bean + public FilterRegistrationBean filterRegistrationBean() { + FilterRegistrationBean filterRegistrationBean = new FilterRegistrationBean(); + filterRegistrationBean.setFilter(new WebStatFilter()); + filterRegistrationBean.addUrlPatterns("/*"); + filterRegistrationBean.addInitParameter("exclusions", "*.js,*.gif,*.jpg,*.png,*.css,*.ico,/druid/*"); + return filterRegistrationBean; + } + +} \ No newline at end of file diff --git a/framework/spring/spring-data/spring-mybatis/src/main/java/org/laidu/learn/mybatis/controller/UserInfoController.java b/framework/spring/spring-data/spring-mybatis/src/main/java/org/laidu/learn/mybatis/controller/UserInfoController.java new file mode 100644 index 000000000..f82342191 --- /dev/null +++ b/framework/spring/spring-data/spring-mybatis/src/main/java/org/laidu/learn/mybatis/controller/UserInfoController.java @@ -0,0 +1,39 @@ +package org.laidu.learn.mybatis.controller; + +import lombok.extern.slf4j.Slf4j; +import org.laidu.learn.mybatis.mapper.AppUserMapper; +import org.laidu.learn.mybatis.model.AppUser; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PathVariable; +import org.springframework.web.bind.annotation.RestController; +import org.springframework.web.bind.annotation.RequestMapping; + + +/** + * user info + *

+ * Created by tiancai.zang + * on 2018-04-22 16:25. + */ +@Slf4j +@RestController +@RequestMapping("/") +public class UserInfoController { + + private final AppUserMapper userMapper; + + @Autowired + public UserInfoController(AppUserMapper userMapper) { + this.userMapper = userMapper; + } + + @GetMapping("/query/{id}") + public AppUser queryById(@PathVariable("id") Long id){ + + AppUser user = userMapper.selectByPrimaryKey(id); + + return user; + } + +} \ No newline at end of file diff --git a/framework/spring/spring-data/spring-mybatis/src/main/java/org/laidu/learn/mybatis/mapper/AppUserMapper.java b/framework/spring/spring-data/spring-mybatis/src/main/java/org/laidu/learn/mybatis/mapper/AppUserMapper.java new file mode 100644 index 000000000..c7a074b01 --- /dev/null +++ b/framework/spring/spring-data/spring-mybatis/src/main/java/org/laidu/learn/mybatis/mapper/AppUserMapper.java @@ -0,0 +1,148 @@ +package org.laidu.learn.mybatis.mapper; + +import org.apache.ibatis.annotations.Delete; +import org.apache.ibatis.annotations.Insert; +import org.apache.ibatis.annotations.InsertProvider; +import org.apache.ibatis.annotations.Result; +import org.apache.ibatis.annotations.Results; +import org.apache.ibatis.annotations.Select; +import org.apache.ibatis.annotations.Update; +import org.apache.ibatis.annotations.UpdateProvider; +import org.apache.ibatis.type.JdbcType; +import org.laidu.learn.mybatis.model.AppUser; + +public interface AppUserMapper { + @Delete({ + "delete from ca_app_user", + "where id = #{id,jdbcType=BIGINT}" + }) + int deleteByPrimaryKey(Long id); + + @Insert({ + "insert into ca_app_user (id, open_id, ", + "register_channel, username, ", + "id_card, name, id_card_detail_address, ", + "is_verify_id_card, id_card_coverup, ", + "id_card_coverdown, id_card_hold, ", + "is_other_picture_auth, is_bankcard_auth, ", + "signature_pic, is_additional_auth, ", + "is_emergency_auth, phone, ", + "email, address, ", + "user_status, create_time, ", + "update_time, remark, ", + "id_card_police)", + "values (#{id,jdbcType=BIGINT}, #{openId,jdbcType=VARCHAR}, ", + "#{registerChannel,jdbcType=BIGINT}, #{username,jdbcType=VARCHAR}, ", + "#{idCard,jdbcType=VARCHAR}, #{name,jdbcType=VARCHAR}, #{idCardDetailAddress,jdbcType=VARCHAR}, ", + "#{isVerifyIdCard,jdbcType=BIT}, #{idCardCoverup,jdbcType=VARCHAR}, ", + "#{idCardCoverdown,jdbcType=VARCHAR}, #{idCardHold,jdbcType=VARCHAR}, ", + "#{isOtherPictureAuth,jdbcType=BIT}, #{isBankcardAuth,jdbcType=BIT}, ", + "#{signaturePic,jdbcType=VARCHAR}, #{isAdditionalAuth,jdbcType=BIT}, ", + "#{isEmergencyAuth,jdbcType=BIT}, #{phone,jdbcType=VARCHAR}, ", + "#{email,jdbcType=VARCHAR}, #{address,jdbcType=VARCHAR}, ", + "#{userStatus,jdbcType=INTEGER}, #{createTime,jdbcType=TIMESTAMP}, ", + "#{updateTime,jdbcType=TIMESTAMP}, #{remark,jdbcType=VARCHAR}, ", + "#{idCardPolice,jdbcType=LONGVARCHAR})" + }) + int insert(AppUser record); + + @InsertProvider(type=AppUserSqlProvider.class, method="insertSelective") + int insertSelective(AppUser record); + + @Select({ + "select", + "id, open_id, register_channel, username, id_card, name, id_card_detail_address, ", + "is_verify_id_card, id_card_coverup, id_card_coverdown, id_card_hold, is_other_picture_auth, ", + "is_bankcard_auth, signature_pic, is_additional_auth, is_emergency_auth, phone, ", + "email, address, user_status, create_time, update_time, remark, id_card_police", + "from ca_app_user", + "where id = #{id,jdbcType=BIGINT}" + }) + @Results({ + @Result(column="id", property="id", jdbcType=JdbcType.BIGINT, id=true), + @Result(column="open_id", property="openId", jdbcType=JdbcType.VARCHAR), + @Result(column="register_channel", property="registerChannel", jdbcType=JdbcType.BIGINT), + @Result(column="username", property="username", jdbcType=JdbcType.VARCHAR), + @Result(column="id_card", property="idCard", jdbcType=JdbcType.VARCHAR), + @Result(column="name", property="name", jdbcType=JdbcType.VARCHAR), + @Result(column="id_card_detail_address", property="idCardDetailAddress", jdbcType=JdbcType.VARCHAR), + @Result(column="is_verify_id_card", property="isVerifyIdCard", jdbcType=JdbcType.BIT), + @Result(column="id_card_coverup", property="idCardCoverup", jdbcType=JdbcType.VARCHAR), + @Result(column="id_card_coverdown", property="idCardCoverdown", jdbcType=JdbcType.VARCHAR), + @Result(column="id_card_hold", property="idCardHold", jdbcType=JdbcType.VARCHAR), + @Result(column="is_other_picture_auth", property="isOtherPictureAuth", jdbcType=JdbcType.BIT), + @Result(column="is_bankcard_auth", property="isBankcardAuth", jdbcType=JdbcType.BIT), + @Result(column="signature_pic", property="signaturePic", jdbcType=JdbcType.VARCHAR), + @Result(column="is_additional_auth", property="isAdditionalAuth", jdbcType=JdbcType.BIT), + @Result(column="is_emergency_auth", property="isEmergencyAuth", jdbcType=JdbcType.BIT), + @Result(column="phone", property="phone", jdbcType=JdbcType.VARCHAR), + @Result(column="email", property="email", jdbcType=JdbcType.VARCHAR), + @Result(column="address", property="address", jdbcType=JdbcType.VARCHAR), + @Result(column="user_status", property="userStatus", jdbcType=JdbcType.INTEGER), + @Result(column="create_time", property="createTime", jdbcType=JdbcType.TIMESTAMP), + @Result(column="update_time", property="updateTime", jdbcType=JdbcType.TIMESTAMP), + @Result(column="remark", property="remark", jdbcType=JdbcType.VARCHAR), + @Result(column="id_card_police", property="idCardPolice", jdbcType=JdbcType.LONGVARCHAR) + }) + AppUser selectByPrimaryKey(Long id); + + @UpdateProvider(type=AppUserSqlProvider.class, method="updateByPrimaryKeySelective") + int updateByPrimaryKeySelective(AppUser record); + + @Update({ + "update ca_app_user", + "set open_id = #{openId,jdbcType=VARCHAR},", + "register_channel = #{registerChannel,jdbcType=BIGINT},", + "username = #{username,jdbcType=VARCHAR},", + "id_card = #{idCard,jdbcType=VARCHAR},", + "name = #{name,jdbcType=VARCHAR},", + "id_card_detail_address = #{idCardDetailAddress,jdbcType=VARCHAR},", + "is_verify_id_card = #{isVerifyIdCard,jdbcType=BIT},", + "id_card_coverup = #{idCardCoverup,jdbcType=VARCHAR},", + "id_card_coverdown = #{idCardCoverdown,jdbcType=VARCHAR},", + "id_card_hold = #{idCardHold,jdbcType=VARCHAR},", + "is_other_picture_auth = #{isOtherPictureAuth,jdbcType=BIT},", + "is_bankcard_auth = #{isBankcardAuth,jdbcType=BIT},", + "signature_pic = #{signaturePic,jdbcType=VARCHAR},", + "is_additional_auth = #{isAdditionalAuth,jdbcType=BIT},", + "is_emergency_auth = #{isEmergencyAuth,jdbcType=BIT},", + "phone = #{phone,jdbcType=VARCHAR},", + "email = #{email,jdbcType=VARCHAR},", + "address = #{address,jdbcType=VARCHAR},", + "user_status = #{userStatus,jdbcType=INTEGER},", + "create_time = #{createTime,jdbcType=TIMESTAMP},", + "update_time = #{updateTime,jdbcType=TIMESTAMP},", + "remark = #{remark,jdbcType=VARCHAR},", + "id_card_police = #{idCardPolice,jdbcType=LONGVARCHAR}", + "where id = #{id,jdbcType=BIGINT}" + }) + int updateByPrimaryKeyWithBLOBs(AppUser record); + + @Update({ + "update ca_app_user", + "set open_id = #{openId,jdbcType=VARCHAR},", + "register_channel = #{registerChannel,jdbcType=BIGINT},", + "username = #{username,jdbcType=VARCHAR},", + "id_card = #{idCard,jdbcType=VARCHAR},", + "name = #{name,jdbcType=VARCHAR},", + "id_card_detail_address = #{idCardDetailAddress,jdbcType=VARCHAR},", + "is_verify_id_card = #{isVerifyIdCard,jdbcType=BIT},", + "id_card_coverup = #{idCardCoverup,jdbcType=VARCHAR},", + "id_card_coverdown = #{idCardCoverdown,jdbcType=VARCHAR},", + "id_card_hold = #{idCardHold,jdbcType=VARCHAR},", + "is_other_picture_auth = #{isOtherPictureAuth,jdbcType=BIT},", + "is_bankcard_auth = #{isBankcardAuth,jdbcType=BIT},", + "signature_pic = #{signaturePic,jdbcType=VARCHAR},", + "is_additional_auth = #{isAdditionalAuth,jdbcType=BIT},", + "is_emergency_auth = #{isEmergencyAuth,jdbcType=BIT},", + "phone = #{phone,jdbcType=VARCHAR},", + "email = #{email,jdbcType=VARCHAR},", + "address = #{address,jdbcType=VARCHAR},", + "user_status = #{userStatus,jdbcType=INTEGER},", + "create_time = #{createTime,jdbcType=TIMESTAMP},", + "update_time = #{updateTime,jdbcType=TIMESTAMP},", + "remark = #{remark,jdbcType=VARCHAR}", + "where id = #{id,jdbcType=BIGINT}" + }) + int updateByPrimaryKey(AppUser record); +} \ No newline at end of file diff --git a/framework/spring/spring-data/spring-mybatis/src/main/java/org/laidu/learn/mybatis/mapper/AppUserSqlProvider.java b/framework/spring/spring-data/spring-mybatis/src/main/java/org/laidu/learn/mybatis/mapper/AppUserSqlProvider.java new file mode 100644 index 000000000..00e00eb58 --- /dev/null +++ b/framework/spring/spring-data/spring-mybatis/src/main/java/org/laidu/learn/mybatis/mapper/AppUserSqlProvider.java @@ -0,0 +1,211 @@ +package org.laidu.learn.mybatis.mapper; + +import org.apache.ibatis.jdbc.SQL; +import org.laidu.learn.mybatis.model.AppUser; + +public class AppUserSqlProvider { + + public String insertSelective(AppUser record) { + SQL sql = new SQL(); + sql.INSERT_INTO("ca_app_user"); + + if (record.getId() != null) { + sql.VALUES("id", "#{id,jdbcType=BIGINT}"); + } + + if (record.getOpenId() != null) { + sql.VALUES("open_id", "#{openId,jdbcType=VARCHAR}"); + } + + if (record.getRegisterChannel() != null) { + sql.VALUES("register_channel", "#{registerChannel,jdbcType=BIGINT}"); + } + + if (record.getUsername() != null) { + sql.VALUES("username", "#{username,jdbcType=VARCHAR}"); + } + + if (record.getIdCard() != null) { + sql.VALUES("id_card", "#{idCard,jdbcType=VARCHAR}"); + } + + if (record.getName() != null) { + sql.VALUES("name", "#{name,jdbcType=VARCHAR}"); + } + + if (record.getIdCardDetailAddress() != null) { + sql.VALUES("id_card_detail_address", "#{idCardDetailAddress,jdbcType=VARCHAR}"); + } + + if (record.getIsVerifyIdCard() != null) { + sql.VALUES("is_verify_id_card", "#{isVerifyIdCard,jdbcType=BIT}"); + } + + if (record.getIdCardCoverup() != null) { + sql.VALUES("id_card_coverup", "#{idCardCoverup,jdbcType=VARCHAR}"); + } + + if (record.getIdCardCoverdown() != null) { + sql.VALUES("id_card_coverdown", "#{idCardCoverdown,jdbcType=VARCHAR}"); + } + + if (record.getIdCardHold() != null) { + sql.VALUES("id_card_hold", "#{idCardHold,jdbcType=VARCHAR}"); + } + + if (record.getIsOtherPictureAuth() != null) { + sql.VALUES("is_other_picture_auth", "#{isOtherPictureAuth,jdbcType=BIT}"); + } + + if (record.getIsBankcardAuth() != null) { + sql.VALUES("is_bankcard_auth", "#{isBankcardAuth,jdbcType=BIT}"); + } + + if (record.getSignaturePic() != null) { + sql.VALUES("signature_pic", "#{signaturePic,jdbcType=VARCHAR}"); + } + + if (record.getIsAdditionalAuth() != null) { + sql.VALUES("is_additional_auth", "#{isAdditionalAuth,jdbcType=BIT}"); + } + + if (record.getIsEmergencyAuth() != null) { + sql.VALUES("is_emergency_auth", "#{isEmergencyAuth,jdbcType=BIT}"); + } + + if (record.getPhone() != null) { + sql.VALUES("phone", "#{phone,jdbcType=VARCHAR}"); + } + + if (record.getEmail() != null) { + sql.VALUES("email", "#{email,jdbcType=VARCHAR}"); + } + + if (record.getAddress() != null) { + sql.VALUES("address", "#{address,jdbcType=VARCHAR}"); + } + + if (record.getUserStatus() != null) { + sql.VALUES("user_status", "#{userStatus,jdbcType=INTEGER}"); + } + + if (record.getCreateTime() != null) { + sql.VALUES("create_time", "#{createTime,jdbcType=TIMESTAMP}"); + } + + if (record.getUpdateTime() != null) { + sql.VALUES("update_time", "#{updateTime,jdbcType=TIMESTAMP}"); + } + + if (record.getRemark() != null) { + sql.VALUES("remark", "#{remark,jdbcType=VARCHAR}"); + } + + if (record.getIdCardPolice() != null) { + sql.VALUES("id_card_police", "#{idCardPolice,jdbcType=LONGVARCHAR}"); + } + + return sql.toString(); + } + + public String updateByPrimaryKeySelective(AppUser record) { + SQL sql = new SQL(); + sql.UPDATE("ca_app_user"); + + if (record.getOpenId() != null) { + sql.SET("open_id = #{openId,jdbcType=VARCHAR}"); + } + + if (record.getRegisterChannel() != null) { + sql.SET("register_channel = #{registerChannel,jdbcType=BIGINT}"); + } + + if (record.getUsername() != null) { + sql.SET("username = #{username,jdbcType=VARCHAR}"); + } + + if (record.getIdCard() != null) { + sql.SET("id_card = #{idCard,jdbcType=VARCHAR}"); + } + + if (record.getName() != null) { + sql.SET("name = #{name,jdbcType=VARCHAR}"); + } + + if (record.getIdCardDetailAddress() != null) { + sql.SET("id_card_detail_address = #{idCardDetailAddress,jdbcType=VARCHAR}"); + } + + if (record.getIsVerifyIdCard() != null) { + sql.SET("is_verify_id_card = #{isVerifyIdCard,jdbcType=BIT}"); + } + + if (record.getIdCardCoverup() != null) { + sql.SET("id_card_coverup = #{idCardCoverup,jdbcType=VARCHAR}"); + } + + if (record.getIdCardCoverdown() != null) { + sql.SET("id_card_coverdown = #{idCardCoverdown,jdbcType=VARCHAR}"); + } + + if (record.getIdCardHold() != null) { + sql.SET("id_card_hold = #{idCardHold,jdbcType=VARCHAR}"); + } + + if (record.getIsOtherPictureAuth() != null) { + sql.SET("is_other_picture_auth = #{isOtherPictureAuth,jdbcType=BIT}"); + } + + if (record.getIsBankcardAuth() != null) { + sql.SET("is_bankcard_auth = #{isBankcardAuth,jdbcType=BIT}"); + } + + if (record.getSignaturePic() != null) { + sql.SET("signature_pic = #{signaturePic,jdbcType=VARCHAR}"); + } + + if (record.getIsAdditionalAuth() != null) { + sql.SET("is_additional_auth = #{isAdditionalAuth,jdbcType=BIT}"); + } + + if (record.getIsEmergencyAuth() != null) { + sql.SET("is_emergency_auth = #{isEmergencyAuth,jdbcType=BIT}"); + } + + if (record.getPhone() != null) { + sql.SET("phone = #{phone,jdbcType=VARCHAR}"); + } + + if (record.getEmail() != null) { + sql.SET("email = #{email,jdbcType=VARCHAR}"); + } + + if (record.getAddress() != null) { + sql.SET("address = #{address,jdbcType=VARCHAR}"); + } + + if (record.getUserStatus() != null) { + sql.SET("user_status = #{userStatus,jdbcType=INTEGER}"); + } + + if (record.getCreateTime() != null) { + sql.SET("create_time = #{createTime,jdbcType=TIMESTAMP}"); + } + + if (record.getUpdateTime() != null) { + sql.SET("update_time = #{updateTime,jdbcType=TIMESTAMP}"); + } + + if (record.getRemark() != null) { + sql.SET("remark = #{remark,jdbcType=VARCHAR}"); + } + + if (record.getIdCardPolice() != null) { + sql.SET("id_card_police = #{idCardPolice,jdbcType=LONGVARCHAR}"); + } + + sql.WHERE("id = #{id,jdbcType=BIGINT}"); + + return sql.toString(); + } +} \ No newline at end of file diff --git a/framework/spring/spring-data/spring-mybatis/src/main/java/org/laidu/learn/mybatis/model/AppUser.java b/framework/spring/spring-data/spring-mybatis/src/main/java/org/laidu/learn/mybatis/model/AppUser.java new file mode 100644 index 000000000..b683f605c --- /dev/null +++ b/framework/spring/spring-data/spring-mybatis/src/main/java/org/laidu/learn/mybatis/model/AppUser.java @@ -0,0 +1,283 @@ +package org.laidu.learn.mybatis.model; + +import java.io.Serializable; +import java.util.Date; + +public class AppUser implements Serializable { + private Long id; + + private String openId; + + private Long registerChannel; + + private String username; + + private String idCard; + + private String name; + + private String idCardDetailAddress; + + private Boolean isVerifyIdCard; + + private String idCardCoverup; + + private String idCardCoverdown; + + private String idCardHold; + + private Boolean isOtherPictureAuth; + + private Boolean isBankcardAuth; + + private String signaturePic; + + private Boolean isAdditionalAuth; + + private Boolean isEmergencyAuth; + + private String phone; + + private String email; + + private String address; + + private Integer userStatus; + + private Date createTime; + + private Date updateTime; + + private String remark; + + private String idCardPolice; + + private static final long serialVersionUID = 1L; + + public Long getId() { + return id; + } + + public void setId(Long id) { + this.id = id; + } + + public String getOpenId() { + return openId; + } + + public void setOpenId(String openId) { + this.openId = openId == null ? null : openId.trim(); + } + + public Long getRegisterChannel() { + return registerChannel; + } + + public void setRegisterChannel(Long registerChannel) { + this.registerChannel = registerChannel; + } + + public String getUsername() { + return username; + } + + public void setUsername(String username) { + this.username = username == null ? null : username.trim(); + } + + public String getIdCard() { + return idCard; + } + + public void setIdCard(String idCard) { + this.idCard = idCard == null ? null : idCard.trim(); + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name == null ? null : name.trim(); + } + + public String getIdCardDetailAddress() { + return idCardDetailAddress; + } + + public void setIdCardDetailAddress(String idCardDetailAddress) { + this.idCardDetailAddress = idCardDetailAddress == null ? null : idCardDetailAddress.trim(); + } + + public Boolean getIsVerifyIdCard() { + return isVerifyIdCard; + } + + public void setIsVerifyIdCard(Boolean isVerifyIdCard) { + this.isVerifyIdCard = isVerifyIdCard; + } + + public String getIdCardCoverup() { + return idCardCoverup; + } + + public void setIdCardCoverup(String idCardCoverup) { + this.idCardCoverup = idCardCoverup == null ? null : idCardCoverup.trim(); + } + + public String getIdCardCoverdown() { + return idCardCoverdown; + } + + public void setIdCardCoverdown(String idCardCoverdown) { + this.idCardCoverdown = idCardCoverdown == null ? null : idCardCoverdown.trim(); + } + + public String getIdCardHold() { + return idCardHold; + } + + public void setIdCardHold(String idCardHold) { + this.idCardHold = idCardHold == null ? null : idCardHold.trim(); + } + + public Boolean getIsOtherPictureAuth() { + return isOtherPictureAuth; + } + + public void setIsOtherPictureAuth(Boolean isOtherPictureAuth) { + this.isOtherPictureAuth = isOtherPictureAuth; + } + + public Boolean getIsBankcardAuth() { + return isBankcardAuth; + } + + public void setIsBankcardAuth(Boolean isBankcardAuth) { + this.isBankcardAuth = isBankcardAuth; + } + + public String getSignaturePic() { + return signaturePic; + } + + public void setSignaturePic(String signaturePic) { + this.signaturePic = signaturePic == null ? null : signaturePic.trim(); + } + + public Boolean getIsAdditionalAuth() { + return isAdditionalAuth; + } + + public void setIsAdditionalAuth(Boolean isAdditionalAuth) { + this.isAdditionalAuth = isAdditionalAuth; + } + + public Boolean getIsEmergencyAuth() { + return isEmergencyAuth; + } + + public void setIsEmergencyAuth(Boolean isEmergencyAuth) { + this.isEmergencyAuth = isEmergencyAuth; + } + + public String getPhone() { + return phone; + } + + public void setPhone(String phone) { + this.phone = phone == null ? null : phone.trim(); + } + + public String getEmail() { + return email; + } + + public void setEmail(String email) { + this.email = email == null ? null : email.trim(); + } + + public String getAddress() { + return address; + } + + public void setAddress(String address) { + this.address = address == null ? null : address.trim(); + } + + public Integer getUserStatus() { + return userStatus; + } + + public void setUserStatus(Integer userStatus) { + this.userStatus = userStatus; + } + + public Date getCreateTime() { + return createTime; + } + + public void setCreateTime(Date createTime) { + this.createTime = createTime; + } + + public Date getUpdateTime() { + return updateTime; + } + + public void setUpdateTime(Date updateTime) { + this.updateTime = updateTime; + } + + public String getRemark() { + return remark; + } + + public void setRemark(String remark) { + this.remark = remark == null ? null : remark.trim(); + } + + public String getIdCardPolice() { + return idCardPolice; + } + + public void setIdCardPolice(String idCardPolice) { + this.idCardPolice = idCardPolice == null ? null : idCardPolice.trim(); + } + + @Override + public String toString() { + StringBuilder sb = new StringBuilder(); + sb.append(getClass().getSimpleName()); + sb.append(" ["); + sb.append("Hash = ").append(hashCode()); + sb.append(", id=").append(id); + sb.append(", openId=").append(openId); + sb.append(", registerChannel=").append(registerChannel); + sb.append(", username=").append(username); + sb.append(", idCard=").append(idCard); + sb.append(", name=").append(name); + sb.append(", idCardDetailAddress=").append(idCardDetailAddress); + sb.append(", isVerifyIdCard=").append(isVerifyIdCard); + sb.append(", idCardCoverup=").append(idCardCoverup); + sb.append(", idCardCoverdown=").append(idCardCoverdown); + sb.append(", idCardHold=").append(idCardHold); + sb.append(", isOtherPictureAuth=").append(isOtherPictureAuth); + sb.append(", isBankcardAuth=").append(isBankcardAuth); + sb.append(", signaturePic=").append(signaturePic); + sb.append(", isAdditionalAuth=").append(isAdditionalAuth); + sb.append(", isEmergencyAuth=").append(isEmergencyAuth); + sb.append(", phone=").append(phone); + sb.append(", email=").append(email); + sb.append(", address=").append(address); + sb.append(", userStatus=").append(userStatus); + sb.append(", createTime=").append(createTime); + sb.append(", updateTime=").append(updateTime); + sb.append(", remark=").append(remark); + sb.append(", idCardPolice=").append(idCardPolice); + sb.append(", serialVersionUID=").append(serialVersionUID); + sb.append("]"); + return sb.toString(); + } +} \ No newline at end of file diff --git a/framework/spring/spring-data/spring-mybatis/src/main/java/org/laidu/learn/mybatis/package-info.java b/framework/spring/spring-data/spring-mybatis/src/main/java/org/laidu/learn/mybatis/package-info.java new file mode 100644 index 000000000..47cec8aac --- /dev/null +++ b/framework/spring/spring-data/spring-mybatis/src/main/java/org/laidu/learn/mybatis/package-info.java @@ -0,0 +1,7 @@ +/** + * mybatis learn + *

+ * Created by tiancai.zang + * on 2018-04-22 16:22. + */ +package org.laidu.learn.mybatis; \ No newline at end of file diff --git a/framework/spring/spring-data/spring-mybatis/src/main/resources/application.properties b/framework/spring/spring-data/spring-mybatis/src/main/resources/application.properties new file mode 100644 index 000000000..1404666d8 --- /dev/null +++ b/framework/spring/spring-data/spring-mybatis/src/main/resources/application.properties @@ -0,0 +1,69 @@ + +#spring date source config +spring.datasource.druid.type=com.alibaba.druid.pool.DruidDataSource +spring.datasource.druid.url= jdbc:mysql://local-dev:3306/o2o?useSSL=false +spring.datasource.druid.username=root +spring.datasource.druid.password=mysql-dev +spring.datasource.druid.driver-class-name=com.mysql.jdbc.Driver + +spring.datasource.druid.filter.slf4j.statement-execute-after-log-enabled=true + + + +# 初始化大小,最小,最大 +spring.datasource.druid.initialSize=5 +spring.datasource.druid.minIdle=5 +spring.datasource.druid.maxActive=20 +# 配置获取连接等待超时的时间 +spring.datasource.druid.maxWait=60000 +# 配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位是毫秒 +spring.datasource.druid.timeBetweenEvictionRunsMillis=60000 +# 配置一个连接在池中最小生存的时间,单位是毫秒 +spring.datasource.druid.minEvictableIdleTimeMillis=300000 +spring.datasource.druid.validationQuery=SELECT 1 FROM DUAL +spring.datasource.druid.testWhileIdle=true +spring.datasource.druid.testOnBorrow=false +spring.datasource.druid.testOnReturn=false +# 打开PSCache,并且指定每个连接上PSCache的大小 +spring.datasource.druid.poolPreparedStatements=true +spring.datasource.druid.maxPoolPreparedStatementPerConnectionSize=20 +# 配置监控统计拦截的filters,去掉后监控界面sql无法统计,'wall'用于防火墙 +spring.datasource.druid.filters=stat,wall,log4j +# 通过connectProperties属性来打开mergeSql功能;慢SQL记录 +spring.datasource.druid.connectionProperties=druid.stat.mergeSql=true;druid.stat.slowSqlMillis=5000 +spring.datasource.druid.useGlobalDataSourceStat=true +# 合并多个DruidDataSource的监控数据 +#spring.datasource.druid.useGlobalDataSourceStat=true + +#spring.datasource.druid.min-idle= +#spring.datasource.druid.max-wait= +#spring.datasource.druid.pool-prepared-statements= +#spring.datasource.druid.max-pool-prepared-statement-per-connection-size= +#spring.datasource.druid.validation-query= +#spring.datasource.druid.validation-query-timeout= +#spring.datasource.druid.test-on-borrow= +#spring.datasource.druid.test-on-return= +#spring.datasource.druid.test-while-idle= +#spring.datasource.druid.time-between-eviction-runs-millis= +#spring.datasource.druid.min-evictable-idle-time-millis= +#spring.datasource.druid.max-evictable-idle-time-millis= +#spring.datasource.druid.filters= +# +#spring.datasource.druid.web-stat-filter.enabled= +#spring.datasource.druid.web-stat-filter.url-pattern= +#spring.datasource.druid.web-stat-filter.exclusions= +#spring.datasource.druid.web-stat-filter.session-stat-enable= +#spring.datasource.druid.web-stat-filter.session-stat-max-count= +#spring.datasource.druid.web-stat-filter.principal-session-name= +#spring.datasource.druid.web-stat-filter.principal-cookie-name= +#spring.datasource.druid.web-stat-filter.profile-enable= +# +#spring.datasource.druid.stat-view-servlet.enabled= +#spring.datasource.druid.stat-view-servlet.url-pattern= +#spring.datasource.druid.stat-view-servlet.reset-enable= +#spring.datasource.druid.stat-view-servlet.login-username= +#spring.datasource.druid.stat-view-servlet.login-password= +#spring.datasource.druid.stat-view-servlet.allow= +#spring.datasource.druid.stat-view-servlet.deny= +# +#spring.datasource.druid.aop-patterns= \ No newline at end of file diff --git a/framework/spring/spring-data/spring-mybatis/src/main/resources/generatorConfig.xml b/framework/spring/spring-data/spring-mybatis/src/main/resources/generatorConfig.xml new file mode 100644 index 000000000..c7489ebf0 --- /dev/null +++ b/framework/spring/spring-data/spring-mybatis/src/main/resources/generatorConfig.xml @@ -0,0 +1,67 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
\ No newline at end of file diff --git a/framework/spring/spring-data/spring-mybatis/src/main/resources/logback-spring.xml b/framework/spring/spring-data/spring-mybatis/src/main/resources/logback-spring.xml new file mode 100644 index 000000000..c7830143a --- /dev/null +++ b/framework/spring/spring-data/spring-mybatis/src/main/resources/logback-spring.xml @@ -0,0 +1,43 @@ + + + + + + ${LOG_PATH}/${myAppName}-druid.log + + %d [%level] [%thread] %logger{15}:%line %msg%n + + + DEBUG + + + ${LOG_PATH}/${myAppName}-druid.log.%d{yyyy-MM-dd} + 30 + + + + + + %d{dd-MM-yyyy HH:mm:ss.SSS} %magenta([%thread]) %highlight(%-5level) %logger{36}.%M - %msg%n + + + + + 512 + + + + + + + + + + + + + + + + + \ No newline at end of file From 48877113e7f84bac98c45760c83aa86da7d4e74c Mon Sep 17 00:00:00 2001 From: laidu Date: Thu, 26 Apr 2018 10:51:21 +0800 Subject: [PATCH 008/417] add ReConstructBinaryTree --- .../settle-query.log-druid-2018-04-22 | 33 -- ...yAppName_IS_UNDEFINED-druid.log.2018-04-22 | 328 ------------------ ...yAppName_IS_UNDEFINED-druid.log.2018-04-23 | 126 ------- .../jianzhioffer/ReConstructBinaryTree.java | 56 +++ 4 files changed, 56 insertions(+), 487 deletions(-) delete mode 100644 LOG_HOME_IS_UNDEFINED/settle-query.log-druid-2018-04-22 delete mode 100644 LOG_PATH_IS_UNDEFINED/myAppName_IS_UNDEFINED-druid.log.2018-04-22 delete mode 100644 LOG_PATH_IS_UNDEFINED/myAppName_IS_UNDEFINED-druid.log.2018-04-23 create mode 100644 code-practice/nowcoder/src/main/java/org/laidu/learn/code/practice/jianzhioffer/ReConstructBinaryTree.java diff --git a/LOG_HOME_IS_UNDEFINED/settle-query.log-druid-2018-04-22 b/LOG_HOME_IS_UNDEFINED/settle-query.log-druid-2018-04-22 deleted file mode 100644 index 2380af0cf..000000000 --- a/LOG_HOME_IS_UNDEFINED/settle-query.log-druid-2018-04-22 +++ /dev/null @@ -1,33 +0,0 @@ -2018-04-22 19:04:52.160 [main] DEBUG druid.sql.Connection - {conn-10001} connected -2018-04-22 19:04:52.165 [main] DEBUG druid.sql.Connection - {conn-10002} connected -2018-04-22 19:04:52.169 [main] DEBUG druid.sql.Connection - {conn-10003} connected -2018-04-22 19:04:52.173 [main] DEBUG druid.sql.Connection - {conn-10004} connected -2018-04-22 19:04:52.176 [main] DEBUG druid.sql.Connection - {conn-10005} connected -2018-04-22 19:04:58.927 [http-nio-8080-exec-4] DEBUG druid.sql.Connection - {conn-10005} pool-connect -2018-04-22 19:04:59.036 [http-nio-8080-exec-4] DEBUG druid.sql.Statement - {conn-10005, pstmt-20000} created. select id, open_id, register_channel, username, id_card, name, id_card_detail_address, is_verify_id_card, id_card_coverup, id_card_coverdown, id_card_hold, is_other_picture_auth, is_bankcard_auth, signature_pic, is_additional_auth, is_emergency_auth, phone, email, address, user_status, create_time, update_time, remark, id_card_police from ca_app_user where id = ? -2018-04-22 19:04:59.041 [http-nio-8080-exec-4] DEBUG druid.sql.Statement - {conn-10005, pstmt-20000} Parameters : [6] -2018-04-22 19:04:59.041 [http-nio-8080-exec-4] DEBUG druid.sql.Statement - {conn-10005, pstmt-20000} Types : [BIGINT] -2018-04-22 19:04:59.061 [http-nio-8080-exec-4] DEBUG druid.sql.Statement - {conn-10005, pstmt-20000} executed. select id, open_id, register_channel, username, id_card - , name, id_card_detail_address, is_verify_id_card, id_card_coverup, id_card_coverdown - , id_card_hold, is_other_picture_auth, is_bankcard_auth, signature_pic, is_additional_auth - , is_emergency_auth, phone, email, address, user_status - , create_time, update_time, remark, id_card_police -from ca_app_user -where id = 6 -2018-04-22 19:04:59.061 [http-nio-8080-exec-4] DEBUG druid.sql.Statement - {conn-10005, pstmt-20000} executed. 20.968017 millis. select id, open_id, register_channel, username, id_card, name, id_card_detail_address, is_verify_id_card, id_card_coverup, id_card_coverdown, id_card_hold, is_other_picture_auth, is_bankcard_auth, signature_pic, is_additional_auth, is_emergency_auth, phone, email, address, user_status, create_time, update_time, remark, id_card_police from ca_app_user where id = ? -2018-04-22 19:04:59.062 [http-nio-8080-exec-4] DEBUG druid.sql.Statement - {conn-10005, pstmt-20000} executed. select id, open_id, register_channel, username, id_card - , name, id_card_detail_address, is_verify_id_card, id_card_coverup, id_card_coverdown - , id_card_hold, is_other_picture_auth, is_bankcard_auth, signature_pic, is_additional_auth - , is_emergency_auth, phone, email, address, user_status - , create_time, update_time, remark, id_card_police -from ca_app_user -where id = 6 -2018-04-22 19:04:59.062 [http-nio-8080-exec-4] DEBUG druid.sql.Statement - {conn-10005, pstmt-20000} executed. 20.968017 millis. select id, open_id, register_channel, username, id_card, name, id_card_detail_address, is_verify_id_card, id_card_coverup, id_card_coverdown, id_card_hold, is_other_picture_auth, is_bankcard_auth, signature_pic, is_additional_auth, is_emergency_auth, phone, email, address, user_status, create_time, update_time, remark, id_card_police from ca_app_user where id = ? -2018-04-22 19:04:59.074 [http-nio-8080-exec-4] DEBUG druid.sql.Statement - {conn-10005, pstmt-20000} clearParameters. -2018-04-22 19:04:59.074 [http-nio-8080-exec-4] DEBUG druid.sql.Connection - {conn-10005} pool-recycle -2018-04-22 19:05:17.864 [Thread-4] DEBUG druid.sql.Connection - {conn-10001} closed -2018-04-22 19:05:17.864 [Thread-4] DEBUG druid.sql.Connection - {conn-10002} closed -2018-04-22 19:05:17.865 [Thread-4] DEBUG druid.sql.Connection - {conn-10003} closed -2018-04-22 19:05:17.865 [Thread-4] DEBUG druid.sql.Connection - {conn-10004} closed -2018-04-22 19:05:17.865 [Thread-4] DEBUG druid.sql.Statement - {conn-10005, pstmt-20000} closed -2018-04-22 19:05:17.865 [Thread-4] DEBUG druid.sql.Connection - {conn-10005} closed diff --git a/LOG_PATH_IS_UNDEFINED/myAppName_IS_UNDEFINED-druid.log.2018-04-22 b/LOG_PATH_IS_UNDEFINED/myAppName_IS_UNDEFINED-druid.log.2018-04-22 deleted file mode 100644 index c691d606e..000000000 --- a/LOG_PATH_IS_UNDEFINED/myAppName_IS_UNDEFINED-druid.log.2018-04-22 +++ /dev/null @@ -1,328 +0,0 @@ -2018-04-22 19:05:21,675 [DEBUG] [main] d.s.Connection:? {conn-10001} connected -2018-04-22 19:05:21,680 [DEBUG] [main] d.s.Connection:? {conn-10002} connected -2018-04-22 19:05:21,684 [DEBUG] [main] d.s.Connection:? {conn-10003} connected -2018-04-22 19:05:21,688 [DEBUG] [main] d.s.Connection:? {conn-10004} connected -2018-04-22 19:05:21,692 [DEBUG] [main] d.s.Connection:? {conn-10005} connected -2018-04-22 19:05:28,025 [DEBUG] [http-nio-8080-exec-3] d.s.Connection:? {conn-10005} pool-connect -2018-04-22 19:05:28,136 [DEBUG] [http-nio-8080-exec-3] d.sql.Statement:? {conn-10005, pstmt-20000} created. select id, open_id, register_channel, username, id_card, name, id_card_detail_address, is_verify_id_card, id_card_coverup, id_card_coverdown, id_card_hold, is_other_picture_auth, is_bankcard_auth, signature_pic, is_additional_auth, is_emergency_auth, phone, email, address, user_status, create_time, update_time, remark, id_card_police from ca_app_user where id = ? -2018-04-22 19:05:28,142 [DEBUG] [http-nio-8080-exec-3] d.sql.Statement:? {conn-10005, pstmt-20000} Parameters : [6] -2018-04-22 19:05:28,142 [DEBUG] [http-nio-8080-exec-3] d.sql.Statement:? {conn-10005, pstmt-20000} Types : [BIGINT] -2018-04-22 19:05:28,164 [DEBUG] [http-nio-8080-exec-3] d.sql.Statement:? {conn-10005, pstmt-20000} executed. select id, open_id, register_channel, username, id_card - , name, id_card_detail_address, is_verify_id_card, id_card_coverup, id_card_coverdown - , id_card_hold, is_other_picture_auth, is_bankcard_auth, signature_pic, is_additional_auth - , is_emergency_auth, phone, email, address, user_status - , create_time, update_time, remark, id_card_police -from ca_app_user -where id = 6 -2018-04-22 19:05:28,164 [DEBUG] [http-nio-8080-exec-3] d.sql.Statement:? {conn-10005, pstmt-20000} executed. 23.600049 millis. select id, open_id, register_channel, username, id_card, name, id_card_detail_address, is_verify_id_card, id_card_coverup, id_card_coverdown, id_card_hold, is_other_picture_auth, is_bankcard_auth, signature_pic, is_additional_auth, is_emergency_auth, phone, email, address, user_status, create_time, update_time, remark, id_card_police from ca_app_user where id = ? -2018-04-22 19:05:28,165 [DEBUG] [http-nio-8080-exec-3] d.sql.Statement:? {conn-10005, pstmt-20000} executed. select id, open_id, register_channel, username, id_card - , name, id_card_detail_address, is_verify_id_card, id_card_coverup, id_card_coverdown - , id_card_hold, is_other_picture_auth, is_bankcard_auth, signature_pic, is_additional_auth - , is_emergency_auth, phone, email, address, user_status - , create_time, update_time, remark, id_card_police -from ca_app_user -where id = 6 -2018-04-22 19:05:28,165 [DEBUG] [http-nio-8080-exec-3] d.sql.Statement:? {conn-10005, pstmt-20000} executed. 23.670527 millis. select id, open_id, register_channel, username, id_card, name, id_card_detail_address, is_verify_id_card, id_card_coverup, id_card_coverdown, id_card_hold, is_other_picture_auth, is_bankcard_auth, signature_pic, is_additional_auth, is_emergency_auth, phone, email, address, user_status, create_time, update_time, remark, id_card_police from ca_app_user where id = ? -2018-04-22 19:05:28,179 [DEBUG] [http-nio-8080-exec-3] d.sql.Statement:? {conn-10005, pstmt-20000} clearParameters. -2018-04-22 19:05:28,180 [DEBUG] [http-nio-8080-exec-3] d.s.Connection:? {conn-10005} pool-recycle -2018-04-22 19:06:40,051 [DEBUG] [Thread-4] d.s.Connection:? {conn-10001} closed -2018-04-22 19:06:40,051 [DEBUG] [Thread-4] d.s.Connection:? {conn-10002} closed -2018-04-22 19:06:40,051 [DEBUG] [Thread-4] d.s.Connection:? {conn-10003} closed -2018-04-22 19:06:40,052 [DEBUG] [Thread-4] d.s.Connection:? {conn-10004} closed -2018-04-22 19:06:40,052 [DEBUG] [Thread-4] d.sql.Statement:? {conn-10005, pstmt-20000} closed -2018-04-22 19:06:40,052 [DEBUG] [Thread-4] d.s.Connection:? {conn-10005} closed -2018-04-22 19:06:43,871 [DEBUG] [main] d.s.Connection:? {conn-10001} connected -2018-04-22 19:06:43,876 [DEBUG] [main] d.s.Connection:? {conn-10002} connected -2018-04-22 19:06:43,879 [DEBUG] [main] d.s.Connection:? {conn-10003} connected -2018-04-22 19:06:43,883 [DEBUG] [main] d.s.Connection:? {conn-10004} connected -2018-04-22 19:06:43,886 [DEBUG] [main] d.s.Connection:? {conn-10005} connected -2018-04-22 19:06:49,704 [DEBUG] [http-nio-8080-exec-2] d.s.Connection:? {conn-10005} pool-connect -2018-04-22 19:06:49,819 [DEBUG] [http-nio-8080-exec-2] d.sql.Statement:? {conn-10005, pstmt-20000} created. select id, open_id, register_channel, username, id_card, name, id_card_detail_address, is_verify_id_card, id_card_coverup, id_card_coverdown, id_card_hold, is_other_picture_auth, is_bankcard_auth, signature_pic, is_additional_auth, is_emergency_auth, phone, email, address, user_status, create_time, update_time, remark, id_card_police from ca_app_user where id = ? -2018-04-22 19:06:49,825 [DEBUG] [http-nio-8080-exec-2] d.sql.Statement:? {conn-10005, pstmt-20000} Parameters : [6] -2018-04-22 19:06:49,825 [DEBUG] [http-nio-8080-exec-2] d.sql.Statement:? {conn-10005, pstmt-20000} Types : [BIGINT] -2018-04-22 19:06:49,846 [DEBUG] [http-nio-8080-exec-2] d.sql.Statement:? {conn-10005, pstmt-20000} executed. select id, open_id, register_channel, username, id_card - , name, id_card_detail_address, is_verify_id_card, id_card_coverup, id_card_coverdown - , id_card_hold, is_other_picture_auth, is_bankcard_auth, signature_pic, is_additional_auth - , is_emergency_auth, phone, email, address, user_status - , create_time, update_time, remark, id_card_police -from ca_app_user -where id = 6 -2018-04-22 19:06:49,846 [DEBUG] [http-nio-8080-exec-2] d.sql.Statement:? {conn-10005, pstmt-20000} executed. 22.194821 millis. select id, open_id, register_channel, username, id_card, name, id_card_detail_address, is_verify_id_card, id_card_coverup, id_card_coverdown, id_card_hold, is_other_picture_auth, is_bankcard_auth, signature_pic, is_additional_auth, is_emergency_auth, phone, email, address, user_status, create_time, update_time, remark, id_card_police from ca_app_user where id = ? -2018-04-22 19:06:49,847 [DEBUG] [http-nio-8080-exec-2] d.sql.Statement:? {conn-10005, pstmt-20000} executed. select id, open_id, register_channel, username, id_card - , name, id_card_detail_address, is_verify_id_card, id_card_coverup, id_card_coverdown - , id_card_hold, is_other_picture_auth, is_bankcard_auth, signature_pic, is_additional_auth - , is_emergency_auth, phone, email, address, user_status - , create_time, update_time, remark, id_card_police -from ca_app_user -where id = 6 -2018-04-22 19:06:49,847 [DEBUG] [http-nio-8080-exec-2] d.sql.Statement:? {conn-10005, pstmt-20000} executed. 22.248586 millis. select id, open_id, register_channel, username, id_card, name, id_card_detail_address, is_verify_id_card, id_card_coverup, id_card_coverdown, id_card_hold, is_other_picture_auth, is_bankcard_auth, signature_pic, is_additional_auth, is_emergency_auth, phone, email, address, user_status, create_time, update_time, remark, id_card_police from ca_app_user where id = ? -2018-04-22 19:06:49,862 [DEBUG] [http-nio-8080-exec-2] d.sql.Statement:? {conn-10005, pstmt-20000} clearParameters. -2018-04-22 19:06:49,862 [DEBUG] [http-nio-8080-exec-2] d.s.Connection:? {conn-10005} pool-recycle -2018-04-22 19:07:30,850 [DEBUG] [Thread-4] d.s.Connection:? {conn-10001} closed -2018-04-22 19:07:30,850 [DEBUG] [Thread-4] d.s.Connection:? {conn-10002} closed -2018-04-22 19:07:30,850 [DEBUG] [Thread-4] d.s.Connection:? {conn-10003} closed -2018-04-22 19:07:30,850 [DEBUG] [Thread-4] d.s.Connection:? {conn-10004} closed -2018-04-22 19:07:30,850 [DEBUG] [Thread-4] d.sql.Statement:? {conn-10005, pstmt-20000} closed -2018-04-22 19:07:30,851 [DEBUG] [Thread-4] d.s.Connection:? {conn-10005} closed -2018-04-22 19:07:34,767 [DEBUG] [main] d.s.Connection:? {conn-10001} connected -2018-04-22 19:07:34,772 [DEBUG] [main] d.s.Connection:? {conn-10002} connected -2018-04-22 19:07:34,776 [DEBUG] [main] d.s.Connection:? {conn-10003} connected -2018-04-22 19:07:34,779 [DEBUG] [main] d.s.Connection:? {conn-10004} connected -2018-04-22 19:07:34,782 [DEBUG] [main] d.s.Connection:? {conn-10005} connected -2018-04-22 19:08:57,153 [DEBUG] [Thread-4] d.s.Connection:? {conn-10001} closed -2018-04-22 19:08:57,153 [DEBUG] [Thread-4] d.s.Connection:? {conn-10002} closed -2018-04-22 19:08:57,153 [DEBUG] [Thread-4] d.s.Connection:? {conn-10003} closed -2018-04-22 19:08:57,153 [DEBUG] [Thread-4] d.s.Connection:? {conn-10004} closed -2018-04-22 19:08:57,153 [DEBUG] [Thread-4] d.s.Connection:? {conn-10005} closed -2018-04-22 19:08:58,442 [INFO] [main] o.l.l.m.Application:? Starting Application on laidu-pc with PID 10056 (/home/laidu/IdeaProjects/java-learn/framework/spring/spring-data/spring-mybatis/target/classes started by laidu in /home/laidu/IdeaProjects/java-learn) -2018-04-22 19:08:58,444 [INFO] [main] o.l.l.m.Application:? No active profile set, falling back to default profiles: default -2018-04-22 19:08:58,501 [INFO] [main] o.s.b.c.e.AnnotationConfigEmbeddedWebApplicationContext:? Refreshing org.springframework.boot.context.embedded.AnnotationConfigEmbeddedWebApplicationContext@4b520ea8: startup date [Sun Apr 22 19:08:58 CST 2018]; root of context hierarchy -2018-04-22 19:08:58,854 [INFO] [background-preinit] o.h.v.i.u.Version:? HV000001: Hibernate Validator 5.3.6.Final -2018-04-22 19:08:59,432 [INFO] [main] o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker:? Bean 'org.springframework.ws.config.annotation.DelegatingWsConfiguration' of type [org.springframework.ws.config.annotation.DelegatingWsConfiguration$$EnhancerBySpringCGLIB$$3cfd0ef4] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying) -2018-04-22 19:08:59,467 [INFO] [main] o.s.w.s.a.s.AnnotationActionEndpointMapping:? Supporting [WS-Addressing August 2004, WS-Addressing 1.0] -2018-04-22 19:08:59,801 [INFO] [main] o.s.b.c.e.t.TomcatEmbeddedServletContainer:? Tomcat initialized with port(s): 8080 (http) -2018-04-22 19:08:59,812 [INFO] [main] o.a.c.c.StandardService:? Starting service [Tomcat] -2018-04-22 19:08:59,813 [INFO] [main] o.a.c.c.StandardEngine:? Starting Servlet Engine: Apache Tomcat/8.5.23 -2018-04-22 19:08:59,939 [INFO] [localhost-startStop-1] o.a.c.c.C.[.[.[/]:? Initializing Spring embedded WebApplicationContext -2018-04-22 19:08:59,939 [INFO] [localhost-startStop-1] o.s.w.c.ContextLoader:? Root WebApplicationContext: initialization completed in 1438 ms -2018-04-22 19:08:59,949 [INFO] [localhost-startStop-1] o.l.l.m.c.DruidConfig:? init Druid Servlet Configuration -2018-04-22 19:09:00,089 [INFO] [localhost-startStop-1] o.s.b.w.s.ServletRegistrationBean:? Mapping servlet: 'statViewServlet' to [/druid/*] -2018-04-22 19:09:00,090 [INFO] [localhost-startStop-1] o.s.b.w.s.ServletRegistrationBean:? Mapping servlet: 'dispatcherServlet' to [/] -2018-04-22 19:09:00,090 [INFO] [localhost-startStop-1] o.s.b.w.s.ServletRegistrationBean:? Mapping servlet: 'statViewServlet' to [/druid/*] -2018-04-22 19:09:00,090 [INFO] [localhost-startStop-1] o.s.b.w.s.ServletRegistrationBean:? Servlet statViewServlet was not registered (possibly already registered?) -2018-04-22 19:09:00,090 [INFO] [localhost-startStop-1] o.s.b.w.s.ServletRegistrationBean:? Mapping servlet: 'messageDispatcherServlet' to [/services/*] -2018-04-22 19:09:00,093 [INFO] [localhost-startStop-1] o.s.b.w.s.FilterRegistrationBean:? Mapping filter: 'characterEncodingFilter' to: [/*] -2018-04-22 19:09:00,093 [INFO] [localhost-startStop-1] o.s.b.w.s.FilterRegistrationBean:? Mapping filter: 'hiddenHttpMethodFilter' to: [/*] -2018-04-22 19:09:00,093 [INFO] [localhost-startStop-1] o.s.b.w.s.FilterRegistrationBean:? Mapping filter: 'httpPutFormContentFilter' to: [/*] -2018-04-22 19:09:00,093 [INFO] [localhost-startStop-1] o.s.b.w.s.FilterRegistrationBean:? Mapping filter: 'requestContextFilter' to: [/*] -2018-04-22 19:09:00,093 [INFO] [localhost-startStop-1] o.s.b.w.s.FilterRegistrationBean:? Mapping filter: 'webStatFilter' to urls: [/*] -2018-04-22 19:09:00,093 [INFO] [localhost-startStop-1] o.s.b.w.s.FilterRegistrationBean:? Filter webStatFilter was not registered (possibly already registered?) -2018-04-22 19:09:00,161 [INFO] [main] c.a.d.s.b.a.DruidDataSourceAutoConfigure:? Init DruidDataSource -2018-04-22 19:09:00,878 [DEBUG] [main] d.s.Connection:? {conn-10001} connected -2018-04-22 19:09:00,883 [DEBUG] [main] d.s.Connection:? {conn-10002} connected -2018-04-22 19:09:00,887 [DEBUG] [main] d.s.Connection:? {conn-10003} connected -2018-04-22 19:09:00,890 [DEBUG] [main] d.s.Connection:? {conn-10004} connected -2018-04-22 19:09:00,893 [DEBUG] [main] d.s.Connection:? {conn-10005} connected -2018-04-22 19:09:00,896 [INFO] [main] c.a.d.p.DruidDataSource:? {dataSource-1} inited -2018-04-22 19:09:01,309 [INFO] [main] o.s.w.s.m.m.a.RequestMappingHandlerAdapter:? Looking for @ControllerAdvice: org.springframework.boot.context.embedded.AnnotationConfigEmbeddedWebApplicationContext@4b520ea8: startup date [Sun Apr 22 19:08:58 CST 2018]; root of context hierarchy -2018-04-22 19:09:01,376 [INFO] [main] o.s.w.s.m.m.a.RequestMappingHandlerMapping:? Mapped "{[/query/{id}],methods=[GET]}" onto public org.laidu.learn.mybatis.model.AppUser org.laidu.learn.mybatis.controller.UserInfoController.queryById(java.lang.Long) -2018-04-22 19:09:01,379 [INFO] [main] o.s.w.s.m.m.a.RequestMappingHandlerMapping:? Mapped "{[/error],produces=[text/html]}" onto public org.springframework.web.servlet.ModelAndView org.springframework.boot.autoconfigure.web.BasicErrorController.errorHtml(javax.servlet.http.HttpServletRequest,javax.servlet.http.HttpServletResponse) -2018-04-22 19:09:01,379 [INFO] [main] o.s.w.s.m.m.a.RequestMappingHandlerMapping:? Mapped "{[/error]}" onto public org.springframework.http.ResponseEntity> org.springframework.boot.autoconfigure.web.BasicErrorController.error(javax.servlet.http.HttpServletRequest) -2018-04-22 19:09:01,417 [INFO] [main] o.s.w.s.h.SimpleUrlHandlerMapping:? Mapped URL path [/webjars/**] onto handler of type [class org.springframework.web.servlet.resource.ResourceHttpRequestHandler] -2018-04-22 19:09:01,417 [INFO] [main] o.s.w.s.h.SimpleUrlHandlerMapping:? Mapped URL path [/**] onto handler of type [class org.springframework.web.servlet.resource.ResourceHttpRequestHandler] -2018-04-22 19:09:01,466 [INFO] [main] o.s.w.s.h.SimpleUrlHandlerMapping:? Mapped URL path [/**/favicon.ico] onto handler of type [class org.springframework.web.servlet.resource.ResourceHttpRequestHandler] -2018-04-22 19:09:01,855 [INFO] [main] o.s.j.e.a.AnnotationMBeanExporter:? Registering beans for JMX exposure on startup -2018-04-22 19:09:01,856 [INFO] [main] o.s.j.e.a.AnnotationMBeanExporter:? Bean with name 'logFilter' has been autodetected for JMX exposure -2018-04-22 19:09:01,857 [INFO] [main] o.s.j.e.a.AnnotationMBeanExporter:? Bean with name 'statFilter' has been autodetected for JMX exposure -2018-04-22 19:09:01,857 [INFO] [main] o.s.j.e.a.AnnotationMBeanExporter:? Bean with name 'dataSource' has been autodetected for JMX exposure -2018-04-22 19:09:01,862 [INFO] [main] o.s.j.e.a.AnnotationMBeanExporter:? Located MBean 'logFilter': registering with JMX server as MBean [com.alibaba.druid.filter.logging:name=logFilter,type=Slf4jLogFilter] -2018-04-22 19:09:01,863 [INFO] [main] o.s.j.e.a.AnnotationMBeanExporter:? Located MBean 'dataSource': registering with JMX server as MBean [com.alibaba.druid.spring.boot.autoconfigure:name=dataSource,type=DruidDataSourceWrapper] -2018-04-22 19:09:01,864 [INFO] [main] o.s.j.e.a.AnnotationMBeanExporter:? Located MBean 'statFilter': registering with JMX server as MBean [com.alibaba.druid.filter.stat:name=statFilter,type=StatFilter] -2018-04-22 19:09:01,878 [INFO] [main] o.a.c.h.Http11NioProtocol:? Initializing ProtocolHandler ["http-nio-8080"] -2018-04-22 19:09:01,889 [INFO] [main] o.a.c.h.Http11NioProtocol:? Starting ProtocolHandler ["http-nio-8080"] -2018-04-22 19:09:01,894 [INFO] [main] o.a.t.u.n.NioSelectorPool:? Using a shared selector for servlet write/read -2018-04-22 19:09:01,912 [INFO] [main] o.s.b.c.e.t.TomcatEmbeddedServletContainer:? Tomcat started on port(s): 8080 (http) -2018-04-22 19:09:01,916 [INFO] [main] o.l.l.m.Application:? Started Application in 3.809 seconds (JVM running for 4.132) -2018-04-22 19:09:14,860 [INFO] [http-nio-8080-exec-7] o.a.c.c.C.[.[.[/]:? Initializing Spring FrameworkServlet 'dispatcherServlet' -2018-04-22 19:09:14,860 [INFO] [http-nio-8080-exec-7] o.s.w.s.DispatcherServlet:? FrameworkServlet 'dispatcherServlet': initialization started -2018-04-22 19:09:14,876 [INFO] [http-nio-8080-exec-7] o.s.w.s.DispatcherServlet:? FrameworkServlet 'dispatcherServlet': initialization completed in 15 ms -2018-04-22 19:09:14,924 [DEBUG] [http-nio-8080-exec-7] d.s.Connection:? {conn-10005} pool-connect -2018-04-22 19:09:15,034 [DEBUG] [http-nio-8080-exec-7] d.sql.Statement:? {conn-10005, pstmt-20000} created. select id, open_id, register_channel, username, id_card, name, id_card_detail_address, is_verify_id_card, id_card_coverup, id_card_coverdown, id_card_hold, is_other_picture_auth, is_bankcard_auth, signature_pic, is_additional_auth, is_emergency_auth, phone, email, address, user_status, create_time, update_time, remark, id_card_police from ca_app_user where id = ? -2018-04-22 19:09:15,039 [DEBUG] [http-nio-8080-exec-7] d.sql.Statement:? {conn-10005, pstmt-20000} Parameters : [6] -2018-04-22 19:09:15,039 [DEBUG] [http-nio-8080-exec-7] d.sql.Statement:? {conn-10005, pstmt-20000} Types : [BIGINT] -2018-04-22 19:09:15,059 [DEBUG] [http-nio-8080-exec-7] d.sql.Statement:? {conn-10005, pstmt-20000} executed. select id, open_id, register_channel, username, id_card - , name, id_card_detail_address, is_verify_id_card, id_card_coverup, id_card_coverdown - , id_card_hold, is_other_picture_auth, is_bankcard_auth, signature_pic, is_additional_auth - , is_emergency_auth, phone, email, address, user_status - , create_time, update_time, remark, id_card_police -from ca_app_user -where id = 6 -2018-04-22 19:09:15,059 [DEBUG] [http-nio-8080-exec-7] d.sql.Statement:? {conn-10005, pstmt-20000} executed. 20.511951 millis. select id, open_id, register_channel, username, id_card, name, id_card_detail_address, is_verify_id_card, id_card_coverup, id_card_coverdown, id_card_hold, is_other_picture_auth, is_bankcard_auth, signature_pic, is_additional_auth, is_emergency_auth, phone, email, address, user_status, create_time, update_time, remark, id_card_police from ca_app_user where id = ? -2018-04-22 19:09:15,059 [DEBUG] [http-nio-8080-exec-7] d.sql.Statement:? {conn-10005, pstmt-20000} executed. select id, open_id, register_channel, username, id_card - , name, id_card_detail_address, is_verify_id_card, id_card_coverup, id_card_coverdown - , id_card_hold, is_other_picture_auth, is_bankcard_auth, signature_pic, is_additional_auth - , is_emergency_auth, phone, email, address, user_status - , create_time, update_time, remark, id_card_police -from ca_app_user -where id = 6 -2018-04-22 19:09:15,059 [DEBUG] [http-nio-8080-exec-7] d.sql.Statement:? {conn-10005, pstmt-20000} executed. 20.584957 millis. select id, open_id, register_channel, username, id_card, name, id_card_detail_address, is_verify_id_card, id_card_coverup, id_card_coverdown, id_card_hold, is_other_picture_auth, is_bankcard_auth, signature_pic, is_additional_auth, is_emergency_auth, phone, email, address, user_status, create_time, update_time, remark, id_card_police from ca_app_user where id = ? -2018-04-22 19:09:15,071 [DEBUG] [http-nio-8080-exec-7] d.sql.Statement:? {conn-10005, pstmt-20000} clearParameters. -2018-04-22 19:09:15,071 [DEBUG] [http-nio-8080-exec-7] d.s.Connection:? {conn-10005} pool-recycle -2018-04-22 19:09:17,615 [DEBUG] [http-nio-8080-exec-9] d.s.Connection:? {conn-10005} pool-connect -2018-04-22 19:09:17,615 [DEBUG] [http-nio-8080-exec-9] d.sql.Statement:? {conn-10005, pstmt-20000} Parameters : [6] -2018-04-22 19:09:17,616 [DEBUG] [http-nio-8080-exec-9] d.sql.Statement:? {conn-10005, pstmt-20000} Types : [BIGINT] -2018-04-22 19:09:17,617 [DEBUG] [http-nio-8080-exec-9] d.sql.Statement:? {conn-10005, pstmt-20000} executed. select id, open_id, register_channel, username, id_card - , name, id_card_detail_address, is_verify_id_card, id_card_coverup, id_card_coverdown - , id_card_hold, is_other_picture_auth, is_bankcard_auth, signature_pic, is_additional_auth - , is_emergency_auth, phone, email, address, user_status - , create_time, update_time, remark, id_card_police -from ca_app_user -where id = 6 -2018-04-22 19:09:17,617 [DEBUG] [http-nio-8080-exec-9] d.sql.Statement:? {conn-10005, pstmt-20000} executed. 1.567626 millis. select id, open_id, register_channel, username, id_card, name, id_card_detail_address, is_verify_id_card, id_card_coverup, id_card_coverdown, id_card_hold, is_other_picture_auth, is_bankcard_auth, signature_pic, is_additional_auth, is_emergency_auth, phone, email, address, user_status, create_time, update_time, remark, id_card_police from ca_app_user where id = ? -2018-04-22 19:09:17,618 [DEBUG] [http-nio-8080-exec-9] d.sql.Statement:? {conn-10005, pstmt-20000} executed. select id, open_id, register_channel, username, id_card - , name, id_card_detail_address, is_verify_id_card, id_card_coverup, id_card_coverdown - , id_card_hold, is_other_picture_auth, is_bankcard_auth, signature_pic, is_additional_auth - , is_emergency_auth, phone, email, address, user_status - , create_time, update_time, remark, id_card_police -from ca_app_user -where id = 6 -2018-04-22 19:09:17,618 [DEBUG] [http-nio-8080-exec-9] d.sql.Statement:? {conn-10005, pstmt-20000} executed. 1.61479 millis. select id, open_id, register_channel, username, id_card, name, id_card_detail_address, is_verify_id_card, id_card_coverup, id_card_coverdown, id_card_hold, is_other_picture_auth, is_bankcard_auth, signature_pic, is_additional_auth, is_emergency_auth, phone, email, address, user_status, create_time, update_time, remark, id_card_police from ca_app_user where id = ? -2018-04-22 19:09:17,620 [DEBUG] [http-nio-8080-exec-9] d.sql.Statement:? {conn-10005, pstmt-20000} clearParameters. -2018-04-22 19:09:17,620 [DEBUG] [http-nio-8080-exec-9] d.s.Connection:? {conn-10005} pool-recycle -2018-04-22 19:09:18,692 [DEBUG] [http-nio-8080-exec-2] d.s.Connection:? {conn-10005} pool-connect -2018-04-22 19:09:18,692 [DEBUG] [http-nio-8080-exec-2] d.sql.Statement:? {conn-10005, pstmt-20000} Parameters : [6] -2018-04-22 19:09:18,692 [DEBUG] [http-nio-8080-exec-2] d.sql.Statement:? {conn-10005, pstmt-20000} Types : [BIGINT] -2018-04-22 19:09:18,693 [DEBUG] [http-nio-8080-exec-2] d.sql.Statement:? {conn-10005, pstmt-20000} executed. select id, open_id, register_channel, username, id_card - , name, id_card_detail_address, is_verify_id_card, id_card_coverup, id_card_coverdown - , id_card_hold, is_other_picture_auth, is_bankcard_auth, signature_pic, is_additional_auth - , is_emergency_auth, phone, email, address, user_status - , create_time, update_time, remark, id_card_police -from ca_app_user -where id = 6 -2018-04-22 19:09:18,694 [DEBUG] [http-nio-8080-exec-2] d.sql.Statement:? {conn-10005, pstmt-20000} executed. 1.443395 millis. select id, open_id, register_channel, username, id_card, name, id_card_detail_address, is_verify_id_card, id_card_coverup, id_card_coverdown, id_card_hold, is_other_picture_auth, is_bankcard_auth, signature_pic, is_additional_auth, is_emergency_auth, phone, email, address, user_status, create_time, update_time, remark, id_card_police from ca_app_user where id = ? -2018-04-22 19:09:18,694 [DEBUG] [http-nio-8080-exec-2] d.sql.Statement:? {conn-10005, pstmt-20000} executed. select id, open_id, register_channel, username, id_card - , name, id_card_detail_address, is_verify_id_card, id_card_coverup, id_card_coverdown - , id_card_hold, is_other_picture_auth, is_bankcard_auth, signature_pic, is_additional_auth - , is_emergency_auth, phone, email, address, user_status - , create_time, update_time, remark, id_card_police -from ca_app_user -where id = 6 -2018-04-22 19:09:18,694 [DEBUG] [http-nio-8080-exec-2] d.sql.Statement:? {conn-10005, pstmt-20000} executed. 1.487809 millis. select id, open_id, register_channel, username, id_card, name, id_card_detail_address, is_verify_id_card, id_card_coverup, id_card_coverdown, id_card_hold, is_other_picture_auth, is_bankcard_auth, signature_pic, is_additional_auth, is_emergency_auth, phone, email, address, user_status, create_time, update_time, remark, id_card_police from ca_app_user where id = ? -2018-04-22 19:09:18,696 [DEBUG] [http-nio-8080-exec-2] d.sql.Statement:? {conn-10005, pstmt-20000} clearParameters. -2018-04-22 19:09:18,697 [DEBUG] [http-nio-8080-exec-2] d.s.Connection:? {conn-10005} pool-recycle -2018-04-22 20:35:08,010 [DEBUG] [http-nio-8080-exec-6] d.s.Connection:? {conn-10005} pool-connect -2018-04-22 20:35:08,011 [DEBUG] [http-nio-8080-exec-6] d.sql.Statement:? {conn-10005, pstmt-20000} Parameters : [6] -2018-04-22 20:35:08,011 [DEBUG] [http-nio-8080-exec-6] d.sql.Statement:? {conn-10005, pstmt-20000} Types : [BIGINT] -2018-04-22 20:35:08,107 [DEBUG] [http-nio-8080-exec-6] d.sql.Statement:? {conn-10005, pstmt-20000} executed. select id, open_id, register_channel, username, id_card - , name, id_card_detail_address, is_verify_id_card, id_card_coverup, id_card_coverdown - , id_card_hold, is_other_picture_auth, is_bankcard_auth, signature_pic, is_additional_auth - , is_emergency_auth, phone, email, address, user_status - , create_time, update_time, remark, id_card_police -from ca_app_user -where id = 6 -2018-04-22 20:35:08,107 [DEBUG] [http-nio-8080-exec-6] d.sql.Statement:? {conn-10005, pstmt-20000} executed. 96.664173 millis. select id, open_id, register_channel, username, id_card, name, id_card_detail_address, is_verify_id_card, id_card_coverup, id_card_coverdown, id_card_hold, is_other_picture_auth, is_bankcard_auth, signature_pic, is_additional_auth, is_emergency_auth, phone, email, address, user_status, create_time, update_time, remark, id_card_police from ca_app_user where id = ? -2018-04-22 20:35:08,108 [DEBUG] [http-nio-8080-exec-6] d.sql.Statement:? {conn-10005, pstmt-20000} executed. select id, open_id, register_channel, username, id_card - , name, id_card_detail_address, is_verify_id_card, id_card_coverup, id_card_coverdown - , id_card_hold, is_other_picture_auth, is_bankcard_auth, signature_pic, is_additional_auth - , is_emergency_auth, phone, email, address, user_status - , create_time, update_time, remark, id_card_police -from ca_app_user -where id = 6 -2018-04-22 20:35:08,108 [DEBUG] [http-nio-8080-exec-6] d.sql.Statement:? {conn-10005, pstmt-20000} executed. 96.732418 millis. select id, open_id, register_channel, username, id_card, name, id_card_detail_address, is_verify_id_card, id_card_coverup, id_card_coverdown, id_card_hold, is_other_picture_auth, is_bankcard_auth, signature_pic, is_additional_auth, is_emergency_auth, phone, email, address, user_status, create_time, update_time, remark, id_card_police from ca_app_user where id = ? -2018-04-22 20:35:08,110 [DEBUG] [http-nio-8080-exec-6] d.sql.Statement:? {conn-10005, pstmt-20000} clearParameters. -2018-04-22 20:35:08,110 [DEBUG] [http-nio-8080-exec-6] d.s.Connection:? {conn-10005} pool-recycle -2018-04-22 20:35:35,276 [DEBUG] [http-nio-8080-exec-8] d.s.Connection:? {conn-10005} pool-connect -2018-04-22 20:35:35,276 [DEBUG] [http-nio-8080-exec-8] d.sql.Statement:? {conn-10005, pstmt-20000} Parameters : [6] -2018-04-22 20:35:35,276 [DEBUG] [http-nio-8080-exec-8] d.sql.Statement:? {conn-10005, pstmt-20000} Types : [BIGINT] -2018-04-22 20:35:35,277 [DEBUG] [http-nio-8080-exec-8] d.sql.Statement:? {conn-10005, pstmt-20000} executed. select id, open_id, register_channel, username, id_card - , name, id_card_detail_address, is_verify_id_card, id_card_coverup, id_card_coverdown - , id_card_hold, is_other_picture_auth, is_bankcard_auth, signature_pic, is_additional_auth - , is_emergency_auth, phone, email, address, user_status - , create_time, update_time, remark, id_card_police -from ca_app_user -where id = 6 -2018-04-22 20:35:35,277 [DEBUG] [http-nio-8080-exec-8] d.sql.Statement:? {conn-10005, pstmt-20000} executed. 1.530359 millis. select id, open_id, register_channel, username, id_card, name, id_card_detail_address, is_verify_id_card, id_card_coverup, id_card_coverdown, id_card_hold, is_other_picture_auth, is_bankcard_auth, signature_pic, is_additional_auth, is_emergency_auth, phone, email, address, user_status, create_time, update_time, remark, id_card_police from ca_app_user where id = ? -2018-04-22 20:35:35,278 [DEBUG] [http-nio-8080-exec-8] d.sql.Statement:? {conn-10005, pstmt-20000} executed. select id, open_id, register_channel, username, id_card - , name, id_card_detail_address, is_verify_id_card, id_card_coverup, id_card_coverdown - , id_card_hold, is_other_picture_auth, is_bankcard_auth, signature_pic, is_additional_auth - , is_emergency_auth, phone, email, address, user_status - , create_time, update_time, remark, id_card_police -from ca_app_user -where id = 6 -2018-04-22 20:35:35,278 [DEBUG] [http-nio-8080-exec-8] d.sql.Statement:? {conn-10005, pstmt-20000} executed. 1.588714 millis. select id, open_id, register_channel, username, id_card, name, id_card_detail_address, is_verify_id_card, id_card_coverup, id_card_coverdown, id_card_hold, is_other_picture_auth, is_bankcard_auth, signature_pic, is_additional_auth, is_emergency_auth, phone, email, address, user_status, create_time, update_time, remark, id_card_police from ca_app_user where id = ? -2018-04-22 20:35:35,279 [DEBUG] [http-nio-8080-exec-8] d.sql.Statement:? {conn-10005, pstmt-20000} clearParameters. -2018-04-22 20:35:35,279 [DEBUG] [http-nio-8080-exec-8] d.s.Connection:? {conn-10005} pool-recycle -2018-04-22 20:35:50,000 [INFO] [Thread-4] o.s.b.c.e.AnnotationConfigEmbeddedWebApplicationContext:? Closing org.springframework.boot.context.embedded.AnnotationConfigEmbeddedWebApplicationContext@4b520ea8: startup date [Sun Apr 22 19:08:58 CST 2018]; root of context hierarchy -2018-04-22 20:35:50,001 [INFO] [Thread-4] o.s.j.e.a.AnnotationMBeanExporter:? Unregistering JMX-exposed beans on shutdown -2018-04-22 20:35:50,001 [INFO] [Thread-4] o.s.j.e.a.AnnotationMBeanExporter:? Unregistering JMX-exposed beans -2018-04-22 20:35:50,004 [DEBUG] [Thread-4] d.s.Connection:? {conn-10001} closed -2018-04-22 20:35:50,004 [DEBUG] [Thread-4] d.s.Connection:? {conn-10002} closed -2018-04-22 20:35:50,004 [DEBUG] [Thread-4] d.s.Connection:? {conn-10003} closed -2018-04-22 20:35:50,005 [DEBUG] [Thread-4] d.s.Connection:? {conn-10004} closed -2018-04-22 20:35:50,005 [DEBUG] [Thread-4] d.sql.Statement:? {conn-10005, pstmt-20000} closed -2018-04-22 20:35:50,005 [DEBUG] [Thread-4] d.s.Connection:? {conn-10005} closed -2018-04-22 20:35:50,005 [INFO] [Thread-4] c.a.d.p.DruidDataSource:? {dataSource-1} closed -2018-04-22 20:35:51,693 [INFO] [main] o.l.l.m.Application:48 Starting Application on laidu-pc with PID 11095 (/home/laidu/IdeaProjects/java-learn/framework/spring/spring-data/spring-mybatis/target/classes started by laidu in /home/laidu/IdeaProjects/java-learn) -2018-04-22 20:35:51,699 [INFO] [main] o.l.l.m.Application:593 No active profile set, falling back to default profiles: default -2018-04-22 20:35:51,764 [INFO] [main] o.s.b.c.e.AnnotationConfigEmbeddedWebApplicationContext:583 Refreshing org.springframework.boot.context.embedded.AnnotationConfigEmbeddedWebApplicationContext@4b520ea8: startup date [Sun Apr 22 20:35:51 CST 2018]; root of context hierarchy -2018-04-22 20:35:51,990 [INFO] [background-preinit] o.h.v.i.u.Version:30 HV000001: Hibernate Validator 5.3.6.Final -2018-04-22 20:35:52,628 [INFO] [main] o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker:327 Bean 'org.springframework.ws.config.annotation.DelegatingWsConfiguration' of type [org.springframework.ws.config.annotation.DelegatingWsConfiguration$$EnhancerBySpringCGLIB$$1e01f25e] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying) -2018-04-22 20:35:52,660 [INFO] [main] o.s.w.s.a.s.AnnotationActionEndpointMapping:236 Supporting [WS-Addressing August 2004, WS-Addressing 1.0] -2018-04-22 20:35:53,026 [INFO] [main] o.s.b.c.e.t.TomcatEmbeddedServletContainer:89 Tomcat initialized with port(s): 8080 (http) -2018-04-22 20:35:53,038 [INFO] [main] o.a.c.c.StandardService:179 Starting service [Tomcat] -2018-04-22 20:35:53,038 [INFO] [main] o.a.c.c.StandardEngine:179 Starting Servlet Engine: Apache Tomcat/8.5.23 -2018-04-22 20:35:53,138 [INFO] [localhost-startStop-1] o.a.c.c.C.[.[.[/]:179 Initializing Spring embedded WebApplicationContext -2018-04-22 20:35:53,138 [INFO] [localhost-startStop-1] o.s.w.c.ContextLoader:276 Root WebApplicationContext: initialization completed in 1374 ms -2018-04-22 20:35:53,148 [INFO] [localhost-startStop-1] o.l.l.m.c.DruidConfig:47 init Druid Servlet Configuration -2018-04-22 20:35:53,339 [INFO] [localhost-startStop-1] o.s.b.w.s.ServletRegistrationBean:190 Mapping servlet: 'statViewServlet' to [/druid/*] -2018-04-22 20:35:53,342 [INFO] [localhost-startStop-1] o.s.b.w.s.ServletRegistrationBean:190 Mapping servlet: 'dispatcherServlet' to [/] -2018-04-22 20:35:53,342 [INFO] [localhost-startStop-1] o.s.b.w.s.ServletRegistrationBean:190 Mapping servlet: 'statViewServlet' to [/druid/*] -2018-04-22 20:35:53,343 [INFO] [localhost-startStop-1] o.s.b.w.s.ServletRegistrationBean:193 Servlet statViewServlet was not registered (possibly already registered?) -2018-04-22 20:35:53,343 [INFO] [localhost-startStop-1] o.s.b.w.s.ServletRegistrationBean:190 Mapping servlet: 'messageDispatcherServlet' to [/services/*] -2018-04-22 20:35:53,347 [INFO] [localhost-startStop-1] o.s.b.w.s.FilterRegistrationBean:258 Mapping filter: 'characterEncodingFilter' to: [/*] -2018-04-22 20:35:53,347 [INFO] [localhost-startStop-1] o.s.b.w.s.FilterRegistrationBean:258 Mapping filter: 'hiddenHttpMethodFilter' to: [/*] -2018-04-22 20:35:53,348 [INFO] [localhost-startStop-1] o.s.b.w.s.FilterRegistrationBean:258 Mapping filter: 'httpPutFormContentFilter' to: [/*] -2018-04-22 20:35:53,348 [INFO] [localhost-startStop-1] o.s.b.w.s.FilterRegistrationBean:258 Mapping filter: 'requestContextFilter' to: [/*] -2018-04-22 20:35:53,348 [INFO] [localhost-startStop-1] o.s.b.w.s.FilterRegistrationBean:271 Mapping filter: 'webStatFilter' to urls: [/*] -2018-04-22 20:35:53,348 [INFO] [localhost-startStop-1] o.s.b.w.s.FilterRegistrationBean:227 Filter webStatFilter was not registered (possibly already registered?) -2018-04-22 20:35:53,432 [INFO] [main] c.a.d.s.b.a.DruidDataSourceAutoConfigure:56 Init DruidDataSource -2018-04-22 20:35:54,270 [DEBUG] [main] d.s.Connection:? {conn-10001} connected -2018-04-22 20:35:54,274 [DEBUG] [main] d.s.Connection:? {conn-10002} connected -2018-04-22 20:35:54,278 [DEBUG] [main] d.s.Connection:? {conn-10003} connected -2018-04-22 20:35:54,281 [DEBUG] [main] d.s.Connection:? {conn-10004} connected -2018-04-22 20:35:54,284 [DEBUG] [main] d.s.Connection:? {conn-10005} connected -2018-04-22 20:35:54,287 [INFO] [main] c.a.d.p.DruidDataSource:928 {dataSource-1} inited -2018-04-22 20:35:54,683 [INFO] [main] o.s.w.s.m.m.a.RequestMappingHandlerAdapter:534 Looking for @ControllerAdvice: org.springframework.boot.context.embedded.AnnotationConfigEmbeddedWebApplicationContext@4b520ea8: startup date [Sun Apr 22 20:35:51 CST 2018]; root of context hierarchy -2018-04-22 20:35:54,743 [INFO] [main] o.s.w.s.m.m.a.RequestMappingHandlerMapping:543 Mapped "{[/query/{id}],methods=[GET]}" onto public org.laidu.learn.mybatis.model.AppUser org.laidu.learn.mybatis.controller.UserInfoController.queryById(java.lang.Long) -2018-04-22 20:35:54,748 [INFO] [main] o.s.w.s.m.m.a.RequestMappingHandlerMapping:543 Mapped "{[/error],produces=[text/html]}" onto public org.springframework.web.servlet.ModelAndView org.springframework.boot.autoconfigure.web.BasicErrorController.errorHtml(javax.servlet.http.HttpServletRequest,javax.servlet.http.HttpServletResponse) -2018-04-22 20:35:54,749 [INFO] [main] o.s.w.s.m.m.a.RequestMappingHandlerMapping:543 Mapped "{[/error]}" onto public org.springframework.http.ResponseEntity> org.springframework.boot.autoconfigure.web.BasicErrorController.error(javax.servlet.http.HttpServletRequest) -2018-04-22 20:35:54,780 [INFO] [main] o.s.w.s.h.SimpleUrlHandlerMapping:362 Mapped URL path [/webjars/**] onto handler of type [class org.springframework.web.servlet.resource.ResourceHttpRequestHandler] -2018-04-22 20:35:54,781 [INFO] [main] o.s.w.s.h.SimpleUrlHandlerMapping:362 Mapped URL path [/**] onto handler of type [class org.springframework.web.servlet.resource.ResourceHttpRequestHandler] -2018-04-22 20:35:54,820 [INFO] [main] o.s.w.s.h.SimpleUrlHandlerMapping:362 Mapped URL path [/**/favicon.ico] onto handler of type [class org.springframework.web.servlet.resource.ResourceHttpRequestHandler] -2018-04-22 20:35:55,229 [INFO] [main] o.s.j.e.a.AnnotationMBeanExporter:431 Registering beans for JMX exposure on startup -2018-04-22 20:35:55,230 [INFO] [main] o.s.j.e.a.AnnotationMBeanExporter:916 Bean with name 'logFilter' has been autodetected for JMX exposure -2018-04-22 20:35:55,231 [INFO] [main] o.s.j.e.a.AnnotationMBeanExporter:916 Bean with name 'statFilter' has been autodetected for JMX exposure -2018-04-22 20:35:55,231 [INFO] [main] o.s.j.e.a.AnnotationMBeanExporter:916 Bean with name 'dataSource' has been autodetected for JMX exposure -2018-04-22 20:35:55,235 [INFO] [main] o.s.j.e.a.AnnotationMBeanExporter:671 Located MBean 'logFilter': registering with JMX server as MBean [com.alibaba.druid.filter.logging:name=logFilter,type=Slf4jLogFilter] -2018-04-22 20:35:55,237 [INFO] [main] o.s.j.e.a.AnnotationMBeanExporter:671 Located MBean 'dataSource': registering with JMX server as MBean [com.alibaba.druid.spring.boot.autoconfigure:name=dataSource,type=DruidDataSourceWrapper] -2018-04-22 20:35:55,237 [INFO] [main] o.s.j.e.a.AnnotationMBeanExporter:671 Located MBean 'statFilter': registering with JMX server as MBean [com.alibaba.druid.filter.stat:name=statFilter,type=StatFilter] -2018-04-22 20:35:55,251 [INFO] [main] o.a.c.h.Http11NioProtocol:179 Initializing ProtocolHandler ["http-nio-8080"] -2018-04-22 20:35:55,262 [INFO] [main] o.a.c.h.Http11NioProtocol:179 Starting ProtocolHandler ["http-nio-8080"] -2018-04-22 20:35:55,267 [INFO] [main] o.a.t.u.n.NioSelectorPool:179 Using a shared selector for servlet write/read -2018-04-22 20:35:55,287 [INFO] [main] o.s.b.c.e.t.TomcatEmbeddedServletContainer:201 Tomcat started on port(s): 8080 (http) -2018-04-22 20:35:55,291 [INFO] [main] o.l.l.m.Application:57 Started Application in 4.116 seconds (JVM running for 4.636) -2018-04-22 20:36:00,172 [INFO] [http-nio-8080-exec-1] o.a.c.c.C.[.[.[/]:179 Initializing Spring FrameworkServlet 'dispatcherServlet' -2018-04-22 20:36:00,172 [INFO] [http-nio-8080-exec-1] o.s.w.s.DispatcherServlet:489 FrameworkServlet 'dispatcherServlet': initialization started -2018-04-22 20:36:00,189 [INFO] [http-nio-8080-exec-1] o.s.w.s.DispatcherServlet:508 FrameworkServlet 'dispatcherServlet': initialization completed in 17 ms -2018-04-22 20:36:00,233 [DEBUG] [http-nio-8080-exec-1] d.s.Connection:? {conn-10005} pool-connect -2018-04-22 20:36:00,342 [DEBUG] [http-nio-8080-exec-1] d.sql.Statement:? {conn-10005, pstmt-20000} created. select id, open_id, register_channel, username, id_card, name, id_card_detail_address, is_verify_id_card, id_card_coverup, id_card_coverdown, id_card_hold, is_other_picture_auth, is_bankcard_auth, signature_pic, is_additional_auth, is_emergency_auth, phone, email, address, user_status, create_time, update_time, remark, id_card_police from ca_app_user where id = ? -2018-04-22 20:36:00,348 [DEBUG] [http-nio-8080-exec-1] d.sql.Statement:? {conn-10005, pstmt-20000} Parameters : [6] -2018-04-22 20:36:00,348 [DEBUG] [http-nio-8080-exec-1] d.sql.Statement:? {conn-10005, pstmt-20000} Types : [BIGINT] -2018-04-22 20:36:00,369 [DEBUG] [http-nio-8080-exec-1] d.sql.Statement:? {conn-10005, pstmt-20000} executed. select id, open_id, register_channel, username, id_card - , name, id_card_detail_address, is_verify_id_card, id_card_coverup, id_card_coverdown - , id_card_hold, is_other_picture_auth, is_bankcard_auth, signature_pic, is_additional_auth - , is_emergency_auth, phone, email, address, user_status - , create_time, update_time, remark, id_card_police -from ca_app_user -where id = 6 -2018-04-22 20:36:00,369 [DEBUG] [http-nio-8080-exec-1] d.sql.Statement:? {conn-10005, pstmt-20000} executed. 22.038192 millis. select id, open_id, register_channel, username, id_card, name, id_card_detail_address, is_verify_id_card, id_card_coverup, id_card_coverdown, id_card_hold, is_other_picture_auth, is_bankcard_auth, signature_pic, is_additional_auth, is_emergency_auth, phone, email, address, user_status, create_time, update_time, remark, id_card_police from ca_app_user where id = ? -2018-04-22 20:36:00,369 [DEBUG] [http-nio-8080-exec-1] d.sql.Statement:? {conn-10005, pstmt-20000} executed. select id, open_id, register_channel, username, id_card - , name, id_card_detail_address, is_verify_id_card, id_card_coverup, id_card_coverdown - , id_card_hold, is_other_picture_auth, is_bankcard_auth, signature_pic, is_additional_auth - , is_emergency_auth, phone, email, address, user_status - , create_time, update_time, remark, id_card_police -from ca_app_user -where id = 6 -2018-04-22 20:36:00,369 [DEBUG] [http-nio-8080-exec-1] d.sql.Statement:? {conn-10005, pstmt-20000} executed. 22.098017 millis. select id, open_id, register_channel, username, id_card, name, id_card_detail_address, is_verify_id_card, id_card_coverup, id_card_coverdown, id_card_hold, is_other_picture_auth, is_bankcard_auth, signature_pic, is_additional_auth, is_emergency_auth, phone, email, address, user_status, create_time, update_time, remark, id_card_police from ca_app_user where id = ? -2018-04-22 20:36:00,383 [DEBUG] [http-nio-8080-exec-1] d.sql.Statement:? {conn-10005, pstmt-20000} clearParameters. -2018-04-22 20:36:00,383 [DEBUG] [http-nio-8080-exec-1] d.s.Connection:? {conn-10005} pool-recycle -2018-04-22 20:36:14,739 [INFO] [Thread-4] o.s.b.c.e.AnnotationConfigEmbeddedWebApplicationContext:984 Closing org.springframework.boot.context.embedded.AnnotationConfigEmbeddedWebApplicationContext@4b520ea8: startup date [Sun Apr 22 20:35:51 CST 2018]; root of context hierarchy -2018-04-22 20:36:14,741 [INFO] [Thread-4] o.s.j.e.a.AnnotationMBeanExporter:449 Unregistering JMX-exposed beans on shutdown -2018-04-22 20:36:14,741 [INFO] [Thread-4] o.s.j.e.a.AnnotationMBeanExporter:241 Unregistering JMX-exposed beans -2018-04-22 20:36:14,743 [DEBUG] [Thread-4] d.s.Connection:? {conn-10001} closed -2018-04-22 20:36:14,743 [DEBUG] [Thread-4] d.s.Connection:? {conn-10002} closed -2018-04-22 20:36:14,744 [DEBUG] [Thread-4] d.s.Connection:? {conn-10003} closed -2018-04-22 20:36:14,744 [DEBUG] [Thread-4] d.s.Connection:? {conn-10004} closed -2018-04-22 20:36:14,744 [DEBUG] [Thread-4] d.sql.Statement:? {conn-10005, pstmt-20000} closed -2018-04-22 20:36:14,744 [DEBUG] [Thread-4] d.s.Connection:? {conn-10005} closed -2018-04-22 20:36:14,745 [INFO] [Thread-4] c.a.d.p.DruidDataSource:1823 {dataSource-1} closed diff --git a/LOG_PATH_IS_UNDEFINED/myAppName_IS_UNDEFINED-druid.log.2018-04-23 b/LOG_PATH_IS_UNDEFINED/myAppName_IS_UNDEFINED-druid.log.2018-04-23 deleted file mode 100644 index 218f1a591..000000000 --- a/LOG_PATH_IS_UNDEFINED/myAppName_IS_UNDEFINED-druid.log.2018-04-23 +++ /dev/null @@ -1,126 +0,0 @@ -2018-04-23 11:58:40,329 [INFO] [main] o.l.l.m.Application:48 Starting Application on laidu-pc with PID 11140 (/home/laidu/IdeaProjects/java-learn/framework/spring/spring-data/spring-mybatis/target/classes started by laidu in /home/laidu/IdeaProjects/java-learn) -2018-04-23 11:58:40,334 [INFO] [main] o.l.l.m.Application:593 No active profile set, falling back to default profiles: default -2018-04-23 11:58:40,421 [INFO] [main] o.s.b.c.e.AnnotationConfigEmbeddedWebApplicationContext:583 Refreshing org.springframework.boot.context.embedded.AnnotationConfigEmbeddedWebApplicationContext@4b520ea8: startup date [Mon Apr 23 11:58:40 CST 2018]; root of context hierarchy -2018-04-23 11:58:40,844 [INFO] [background-preinit] o.h.v.i.u.Version:30 HV000001: Hibernate Validator 5.3.6.Final -2018-04-23 11:58:41,453 [INFO] [main] o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker:327 Bean 'org.springframework.ws.config.annotation.DelegatingWsConfiguration' of type [org.springframework.ws.config.annotation.DelegatingWsConfiguration$$EnhancerBySpringCGLIB$$1e8c2f1d] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying) -2018-04-23 11:58:41,493 [INFO] [main] o.s.w.s.a.s.AnnotationActionEndpointMapping:236 Supporting [WS-Addressing August 2004, WS-Addressing 1.0] -2018-04-23 11:58:41,894 [INFO] [main] o.s.b.c.e.t.TomcatEmbeddedServletContainer:89 Tomcat initialized with port(s): 8080 (http) -2018-04-23 11:58:41,906 [INFO] [main] o.a.c.c.StandardService:179 Starting service [Tomcat] -2018-04-23 11:58:41,907 [INFO] [main] o.a.c.c.StandardEngine:179 Starting Servlet Engine: Apache Tomcat/8.5.23 -2018-04-23 11:58:42,008 [INFO] [localhost-startStop-1] o.a.c.c.C.[.[.[/]:179 Initializing Spring embedded WebApplicationContext -2018-04-23 11:58:42,008 [INFO] [localhost-startStop-1] o.s.w.c.ContextLoader:276 Root WebApplicationContext: initialization completed in 1587 ms -2018-04-23 11:58:42,022 [INFO] [localhost-startStop-1] o.l.l.m.c.DruidConfig:47 init Druid Servlet Configuration -2018-04-23 11:58:42,222 [INFO] [localhost-startStop-1] o.s.b.w.s.ServletRegistrationBean:190 Mapping servlet: 'statViewServlet' to [/druid/*] -2018-04-23 11:58:42,224 [INFO] [localhost-startStop-1] o.s.b.w.s.ServletRegistrationBean:190 Mapping servlet: 'dispatcherServlet' to [/] -2018-04-23 11:58:42,224 [INFO] [localhost-startStop-1] o.s.b.w.s.ServletRegistrationBean:190 Mapping servlet: 'statViewServlet' to [/druid/*] -2018-04-23 11:58:42,224 [INFO] [localhost-startStop-1] o.s.b.w.s.ServletRegistrationBean:193 Servlet statViewServlet was not registered (possibly already registered?) -2018-04-23 11:58:42,224 [INFO] [localhost-startStop-1] o.s.b.w.s.ServletRegistrationBean:190 Mapping servlet: 'messageDispatcherServlet' to [/services/*] -2018-04-23 11:58:42,227 [INFO] [localhost-startStop-1] o.s.b.w.s.FilterRegistrationBean:258 Mapping filter: 'characterEncodingFilter' to: [/*] -2018-04-23 11:58:42,228 [INFO] [localhost-startStop-1] o.s.b.w.s.FilterRegistrationBean:258 Mapping filter: 'hiddenHttpMethodFilter' to: [/*] -2018-04-23 11:58:42,228 [INFO] [localhost-startStop-1] o.s.b.w.s.FilterRegistrationBean:258 Mapping filter: 'httpPutFormContentFilter' to: [/*] -2018-04-23 11:58:42,228 [INFO] [localhost-startStop-1] o.s.b.w.s.FilterRegistrationBean:258 Mapping filter: 'requestContextFilter' to: [/*] -2018-04-23 11:58:42,228 [INFO] [localhost-startStop-1] o.s.b.w.s.FilterRegistrationBean:271 Mapping filter: 'webStatFilter' to urls: [/*] -2018-04-23 11:58:42,228 [INFO] [localhost-startStop-1] o.s.b.w.s.FilterRegistrationBean:227 Filter webStatFilter was not registered (possibly already registered?) -2018-04-23 11:58:42,314 [INFO] [main] c.a.d.s.b.a.DruidDataSourceAutoConfigure:56 Init DruidDataSource -2018-04-23 11:58:43,282 [DEBUG] [main] d.s.Connection:? {conn-10001} connected -2018-04-23 11:58:43,290 [DEBUG] [main] d.s.Connection:? {conn-10002} connected -2018-04-23 11:58:43,377 [DEBUG] [main] d.s.Connection:? {conn-10003} connected -2018-04-23 11:58:43,383 [DEBUG] [main] d.s.Connection:? {conn-10004} connected -2018-04-23 11:58:43,388 [DEBUG] [main] d.s.Connection:? {conn-10005} connected -2018-04-23 11:58:43,393 [INFO] [main] c.a.d.p.DruidDataSource:928 {dataSource-1} inited -2018-04-23 11:58:43,779 [INFO] [main] o.s.w.s.m.m.a.RequestMappingHandlerAdapter:534 Looking for @ControllerAdvice: org.springframework.boot.context.embedded.AnnotationConfigEmbeddedWebApplicationContext@4b520ea8: startup date [Mon Apr 23 11:58:40 CST 2018]; root of context hierarchy -2018-04-23 11:58:43,853 [INFO] [main] o.s.w.s.m.m.a.RequestMappingHandlerMapping:543 Mapped "{[/query/{id}],methods=[GET]}" onto public org.laidu.learn.mybatis.model.AppUser org.laidu.learn.mybatis.controller.UserInfoController.queryById(java.lang.Long) -2018-04-23 11:58:43,858 [INFO] [main] o.s.w.s.m.m.a.RequestMappingHandlerMapping:543 Mapped "{[/error],produces=[text/html]}" onto public org.springframework.web.servlet.ModelAndView org.springframework.boot.autoconfigure.web.BasicErrorController.errorHtml(javax.servlet.http.HttpServletRequest,javax.servlet.http.HttpServletResponse) -2018-04-23 11:58:43,858 [INFO] [main] o.s.w.s.m.m.a.RequestMappingHandlerMapping:543 Mapped "{[/error]}" onto public org.springframework.http.ResponseEntity> org.springframework.boot.autoconfigure.web.BasicErrorController.error(javax.servlet.http.HttpServletRequest) -2018-04-23 11:58:43,903 [INFO] [main] o.s.w.s.h.SimpleUrlHandlerMapping:362 Mapped URL path [/webjars/**] onto handler of type [class org.springframework.web.servlet.resource.ResourceHttpRequestHandler] -2018-04-23 11:58:43,904 [INFO] [main] o.s.w.s.h.SimpleUrlHandlerMapping:362 Mapped URL path [/**] onto handler of type [class org.springframework.web.servlet.resource.ResourceHttpRequestHandler] -2018-04-23 11:58:43,959 [INFO] [main] o.s.w.s.h.SimpleUrlHandlerMapping:362 Mapped URL path [/**/favicon.ico] onto handler of type [class org.springframework.web.servlet.resource.ResourceHttpRequestHandler] -2018-04-23 11:58:44,441 [INFO] [main] o.s.j.e.a.AnnotationMBeanExporter:431 Registering beans for JMX exposure on startup -2018-04-23 11:58:44,445 [INFO] [main] o.s.j.e.a.AnnotationMBeanExporter:916 Bean with name 'logFilter' has been autodetected for JMX exposure -2018-04-23 11:58:44,446 [INFO] [main] o.s.j.e.a.AnnotationMBeanExporter:916 Bean with name 'statFilter' has been autodetected for JMX exposure -2018-04-23 11:58:44,446 [INFO] [main] o.s.j.e.a.AnnotationMBeanExporter:916 Bean with name 'dataSource' has been autodetected for JMX exposure -2018-04-23 11:58:44,450 [INFO] [main] o.s.j.e.a.AnnotationMBeanExporter:671 Located MBean 'logFilter': registering with JMX server as MBean [com.alibaba.druid.filter.logging:name=logFilter,type=Slf4jLogFilter] -2018-04-23 11:58:44,451 [INFO] [main] o.s.j.e.a.AnnotationMBeanExporter:671 Located MBean 'dataSource': registering with JMX server as MBean [com.alibaba.druid.spring.boot.autoconfigure:name=dataSource,type=DruidDataSourceWrapper] -2018-04-23 11:58:44,451 [INFO] [main] o.s.j.e.a.AnnotationMBeanExporter:671 Located MBean 'statFilter': registering with JMX server as MBean [com.alibaba.druid.filter.stat:name=statFilter,type=StatFilter] -2018-04-23 11:58:44,464 [INFO] [main] o.a.c.h.Http11NioProtocol:179 Initializing ProtocolHandler ["http-nio-8080"] -2018-04-23 11:58:44,475 [INFO] [main] o.a.c.h.Http11NioProtocol:179 Starting ProtocolHandler ["http-nio-8080"] -2018-04-23 11:58:44,480 [INFO] [main] o.a.t.u.n.NioSelectorPool:179 Using a shared selector for servlet write/read -2018-04-23 11:58:44,496 [INFO] [main] o.s.b.c.e.t.TomcatEmbeddedServletContainer:201 Tomcat started on port(s): 8080 (http) -2018-04-23 11:58:44,500 [INFO] [main] o.l.l.m.Application:57 Started Application in 4.793 seconds (JVM running for 5.916) -2018-04-23 11:59:31,196 [INFO] [http-nio-8080-exec-10] o.a.c.c.C.[.[.[/]:179 Initializing Spring FrameworkServlet 'dispatcherServlet' -2018-04-23 11:59:31,196 [INFO] [http-nio-8080-exec-10] o.s.w.s.DispatcherServlet:489 FrameworkServlet 'dispatcherServlet': initialization started -2018-04-23 11:59:31,214 [INFO] [http-nio-8080-exec-10] o.s.w.s.DispatcherServlet:508 FrameworkServlet 'dispatcherServlet': initialization completed in 18 ms -2018-04-23 12:00:11,624 [DEBUG] [http-nio-8080-exec-7] d.s.Connection:? {conn-10005} pool-connect -2018-04-23 12:00:11,737 [DEBUG] [http-nio-8080-exec-7] d.sql.Statement:? {conn-10005, pstmt-20000} created. select id, open_id, register_channel, username, id_card, name, id_card_detail_address, is_verify_id_card, id_card_coverup, id_card_coverdown, id_card_hold, is_other_picture_auth, is_bankcard_auth, signature_pic, is_additional_auth, is_emergency_auth, phone, email, address, user_status, create_time, update_time, remark, id_card_police from ca_app_user where id = ? -2018-04-23 12:00:11,741 [DEBUG] [http-nio-8080-exec-7] d.sql.Statement:? {conn-10005, pstmt-20000} Parameters : [1] -2018-04-23 12:00:11,741 [DEBUG] [http-nio-8080-exec-7] d.sql.Statement:? {conn-10005, pstmt-20000} Types : [BIGINT] -2018-04-23 12:00:11,810 [DEBUG] [http-nio-8080-exec-7] d.sql.Statement:? {conn-10005, pstmt-20000} executed. select id, open_id, register_channel, username, id_card - , name, id_card_detail_address, is_verify_id_card, id_card_coverup, id_card_coverdown - , id_card_hold, is_other_picture_auth, is_bankcard_auth, signature_pic, is_additional_auth - , is_emergency_auth, phone, email, address, user_status - , create_time, update_time, remark, id_card_police -from ca_app_user -where id = 1 -2018-04-23 12:00:11,810 [DEBUG] [http-nio-8080-exec-7] d.sql.Statement:? {conn-10005, pstmt-20000} executed. 70.763978 millis. select id, open_id, register_channel, username, id_card, name, id_card_detail_address, is_verify_id_card, id_card_coverup, id_card_coverdown, id_card_hold, is_other_picture_auth, is_bankcard_auth, signature_pic, is_additional_auth, is_emergency_auth, phone, email, address, user_status, create_time, update_time, remark, id_card_police from ca_app_user where id = ? -2018-04-23 12:00:11,811 [DEBUG] [http-nio-8080-exec-7] d.sql.Statement:? {conn-10005, pstmt-20000} executed. select id, open_id, register_channel, username, id_card - , name, id_card_detail_address, is_verify_id_card, id_card_coverup, id_card_coverdown - , id_card_hold, is_other_picture_auth, is_bankcard_auth, signature_pic, is_additional_auth - , is_emergency_auth, phone, email, address, user_status - , create_time, update_time, remark, id_card_police -from ca_app_user -where id = 1 -2018-04-23 12:00:11,811 [DEBUG] [http-nio-8080-exec-7] d.sql.Statement:? {conn-10005, pstmt-20000} executed. 70.831333 millis. select id, open_id, register_channel, username, id_card, name, id_card_detail_address, is_verify_id_card, id_card_coverup, id_card_coverdown, id_card_hold, is_other_picture_auth, is_bankcard_auth, signature_pic, is_additional_auth, is_emergency_auth, phone, email, address, user_status, create_time, update_time, remark, id_card_police from ca_app_user where id = ? -2018-04-23 12:00:11,827 [DEBUG] [http-nio-8080-exec-7] d.sql.Statement:? {conn-10005, pstmt-20000} clearParameters. -2018-04-23 12:00:11,828 [DEBUG] [http-nio-8080-exec-7] d.s.Connection:? {conn-10005} pool-recycle -2018-04-23 12:00:15,165 [DEBUG] [http-nio-8080-exec-5] d.s.Connection:? {conn-10005} pool-connect -2018-04-23 12:00:15,166 [DEBUG] [http-nio-8080-exec-5] d.sql.Statement:? {conn-10005, pstmt-20000} Parameters : [6] -2018-04-23 12:00:15,166 [DEBUG] [http-nio-8080-exec-5] d.sql.Statement:? {conn-10005, pstmt-20000} Types : [BIGINT] -2018-04-23 12:00:15,167 [DEBUG] [http-nio-8080-exec-5] d.sql.Statement:? {conn-10005, pstmt-20000} executed. select id, open_id, register_channel, username, id_card - , name, id_card_detail_address, is_verify_id_card, id_card_coverup, id_card_coverdown - , id_card_hold, is_other_picture_auth, is_bankcard_auth, signature_pic, is_additional_auth - , is_emergency_auth, phone, email, address, user_status - , create_time, update_time, remark, id_card_police -from ca_app_user -where id = 6 -2018-04-23 12:00:15,167 [DEBUG] [http-nio-8080-exec-5] d.sql.Statement:? {conn-10005, pstmt-20000} executed. 1.762966 millis. select id, open_id, register_channel, username, id_card, name, id_card_detail_address, is_verify_id_card, id_card_coverup, id_card_coverdown, id_card_hold, is_other_picture_auth, is_bankcard_auth, signature_pic, is_additional_auth, is_emergency_auth, phone, email, address, user_status, create_time, update_time, remark, id_card_police from ca_app_user where id = ? -2018-04-23 12:00:15,168 [DEBUG] [http-nio-8080-exec-5] d.sql.Statement:? {conn-10005, pstmt-20000} executed. select id, open_id, register_channel, username, id_card - , name, id_card_detail_address, is_verify_id_card, id_card_coverup, id_card_coverdown - , id_card_hold, is_other_picture_auth, is_bankcard_auth, signature_pic, is_additional_auth - , is_emergency_auth, phone, email, address, user_status - , create_time, update_time, remark, id_card_police -from ca_app_user -where id = 6 -2018-04-23 12:00:15,168 [DEBUG] [http-nio-8080-exec-5] d.sql.Statement:? {conn-10005, pstmt-20000} executed. 1.807629 millis. select id, open_id, register_channel, username, id_card, name, id_card_detail_address, is_verify_id_card, id_card_coverup, id_card_coverdown, id_card_hold, is_other_picture_auth, is_bankcard_auth, signature_pic, is_additional_auth, is_emergency_auth, phone, email, address, user_status, create_time, update_time, remark, id_card_police from ca_app_user where id = ? -2018-04-23 12:00:15,170 [DEBUG] [http-nio-8080-exec-5] d.sql.Statement:? {conn-10005, pstmt-20000} clearParameters. -2018-04-23 12:00:15,170 [DEBUG] [http-nio-8080-exec-5] d.s.Connection:? {conn-10005} pool-recycle -2018-04-23 12:01:25,453 [DEBUG] [http-nio-8080-exec-10] d.s.Connection:? {conn-10005} pool-connect -2018-04-23 12:01:25,453 [DEBUG] [http-nio-8080-exec-10] d.sql.Statement:? {conn-10005, pstmt-20000} Parameters : [88] -2018-04-23 12:01:25,453 [DEBUG] [http-nio-8080-exec-10] d.sql.Statement:? {conn-10005, pstmt-20000} Types : [BIGINT] -2018-04-23 12:01:25,477 [DEBUG] [http-nio-8080-exec-10] d.sql.Statement:? {conn-10005, pstmt-20000} executed. select id, open_id, register_channel, username, id_card - , name, id_card_detail_address, is_verify_id_card, id_card_coverup, id_card_coverdown - , id_card_hold, is_other_picture_auth, is_bankcard_auth, signature_pic, is_additional_auth - , is_emergency_auth, phone, email, address, user_status - , create_time, update_time, remark, id_card_police -from ca_app_user -where id = 88 -2018-04-23 12:01:25,477 [DEBUG] [http-nio-8080-exec-10] d.sql.Statement:? {conn-10005, pstmt-20000} executed. 24.004966 millis. select id, open_id, register_channel, username, id_card, name, id_card_detail_address, is_verify_id_card, id_card_coverup, id_card_coverdown, id_card_hold, is_other_picture_auth, is_bankcard_auth, signature_pic, is_additional_auth, is_emergency_auth, phone, email, address, user_status, create_time, update_time, remark, id_card_police from ca_app_user where id = ? -2018-04-23 12:01:25,477 [DEBUG] [http-nio-8080-exec-10] d.sql.Statement:? {conn-10005, pstmt-20000} executed. select id, open_id, register_channel, username, id_card - , name, id_card_detail_address, is_verify_id_card, id_card_coverup, id_card_coverdown - , id_card_hold, is_other_picture_auth, is_bankcard_auth, signature_pic, is_additional_auth - , is_emergency_auth, phone, email, address, user_status - , create_time, update_time, remark, id_card_police -from ca_app_user -where id = 88 -2018-04-23 12:01:25,477 [DEBUG] [http-nio-8080-exec-10] d.sql.Statement:? {conn-10005, pstmt-20000} executed. 24.032488 millis. select id, open_id, register_channel, username, id_card, name, id_card_detail_address, is_verify_id_card, id_card_coverup, id_card_coverdown, id_card_hold, is_other_picture_auth, is_bankcard_auth, signature_pic, is_additional_auth, is_emergency_auth, phone, email, address, user_status, create_time, update_time, remark, id_card_police from ca_app_user where id = ? -2018-04-23 12:01:25,478 [DEBUG] [http-nio-8080-exec-10] d.sql.Statement:? {conn-10005, pstmt-20000} clearParameters. -2018-04-23 12:01:25,478 [DEBUG] [http-nio-8080-exec-10] d.s.Connection:? {conn-10005} pool-recycle -2018-04-23 12:03:24,050 [INFO] [Thread-4] o.s.b.c.e.AnnotationConfigEmbeddedWebApplicationContext:984 Closing org.springframework.boot.context.embedded.AnnotationConfigEmbeddedWebApplicationContext@4b520ea8: startup date [Mon Apr 23 11:58:40 CST 2018]; root of context hierarchy -2018-04-23 12:03:24,052 [INFO] [Thread-4] o.s.j.e.a.AnnotationMBeanExporter:449 Unregistering JMX-exposed beans on shutdown -2018-04-23 12:03:24,052 [INFO] [Thread-4] o.s.j.e.a.AnnotationMBeanExporter:241 Unregistering JMX-exposed beans -2018-04-23 12:03:24,055 [DEBUG] [Thread-4] d.s.Connection:? {conn-10001} closed -2018-04-23 12:03:24,055 [DEBUG] [Thread-4] d.s.Connection:? {conn-10002} closed -2018-04-23 12:03:24,056 [DEBUG] [Thread-4] d.s.Connection:? {conn-10003} closed -2018-04-23 12:03:24,056 [DEBUG] [Thread-4] d.s.Connection:? {conn-10004} closed -2018-04-23 12:03:24,056 [DEBUG] [Thread-4] d.sql.Statement:? {conn-10005, pstmt-20000} closed -2018-04-23 12:03:24,056 [DEBUG] [Thread-4] d.s.Connection:? {conn-10005} closed -2018-04-23 12:03:24,057 [INFO] [Thread-4] c.a.d.p.DruidDataSource:1823 {dataSource-1} closed diff --git a/code-practice/nowcoder/src/main/java/org/laidu/learn/code/practice/jianzhioffer/ReConstructBinaryTree.java b/code-practice/nowcoder/src/main/java/org/laidu/learn/code/practice/jianzhioffer/ReConstructBinaryTree.java new file mode 100644 index 000000000..fef3a96c5 --- /dev/null +++ b/code-practice/nowcoder/src/main/java/org/laidu/learn/code/practice/jianzhioffer/ReConstructBinaryTree.java @@ -0,0 +1,56 @@ +package org.laidu.learn.code.practice.jianzhioffer; + +import lombok.extern.slf4j.Slf4j; + +/** + * 重建二叉树 + *

+ * 输入某二叉树的前序遍历和中序遍历的结果,请重建出该二叉树。假设输入的前序遍历和中序遍历的结果中都不含重复的数字。例如输入前序遍历序列{1,2,4,7,3,5,6,8}和中序遍历序列{4,7,2,1,5,3,8,6},则重建二叉树并返回。 + *

+ * Created by tiancai.zang + * on 2018-04-25 22:23. + */ +@Slf4j +public class ReConstructBinaryTree { + + public static class TreeNode { + int val; + TreeNode left; + TreeNode right; + + TreeNode(int x) { + val = x; + } + } + + + public TreeNode reConstructBinaryTree(int[] pre, int[] in) { + + + /* + step 1 : 判断临界条件 + */ + if (pre.length != in.length || pre.length < 1) { + return null; + } + + + + /* + step 2 : 根据前序遍历确定根节点 + */ + TreeNode root = new TreeNode(pre[0]); + + if (pre.length == 1) { + return root; + } + + + return null; + } + + public static void main(String[] args) { + System.out.println("laidu is sb"); + + } +} \ No newline at end of file From 31ab412942c511351e85e5b36d9bf0f6f0bf384d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=9D=90=E7=AC=83=E5=A4=A7=E5=A4=A7?= Date: Sat, 5 May 2018 09:45:30 +0000 Subject: [PATCH 009/417] Creating site for java-learn, 1.0-SNAPSHOT --- docs/checkstyle-aggregate.html | 16052 +++++++++++------- docs/checkstyle.html | 4 +- docs/checkstyle.rss | 426 +- docs/dependencies.html | 4 +- docs/dependency-convergence.html | 373 +- docs/dependency-info.html | 4 +- docs/distribution-management.html | 4 +- docs/fr/maven-pdf-plugin.pdf | Bin 25314 -> 25328 bytes docs/happycfc.html | 4 +- docs/index.html | 4 +- docs/integration.html | 4 +- docs/issue-tracking.html | 4 +- docs/maven-pdf-plugin.pdf | Bin 25314 -> 25328 bytes docs/modules.html | 4 +- docs/plugin-management.html | 4 +- docs/plugins.html | 4 +- docs/project-info.html | 4 +- docs/project-reports.html | 4 +- docs/project-summary.html | 4 +- docs/request.html | 4 +- docs/review.html | 4 +- docs/skill.html | 4 +- docs/source-repository.html | 4 +- docs/surefire-report.html | 4 +- docs/team-list.html | 4 +- docs/template/algorithm-learn-template.html | 4 +- docs/template/component-learn-template.html | 4 +- docs/template/protocol-learn-template.html | 4 +- docs/template/tool-learn-template.html | 4 +- 29 files changed, 10771 insertions(+), 6176 deletions(-) diff --git a/docs/checkstyle-aggregate.html b/docs/checkstyle-aggregate.html index b5080f822..1cb0e86e7 100644 --- a/docs/checkstyle-aggregate.html +++ b/docs/checkstyle-aggregate.html @@ -1,5 +1,5 @@ - + @@ -25,7 +25,7 @@

Files

@@ -130,13 +130,23 @@

Files

- + + + + + + + + + + + @@ -145,7 +155,7 @@

Files

- + @@ -155,7 +165,7 @@

Files

- + @@ -255,7 +265,7 @@

Files

- + @@ -300,7 +310,7 @@

Files

- + @@ -425,12 +435,12 @@

Files

- + - + @@ -447,6 +457,46 @@

Files

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -455,12 +505,12 @@

Files

- + - + @@ -635,12 +685,12 @@

Files

- + - + @@ -685,12 +735,12 @@

Files

- + - + @@ -722,20 +772,40 @@

Files

+ + + + + + + + + + + + + + + - + - + + + + + + @@ -802,550 +872,600 @@

Files

- + + + + + + + + + + + + + + + + - + - + - + - + - + - + - + - + - - + + - + - - + + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - - + + - + - - + + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -1450,12 +1570,12 @@

Files

- + - + @@ -1555,7 +1675,7 @@

Files

- + @@ -1565,7 +1685,7 @@

Files

- + @@ -1575,12 +1695,12 @@

Files

- + - + @@ -1646,18 +1766,28 @@

Rules

+ + + + + + + + + + - + - + @@ -1667,7 +1797,7 @@

Rules

- + @@ -1677,47 +1807,47 @@

Rules

- + - + - + - + - + - + - + - + - + @@ -1727,12 +1857,12 @@

Rules

- + - + @@ -1792,12 +1922,12 @@

Rules

  • maximum: "0"
  • message: "Line has trailing spaces."
  • minimum: "0"
  • - + - + @@ -1827,7 +1957,7 @@

    Rules

    - + @@ -1837,12 +1967,12 @@

    Rules

    - + - +
    application.properties 0 07
    8
    helper.properties 0 0 1
    org/elasticsearch/license/LicenseVerifier.java0014
    org/elasticsearch/xpack/core/XPackBuild.java0022
    org/laidu/commom/util/annotation/Singleton.java 0 0 org/laidu/commom/util/encryption/AESEncryptionUtil.java 0 036
    35
    org/laidu/commom/util/encryption/BasicEncryptionUtil.java 0 org/laidu/commom/util/encryption/DESEncryptionUtil.java 0 029
    30
    org/laidu/commom/util/encryption/DESedeEncryptionUtil.java 0 org/laidu/commom/util/http/har/model/Browser.java 0 06
    5
    org/laidu/commom/util/http/har/model/Cache.java 0 org/laidu/commom/util/http/har/model/PageTimings.java 0 08
    9
    org/laidu/commom/util/http/har/model/Pages.java 0 org/laidu/crawler/helper/model/CrawlerRequestParam.java 0 04
    3
    org/laidu/crawler/helper/model/CrawlerResponse.java 0 08
    9
    org/laidu/crawler/helper/model/CrawlerSite.java 0 0 5
    org/laidu/crawler/helper/model/http/burp/BurpSiteItem.java002
    org/laidu/crawler/helper/model/http/burp/Host.java003
    org/laidu/crawler/helper/model/http/burp/Item.java0015
    org/laidu/crawler/helper/model/http/burp/Items.java004
    org/laidu/crawler/helper/model/http/burp/Request.java003
    org/laidu/crawler/helper/model/http/burp/Response.java003
    org/laidu/crawler/helper/model/http/burp/package-info.java001
    org/laidu/crawler/helper/model/http/har/package-info.java001
    org/laidu/crawler/helper/package-info.java 0 0 org/laidu/crawler/model/Page.java 0 017
    16
    org/laidu/crawler/model/PageProxy.java 0 026
    27
    org/laidu/crawler/package-info.java 0 org/laidu/learn/amqp/rabbitmq/official/rpc/RPCClient.java 0 027
    26
    org/laidu/learn/amqp/rabbitmq/official/rpc/RPCServer.java 0 020
    21
    org/laidu/learn/amqp/rabbitmq/official/work/queues/package-info.java 0 org/laidu/learn/apache/commons/cli/crawler/CrawlerMainApp.java 0 015
    14
    org/laidu/learn/apache/commons/cli/crawler/CrawlerOption.java 0 01
    2
    org/laidu/learn/apache/commons/cli/crawler/enums/CrawlerType.java 0 0 1
    org/laidu/learn/aws/dynamodb/convert/ItermConverter.java0025
    org/laidu/learn/aws/dynamodb/package-info.java002
    org/laidu/learn/book/learn/dsaa3th/package-info.java001
    org/laidu/learn/btrace/monitor/MethodRunTime.java 0 0 26
    org/laidu/learn/btrace/package-info.java 0 0 1
    org/laidu/learn/code/practice/jianzhioffer/LinkListPrintf.java 0 0 21
    org/laidu/learn/code/practice/jianzhioffer/ReConstructBinaryTree.java0017
    org/laidu/learn/code/practice/jianzhioffer/ReplaceSpace.java 0 0 1
    org/laidu/learn/design/pattern/_abstract/factory/AbstractFactory.javaorg/laidu/learn/date/structure/tree/Binarytree/BtreeBasic.java0016
    org/laidu/learn/date/structure/tree/basic/ListAllFiles.java0019
    org/laidu/learn/date/structure/tree/package-info.java 0 0 2
    org/laidu/learn/design/pattern/_abstract/factory/AbstractFactory.java002
    org/laidu/learn/design/pattern/_abstract/factory/AbstractProductA.java 0 0 18
    org/laidu/learn/design/pattern/_abstract/factory/AbstractProductB.java 0 0 7
    org/laidu/learn/design/pattern/_abstract/factory/Client.java 0 0 7
    org/laidu/learn/design/pattern/_abstract/factory/ConcreteProcductFactoryApple.java 0 0 5
    org/laidu/learn/design/pattern/_abstract/factory/ConcreteProcductFactoryDell.java 0 0 5
    org/laidu/learn/design/pattern/_abstract/factory/ConcreteProductA.java 0 0 8
    org/laidu/learn/design/pattern/_abstract/factory/ConcreteProductB.java 0 0 3
    org/laidu/learn/design/pattern/_abstract/factory/package-info.java 0 0 1
    org/laidu/learn/design/pattern/builder/Builder.java 0 04
    3
    org/laidu/learn/design/pattern/builder/Client.java 0 0 3
    org/laidu/learn/design/pattern/builder/ConcreteBuilder.java 0 03
    4
    org/laidu/learn/design/pattern/builder/Product.java 0 0 5
    org/laidu/learn/design/pattern/chain/responsibility/AbstractLogger.java 0 0 25
    org/laidu/learn/design/pattern/chain/responsibility/Client.java 0 0 6
    org/laidu/learn/design/pattern/chain/responsibility/ConcreteLoggerDebug.java 0 0 5
    org/laidu/learn/design/pattern/chain/responsibility/ConcreteLoggerError.java 0 0 5
    org/laidu/learn/design/pattern/chain/responsibility/ConcreteLoggerInfo.java 0 0 5
    org/laidu/learn/design/pattern/chain/responsibility/package-info.java 0 0 1
    org/laidu/learn/design/pattern/command/package-info.java 0 0 1
    org/laidu/learn/design/pattern/decorator/package-info.java 0 0 1
    org/laidu/learn/design/pattern/factory/AbstractFactory.java 0 0 1
    org/laidu/learn/design/pattern/factory/AbstractProduct.java 0 0 12
    org/laidu/learn/design/pattern/factory/Client.java 0 0 6
    org/laidu/learn/design/pattern/factory/ConcreteBlueProcductFactory.java 0 0 2
    org/laidu/learn/design/pattern/factory/ConcreteBlueProduct.java 0 0 2
    org/laidu/learn/design/pattern/factory/ConcreteRedProcductFactory.java 0 0 2
    org/laidu/learn/design/pattern/factory/ConcreteRedProduct.java 0 0 1
    org/laidu/learn/design/pattern/factory/ConcreteYellowProcductFactory.java 0 0 1
    org/laidu/learn/design/pattern/factory/ConcreteYellowProduct.java 0 0 2
    org/laidu/learn/design/pattern/factory/package-info.java 0 0 1
    org/laidu/learn/design/pattern/iterator/Aggregate.java 0 06
    5
    org/laidu/learn/design/pattern/iterator/ConcreteAggregate.java 0 0 11
    org/laidu/learn/design/pattern/iterator/ConcreteIterator.java 0 09
    10
    org/laidu/learn/design/pattern/iterator/Iterator.java 0 0 7
    org/laidu/learn/design/pattern/package-info.java 0 0 2
    org/laidu/learn/design/pattern/prototype/Client.java 0 0 8
    org/laidu/learn/design/pattern/prototype/Person.java 0 0 5
    org/laidu/learn/design/pattern/prototype/package-info.java 0 0 1
    org/laidu/learn/design/pattern/proxy/AbstractSubject.java 0 0 2
    org/laidu/learn/design/pattern/proxy/Client.java 0 0 7
    org/laidu/learn/design/pattern/proxy/ConcreteSubject.java 0 0 7
    org/laidu/learn/design/pattern/proxy/ProxySubject.java 0 0 11
    org/laidu/learn/design/pattern/proxy/package-info.java 0 0 2
    org/laidu/learn/design/pattern/simple/factory/AbstractProduct.java 0 0 12
    org/laidu/learn/design/pattern/simple/factory/Client.java 0 0 6
    org/laidu/learn/design/pattern/simple/factory/ConcreteBlueProduct.java 0 0 3
    org/laidu/learn/design/pattern/simple/factory/ConcreteRedProduct.java 0 0 2
    org/laidu/learn/design/pattern/simple/factory/ConcreteYellowProduct.java 0 0 3
    org/laidu/learn/design/pattern/simple/factory/Factory.java 0 0 4
    org/laidu/learn/design/pattern/simple/factory/package-info.java 0 0 1
    org/laidu/learn/design/pattern/singleton/EnumSingleton.java 0 0 12
    org/laidu/learn/design/pattern/singleton/InitializingOnDemandHolderIdiom.java 0 0 17
    org/laidu/learn/design/pattern/singleton/Singleton.java 0 0 26
    org/laidu/learn/design/pattern/singleton/ThreadSafeDoubleCheckLocking.java 0 0 16
    org/laidu/learn/design/pattern/singleton/ThreadSafeLazyLoadSyncSingleton.java 0 0 20
    org/laidu/learn/design/pattern/singleton/ThreadUnSafeLazyLoadSingleton.java 0 0 15
    org/laidu/learn/design/pattern/singleton/package-info.java 0 0 2
    org/laidu/learn/design/pattern/strategy/package-info.java 0 0 1
    org/laidu/learn/design/pattern/template/package-info.java 0 0 1
    org/laidu/learn/design/pattern/uml/Class_A.java 0 0 22
    org/laidu/learn/design/pattern/uml/Class_B.java 0 0 4
    org/laidu/learn/design/pattern/uml/Class_C.java 0 0 8
    org/laidu/learn/design/pattern/uml/Heart.java 0 0 1
    org/laidu/learn/design/pattern/uml/Interface_A.java 0 0 2
    org/laidu/learn/design/pattern/uml/Interface_A_Impl.java 0 0 3
    org/laidu/learn/design/pattern/uml/Interface_B.java 0 0 3
    org/laidu/learn/design/pattern/uml/Schoole.java 0 0 2
    org/laidu/learn/design/pattern/uml/Student.java 0 0 2
    org/laidu/learn/design/pattern/uml/package-info.java 0 0 1
    org/laidu/learn/fastutil/package-info.java 0 0 2
    org/laidu/learn/hadoop/hdfs/Ls.java 0 0 19
    org/laidu/learn/hadoop/mapreduce/WordCount.java 0 0 28
    org/laidu/learn/hadoop/package-info.java 0 0 1
    org/laidu/learn/io/aio/package-info.java 0 0 1
    org/laidu/learn/io/bio/package-info.java 0 0 1
    org/laidu/learn/io/nio/NioClient.java 0 0 23
    org/laidu/learn/io/nio/NioServer.java 0 0 18
    org/laidu/learn/io/nio/Worker.java 0 0 15
    org/laidu/learn/io/nio/channel/BasicChannelExample.java 0 0 12
    org/laidu/learn/io/nio/package-info.java 0 0 1
    org/laidu/learn/io/package-info.java 0 0 1
    org/laidu/learn/jvm/Test.java 0 0 3
    org/laidu/learn/jvm/package-info.java 0 0 1
    org/laidu/learn/language/feature/boxed/BasicDataType.java 0 0 6
    org/laidu/learn/language/feature/boxed/Boxing.java 0 0 5
    org/laidu/learn/language/feature/boxed/package-info.java 0 0 2
    org/laidu/learn/language/feature/collection/ListDemo.java 0 0 3
    org/laidu/learn/language/feature/collection/package-info.java 0 0 1
    org/laidu/learn/language/feature/date/DateUsage.java 0 0 17
    org/laidu/learn/language/feature/date/package-info.java 0 0 1
    org/laidu/learn/language/feature/default_/method/ExtendClass.java 0 0 16
    org/laidu/learn/language/feature/default_/method/InterfaceA.java 0 0 5
    org/laidu/learn/language/feature/default_/method/InterfaceB.java 0 0 4
    org/laidu/learn/language/feature/default_/method/package-info.java 0 0 1
    org/laidu/learn/language/feature/package-info.java 0 0 1
    org/laidu/learn/language/feature/regex/RegexUsage.java 0 0 1
    org/laidu/learn/language/feature/regex/package-info.java 0 0 1
    org/laidu/learn/language/feature/serialize/Main.java 0 0 12
    org/laidu/learn/language/feature/serialize/Student.java 0 0 12
    org/laidu/learn/language/feature/serialize/package-info.java 0 0 3
    org/laidu/learn/language/feature/string/StringBuilderPartMethod.java 0 0 1
    org/laidu/learn/language/feature/string/StringPartMethod.java 0 0 15
    org/laidu/learn/language/feature/string/package-info.java 0 0 1
    org/laidu/learn/language/feature/syntactic/sugar/package-info.java 0 0 1
    org/laidu/learn/language/feature/thread/local/MyThreadLocal.java 0 0 5
    org/laidu/learn/language/feature/thread/local/ThreadA.java 0 0 15
    org/laidu/learn/language/feature/thread/local/package-info.java 0 0 1
    org/laidu/learn/language/feature/thread/local/source/ThreadLocal.java 0 0 4
    org/laidu/learn/mybatis/Application.java006
    org/laidu/learn/mybatis/config/DruidConfig.java0022
    org/laidu/learn/mybatis/controller/UserInfoController.java0010
    org/laidu/learn/mybatis/mapper/AppUserMapper.java00187
    org/laidu/learn/mybatis/mapper/AppUserSqlProvider.java0066
    org/laidu/learn/mybatis/model/AppUser.java00190
    org/laidu/learn/mybatis/package-info.java001
    org/laidu/learn/netty/package-info.java 0 org/laidu/learn/swagger/demo/config/SwaggerConfig.java 0 08
    7
    org/laidu/learn/swagger/demo/config/WebConfig.java 0 06
    7
    org/laidu/learn/swagger/demo/controller/HomeController.java 0 org/laidu/learn/tool/cache/policy/CrontabSyncPolicy.java 0 04
    3
    org/laidu/learn/tool/cache/policy/EventSyncPolicy.java 0 org/laidu/learn/tool/cache/policy/SyncPolicy.java 0 04
    5
    org/laidu/learn/tool/cache/provider/DSProvider.java 0 org/laidu/learn/tool/cache/strategy/CacheStrategy.java 0 05
    4
    org/laidu/learn/tool/cache/strategy/EhcacheStrategy.java 0 015
    16
    org/laidu/learn/tool/spring/package-info.java 0  Error
    LeftCurly2 Error
    NeedBraces 5  Error
    RightCurly1 Error
    coding AvoidInlineConditionals1024  Error
    HiddenField3765  Error
    design DesignForExtension161219  Error
    HideUtilityClassConstructor4347  Error
    VisibilityModifier195199  Error
    imports AvoidStarImport1832  Error
    UnusedImports4756  Error
    javadoc JavadocMethod432512  Error
    JavadocPackage6069  Error
    JavadocStyle195198  Error
    JavadocType6471  Error
    JavadocVariable430491  Error
    misc
    FinalParameters386428  Error
    NewlineAtEndOfFile182203  Error
    3687  Error
    sizes LineLength308357  Error
    whitespace
    OperatorWrap2730  Error
    WhitespaceAfter162165  Error
    WhitespaceAround376546  Error

    Details

    @@ -1896,37 +2026,37 @@

    application.properties

    misc NewlineAtEndOfFile File does not end with a newline. + + + Error +misc +NewlineAtEndOfFile +File does not end with a newline.

    helper.properties

    - + - +
    Severity Category Rule Message Line
     Error misc NewlineAtEndOfFile File does not end with a newline.
    -

    org/laidu/commom/util/annotation/Singleton.java

    +

    org/elasticsearch/license/LicenseVerifier.java

    - + - - - - - - @@ -1935,64 +2065,298 @@

    org/laidu/commom/util/a

    - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - -
    Severity Category Rule Message Line
     ErrormiscNewlineAtEndOfFileFile does not end with a newline.
     Error javadoc
     ErrorjavadocJavadocStyleFirst sentence should end with a period.importsAvoidStarImportUsing the '.*' form of import should be avoided - java.nio.*.3
     ErrorimportsAvoidStarImportUsing the '.*' form of import should be avoided - java.util.*.4
     ErrorimportsAvoidStarImportUsing the '.*' form of import should be avoided - java.security.*.5
     ErrorimportsAvoidStarImportUsing the '.*' form of import should be avoided - org.elasticsearch.common.xcontent.*.6
     ErrorimportsAvoidStarImportUsing the '.*' form of import should be avoided - org.apache.lucene.util.*.7
     ErrorimportsAvoidStarImportUsing the '.*' form of import should be avoided - org.elasticsearch.common.io.*.8
     ErrorimportsAvoidStarImportUsing the '.*' form of import should be avoided - java.io.*. 9
     Error javadocJavadocTypeMissing a Javadoc comment.11
     ErrordesignHideUtilityClassConstructorUtility classes should not have a public or default constructor.11
     ErrorblocksLeftCurly'{' at column 1 should be on the previous line.12
     ErrorsizesLineLengthLine is longer than 80 characters (found 101).13
     Errorjavadoc JavadocMethodExpected an @return tag.13
    +Missing a Javadoc comment. +13 + + Error +javadoc +JavadocMethod +Missing a Javadoc comment. +17
    -

    org/laidu/commom/util/encryption/AESEncryptionUtil.java

    +

    org/elasticsearch/xpack/core/XPackBuild.java

    - + - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + - + + + + + + + - + - + - + - + - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Severity Category Rule Message Line
     Error javadoc JavadocPackage Missing package-info.java file.
     ErrorimportsAvoidStarImportUsing the '.*' form of import should be avoided - org.elasticsearch.common.io.*.3
     ErrorimportsAvoidStarImportUsing the '.*' form of import should be avoided - java.net.*.4
     ErrorimportsAvoidStarImportUsing the '.*' form of import should be avoided - org.elasticsearch.common.*.5
     ErrorimportsAvoidStarImportUsing the '.*' form of import should be avoided - java.nio.file.*.6
     ErrorimportsAvoidStarImportUsing the '.*' form of import should be avoided - java.io.*.7
     ErrorimportsAvoidStarImportUsing the '.*' form of import should be avoided - java.util.jar.*.8
     Error javadocJavadocVariableJavadocType Missing a Javadoc comment.33
    10
     ErrorblocksLeftCurly'{' at column 1 should be on the previous line.11
     Error javadoc JavadocVariable Missing a Javadoc comment.35
    12
     Error javadoc JavadocVariable Missing a Javadoc comment.36
    13
     Error javadoc JavadocVariable Missing a Javadoc comment.38
    14
     Error javadoc JavadocMethod Missing a Javadoc comment.41
    16
     ErrorjavadocsizesLineLengthLine is longer than 80 characters (found 93).18
     ErrorblocksRightCurly'}' at column 9 should be on the same line as the next part of a multi-block statement.21
     ErrorjavadocJavadocMethodMissing a Javadoc comment.27
     ErrorcodingHiddenField'shortHash' hides a field.27
     ErrorcodingHiddenField'date' hides a field.27
     ErrordesignDesignForExtensionMethod 'shortHash' is not designed for extension - needs to be abstract, final or empty.32
     ErrorjavadocJavadocMethodMissing a Javadoc comment.32
     ErrordesignDesignForExtensionMethod 'date' is not designed for extension - needs to be abstract, final or empty.36
     ErrorjavadocJavadocMethodMissing a Javadoc comment.36
    +
    +

    org/laidu/commom/util/annotation/Singleton.java

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    SeverityCategoryRuleMessageLine
     ErrormiscNewlineAtEndOfFileFile does not end with a newline.
     ErrorjavadocJavadocPackageMissing package-info.java file.
     ErrorjavadocJavadocStyleFirst sentence should end with a period.9
     ErrorjavadocJavadocMethodExpected an @return tag.13
    +
    +

    org/laidu/commom/util/encryption/AESEncryptionUtil.java

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -2767,172 +3131,178 @@

    org/laidu/commo

    + + + + + + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -2941,175 +3311,175 @@

    org/laidu/commo

    org/laidu/commom/util/encryption/DESedeEncryptionUtil.java

    SeverityCategoryRuleMessageLine
     ErrorjavadocJavadocVariableMissing a Javadoc comment.33
     ErrorjavadocJavadocVariableMissing a Javadoc comment.35
     ErrorjavadocJavadocVariableMissing a Javadoc comment.36
     ErrorjavadocJavadocVariableMissing a Javadoc comment.38
     ErrorjavadocJavadocMethodMissing a Javadoc comment.41
     Errorjavadoc JavadocStyle First sentence should end with a period. 60
     Error javadocJavadocPackageMissing package-info.java file.
     Errorjavadoc JavadocVariable Missing a Javadoc comment. 36
     Error javadoc JavadocVariable Missing a Javadoc comment. 37
     Error javadoc JavadocVariable Missing a Javadoc comment. 39
     Error javadoc JavadocStyle First sentence should end with a period. 44
     Error javadoc JavadocMethod Expected an @return tag. 48
     Error javadoc JavadocMethod Expected @throws tag for 'Exception'. 48
     Error whitespace WhitespaceAround '{' is not preceded with whitespace. 48
     Error coding MagicNumber '56' is a magic number. 52
     Error javadoc JavadocStyle First sentence should end with a period. 58
     Error javadoc JavadocMethod Expected an @return tag. 62
     Error misc FinalParameters Parameter data should be final. 62
     Error javadoc JavadocMethod Expected @param tag for 'data'. 62
     Error misc FinalParameters Parameter key should be final. 62
     Error javadoc JavadocMethod Expected @param tag for 'key'. 62
     Error sizes LineLength Line is longer than 80 characters (found 109). 64
     Error whitespace WhitespaceAfter ',' is not followed by whitespace. 64
     Error whitespace WhitespaceAfter ',' is not followed by whitespace. 64
     Error whitespace WhitespaceAfter ',' is not followed by whitespace. 64
     Error javadoc JavadocStyle First sentence should end with a period. 67
     Error javadoc JavadocMethod Expected an @return tag. 70
     Error misc FinalParameters Parameter data should be final. 70
     Error javadoc JavadocMethod Expected @param tag for 'data'. 70
     Error misc FinalParameters Parameter key should be final. 70
     Error javadoc JavadocMethod Expected @param tag for 'key'. 70
     Error whitespace WhitespaceAround '{' is not preceded with whitespace. 70
     Error sizes LineLength Line is longer than 80 characters (found 109). 72
     Error whitespace WhitespaceAfter ',' is not followed by whitespace. 72
     Error whitespace WhitespaceAfter ',' is not followed by whitespace. 72
     Error whitespace WhitespaceAfter
    - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -3118,55 +3488,55 @@

    org/laidu/co

    org/laidu/commom/util/encryption/MD5Util.java

    Severity Category Rule Message Line
     Error javadoc JavadocStyle First sentence should end with a period. 31
     Error javadoc JavadocStyle First sentence should end with a period. 36
     Error sizes LineLength Line is longer than 80 characters (found 81). 39
     Error sizes LineLength Line is longer than 80 characters (found 81). 40
     Error javadoc JavadocVariable Missing a Javadoc comment. 40
     Error javadoc JavadocVariable Missing a Javadoc comment. 42
     Error javadoc JavadocStyle First sentence should end with a period. 47
     Error misc FinalParameters Parameter data should be final. 54
     Error misc FinalParameters Parameter key should be final. 54
     Error misc FinalParameters Parameter ivp should be final. 54
     Error javadoc JavadocMethod Expected @param tag for 'ivp'. 54
     Error sizes LineLength Line is longer than 80 characters (found 129). 55
     Error javadoc JavadocStyle First sentence should end with a period. 58
     Error misc FinalParameters Parameter data should be final. 65
     Error misc FinalParameters Parameter key should be final. 65
     Error misc FinalParameters Parameter ivp should be final. 65
     Error javadoc JavadocMethod Expected @param tag for 'ivp'. 65
     Error whitespace WhitespaceAround '{' is not preceded with whitespace. 65
     Error sizes LineLength Line is longer than 80 characters (found 129). 66
     Error javadoc JavadocStyle First sentence should end with a period. 69
     Error misc FinalParameters Parameter data should be final. 76
     Error misc FinalParameters Parameter key should be final. 76
     Error sizes LineLength Line is longer than 80 characters (found 130). 77
     Error javadoc JavadocStyle First sentence should end with a period. 80
     Error misc FinalParameters Parameter data should be final. 87
     Error misc FinalParameters Parameter key should be final. 87
     Error whitespace WhitespaceAround '{' is not preceded with whitespace. 87
     Error sizes LineLength
    - + - + - + - + - + - + - + - + - + @@ -3175,265 +3545,265 @@

    org/laidu/commom/util/enc

    org/laidu/commom/util/encryption/RSAencryptionUtil.java

    Severity Category Rule Message Line
     Error javadoc JavadocVariable Missing a Javadoc comment. 34
     Error javadoc JavadocMethod Missing a Javadoc comment. 39
     Error misc FinalParameters Parameter origin should be final. 39
     Error whitespace WhitespaceAround '{' is not preceded with whitespace. 39
     Error naming LocalVariableName Name 're_md5' must match pattern '^[a-z][a-zA-Z0-9]*$'. 40
     Error misc ArrayTypeStyle Array brackets at illegal position. 44
     Error coding MagicNumber '256' is a magic number. 53
     Error coding MagicNumber
    - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -3442,49 +3812,49 @@

    org/laidu/commo

    org/laidu/commom/util/enums/BasicCodeEnum.java

    Severity Category Rule Message Line
     Error javadoc JavadocVariable Missing a Javadoc comment. 38
     Error javadoc JavadocVariable Missing a Javadoc comment. 39
     Error javadoc JavadocVariable Missing a Javadoc comment. 40
     Error javadoc JavadocVariable Missing a Javadoc comment. 42
     Error javadoc JavadocStyle First sentence should end with a period. 48
     Error javadoc JavadocMethod Expected an @return tag. 51
     Error javadoc JavadocMethod Expected @throws tag for 'Exception'. 51
     Error whitespace WhitespaceAround '{' is not preceded with whitespace. 51
     Error coding MagicNumber '1024' is a magic number. 54
     Error javadoc JavadocStyle First sentence should end with a period. 65
     Error javadoc JavadocMethod Expected an @return tag. 68
     Error misc FinalParameters Parameter keyMap should be final. 68
     Error javadoc JavadocMethod Expected @param tag for 'keyMap'. 68
     Error whitespace WhitespaceAround '{' is not preceded with whitespace. 68
     Error sizes LineLength Line is longer than 80 characters (found 84). 69
     Error javadoc JavadocStyle First sentence should end with a period. 73
     Error javadoc JavadocMethod Expected an @return tag. 76
     Error misc FinalParameters Parameter keyMap should be final. 76
     Error javadoc JavadocMethod Expected @param tag for 'keyMap'. 76
     Error whitespace WhitespaceAround '{' is not preceded with whitespace. 76
     Error sizes LineLength Line is longer than 80 characters (found 88). 77
     Error javadoc JavadocStyle First sentence should end with a period. 81
     Error javadoc JavadocMethod Expected an @return tag. 84
     Error misc FinalParameters Parameter data should be final. 84
     Error javadoc JavadocMethod Expected @param tag for 'data'. 84
     Error misc FinalParameters Parameter publicKey should be final. 84
     Error javadoc JavadocMethod Expected @param tag for 'publicKey'. 84
     Error whitespace WhitespaceAround '{' is not preceded with whitespace. 84
     Error sizes LineLength Line is longer than 80 characters (found 100). 85
     Error whitespace WhitespaceAfter ',' is not followed by whitespace. 85
     Error whitespace WhitespaceAfter ',' is not followed by whitespace. 85
     Error javadoc JavadocStyle First sentence should end with a period. 88
     Error javadoc JavadocMethod Expected an @return tag. 91
     Error sizes LineLength Line is longer than 80 characters (found 82). 91
     Error misc FinalParameters Parameter data should be final. 91
     Error javadoc JavadocMethod Expected @param tag for 'data'. 91
     Error misc FinalParameters Parameter privateKey should be final. 91
     Error javadoc JavadocMethod Expected @param tag for 'privateKey'. 91
     Error javadoc JavadocMethod Expected @throws tag for 'Exception'. 91
     Error whitespace WhitespaceAround '{' is not preceded with whitespace. 91
     Error sizes LineLength Line is longer than 80 characters (found 101). 92
     Error whitespace WhitespaceAfter ',' is not followed by whitespace. 92
     Error whitespace WhitespaceAfter
    - + - + - + - + - + - + - + - + @@ -3493,31 +3863,31 @@

    org/laidu/commom/util/en

    org/laidu/commom/util/enums/BasicStringEnum.java

    Severity Category Rule Message Line
     Error misc NewlineAtEndOfFile File does not end with a newline.
     Error imports UnusedImports Unused import - lombok.extern.slf4j.Slf4j. 3
     Error javadoc JavadocStyle First sentence should end with a period. 5
     Error misc TodoComment Comment matches to-do format 'TODO:'. 11
     Error javadoc JavadocMethod Missing a Javadoc comment. 14
     Error javadoc JavadocMethod Missing a Javadoc comment. 15
     Error javadoc JavadocMethod
    - + - + - + - + - + @@ -3526,163 +3896,163 @@

    org/laidu/commom/util/

    org/laidu/commom/util/enums/EntryptionAlgoithmEnum.java

    Severity Category Rule Message Line
     Error javadoc JavadocStyle First sentence should end with a period. 3
     Error javadoc JavadocMethod Missing a Javadoc comment. 11
     Error javadoc JavadocMethod Missing a Javadoc comment. 12
     Error javadoc JavadocMethod
    - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -3691,13 +4061,13 @@

    org/laidu/commo

    org/laidu/commom/util/enums/package-info.java

    Severity Category Rule Message Line
     Error misc NewlineAtEndOfFile File does not end with a newline.
     Error whitespace NoWhitespaceBefore ';' is preceded with whitespace. 12
     Error javadoc JavadocType Missing a Javadoc comment. 14
     Error whitespace WhitespaceAround '{' is not preceded with whitespace. 14
     Error javadoc JavadocVariable Missing a Javadoc comment. 15
     Error javadoc JavadocVariable Missing a Javadoc comment. 16
     Error javadoc JavadocVariable Missing a Javadoc comment. 17
     Error javadoc JavadocVariable Missing a Javadoc comment. 18
     Error javadoc JavadocVariable Missing a Javadoc comment. 19
     Error whitespace NoWhitespaceBefore ';' is preceded with whitespace. 20
     Error javadoc JavadocType Missing a Javadoc comment. 23
     Error whitespace WhitespaceAround '{' is not preceded with whitespace. 23
     Error javadoc JavadocVariable Missing a Javadoc comment. 24
     Error javadoc JavadocVariable Missing a Javadoc comment. 25
     Error javadoc JavadocVariable Missing a Javadoc comment. 26
     Error javadoc JavadocVariable Missing a Javadoc comment. 27
     Error javadoc JavadocVariable Missing a Javadoc comment. 28
     Error whitespace NoWhitespaceBefore ';' is preceded with whitespace. 29
     Error javadoc JavadocType Missing a Javadoc comment. 32
     Error whitespace WhitespaceAround '{' is not preceded with whitespace. 32
     Error javadoc JavadocVariable Missing a Javadoc comment. 33
     Error javadoc JavadocVariable Missing a Javadoc comment. 34
     Error javadoc JavadocVariable Missing a Javadoc comment. 35
     Error javadoc JavadocVariable Missing a Javadoc comment. 36
     Error javadoc JavadocVariable Missing a Javadoc comment. 37
     Error whitespace NoWhitespaceBefore
    - + - + @@ -3706,13 +4076,13 @@

    org/laidu/commom/util/enu

    org/laidu/commom/util/exception/package-info.java

    Severity Category Rule Message Line
     Error misc NewlineAtEndOfFile
    - + - + @@ -3721,13 +4091,13 @@

    org/laidu/commom/util

    org/laidu/commom/util/file/package-info.java

    Severity Category Rule Message Line
     Error misc NewlineAtEndOfFile
    - + - + @@ -3736,25 +4106,25 @@

    org/laidu/commom/util/file

    org/laidu/commom/util/http/HttpClientService.java

    Severity Category Rule Message Line
     Error misc NewlineAtEndOfFile
    - + - + - + - + @@ -3763,13 +4133,13 @@

    org/laidu/commom/util

    org/laidu/commom/util/http/HttpClientUtil.java

    Severity Category Rule Message Line
     Error misc NewlineAtEndOfFile File does not end with a newline.
     Error javadoc JavadocPackage Missing package-info.java file.
     Error javadoc JavadocMethod
    - + - + @@ -3778,199 +4148,199 @@

    org/laidu/commom/util/ht

    org/laidu/commom/util/http/core/HttpMethod.java

    Severity Category Rule Message Line
     Error misc NewlineAtEndOfFile
    - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -3979,379 +4349,379 @@

    org/laidu/commom/util/h

    org/laidu/commom/util/http/core/HttpRequest.java

    Severity Category Rule Message Line
     Error misc NewlineAtEndOfFile File does not end with a newline.
     Error design FinalClass Class HttpMethod should be declared as final. 10
     Error javadoc JavadocVariable Missing a Javadoc comment. 13
     Error naming MemberName Name 'HTTP_GET' must match pattern '^[a-z][a-zA-Z0-9]*$'. 13
     Error design VisibilityModifier Variable 'HTTP_GET' must be private and have accessor methods. 13
     Error javadoc JavadocVariable Missing a Javadoc comment. 14
     Error naming MemberName Name 'HTTP_HEADER' must match pattern '^[a-z][a-zA-Z0-9]*$'. 14
     Error design VisibilityModifier Variable 'HTTP_HEADER' must be private and have accessor methods. 14
     Error javadoc JavadocVariable Missing a Javadoc comment. 15
     Error naming MemberName Name 'HTTP_POST' must match pattern '^[a-z][a-zA-Z0-9]*$'. 15
     Error design VisibilityModifier Variable 'HTTP_POST' must be private and have accessor methods. 15
     Error javadoc JavadocVariable Missing a Javadoc comment. 16
     Error naming MemberName Name 'HTTP_DELETE' must match pattern '^[a-z][a-zA-Z0-9]*$'. 16
     Error design VisibilityModifier Variable 'HTTP_DELETE' must be private and have accessor methods. 16
     Error javadoc JavadocVariable Missing a Javadoc comment. 17
     Error naming MemberName Name 'HTTP_TRACE' must match pattern '^[a-z][a-zA-Z0-9]*$'. 17
     Error design VisibilityModifier Variable 'HTTP_TRACE' must be private and have accessor methods. 17
     Error javadoc JavadocVariable Missing a Javadoc comment. 18
     Error naming MemberName Name 'HTTP_PATCH' must match pattern '^[a-z][a-zA-Z0-9]*$'. 18
     Error design VisibilityModifier Variable 'HTTP_PATCH' must be private and have accessor methods. 18
     Error javadoc JavadocVariable Missing a Javadoc comment. 19
     Error naming MemberName Name 'HTTP_CONNECT' must match pattern '^[a-z][a-zA-Z0-9]*$'. 19
     Error design VisibilityModifier Variable 'HTTP_CONNECT' must be private and have accessor methods. 19
     Error javadoc JavadocVariable Missing a Javadoc comment. 20
     Error naming MemberName Name 'HTTP_OPTIONS' must match pattern '^[a-z][a-zA-Z0-9]*$'. 20
     Error design VisibilityModifier Variable 'HTTP_OPTIONS' must be private and have accessor methods. 20
     Error javadoc JavadocMethod Missing a Javadoc comment. 22
     Error javadoc JavadocMethod Missing a Javadoc comment. 25
     Error whitespace WhitespaceAround '{' is not preceded with whitespace. 25
     Error javadoc JavadocType Missing a Javadoc comment. 29
     Error javadoc JavadocVariable Missing a Javadoc comment. 30
     Error design VisibilityModifier
    - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -4360,379 +4730,379 @@

    org/laidu/commom/util/

    org/laidu/commom/util/http/core/HttpRequestBody.java

    Severity Category Rule Message Line
     Error misc NewlineAtEndOfFile File does not end with a newline.
     Error javadoc JavadocVariable Missing a Javadoc comment. 23
     Error javadoc JavadocVariable Missing a Javadoc comment. 25
     Error javadoc JavadocVariable Missing a Javadoc comment. 27
     Error javadoc JavadocVariable Missing a Javadoc comment. 29
     Error javadoc JavadocVariable Missing a Javadoc comment. 31
     Error javadoc JavadocStyle First sentence should end with a period. 38
     Error javadoc JavadocVariable Missing a Javadoc comment. 43
     Error javadoc JavadocVariable Missing a Javadoc comment. 45
     Error javadoc JavadocVariable Missing a Javadoc comment. 47
     Error javadoc JavadocVariable Missing a Javadoc comment. 49
     Error javadoc JavadocMethod Missing a Javadoc comment. 51
     Error javadoc JavadocMethod Missing a Javadoc comment. 54
     Error misc FinalParameters Parameter url should be final. 54
     Error sizes LineLength Line is longer than 80 characters (found 92). 55
     Error javadoc JavadocMethod Missing a Javadoc comment. 58
     Error misc FinalParameters Parameter url should be final. 58
     Error sizes LineLength Line is longer than 80 characters (found 91). 59
     Error design DesignForExtension Method 'getExtra' is not designed for extension - needs to be abstract, final or empty. 62
     Error javadoc JavadocMethod Missing a Javadoc comment. 62
     Error misc FinalParameters Parameter key should be final. 62
     Error design DesignForExtension Method 'putExtra' is not designed for extension - needs to be abstract, final or empty. 69
     Error javadoc JavadocMethod Missing a Javadoc comment. 69
     Error misc FinalParameters Parameter key should be final. 69
     Error misc FinalParameters Parameter value should be final. 69
     Error design DesignForExtension Method 'getHeader' is not designed for extension - needs to be abstract, final or empty. 77
     Error javadoc JavadocMethod Missing a Javadoc comment. 77
     Error misc FinalParameters Parameter key should be final. 77
     Error design DesignForExtension Method 'putHeader' is not designed for extension - needs to be abstract, final or empty. 81
     Error javadoc JavadocMethod Missing a Javadoc comment. 81
     Error misc FinalParameters Parameter key should be final. 81
     Error misc FinalParameters Parameter value should be final. 81
     Error design DesignForExtension Method 'getCookie' is not designed for extension - needs to be abstract, final or empty. 86
     Error javadoc JavadocMethod Missing a Javadoc comment. 86
     Error misc FinalParameters Parameter key should be final. 86
     Error design DesignForExtension Method 'putCookie' is not designed for extension - needs to be abstract, final or empty. 90
     Error javadoc JavadocMethod Missing a Javadoc comment. 90
     Error misc FinalParameters Parameter key should be final. 90
     Error misc FinalParameters Parameter value should be final. 90
     Error design DesignForExtension Method 'hashCode' is not designed for extension - needs to be abstract, final or empty. 96
     Error coding AvoidInlineConditionals Avoid inline conditionals. 98
     Error coding MagicNumber '31' is a magic number. 99
     Error coding AvoidInlineConditionals Avoid inline conditionals. 99
     Error design DesignForExtension Method 'equals' is not designed for extension - needs to be abstract, final or empty. 103
     Error misc FinalParameters Parameter o should be final. 104
     Error blocks NeedBraces 'if' construct must use '{}'s. 105
     Error blocks NeedBraces 'if' construct must use '{}'s. 106
     Error blocks NeedBraces 'if' construct must use '{}'s. 110
     Error sizes LineLength Line is longer than 80 characters (found 87). 110
     Error coding AvoidInlineConditionals Avoid inline conditionals. 110
     Error sizes LineLength Line is longer than 80 characters (found 87). 111
     Error coding AvoidInlineConditionals Avoid inline conditionals. 111
     Error design DesignForExtension Method 'toString' is not designed for extension - needs to be abstract, final or empty. 114
     Error whitespace OperatorWrap '+' should be on a new line. 116
     Error whitespace OperatorWrap '+' should be on a new line. 117
     Error whitespace OperatorWrap '+' should be on a new line. 118
     Error whitespace OperatorWrap '+' should be on a new line. 119
     Error whitespace OperatorWrap '+' should be on a new line. 120
     Error whitespace OperatorWrap '+' should be on a new line. 121
     Error whitespace WhitespaceAround '+' is not preceded with whitespace. 122
     Error whitespace WhitespaceAround '+' is not preceded with whitespace. 122
     Error whitespace OperatorWrap
    - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -4741,13 +5111,13 @@

    org/laidu/commom/u

    org/laidu/commom/util/http/core/package-info.java

    Severity Category Rule Message Line
     Error misc NewlineAtEndOfFile File does not end with a newline.
     Error javadoc JavadocVariable Missing a Javadoc comment. 21
     Error javadoc JavadocType Missing a Javadoc comment. 23
     Error modifier ModifierOrder 'abstract' modifier out of order with the JLS suggestions. 23
     Error javadoc JavadocVariable Missing a Javadoc comment. 25
     Error javadoc JavadocVariable Missing a Javadoc comment. 27
     Error javadoc JavadocVariable Missing a Javadoc comment. 29
     Error javadoc JavadocVariable Missing a Javadoc comment. 31
     Error javadoc JavadocVariable Missing a Javadoc comment. 34
     Error javadoc JavadocVariable Missing a Javadoc comment. 36
     Error javadoc JavadocVariable Missing a Javadoc comment. 38
     Error javadoc JavadocMethod Missing a Javadoc comment. 40
     Error javadoc JavadocMethod Missing a Javadoc comment. 43
     Error misc FinalParameters Parameter body should be final. 43
     Error coding HiddenField 'body' hides a field. 43
     Error misc FinalParameters Parameter contentType should be final. 43
     Error coding HiddenField 'contentType' hides a field. 43
     Error misc FinalParameters Parameter encoding should be final. 43
     Error coding HiddenField 'encoding' hides a field. 43
     Error design DesignForExtension Method 'getContentType' is not designed for extension - needs to be abstract, final or empty. 49
     Error javadoc JavadocMethod Missing a Javadoc comment. 49
     Error design DesignForExtension Method 'getEncoding' is not designed for extension - needs to be abstract, final or empty. 53
     Error javadoc JavadocMethod Missing a Javadoc comment. 53
     Error design DesignForExtension Method 'setBody' is not designed for extension - needs to be abstract, final or empty. 57
     Error javadoc JavadocMethod Missing a Javadoc comment. 57
     Error misc FinalParameters Parameter body should be final. 57
     Error coding HiddenField 'body' hides a field. 57
     Error design DesignForExtension Method 'setContentType' is not designed for extension - needs to be abstract, final or empty. 61
     Error javadoc JavadocMethod Missing a Javadoc comment. 61
     Error misc FinalParameters Parameter contentType should be final. 61
     Error coding HiddenField 'contentType' hides a field. 61
     Error design DesignForExtension Method 'setEncoding' is not designed for extension - needs to be abstract, final or empty. 65
     Error javadoc JavadocMethod Missing a Javadoc comment. 65
     Error misc FinalParameters Parameter encoding should be final. 65
     Error coding HiddenField 'encoding' hides a field. 65
     Error javadoc JavadocMethod Missing a Javadoc comment. 69
     Error misc FinalParameters Parameter json should be final. 69
     Error misc FinalParameters Parameter encoding should be final. 69
     Error sizes LineLength Line is longer than 80 characters (found 92). 71
     Error sizes LineLength Line is longer than 80 characters (found 82). 73
     Error javadoc JavadocMethod Missing a Javadoc comment. 77
     Error misc FinalParameters Parameter xml should be final. 77
     Error misc FinalParameters Parameter encoding should be final. 77
     Error sizes LineLength Line is longer than 80 characters (found 90). 79
     Error sizes LineLength Line is longer than 80 characters (found 82). 81
     Error sizes LineLength Line is longer than 80 characters (found 92). 85
     Error javadoc JavadocMethod Missing a Javadoc comment. 85
     Error misc FinalParameters Parameter body should be final. 85
     Error misc FinalParameters Parameter contentType should be final. 85
     Error misc FinalParameters Parameter encoding should be final. 85
     Error sizes LineLength Line is longer than 80 characters (found 83). 89
     Error javadoc JavadocMethod Missing a Javadoc comment. 89
     Error misc FinalParameters Parameter params should be final. 89
     Error whitespace WhitespaceAfter ',' is not followed by whitespace. 89
     Error misc FinalParameters Parameter encoding should be final. 89
     Error whitespace WhitespaceAround '{' is not preceded with whitespace. 89
     Error sizes LineLength Line is longer than 80 characters (found 89). 90
     Error sizes LineLength Line is longer than 80 characters (found 105). 92
     Error sizes LineLength Line is longer than 80 characters (found 136). 95
     Error sizes LineLength Line is longer than 80 characters (found 82). 97
     Error design DesignForExtension Method 'getBody' is not designed for extension - needs to be abstract, final or empty. 101
     Error javadoc JavadocMethod
    - + - + @@ -4756,235 +5126,235 @@

    org/laidu/commom/util

    org/laidu/commom/util/http/curl/CurlParserUtil.java

    Severity Category Rule Message Line
     Error misc NewlineAtEndOfFile
    - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -4993,205 +5363,205 @@

    org/laidu/commom/ut

    org/laidu/commom/util/http/curl/CurlParserUtilV2.java

    Severity Category Rule Message Line
     Error javadoc JavadocPackage Missing package-info.java file.
     Error javadoc JavadocStyle First sentence should end with a period. 11
     Error sizes LineLength Line is longer than 80 characters (found 197). 14
     Error sizes LineLength Line is longer than 80 characters (found 276). 15
     Error sizes LineLength Line is longer than 80 characters (found 137). 20
     Error sizes LineLength Line is longer than 80 characters (found 584). 21
     Error javadoc JavadocVariable Missing a Javadoc comment. 45
     Error javadoc JavadocMethod Missing a Javadoc comment. 49
     Error misc FinalParameters Parameter curlLine should be final. 49
     Error sizes LineLength Line is longer than 80 characters (found 115). 53
     Error whitespace WhitespaceAround '{' is not preceded with whitespace. 54
     Error sizes LineLength Line is longer than 80 characters (found 93). 57
     Error javadoc JavadocMethod Missing a Javadoc comment. 64
     Error misc FinalParameters Parameter curlLine should be final. 64
     Error javadoc JavadocMethod Missing a Javadoc comment. 73
     Error misc FinalParameters Parameter curlLine should be final. 73
     Error sizes LineLength Line is longer than 80 characters (found 127). 84
     Error whitespace WhitespaceAfter ',' is not followed by whitespace. 84
     Error sizes LineLength Line is longer than 80 characters (found 99). 89
     Error javadoc JavadocMethod Missing a Javadoc comment. 97
     Error misc FinalParameters Parameter curlLine should be final. 97
     Error sizes LineLength Line is longer than 80 characters (found 95). 101
     Error javadoc JavadocMethod Missing a Javadoc comment. 105
     Error misc FinalParameters Parameter curlLine should be final. 105
     Error sizes LineLength Line is longer than 80 characters (found 99). 108
     Error javadoc JavadocMethod Missing a Javadoc comment. 112
     Error misc FinalParameters Parameter curlLine should be final. 112
     Error sizes LineLength Line is longer than 80 characters (found 86). 115
     Error javadoc JavadocMethod Missing a Javadoc comment. 118
     Error misc FinalParameters Parameter curlLine should be final. 118
     Error sizes LineLength Line is longer than 80 characters (found 100). 121
     Error javadoc JavadocMethod Missing a Javadoc comment. 124
     Error misc FinalParameters Parameter curlLine should be final. 124
     Error sizes LineLength Line is longer than 80 characters (found 128). 131
     Error whitespace WhitespaceAfter ',' is not followed by whitespace. 135
     Error whitespace WhitespaceAround '==' is not preceded with whitespace. 136
     Error whitespace WhitespaceAround '==' is not followed by whitespace. 136
     Error whitespace WhitespaceAfter
    - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -5200,49 +5570,49 @@

    org/laidu/commom/

    org/laidu/commom/util/http/har/CrawlerRequestTrack.java

    Severity Category Rule Message Line
     Error javadoc JavadocStyle First sentence should end with a period. 11
     Error sizes LineLength Line is longer than 80 characters (found 197). 14
     Error sizes LineLength Line is longer than 80 characters (found 276). 15
     Error sizes LineLength Line is longer than 80 characters (found 137). 20
     Error sizes LineLength Line is longer than 80 characters (found 584). 21
     Error javadoc JavadocVariable Missing a Javadoc comment. 27
     Error misc FinalParameters Parameter curl should be final. 33
     Error javadoc JavadocMethod Expected @param tag for 'curl'. 33
     Error misc FinalParameters Parameter curl should be final. 40
     Error javadoc JavadocMethod Expected @param tag for 'curl'. 40
     Error javadoc JavadocMethod Missing a Javadoc comment. 44
     Error sizes LineLength Line is longer than 80 characters (found 115). 48
     Error whitespace WhitespaceAround '{' is not preceded with whitespace. 49
     Error sizes LineLength Line is longer than 80 characters (found 93). 52
     Error javadoc JavadocMethod Missing a Javadoc comment. 59
     Error javadoc JavadocMethod Missing a Javadoc comment. 68
     Error sizes LineLength Line is longer than 80 characters (found 127). 79
     Error whitespace WhitespaceAfter ',' is not followed by whitespace. 79
     Error sizes LineLength Line is longer than 80 characters (found 99). 84
     Error javadoc JavadocMethod Missing a Javadoc comment. 92
     Error sizes LineLength Line is longer than 80 characters (found 95). 96
     Error javadoc JavadocMethod Missing a Javadoc comment. 100
     Error sizes LineLength Line is longer than 80 characters (found 99). 103
     Error javadoc JavadocMethod Missing a Javadoc comment. 107
     Error sizes LineLength Line is longer than 80 characters (found 86). 110
     Error javadoc JavadocMethod Missing a Javadoc comment. 113
     Error sizes LineLength Line is longer than 80 characters (found 100). 116
     Error javadoc JavadocMethod Missing a Javadoc comment. 119
     Error sizes LineLength Line is longer than 80 characters (found 128). 126
     Error whitespace WhitespaceAfter ',' is not followed by whitespace. 130
     Error whitespace WhitespaceAround '==' is not preceded with whitespace. 131
     Error whitespace WhitespaceAround '==' is not followed by whitespace. 131
     Error whitespace WhitespaceAfter
    - + - + - + - + - + - + - + - + @@ -5251,31 +5621,31 @@

    org/laidu/commo

    org/laidu/commom/util/http/har/HarParser.java

    Severity Category Rule Message Line
     Error javadoc JavadocPackage Missing package-info.java file.
     Error javadoc JavadocStyle First sentence should end with a period. 21
     Error whitespace WhitespaceAfter ',' is not followed by whitespace. 24
     Error javadoc JavadocStyle First sentence should end with a period. 26
     Error javadoc JavadocStyle First sentence should end with a period. 31
     Error javadoc JavadocStyle First sentence should end with a period. 36
     Error javadoc JavadocStyle
    - + - + - + - + - + @@ -5284,18 +5654,12 @@

    org/laidu/commom/util/htt

    org/laidu/commom/util/http/har/model/Browser.java

    Severity Category Rule Message Line
     Error javadoc JavadocType Missing a Javadoc comment. 7
     Error javadoc JavadocVariable Missing a Javadoc comment. 10
     Error javadoc JavadocMethod Missing a Javadoc comment. 12
     Error misc FinalParameters
    - + - - - - - - @@ -6646,46 +7010,52 @@

    org/laidu/commom/

    + + + + + + - + - + - + - + - + - + - + @@ -6694,1123 +7064,1123 @@

    org/laidu/commom/

    org/laidu/commom/util/http/har/model/Pages.java

    Severity Category Rule Message Line
     ErrorjavadocJavadocPackageMissing package-info.java file.
     Error javadoc
     Error javadocJavadocPackageMissing package-info.java file.
     Errorjavadoc JavadocType Missing a Javadoc comment. 3
     Error javadoc JavadocVariable Missing a Javadoc comment. 5
     Error design VisibilityModifier Variable 'onLoad' must be private and have accessor methods. 5
     Error javadoc JavadocVariable Missing a Javadoc comment. 6
     Error design VisibilityModifier Variable 'onContentLoad' must be private and have accessor methods. 6
     Error javadoc JavadocVariable Missing a Javadoc comment. 7
     Error naming MemberName Name '_startRender' must match pattern '^[a-z][a-zA-Z0-9]*$'. 7
     Error design VisibilityModifier
    - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -7819,49 +8189,49 @@

    org/laidu/commom/util/h

    org/laidu/commom/util/http/har/model/PostData.java

    Severity Category Rule Message Line
     Error javadoc JavadocType Missing a Javadoc comment. 3
     Error javadoc JavadocVariable Missing a Javadoc comment. 5
     Error design VisibilityModifier Variable 'startedDateTime' must be private and have accessor methods. 5
     Error javadoc JavadocVariable Missing a Javadoc comment. 6
     Error design VisibilityModifier Variable 'title' must be private and have accessor methods. 6
     Error javadoc JavadocVariable Missing a Javadoc comment. 7
     Error design VisibilityModifier Variable 'id' must be private and have accessor methods. 7
     Error javadoc JavadocVariable Missing a Javadoc comment. 8
     Error design VisibilityModifier Variable 'pageTimings' must be private and have accessor methods. 8
     Error javadoc JavadocVariable Missing a Javadoc comment. 9
     Error naming MemberName Name '_URL' must match pattern '^[a-z][a-zA-Z0-9]*$'. 9
     Error design VisibilityModifier Variable '_URL' must be private and have accessor methods. 9
     Error javadoc JavadocVariable Missing a Javadoc comment. 10
     Error naming MemberName Name '_loadTime' must match pattern '^[a-z][a-zA-Z0-9]*$'. 10
     Error design VisibilityModifier Variable '_loadTime' must be private and have accessor methods. 10
     Error javadoc JavadocVariable Missing a Javadoc comment. 11
     Error naming MemberName Name '_TTFB' must match pattern '^[a-z][a-zA-Z0-9]*$'. 11
     Error design VisibilityModifier Variable '_TTFB' must be private and have accessor methods. 11
     Error javadoc JavadocVariable Missing a Javadoc comment. 12
     Error naming MemberName Name '_bytesOut' must match pattern '^[a-z][a-zA-Z0-9]*$'. 12
     Error design VisibilityModifier Variable '_bytesOut' must be private and have accessor methods. 12
     Error javadoc JavadocVariable Missing a Javadoc comment. 13
     Error naming MemberName Name '_bytesOutDoc' must match pattern '^[a-z][a-zA-Z0-9]*$'. 13
     Error design VisibilityModifier Variable '_bytesOutDoc' must be private and have accessor methods. 13
     Error javadoc JavadocVariable Missing a Javadoc comment. 14
     Error naming MemberName Name '_connections' must match pattern '^[a-z][a-zA-Z0-9]*$'. 14
     Error design VisibilityModifier Variable '_connections' must be private and have accessor methods. 14
     Error javadoc JavadocVariable Missing a Javadoc comment. 15
     Error naming MemberName Name '_requests' must match pattern '^[a-z][a-zA-Z0-9]*$'. 15
     Error design VisibilityModifier Variable '_requests' must be private and have accessor methods. 15
     Error javadoc JavadocVariable Missing a Javadoc comment. 16
     Error naming MemberName Name '_requestsDoc' must match pattern '^[a-z][a-zA-Z0-9]*$'. 16
     Error design VisibilityModifier Variable '_requestsDoc' must be private and have accessor methods. 16
     Error javadoc JavadocVariable Missing a Javadoc comment. 17
     Error naming MemberName Name '_responses_200' must match pattern '^[a-z][a-zA-Z0-9]*$'. 17
     Error design VisibilityModifier Variable '_responses_200' must be private and have accessor methods. 17
     Error javadoc JavadocVariable Missing a Javadoc comment. 18
     Error naming MemberName Name '_responses_404' must match pattern '^[a-z][a-zA-Z0-9]*$'. 18
     Error design VisibilityModifier Variable '_responses_404' must be private and have accessor methods. 18
     Error javadoc JavadocVariable Missing a Javadoc comment. 19
     Error naming MemberName Name '_responses_other' must match pattern '^[a-z][a-zA-Z0-9]*$'. 19
     Error design VisibilityModifier Variable '_responses_other' must be private and have accessor methods. 19
     Error javadoc JavadocVariable Missing a Javadoc comment. 20
     Error naming MemberName Name '_render' must match pattern '^[a-z][a-zA-Z0-9]*$'. 20
     Error design VisibilityModifier Variable '_render' must be private and have accessor methods. 20
     Error javadoc JavadocVariable Missing a Javadoc comment. 21
     Error naming MemberName Name '_fullyLoaded' must match pattern '^[a-z][a-zA-Z0-9]*$'. 21
     Error design VisibilityModifier Variable '_fullyLoaded' must be private and have accessor methods. 21
     Error javadoc JavadocVariable Missing a Javadoc comment. 22
     Error naming MemberName Name '_cached' must match pattern '^[a-z][a-zA-Z0-9]*$'. 22
     Error design VisibilityModifier Variable '_cached' must be private and have accessor methods. 22
     Error javadoc JavadocVariable Missing a Javadoc comment. 23
     Error naming MemberName Name '_docTime' must match pattern '^[a-z][a-zA-Z0-9]*$'. 23
     Error design VisibilityModifier Variable '_docTime' must be private and have accessor methods. 23
     Error javadoc JavadocVariable Missing a Javadoc comment. 24
     Error naming MemberName Name '_domTime' must match pattern '^[a-z][a-zA-Z0-9]*$'. 24
     Error design VisibilityModifier Variable '_domTime' must be private and have accessor methods. 24
     Error javadoc JavadocVariable Missing a Javadoc comment. 25
     Error naming MemberName Name '_score_cache' must match pattern '^[a-z][a-zA-Z0-9]*$'. 25
     Error design VisibilityModifier Variable '_score_cache' must be private and have accessor methods. 25
     Error javadoc JavadocVariable Missing a Javadoc comment. 26
     Error naming MemberName Name '_score_cdn' must match pattern '^[a-z][a-zA-Z0-9]*$'. 26
     Error design VisibilityModifier Variable '_score_cdn' must be private and have accessor methods. 26
     Error javadoc JavadocVariable Missing a Javadoc comment. 27
     Error naming MemberName Name '_score_gzip' must match pattern '^[a-z][a-zA-Z0-9]*$'. 27
     Error design VisibilityModifier Variable '_score_gzip' must be private and have accessor methods. 27
     Error javadoc JavadocVariable Missing a Javadoc comment. 28
     Error naming MemberName Name '_score_cookies' must match pattern '^[a-z][a-zA-Z0-9]*$'. 28
     Error design VisibilityModifier Variable '_score_cookies' must be private and have accessor methods. 28
     Error javadoc JavadocVariable Missing a Javadoc comment. 30
     Error naming MemberName Name '_score_minify' must match pattern '^[a-z][a-zA-Z0-9]*$'. 30
     Error design VisibilityModifier Variable '_score_minify' must be private and have accessor methods. 30
     Error javadoc JavadocVariable Missing a Javadoc comment. 31
     Error naming MemberName Name '_score_combine' must match pattern '^[a-z][a-zA-Z0-9]*$'. 31
     Error design VisibilityModifier Variable '_score_combine' must be private and have accessor methods. 31
     Error javadoc JavadocVariable Missing a Javadoc comment. 32
     Error naming MemberName Name '_score_compress' must match pattern '^[a-z][a-zA-Z0-9]*$'. 32
     Error design VisibilityModifier Variable '_score_compress' must be private and have accessor methods. 32
     Error javadoc JavadocVariable Missing a Javadoc comment. 33
     Error naming MemberName Name '_score_etags' must match pattern '^[a-z][a-zA-Z0-9]*$'. 33
     Error design VisibilityModifier Variable '_score_etags' must be private and have accessor methods. 33
     Error javadoc JavadocVariable Missing a Javadoc comment. 34
     Error naming MemberName Name '_gzip_total' must match pattern '^[a-z][a-zA-Z0-9]*$'. 34
     Error design VisibilityModifier Variable '_gzip_total' must be private and have accessor methods. 34
     Error javadoc JavadocVariable Missing a Javadoc comment. 35
     Error naming MemberName Name '_gzip_savings' must match pattern '^[a-z][a-zA-Z0-9]*$'. 35
     Error design VisibilityModifier Variable '_gzip_savings' must be private and have accessor methods. 35
     Error javadoc JavadocVariable Missing a Javadoc comment. 36
     Error naming MemberName Name '_minify_total' must match pattern '^[a-z][a-zA-Z0-9]*$'. 36
     Error design VisibilityModifier Variable '_minify_total' must be private and have accessor methods. 36
     Error javadoc JavadocVariable Missing a Javadoc comment. 37
     Error naming MemberName Name '_minify_savings' must match pattern '^[a-z][a-zA-Z0-9]*$'. 37
     Error design VisibilityModifier Variable '_minify_savings' must be private and have accessor methods. 37
     Error javadoc JavadocVariable Missing a Javadoc comment. 38
     Error naming MemberName Name '_image_total' must match pattern '^[a-z][a-zA-Z0-9]*$'. 38
     Error design VisibilityModifier Variable '_image_total' must be private and have accessor methods. 38
     Error javadoc JavadocVariable Missing a Javadoc comment. 39
     Error naming MemberName Name '_image_savings' must match pattern '^[a-z][a-zA-Z0-9]*$'. 39
     Error design VisibilityModifier Variable '_image_savings' must be private and have accessor methods. 39
     Error javadoc JavadocVariable Missing a Javadoc comment. 40
     Error naming MemberName Name '_optimization_checked' must match pattern '^[a-z][a-zA-Z0-9]*$'. 40
     Error design VisibilityModifier Variable '_optimization_checked' must be private and have accessor methods. 40
     Error javadoc JavadocVariable Missing a Javadoc comment. 41
     Error naming MemberName Name '_aft' must match pattern '^[a-z][a-zA-Z0-9]*$'. 41
     Error design VisibilityModifier Variable '_aft' must be private and have accessor methods. 41
     Error javadoc JavadocVariable Missing a Javadoc comment. 42
     Error naming MemberName Name '_domElements' must match pattern '^[a-z][a-zA-Z0-9]*$'. 42
     Error design VisibilityModifier Variable '_domElements' must be private and have accessor methods. 42
     Error javadoc JavadocVariable Missing a Javadoc comment. 43
     Error naming MemberName Name '_pageSpeedVersion' must match pattern '^[a-z][a-zA-Z0-9]*$'. 43
     Error design VisibilityModifier Variable '_pageSpeedVersion' must be private and have accessor methods. 43
     Error javadoc JavadocVariable Missing a Javadoc comment. 44
     Error naming MemberName Name '_title' must match pattern '^[a-z][a-zA-Z0-9]*$'. 44
     Error design VisibilityModifier Variable '_title' must be private and have accessor methods. 44
     Error javadoc JavadocVariable Missing a Javadoc comment. 45
     Error naming MemberName Name '_titleTime' must match pattern '^[a-z][a-zA-Z0-9]*$'. 45
     Error design VisibilityModifier Variable '_titleTime' must be private and have accessor methods. 45
     Error javadoc JavadocVariable Missing a Javadoc comment. 46
     Error naming MemberName Name '_loadEventStart' must match pattern '^[a-z][a-zA-Z0-9]*$'. 46
     Error design VisibilityModifier Variable '_loadEventStart' must be private and have accessor methods. 46
     Error javadoc JavadocVariable Missing a Javadoc comment. 47
     Error naming MemberName Name '_loadEventEnd' must match pattern '^[a-z][a-zA-Z0-9]*$'. 47
     Error design VisibilityModifier Variable '_loadEventEnd' must be private and have accessor methods. 47
     Error javadoc JavadocVariable Missing a Javadoc comment. 48
     Error naming MemberName Name '_domContentLoadedEventStart' must match pattern '^[a-z][a-zA-Z0-9]*$'. 48
     Error design VisibilityModifier Variable '_domContentLoadedEventStart' must be private and have accessor methods. 48
     Error javadoc JavadocVariable Missing a Javadoc comment. 49
     Error naming MemberName Name '_domContentLoadedEventEnd' must match pattern '^[a-z][a-zA-Z0-9]*$'. 49
     Error design VisibilityModifier Variable '_domContentLoadedEventEnd' must be private and have accessor methods. 49
     Error javadoc JavadocVariable Missing a Javadoc comment. 50
     Error naming MemberName Name '_lastVisualChange' must match pattern '^[a-z][a-zA-Z0-9]*$'. 50
     Error design VisibilityModifier Variable '_lastVisualChange' must be private and have accessor methods. 50
     Error javadoc JavadocVariable Missing a Javadoc comment. 51
     Error naming MemberName Name '_browser_name' must match pattern '^[a-z][a-zA-Z0-9]*$'. 51
     Error design VisibilityModifier Variable '_browser_name' must be private and have accessor methods. 51
     Error javadoc JavadocVariable Missing a Javadoc comment. 52
     Error naming MemberName Name '_browser_version' must match pattern '^[a-z][a-zA-Z0-9]*$'. 52
     Error design VisibilityModifier Variable '_browser_version' must be private and have accessor methods. 52
     Error javadoc JavadocVariable Missing a Javadoc comment. 53
     Error naming MemberName Name '_server_count' must match pattern '^[a-z][a-zA-Z0-9]*$'. 53
     Error design VisibilityModifier Variable '_server_count' must be private and have accessor methods. 53
     Error javadoc JavadocVariable Missing a Javadoc comment. 54
     Error naming MemberName Name '_server_rtt' must match pattern '^[a-z][a-zA-Z0-9]*$'. 54
     Error design VisibilityModifier Variable '_server_rtt' must be private and have accessor methods. 54
     Error javadoc JavadocVariable Missing a Javadoc comment. 55
     Error naming MemberName Name '_base_page_cdn' must match pattern '^[a-z][a-zA-Z0-9]*$'. 55
     Error design VisibilityModifier Variable '_base_page_cdn' must be private and have accessor methods. 55
     Error javadoc JavadocVariable Missing a Javadoc comment. 56
     Error naming MemberName Name '_adult_site' must match pattern '^[a-z][a-zA-Z0-9]*$'. 56
     Error design VisibilityModifier Variable '_adult_site' must be private and have accessor methods. 56
     Error javadoc JavadocVariable Missing a Javadoc comment. 57
     Error naming MemberName Name '_fixed_viewport' must match pattern '^[a-z][a-zA-Z0-9]*$'. 57
     Error design VisibilityModifier Variable '_fixed_viewport' must be private and have accessor methods. 57
     Error javadoc JavadocVariable Missing a Javadoc comment. 58
     Error naming MemberName Name '_score_progressive_jpeg' must match pattern '^[a-z][a-zA-Z0-9]*$'. 58
     Error design VisibilityModifier Variable '_score_progressive_jpeg' must be private and have accessor methods. 58
     Error javadoc JavadocVariable Missing a Javadoc comment. 59
     Error naming MemberName Name '_firstPaint' must match pattern '^[a-z][a-zA-Z0-9]*$'. 59
     Error design VisibilityModifier Variable '_firstPaint' must be private and have accessor methods. 59
     Error javadoc JavadocVariable Missing a Javadoc comment. 60
     Error naming MemberName Name '_docCPUms' must match pattern '^[a-z][a-zA-Z0-9]*$'. 60
     Error design VisibilityModifier Variable '_docCPUms' must be private and have accessor methods. 60
     Error javadoc JavadocVariable Missing a Javadoc comment. 61
     Error naming MemberName Name '_fullyLoadedCPUms' must match pattern '^[a-z][a-zA-Z0-9]*$'. 61
     Error design VisibilityModifier Variable '_fullyLoadedCPUms' must be private and have accessor methods. 61
     Error javadoc JavadocVariable Missing a Javadoc comment. 62
     Error naming MemberName Name '_docCPUpct' must match pattern '^[a-z][a-zA-Z0-9]*$'. 62
     Error design VisibilityModifier Variable '_docCPUpct' must be private and have accessor methods. 62
     Error javadoc JavadocVariable Missing a Javadoc comment. 63
     Error naming MemberName Name '_date' must match pattern '^[a-z][a-zA-Z0-9]*$'. 63
     Error design VisibilityModifier Variable '_date' must be private and have accessor methods. 63
     Error javadoc JavadocVariable Missing a Javadoc comment. 64
     Error naming MemberName Name '_SpeedIndex' must match pattern '^[a-z][a-zA-Z0-9]*$'. 64
     Error design VisibilityModifier Variable '_SpeedIndex' must be private and have accessor methods. 64
     Error javadoc JavadocVariable Missing a Javadoc comment. 65
     Error naming MemberName Name '_visualComplete' must match pattern '^[a-z][a-zA-Z0-9]*$'. 65
     Error design VisibilityModifier Variable '_visualComplete' must be private and have accessor methods. 65
     Error javadoc JavadocVariable Missing a Javadoc comment. 66
     Error naming MemberName Name '_run' must match pattern '^[a-z][a-zA-Z0-9]*$'. 66
     Error design VisibilityModifier Variable '_run' must be private and have accessor methods. 66
     Error javadoc JavadocVariable Missing a Javadoc comment. 67
     Error naming MemberName Name '_effectiveBps' must match pattern '^[a-z][a-zA-Z0-9]*$'. 67
     Error design VisibilityModifier Variable '_effectiveBps' must be private and have accessor methods. 67
     Error javadoc JavadocVariable Missing a Javadoc comment. 68
     Error naming MemberName Name '_effectiveBpsDoc' must match pattern '^[a-z][a-zA-Z0-9]*$'. 68
     Error design VisibilityModifier
    - + - + - + - + - + - + - + - + @@ -7870,37 +8240,37 @@

    org/laidu/commom/uti

    org/laidu/commom/util/http/har/model/QueryString.java

    Severity Category Rule Message Line
     Error javadoc JavadocStyle First sentence should end with a period. 19
     Error sizes LineLength Line is longer than 80 characters (found 90). 22
     Error javadoc JavadocVariable Missing a Javadoc comment. 26
     Error javadoc JavadocStyle First sentence should end with a period. 27
     Error javadoc JavadocType Missing a Javadoc comment. 33
     Error javadoc JavadocVariable Missing a Javadoc comment. 35
     Error javadoc JavadocVariable
    - + - + - + - + - + - + @@ -7909,133 +8279,133 @@

    org/laidu/commom/

    org/laidu/commom/util/http/har/model/Request.java

    Severity Category Rule Message Line
     Error javadoc JavadocType Missing a Javadoc comment. 3
     Error javadoc JavadocVariable Missing a Javadoc comment. 4
     Error design VisibilityModifier Variable 'name' must be private and have accessor methods. 4
     Error javadoc JavadocVariable Missing a Javadoc comment. 5
     Error design VisibilityModifier
    - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -8044,121 +8414,121 @@

    org/laidu/commom/util

    org/laidu/commom/util/http/har/model/Response.java

    Severity Category Rule Message Line
     Error javadoc JavadocType Missing a Javadoc comment. 5
     Error javadoc JavadocVariable Missing a Javadoc comment. 6
     Error design VisibilityModifier Variable 'index' must be private and have accessor methods. 6
     Error javadoc JavadocVariable Missing a Javadoc comment. 7
     Error design VisibilityModifier Variable 'method' must be private and have accessor methods. 7
     Error javadoc JavadocVariable Missing a Javadoc comment. 8
     Error design VisibilityModifier Variable 'url' must be private and have accessor methods. 8
     Error javadoc JavadocVariable Missing a Javadoc comment. 9
     Error design VisibilityModifier Variable 'headersSize' must be private and have accessor methods. 9
     Error javadoc JavadocVariable Missing a Javadoc comment. 10
     Error design VisibilityModifier Variable 'bodySize' must be private and have accessor methods. 10
     Error javadoc JavadocVariable Missing a Javadoc comment. 11
     Error design VisibilityModifier Variable 'cookies' must be private and have accessor methods. 11
     Error javadoc JavadocVariable Missing a Javadoc comment. 12
     Error design VisibilityModifier Variable 'headers' must be private and have accessor methods. 12
     Error javadoc JavadocVariable Missing a Javadoc comment. 13
     Error design VisibilityModifier Variable 'httpVersion' must be private and have accessor methods. 13
     Error javadoc JavadocVariable Missing a Javadoc comment. 14
     Error design VisibilityModifier Variable 'queryString' must be private and have accessor methods. 14
     Error javadoc JavadocVariable Missing a Javadoc comment. 15
     Error design VisibilityModifier
    - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -8167,97 +8537,97 @@

    org/laidu/commom/uti

    org/laidu/commom/util/http/har/model/Timings.java

    Severity Category Rule Message Line
     Error javadoc JavadocType Missing a Javadoc comment. 5
     Error javadoc JavadocVariable Missing a Javadoc comment. 6
     Error design VisibilityModifier Variable 'status' must be private and have accessor methods. 6
     Error javadoc JavadocVariable Missing a Javadoc comment. 7
     Error design VisibilityModifier Variable 'statusText' must be private and have accessor methods. 7
     Error javadoc JavadocVariable Missing a Javadoc comment. 8
     Error design VisibilityModifier Variable 'headersSize' must be private and have accessor methods. 8
     Error javadoc JavadocVariable Missing a Javadoc comment. 9
     Error design VisibilityModifier Variable 'bodySize' must be private and have accessor methods. 9
     Error javadoc JavadocVariable Missing a Javadoc comment. 10
     Error design VisibilityModifier Variable 'headers' must be private and have accessor methods. 10
     Error javadoc JavadocVariable Missing a Javadoc comment. 11
     Error design VisibilityModifier Variable 'httpVersion' must be private and have accessor methods. 11
     Error javadoc JavadocVariable Missing a Javadoc comment. 12
     Error design VisibilityModifier Variable 'redirectURL' must be private and have accessor methods. 12
     Error javadoc JavadocVariable Missing a Javadoc comment. 13
     Error design VisibilityModifier Variable 'content' must be private and have accessor methods. 13
     Error javadoc JavadocVariable Missing a Javadoc comment. 14
     Error design VisibilityModifier
    - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -8266,25 +8636,25 @@

    org/laidu/commom/util

    org/laidu/commom/util/json/JsonUtil.java

    Severity Category Rule Message Line
     Error javadoc JavadocType Missing a Javadoc comment. 3
     Error javadoc JavadocVariable Missing a Javadoc comment. 4
     Error design VisibilityModifier Variable 'blocked' must be private and have accessor methods. 4
     Error javadoc JavadocVariable Missing a Javadoc comment. 5
     Error design VisibilityModifier Variable 'dns' must be private and have accessor methods. 5
     Error javadoc JavadocVariable Missing a Javadoc comment. 6
     Error design VisibilityModifier Variable 'connect' must be private and have accessor methods. 6
     Error javadoc JavadocVariable Missing a Javadoc comment. 7
     Error design VisibilityModifier Variable 'ssl' must be private and have accessor methods. 7
     Error javadoc JavadocVariable Missing a Javadoc comment. 8
     Error design VisibilityModifier Variable 'send' must be private and have accessor methods. 8
     Error javadoc JavadocVariable Missing a Javadoc comment. 9
     Error design VisibilityModifier Variable 'wait' must be private and have accessor methods. 9
     Error javadoc JavadocVariable Missing a Javadoc comment. 10
     Error design VisibilityModifier
    - + - + - + - + @@ -8293,13 +8663,13 @@

    org/laidu/commom/util/json/Jso

    org/laidu/commom/util/json/package-info.java

    Severity Category Rule Message Line
     Error misc NewlineAtEndOfFile File does not end with a newline.
     Error javadoc JavadocStyle First sentence should end with a period. 3
     Error javadoc JavadocVariable
    - + - + @@ -8308,13 +8678,13 @@

    org/laidu/commom/util/json

    org/laidu/commom/util/package-info.java

    Severity Category Rule Message Line
     Error misc NewlineAtEndOfFile
    - + - + @@ -8323,415 +8693,415 @@

    org/laidu/commom/util/package-i

    org/laidu/commom/util/regex/RegexUtil.java

    Severity Category Rule Message Line
     Error misc NewlineAtEndOfFile
    - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -8740,25 +9110,25 @@

    org/laidu/commom/util/regex/

    org/laidu/commom/util/serialize/package-info.java

    Severity Category Rule Message Line
     Error javadoc JavadocPackage Missing package-info.java file.
     Error javadoc JavadocVariable Missing a Javadoc comment. 30
     Error javadoc JavadocStyle First sentence should end with a period. 34
     Error sizes LineLength Line is longer than 80 characters (found 83). 41
     Error misc FinalParameters Parameter regex should be final. 41
     Error misc FinalParameters Parameter source should be final. 41
     Error misc FinalParameters Parameter index should be final. 41
     Error whitespace WhitespaceAfter ',' is not followed by whitespace. 42
     Error whitespace WhitespaceAfter ',' is not followed by whitespace. 42
     Error javadoc JavadocStyle First sentence should end with a period. 45
     Error javadoc JavadocMethod Expected an @return tag. 52
     Error sizes LineLength Line is longer than 80 characters (found 86). 52
     Error misc FinalParameters Parameter pattern should be final. 52
     Error javadoc JavadocMethod Expected @param tag for 'pattern'. 52
     Error misc FinalParameters Parameter source should be final. 52
     Error javadoc JavadocMethod Expected @param tag for 'source'. 52
     Error misc FinalParameters Parameter index should be final. 52
     Error javadoc JavadocMethod Expected @param tag for 'index'. 52
     Error javadoc JavadocMethod Missing a Javadoc comment. 62
     Error misc FinalParameters Parameter regex should be final. 62
     Error misc FinalParameters Parameter source should be final. 62
     Error javadoc JavadocMethod Missing a Javadoc comment. 66
     Error misc FinalParameters Parameter pattern should be final. 66
     Error misc FinalParameters Parameter source should be final. 66
     Error javadoc JavadocMethod Missing a Javadoc comment. 70
     Error misc FinalParameters Parameter regex should be final. 70
     Error misc FinalParameters Parameter source should be final. 70
     Error misc FinalParameters Parameter index should be final. 70
     Error whitespace WhitespaceAfter ',' is not followed by whitespace. 71
     Error whitespace WhitespaceAfter ',' is not followed by whitespace. 71
     Error whitespace WhitespaceAfter ',' is not followed by whitespace. 71
     Error javadoc JavadocMethod Missing a Javadoc comment. 74
     Error misc FinalParameters Parameter pattern should be final. 74
     Error misc FinalParameters Parameter source should be final. 74
     Error misc FinalParameters Parameter index should be final. 74
     Error whitespace WhitespaceAfter ',' is not followed by whitespace. 75
     Error whitespace WhitespaceAfter ',' is not followed by whitespace. 75
     Error whitespace WhitespaceAfter ',' is not followed by whitespace. 75
     Error javadoc JavadocMethod Missing a Javadoc comment. 78
     Error misc FinalParameters Parameter regex should be final. 78
     Error misc FinalParameters Parameter source should be final. 78
     Error javadoc JavadocMethod Missing a Javadoc comment. 82
     Error misc FinalParameters Parameter pattern should be final. 82
     Error misc FinalParameters Parameter source should be final. 82
     Error sizes LineLength Line is longer than 80 characters (found 95). 86
     Error javadoc JavadocMethod Missing a Javadoc comment. 86
     Error misc FinalParameters Parameter regex should be final. 86
     Error misc FinalParameters Parameter source should be final. 86
     Error misc FinalParameters Parameter index should be final. 86
     Error misc FinalParameters Parameter defaultValue should be final. 86
     Error whitespace WhitespaceAfter ',' is not followed by whitespace. 87
     Error whitespace WhitespaceAfter ',' is not followed by whitespace. 87
     Error whitespace WhitespaceAround '?' is not preceded with whitespace. 88
     Error coding AvoidInlineConditionals Avoid inline conditionals. 88
     Error whitespace WhitespaceAround ':' is not preceded with whitespace. 88
     Error whitespace WhitespaceAround ':' is not followed by whitespace. 88
     Error sizes LineLength Line is longer than 80 characters (found 98). 90
     Error javadoc JavadocMethod Missing a Javadoc comment. 90
     Error misc FinalParameters Parameter pattern should be final. 90
     Error misc FinalParameters Parameter source should be final. 90
     Error misc FinalParameters Parameter index should be final. 90
     Error misc FinalParameters Parameter defaultValue should be final. 90
     Error whitespace WhitespaceAfter ',' is not followed by whitespace. 91
     Error whitespace WhitespaceAfter ',' is not followed by whitespace. 91
     Error whitespace WhitespaceAround '?' is not preceded with whitespace. 92
     Error coding AvoidInlineConditionals Avoid inline conditionals. 92
     Error whitespace WhitespaceAround ':' is not preceded with whitespace. 92
     Error whitespace WhitespaceAround
    - + - + - + - + @@ -8767,13 +9137,13 @@

    org/laidu/commom/util

    org/laidu/commom/util/string/package-info.java

    Severity Category Rule Message Line
     Error misc NewlineAtEndOfFile File does not end with a newline.
     Error javadoc JavadocStyle First sentence should end with a period. 1
     Error misc TodoComment
    - + - + @@ -8782,289 +9152,289 @@

    org/laidu/commom/util/st

    org/laidu/commom/util/util/NameUtil.java

    Severity Category Rule Message Line
     Error misc NewlineAtEndOfFile
    - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -9073,79 +9443,79 @@

    org/laidu/commom/util/util/Nam

    org/laidu/commom/util/xml/JAXBUtil.java

    Severity Category Rule Message Line
     Error misc NewlineAtEndOfFile File does not end with a newline.
     Error javadoc JavadocPackage Missing package-info.java file.
     Error javadoc JavadocVariable Missing a Javadoc comment. 31
     Error javadoc JavadocStyle First sentence should end with a period. 36
     Error javadoc JavadocMethod Expected an @return tag. 41
     Error naming MethodName Name 'to_' must match pattern '^[a-z][a-zA-Z0-9]*$'. 41
     Error misc FinalParameters Parameter name should be final. 41
     Error javadoc JavadocMethod Expected @param tag for 'name'. 41
     Error whitespace WhitespaceAround '{' is not preceded with whitespace. 41
     Error whitespace WhitespaceAround 'for' is not followed by whitespace. 43
     Error whitespace NoWhitespaceBefore ';' is preceded with whitespace. 43
     Error whitespace WhitespaceAround '{' is not preceded with whitespace. 43
     Error whitespace WhitespaceAround '{' is not preceded with whitespace. 45
     Error whitespace WhitespaceAround 'else' is not preceded with whitespace. 47
     Error whitespace WhitespaceAround '}' is not followed by whitespace. 47
     Error javadoc JavadocStyle First sentence should end with a period. 54
     Error javadoc JavadocMethod Expected an @return tag. 59
     Error whitespace MethodParamPad '(' is preceded with whitespace. 59
     Error misc FinalParameters Parameter name should be final. 59
     Error javadoc JavadocMethod Expected @param tag for 'name'. 59
     Error whitespace WhitespaceAround '{' is not preceded with whitespace. 59
     Error whitespace NoWhitespaceAfter 'String' is followed by whitespace. 61
     Error whitespace WhitespaceAround 'for' is not followed by whitespace. 65
     Error whitespace WhitespaceAround '{' is not preceded with whitespace. 65
     Error whitespace WhitespaceAround 'if' is not followed by whitespace. 66
     Error whitespace WhitespaceAround '{' is not preceded with whitespace. 66
     Error whitespace WhitespaceAround 'for' is not followed by whitespace. 70
     Error whitespace WhitespaceAround '=' is not preceded with whitespace. 70
     Error whitespace WhitespaceAround '=' is not followed by whitespace. 70
     Error whitespace WhitespaceAfter ';' is not followed by whitespace. 70
     Error whitespace WhitespaceAround '<' is not preceded with whitespace. 70
     Error whitespace WhitespaceAround '<' is not followed by whitespace. 70
     Error whitespace WhitespaceAfter ';' is not followed by whitespace. 70
     Error whitespace WhitespaceAround '{' is not preceded with whitespace. 70
     Error whitespace WhitespaceAround 'if' is not followed by whitespace. 71
     Error whitespace WhitespaceAround '>' is not preceded with whitespace. 71
     Error whitespace WhitespaceAround '>' is not followed by whitespace. 71
     Error whitespace WhitespaceAround '{' is not preceded with whitespace. 71
     Error sizes LineLength Line is longer than 80 characters (found 100). 73
     Error whitespace WhitespaceAround '+=' is not preceded with whitespace. 74
     Error whitespace WhitespaceAround '+=' is not followed by whitespace. 74
     Error whitespace WhitespaceAround 'else' is not preceded with whitespace. 75
     Error whitespace WhitespaceAround '}' is not followed by whitespace. 75
     Error whitespace WhitespaceAround 'else' is not followed by whitespace. 75
     Error whitespace WhitespaceAround '{' is not preceded with whitespace. 75
     Error whitespace WhitespaceAround '+=' is not preceded with whitespace. 76
     Error whitespace WhitespaceAround
    - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -9154,49 +9524,49 @@

    org/laidu/commom/util/xml/JAXBU

    org/laidu/commom/util/xml/JsoupParser.java

    Severity Category Rule Message Line
     Error javadoc JavadocPackage Missing package-info.java file.
     Error javadoc JavadocVariable Missing a Javadoc comment. 39
     Error sizes LineLength Line is longer than 80 characters (found 90). 43
     Error javadoc JavadocMethod Missing a Javadoc comment. 43
     Error misc FinalParameters Parameter obj should be final. 43
     Error whitespace ParenPad ')' is preceded with whitespace. 48
     Error whitespace WhitespaceAfter ',' is not followed by whitespace. 49
     Error whitespace WhitespaceAfter ',' is not followed by whitespace. 51
     Error sizes LineLength Line is longer than 80 characters (found 81). 54
     Error javadoc JavadocMethod Missing a Javadoc comment. 54
     Error misc FinalParameters Parameter xmlSource should be final. 54
     Error misc FinalParameters
    - + - + - + - + - + - + - + - + @@ -9205,55 +9575,55 @@

    org/laidu/commom/util/xml/Js

    org/laidu/crawler/App.java

    Severity Category Rule Message Line
     Error misc TodoComment Comment matches to-do format 'TODO:'. 14
     Error javadoc JavadocVariable Missing a Javadoc comment. 34
     Error javadoc JavadocMethod Missing a Javadoc comment. 39
     Error misc FinalParameters Parameter xmlSource should be final. 39
     Error whitespace WhitespaceAfter ',' is not followed by whitespace. 39
     Error misc FinalParameters Parameter nodePath should be final. 39
     Error whitespace WhitespaceAround
    - + - + - + - + - + - + - + - + - + @@ -9262,175 +9632,175 @@

    org/laidu/crawler/App.java

    org/laidu/crawler/config/RabbitConfig.java

    Severity Category Rule Message Line
     Error misc NewlineAtEndOfFile File does not end with a newline.
     Error imports UnusedImports Unused import - org.laidu.crawler.spider.CrawlerBootStrap. 3
     Error imports UnusedImports Unused import - us.codecraft.webmagic.Spider. 8
     Error imports UnusedImports Unused import - java.util.List. 10
     Error javadoc JavadocStyle First sentence should end with a period. 12
     Error javadoc JavadocVariable Missing a Javadoc comment. 21
     Error javadoc JavadocMethod Missing a Javadoc comment. 24
     Error misc FinalParameters
    - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -9439,25 +9809,25 @@

    org/laidu/crawler/config/Rab

    org/laidu/crawler/config/package-info.java

    Severity Category Rule Message Line
     Error misc NewlineAtEndOfFile File does not end with a newline.
     Error imports AvoidStarImport Using the '.*' form of import should be avoided - org.springframework.amqp.core.*. 5
     Error imports UnusedImports Unused import - org.springframework.amqp.rabbit.listener.SimpleMessageListenerContainer. 8
     Error imports UnusedImports Unused import - org.springframework.amqp.rabbit.listener.adapter.MessageListenerAdapter. 9
     Error imports UnusedImports Unused import - org.springframework.beans.factory.annotation.Autowired. 10
     Error imports UnusedImports Unused import - org.springframework.context.annotation.PropertySource. 14
     Error imports UnusedImports Unused import - javax.sound.midi.Receiver. 16
     Error javadoc JavadocStyle First sentence should end with a period. 18
     Error misc TodoComment Comment matches to-do format 'TODO:'. 23
     Error javadoc JavadocStyle First sentence should end with a period. 29
     Error javadoc JavadocStyle First sentence should end with a period. 34
     Error javadoc JavadocStyle First sentence should end with a period. 39
     Error design DesignForExtension Method 'queue' is not designed for extension - needs to be abstract, final or empty. 45
     Error javadoc JavadocMethod Missing a Javadoc comment. 45
     Error design DesignForExtension Method 'exchange' is not designed for extension - needs to be abstract, final or empty. 50
     Error javadoc JavadocMethod Missing a Javadoc comment. 50
     Error whitespace WhitespaceAfter ',' is not followed by whitespace. 52
     Error whitespace WhitespaceAfter ',' is not followed by whitespace. 52
     Error whitespace WhitespaceAfter ',' is not followed by whitespace. 52
     Error design DesignForExtension Method 'binding' is not designed for extension - needs to be abstract, final or empty. 55
     Error javadoc JavadocMethod Missing a Javadoc comment. 55
     Error misc FinalParameters Parameter queue should be final. 56
     Error misc FinalParameters Parameter exchange should be final. 56
     Error design DesignForExtension Method 'rabbitAdmin' is not designed for extension - needs to be abstract, final or empty. 60
     Error javadoc JavadocMethod Missing a Javadoc comment. 60
     Error misc FinalParameters Parameter connectionFactory should be final. 61
     Error whitespace WhitespaceAround '{' is not preceded with whitespace. 61
     Error whitespace WhitespaceAfter
    - + - + - + - + @@ -9466,139 +9836,139 @@

    org/laidu/crawler/config/pac

    org/laidu/crawler/entity/ParserResult.java

    Severity Category Rule Message Line
     Error misc NewlineAtEndOfFile File does not end with a newline.
     Error javadoc JavadocStyle First sentence should end with a period. 1
     Error misc TodoComment
    - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -9607,121 +9977,121 @@

    org/laidu/crawler/entity/Par

    org/laidu/crawler/enums/WebsiteEnum.java

    Severity Category Rule Message Line
     Error misc NewlineAtEndOfFile File does not end with a newline.
     Error javadoc JavadocPackage Missing package-info.java file.
     Error imports AvoidStarImport Using the '.*' form of import should be avoided - lombok.*. 3
     Error javadoc JavadocStyle First sentence should end with a period. 10
     Error javadoc JavadocVariable Missing a Javadoc comment. 18
     Error javadoc JavadocVariable Missing a Javadoc comment. 19
     Error design DesignForExtension Method 'addResult' is not designed for extension - needs to be abstract, final or empty. 26
     Error misc FinalParameters Parameter result should be final. 26
     Error whitespace WhitespaceAround '{' is not preceded with whitespace. 26
     Error design DesignForExtension Method 'addResults' is not designed for extension - needs to be abstract, final or empty. 35
     Error misc FinalParameters Parameter resultList should be final. 35
     Error whitespace WhitespaceAround '{' is not preceded with whitespace. 35
     Error design DesignForExtension Method 'addRequest' is not designed for extension - needs to be abstract, final or empty. 44
     Error misc FinalParameters Parameter request should be final. 44
     Error whitespace WhitespaceAround '{' is not preceded with whitespace. 44
     Error design DesignForExtension Method 'addRequests' is not designed for extension - needs to be abstract, final or empty. 53
     Error misc FinalParameters Parameter requestList should be final. 53
     Error whitespace WhitespaceAround '{' is not preceded with whitespace. 53
     Error whitespace GenericWhitespace '>' is followed by an illegal character. 65
     Error whitespace WhitespaceAround '{' is not preceded with whitespace. 65
     Error javadoc JavadocVariable Missing a Javadoc comment. 66
     Error javadoc JavadocVariable
    - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -9730,331 +10100,331 @@

    org/laidu/crawler/enums/Websit

    org/laidu/crawler/helper/PageProcessorGen.java

    Severity Category Rule Message Line
     Error javadoc JavadocPackage Missing package-info.java file.
     Error javadoc JavadocStyle First sentence should end with a period. 8
     Error whitespace WhitespaceAround '{' is not preceded with whitespace. 15
     Error javadoc JavadocVariable Missing a Javadoc comment. 16
     Error whitespace WhitespaceAfter ',' is not followed by whitespace. 16
     Error javadoc JavadocVariable Missing a Javadoc comment. 18
     Error javadoc JavadocVariable Missing a Javadoc comment. 19
     Error javadoc JavadocVariable Missing a Javadoc comment. 20
     Error whitespace WhitespaceAfter ',' is not followed by whitespace. 20
     Error naming ConstantName Name 'valueMap' must match pattern '^[A-Z][A-Z0-9]*(_[A-Z0-9]+)*$'. 20
     Error whitespace WhitespaceAround '{' is not preceded with whitespace. 22
     Error whitespace WhitespaceAfter ',' is not followed by whitespace. 23
     Error javadoc JavadocMethod Missing a Javadoc comment. 26
     Error misc FinalParameters Parameter code should be final. 26
     Error coding HiddenField 'code' hides a field. 26
     Error misc FinalParameters Parameter name should be final. 26
     Error coding HiddenField 'name' hides a field. 26
     Error misc FinalParameters Parameter code should be final. 42
     Error coding HiddenField
    - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -10063,85 +10433,85 @@

    org/laidu/crawler/helper

    org/laidu/crawler/helper/PlatformCodeGen.java

    Severity Category Rule Message Line
     Error misc NewlineAtEndOfFile File does not end with a newline.
     Error imports UnusedImports Unused import - com.squareup.javapoet.ParameterSpec. 7
     Error imports UnusedImports Unused import - org.laidu.commom.util.encryption.AESEncryptionUtil. 12
     Error design HideUtilityClassConstructor Utility classes should not have a public or default constructor. 31
     Error sizes LineLength Line is longer than 80 characters (found 88). 34
     Error javadoc JavadocVariable Missing a Javadoc comment. 34
     Error sizes LineLength Line is longer than 80 characters (found 126). 35
     Error javadoc JavadocVariable Missing a Javadoc comment. 35
     Error javadoc JavadocVariable Missing a Javadoc comment. 36
     Error sizes LineLength Line is longer than 80 characters (found 84). 37
     Error javadoc JavadocVariable Missing a Javadoc comment. 37
     Error javadoc JavadocVariable Missing a Javadoc comment. 38
     Error javadoc JavadocMethod Missing a Javadoc comment. 40
     Error misc FinalParameters Parameter args should be final. 40
     Error sizes LineLength Line is longer than 80 characters (found 127). 45
     Error sizes LineLength Line is longer than 80 characters (found 90). 46
     Error sizes LineLength Line is longer than 80 characters (found 123). 54
     Error sizes LineLength Line is longer than 80 characters (found 93). 61
     Error sizes LineLength Line is longer than 80 characters (found 81). 72
     Error sizes LineLength Line is longer than 80 characters (found 87). 76
     Error sizes LineLength Line is longer than 80 characters (found 82). 97
     Error javadoc JavadocMethod Missing a Javadoc comment. 97
     Error misc FinalParameters Parameter request should be final. 97
     Error sizes LineLength Line is longer than 80 characters (found 126). 101
     Error sizes LineLength Line is longer than 80 characters (found 81). 105
     Error javadoc JavadocMethod Missing a Javadoc comment. 105
     Error misc FinalParameters Parameter encryption should be final. 105
     Error sizes LineLength Line is longer than 80 characters (found 89). 111
     Error whitespace WhitespaceAfter ',' is not followed by whitespace. 113
     Error sizes LineLength Line is longer than 80 characters (found 132). 115
     Error whitespace WhitespaceAround '+' is not preceded with whitespace. 115
     Error whitespace WhitespaceAround '+' is not preceded with whitespace. 119
     Error whitespace WhitespaceAround 'else' is not preceded with whitespace. 121
     Error whitespace WhitespaceAround '}' is not followed by whitespace. 121
     Error sizes LineLength Line is longer than 80 characters (found 91). 122
     Error sizes LineLength Line is longer than 80 characters (found 82). 129
     Error javadoc JavadocMethod Missing a Javadoc comment. 129
     Error misc FinalParameters Parameter headers should be final. 129
     Error regexp RegexpSingleline Line has trailing spaces. 135
     Error sizes LineLength Line is longer than 80 characters (found 82). 136
     Error javadoc JavadocMethod Missing a Javadoc comment. 136
     Error misc FinalParameters Parameter header should be final. 136
     Error sizes LineLength Line is longer than 80 characters (found 128). 138
     Error whitespace WhitespaceAfter ',' is not followed by whitespace. 138
     Error whitespace WhitespaceAround '+' is not preceded with whitespace. 138
     Error whitespace WhitespaceAround '+' is not followed by whitespace. 138
     Error whitespace WhitespaceAround '+' is not preceded with whitespace. 138
     Error whitespace WhitespaceAround '+' is not followed by whitespace. 138
     Error whitespace WhitespaceAround '+' is not preceded with whitespace. 138
     Error whitespace WhitespaceAround '+' is not followed by whitespace. 138
     Error whitespace WhitespaceAround '+' is not preceded with whitespace. 138
     Error whitespace WhitespaceAround '+' is not followed by whitespace. 138
     Error javadoc JavadocMethod Missing a Javadoc comment. 142
     Error misc FinalParameters
    - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -10150,49 +10520,49 @@

    org/laidu/crawler/helper/

    org/laidu/crawler/helper/conf/HelperConfig.java

    Severity Category Rule Message Line
     Error misc NewlineAtEndOfFile File does not end with a newline.
     Error design HideUtilityClassConstructor Utility classes should not have a public or default constructor. 21
     Error javadoc JavadocMethod Missing a Javadoc comment. 24
     Error misc FinalParameters Parameter args should be final. 24
     Error sizes LineLength Line is longer than 80 characters (found 145). 26
     Error sizes LineLength Line is longer than 80 characters (found 116). 35
     Error sizes LineLength Line is longer than 80 characters (found 100). 37
     Error sizes LineLength Line is longer than 80 characters (found 101). 39
     Error whitespace WhitespaceAround '{' is not preceded with whitespace. 39
     Error whitespace WhitespaceAround '{' is not preceded with whitespace. 43
     Error sizes LineLength Line is longer than 80 characters (found 125). 46
     Error coding AvoidInlineConditionals Avoid inline conditionals. 46
     Error sizes LineLength
    - + - + - + - + - + - + - + - + @@ -10201,115 +10571,115 @@

    org/laidu/crawler/helpe

    org/laidu/crawler/helper/enums/VariateEnum.java

    Severity Category Rule Message Line
     Error misc NewlineAtEndOfFile File does not end with a newline.
     Error javadoc JavadocPackage Missing package-info.java file.
     Error javadoc JavadocStyle First sentence should end with a period. 7
     Error javadoc JavadocVariable Missing a Javadoc comment. 15
     Error javadoc JavadocVariable Missing a Javadoc comment. 16
     Error javadoc JavadocVariable Missing a Javadoc comment. 17
     Error javadoc JavadocVariable
    - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -10318,24 +10688,18 @@

    org/laidu/crawler/helpe

    org/laidu/crawler/helper/model/CrawlerRequestParam.java

    Severity Category Rule Message Line
     Error javadoc JavadocPackage Missing package-info.java file.
     Error javadoc JavadocStyle First sentence should end with a period. 6
     Error javadoc JavadocVariable Missing a Javadoc comment. 12
     Error javadoc JavadocVariable Missing a Javadoc comment. 13
     Error javadoc JavadocVariable Missing a Javadoc comment. 14
     Error javadoc JavadocVariable Missing a Javadoc comment. 15
     Error javadoc JavadocVariable Missing a Javadoc comment. 16
     Error javadoc JavadocVariable Missing a Javadoc comment. 17
     Error javadoc JavadocVariable Missing a Javadoc comment. 18
     Error javadoc JavadocVariable Missing a Javadoc comment. 19
     Error javadoc JavadocVariable Missing a Javadoc comment. 20
     Error javadoc JavadocVariable Missing a Javadoc comment. 21
     Error javadoc JavadocVariable Missing a Javadoc comment. 22
     Error javadoc JavadocVariable Missing a Javadoc comment. 23
     Error javadoc JavadocVariable Missing a Javadoc comment. 24
     Error javadoc JavadocVariable Missing a Javadoc comment. 25
     Error whitespace NoWhitespaceBefore ';' is preceded with whitespace. 27
     Error javadoc JavadocVariable
    - + - + - - - - - - @@ -10366,40 +10730,46 @@

    org/laidu/crawler/h

    + + + + + + - + - + - + - + - + - + @@ -10408,91 +10778,91 @@

    org/laidu/crawler/h

    org/laidu/crawler/helper/model/CrawlerSite.java

    Severity Category Rule Message Line
     Error misc NewlineAtEndOfFile File does not end with a newline.
     ErrorjavadocJavadocPackageMissing package-info.java file.
     Error javadoc
     Error javadocJavadocPackageMissing package-info.java file.
     Errorjavadoc JavadocStyle First sentence should end with a period. 8
     Error javadoc JavadocType Unknown tag 'date'. 13
     Error javadoc JavadocStyle First sentence should end with a period. 22
     Error javadoc JavadocStyle First sentence should end with a period. 27
     Error javadoc JavadocStyle First sentence should end with a period. 32
     Error javadoc JavadocStyle First sentence should end with a period. 37
     Error javadoc JavadocStyle
    - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -10501,73 +10871,73 @@

    org/laidu/crawler/helpe

    org/laidu/crawler/helper/model/Encryption.java

    Severity Category Rule Message Line
     Error misc NewlineAtEndOfFile File does not end with a newline.
     Error javadoc JavadocVariable Missing a Javadoc comment. 26
     Error javadoc JavadocVariable Missing a Javadoc comment. 28
     Error javadoc JavadocVariable Missing a Javadoc comment. 30
     Error javadoc JavadocVariable Missing a Javadoc comment. 32
     Error javadoc JavadocVariable Missing a Javadoc comment. 34
     Error javadoc JavadocType Missing a Javadoc comment. 37
     Error whitespace WhitespaceAround '{' is not preceded with whitespace. 41
     Error javadoc JavadocVariable Missing a Javadoc comment. 42
     Error javadoc JavadocType Missing a Javadoc comment. 45
     Error javadoc JavadocVariable Missing a Javadoc comment. 50
     Error javadoc JavadocType Missing a Javadoc comment. 53
     Error javadoc JavadocVariable Missing a Javadoc comment. 59
     Error javadoc JavadocVariable
    - + - + - + - + - + - + - + - + - + - + - + - + @@ -10576,360 +10946,321 @@

    org/laidu/crawler/helper

    org/laidu/crawler/helper/model/RootSite.java

    Severity Category Rule Message Line
     Error misc NewlineAtEndOfFile File does not end with a newline.
     Error javadoc JavadocVariable Missing a Javadoc comment. 25
     Error javadoc JavadocVariable Missing a Javadoc comment. 27
     Error javadoc JavadocVariable Missing a Javadoc comment. 29
     Error javadoc JavadocVariable Missing a Javadoc comment. 31
     Error javadoc JavadocType Missing a Javadoc comment. 34
     Error javadoc JavadocVariable Missing a Javadoc comment. 39
     Error javadoc JavadocType Missing a Javadoc comment. 43
     Error whitespace WhitespaceAround '{' is not preceded with whitespace. 48
     Error javadoc JavadocVariable Missing a Javadoc comment. 49
     Error javadoc JavadocVariable
    - + - + - + - + - + - +
    Severity Category Rule Message Line
     Error misc NewlineAtEndOfFile File does not end with a newline.
     Error javadoc JavadocStyle First sentence should end with a period. 11
     Error javadoc JavadocType Unknown tag 'date'. 16
     Error javadoc JavadocVariable Missing a Javadoc comment. 25
     Error design VisibilityModifier Variable 'site' must be private and have accessor methods. 25
    -

    org/laidu/crawler/helper/package-info.java

    +

    org/laidu/crawler/helper/model/http/burp/BurpSiteItem.java

    - + - + - + - - - -
    Severity Category Rule Message Line
     Error misc NewlineAtEndOfFile File does not end with a newline.
     ErrormiscTodoCommentComment matches to-do format 'TODO:'.7
    +javadoc +JavadocVariable +Missing a Javadoc comment. +20
    -

    org/laidu/crawler/model/Page.java

    +

    org/laidu/crawler/helper/model/http/burp/Host.java

    - + - + - - - - - - - + - + - + - +
    Severity Category Rule Message Line
     Error misc NewlineAtEndOfFile File does not end with a newline.
     ErrorjavadocJavadocPackageMissing package-info.java file.
     Error javadocJavadocMethodJavadocVariable Missing a Javadoc comment.16
    20
     Error javadocJavadocMethodJavadocVariable Missing a Javadoc comment.18
    21
    +
    +

    org/laidu/crawler/helper/model/http/burp/Item.java

    + + + + + + + + + + + + + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + + + + + + +
    SeverityCategoryRuleMessageLine
     ErrormiscNewlineAtEndOfFileFile does not end with a newline.
     Error javadocJavadocMethodJavadocVariable Missing a Javadoc comment.20
    18
     Error javadocJavadocMethodJavadocVariable Missing a Javadoc comment.22
    20
     Error javadocJavadocMethodJavadocVariable Missing a Javadoc comment.24
    22
     Error javadocJavadocMethodJavadocVariable Missing a Javadoc comment.26
    24
     Error javadocJavadocMethodJavadocVariable Missing a Javadoc comment.28
    26
     Error javadocJavadocMethodJavadocVariable Missing a Javadoc comment.30
    28
     Error javadocJavadocMethodJavadocVariable Missing a Javadoc comment.32
    30
     Error javadocJavadocMethodJavadocVariable Missing a Javadoc comment.34
    32
     Error javadocJavadocMethodJavadocVariable Missing a Javadoc comment.36
    34
     Error javadocJavadocMethodJavadocVariable Missing a Javadoc comment.38
    36
     Error javadocJavadocMethodJavadocVariable Missing a Javadoc comment.40
    38
     Error javadocJavadocMethodJavadocVariable Missing a Javadoc comment.42
    40
     Error javadocJavadocMethodJavadocVariableMissing a Javadoc comment.42
     ErrorjavadocJavadocVariable Missing a Javadoc comment. 44
    -

    org/laidu/crawler/model/PageProxy.java

    +

    org/laidu/crawler/helper/model/http/burp/Items.java

    - + - + - - - - - - - - - + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + - - - - + + + +
    Severity Category Rule Message Line
     Error misc NewlineAtEndOfFile File does not end with a newline.
     ErrorimportsUnusedImportsUnused import - lombok.Builder.4
     Error javadocJavadocStyleFirst sentence should end with a period.14
    JavadocVariableMissing a Javadoc comment.20
     Error javadoc JavadocVariable Missing a Javadoc comment.23
     ErrordesignDesignForExtensionMethod 'setSkip' is not designed for extension - needs to be abstract, final or empty.26
     ErrormiscFinalParametersParameter skip should be final.27
     ErrordesignDesignForExtensionMethod 'getHtml' is not designed for extension - needs to be abstract, final or empty.31
     ErrordesignDesignForExtensionMethod 'getJson' is not designed for extension - needs to be abstract, final or empty.36
     ErrordesignDesignForExtensionMethod 'addTargetRequests' is not designed for extension - needs to be abstract, final or empty.41
     ErrormiscFinalParametersParameter requests should be final.42
    22
     ErrordesignDesignForExtensionMethod 'addTargetRequests' is not designed for extension - needs to be abstract, final or empty.46
    javadocJavadocVariableMissing a Javadoc comment.24
    +
    +

    org/laidu/crawler/helper/model/http/burp/Request.java

    + - - - - - + + + + + - - - + + + - - - - + + + + - - - - + + + +
     ErrormiscFinalParametersParameter requests should be final.47
    SeverityCategoryRuleMessageLine
     Error miscFinalParametersParameter priority should be final.47
    NewlineAtEndOfFileFile does not end with a newline.
     ErrorwhitespaceWhitespaceAfter',' is not followed by whitespace.48
    javadocJavadocVariableMissing a Javadoc comment.18
     ErrordesignDesignForExtensionMethod 'addTargetRequest' is not designed for extension - needs to be abstract, final or empty.51
    javadocJavadocVariableMissing a Javadoc comment.20
    +
    +

    org/laidu/crawler/helper/model/http/burp/Response.java

    + - - - - - + + + + + - - - - - - - - - - - - - - - + + + - - - - + + + + - - - - + + + +
     ErrormiscFinalParametersParameter requestString should be final.52
    SeverityCategoryRuleMessageLine
     ErrordesignDesignForExtensionMethod 'addTargetRequest' is not designed for extension - needs to be abstract, final or empty.56
     Error miscFinalParametersParameter request should be final.57
     ErrordesignDesignForExtensionMethod 'getUrl' is not designed for extension - needs to be abstract, final or empty.61
    NewlineAtEndOfFileFile does not end with a newline.
     ErrordesignDesignForExtensionMethod 'getRequest' is not designed for extension - needs to be abstract, final or empty.66
    javadocJavadocVariableMissing a Javadoc comment.18
     ErrordesignDesignForExtensionMethod 'getStatusCode' is not designed for extension - needs to be abstract, final or empty.71
    javadocJavadocVariableMissing a Javadoc comment.20
    +
    +

    org/laidu/crawler/helper/model/http/burp/package-info.java

    + - - - - - + + + + + - - - - + + + +
     ErrordesignDesignForExtensionMethod 'getRawText' is not designed for extension - needs to be abstract, final or empty.76
    SeverityCategoryRuleMessageLine
     ErrordesignDesignForExtensionMethod 'getHeaders' is not designed for extension - needs to be abstract, final or empty.81
    miscNewlineAtEndOfFileFile does not end with a newline.
    +
    +

    org/laidu/crawler/helper/model/http/har/package-info.java

    + - - - - - + + + + + - - - - - - - - - -
     ErrordesignDesignForExtensionMethod 'isDownloadSuccess' is not designed for extension - needs to be abstract, final or empty.86
    SeverityCategoryRuleMessageLine
     ErrordesignDesignForExtensionMethod 'getBytes' is not designed for extension - needs to be abstract, final or empty.91
     ErrordesignDesignForExtensionMethod 'getCharset' is not designed for extension - needs to be abstract, final or empty.96
    +misc +NewlineAtEndOfFile +File does not end with a newline. +
    -

    org/laidu/crawler/package-info.java

    +

    org/laidu/crawler/helper/package-info.java

    - + - + - - - - - - @@ -10937,7 +11268,7 @@

    org/laidu/crawler/package-info.java

    Severity Category Rule Message Line
     Error misc NewlineAtEndOfFile File does not end with a newline.
     ErrorjavadocJavadocStyleFirst sentence should end with a period.1
     Error miscComment matches to-do format 'TODO:'. 7
    -

    org/laidu/crawler/processor/AbstractPageProcessor.java

    +

    org/laidu/crawler/model/Page.java

    @@ -10954,131 +11285,95 @@

    org/laidu/crawle

    - - - + + + - - - - + + + + - - - + + + - + - + - + - + - + - - - + + + - - - + + + - - - - - - - - - - - - - - - - - - - - - - - - - + - - - + + + - - - - - - - - - - - - - - - + + + - - - - + + + + - - - + + + - - - - + + + + - - - -
    Severity
     Error javadocJavadocPackageMissing package-info.java file.
    JavadocMethodMissing a Javadoc comment.16
     ErrorimportsUnusedImportsUnused import - java.util.List.13
    javadocJavadocMethodMissing a Javadoc comment.18
     Error javadocJavadocStyleFirst sentence should end with a period.15
    JavadocMethodMissing a Javadoc comment.20
     Error javadocJavadocVariableJavadocMethod Missing a Javadoc comment.23
    22
     Error javadocJavadocVariableJavadocMethod Missing a Javadoc comment.25
    24
     Error javadoc JavadocMethod Missing a Javadoc comment.28
    26
     Error javadocJavadocStyleFirst sentence should end with a period.33
    JavadocMethodMissing a Javadoc comment.28
     Error javadocJavadocStyleFirst sentence should end with a period.39
    JavadocMethodMissing a Javadoc comment.30
     Error javadoc JavadocMethod Missing a Javadoc comment.45
     ErrordesignDesignForExtensionMethod 'process' is not designed for extension - needs to be abstract, final or empty.47
     ErrormiscFinalParametersParameter page should be final.48
     ErrorsizesLineLengthLine is longer than 80 characters (found 109).50
     ErrorwhitespaceWhitespaceAfter',' is not followed by whitespace.50
    32
     Error javadocJavadocStyleFirst sentence should end with a period.54
    JavadocMethodMissing a Javadoc comment.34
     ErrordesignDesignForExtensionMethod 'buildSite' is not designed for extension - needs to be abstract, final or empty.58
     Error javadocJavadocStyleFirst sentence should end with a period.64
     ErrordesignDesignForExtensionMethod 'getUserAgent' is not designed for extension - needs to be abstract, final or empty.68
    JavadocMethodMissing a Javadoc comment.36
     ErrorwhitespaceWhitespaceAround'{' is not preceded with whitespace.68
    javadocJavadocMethodMissing a Javadoc comment.38
     Error javadocJavadocStyleFirst sentence should end with a period.72
    JavadocMethodMissing a Javadoc comment.40
     ErrordesignDesignForExtensionMethod 'useProxy' is not designed for extension - needs to be abstract, final or empty.76
    javadocJavadocMethodMissing a Javadoc comment.42
     ErrorwhitespaceWhitespaceAround'{' is not preceded with whitespace.76
    +javadoc +JavadocMethod +Missing a Javadoc comment. +44
    -

    org/laidu/crawler/processor/BaiduPageProcessor.java

    +

    org/laidu/crawler/model/PageProxy.java

    @@ -11095,242 +11390,329 @@

    org/laidu/crawler/p

    + + + + + + + + + + + + - + - - - - + + + + - - + + - - - - + + + + - - + + - - + + - - - - - - - - - + + + - - - - - - - - - + + + - - - - + + + + - - - - + + + + - - - - + + + + - - - + + + - - - - + + + + - - - - + + + + - - - - + + + + - - - - + + + + - - - - - - - - - - + + + + + + + + + + - - - -
    Severity
     Error javadocJavadocPackageMissing package-info.java file.
     ErrorimportsUnusedImportsUnused import - lombok.Builder.4
     Errorjavadoc JavadocStyle First sentence should end with a period.13
    14
     ErrorwhitespaceWhitespaceAround'{' is not preceded with whitespace.21
    javadocJavadocVariableMissing a Javadoc comment.23
     Error design DesignForExtensionMethod 'getWebsiteEnum' is not designed for extension - needs to be abstract, final or empty.23
    Method 'setSkip' is not designed for extension - needs to be abstract, final or empty.26
     ErrordesignDesignForExtensionMethod 'buildSite' is not designed for extension - needs to be abstract, final or empty.28
    miscFinalParametersParameter skip should be final.27
     Error design DesignForExtensionMethod 'buildRequest' is not designed for extension - needs to be abstract, final or empty.33
    Method 'getHtml' is not designed for extension - needs to be abstract, final or empty.31
     Error design DesignForExtensionMethod 'parser' is not designed for extension - needs to be abstract, final or empty.38
    Method 'getJson' is not designed for extension - needs to be abstract, final or empty.36
     ErrormiscFinalParametersParameter page should be final.39
     ErrorsizesLineLengthLine is longer than 80 characters (found 87).designDesignForExtensionMethod 'addTargetRequests' is not designed for extension - needs to be abstract, final or empty. 41
     ErrorwhitespaceWhitespaceAround'=' is not preceded with whitespace.42
     ErrorwhitespaceWhitespaceAround'=' is not followed by whitespace.miscFinalParametersParameter requests should be final. 42
     ErrorwhitespaceWhitespaceAfter';' is not followed by whitespace.42
    designDesignForExtensionMethod 'addTargetRequests' is not designed for extension - needs to be abstract, final or empty.46
     ErrorwhitespaceWhitespaceAround'<' is not preceded with whitespace.42
    miscFinalParametersParameter requests should be final.47
     ErrorcodingMagicNumber'10' is a magic number.42
    miscFinalParametersParameter priority should be final.47
     Error whitespaceWhitespaceAround'<' is not followed by whitespace.42
    WhitespaceAfter',' is not followed by whitespace.48
     ErrorwhitespaceWhitespaceAfter';' is not followed by whitespace.42
    designDesignForExtensionMethod 'addTargetRequest' is not designed for extension - needs to be abstract, final or empty.51
     ErrorwhitespaceWhitespaceAround'{' is not preceded with whitespace.42
    miscFinalParametersParameter requestString should be final.52
     ErrorsizesLineLengthLine is longer than 80 characters (found 107).43
    designDesignForExtensionMethod 'addTargetRequest' is not designed for extension - needs to be abstract, final or empty.56
     ErrorwhitespaceWhitespaceAround'+' is not preceded with whitespace.43
    miscFinalParametersParameter request should be final.57
     ErrorwhitespaceWhitespaceAround'+' is not followed by whitespace.43
     ErrorwhitespaceWhitespaceAround'+' is not preceded with whitespace.43
    designDesignForExtensionMethod 'getUrl' is not designed for extension - needs to be abstract, final or empty.61
     ErrordesignDesignForExtensionMethod 'getRequest' is not designed for extension - needs to be abstract, final or empty.66
     ErrorwhitespaceWhitespaceAround'+' is not followed by whitespace.43
    +design +DesignForExtension +Method 'getStatusCode' is not designed for extension - needs to be abstract, final or empty. +71 + + Error +design +DesignForExtension +Method 'getRawText' is not designed for extension - needs to be abstract, final or empty. +76 + + Error +design +DesignForExtension +Method 'getHeaders' is not designed for extension - needs to be abstract, final or empty. +81 + + Error +design +DesignForExtension +Method 'isDownloadSuccess' is not designed for extension - needs to be abstract, final or empty. +86 + + Error +design +DesignForExtension +Method 'getBytes' is not designed for extension - needs to be abstract, final or empty. +91 + + Error +design +DesignForExtension +Method 'getCharset' is not designed for extension - needs to be abstract, final or empty. +96
    -

    org/laidu/crawler/request/RequestBuilder.java

    +

    org/laidu/crawler/package-info.java

    - + - + + + + + + + + + + +
    Severity Category Rule Message Line
     Error misc NewlineAtEndOfFile File does not end with a newline.
     ErrorjavadocJavadocStyleFirst sentence should end with a period.1
     ErrormiscTodoCommentComment matches to-do format 'TODO:'.7
    +
    +

    org/laidu/crawler/processor/AbstractPageProcessor.java

    + + + + + + + + + + + + + + + + + + + + + - + - - - - + + + + - + - + - - - - + + + + - - - - + + + + - - - - + + + + - - - - - - - + + + + + + + - - + + - - - - + + + + - + - - - + + + - - - - + + + + + + + + + + + + + + + + - + + + + + + + + + + + + + - - -
    SeverityCategoryRuleMessageLine
     ErrormiscNewlineAtEndOfFileFile does not end with a newline.
     Error javadoc JavadocPackage Missing package-info.java file.
     ErrorimportsUnusedImportsUnused import - java.util.List.13
     Error javadoc JavadocStyle First sentence should end with a period.6
    15
     ErrordesignHideUtilityClassConstructorUtility classes should not have a public or default constructor.13
    javadocJavadocVariableMissing a Javadoc comment.23
     Error javadocJavadocMethodJavadocVariable Missing a Javadoc comment.15
    25
     ErrormiscFinalParametersParameter url should be final.15
    javadocJavadocMethodMissing a Javadoc comment.28
     ErrorwhitespaceWhitespaceAfter',' is not followed by whitespace.15
    javadocJavadocStyleFirst sentence should end with a period.33
     ErrormiscFinalParametersParameter method should be final.15
    javadocJavadocStyleFirst sentence should end with a period.39
     ErrorwhitespaceWhitespaceAround'{' is not preceded with whitespace.15
     Error javadoc JavadocMethod Missing a Javadoc comment.21
    45
     ErrordesignDesignForExtensionMethod 'process' is not designed for extension - needs to be abstract, final or empty.47
     Error misc FinalParametersParameter url should be final.21
    Parameter page should be final.48
     ErrorwhitespaceWhitespaceAround'{' is not preceded with whitespace.21
    sizesLineLengthLine is longer than 80 characters (found 109).50
     Error whitespace WhitespaceAfter ',' is not followed by whitespace.22
    50
     Error javadocJavadocMethodMissing a Javadoc comment.25
    JavadocStyleFirst sentence should end with a period.54
     ErrormiscFinalParametersParameter url should be final.25
    designDesignForExtensionMethod 'buildSite' is not designed for extension - needs to be abstract, final or empty.58
     ErrorjavadocJavadocStyleFirst sentence should end with a period.64
     ErrordesignDesignForExtensionMethod 'getUserAgent' is not designed for extension - needs to be abstract, final or empty.68
     Error whitespace WhitespaceAround '{' is not preceded with whitespace.25
    68
     ErrorjavadocJavadocStyleFirst sentence should end with a period.72
     ErrordesignDesignForExtensionMethod 'useProxy' is not designed for extension - needs to be abstract, final or empty.76
     Error whitespaceWhitespaceAfter',' is not followed by whitespace.26
    +WhitespaceAround +'{' is not preceded with whitespace. +76
    -

    org/laidu/crawler/scheduler/RabbitMQScheduler.java

    +

    org/laidu/crawler/processor/BaiduPageProcessor.java

    @@ -11349,213 +11731,240 @@

    org/laidu/crawler/sc

    - + - - - - + + + + - - - - + + + + - - - + + + - - - - + + + + - - - - + + + + - - - - - - - - - - - - - - + + - - - - + + + + - - - - + + + + - - - - + + + + - - - - + + + + - - - - + + + + - - - - + + + + - - - - + + + + - + + + + + + + + + + + + + - - + + - - + + - - + + - - - + + +
    Severityjavadoc JavadocStyle First sentence should end with a period.16
    13
     ErrorsizesLineLengthLine is longer than 80 characters (found 98).25
    whitespaceWhitespaceAround'{' is not preceded with whitespace.21
     ErrorjavadocJavadocVariableMissing a Javadoc comment.27
    designDesignForExtensionMethod 'getWebsiteEnum' is not designed for extension - needs to be abstract, final or empty.23
     ErrorjavadocJavadocVariableMissing a Javadoc comment.designDesignForExtensionMethod 'buildSite' is not designed for extension - needs to be abstract, final or empty. 28
     ErrorjavadocJavadocVariableMissing a Javadoc comment.29
    designDesignForExtensionMethod 'buildRequest' is not designed for extension - needs to be abstract, final or empty.33
     ErrorjavadocJavadocMethodMissing a Javadoc comment.31
    designDesignForExtensionMethod 'parser' is not designed for extension - needs to be abstract, final or empty.38
     ErrorsizesLineLengthLine is longer than 80 characters (found 97).32
     Error misc FinalParametersParameter amqpTemplate should be final.32
     ErrorcodingHiddenField'amqpTemplate' hides a field.32
    Parameter page should be final.39
     ErrormiscFinalParametersParameter config should be final.32
    sizesLineLengthLine is longer than 80 characters (found 87).41
     ErrorcodingHiddenField'config' hides a field.32
    whitespaceWhitespaceAround'=' is not preceded with whitespace.42
     ErrormiscFinalParametersParameter admin should be final.32
    whitespaceWhitespaceAround'=' is not followed by whitespace.42
     ErrorcodingHiddenField'admin' hides a field.32
    whitespaceWhitespaceAfter';' is not followed by whitespace.42
     ErrordesignDesignForExtensionMethod 'poll' is not designed for extension - needs to be abstract, final or empty.38
    whitespaceWhitespaceAround'<' is not preceded with whitespace.42
     ErrormiscFinalParametersParameter task should be final.39
    codingMagicNumber'10' is a magic number.42
     ErrorsizesLineLengthLine is longer than 80 characters (found 85).43
    whitespaceWhitespaceAround'<' is not followed by whitespace.42
     Error whitespace WhitespaceAfter'typecast' is not followed by whitespace.';' is not followed by whitespace.42
     ErrorwhitespaceWhitespaceAround'{' is not preceded with whitespace.42
     ErrorsizesLineLengthLine is longer than 80 characters (found 107). 43
     Error whitespace WhitespaceAround'catch' is not preceded with whitespace.44
    '+' is not preceded with whitespace.43
     Error whitespace WhitespaceAround'}' is not followed by whitespace.44
    '+' is not followed by whitespace.43
     Error whitespace WhitespaceAround'{' is not preceded with whitespace.44
    '+' is not preceded with whitespace.43
     Error whitespaceWhitespaceAfter',' is not followed by whitespace.45
    WhitespaceAround'+' is not followed by whitespace.43
    +
    +

    org/laidu/crawler/request/RequestBuilder.java

    + - - - - - + + + + + - - - + + + - - - - + + + + - - - - + + + + - - - - + + + + + + + + + + + + + + + + - + - - - - + + + + - - + + + + + + + + + + + + + + - + - - - - + + + + - - - - + + + + - - - - - - - - + + + + + + + + - - - -
     ErrordesignDesignForExtensionMethod 'pushWhenNoDuplicate' is not designed for extension - needs to be abstract, final or empty.51
    SeverityCategoryRuleMessageLine
     Error miscFinalParametersParameter request should be final.52
    NewlineAtEndOfFileFile does not end with a newline.
     ErrormiscFinalParametersParameter task should be final.52
    javadocJavadocPackageMissing package-info.java file.
     ErrorsizesLineLengthLine is longer than 80 characters (found 95).54
    javadocJavadocStyleFirst sentence should end with a period.6
     ErrorwhitespaceWhitespaceAfter',' is not followed by whitespace.54
    designHideUtilityClassConstructorUtility classes should not have a public or default constructor.13
     ErrorjavadocJavadocMethodMissing a Javadoc comment.15
     ErrormiscFinalParametersParameter url should be final.15
     Error whitespace WhitespaceAfter ',' is not followed by whitespace.54
    15
     ErrorwhitespaceWhitespaceAround'catch' is not preceded with whitespace.55
    miscFinalParametersParameter method should be final.15
     Error whitespace WhitespaceAround'}' is not followed by whitespace.55
    '{' is not preceded with whitespace.15
     ErrorjavadocJavadocMethodMissing a Javadoc comment.21
     ErrormiscFinalParametersParameter url should be final.21
     Error whitespace WhitespaceAround '{' is not preceded with whitespace.55
    21
     ErrordesignDesignForExtensionMethod 'getLeftRequestsCount' is not designed for extension - needs to be abstract, final or empty.60
    whitespaceWhitespaceAfter',' is not followed by whitespace.22
     ErrormiscFinalParametersParameter task should be final.61
    javadocJavadocMethodMissing a Javadoc comment.25
     ErrordesignDesignForExtensionMethod 'getTotalRequestsCount' is not designed for extension - needs to be abstract, final or empty.65
     Error misc FinalParametersParameter task should be final.66
    Parameter url should be final.25
     ErrorwhitespaceWhitespaceAround'{' is not preceded with whitespace.25
     ErrorsizesLineLengthLine is longer than 80 characters (found 143).67
    +whitespace +WhitespaceAfter +',' is not followed by whitespace. +26
    -

    org/laidu/crawler/scheduler/package-info.java

    +

    org/laidu/crawler/scheduler/RabbitMQScheduler.java

    @@ -11574,205 +11983,253 @@

    org/laidu/crawler/schedul

    - + - - - -
    Severityjavadoc JavadocStyle First sentence should end with a period.1
    16
     ErrormiscTodoCommentComment matches to-do format 'TODO:'.7
    -
    -

    org/laidu/crawler/spider/CrawlerBootStrap.java

    - + + + + - - - - - + + + + + - - - - + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + - - - + + + - - - - + + + + - - - - + + + + - - - - + + + + - - + + - - + + - - + + - - - - + + + + - + - - - - + + + + - - + + - - - - + + + + - - - - + + + + + + + + + + - + + + + + + + - - - - + + + + + + + + + + + + + + + + - - + + - - - - + + + + - + - - - - + + + + - - - - + + + + + + + + + + + + + + + + - - + + - - - - + + + + + + + + + + - -
    sizesLineLengthLine is longer than 80 characters (found 98).25
    SeverityCategoryRuleMessageLine
     ErrorjavadocJavadocVariableMissing a Javadoc comment.27
     ErrormiscNewlineAtEndOfFileFile does not end with a newline.
    javadocJavadocVariableMissing a Javadoc comment.28
     Error javadocJavadocPackageMissing package-info.java file.
     ErrorimportsUnusedImportsUnused import - org.springframework.beans.factory.annotation.Autowired.5
     ErrorimportsUnusedImportsUnused import - org.springframework.beans.factory.config.ConfigurableBeanFactory.6
     ErrorimportsUnusedImportsUnused import - org.springframework.context.annotation.Scope.8
     ErrorimportsUnusedImportsUnused import - us.codecraft.webmagic.processor.PageProcessor.11
    JavadocVariableMissing a Javadoc comment.29
     Error javadocJavadocStyleFirst sentence should end with a period.16
    JavadocMethodMissing a Javadoc comment.31
     ErrorwhitespaceWhitespaceAround'{' is not preceded with whitespace.23
    sizesLineLengthLine is longer than 80 characters (found 97).32
     ErrorjavadocJavadocVariableMissing a Javadoc comment.25
    miscFinalParametersParameter amqpTemplate should be final.32
     ErrorsizesLineLengthLine is longer than 80 characters (found 103).31
    codingHiddenField'amqpTemplate' hides a field.32
     Error misc FinalParametersParameter pageProcessor should be final.31
    Parameter config should be final.32
     Error coding HiddenField'pageProcessor' hides a field.31
    'config' hides a field.32
     Error misc FinalParametersParameter rabbitMQScheduler should be final.31
    Parameter admin should be final.32
     ErrorjavadocJavadocMethodExpected @param tag for 'rabbitMQScheduler'.31
    codingHiddenField'admin' hides a field.32
     Error design DesignForExtensionMethod 'bootStraps' is not designed for extension - needs to be abstract, final or empty.Method 'poll' is not designed for extension - needs to be abstract, final or empty. 38
     ErrorjavadocJavadocMethodMissing a Javadoc comment.38
    miscFinalParametersParameter task should be final.39
     Error sizes LineLengthLine is longer than 80 characters (found 111).39
    Line is longer than 80 characters (found 85).43
     ErrormiscFinalParametersParameter pageProcessors should be final.39
    whitespaceWhitespaceAfter'typecast' is not followed by whitespace.43
     ErrormiscFinalParametersParameter scheduler should be final.39
    whitespaceWhitespaceAround'catch' is not preceded with whitespace.44
     Error whitespace WhitespaceAround'}' is not followed by whitespace.44
     ErrorwhitespaceWhitespaceAround '{' is not preceded with whitespace.39
    44
     ErrorwhitespaceWhitespaceAfter',' is not followed by whitespace.45
     ErrorsizesLineLengthLine is longer than 80 characters (found 90).40
    designDesignForExtensionMethod 'pushWhenNoDuplicate' is not designed for extension - needs to be abstract, final or empty.51
     ErrormiscFinalParametersParameter request should be final.52
     ErrormiscFinalParametersParameter task should be final.52
     Error sizes LineLengthLine is longer than 80 characters (found 118).41
    Line is longer than 80 characters (found 95).54
     ErrorcodingHiddenField'pageProcessor' hides a field.41
    whitespaceWhitespaceAfter',' is not followed by whitespace.54
     Error whitespace WhitespaceAfter ',' is not followed by whitespace.41
    54
     ErrordesignDesignForExtensionMethod 'startCrawler' is not designed for extension - needs to be abstract, final or empty.45
    whitespaceWhitespaceAround'catch' is not preceded with whitespace.55
     ErrorjavadocJavadocMethodMissing a Javadoc comment.45
    whitespaceWhitespaceAround'}' is not followed by whitespace.55
     ErrorwhitespaceWhitespaceAround'{' is not preceded with whitespace.55
     ErrordesignDesignForExtensionMethod 'getLeftRequestsCount' is not designed for extension - needs to be abstract, final or empty.60
     Error misc FinalParametersParameter bootStraps should be final.46
    Parameter task should be final.61
     ErrorwhitespaceWhitespaceAround'{' is not preceded with whitespace.46
    designDesignForExtensionMethod 'getTotalRequestsCount' is not designed for extension - needs to be abstract, final or empty.65
     ErrormiscFinalParametersParameter task should be final.66
     Error sizes LineLengthLine is longer than 80 characters (found 127).47
    +Line is longer than 80 characters (found 143). +67
    -

    org/laidu/crawler/util/UserAgents.java

    +

    org/laidu/crawler/scheduler/package-info.java

    + + + + + + + + + + + + + + + + + + + + + + +
    SeverityCategoryRuleMessageLine
     ErrormiscNewlineAtEndOfFileFile does not end with a newline.
     ErrorjavadocJavadocStyleFirst sentence should end with a period.1
     ErrormiscTodoCommentComment matches to-do format 'TODO:'.7
    +
    +

    org/laidu/crawler/spider/CrawlerBootStrap.java

    + + + + + + + + @@ -11781,557 +12238,734 @@

    org/laidu/crawler/util/UserAgent

    - - - - + + + + - - - - + + + + - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Severity Category Rule Message Line
     ErrormiscNewlineAtEndOfFileFile does not end with a newline.
     Error javadoc
     ErrorjavadocJavadocTypeMissing a Javadoc comment.7
    importsUnusedImportsUnused import - org.springframework.beans.factory.annotation.Autowired.5
     ErrordesignHideUtilityClassConstructorUtility classes should not have a public or default constructor.7
    importsUnusedImportsUnused import - org.springframework.beans.factory.config.ConfigurableBeanFactory.6
     ErrorjavadocJavadocVariableMissing a Javadoc comment.8
    importsUnusedImportsUnused import - org.springframework.context.annotation.Scope.8
     ErrorimportsUnusedImportsUnused import - us.codecraft.webmagic.processor.PageProcessor.11
     ErrorjavadocJavadocStyleFirst sentence should end with a period.16
     ErrorwhitespaceWhitespaceAround'{' is not preceded with whitespace.23
     ErrorjavadocJavadocVariableMissing a Javadoc comment.25
     ErrorsizesLineLengthLine is longer than 80 characters (found 103).31
     ErrormiscFinalParametersParameter pageProcessor should be final.31
     ErrorcodingHiddenField'pageProcessor' hides a field.31
     ErrormiscFinalParametersParameter rabbitMQScheduler should be final.31
     ErrorjavadocJavadocMethodExpected @param tag for 'rabbitMQScheduler'.31
     ErrordesignDesignForExtensionMethod 'bootStraps' is not designed for extension - needs to be abstract, final or empty.38
     ErrorjavadocJavadocMethodMissing a Javadoc comment.38
     ErrorsizesLineLengthLine is longer than 80 characters (found 111).39
     ErrormiscFinalParametersParameter pageProcessors should be final.39
     ErrormiscFinalParametersParameter scheduler should be final.39
     ErrorwhitespaceWhitespaceAround'{' is not preceded with whitespace.39
     ErrorsizesLineLengthLine is longer than 80 characters (found 90).40
     ErrorsizesLineLengthLine is longer than 80 characters (found 118).41
     ErrorcodingHiddenField'pageProcessor' hides a field.41
     ErrorwhitespaceWhitespaceAfter',' is not followed by whitespace.41
     ErrordesignDesignForExtensionMethod 'startCrawler' is not designed for extension - needs to be abstract, final or empty.45
     ErrorjavadocJavadocMethodMissing a Javadoc comment.45
     ErrormiscFinalParametersParameter bootStraps should be final.46
     ErrorwhitespaceWhitespaceAround'{' is not preceded with whitespace.46
     ErrorsizesLineLengthLine is longer than 80 characters (found 127).47
    +
    +

    org/laidu/crawler/util/UserAgents.java

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -12340,211 +12974,211 @@

    org/laidu/crawler/util/UserAgent

    org/laidu/learn/algorithm/bloom/BloomFilterDemo.java

    SeverityCategoryRuleMessageLine
     ErrorjavadocJavadocPackageMissing package-info.java file.
     ErrorjavadocJavadocTypeMissing a Javadoc comment.7
     ErrordesignHideUtilityClassConstructorUtility classes should not have a public or default constructor.7
     ErrorjavadocJavadocVariableMissing a Javadoc comment.8
     Error sizes LineLength Line is longer than 80 characters (found 85). 11
     Error whitespace OperatorWrap '+' should be on a new line. 11
     Error sizes LineLength Line is longer than 80 characters (found 102). 14
     Error sizes LineLength Line is longer than 80 characters (found 97). 16
     Error coding MagicNumber '3' is a magic number. 16
     Error whitespace OperatorWrap '+' should be on a new line. 16
     Error sizes LineLength Line is longer than 80 characters (found 98). 19
     Error coding MagicNumber '4' is a magic number. 19
     Error whitespace OperatorWrap '+' should be on a new line. 19
     Error sizes LineLength Line is longer than 80 characters (found 105). 22
     Error coding MagicNumber '5' is a magic number. 22
     Error whitespace OperatorWrap '+' should be on a new line. 22
     Error sizes LineLength Line is longer than 80 characters (found 104). 25
     Error coding MagicNumber '6' is a magic number. 25
     Error whitespace OperatorWrap '+' should be on a new line. 25
     Error sizes LineLength Line is longer than 80 characters (found 98). 28
     Error coding MagicNumber '7' is a magic number. 28
     Error sizes LineLength Line is longer than 80 characters (found 96). 30
     Error coding MagicNumber '8' is a magic number. 30
     Error whitespace OperatorWrap '+' should be on a new line. 30
     Error sizes LineLength Line is longer than 80 characters (found 102). 33
     Error coding MagicNumber '9' is a magic number. 33
     Error sizes LineLength Line is longer than 80 characters (found 109). 35
     Error sizes LineLength Line is longer than 80 characters (found 82). 36
     Error sizes LineLength Line is longer than 80 characters (found 113). 37
     Error coding MagicNumber '10' is a magic number. 37
     Error sizes LineLength Line is longer than 80 characters (found 113). 39
     Error coding MagicNumber '11' is a magic number. 39
     Error sizes LineLength Line is longer than 80 characters (found 100). 41
     Error coding MagicNumber '12' is a magic number. 41
     Error whitespace OperatorWrap '+' should be on a new line. 41
     Error sizes LineLength Line is longer than 80 characters (found 98). 44
     Error coding MagicNumber '13' is a magic number. 44
     Error whitespace OperatorWrap '+' should be on a new line. 44
     Error sizes LineLength Line is longer than 80 characters (found 99). 47
     Error coding MagicNumber '14' is a magic number. 47
     Error whitespace OperatorWrap '+' should be on a new line. 47
     Error sizes LineLength Line is longer than 80 characters (found 106). 50
     Error coding MagicNumber '15' is a magic number. 50
     Error whitespace OperatorWrap '+' should be on a new line. 50
     Error sizes LineLength Line is longer than 80 characters (found 112). 53
     Error coding MagicNumber '16' is a magic number. 53
     Error sizes LineLength Line is longer than 80 characters (found 102). 55
     Error coding MagicNumber '17' is a magic number. 55
     Error whitespace OperatorWrap '+' should be on a new line. 55
     Error sizes LineLength Line is longer than 80 characters (found 96). 58
     Error coding MagicNumber '18' is a magic number. 58
     Error sizes LineLength Line is longer than 80 characters (found 107). 60
     Error coding MagicNumber '19' is a magic number. 60
     Error sizes LineLength Line is longer than 80 characters (found 97). 62
     Error coding MagicNumber '20' is a magic number. 62
     Error whitespace OperatorWrap '+' should be on a new line. 62
     Error sizes LineLength Line is longer than 80 characters (found 100). 65
     Error coding MagicNumber '21' is a magic number. 65
     Error whitespace OperatorWrap '+' should be on a new line. 65
     Error sizes LineLength Line is longer than 80 characters (found 98). 68
     Error coding MagicNumber '22' is a magic number. 68
     Error whitespace OperatorWrap '+' should be on a new line. 68
     Error sizes LineLength Line is longer than 80 characters (found 119). 71
     Error coding MagicNumber '23' is a magic number. 71
     Error whitespace OperatorWrap '+' should be on a new line. 71
     Error sizes LineLength Line is longer than 80 characters (found 103). 74
     Error coding MagicNumber '24' is a magic number. 74
     Error sizes LineLength Line is longer than 80 characters (found 118). 76
     Error coding MagicNumber '25' is a magic number. 76
     Error whitespace OperatorWrap '+' should be on a new line. 76
     Error sizes LineLength Line is longer than 80 characters (found 103). 79
     Error coding MagicNumber '26' is a magic number. 79
     Error sizes LineLength Line is longer than 80 characters (found 110). 80
     Error sizes LineLength Line is longer than 80 characters (found 82). 81
     Error sizes LineLength Line is longer than 80 characters (found 98). 83
     Error coding MagicNumber '27' is a magic number. 83
     Error whitespace OperatorWrap '+' should be on a new line. 83
     Error sizes LineLength Line is longer than 80 characters (found 118). 86
     Error coding MagicNumber '28' is a magic number. 86
     Error whitespace OperatorWrap '+' should be on a new line. 86
     Error sizes LineLength Line is longer than 80 characters (found 99). 89
     Error coding MagicNumber '29' is a magic number. 89
     Error sizes LineLength Line is longer than 80 characters (found 99). 91
     Error coding MagicNumber '30' is a magic number. 91
     Error whitespace OperatorWrap '+' should be on a new line. 91
     Error sizes LineLength Line is longer than 80 characters (found 152). 93
     Error coding MagicNumber '31' is a magic number. 93
     Error javadoc JavadocMethod Missing a Javadoc comment. 97
     Error misc FinalParameters Parameter key should be final. 97
     Error sizes LineLength Line is longer than 80 characters (found 85). 98
     Error coding AvoidInlineConditionals Avoid inline conditionals. 98
     Error javadoc JavadocMethod Missing a Javadoc comment. 101
     Error whitespace WhitespaceAround '{' is not preceded with whitespace. 101
     Error coding MagicNumber
    - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -12553,55 +13187,55 @@

    org/laidu/learn/al

    org/laidu/learn/algorithm/dijkstra/DoubleStackArithmeticExpression.java

    Severity Category Rule Message Line
     Error misc NewlineAtEndOfFile File does not end with a newline.
     Error javadoc JavadocPackage Missing package-info.java file.
     Error imports UnusedImports Unused import - com.google.common.hash.BloomFilter. 3
     Error imports UnusedImports Unused import - com.google.common.hash.Funnels. 4
     Error imports UnusedImports Unused import - java.nio.charset.Charset. 10
     Error javadoc JavadocStyle First sentence should end with a period. 12
     Error misc TodoComment Comment matches to-do format 'TODO:'. 18
     Error design HideUtilityClassConstructor Utility classes should not have a public or default constructor. 19
     Error javadoc JavadocVariable Missing a Javadoc comment. 21
     Error naming ConstantName Name 'size' must match pattern '^[A-Z][A-Z0-9]*(_[A-Z0-9]+)*$'. 21
     Error javadoc JavadocMethod Missing a Javadoc comment. 23
     Error misc FinalParameters Parameter args should be final. 23
     Error coding MagicNumber '3' is a magic number. 25
     Error coding MagicNumber '5' is a magic number. 25
     Error coding MagicNumber '7' is a magic number. 25
     Error coding MagicNumber '4' is a magic number. 25
     Error coding MagicNumber '8' is a magic number. 25
     Error coding MagicNumber '9' is a magic number. 25
     Error sizes LineLength Line is longer than 80 characters (found 135). 26
     Error coding MagicNumber '1000_000_000' is a magic number. 29
     Error javadoc JavadocMethod Missing a Javadoc comment. 37
     Error misc FinalParameters Parameter phone should be final. 37
     Error coding MagicNumber '8' is a magic number. 39
     Error coding MagicNumber '24' is a magic number. 39
     Error sizes LineLength Line is longer than 80 characters (found 85). 41
     Error whitespace WhitespaceAfter ',' is not followed by whitespace. 41
     Error coding MagicNumber '3' is a magic number. 41
     Error whitespace WhitespaceAfter ',' is not followed by whitespace. 41
     Error whitespace WhitespaceAround '+' is not preceded with whitespace. 41
     Error whitespace WhitespaceAround '+' is not followed by whitespace. 41
     Error whitespace WhitespaceAround '+' is not preceded with whitespace. 41
     Error whitespace WhitespaceAround '+' is not followed by whitespace. 41
     Error whitespace WhitespaceAround '+' is not preceded with whitespace. 41
     Error whitespace WhitespaceAround
    - + - + - + - + - + - + - + - + - + @@ -12610,13 +13244,13 @@

    org/laidu/learn/algorithm/dijkstra/package-info.java

    Severity Category Rule Message Line
     Error misc NewlineAtEndOfFile File does not end with a newline.
     Error misc TodoComment Comment matches to-do format 'TODO:'. 13
     Error design DesignForExtension Method 'calculate' is not designed for extension - needs to be abstract, final or empty. 16
     Error javadoc JavadocMethod Missing a Javadoc comment. 16
     Error misc FinalParameters Parameter expression should be final. 16
     Error whitespace WhitespaceAround '{' is not preceded with whitespace. 16
     Error whitespace WhitespaceAround '{' is not preceded with whitespace. 21
     Error blocks EmptyBlock
    - + - + @@ -12625,211 +13259,211 @@

    org/laidu/learn/al

    org/laidu/learn/algorithm/encryption/AESUtil.java

    Severity Category Rule Message Line
     Error misc NewlineAtEndOfFile
    - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -12838,157 +13472,157 @@

    org/laidu/learn/algor

    org/laidu/learn/algorithm/encryption/BytesToHex.java

    Severity Category Rule Message Line
     Error javadoc JavadocStyle First sentence should end with a period. 9
     Error design HideUtilityClassConstructor Utility classes should not have a public or default constructor. 14
     Error javadoc JavadocStyle First sentence should end with a period. 16
     Error whitespace FileTabCharacter File contains tab characters (this is the first instance). 16
     Error regexp RegexpSingleline Line has trailing spaces. 18
     Error javadoc JavadocMethod Expected an @return tag. 20
     Error whitespace WhitespaceAround '{' is not preceded with whitespace. 20
     Error coding MagicNumber '128' is a magic number. 24
     Error regexp RegexpSingleline Line has trailing spaces. 29
     Error javadoc JavadocStyle First sentence should end with a period. 30
     Error regexp RegexpSingleline Line has trailing spaces. 32
     Error javadoc JavadocMethod Expected an @return tag. 34
     Error sizes LineLength Line is longer than 80 characters (found 94). 34
     Error misc FinalParameters Parameter data should be final. 34
     Error javadoc JavadocMethod Expected @param tag for 'data'. 34
     Error misc FinalParameters Parameter key should be final. 34
     Error javadoc JavadocMethod Expected @param tag for 'key'. 34
     Error misc FinalParameters Parameter ivp should be final. 34
     Error javadoc JavadocMethod Expected @param tag for 'ivp'. 34
     Error whitespace WhitespaceAround '{' is not preceded with whitespace. 34
     Error sizes LineLength Line is longer than 80 characters (found 86). 40
     Error regexp RegexpSingleline Line has trailing spaces. 43
     Error javadoc JavadocStyle First sentence should end with a period. 46
     Error javadoc JavadocMethod Expected an @return tag. 49
     Error sizes LineLength Line is longer than 80 characters (found 94). 49
     Error misc FinalParameters Parameter data should be final. 49
     Error javadoc JavadocMethod Expected @param tag for 'data'. 49
     Error misc FinalParameters Parameter key should be final. 49
     Error javadoc JavadocMethod Expected @param tag for 'key'. 49
     Error misc FinalParameters Parameter ivp should be final. 49
     Error javadoc JavadocMethod Expected @param tag for 'ivp'. 49
     Error javadoc JavadocMethod Expected @throws tag for 'Exception'. 49
     Error whitespace WhitespaceAround '{' is not preceded with whitespace. 49
     Error sizes LineLength
    - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -12997,211 +13631,211 @@

    org/laidu/learn/al

    org/laidu/learn/algorithm/encryption/DESUtil.java

    Severity Category Rule Message Line
     Error javadoc JavadocStyle First sentence should end with a period. 3
     Error design HideUtilityClassConstructor Utility classes should not have a public or default constructor. 8
     Error whitespace FileTabCharacter File contains tab characters (this is the first instance). 10
     Error javadoc JavadocMethod Missing a Javadoc comment. 10
     Error misc FinalParameters Parameter resultBytes should be final. 10
     Error whitespace WhitespaceAround '{' is not preceded with whitespace. 10
     Error whitespace WhitespaceAround 'for' is not followed by whitespace. 12
     Error whitespace WhitespaceAround '{' is not preceded with whitespace. 12
     Error sizes LineLength Line is longer than 80 characters (found 85). 13
     Error whitespace WhitespaceAround 'if' is not followed by whitespace. 13
     Error coding MagicNumber '0xFF' is a magic number. 13
     Error whitespace WhitespaceAround '{' is not preceded with whitespace. 13
     Error sizes LineLength Line is longer than 80 characters (found 103). 14
     Error coding MagicNumber '0xFF' is a magic number. 14
     Error whitespace WhitespaceAround 'else' is not preceded with whitespace. 15
     Error whitespace WhitespaceAround '}' is not followed by whitespace. 15
     Error whitespace WhitespaceAround 'else' is not followed by whitespace. 15
     Error whitespace WhitespaceAround '{' is not preceded with whitespace. 15
     Error sizes LineLength Line is longer than 80 characters (found 91). 16
     Error coding MagicNumber '0xFF' is a magic number. 16
     Error regexp RegexpSingleline Line has trailing spaces. 21
     Error javadoc JavadocMethod Missing a Javadoc comment. 22
     Error misc FinalParameters Parameter args should be final. 22
     Error coding MagicNumber '0xFF' is a magic number. 23
     Error coding MagicNumber
    - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -13210,367 +13844,367 @@

    org/laidu/learn/algor

    org/laidu/learn/algorithm/encryption/DESede.java

    Severity Category Rule Message Line
     Error javadoc JavadocStyle First sentence should end with a period. 10
     Error design HideUtilityClassConstructor Utility classes should not have a public or default constructor. 15
     Error javadoc JavadocStyle First sentence should end with a period. 17
     Error whitespace FileTabCharacter File contains tab characters (this is the first instance). 17
     Error regexp RegexpSingleline Line has trailing spaces. 19
     Error javadoc JavadocMethod Expected an @return tag. 21
     Error whitespace WhitespaceAround '{' is not preceded with whitespace. 21
     Error coding MagicNumber '56' is a magic number. 25
     Error regexp RegexpSingleline Line has trailing spaces. 30
     Error javadoc JavadocStyle First sentence should end with a period. 31
     Error regexp RegexpSingleline Line has trailing spaces. 33
     Error javadoc JavadocMethod Expected an @return tag. 35
     Error sizes LineLength Line is longer than 80 characters (found 82). 35
     Error misc FinalParameters Parameter data should be final. 35
     Error javadoc JavadocMethod Expected @param tag for 'data'. 35
     Error misc FinalParameters Parameter key should be final. 35
     Error javadoc JavadocMethod Expected @param tag for 'key'. 35
     Error whitespace WhitespaceAround '{' is not preceded with whitespace. 35
     Error regexp RegexpSingleline Line has trailing spaces. 44
     Error regexp RegexpSingleline Line has trailing spaces. 47
     Error javadoc JavadocStyle First sentence should end with a period. 48
     Error javadoc JavadocMethod Expected an @return tag. 51
     Error sizes LineLength Line is longer than 80 characters (found 82). 51
     Error misc FinalParameters Parameter data should be final. 51
     Error javadoc JavadocMethod Expected @param tag for 'data'. 51
     Error misc FinalParameters Parameter key should be final. 51
     Error javadoc JavadocMethod Expected @param tag for 'key'. 51
     Error javadoc JavadocMethod Expected @throws tag for 'Exception'. 51
     Error whitespace WhitespaceAround '{' is not preceded with whitespace. 51
     Error regexp RegexpSingleline Line has trailing spaces. 60
     Error javadoc JavadocMethod Missing a Javadoc comment. 64
     Error misc FinalParameters Parameter args should be final. 64
     Error sizes LineLength Line is longer than 80 characters (found 307). 66
     Error sizes LineLength
    - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -13579,301 +14213,301 @@

    org/laidu/learn/algori

    org/laidu/learn/algorithm/encryption/DHUtil.java

    Severity Category Rule Message Line
     Error javadoc JavadocStyle First sentence should end with a period. 11
     Error design HideUtilityClassConstructor Utility classes should not have a public or default constructor. 16
     Error javadoc JavadocStyle First sentence should end with a period. 17
     Error whitespace WhitespaceAround '=' is not preceded with whitespace. 20
     Error whitespace WhitespaceAround '=' is not followed by whitespace. 20
     Error javadoc JavadocStyle First sentence should end with a period. 22
     Error whitespace WhitespaceAround '=' is not preceded with whitespace. 25
     Error whitespace WhitespaceAround '=' is not followed by whitespace. 25
     Error javadoc JavadocStyle First sentence should end with a period. 27
     Error javadoc JavadocMethod Expected @throws tag for 'Exception'. 32
     Error whitespace WhitespaceAround '{' is not preceded with whitespace. 32
     Error whitespace WhitespaceAround '=' is not preceded with whitespace. 35
     Error whitespace WhitespaceAround '=' is not followed by whitespace. 35
     Error coding MagicNumber '168' is a magic number. 37
     Error whitespace WhitespaceAround '=' is not preceded with whitespace. 39
     Error whitespace WhitespaceAround '=' is not followed by whitespace. 39
     Error javadoc JavadocStyle First sentence should end with a period. 43
     Error misc FinalParameters Parameter key should be final. 48
     Error javadoc JavadocMethod Expected @throws tag for 'Exception'. 48
     Error whitespace WhitespaceAround '{' is not preceded with whitespace. 48
     Error whitespace WhitespaceAround '=' is not preceded with whitespace. 50
     Error whitespace WhitespaceAround '=' is not followed by whitespace. 50
     Error whitespace WhitespaceAround '=' is not preceded with whitespace. 52
     Error whitespace WhitespaceAround '=' is not followed by whitespace. 52
     Error whitespace WhitespaceAround '=' is not preceded with whitespace. 54
     Error whitespace WhitespaceAround '=' is not followed by whitespace. 54
     Error javadoc JavadocStyle First sentence should end with a period. 58
     Error sizes LineLength Line is longer than 80 characters (found 85). 64
     Error misc FinalParameters Parameter data should be final. 64
     Error whitespace WhitespaceAfter ',' is not followed by whitespace. 64
     Error misc FinalParameters Parameter key should be final. 64
     Error whitespace WhitespaceAfter ',' is not followed by whitespace. 64
     Error misc FinalParameters Parameter ivp should be final. 64
     Error javadoc JavadocMethod Expected @param tag for 'ivp'. 64
     Error javadoc JavadocMethod Expected @throws tag for 'Exception'. 64
     Error whitespace WhitespaceAround '{' is not preceded with whitespace. 64
     Error whitespace WhitespaceAround '=' is not preceded with whitespace. 66
     Error whitespace WhitespaceAround '=' is not followed by whitespace. 66
     Error whitespace WhitespaceAround '=' is not preceded with whitespace. 68
     Error whitespace WhitespaceAround '=' is not followed by whitespace. 68
     Error whitespace WhitespaceAfter ',' is not followed by whitespace. 70
     Error javadoc JavadocStyle First sentence should end with a period. 74
     Error sizes LineLength Line is longer than 80 characters (found 85). 80
     Error misc FinalParameters Parameter data should be final. 80
     Error whitespace WhitespaceAfter ',' is not followed by whitespace. 80
     Error misc FinalParameters Parameter key should be final. 80
     Error whitespace WhitespaceAfter ',' is not followed by whitespace. 80
     Error misc FinalParameters Parameter ivp should be final. 80
     Error javadoc JavadocMethod Expected @param tag for 'ivp'. 80
     Error javadoc JavadocMethod Expected @throws tag for 'Exception'. 80
     Error whitespace WhitespaceAround '{' is not preceded with whitespace. 80
     Error whitespace WhitespaceAround '=' is not followed by whitespace. 82
     Error whitespace WhitespaceAround '=' is not preceded with whitespace. 84
     Error whitespace WhitespaceAround '=' is not followed by whitespace. 84
     Error javadoc JavadocStyle First sentence should end with a period. 90
     Error misc FinalParameters Parameter args should be final. 94
     Error javadoc JavadocMethod Expected @param tag for 'args'. 94
     Error javadoc JavadocMethod Expected @throws tag for 'Exception'. 94
     Error sizes LineLength Line is longer than 80 characters (found 579). 108
     Error sizes LineLength
    - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -13882,283 +14516,283 @@

    org/laidu/learn/algori

    org/laidu/learn/algorithm/encryption/RSAUtil.java

    Severity Category Rule Message Line
     Error imports AvoidStarImport Using the '.*' form of import should be avoided - java.security.*. 8
     Error javadoc JavadocType Missing a Javadoc comment. 14
     Error design HideUtilityClassConstructor Utility classes should not have a public or default constructor. 14
     Error whitespace FileTabCharacter File contains tab characters (this is the first instance). 16
     Error javadoc JavadocVariable Missing a Javadoc comment. 16
     Error javadoc JavadocVariable Missing a Javadoc comment. 17
     Error regexp RegexpSingleline Line has trailing spaces. 18
     Error javadoc JavadocStyle First sentence should end with a period. 19
     Error javadoc JavadocMethod Expected an @return tag. 22
     Error javadoc JavadocMethod Expected @throws tag for 'Exception'. 22
     Error whitespace WhitespaceAround '{' is not preceded with whitespace. 22
     Error sizes LineLength Line is longer than 80 characters (found 87). 24
     Error coding MagicNumber '1024' is a magic number. 26
     Error regexp RegexpSingleline Line has trailing spaces. 39
     Error javadoc JavadocStyle First sentence should end with a period. 40
     Error javadoc JavadocMethod Expected an @return tag. 43
     Error misc FinalParameters Parameter key should be final. 43
     Error javadoc JavadocMethod Expected @param tag for 'key'. 43
     Error javadoc JavadocMethod Expected @throws tag for 'Exception'. 43
     Error whitespace WhitespaceAround '{' is not preceded with whitespace. 43
     Error sizes LineLength Line is longer than 80 characters (found 91). 49
     Error sizes LineLength Line is longer than 80 characters (found 87). 53
     Error regexp RegexpSingleline Line has trailing spaces. 66
     Error regexp RegexpSingleline Line has trailing spaces. 69
     Error javadoc JavadocStyle First sentence should end with a period. 70
     Error javadoc JavadocMethod Expected an @return tag. 73
     Error sizes LineLength Line is longer than 80 characters (found 96). 73
     Error misc FinalParameters Parameter publicKey should be final. 73
     Error javadoc JavadocMethod Expected @param tag for 'publicKey'. 73
     Error misc FinalParameters Parameter privateKey should be final. 73
     Error javadoc JavadocMethod Expected @param tag for 'privateKey'. 73
     Error javadoc JavadocMethod Expected @throws tag for 'Exception'. 73
     Error whitespace WhitespaceAround '{' is not preceded with whitespace. 73
     Error sizes LineLength Line is longer than 80 characters (found 82). 77
     Error sizes LineLength Line is longer than 80 characters (found 85). 80
     Error sizes LineLength Line is longer than 80 characters (found 89). 90
     Error regexp RegexpSingleline Line has trailing spaces. 93
     Error javadoc JavadocStyle First sentence should end with a period. 94
     Error javadoc JavadocMethod Expected an @return tag. 97
     Error misc FinalParameters Parameter keyMap should be final. 97
     Error javadoc JavadocMethod Expected @param tag for 'keyMap'. 97
     Error whitespace WhitespaceAround '{' is not preceded with whitespace. 97
     Error regexp RegexpSingleline Line has trailing spaces. 101
     Error javadoc JavadocStyle First sentence should end with a period. 102
     Error javadoc JavadocMethod Expected an @return tag. 105
     Error misc FinalParameters Parameter keyMap should be final. 105
     Error javadoc JavadocMethod Expected @param tag for 'keyMap'. 105
     Error whitespace WhitespaceAround '{' is not preceded with whitespace. 105
     Error regexp RegexpSingleline
    - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -14167,13 +14801,13 @@

    org/laidu/learn/algor

    org/laidu/learn/algorithm/encryption/package-info.java

    Severity Category Rule Message Line
     Error javadoc JavadocType Missing a Javadoc comment. 11
     Error design HideUtilityClassConstructor Utility classes should not have a public or default constructor. 11
     Error whitespace FileTabCharacter File contains tab characters (this is the first instance). 13
     Error javadoc JavadocVariable Missing a Javadoc comment. 13
     Error javadoc JavadocVariable Missing a Javadoc comment. 14
     Error regexp RegexpSingleline Line has trailing spaces. 15
     Error javadoc JavadocStyle First sentence should end with a period. 16
     Error javadoc JavadocMethod Expected an @return tag. 19
     Error javadoc JavadocMethod Expected @throws tag for 'Exception'. 19
     Error whitespace WhitespaceAround '{' is not preceded with whitespace. 19
     Error sizes LineLength Line is longer than 80 characters (found 88). 20
     Error coding MagicNumber '1024' is a magic number. 21
     Error regexp RegexpSingleline Line has trailing spaces. 28
     Error regexp RegexpSingleline Line has trailing spaces. 31
     Error javadoc JavadocStyle First sentence should end with a period. 32
     Error javadoc JavadocMethod Expected an @return tag. 35
     Error misc FinalParameters Parameter keyMap should be final. 35
     Error javadoc JavadocMethod Expected @param tag for 'keyMap'. 35
     Error whitespace WhitespaceAround '{' is not preceded with whitespace. 35
     Error regexp RegexpSingleline Line has trailing spaces. 39
     Error javadoc JavadocStyle First sentence should end with a period. 40
     Error javadoc JavadocMethod Expected an @return tag. 43
     Error misc FinalParameters Parameter keyMap should be final. 43
     Error javadoc JavadocMethod Expected @param tag for 'keyMap'. 43
     Error whitespace WhitespaceAround '{' is not preceded with whitespace. 43
     Error sizes LineLength Line is longer than 80 characters (found 83). 44
     Error regexp RegexpSingleline Line has trailing spaces. 47
     Error javadoc JavadocStyle First sentence should end with a period. 48
     Error javadoc JavadocMethod Expected an @return tag. 51
     Error sizes LineLength Line is longer than 80 characters (found 91). 51
     Error misc FinalParameters Parameter data should be final. 51
     Error javadoc JavadocMethod Expected @param tag for 'data'. 51
     Error misc FinalParameters Parameter publicKey should be final. 51
     Error javadoc JavadocMethod Expected @param tag for 'publicKey'. 51
     Error javadoc JavadocMethod Expected @throws tag for 'Exception'. 51
     Error whitespace WhitespaceAround '{' is not preceded with whitespace. 51
     Error regexp RegexpSingleline Line has trailing spaces. 57
     Error javadoc JavadocStyle First sentence should end with a period. 58
     Error javadoc JavadocMethod Expected an @return tag. 61
     Error sizes LineLength Line is longer than 80 characters (found 93). 61
     Error misc FinalParameters Parameter data should be final. 61
     Error javadoc JavadocMethod Expected @param tag for 'data'. 61
     Error misc FinalParameters Parameter privateKey should be final. 61
     Error javadoc JavadocMethod Expected @param tag for 'privateKey'. 61
     Error javadoc JavadocMethod Expected @throws tag for 'Exception'. 61
     Error whitespace WhitespaceAround
    - + - + @@ -14182,85 +14816,85 @@

    org/laidu/learn/

    org/laidu/learn/algorithm/leetcode/TwoSum.java

    Severity Category Rule Message Line
     Error misc NewlineAtEndOfFile
    - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -14269,13 +14903,13 @@

    org/laidu/learn/algorith

    org/laidu/learn/algorithm/package-info.java

    Severity Category Rule Message Line
     Error misc NewlineAtEndOfFile File does not end with a newline.
     Error javadoc JavadocPackage Missing package-info.java file.
     Error sizes LineLength Line is longer than 80 characters (found 108). 6
     Error sizes LineLength Line is longer than 80 characters (found 110). 7
     Error sizes LineLength Line is longer than 80 characters (found 97). 9
     Error design DesignForExtension Method 'twoSum' is not designed for extension - needs to be abstract, final or empty. 15
     Error javadoc JavadocMethod Missing a Javadoc comment. 15
     Error misc FinalParameters Parameter nums should be final. 15
     Error misc FinalParameters Parameter target should be final. 15
     Error design DesignForExtension Method 'twoSum1' is not designed for extension - needs to be abstract, final or empty. 27
     Error javadoc JavadocMethod Missing a Javadoc comment. 27
     Error misc FinalParameters Parameter nums should be final. 27
     Error misc FinalParameters
    - + - + @@ -14284,13 +14918,13 @@

    org/laidu/learn/algorithm/p

    org/laidu/learn/algorithm/sort/package-info.java

    Severity Category Rule Message Line
     Error misc NewlineAtEndOfFile
    - + - + @@ -14299,37 +14933,37 @@

    org/laidu/learn/algori

    org/laidu/learn/amqp/Application.java

    Severity Category Rule Message Line
     Error misc NewlineAtEndOfFile
    - + - + - + - + - + - + @@ -14338,13 +14972,13 @@

    org/laidu/learn/amqp/Application.

    org/laidu/learn/amqp/package-info.java

    Severity Category Rule Message Line
     Error misc NewlineAtEndOfFile File does not end with a newline.
     Error design HideUtilityClassConstructor Utility classes should not have a public or default constructor. 14
     Error javadoc JavadocMethod Missing a Javadoc comment. 17
     Error misc FinalParameters Parameter args should be final. 17
     Error sizes LineLength
    - + - + @@ -14353,31 +14987,31 @@

    org/laidu/learn/amqp/package-inf

    org/laidu/learn/amqp/rabbitmq/java/ClientDemo.java

    Severity Category Rule Message Line
     Error misc NewlineAtEndOfFile
    - + - + - + - + - + @@ -14386,61 +15020,61 @@

    org/laidu/learn/amqp

    org/laidu/learn/amqp/rabbitmq/java/DeclareQueue.java

    Severity Category Rule Message Line
     Error misc NewlineAtEndOfFile File does not end with a newline.
     Error misc TodoComment Comment matches to-do format 'TODO:'. 9
     Error regexp RegexpSingleline Line has trailing spaces. 9
     Error javadoc JavadocMethod
    - + - + - + - + - + - + - + - + - + - + @@ -14449,175 +15083,175 @@

    org/laidu/learn/am

    org/laidu/learn/amqp/rabbitmq/java/RabbitmqClientDemo.java

    Severity Category Rule Message Line
     Error misc NewlineAtEndOfFile File does not end with a newline.
     Error imports UnusedImports Unused import - com.rabbitmq.client.ConnectionFactory. 3
     Error imports UnusedImports Unused import - java.net.URISyntaxException. 6
     Error imports UnusedImports Unused import - java.security.KeyManagementException. 7
     Error imports UnusedImports Unused import - java.security.NoSuchAlgorithmException. 8
     Error javadoc JavadocStyle First sentence should end with a period. 10
     Error misc TodoComment Comment matches to-do format 'TODO:'. 16
     Error javadoc JavadocMethod Missing a Javadoc comment. 20
     Error whitespace WhitespaceAround
    - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -14626,205 +15260,205 @@

    org/laidu/le

    org/laidu/learn/amqp/rabbitmq/java/SpringClientDemo.java

    Severity Category Rule Message Line
     Error misc NewlineAtEndOfFile File does not end with a newline.
     Error imports UnusedImports Unused import - java.util.concurrent.TimeoutException. 11
     Error javadoc JavadocStyle First sentence should end with a period. 13
     Error misc TodoComment Comment matches to-do format 'TODO:'. 19
     Error design DesignForExtension Method 'connectionFactory' is not designed for extension - needs to be abstract, final or empty. 23
     Error javadoc JavadocMethod Missing a Javadoc comment. 23
     Error whitespace WhitespaceAround '{' is not preceded with whitespace. 23
     Error coding MagicNumber '5672' is a magic number. 26
     Error design DesignForExtension Method 'connection' is not designed for extension - needs to be abstract, final or empty. 33
     Error javadoc JavadocMethod Missing a Javadoc comment. 33
     Error misc FinalParameters Parameter connectionFactory should be final. 33
     Error whitespace WhitespaceAround '{' is not preceded with whitespace. 33
     Error javadoc JavadocStyle First sentence should end with a period. 43
     Error design DesignForExtension Method 'declareQueue' is not designed for extension - needs to be abstract, final or empty. 49
     Error whitespace WhitespaceAfter ',' is not followed by whitespace. 54
     Error whitespace WhitespaceAfter ',' is not followed by whitespace. 54
     Error whitespace WhitespaceAfter ',' is not followed by whitespace. 54
     Error whitespace WhitespaceAfter ',' is not followed by whitespace. 54
     Error whitespace WhitespaceAround 'catch' is not preceded with whitespace. 55
     Error whitespace WhitespaceAround '}' is not followed by whitespace. 55
     Error whitespace WhitespaceAround '{' is not preceded with whitespace. 55
     Error sizes LineLength Line is longer than 80 characters (found 126). 56
     Error whitespace WhitespaceAfter 'typecast' is not followed by whitespace. 56
     Error whitespace WhitespaceAround '{' is not preceded with whitespace. 56
     Error whitespace WhitespaceAfter ',' is not followed by whitespace. 59
     Error whitespace WhitespaceAfter ',' is not followed by whitespace. 59
     Error whitespace WhitespaceAfter ',' is not followed by whitespace. 59
     Error whitespace WhitespaceAfter
    - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -14833,25 +15467,25 @@

    org/laidu/lear

    org/laidu/learn/amqp/rabbitmq/java/package-info.java

    Severity Category Rule Message Line
     Error misc NewlineAtEndOfFile File does not end with a newline.
     Error imports UnusedImports Unused import - org.springframework.amqp.AmqpIOException. 6
     Error imports UnusedImports Unused import - org.springframework.amqp.core.BindingBuilder. 7
     Error imports UnusedImports Unused import - org.springframework.amqp.core.TopicExchange. 9
     Error imports UnusedImports Unused import - org.springframework.amqp.rabbit.connection.ConnectionFactory. 11
     Error imports UnusedImports Unused import - org.springframework.amqp.rabbit.core.RabbitTemplate. 13
     Error imports UnusedImports Unused import - org.springframework.amqp.rabbit.listener.SimpleMessageListenerContainer. 14
     Error imports UnusedImports Unused import - org.springframework.amqp.rabbit.listener.adapter.MessageListenerAdapter. 15
     Error javadoc JavadocStyle First sentence should end with a period. 19
     Error design DesignForExtension Method 'cachingConnectionFactory' is not designed for extension - needs to be abstract, final or empty. 28
     Error javadoc JavadocMethod Missing a Javadoc comment. 28
     Error whitespace WhitespaceAround '{' is not preceded with whitespace. 28
     Error sizes LineLength Line is longer than 80 characters (found 110). 29
     Error coding MagicNumber '5672' is a magic number. 31
     Error design DesignForExtension Method 'rabbitAdmin' is not designed for extension - needs to be abstract, final or empty. 38
     Error javadoc JavadocMethod Missing a Javadoc comment. 38
     Error whitespace WhitespaceAround '{' is not preceded with whitespace. 38
     Error design DesignForExtension Method 'declareQueue' is not designed for extension - needs to be abstract, final or empty. 46
     Error whitespace WhitespaceAfter ',' is not followed by whitespace. 52
     Error whitespace WhitespaceAfter ',' is not followed by whitespace. 52
     Error whitespace WhitespaceAfter ',' is not followed by whitespace. 52
     Error whitespace WhitespaceAround 'catch' is not preceded with whitespace. 53
     Error whitespace WhitespaceAround '}' is not followed by whitespace. 53
     Error whitespace WhitespaceAround '{' is not preceded with whitespace. 53
     Error sizes LineLength Line is longer than 80 characters (found 133). 55
     Error coding MagicNumber '406' is a magic number. 55
     Error whitespace WhitespaceAfter 'typecast' is not followed by whitespace. 55
     Error whitespace WhitespaceAround 'catch' is not preceded with whitespace. 59
     Error whitespace WhitespaceAround '}' is not followed by whitespace. 59
     Error whitespace WhitespaceAround '{' is not preceded with whitespace. 59
     Error sizes LineLength Line is longer than 80 characters (found 85). 67
     Error javadoc JavadocMethod Missing a Javadoc comment. 67
     Error misc FinalParameters
    - + - + - + - + @@ -14860,373 +15494,373 @@

    org/laidu/learn/am

    org/laidu/learn/amqp/rabbitmq/json/JsonApp.java

    Severity Category Rule Message Line
     Error misc NewlineAtEndOfFile File does not end with a newline.
     Error javadoc JavadocStyle First sentence should end with a period. 1
     Error misc TodoComment
    - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -15235,55 +15869,55 @@

    org/laidu/learn/amqp/ra

    org/laidu/learn/amqp/rabbitmq/official/conf/RabbitmqConfig.java

    Severity Category Rule Message Line
     Error misc NewlineAtEndOfFile File does not end with a newline.
     Error javadoc JavadocPackage Missing package-info.java file.
     Error imports AvoidStarImport Using the '.*' form of import should be avoided - org.springframework.amqp.core.*. 7
     Error javadoc JavadocType Missing a Javadoc comment. 25
     Error javadoc JavadocVariable Missing a Javadoc comment. 28
     Error javadoc JavadocVariable Missing a Javadoc comment. 30
     Error sizes LineLength Line is longer than 80 characters (found 89). 32
     Error javadoc JavadocVariable Missing a Javadoc comment. 32
     Error javadoc JavadocVariable Missing a Javadoc comment. 34
     Error javadoc JavadocVariable Missing a Javadoc comment. 36
     Error javadoc JavadocVariable Missing a Javadoc comment. 39
     Error javadoc JavadocVariable Missing a Javadoc comment. 42
     Error javadoc JavadocVariable Missing a Javadoc comment. 45
     Error design DesignForExtension Method 'runDemo' is not designed for extension - needs to be abstract, final or empty. 47
     Error javadoc JavadocMethod Missing a Javadoc comment. 47
     Error sizes LineLength Line is longer than 80 characters (found 104). 50
     Error coding MagicNumber '10' is a magic number. 57
     Error sizes LineLength Line is longer than 80 characters (found 98). 64
     Error coding MagicNumber '10_000' is a magic number. 64
     Error sizes LineLength Line is longer than 80 characters (found 99). 66
     Error coding MagicNumber '10_000' is a magic number. 66
     Error coding MagicNumber '10' is a magic number. 76
     Error design DesignForExtension Method 'listenForAFoo' is not designed for extension - needs to be abstract, final or empty. 81
     Error javadoc JavadocMethod Missing a Javadoc comment. 81
     Error misc FinalParameters Parameter foo should be final. 82
     Error design DesignForExtension Method 'listenForAFoo' is not designed for extension - needs to be abstract, final or empty. 87
     Error javadoc JavadocMethod Missing a Javadoc comment. 87
     Error misc FinalParameters Parameter bar should be final. 88
     Error design DesignForExtension Method 'legacyPojoListener' is not designed for extension - needs to be abstract, final or empty. 93
     Error javadoc JavadocMethod Missing a Javadoc comment. 93
     Error sizes LineLength Line is longer than 80 characters (found 99). 94
     Error misc FinalParameters Parameter connectionFactory should be final. 94
     Error sizes LineLength Line is longer than 80 characters (found 105). 95
     Error sizes LineLength Line is longer than 80 characters (found 90). 97
     Error misc FinalParameters Parameter object should be final. 100
     Error sizes LineLength Line is longer than 80 characters (found 88). 106
     Error design DesignForExtension Method 'classMapper' is not designed for extension - needs to be abstract, final or empty. 113
     Error javadoc JavadocMethod Missing a Javadoc comment. 113
     Error design DesignForExtension Method 'rabbitTemplate' is not designed for extension - needs to be abstract, final or empty. 123
     Error javadoc JavadocMethod Missing a Javadoc comment. 123
     Error misc FinalParameters Parameter connectionFactory should be final. 124
     Error design DesignForExtension Method 'jsonRabbitTemplate' is not designed for extension - needs to be abstract, final or empty. 128
     Error javadoc JavadocMethod Missing a Javadoc comment. 128
     Error sizes LineLength Line is longer than 80 characters (found 83). 129
     Error misc FinalParameters Parameter connectionFactory should be final. 129
     Error design DesignForExtension Method 'jsonConverter' is not designed for extension - needs to be abstract, final or empty. 135
     Error javadoc JavadocMethod Missing a Javadoc comment. 135
     Error design DesignForExtension Method 'inferredFoo' is not designed for extension - needs to be abstract, final or empty. 140
     Error javadoc JavadocMethod Missing a Javadoc comment. 140
     Error design DesignForExtension Method 'inferredBar' is not designed for extension - needs to be abstract, final or empty. 145
     Error javadoc JavadocMethod Missing a Javadoc comment. 145
     Error design DesignForExtension Method 'convertAndReceive' is not designed for extension - needs to be abstract, final or empty. 150
     Error javadoc JavadocMethod Missing a Javadoc comment. 150
     Error design DesignForExtension Method 'mapped' is not designed for extension - needs to be abstract, final or empty. 155
     Error javadoc JavadocMethod Missing a Javadoc comment. 155
     Error javadoc JavadocType Missing a Javadoc comment. 160
     Error javadoc JavadocVariable Missing a Javadoc comment. 165
     Error javadoc JavadocType Missing a Javadoc comment. 168
     Error javadoc JavadocMethod Missing a Javadoc comment. 170
     Error javadoc JavadocMethod Missing a Javadoc comment. 174
     Error misc FinalParameters
    - + - + - + - + - + - + - + - + - + @@ -15292,157 +15926,157 @@

    org/lai

    org/laidu/learn/amqp/rabbitmq/official/hello/world/Recv.java

    Severity Category Rule Message Line
     Error misc NewlineAtEndOfFile File does not end with a newline.
     Error javadoc JavadocPackage Missing package-info.java file.
     Error imports UnusedImports Unused import - lombok.extern.slf4j.Slf4j. 7
     Error javadoc JavadocVariable Missing a Javadoc comment. 20
     Error javadoc JavadocVariable Missing a Javadoc comment. 21
     Error javadoc JavadocVariable Missing a Javadoc comment. 22
     Error javadoc JavadocVariable Missing a Javadoc comment. 23
     Error javadoc JavadocVariable
    - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -15451,205 +16085,205 @@

    org/laidu/

    org/laidu/learn/amqp/rabbitmq/official/hello/world/Send.java

    Severity Category Rule Message Line
     Error imports AvoidStarImport Using the '.*' form of import should be avoided - com.rabbitmq.client.*. 4
     Error design HideUtilityClassConstructor Utility classes should not have a public or default constructor. 17
     Error javadoc JavadocVariable Missing a Javadoc comment. 20
     Error modifier ModifierOrder 'static' modifier out of order with the JLS suggestions. 20
     Error sizes LineLength Line is longer than 80 characters (found 84). 22
     Error javadoc JavadocMethod Missing a Javadoc comment. 22
     Error coding MagicNumber '5673' is a magic number. 28
     Error javadoc JavadocMethod Missing a Javadoc comment. 33
     Error misc FinalParameters Parameter argv should be final. 33
     Error misc FinalParameters Parameter reason should be final. 38
     Error whitespace WhitespaceAround '+' is not preceded with whitespace. 39
     Error whitespace WhitespaceAround '+' is not followed by whitespace. 39
     Error coding MagicNumber '10' is a magic number. 48
     Error whitespace WhitespaceAround '{' is not preceded with whitespace. 48
     Error whitespace WhitespaceAround '+' is not preceded with whitespace. 52
     Error whitespace WhitespaceAround '+' is not followed by whitespace. 52
     Error sizes LineLength Line is longer than 80 characters (found 82). 53
     Error sizes LineLength Line is longer than 80 characters (found 83). 55
     Error whitespace WhitespaceAround '+' is not preceded with whitespace. 55
     Error whitespace WhitespaceAround '+' is not followed by whitespace. 55
     Error sizes LineLength Line is longer than 80 characters (found 127). 57
     Error misc FinalParameters Parameter consumerTag should be final. 57
     Error misc FinalParameters Parameter envelope should be final. 57
     Error misc FinalParameters Parameter properties should be final. 57
     Error misc FinalParameters
    - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -15658,13 +16292,13 @@

    org/laidu/

    org/laidu/learn/amqp/rabbitmq/official/hello/world/package-info.java

    Severity Category Rule Message Line
     Error imports AvoidStarImport Using the '.*' form of import should be avoided - com.rabbitmq.client.*. 4
     Error imports UnusedImports Unused import - java.util.concurrent.Executors. 11
     Error design HideUtilityClassConstructor Utility classes should not have a public or default constructor. 22
     Error javadoc JavadocVariable Missing a Javadoc comment. 25
     Error modifier ModifierOrder 'static' modifier out of order with the JLS suggestions. 25
     Error javadoc JavadocMethod Missing a Javadoc comment. 28
     Error coding MagicNumber '5673' is a magic number. 34
     Error sizes LineLength Line is longer than 80 characters (found 81). 39
     Error javadoc JavadocMethod Missing a Javadoc comment. 39
     Error misc FinalParameters Parameter args should be final. 39
     Error misc FinalParameters Parameter reason should be final. 45
     Error whitespace WhitespaceAround '+' is not preceded with whitespace. 46
     Error whitespace WhitespaceAround '+' is not followed by whitespace. 46
     Error coding MagicNumber '10' is a magic number. 57
     Error sizes LineLength Line is longer than 80 characters (found 100). 62
     Error whitespace WhitespaceAfter ',' is not followed by whitespace. 62
     Error whitespace WhitespaceAfter ',' is not followed by whitespace. 62
     Error whitespace WhitespaceAfter ',' is not followed by whitespace. 62
     Error whitespace WhitespaceAround '+' is not preceded with whitespace. 63
     Error whitespace WhitespaceAround '+' is not followed by whitespace. 63
     Error whitespace WhitespaceAfter ',' is not followed by whitespace. 63
     Error whitespace WhitespaceAfter ',' is not followed by whitespace. 63
     Error whitespace WhitespaceAround '+' is not preceded with whitespace. 63
     Error whitespace WhitespaceAround '+' is not followed by whitespace. 63
     Error whitespace WhitespaceAround '+' is not preceded with whitespace. 64
     Error whitespace WhitespaceAround '+' is not followed by whitespace. 64
     Error whitespace WhitespaceAround '{' is not preceded with whitespace. 69
     Error whitespace WhitespaceAround '{' is not preceded with whitespace. 70
     Error sizes LineLength Line is longer than 80 characters (found 94). 71
     Error whitespace WhitespaceAfter ',' is not followed by whitespace. 71
     Error whitespace WhitespaceAround '+' is not preceded with whitespace. 71
     Error sizes LineLength Line is longer than 80 characters (found 84). 84
     Error javadoc JavadocMethod
    - + - + @@ -15673,13 +16307,13 @@

    or

    org/laidu/learn/amqp/rabbitmq/official/package-info.java

    Severity Category Rule Message Line
     Error misc NewlineAtEndOfFile
    - + - + @@ -15688,18 +16322,12 @@

    org/laidu/lear

    org/laidu/learn/amqp/rabbitmq/official/rpc/RPCClient.java

    Severity Category Rule Message Line
     Error misc NewlineAtEndOfFile
    - + - - - - - - @@ -15867,119 +16495,125 @@

    org/laidu/lea

    + + + + + + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -15988,13 +16622,13 @@

    org/laidu/lea

    org/laidu/learn/amqp/rabbitmq/official/work/queues/package-info.java

    Severity Category Rule Message Line
     ErrorjavadocJavadocPackageMissing package-info.java file.
     Error importsLine
     ErrorjavadocJavadocPackageMissing package-info.java file.
     Error imports AvoidStarImport Using the '.*' form of import should be avoided - com.rabbitmq.client.*. 6
     Error design HideUtilityClassConstructor Utility classes should not have a public or default constructor. 15
     Error javadoc JavadocVariable Missing a Javadoc comment. 19
     Error javadoc JavadocMethod Missing a Javadoc comment. 21
     Error misc FinalParameters Parameter argv should be final. 21
     Error coding MagicNumber '5672' is a magic number. 26
     Error sizes LineLength Line is longer than 80 characters (found 148). 42
     Error misc FinalParameters Parameter consumerTag should be final. 42
     Error misc FinalParameters Parameter envelope should be final. 42
     Error misc FinalParameters Parameter properties should be final. 42
     Error misc FinalParameters Parameter body should be final. 42
     Error sizes LineLength Line is longer than 80 characters (found 114). 57
     Error javadoc JavadocMethod Missing a Javadoc comment. 71
     Error misc FinalParameters Parameter n should be final. 71
     Error blocks NeedBraces 'if' construct must use '{}'s. 72
     Error blocks NeedBraces 'if' construct must use '{}'s. 73
     Error whitespace WhitespaceAround '-' is not preceded with whitespace. 74
     Error whitespace WhitespaceAround '-' is not followed by whitespace. 74
     Error whitespace WhitespaceAround '-' is not preceded with whitespace. 74
     Error whitespace WhitespaceAround
    - + - + @@ -16003,13 +16637,13 @@

    or

    org/laidu/learn/amqp/rabbitmq/package-info.java

    Severity Category Rule Message Line
     Error misc NewlineAtEndOfFile
    - + - + @@ -16018,25 +16652,25 @@

    org/laidu/learn/amqp/ra

    org/laidu/learn/amqp/service/Calculate.java

    Severity Category Rule Message Line
     Error misc NewlineAtEndOfFile
    - + - + - + - + @@ -16045,43 +16679,43 @@

    org/laidu/learn/amqp/servic

    org/laidu/learn/amqp/service/impl/CalculateImpl.java

    Severity Category Rule Message Line
     Error misc NewlineAtEndOfFile File does not end with a newline.
     Error javadoc JavadocPackage Missing package-info.java file.
     Error javadoc JavadocMethod
    - + - + - + - + - + - + - + @@ -16090,13 +16724,13 @@

    org/laidu/learn/am

    org/laidu/learn/apache/commins/lang3/package-info.java

    Severity Category Rule Message Line
     Error misc NewlineAtEndOfFile File does not end with a newline.
     Error javadoc JavadocPackage Missing package-info.java file.
     Error whitespace WhitespaceAround '{' is not preceded with whitespace. 13
     Error design DesignForExtension Method 'calculate' is not designed for extension - needs to be abstract, final or empty. 16
     Error misc FinalParameters Parameter n should be final. 17
     Error coding MagicNumber
    - + - + @@ -16105,43 +16739,43 @@

    org/laidu/learn/

    org/laidu/learn/apache/commins/lang3/source/DateUtilsPartMethod.java

    Severity Category Rule Message Line
     Error misc NewlineAtEndOfFile
    - + - + - + - + - + - + - + @@ -16150,49 +16784,49 @@

    or

    org/laidu/learn/apache/commins/lang3/usage/DateUtilsUsage.java

    Severity Category Rule Message Line
     Error javadoc JavadocPackage Missing package-info.java file.
     Error imports UnusedImports Unused import - org.apache.commons.lang3.time.DateUtils. 4
     Error javadoc JavadocStyle First sentence should end with a period. 9
     Error design HideUtilityClassConstructor Utility classes should not have a public or default constructor. 12
     Error sizes LineLength Line is longer than 80 characters (found 89). 28
     Error javadoc JavadocMethod
    - + - + - + - + - + - + - + - + @@ -16201,13 +16835,13 @@

    org/laid

    org/laidu/learn/apache/commins/lang3/usage/StringUtilsUsage.java

    Severity Category Rule Message Line
     Error javadoc JavadocPackage Missing package-info.java file.
     Error javadoc JavadocStyle First sentence should end with a period. 8
     Error design HideUtilityClassConstructor Utility classes should not have a public or default constructor. 11
     Error javadoc JavadocMethod Missing a Javadoc comment. 14
     Error misc FinalParameters Parameter args should be final. 14
     Error sizes LineLength Line is longer than 80 characters (found 87). 16
     Error sizes LineLength
    - + - + @@ -16216,24 +16850,18 @@

    org/la

    org/laidu/learn/apache/commons/cli/crawler/CrawlerMainApp.java

    Severity Category Rule Message Line
     Error javadoc JavadocType
    - + - + - - - - - - @@ -16326,41 +16954,47 @@

    org/laidu

    + + + + + +
    Severity Category Rule Message Line
     Error misc NewlineAtEndOfFile File does not end with a newline.
     ErrorjavadocJavadocPackageMissing package-info.java file.
     Error importsmisc NewlineAtEndOfFile File does not end with a newline.
     ErrorjavadocJavadocPackageMissing package-info.java file.

    org/laidu/learn/apache/commons/cli/crawler/enums/CrawlerType.java

    - + - + - + - + - + - + @@ -16369,13 +17003,13 @@

    org/l

    org/laidu/learn/apache/commons/cli/package-info.java

    Severity Category Rule Message Line
     Error misc NewlineAtEndOfFile File does not end with a newline.
     Error javadoc JavadocPackage Missing package-info.java file.
     Error javadoc JavadocVariable Missing a Javadoc comment. 10
     Error javadoc JavadocVariable Missing a Javadoc comment. 11
     Error whitespace NoWhitespaceBefore
    - + - + @@ -16384,13 +17018,13 @@

    org/laidu/learn/ap

    org/laidu/learn/apache/commons/text/package-info.java

    Severity Category Rule Message Line
     Error misc NewlineAtEndOfFile
    - + - + @@ -16399,13 +17033,13 @@

    org/laidu/learn/a

    org/laidu/learn/apache/httpclient/package-info.java

    Severity Category Rule Message Line
     Error misc NewlineAtEndOfFile
    - + - + @@ -16414,55 +17048,55 @@

    org/laidu/learn/apa

    org/laidu/learn/async/http/client/demo/Usage.java

    Severity Category Rule Message Line
     Error misc NewlineAtEndOfFile
    - + - + - + - + - + - + - + - + - + @@ -16471,33 +17105,27 @@

    org/laidu/learn/async

    org/laidu/learn/async/http/client/package-info.java

    Severity Category Rule Message Line
     Error javadoc JavadocPackage Missing package-info.java file.
     Error design HideUtilityClassConstructor Utility classes should not have a public or default constructor. 19
     Error javadoc JavadocMethod Missing a Javadoc comment. 23
     Error misc FinalParameters Parameter args should be final. 23
     Error whitespace WhitespaceAround '{' is not preceded with whitespace. 23
     Error whitespace WhitespaceAfter ',' is not followed by whitespace. 25
     Error sizes LineLength Line is longer than 80 characters (found 82). 27
     Error whitespace WhitespaceAround
    - + - +
    Severity Category Rule Message Line
     Error misc NewlineAtEndOfFile File does not end with a newline.
    -

    org/laidu/learn/btrace/monitor/MethodRunTime.java

    +

    org/laidu/learn/aws/dynamodb/convert/ItermConverter.java

    - + - - - - - - @@ -16507,155 +17135,356 @@

    org/laidu/learn/btrac

    - - - + + + - - + + - - - - - - - - + + - - - - - - - + - - - - + + + + - - - - + + + + - - + + - - - - - - - - - - - - - + - - - + + + - - - - + + + + - - - - + + + + - + - - - - + + + + - - - - + + + + - - - + + + - - - + + + - - - - + + + + - - - + + + - - - - + + + + + + + + + + + + + + + + -
    Severity Category Rule Message Line
     ErrormiscNewlineAtEndOfFileFile does not end with a newline.
     Error javadoc
     Error importsAvoidStarImportUsing the '.*' form of import should be avoided - com.sun.btrace.annotations.*.3
    UnusedImportsUnused import - org.nustaq.serialization.serializers.FSTStringSerializer.6
     Error imports AvoidStarImportUsing the '.*' form of import should be avoided - com.sun.btrace.BTraceUtils.*.4
    Using the '.*' form of import should be avoided - java.io.*.8
     Error javadocJavadocStyleFirst sentence should end with a period.6
     ErrordesignHideUtilityClassConstructorUtility classes should not have a public or default constructor.JavadocTypeMissing a Javadoc comment. 12
     ErrorsizesLineLengthLine is longer than 80 characters (found 103).16
     Error javadocJavadocMethodJavadocVariable Missing a Javadoc comment. 16
     ErrorsizesLineLengthLine is longer than 80 characters (found 118).17
    designVisibilityModifierVariable 'configuration' must be private and have accessor methods.16
     ErrormiscFinalParametersParameter name should be final.17
    javadocJavadocMethodMissing a Javadoc comment.19
     Error misc FinalParametersParameter method should be final.17
    Parameter obj should be final.19
     ErrormiscFinalParametersParameter time should be final.17
     Error whitespace WhitespaceAround '{' is not preceded with whitespace.17
     ErrorwhitespaceWhitespaceAround'/' is not preceded with whitespace.18
    19
     Error whitespaceWhitespaceAround'/' is not followed by whitespace.18
    WhitespaceAfter'typecast' is not followed by whitespace.20
     ErrorcodingMagicNumber'1000000' is a magic number.18
    javadocJavadocMethodMissing a Javadoc comment.22
     ErrorwhitespaceWhitespaceAround'if' is not followed by whitespace.19
    miscFinalParametersParameter sec should be final.22
     Error whitespace WhitespaceAround '{' is not preceded with whitespace.19
    22
     ErrorwhitespaceWhitespaceAfter',' is not followed by whitespace.20
    sizesLineLengthLine is longer than 80 characters (found 5,965).26
     ErrorwhitespaceWhitespaceAfter',' is not followed by whitespace.21
    javadocJavadocVariableMissing a Javadoc comment.26
     Error whitespaceWhitespaceAfter',' is not followed by whitespace.22
    OperatorWrap'+' should be on a new line.26
     Error whitespaceWhitespaceAfter',' is not followed by whitespace.23
    OperatorWrap'+' should be on a new line.27
     ErrorwhitespaceWhitespaceAfter',' is not followed by whitespace.24
    sizesLineLengthLine is longer than 80 characters (found 101).28
     Error whitespaceWhitespaceAfter',' is not followed by whitespace.25
    OperatorWrap'+' should be on a new line.28
     ErrorwhitespaceWhitespaceAfter',' is not followed by whitespace.26
    sizesLineLengthLine is longer than 80 characters (found 4,112).29
     ErrorjavadocJavadocMethodMissing a Javadoc comment.31
     ErrormiscFinalParametersParameter args should be final.31
     Error whitespace WhitespaceAfter ',' is not followed by whitespace.27
    -
    -

    org/laidu/learn/btrace/package-info.java

    - + - - - - + + + + + + + + + + +
    33
    SeverityCategoryRuleMessage ErrorsizesLineLengthLine is longer than 80 characters (found 92).37
     ErrorregexpRegexpSinglelineLine has trailing spaces.38
    +
    +

    org/laidu/learn/aws/dynamodb/package-info.java

    + + + + + + + + + + + + + + + + + + +
    SeverityCategoryRuleMessageLine
     ErrormiscNewlineAtEndOfFileFile does not end with a newline.
     ErrorjavadocJavadocStyleMissing a Javadoc comment.1
    +
    +

    org/laidu/learn/book/learn/dsaa3th/package-info.java

    + + + + + + + + + + + + +
    SeverityCategoryRuleMessageLine
     ErrormiscNewlineAtEndOfFileFile does not end with a newline.
    +
    +

    org/laidu/learn/btrace/monitor/MethodRunTime.java

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    SeverityCategoryRuleMessageLine
     ErrormiscNewlineAtEndOfFileFile does not end with a newline.
     ErrorjavadocJavadocPackageMissing package-info.java file.
     ErrorimportsAvoidStarImportUsing the '.*' form of import should be avoided - com.sun.btrace.annotations.*.3
     ErrorimportsAvoidStarImportUsing the '.*' form of import should be avoided - com.sun.btrace.BTraceUtils.*.4
     ErrorjavadocJavadocStyleFirst sentence should end with a period.6
     ErrordesignHideUtilityClassConstructorUtility classes should not have a public or default constructor.12
     ErrorsizesLineLengthLine is longer than 80 characters (found 103).16
     ErrorjavadocJavadocMethodMissing a Javadoc comment.16
     ErrorsizesLineLengthLine is longer than 80 characters (found 118).17
     ErrormiscFinalParametersParameter name should be final.17
     ErrormiscFinalParametersParameter method should be final.17
     ErrormiscFinalParametersParameter time should be final.17
     ErrorwhitespaceWhitespaceAround'{' is not preceded with whitespace.17
     ErrorwhitespaceWhitespaceAround'/' is not preceded with whitespace.18
     ErrorwhitespaceWhitespaceAround'/' is not followed by whitespace.18
     ErrorcodingMagicNumber'1000000' is a magic number.18
     ErrorwhitespaceWhitespaceAround'if' is not followed by whitespace.19
     ErrorwhitespaceWhitespaceAround'{' is not preceded with whitespace.19
     ErrorwhitespaceWhitespaceAfter',' is not followed by whitespace.20
     ErrorwhitespaceWhitespaceAfter',' is not followed by whitespace.21
     ErrorwhitespaceWhitespaceAfter',' is not followed by whitespace.22
     ErrorwhitespaceWhitespaceAfter',' is not followed by whitespace.23
     ErrorwhitespaceWhitespaceAfter',' is not followed by whitespace.24
     ErrorwhitespaceWhitespaceAfter',' is not followed by whitespace.25
     ErrorwhitespaceWhitespaceAfter',' is not followed by whitespace.26
     ErrorwhitespaceWhitespaceAfter',' is not followed by whitespace.27
    +
    +

    org/laidu/learn/btrace/package-info.java

    + + + + + + @@ -16799,7 +17628,7 @@

    org/laid

    SeverityCategoryRuleMessage Line
     Error'{' is not preceded with whitespace. 41
    -

    org/laidu/learn/code/practice/jianzhioffer/ReplaceSpace.java

    +

    org/laidu/learn/code/practice/jianzhioffer/ReConstructBinaryTree.java

    @@ -16815,41 +17644,152 @@

    org/laidu/

    - - - - + + + + - + - - - - + + + + - - - -
    Severity
     ErrordesignDesignForExtensionMethod 'replaceSpace' is not designed for extension - needs to be abstract, final or empty.16
    sizesLineLengthLine is longer than 80 characters (found 121).8
     Error javadocJavadocMethodJavadocType Missing a Javadoc comment. 16
     ErrormiscFinalParametersParameter str should be final.16
    javadocJavadocVariableMissing a Javadoc comment.17
     ErrorwhitespaceWhitespaceAfter',' is not followed by whitespace.17
    -
    -

    org/laidu/learn/code/practice/jianzhioffer/SearchInDoubleDimArray.java

    - + + + + - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    designVisibilityModifierVariable 'val' must be private and have accessor methods.17
    SeverityCategoryRuleMessageLine
     ErrormiscNewlineAtEndOfFilejavadocJavadocVariableMissing a Javadoc comment.18
     ErrordesignVisibilityModifierVariable 'left' must be private and have accessor methods.18
     ErrorjavadocJavadocVariableMissing a Javadoc comment.19
     ErrordesignVisibilityModifierVariable 'right' must be private and have accessor methods.19
     ErrorjavadocJavadocMethodMissing a Javadoc comment.21
     ErrormiscFinalParametersParameter x should be final.21
     ErrordesignDesignForExtensionMethod 'reConstructBinaryTree' is not designed for extension - needs to be abstract, final or empty.27
     ErrorjavadocJavadocMethodMissing a Javadoc comment.27
     ErrormiscFinalParametersParameter pre should be final.27
     ErrormiscFinalParametersParameter in should be final.27
     ErrorjavadocJavadocMethodMissing a Javadoc comment.52
     ErrormiscFinalParametersParameter args should be final.52
    +
    +

    org/laidu/learn/code/practice/jianzhioffer/ReplaceSpace.java

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    SeverityCategoryRuleMessageLine
     ErrormiscNewlineAtEndOfFileFile does not end with a newline.
     ErrordesignDesignForExtensionMethod 'replaceSpace' is not designed for extension - needs to be abstract, final or empty.16
     ErrorjavadocJavadocMethodMissing a Javadoc comment.16
     ErrormiscFinalParametersParameter str should be final.16
     ErrorwhitespaceWhitespaceAfter',' is not followed by whitespace.17
    +
    +

    org/laidu/learn/code/practice/jianzhioffer/SearchInDoubleDimArray.java

    + + + + + + + + + + + @@ -17756,7 +18696,7 @@

    org/laidu/learn/date/s

    SeverityCategoryRuleMessageLine
     ErrormiscNewlineAtEndOfFile File does not end with a newline.
    File does not end with a newline.
    -

    org/laidu/learn/design/pattern/_abstract/factory/AbstractFactory.java

    +

    org/laidu/learn/date/structure/tree/Binarytree/BtreeBasic.java

    @@ -17767,413 +18707,224 @@

    o

    - - - + + + - - -
    Severity
     Error javadocJavadocMethodMissing a Javadoc comment.14
    JavadocPackageMissing package-info.java file.
     Error javadocJavadocMethodMissing a Javadoc comment.15
    -
    -

    org/laidu/learn/design/pattern/_abstract/factory/AbstractProductA.java

    - + + + - - - - - + + + + + - + - + - - - - + + + + - - - - - - - - - - - - - + - - + + - - - - - - - + - - - - - - - - - - - - - - - - - - - + - - - - + + + + - - - - + + + + - - - + + + - + - + - - - -
    JavadocStyleFirst sentence should end with a period.6
    SeverityCategoryRuleMessageLine
     ErrordesignHideUtilityClassConstructorUtility classes should not have a public or default constructor.9
     Error javadoc JavadocVariable Missing a Javadoc comment.14
    12
     Error javadoc JavadocVariable Missing a Javadoc comment.15
    19
     ErrordesignVisibilityModifierVariable 'color' must be private and have accessor methods.15
    javadocJavadocVariableMissing a Javadoc comment.20
     Error javadoc JavadocMethod Missing a Javadoc comment.17
     ErrormiscFinalParametersParameter color should be final.17
     ErrorcodingHiddenField'color' hides a field.17
    22
     Error misc FinalParametersParameter brandName should be final.17
    Parameter data should be final.22
     Error coding HiddenField'brandName' hides a field.17
     ErrorjavadocJavadocTypeMissing a Javadoc comment.'data' hides a field. 22
     ErrorjavadocJavadocVariableMissing a Javadoc comment.24
     ErrorjavadocJavadocVariableMissing a Javadoc comment.25
     ErrorjavadocJavadocVariableMissing a Javadoc comment.26
     Error javadocJavadocVariableJavadocMethod Missing a Javadoc comment. 27
     ErrorjavadocJavadocTypeMissing a Javadoc comment.30
    miscFinalParametersParameter data should be final.27
     ErrorwhitespaceWhitespaceAround'{' is not preceded with whitespace.30
    miscFinalParametersParameter index should be final.27
     ErrorjavadocJavadocVariableMissing a Javadoc comment.sizesLineLengthLine is longer than 80 characters (found 84). 31
     Error javadocJavadocVariableJavadocMethod Missing a Javadoc comment.32
    43
     ErrorjavadocJavadocVariableMissing a Javadoc comment.33
    +misc +FinalParameters +Parameter args should be final. +43 + + Error +sizes +LineLength +Line is longer than 80 characters (found 82). +45
    -

    org/laidu/learn/design/pattern/_abstract/factory/AbstractProductB.java

    +

    org/laidu/learn/date/structure/tree/basic/ListAllFiles.java

    - + - - - - - - - - - - + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - -
    Severity Category Rule Message Line
     ErrorjavadocJavadocVariableMissing a Javadoc comment.14
     ErrorjavadocJavadocVariableMissing a Javadoc comment.15
    miscNewlineAtEndOfFileFile does not end with a newline.
     Error javadocJavadocMethodMissing a Javadoc comment.17
     ErrormiscFinalParametersParameter name should be final.17
     ErrorjavadocJavadocTypeMissing a Javadoc comment.21
     ErrorwhitespaceWhitespaceAround'{' is not preceded with whitespace.21
     ErrorjavadocJavadocVariableMissing a Javadoc comment.22
    -
    -

    org/laidu/learn/design/pattern/_abstract/factory/Client.java

    - + + + - - - - - - - - + + - - + + - - - - - - - - - - - - - - - - - - - - - - - - - -
    JavadocPackageMissing package-info.java file.
    SeverityCategoryRuleMessageLine
     Error design HideUtilityClassConstructor Utility classes should not have a public or default constructor.10
    15
     Error javadoc JavadocMethod Missing a Javadoc comment.13
    19
     Error misc FinalParametersParameter args should be final.13
     ErrorsizesLineLengthLine is longer than 80 characters (found 93).15
     ErrorsizesLineLengthLine is longer than 80 characters (found 93).16
     ErrorsizesLineLengthLine is longer than 80 characters (found 91).18
     ErrorsizesLineLengthLine is longer than 80 characters (found 91).19
    -
    -

    org/laidu/learn/design/pattern/_abstract/factory/ConcreteProcductFactoryApple.java

    - - - - - - - + + - - - - - - - - - - - - - - - - - - - - -
    SeverityCategoryRuleMessageLine
    Parameter file should be final.19
     Error whitespace WhitespaceAround '{' is not preceded with whitespace.13
     ErrordesignDesignForExtensionMethod 'createProductA' is not designed for extension - needs to be abstract, final or empty.16
     ErrorsizesLineLengthLine is longer than 80 characters (found 101). 19
     Error whitespaceWhitespaceAfter',' is not followed by whitespace.19
     ErrordesignDesignForExtensionMethod 'createProductB' is not designed for extension - needs to be abstract, final or empty.22
    -
    -

    org/laidu/learn/design/pattern/_abstract/factory/ConcreteProcductFactoryDell.java

    - - - - - - - + + + - - + + - - - - - - - - - - - - - - - - - - - -
    SeverityCategoryRuleMessageLine
    WhitespaceAround'+' is not preceded with whitespace.22
     Error whitespace WhitespaceAround'{' is not preceded with whitespace.13
    '+' is not followed by whitespace.22
     ErrordesignDesignForExtensionMethod 'createProductA' is not designed for extension - needs to be abstract, final or empty.16
     Error sizes LineLengthLine is longer than 80 characters (found 100).19
     ErrorwhitespaceWhitespaceAfter',' is not followed by whitespace.19
     ErrordesignDesignForExtensionMethod 'createProductB' is not designed for extension - needs to be abstract, final or empty.22
    -
    -

    org/laidu/learn/design/pattern/_abstract/factory/ConcreteProductA.java

    - - - - - - - + + - - - - + + + + - - + + - - - - + + + + - - - - + + + + - - - + + + - - - - + + + + - - - - - - - - -
    SeverityCategoryRuleMessageLine
    Line is longer than 80 characters (found 101).23
     ErrorimportsUnusedImportsUnused import - org.laidu.learn.design.pattern.simple.factory.AbstractProduct.4
    whitespaceWhitespaceAround'else' is not preceded with whitespace.24
     Error whitespace WhitespaceAround'{' is not preceded with whitespace.12
    '}' is not followed by whitespace.24
     ErrorjavadocJavadocMethodMissing a Javadoc comment.14
    whitespaceWhitespaceAround'+' is not preceded with whitespace.25
     ErrormiscFinalParametersParameter colorType should be final.14
    whitespaceWhitespaceAround'+' is not followed by whitespace.25
     Error whitespaceWhitespaceAfter',' is not followed by whitespace.14
    WhitespaceAround'+' is not preceded with whitespace.25
     ErrormiscFinalParametersParameter brandName should be final.14
    whitespaceWhitespaceAround'+' is not followed by whitespace.25
     ErrorregexpRegexpSinglelineLine has trailing spaces.15
     Error whitespaceWhitespaceAfter',' is not followed by whitespace.16
    -
    -

    org/laidu/learn/design/pattern/_abstract/factory/ConcreteProductB.java

    - - - - - - - + + + - - + + - + - -
    SeverityCategoryRuleMessageLine
    WhitespaceAround'+' is not preceded with whitespace.25
     Error whitespace WhitespaceAround'{' is not preceded with whitespace.11
    '+' is not followed by whitespace.25
     Error javadoc JavadocMethod Missing a Javadoc comment.13
    29
     Error misc FinalParametersParameter productName should be final.13
    -
    -

    org/laidu/learn/design/pattern/_abstract/factory/package-info.java

    - - - - - - - - - - - - -
    SeverityCategoryRuleMessageLine
     ErrormiscNewlineAtEndOfFileFile does not end with a newline.
    +Parameter args should be final. +29
    -

    org/laidu/learn/design/pattern/builder/Builder.java

    +

    org/laidu/learn/date/structure/tree/package-info.java

    @@ -18190,23 +18941,11 @@

    org/laidu/learn/des

    - - - - - - - - - - - - -
    Severity
     Error javadocJavadocPackageMissing package-info.java file.
     Errorjavadoc JavadocStyle First sentence should end with a period.3
     ErrormiscTodoCommentComment matches to-do format 'TODO:'.9
    +1
    -

    org/laidu/learn/design/pattern/builder/Client.java

    +

    org/laidu/learn/design/pattern/_abstract/factory/AbstractFactory.java

    @@ -18216,249 +18955,237 @@

    org/laidu/learn/desi

    - - - - + + + + - - - - - - - - -
    SeverityLine
     ErrormiscNewlineAtEndOfFileFile does not end with a newline.
    javadocJavadocMethodMissing a Javadoc comment.14
     Error javadocJavadocStyleFirst sentence should end with a period.3
     ErrormiscTodoCommentComment matches to-do format 'TODO:'.9
    +JavadocMethod +Missing a Javadoc comment. +15
    -

    org/laidu/learn/design/pattern/builder/ConcreteBuilder.java

    +

    org/laidu/learn/design/pattern/_abstract/factory/AbstractProductA.java

    - + + + + + + + - - - - + + + + - - - - + + + + - - - -
    Severity Category Rule Message Line
     ErrorjavadocJavadocVariableMissing a Javadoc comment.14
     ErrormiscNewlineAtEndOfFileFile does not end with a newline.
    javadocJavadocVariableMissing a Javadoc comment.15
     ErrormiscTodoCommentComment matches to-do format 'TODO:'.8
    designVisibilityModifierVariable 'color' must be private and have accessor methods.15
     ErrorregexpRegexpSinglelineLine has trailing spaces.8
    -
    -

    org/laidu/learn/design/pattern/builder/Product.java

    - + + + + - - - - - + + + + + + + + + + + - - - + + + + + + + + + - - - + + + - + - + -
    javadocJavadocMethodMissing a Javadoc comment.17
    SeverityCategoryRuleMessageLine
     ErrormiscFinalParametersParameter color should be final.17
     ErrorcodingHiddenField'color' hides a field.17
     Error miscNewlineAtEndOfFileFile does not end with a newline.
    FinalParametersParameter brandName should be final.17
     ErrorcodingHiddenField'brandName' hides a field.17
     Error javadocJavadocStyleFirst sentence should end with a period.7
    JavadocTypeMissing a Javadoc comment.22
     Error javadoc JavadocVariable Missing a Javadoc comment.17
    24
     Error javadoc JavadocVariable Missing a Javadoc comment.18
    25
     Error javadoc JavadocVariable Missing a Javadoc comment.19
    -
    -

    org/laidu/learn/design/pattern/chain/responsibility/AbstractLogger.java

    - - - - - - - - - - - - - + - + - - - - + + + + + + + + + + - - - - - - - + - + - - - - - - - - - - - - - +
    SeverityCategoryRuleMessageLine
     ErrorjavadocJavadocStyleFirst sentence should end with a period.6
    26
     Error javadoc JavadocVariable Missing a Javadoc comment.14
    27
     ErrormodifierModifierOrder'static' modifier out of order with the JLS suggestions.14
    javadocJavadocTypeMissing a Javadoc comment.30
     ErrorwhitespaceWhitespaceAround'{' is not preceded with whitespace.30
     Error javadoc JavadocVariable Missing a Javadoc comment.15
     ErrormodifierModifierOrder'static' modifier out of order with the JLS suggestions.15
    31
     Error javadoc JavadocVariable Missing a Javadoc comment.16
    32
     ErrormodifierModifierOrder'static' modifier out of order with the JLS suggestions.16
     Error javadoc JavadocVariable Missing a Javadoc comment.18
     ErrordesignVisibilityModifierVariable 'level' must be private and have accessor methods.18
    33
    +
    +

    org/laidu/learn/design/pattern/_abstract/factory/AbstractProductB.java

    + + + + + + + - + - - - - - - - + - - - - + + + + - + - - + + - - - - + + + + - - - - + + + + - - - - - - - +
    SeverityCategoryRuleMessageLine
     Error javadocJavadocMethodJavadocVariable Missing a Javadoc comment.20
     ErrormiscFinalParametersParameter level should be final.20
    14
     ErrorcodingHiddenField'level' hides a field.20
    javadocJavadocVariableMissing a Javadoc comment.15
     Error javadoc JavadocMethod Missing a Javadoc comment.24
    17
     Error misc FinalParametersParameter level should be final.24
    Parameter name should be final.17
     ErrorcodingHiddenField'level' hides a field.24
    javadocJavadocTypeMissing a Javadoc comment.21
     ErrormiscFinalParametersParameter nextLogger should be final.24
    whitespaceWhitespaceAround'{' is not preceded with whitespace.21
     ErrorcodingHiddenField'nextLogger' hides a field.24
     Error javadoc JavadocVariable Missing a Javadoc comment.29
    22
    +
    +

    org/laidu/learn/design/pattern/_abstract/factory/Client.java

    + + + + + + + - - - + + + - + - - + + - - - - + + + + - - - - + + + + - - - - + + + + - - - -
    SeverityCategoryRuleMessageLine
     Error designDesignForExtensionMethod 'logMessage' is not designed for extension - needs to be abstract, final or empty.34
    HideUtilityClassConstructorUtility classes should not have a public or default constructor.10
     Error javadoc JavadocMethod Missing a Javadoc comment.34
    13
     Error misc FinalParametersParameter level should be final.34
    Parameter args should be final.13
     ErrorcodingHiddenField'level' hides a field.34
    sizesLineLengthLine is longer than 80 characters (found 93).15
     ErrormiscFinalParametersParameter message should be final.34
    sizesLineLengthLine is longer than 80 characters (found 93).16
     ErrorjavadocJavadocMethodMissing a Javadoc comment.43
    sizesLineLengthLine is longer than 80 characters (found 91).18
     ErrormodifierModifierOrder'protected' modifier out of order with the JLS suggestions.43
    +sizes +LineLength +Line is longer than 80 characters (found 91). +19
    -

    org/laidu/learn/design/pattern/chain/responsibility/Client.java

    +

    org/laidu/learn/design/pattern/_abstract/factory/ConcreteProcductFactoryApple.java

    @@ -18468,94 +19195,94 @@

    org/lai

    - - - - + + + + - - - + + + - - - - + + + + - - - + + + - - - - - - - - - -
    SeverityLine
     ErrorjavadocJavadocStyleFirst sentence should end with a period.5
    whitespaceWhitespaceAround'{' is not preceded with whitespace.13
     Error designHideUtilityClassConstructorUtility classes should not have a public or default constructor.11
    DesignForExtensionMethod 'createProductA' is not designed for extension - needs to be abstract, final or empty.16
     ErrorjavadocJavadocMethodMissing a Javadoc comment.14
    sizesLineLengthLine is longer than 80 characters (found 101).19
     Error whitespaceWhitespaceAround'{' is not preceded with whitespace.14
    WhitespaceAfter',' is not followed by whitespace.19
     ErrorjavadocJavadocMethodMissing a Javadoc comment.26
     ErrormiscFinalParametersParameter args should be final.26
    +design +DesignForExtension +Method 'createProductB' is not designed for extension - needs to be abstract, final or empty. +22
    -

    org/laidu/learn/design/pattern/chain/responsibility/ConcreteLoggerDebug.java

    +

    org/laidu/learn/design/pattern/_abstract/factory/ConcreteProcductFactoryDell.java

    - + - - - - - - - - - - + + + + - - + + - - - - + + + + -
    Severity Category Rule Message Line
     ErrorjavadocJavadocStyleFirst sentence should end with a period.5
     ErrorjavadocJavadocMethodMissing a Javadoc comment.14
    whitespaceWhitespaceAround'{' is not preceded with whitespace.13
     Error design DesignForExtensionMethod 'write' is not designed for extension - needs to be abstract, final or empty.17
    Method 'createProductA' is not designed for extension - needs to be abstract, final or empty.16
     ErrormiscFinalParametersParameter message should be final.18
    sizesLineLengthLine is longer than 80 characters (found 100).19
     Error whitespace WhitespaceAfter ',' is not followed by whitespace.19
    +19 + + Error +design +DesignForExtension +Method 'createProductB' is not designed for extension - needs to be abstract, final or empty. +22
    -

    org/laidu/learn/design/pattern/chain/responsibility/ConcreteLoggerError.java

    +

    org/laidu/learn/design/pattern/_abstract/factory/ConcreteProductA.java

    - + + + + + + + - - - - + + + + @@ -18564,24 +19291,36 @@

    - - - - + + + + + + + + + + - - + + + + + + + + -
    Severity Category Rule Message Line
     ErrorimportsUnusedImportsUnused import - org.laidu.learn.design.pattern.simple.factory.AbstractProduct.4
     ErrorjavadocJavadocStyleFirst sentence should end with a period.5
    whitespaceWhitespaceAround'{' is not preceded with whitespace.12
     Error javadoc ErrordesignDesignForExtensionMethod 'write' is not designed for extension - needs to be abstract, final or empty.17
    miscFinalParametersParameter colorType should be final.14
     ErrorwhitespaceWhitespaceAfter',' is not followed by whitespace.14
     Error misc FinalParametersParameter message should be final.18
    Parameter brandName should be final.14
     ErrorregexpRegexpSinglelineLine has trailing spaces.15
     Error whitespace WhitespaceAfter ',' is not followed by whitespace.19
    +16
    -

    org/laidu/learn/design/pattern/chain/responsibility/ConcreteLoggerInfo.java

    +

    org/laidu/learn/design/pattern/_abstract/factory/ConcreteProductB.java

    @@ -18591,36 +19330,24 @@

    - - - - + + + + - + - - - - - - - - - - - - - -
    Severity ErrorjavadocJavadocStyleFirst sentence should end with a period.5
    whitespaceWhitespaceAround'{' is not preceded with whitespace.11
     Error javadoc JavadocMethod Missing a Javadoc comment.14
    13
     ErrordesignDesignForExtensionMethod 'write' is not designed for extension - needs to be abstract, final or empty.17
     Error misc FinalParametersParameter message should be final.18
     ErrorwhitespaceWhitespaceAfter',' is not followed by whitespace.19
    +Parameter productName should be final. +13
    -

    org/laidu/learn/design/pattern/chain/responsibility/package-info.java

    +

    org/laidu/learn/design/pattern/_abstract/factory/package-info.java

    @@ -18635,7 +19362,7 @@

    o

    SeverityFile does not end with a newline.
    -

    org/laidu/learn/design/pattern/command/package-info.java

    +

    org/laidu/learn/design/pattern/builder/Builder.java

    @@ -18648,9 +19375,21 @@

    org/laidu/lear

    -
    Severitymisc NewlineAtEndOfFile File does not end with a newline.
    + + + Error +javadoc +JavadocStyle +First sentence should end with a period. +3 + + Error +misc +TodoComment +Comment matches to-do format 'TODO:'. +9
    -

    org/laidu/learn/design/pattern/decorator/package-info.java

    +

    org/laidu/learn/design/pattern/builder/Client.java

    @@ -18663,9 +19402,21 @@

    org/laidu/le

    -
    Severitymisc NewlineAtEndOfFile File does not end with a newline.
    + + + Error +javadoc +JavadocStyle +First sentence should end with a period. +3 + + Error +misc +TodoComment +Comment matches to-do format 'TODO:'. +9
    -

    org/laidu/learn/design/pattern/factory/AbstractFactory.java

    +

    org/laidu/learn/design/pattern/builder/ConcreteBuilder.java

    @@ -18675,216 +19426,228 @@

    org/laidu/l

    + + + + + + - - -
    SeverityLine
     ErrormiscNewlineAtEndOfFileFile does not end with a newline.
     Error javadocJavadocMethodMissing a Javadoc comment.10
    +JavadocPackage +Missing package-info.java file. + + + Error +misc +TodoComment +Comment matches to-do format 'TODO:'. +8 + + Error +regexp +RegexpSingleline +Line has trailing spaces. +8
    -

    org/laidu/learn/design/pattern/factory/AbstractProduct.java

    +

    org/laidu/learn/design/pattern/builder/Product.java

    - + + + + + + + - - - + + + - - - - + + + + - + - + - - - - - - - - - - + + + +
    Severity Category Rule Message Line
     ErrormiscNewlineAtEndOfFileFile does not end with a newline.
     Error javadocJavadocVariableMissing a Javadoc comment.14
    JavadocStyleFirst sentence should end with a period.7
     ErrordesignVisibilityModifierVariable 'color' must be private and have accessor methods.14
    javadocJavadocVariableMissing a Javadoc comment.17
     Error javadocJavadocMethodJavadocVariable Missing a Javadoc comment.16
    18
     ErrormiscFinalParametersParameter color should be final.16
     ErrorcodingHiddenField'color' hides a field.16
    javadocJavadocVariableMissing a Javadoc comment.19
    +
    +

    org/laidu/learn/design/pattern/chain/responsibility/AbstractLogger.java

    + + + + + + + - - - - + + + + - + - + - - - - + + + + - + - - - - + + + + - + + + + + + + -
    SeverityCategoryRuleMessageLine
     ErrorwhitespaceWhitespaceAround'{' is not preceded with whitespace.16
    javadocJavadocStyleFirst sentence should end with a period.6
     Error javadocJavadocTypeJavadocVariable Missing a Javadoc comment.20
    14
     ErrorwhitespaceWhitespaceAround'{' is not preceded with whitespace.20
    modifierModifierOrder'static' modifier out of order with the JLS suggestions.14
     Error javadoc JavadocVariable Missing a Javadoc comment.22
    15
     ErrorjavadocJavadocVariableMissing a Javadoc comment.23
    modifierModifierOrder'static' modifier out of order with the JLS suggestions.15
     Error javadoc JavadocVariable Missing a Javadoc comment.24
    16
     ErrormodifierModifierOrder'static' modifier out of order with the JLS suggestions.16
     Error javadoc JavadocVariable Missing a Javadoc comment.25
    -
    -

    org/laidu/learn/design/pattern/factory/Client.java

    - - - - - - - + - - - + + + - + - - + + - - - - + + + + - - - - + + + + - - - -
    SeverityCategoryRuleMessageLine
    18
     Error designHideUtilityClassConstructorUtility classes should not have a public or default constructor.10
    VisibilityModifierVariable 'level' must be private and have accessor methods.18
     Error javadoc JavadocMethod Missing a Javadoc comment.13
    20
     Error misc FinalParametersParameter args should be final.13
    Parameter level should be final.20
     ErrorsizesLineLengthLine is longer than 80 characters (found 88).15
    codingHiddenField'level' hides a field.20
     ErrorsizesLineLengthLine is longer than 80 characters (found 87).17
    javadocJavadocMethodMissing a Javadoc comment.24
     ErrorsizesLineLengthLine is longer than 80 characters (found 92).19
    -
    -

    org/laidu/learn/design/pattern/factory/ConcreteBlueProcductFactory.java

    - + + + + - - - - - + + + + + - - - - + + + + + + + + + + + + + + + + - -
    miscFinalParametersParameter level should be final.24
    SeverityCategoryRuleMessageLine
     ErrorcodingHiddenField'level' hides a field.24
     ErrorwhitespaceWhitespaceAround'{' is not preceded with whitespace.13
    miscFinalParametersParameter nextLogger should be final.24
     ErrorcodingHiddenField'nextLogger' hides a field.24
     ErrorjavadocJavadocVariableMissing a Javadoc comment.29
     Error design DesignForExtensionMethod 'createProduct' is not designed for extension - needs to be abstract, final or empty.15
    -
    -

    org/laidu/learn/design/pattern/factory/ConcreteBlueProduct.java

    - + + - - - - - - - - - - - - -
    Method 'logMessage' is not designed for extension - needs to be abstract, final or empty.34
    SeverityCategoryRuleMessageLine
     Error javadoc JavadocMethod Missing a Javadoc comment.13
     ErrorregexpRegexpSinglelineLine has trailing spaces.14
    -
    -

    org/laidu/learn/design/pattern/factory/ConcreteRedProcductFactory.java

    - + - - - - - + + + + + - - - - + + + + - - - -
    34
    SeverityCategoryRuleMessageLine
     ErrormiscFinalParametersParameter level should be final.34
     ErrorwhitespaceWhitespaceAround'{' is not preceded with whitespace.13
    codingHiddenField'level' hides a field.34
     ErrordesignDesignForExtensionMethod 'createProduct' is not designed for extension - needs to be abstract, final or empty.15
    -
    -

    org/laidu/learn/design/pattern/factory/ConcreteRedProduct.java

    - + + + + - - - - - - -
    miscFinalParametersParameter message should be final.34
    SeverityCategoryRuleMessageLine
     Error javadoc JavadocMethod Missing a Javadoc comment.13
    +43 + + Error +modifier +ModifierOrder +'protected' modifier out of order with the JLS suggestions. +43
    -

    org/laidu/learn/design/pattern/factory/ConcreteYellowProcductFactory.java

    +

    org/laidu/learn/design/pattern/chain/responsibility/Client.java

    @@ -18894,48 +19657,42 @@

    - - - -
    Severity ErrordesignDesignForExtensionMethod 'createProduct' is not designed for extension - needs to be abstract, final or empty.15
    -
    -

    org/laidu/learn/design/pattern/factory/ConcreteYellowProduct.java

    - + + + + - - - - - + + + + + - + - - - -
    javadocJavadocStyleFirst sentence should end with a period.5
    SeverityCategoryRuleMessageLine
     ErrordesignHideUtilityClassConstructorUtility classes should not have a public or default constructor.11
     Error javadoc JavadocMethod Missing a Javadoc comment.13
    14
     ErrorregexpRegexpSinglelineLine has trailing spaces.14
    -
    -

    org/laidu/learn/design/pattern/factory/package-info.java

    - + + + + - - - - - + + + + + - - -
    whitespaceWhitespaceAround'{' is not preceded with whitespace.14
    SeverityCategoryRuleMessageLine
     ErrorjavadocJavadocMethodMissing a Javadoc comment.26
     Error miscNewlineAtEndOfFileFile does not end with a newline.
    +FinalParameters +Parameter args should be final. +26
    -

    org/laidu/learn/design/pattern/iterator/Aggregate.java

    +

    org/laidu/learn/design/pattern/chain/responsibility/ConcreteLoggerDebug.java

    @@ -18945,252 +19702,144 @@

    org/laidu/learn/

    - - - - + + + + - - - + + + - - - - + + + + - - - - + + + + - - - - - - - - -
    SeverityLine
     ErrormiscNewlineAtEndOfFileFile does not end with a newline.
    javadocJavadocStyleFirst sentence should end with a period.5
     Error javadocJavadocPackageMissing package-info.java file.
    JavadocMethodMissing a Javadoc comment.14
     ErrorimportsUnusedImportsUnused import - java.util.List.4
    designDesignForExtensionMethod 'write' is not designed for extension - needs to be abstract, final or empty.17
     ErrorjavadocJavadocStyleFirst sentence should end with a period.6
    miscFinalParametersParameter message should be final.18
     Error whitespaceGenericWhitespace'>' is followed by an illegal character.12
     ErrorwhitespaceWhitespaceAround'{' is not preceded with whitespace.12
    +WhitespaceAfter +',' is not followed by whitespace. +19
    -

    org/laidu/learn/design/pattern/iterator/ConcreteAggregate.java

    +

    org/laidu/learn/design/pattern/chain/responsibility/ConcreteLoggerError.java

    - + - - - - - - - - - - - - - - - - - - - + - - - - - - - + - - - - - - - + - - + + - - + + - - - - - - - - - -
    Severity Category Rule Message Line
     ErrormiscNewlineAtEndOfFileFile does not end with a newline.
     Error javadoc JavadocStyle First sentence should end with a period.7
     ErrorjavadocJavadocTypeType Javadoc comment is missing an @param <E> tag.14
     ErrorwhitespaceGenericWhitespace'>' is followed by an illegal character.14
    5
     ErrorwhitespaceWhitespaceAround'{' is not preceded with whitespace.14
     Error javadocJavadocVariableJavadocMethod Missing a Javadoc comment.16
     ErrordesignDesignForExtensionMethod 'createIterator' is not designed for extension - needs to be abstract, final or empty.18
    14
     Error design DesignForExtensionMethod 'addItem' is not designed for extension - needs to be abstract, final or empty.23
    Method 'write' is not designed for extension - needs to be abstract, final or empty.17
     Error misc FinalParametersParameter e should be final.24
    Parameter message should be final.18
     ErrordesignDesignForExtensionMethod 'removeItem' is not designed for extension - needs to be abstract, final or empty.28
     ErrormiscFinalParametersParameter e should be final.29
    +whitespace +WhitespaceAfter +',' is not followed by whitespace. +19
    -

    org/laidu/learn/design/pattern/iterator/ConcreteIterator.java

    +

    org/laidu/learn/design/pattern/chain/responsibility/ConcreteLoggerInfo.java

    - + - - - - - - - - - - - - - - - - - - - + - + - + - - + + - - - - + + + + - - - - - - - - - -
    Severity Category Rule Message Line
     ErrormiscNewlineAtEndOfFileFile does not end with a newline.
     Error javadoc JavadocStyle First sentence should end with a period.3
     ErrorjavadocJavadocTypeType Javadoc comment is missing an @param <E> tag.9
     ErrorjavadocJavadocVariableMissing a Javadoc comment.11
    5
     Error javadocJavadocVariableJavadocMethod Missing a Javadoc comment.13
    14
     Error design DesignForExtensionMethod 'first' is not designed for extension - needs to be abstract, final or empty.15
    Method 'write' is not designed for extension - needs to be abstract, final or empty.17
     ErrordesignDesignForExtensionMethod 'next' is not designed for extension - needs to be abstract, final or empty.20
    miscFinalParametersParameter message should be final.18
     ErrordesignDesignForExtensionMethod 'isDone' is not designed for extension - needs to be abstract, final or empty.25
     ErrordesignDesignForExtensionMethod 'currentItem' is not designed for extension - needs to be abstract, final or empty.30
    +whitespace +WhitespaceAfter +',' is not followed by whitespace. +19
    -

    org/laidu/learn/design/pattern/iterator/Iterator.java

    +

    org/laidu/learn/design/pattern/chain/responsibility/package-info.java

    - + - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    Severity Category Rule Message Line
     Error misc NewlineAtEndOfFile File does not end with a newline.
     ErrorjavadocJavadocStyleFirst sentence should end with a period.3
     ErrorjavadocJavadocTypeType Javadoc comment is missing an @param <E> tag.9
     ErrorjavadocJavadocStyleFirst sentence should end with a period.11
     ErrorjavadocJavadocStyleFirst sentence should end with a period.16
     ErrorjavadocJavadocStyleFirst sentence should end with a period.22
     ErrorjavadocJavadocStyleFirst sentence should end with a period.28
    +
    -

    org/laidu/learn/design/pattern/package-info.java

    +

    org/laidu/learn/design/pattern/command/package-info.java

    - + - + - - - - - - -
    Severity Category Rule Message Line
     Error misc NewlineAtEndOfFile File does not end with a newline.
     ErrorjavadocJavadocStyleMissing a Javadoc comment.1
    +
    -

    org/laidu/learn/design/pattern/prototype/Client.java

    +

    org/laidu/learn/design/pattern/decorator/package-info.java

    @@ -19203,90 +19852,105 @@

    org/laidu/learn/de

    - +
    Severitymisc NewlineAtEndOfFile File does not end with a newline.
    +
    +

    org/laidu/learn/design/pattern/factory/AbstractFactory.java

    + + + + + + + - - - + + +
    SeverityCategoryRuleMessageLine
     Error javadocJavadocStyleFirst sentence should end with a period.3
    JavadocMethodMissing a Javadoc comment.10
    +
    +

    org/laidu/learn/design/pattern/factory/AbstractProduct.java

    + + + + + + + - - - + + + - - - + + + - + - - + + - - - - + + + + - - -
    SeverityCategoryRuleMessageLine
     Error javadocJavadocTypeUnknown tag 'date'.8
    JavadocVariableMissing a Javadoc comment.14
     Error designHideUtilityClassConstructorUtility classes should not have a public or default constructor.10
    VisibilityModifierVariable 'color' must be private and have accessor methods.14
     Error javadoc JavadocMethod Missing a Javadoc comment.12
    16
     Error misc FinalParametersParameter args should be final.12
    Parameter color should be final.16
     ErrorwhitespaceWhitespaceAfter',' is not followed by whitespace.14
    codingHiddenField'color' hides a field.16
     Error whitespaceWhitespaceAfter',' is not followed by whitespace.14
    -
    -

    org/laidu/learn/design/pattern/prototype/Person.java

    - + + + - - - - - + + + + + - - - - + + + + - + - + - + - - - -
    WhitespaceAround'{' is not preceded with whitespace.16
    SeverityCategoryRuleMessageLine
     ErrorjavadocJavadocTypeMissing a Javadoc comment.20
     ErrormiscNewlineAtEndOfFileFile does not end with a newline.
    whitespaceWhitespaceAround'{' is not preceded with whitespace.20
     Error javadoc JavadocVariable Missing a Javadoc comment.16
    22
     Error javadoc JavadocVariable Missing a Javadoc comment.17
    23
     Error javadoc JavadocVariable Missing a Javadoc comment.18
    24
     ErrordesignDesignForExtensionMethod 'clone' is not designed for extension - needs to be abstract, final or empty.20
    +javadoc +JavadocVariable +Missing a Javadoc comment. +25
    -

    org/laidu/learn/design/pattern/prototype/package-info.java

    +

    org/laidu/learn/design/pattern/factory/Client.java

    @@ -19296,33 +19960,84 @@

    org/laidu/le

    + + + + + + + + + + + + - - -
    SeverityLine
     ErrordesignHideUtilityClassConstructorUtility classes should not have a public or default constructor.10
     ErrorjavadocJavadocMethodMissing a Javadoc comment.13
     Error miscNewlineAtEndOfFileFile does not end with a newline.
    +FinalParameters +Parameter args should be final. +13 + + Error +sizes +LineLength +Line is longer than 80 characters (found 88). +15 + + Error +sizes +LineLength +Line is longer than 80 characters (found 87). +17 + + Error +sizes +LineLength +Line is longer than 80 characters (found 92). +19
    -

    org/laidu/learn/design/pattern/proxy/AbstractSubject.java

    +

    org/laidu/learn/design/pattern/factory/ConcreteBlueProcductFactory.java

    - + + + + + + + - - - - + + + +
    Severity Category Rule Message Line
     ErrorwhitespaceWhitespaceAround'{' is not preceded with whitespace.13
     ErrorjavadocJavadocStyleFirst sentence should end with a period.3
    designDesignForExtensionMethod 'createProduct' is not designed for extension - needs to be abstract, final or empty.15
    +
    +

    org/laidu/learn/design/pattern/factory/ConcreteBlueProduct.java

    + + + + + + + -
    SeverityCategoryRuleMessageLine
     Error javadoc JavadocMethod Missing a Javadoc comment.11
    +13 + + Error +regexp +RegexpSingleline +Line has trailing spaces. +14
    -

    org/laidu/learn/design/pattern/proxy/Client.java

    +

    org/laidu/learn/design/pattern/factory/ConcreteRedProcductFactory.java

    @@ -19332,48 +20047,69 @@

    org/laidu/learn/design

    - - - - + + + + - - - + + +
    SeverityLine
     ErrorjavadocJavadocStyleFirst sentence should end with a period.5
    whitespaceWhitespaceAround'{' is not preceded with whitespace.13
     Error designHideUtilityClassConstructorUtility classes should not have a public or default constructor.11
    DesignForExtensionMethod 'createProduct' is not designed for extension - needs to be abstract, final or empty.15
    +
    +

    org/laidu/learn/design/pattern/factory/ConcreteRedProduct.java

    + + + + + + + - + - +
    SeverityCategoryRuleMessageLine
     Error javadocJavadocVariableJavadocMethod Missing a Javadoc comment.14
    13
    +
    +

    org/laidu/learn/design/pattern/factory/ConcreteYellowProcductFactory.java

    + + + + + + + - - - - + + + +
    SeverityCategoryRuleMessageLine
     ErrormodifierModifierOrder'static' modifier out of order with the JLS suggestions.14
    designDesignForExtensionMethod 'createProduct' is not designed for extension - needs to be abstract, final or empty.15
    +
    +

    org/laidu/learn/design/pattern/factory/ConcreteYellowProduct.java

    + - - - - - + + + + + - + - - - -
     ErrornamingConstantNameName 'proxy' must match pattern '^[A-Z][A-Z0-9]*(_[A-Z0-9]+)*$'.14
    SeverityCategoryRuleMessageLine
     Error javadoc JavadocMethod Missing a Javadoc comment.16
    13
     ErrormiscFinalParametersParameter args should be final.16
    +regexp +RegexpSingleline +Line has trailing spaces. +14
    -

    org/laidu/learn/design/pattern/proxy/ConcreteSubject.java

    +

    org/laidu/learn/design/pattern/factory/package-info.java

    @@ -19383,48 +20119,51 @@

    org/laidu/lea

    - - - - + + + +
    SeverityLine
     ErrorjavadocJavadocStyleFirst sentence should end with a period.5
    miscNewlineAtEndOfFileFile does not end with a newline.
    +
    +

    org/laidu/learn/design/pattern/iterator/Aggregate.java

    + - - - - - + + + + + - - - - + + + + - - - - + + + + - - - - + + + + - - - + + + - - -
     ErrorwhitespaceWhitespaceAround'{' is not preceded with whitespace.12
    SeverityCategoryRuleMessageLine
     ErrordesignDesignForExtensionMethod 'request' is not designed for extension - needs to be abstract, final or empty.14
    miscNewlineAtEndOfFileFile does not end with a newline.
     ErrorjavadocJavadocMethodMissing a Javadoc comment.14
    importsUnusedImportsUnused import - java.util.List.4
     ErrormiscFinalParametersParameter name should be final.14
    javadocJavadocStyleFirst sentence should end with a period.6
     Error whitespaceWhitespaceAround'{' is not preceded with whitespace.14
    GenericWhitespace'>' is followed by an illegal character.12
     Error whitespaceWhitespaceAfter',' is not followed by whitespace.15
    +WhitespaceAround +'{' is not preceded with whitespace. +12
    -

    org/laidu/learn/design/pattern/proxy/ProxySubject.java

    +

    org/laidu/learn/design/pattern/iterator/ConcreteAggregate.java

    @@ -19434,72 +20173,72 @@

    org/laidu/learn/

    - - - - + + + + - - - + + + - - - + + + - - - - + + + + - - - - + + + + - + - + - - - - + + + + - - - - + + + + - - - - - - - - + + + + + + + + - - - -
    SeverityLine
     ErrorjavadocJavadocStyleFirst sentence should end with a period.5
    miscNewlineAtEndOfFileFile does not end with a newline.
     Error javadocJavadocVariableMissing a Javadoc comment.14
    JavadocStyleFirst sentence should end with a period.7
     Error javadocJavadocMethodMissing a Javadoc comment.16
    JavadocTypeType Javadoc comment is missing an @param <E> tag.14
     ErrordesignDesignForExtensionMethod 'request' is not designed for extension - needs to be abstract, final or empty.20
    whitespaceGenericWhitespace'>' is followed by an illegal character.14
     ErrormiscFinalParametersParameter name should be final.21
    whitespaceWhitespaceAround'{' is not preceded with whitespace.14
     Error javadocJavadocMethodJavadocVariable Missing a Javadoc comment.31
    16
     ErrormiscFinalParametersParameter name should be final.31
    designDesignForExtensionMethod 'createIterator' is not designed for extension - needs to be abstract, final or empty.18
     ErrorwhitespaceWhitespaceAfter',' is not followed by whitespace.32
    designDesignForExtensionMethod 'addItem' is not designed for extension - needs to be abstract, final or empty.23
     ErrorjavadocJavadocMethodMissing a Javadoc comment.35
     Error misc FinalParametersParameter name should be final.35
    Parameter e should be final.24
     ErrordesignDesignForExtensionMethod 'removeItem' is not designed for extension - needs to be abstract, final or empty.28
     ErrorwhitespaceWhitespaceAfter',' is not followed by whitespace.36
    +misc +FinalParameters +Parameter e should be final. +29
    -

    org/laidu/learn/design/pattern/proxy/package-info.java

    +

    org/laidu/learn/design/pattern/iterator/ConcreteIterator.java

    @@ -19516,92 +20255,131 @@

    org/laidu/learn/

    + + + + + + -
    Severity
     Error javadocJavadocPackageMissing package-info.java file.
     Errorjavadoc JavadocStyle First sentence should end with a period.1
    -
    -

    org/laidu/learn/design/pattern/simple/factory/AbstractProduct.java

    - + + + + + + + - - - - - + + + + + - + - - - + + + - - - - + + + + - - - - + + + + - - - - + + + +
    3
     ErrorjavadocJavadocTypeType Javadoc comment is missing an @param <E> tag.9
    SeverityCategoryRuleMessageLine
     ErrorjavadocJavadocVariableMissing a Javadoc comment.11
     Error javadoc JavadocVariable Missing a Javadoc comment.14
    13
     Error designVisibilityModifierVariable 'color' must be private and have accessor methods.14
    DesignForExtensionMethod 'first' is not designed for extension - needs to be abstract, final or empty.15
     ErrorjavadocJavadocMethodMissing a Javadoc comment.16
    designDesignForExtensionMethod 'next' is not designed for extension - needs to be abstract, final or empty.20
     ErrormiscFinalParametersParameter color should be final.16
    designDesignForExtensionMethod 'isDone' is not designed for extension - needs to be abstract, final or empty.25
     ErrorcodingHiddenField'color' hides a field.16
    designDesignForExtensionMethod 'currentItem' is not designed for extension - needs to be abstract, final or empty.30
    +
    +

    org/laidu/learn/design/pattern/iterator/Iterator.java

    + + + + + + + + + + + + + - - - - + + + + - - + + - - - - + + + + - - - + + + - - - + + + - - - + + +
    SeverityCategoryRuleMessageLine
     ErrormiscNewlineAtEndOfFileFile does not end with a newline.
     ErrorwhitespaceWhitespaceAround'{' is not preceded with whitespace.16
    javadocJavadocStyleFirst sentence should end with a period.3
     Error javadoc JavadocTypeMissing a Javadoc comment.20
    Type Javadoc comment is missing an @param <E> tag.9
     ErrorwhitespaceWhitespaceAround'{' is not preceded with whitespace.20
    javadocJavadocStyleFirst sentence should end with a period.11
     Error javadocJavadocVariableMissing a Javadoc comment.22
    JavadocStyleFirst sentence should end with a period.16
     Error javadocJavadocVariableMissing a Javadoc comment.23
    JavadocStyleFirst sentence should end with a period.22
     Error javadocJavadocVariableMissing a Javadoc comment.24
    JavadocStyleFirst sentence should end with a period.28
    +
    +

    org/laidu/learn/design/pattern/package-info.java

    + + + + + + + + + + + + + - + -
    SeverityCategoryRuleMessageLine
     ErrormiscNewlineAtEndOfFileFile does not end with a newline.
     Error javadocJavadocVariableJavadocStyle Missing a Javadoc comment.25
    +1
    -

    org/laidu/learn/design/pattern/simple/factory/Client.java

    +

    org/laidu/learn/design/pattern/prototype/Client.java

    @@ -19611,42 +20389,54 @@

    org/laidu/lea

    + + + + + + + + + + + + + + + + + + - + - - + + - - - - - - - + - - - - + + + + - - - -
    SeverityLine
     ErrormiscNewlineAtEndOfFileFile does not end with a newline.
     ErrorjavadocJavadocStyleFirst sentence should end with a period.3
     ErrorjavadocJavadocTypeUnknown tag 'date'.8
     Error design HideUtilityClassConstructor Utility classes should not have a public or default constructor. 10
     Error javadoc JavadocMethod Missing a Javadoc comment.13
    12
     Error misc FinalParameters Parameter args should be final.13
     ErrorsizesLineLengthLine is longer than 80 characters (found 92).15
    12
     ErrorsizesLineLengthLine is longer than 80 characters (found 90).17
    whitespaceWhitespaceAfter',' is not followed by whitespace.14
     ErrorsizesLineLengthLine is longer than 80 characters (found 96).19
    +whitespace +WhitespaceAfter +',' is not followed by whitespace. +14
    -

    org/laidu/learn/design/pattern/simple/factory/ConcreteBlueProduct.java

    +

    org/laidu/learn/design/pattern/prototype/Person.java

    @@ -19656,24 +20446,36 @@

    - - - - + + + + - + - + - - - -
    SeverityLine
     ErrorwhitespaceWhitespaceAround'{' is not preceded with whitespace.11
    miscNewlineAtEndOfFileFile does not end with a newline.
     Error javadocJavadocMethodJavadocVariable Missing a Javadoc comment.13
    16
     ErrorregexpRegexpSinglelineLine has trailing spaces.14
    +javadoc +JavadocVariable +Missing a Javadoc comment. +17 + + Error +javadoc +JavadocVariable +Missing a Javadoc comment. +18 + + Error +design +DesignForExtension +Method 'clone' is not designed for extension - needs to be abstract, final or empty. +20
    -

    org/laidu/learn/design/pattern/simple/factory/ConcreteRedProduct.java

    +

    org/laidu/learn/design/pattern/prototype/package-info.java

    @@ -19683,45 +20485,33 @@

    o

    - - - - - - - - - -
    SeverityLine
     ErrorwhitespaceWhitespaceAround'{' is not preceded with whitespace.11
     ErrorjavadocJavadocMethodMissing a Javadoc comment.13
    +misc +NewlineAtEndOfFile +File does not end with a newline. +
    -

    org/laidu/learn/design/pattern/simple/factory/ConcreteYellowProduct.java

    +

    org/laidu/learn/design/pattern/proxy/AbstractSubject.java

    - + - - - - - - - - - + + + - - - -
    Severity Category Rule Message Line
     ErrorwhitespaceWhitespaceAround'{' is not preceded with whitespace.11
     Error javadocJavadocMethodMissing a Javadoc comment.13
    JavadocStyleFirst sentence should end with a period.3
     ErrorregexpRegexpSinglelineLine has trailing spaces.14
    +javadoc +JavadocMethod +Missing a Javadoc comment. +11
    -

    org/laidu/learn/design/pattern/simple/factory/Factory.java

    +

    org/laidu/learn/design/pattern/proxy/Client.java

    @@ -19731,126 +20521,99 @@

    org/laidu/le

    + + + + + + - + + + + + + + - - - + + + + + + + + + - - + + - -
    SeverityLine
     ErrorjavadocJavadocStyleFirst sentence should end with a period.5
     Error design HideUtilityClassConstructor Utility classes should not have a public or default constructor.10
    11
     ErrorjavadocJavadocVariableMissing a Javadoc comment.14
     ErrorsizesLineLengthLine is longer than 80 characters (found 86).modifierModifierOrder'static' modifier out of order with the JLS suggestions. 14
     ErrornamingConstantNameName 'proxy' must match pattern '^[A-Z][A-Z0-9]*(_[A-Z0-9]+)*$'.14
     Error javadoc JavadocMethod Missing a Javadoc comment.14
    16
     Error misc FinalParametersParameter colorType should be final.14
    +Parameter args should be final. +16
    -

    org/laidu/learn/design/pattern/simple/factory/package-info.java

    +

    org/laidu/learn/design/pattern/proxy/ConcreteSubject.java

    - - - - - - - - - - -
    SeverityCategoryRuleMessageLine
     ErrormiscNewlineAtEndOfFileFile does not end with a newline.
    -
    -

    org/laidu/learn/design/pattern/singleton/EnumSingleton.java

    - - - + - - - - - - - - - - - - - + + + + + + + - + - - - - - - - - - - - - - - - - - - - - - - - - - - + + - - + + - - -
    Severity Category Rule Message Line
     Error javadoc JavadocStyle First sentence should end with a period. 5
     ErrorjavadocJavadocVariableMissing a Javadoc comment.14
     ErrorjavadocJavadocMethodMissing a Javadoc comment.16
     Error whitespace WhitespaceAround '{' is not preceded with whitespace.16
    12
     ErrordesignDesignForExtensionMethod 'request' is not designed for extension - needs to be abstract, final or empty.14
     Error javadoc JavadocMethod Missing a Javadoc comment.20
    14
     Error misc FinalParametersParameter args should be final.20
     ErrorwhitespaceWhitespaceAround'=' is not preceded with whitespace.22
     ErrorwhitespaceWhitespaceAround'=' is not followed by whitespace.22
     ErrorwhitespaceWhitespaceAround'<' is not preceded with whitespace.22
     ErrorcodingMagicNumber'1000' is a magic number.22
    Parameter name should be final.14
     Error whitespace WhitespaceAround'<' is not followed by whitespace.22
    '{' is not preceded with whitespace.14
     Error whitespaceWhitespaceAround'{' is not preceded with whitespace.22
    +WhitespaceAfter +',' is not followed by whitespace. +15
    -

    org/laidu/learn/design/pattern/singleton/InitializingOnDemandHolderIdiom.java

    +

    org/laidu/learn/design/pattern/proxy/ProxySubject.java

    @@ -19863,55 +20626,31 @@

    - - - - - - - - - - - - - + - - - - - - - - - - - - - + - - - - + + + + - - - - + + + + @@ -19922,46 +20661,34 @@

     Error

    - + - - - + + + - - - - - - - - - - - - - - - - + + + + - - - - + + + + - - -
    Severity ErrordesignFinalClassClass InitializingOnDemandHolderIdiom should be declared as final.13
     Error javadoc JavadocVariable Missing a Javadoc comment.16
     ErrorjavadocJavadocMethodMissing a Javadoc comment.18
    14
     Error javadoc JavadocMethod Missing a Javadoc comment.22
     ErrorjavadocJavadocTypeMissing a Javadoc comment.27
     ErrorwhitespaceWhitespaceAround'{' is not preceded with whitespace.27
    16
     ErrorsizesLineLengthLine is longer than 80 characters (found 111).28
    designDesignForExtensionMethod 'request' is not designed for extension - needs to be abstract, final or empty.20
     ErrorjavadocJavadocVariableMissing a Javadoc comment.28
    miscFinalParametersParameter name should be final.21
     Error javadocmisc FinalParametersParameter args should be final.Parameter name should be final. 31
     Error whitespaceWhitespaceAround'=' is not preceded with whitespace.33
    WhitespaceAfter',' is not followed by whitespace.32
     ErrorwhitespaceWhitespaceAround'=' is not followed by whitespace.33
     ErrorwhitespaceWhitespaceAround'<' is not preceded with whitespace.33
     ErrorcodingMagicNumber'1000' is a magic number.33
    javadocJavadocMethodMissing a Javadoc comment.35
     ErrorwhitespaceWhitespaceAround'<' is not followed by whitespace.33
    miscFinalParametersParameter name should be final.35
     Error whitespaceWhitespaceAround'{' is not preceded with whitespace.33
    +WhitespaceAfter +',' is not followed by whitespace. +36
    -

    org/laidu/learn/design/pattern/singleton/Singleton.java

    +

    org/laidu/learn/design/pattern/proxy/package-info.java

    @@ -19971,162 +20698,171 @@

    org/laidu/learn

    + + + + + + - - - - - - - +
    SeverityLine
     ErrormiscNewlineAtEndOfFileFile does not end with a newline.
     Error javadoc JavadocStyle First sentence should end with a period.7
     ErrordesignFinalClassClass Singleton should be declared as final.13
    1
    +
    +

    org/laidu/learn/design/pattern/simple/factory/AbstractProduct.java

    + - - - - - + + + + + - - - - - - - - - - - - - + - - - - + + + + - + - - - - + + + + + + + + + + - - - - - - - + - + - - - - + + + + - + - + - + - - - - + + + + - - - - + + + +
     ErrorjavadocJavadocVariableMissing a Javadoc comment.16
    SeverityCategoryRuleMessageLine
     ErrornamingConstantNameName 'ourInstance' must match pattern '^[A-Z][A-Z0-9]*(_[A-Z0-9]+)*$'.16
     Error javadoc JavadocVariable Missing a Javadoc comment.18
     ErrornamingMemberNameName 'class_a' must match pattern '^[a-z][a-zA-Z0-9]*$'.18
    14
     ErrorjavadocJavadocMethodMissing a Javadoc comment.20
    designVisibilityModifierVariable 'color' must be private and have accessor methods.14
     Error javadoc JavadocMethod Missing a Javadoc comment.24
    16
     ErrorjavadocJavadocMethodMissing a Javadoc comment.30
    miscFinalParametersParameter color should be final.16
     ErrorcodingHiddenField'color' hides a field.16
     Error whitespace WhitespaceAround '{' is not preceded with whitespace.30
     ErrorsizesLineLengthLine is longer than 80 characters (found 93).35
    16
     Error javadoc JavadocType Missing a Javadoc comment.39
    20
     ErrornamingTypeNameName 'Class_A' must match pattern '^[A-Z][a-zA-Z0-9]*$'.39
    whitespaceWhitespaceAround'{' is not preceded with whitespace.20
     Error javadoc JavadocVariable Missing a Javadoc comment.40
    22
     Error javadocJavadocMethodJavadocVariable Missing a Javadoc comment.43
    23
     ErrormodifierRedundantModifierRedundant 'public' modifier.43
    javadocJavadocVariableMissing a Javadoc comment.24
     ErrormiscFinalParametersParameter value should be final.43
    javadocJavadocVariableMissing a Javadoc comment.25
    +
    +

    org/laidu/learn/design/pattern/simple/factory/Client.java

    + - - - - - + + + + + + + + + + + - - + + - - - - - - - + - - - - + + + + - - - - + + + + - - - - + + + +
     ErrorcodingHiddenField'value' hides a field.43
    SeverityCategoryRuleMessageLine
     ErrordesignHideUtilityClassConstructorUtility classes should not have a public or default constructor.10
     Error javadoc JavadocMethod Missing a Javadoc comment.58
    13
     Error misc FinalParameters Parameter args should be final.58
     ErrorwhitespaceWhitespaceAround'=' is not preceded with whitespace.60
    13
     ErrorwhitespaceWhitespaceAround'=' is not followed by whitespace.60
    sizesLineLengthLine is longer than 80 characters (found 92).15
     ErrorwhitespaceWhitespaceAround'<' is not preceded with whitespace.60
    sizesLineLengthLine is longer than 80 characters (found 90).17
     ErrorcodingMagicNumber'1000' is a magic number.60
    sizesLineLengthLine is longer than 80 characters (found 96).19
    +
    +

    org/laidu/learn/design/pattern/simple/factory/ConcreteBlueProduct.java

    + - - - - - + + + + + -
     ErrorwhitespaceWhitespaceAround'<' is not followed by whitespace.60
    SeverityCategoryRuleMessageLine
     Error whitespace WhitespaceAround '{' is not preceded with whitespace.60
    +11 + + Error +javadoc +JavadocMethod +Missing a Javadoc comment. +13 + + Error +regexp +RegexpSingleline +Line has trailing spaces. +14
    -

    org/laidu/learn/design/pattern/singleton/ThreadSafeDoubleCheckLocking.java

    +

    org/laidu/learn/design/pattern/simple/factory/ConcreteRedProduct.java

    @@ -20136,102 +20872,174 @@

    - - - - + + + + - - - - - - - + - +
    Severity ErrorjavadocJavadocStyleFirst sentence should end with a period.7
    whitespaceWhitespaceAround'{' is not preceded with whitespace.11
     ErrordesignFinalClassClass ThreadSafeDoubleCheckLocking should be declared as final.13
     Error javadocJavadocVariableJavadocMethod Missing a Javadoc comment.16
    13
    +
    +

    org/laidu/learn/design/pattern/simple/factory/ConcreteYellowProduct.java

    + + + + + + + - - - - + + + + - + - - - - + + + +
    SeverityCategoryRuleMessageLine
     ErrorjavadocJavadocVariableMissing a Javadoc comment.18
    whitespaceWhitespaceAround'{' is not preceded with whitespace.11
     Error javadoc JavadocMethod Missing a Javadoc comment.20
    13
     ErrorwhitespaceWhitespaceAround'{' is not preceded with whitespace.22
    regexpRegexpSinglelineLine has trailing spaces.14
    +
    +

    org/laidu/learn/design/pattern/simple/factory/Factory.java

    + + + + + + + + + + + + + - - - - + + + + - + + + + + + +
    SeverityCategoryRuleMessageLine
     ErrordesignHideUtilityClassConstructorUtility classes should not have a public or default constructor.10
     ErrorwhitespaceWhitespaceAround'{' is not preceded with whitespace.23
    sizesLineLengthLine is longer than 80 characters (found 86).14
     Error javadoc JavadocMethod Missing a Javadoc comment.32
    14
     ErrormiscFinalParametersParameter colorType should be final.14
    +
    +

    org/laidu/learn/design/pattern/simple/factory/package-info.java

    + + + + + + + + + + + + +
    SeverityCategoryRuleMessageLine
     ErrormiscNewlineAtEndOfFileFile does not end with a newline.
    +
    +

    org/laidu/learn/design/pattern/singleton/EnumSingleton.java

    + + + + + + + + + + + + + + + + + + + - + + + + + + + + + + + + + - + - + - + - + - + - + -
    SeverityCategoryRuleMessageLine
     ErrorjavadocJavadocStyleFirst sentence should end with a period.5
     ErrorjavadocJavadocVariableMissing a Javadoc comment.14
     Error javadoc JavadocMethod Missing a Javadoc comment.37
    16
     ErrorwhitespaceWhitespaceAround'{' is not preceded with whitespace.16
     ErrorjavadocJavadocMethodMissing a Javadoc comment.20
     Error misc FinalParameters Parameter args should be final.37
    20
     Error whitespace WhitespaceAround '=' is not preceded with whitespace.39
    22
     Error whitespace WhitespaceAround '=' is not followed by whitespace.39
    22
     Error whitespace WhitespaceAround '<' is not preceded with whitespace.39
    22
     Error coding MagicNumber '1000' is a magic number.39
    22
     Error whitespace WhitespaceAround '<' is not followed by whitespace.39
    22
     Error whitespace WhitespaceAround '{' is not preceded with whitespace.39
    +22
    -

    org/laidu/learn/design/pattern/singleton/ThreadSafeLazyLoadSyncSingleton.java

    +

    org/laidu/learn/design/pattern/singleton/InitializingOnDemandHolderIdiom.java

    @@ -20249,7 +21057,7 @@

     Error

    - + @@ -20260,7 +21068,7 @@

    - + @@ -20268,124 +21076,112 @@

    -

    - - - - - - - - - - + - + - + - - - - - - - - - - - - - - + + - + - + + + + + + + - - + + - - + + - - + + - - + + - - + + - - + + -
    Severitydesign FinalClassClass ThreadSafeLazyLoadSyncSingleton should be declared as final.Class InitializingOnDemandHolderIdiom should be declared as final. 13
     Error Error javadocJavadocVariableJavadocMethod Missing a Javadoc comment. 18
     ErrorsizesLineLengthLine is longer than 80 characters (found 89). 22
     ErrorjavadocJavadocMethodMissing a Javadoc comment.27
     Error javadocJavadocMethodJavadocType Missing a Javadoc comment.32
    27
     Error whitespace WhitespaceAround '{' is not preceded with whitespace.32
    27
     ErrorcodingMagicNumber'200' is a magic number.34
     Error sizes LineLengthLine is longer than 80 characters (found 88).38
     ErrorwhitespaceWhitespaceAfter',' is not followed by whitespace.38
    Line is longer than 80 characters (found 111).28
     Error javadocJavadocMethodJavadocVariable Missing a Javadoc comment.41
    28
     ErrorjavadocJavadocMethodMissing a Javadoc comment.31
     Error misc FinalParameters Parameter args should be final.41
    31
     Error whitespace WhitespaceAround '=' is not preceded with whitespace.43
    33
     Error whitespace WhitespaceAround '=' is not followed by whitespace.43
    33
     Error whitespace WhitespaceAround '<' is not preceded with whitespace.43
    33
     Error coding MagicNumber '1000' is a magic number.43
    33
     Error whitespace WhitespaceAround '<' is not followed by whitespace.43
    33
     Error whitespace WhitespaceAround '{' is not preceded with whitespace.43
    +33
    -

    org/laidu/learn/design/pattern/singleton/ThreadUnSafeLazyLoadSingleton.java

    +

    org/laidu/learn/design/pattern/singleton/Singleton.java

    - + - + - + - + - + + + + + + + @@ -20394,354 +21190,366 @@

    + + + + + + - + - - - - - - - + - - - - - - - - - - - - - + - - + + - - - - + + + + - - - - + + + + - - - - + + + + - - - -
    Severity Category Rule Message Line
     Error javadoc JavadocStyle First sentence should end with a period. 7
     Error design FinalClassClass ThreadUnSafeLazyLoadSingleton should be declared as final.Class Singleton should be declared as final. 13
     Error javadoc JavadocVariable Missing a Javadoc comment. 16
     ErrornamingConstantNameName 'ourInstance' must match pattern '^[A-Z][A-Z0-9]*(_[A-Z0-9]+)*$'.16
     Error javadoc ErrornamingMemberNameName 'class_a' must match pattern '^[a-z][a-zA-Z0-9]*$'.18
     Error javadoc JavadocMethod Missing a Javadoc comment. 20
     Error javadoc JavadocMethod Missing a Javadoc comment.28
     ErrorsizesLineLengthLine is longer than 80 characters (found 118).29
    24
     Error javadoc JavadocMethod Missing a Javadoc comment.34
     ErrormiscFinalParametersParameter args should be final.34
     ErrorwhitespaceWhitespaceAround'=' is not preceded with whitespace.36
    30
     Error whitespace WhitespaceAround'=' is not followed by whitespace.36
    '{' is not preceded with whitespace.30
     ErrorwhitespaceWhitespaceAround'<' is not preceded with whitespace.36
    sizesLineLengthLine is longer than 80 characters (found 93).35
     ErrorcodingMagicNumber'1000' is a magic number.36
    javadocJavadocTypeMissing a Javadoc comment.39
     ErrorwhitespaceWhitespaceAround'<' is not followed by whitespace.36
    namingTypeNameName 'Class_A' must match pattern '^[A-Z][a-zA-Z0-9]*$'.39
     ErrorwhitespaceWhitespaceAround'{' is not preceded with whitespace.36
    -
    -

    org/laidu/learn/design/pattern/singleton/package-info.java

    - + + + + - - - - - + + + + + + + + + + + - - - + + + + + + + + + - - -
    javadocJavadocVariableMissing a Javadoc comment.40
    SeverityCategoryRuleMessageLine
     ErrorjavadocJavadocMethodMissing a Javadoc comment.43
     ErrormodifierRedundantModifierRedundant 'public' modifier.43
     Error miscNewlineAtEndOfFileFile does not end with a newline.
    FinalParametersParameter value should be final.43
     ErrorcodingHiddenField'value' hides a field.43
     Error javadocJavadocStyleFirst sentence should end with a period.1
    -
    -

    org/laidu/learn/design/pattern/strategy/package-info.java

    - + + + - - - - - - - - -
    JavadocMethodMissing a Javadoc comment.58
    SeverityCategoryRuleMessageLine
     Error miscNewlineAtEndOfFileFile does not end with a newline.
    -
    -

    org/laidu/learn/design/pattern/template/package-info.java

    - + + + + + + + + + - - - - - + + + + + - - - -
    FinalParametersParameter args should be final.58
     ErrorwhitespaceWhitespaceAround'=' is not preceded with whitespace.60
    SeverityCategoryRuleMessageLine
     ErrorwhitespaceWhitespaceAround'=' is not followed by whitespace.60
     ErrormiscNewlineAtEndOfFileFile does not end with a newline.
    +whitespace +WhitespaceAround +'<' is not preceded with whitespace. +60 + + Error +coding +MagicNumber +'1000' is a magic number. +60 + + Error +whitespace +WhitespaceAround +'<' is not followed by whitespace. +60 + + Error +whitespace +WhitespaceAround +'{' is not preceded with whitespace. +60
    -

    org/laidu/learn/design/pattern/uml/Class_A.java

    +

    org/laidu/learn/design/pattern/singleton/ThreadSafeDoubleCheckLocking.java

    - + - + - - - - - - - + + + + + + + - - - - - - - + - - - - - - - - - - - - - + - + - + - - - - + + + + - - - - + + + + - + - - - - - - - - - - - - - + - + - + - - - - + + + + - - - - + + + + - - - - + + + + - - - - + + + + - - - - + + + + - - - - + + + + - - - - - - -
    Severity Category Rule Message Line
     Error javadoc JavadocStyle First sentence should end with a period.3
     ErrornamingTypeNameName 'Class_A' must match pattern '^[A-Z][a-zA-Z0-9]*$'.8
    7
     ErrordesignFinalClassClass ThreadSafeDoubleCheckLocking should be declared as final.13
     Error javadoc JavadocVariable Missing a Javadoc comment.10
     ErrornamingMemberNameName 'attribute_private' must match pattern '^[a-z][a-zA-Z0-9]*$'.10
    16
     Error javadoc JavadocVariable Missing a Javadoc comment.11
     ErrornamingMemberNameName 'attribute_default' must match pattern '^[a-z][a-zA-Z0-9]*$'.11
     ErrordesignVisibilityModifierVariable 'attribute_default' must be private and have accessor methods.11
    18
     Error javadocJavadocVariableJavadocMethod Missing a Javadoc comment.12
    20
     ErrornamingMemberNameName 'attribute_protected' must match pattern '^[a-z][a-zA-Z0-9]*$'.12
    whitespaceWhitespaceAround'{' is not preceded with whitespace.22
     ErrordesignVisibilityModifierVariable 'attribute_protected' must be private and have accessor methods.12
    whitespaceWhitespaceAround'{' is not preceded with whitespace.23
     Error javadocJavadocVariableJavadocMethod Missing a Javadoc comment.13
     ErrornamingMemberNameName 'attribute_public' must match pattern '^[a-z][a-zA-Z0-9]*$'.13
     ErrordesignVisibilityModifierVariable 'attribute_public' must be private and have accessor methods.13
    32
     Error javadocJavadocVariableJavadocMethod Missing a Javadoc comment.14
    37
     ErrornamingStaticVariableNameName 'attribute_static' must match pattern '^[a-z][a-zA-Z0-9]*$'.14
    miscFinalParametersParameter args should be final.37
     ErrordesignVisibilityModifierVariable 'attribute_static' must be private and have accessor methods.14
    whitespaceWhitespaceAround'=' is not preceded with whitespace.39
     ErrorjavadocJavadocVariableMissing a Javadoc comment.15
    whitespaceWhitespaceAround'=' is not followed by whitespace.39
     ErrornamingMemberNameName 'attribute_final' must match pattern '^[a-z][a-zA-Z0-9]*$'.15
    whitespaceWhitespaceAround'<' is not preceded with whitespace.39
     ErrordesignVisibilityModifierVariable 'attribute_final' must be private and have accessor methods.15
    codingMagicNumber'1000' is a magic number.39
     ErrordesignDesignForExtensionMethod 'sayHello' is not designed for extension - needs to be abstract, final or empty.17
    whitespaceWhitespaceAround'<' is not followed by whitespace.39
     ErrorjavadocJavadocMethodMissing a Javadoc comment.17
     Error whitespace WhitespaceAround '{' is not preceded with whitespace.17
    +39
    -

    org/laidu/learn/design/pattern/uml/Class_B.java

    +

    org/laidu/learn/design/pattern/singleton/ThreadSafeLazyLoadSyncSingleton.java

    - + - + - - - - - - - + + + + + + + - + + + + + + + - - - -
    Severity Category Rule Message Line
     Error javadoc JavadocStyle First sentence should end with a period.3
     ErrornamingTypeNameName 'Class_B' must match pattern '^[A-Z][a-zA-Z0-9]*$'.8
    7
     ErrordesignFinalClassClass ThreadSafeLazyLoadSyncSingleton should be declared as final.13
     Error javadoc JavadocVariable Missing a Javadoc comment.10
    16
     ErrorjavadocJavadocVariableMissing a Javadoc comment.18
     ErrornamingMemberNameName 'class_a' must match pattern '^[a-z][a-zA-Z0-9]*$'.10
    -
    -

    org/laidu/learn/design/pattern/uml/Class_C.java

    - + + + + - - - - - + + + + + - - - + + + - - - - + + + + - + - - - - + + + + + + + + + + + + + + + + - + - - + + - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + -
    javadocJavadocMethodMissing a Javadoc comment.20
    SeverityCategoryRuleMessageLine
     ErrorsizesLineLengthLine is longer than 80 characters (found 89).22
     Error javadocJavadocStyleFirst sentence should end with a period.3
    JavadocMethodMissing a Javadoc comment.27
     ErrornamingTypeNameName 'Class_C' must match pattern '^[A-Z][a-zA-Z0-9]*$'.8
    javadocJavadocMethodMissing a Javadoc comment.32
     Error whitespace WhitespaceAround '{' is not preceded with whitespace.8
    32
     ErrordesignDesignForExtensionMethod 'dependency' is not designed for extension - needs to be abstract, final or empty.10
    codingMagicNumber'200' is a magic number.34
     ErrorsizesLineLengthLine is longer than 80 characters (found 88).38
     ErrorwhitespaceWhitespaceAfter',' is not followed by whitespace.38
     Error javadoc JavadocMethod Missing a Javadoc comment.10
    41
     Error misc FinalParametersParameter class_b should be final.10
    Parameter args should be final.41
     ErrornamingParameterNameName 'class_b' must match pattern '^[a-z][a-zA-Z0-9]*$'.10
    whitespaceWhitespaceAround'=' is not preceded with whitespace.43
     ErrorwhitespaceWhitespaceAround'=' is not followed by whitespace.43
     ErrorwhitespaceWhitespaceAround'<' is not preceded with whitespace.43
     ErrorcodingMagicNumber'1000' is a magic number.43
     ErrorwhitespaceWhitespaceAround'<' is not followed by whitespace.43
     Error whitespace WhitespaceAround '{' is not preceded with whitespace.10
    +43
    -

    org/laidu/learn/design/pattern/uml/Heart.java

    +

    org/laidu/learn/design/pattern/singleton/ThreadUnSafeLazyLoadSingleton.java

    @@ -20754,126 +21562,129 @@

    org/laidu/learn/design/pa

    -
    Severityjavadoc JavadocStyle First sentence should end with a period.3
    -
    -

    org/laidu/learn/design/pattern/uml/Interface_A.java

    - + - - - - - + + + + + - - - + + + - - - -
    7
    SeverityCategoryRuleMessageLine
     ErrordesignFinalClassClass ThreadUnSafeLazyLoadSingleton should be declared as final.13
     Error javadocJavadocStyleFirst sentence should end with a period.3
    JavadocVariableMissing a Javadoc comment.16
     ErrornamingTypeNameName 'Interface_A' must match pattern '^[A-Z][a-zA-Z0-9]*$'.9
    -
    -

    org/laidu/learn/design/pattern/uml/Interface_A_Impl.java

    - + + + + - - - - - + + + + + - - - + + + - - - - + + + + + + + + + + + + + + + + - -
    javadocJavadocVariableMissing a Javadoc comment.18
    SeverityCategoryRuleMessageLine
     ErrorjavadocJavadocMethodMissing a Javadoc comment.20
     Error javadocJavadocStyleFirst sentence should end with a period.3
    JavadocMethodMissing a Javadoc comment.28
     ErrornamingTypeNameName 'Interface_A_Impl' must match pattern '^[A-Z][a-zA-Z0-9]*$'.9
    sizesLineLengthLine is longer than 80 characters (found 118).29
     ErrorjavadocJavadocMethodMissing a Javadoc comment.34
     ErrormiscFinalParametersParameter args should be final.34
     Error whitespace WhitespaceAround'{' is not preceded with whitespace.9
    -
    -

    org/laidu/learn/design/pattern/uml/Interface_B.java

    - + + - - - - - + + + + + - - - - + + + + - - - - + + + + + + + + + + -
    '=' is not preceded with whitespace.36
    SeverityCategoryRuleMessageLine
     ErrorwhitespaceWhitespaceAround'=' is not followed by whitespace.36
     ErrorjavadocJavadocStyleFirst sentence should end with a period.3
    whitespaceWhitespaceAround'<' is not preceded with whitespace.36
     ErrornamingTypeNameName 'Interface_B' must match pattern '^[A-Z][a-zA-Z0-9]*$'.8
    codingMagicNumber'1000' is a magic number.36
     Error whitespace WhitespaceAround'<' is not followed by whitespace.36
     ErrorwhitespaceWhitespaceAround '{' is not preceded with whitespace.8
    +36
    -

    org/laidu/learn/design/pattern/uml/Schoole.java

    +

    org/laidu/learn/design/pattern/singleton/package-info.java

    - + + + + + + + - - - - - - -
    Severity Category Rule Message Line
     ErrormiscNewlineAtEndOfFileFile does not end with a newline.
     Error javadoc JavadocStyle First sentence should end with a period.5
     ErrorjavadocJavadocVariableMissing a Javadoc comment.13
    +1
    -

    org/laidu/learn/design/pattern/uml/Student.java

    +

    org/laidu/learn/design/pattern/strategy/package-info.java

    - + - - - - - - - - - -
    Severity Category Rule Message Line
     ErrorjavadocJavadocStyleFirst sentence should end with a period.3
     ErrorjavadocJavadocVariableMissing a Javadoc comment.11
    -
    -

    org/laidu/learn/design/pattern/uml/package-info.java

    +misc +NewlineAtEndOfFile +File does not end with a newline. +
    +
    +

    org/laidu/learn/design/pattern/template/package-info.java

    @@ -20888,7 +21699,7 @@

    org/laidu/learn/de

    SeverityFile does not end with a newline.
    -

    org/laidu/learn/fastutil/package-info.java

    +

    org/laidu/learn/design/pattern/uml/Class_A.java

    @@ -20898,141 +21709,138 @@

    org/laidu/learn/fastutil/pac

    - - - - - - -
    SeverityLine
     ErrormiscNewlineAtEndOfFileFile does not end with a newline.
     Error javadoc JavadocStyle First sentence should end with a period.1
    -
    -

    org/laidu/learn/hadoop/hdfs/Ls.java

    - + + + + + + + - - - - - + + + + + - - - - + + + + - - - + + + - - - - + + + + - - - + + + - + - + - - - - + + + + - - - - + + + + - - - - + + + + - - - - + + + + - - - - + + + + - - - - + + + + - - - - + + + + - - - - + + + + - - - - + + + + - - - - + + + + - - - - + + + + - - - - + + + + - - - - + + + + - - -
    3
     ErrornamingTypeNameName 'Class_A' must match pattern '^[A-Z][a-zA-Z0-9]*$'.8
    SeverityCategoryRuleMessageLine
     ErrorjavadocJavadocVariableMissing a Javadoc comment.10
     ErrormiscNewlineAtEndOfFileFile does not end with a newline.
    namingMemberNameName 'attribute_private' must match pattern '^[a-z][a-zA-Z0-9]*$'.10
     Error javadocJavadocPackageMissing package-info.java file.
    JavadocVariableMissing a Javadoc comment.11
     ErrorsizesLineLengthLine is longer than 80 characters (found 127).6
    namingMemberNameName 'attribute_default' must match pattern '^[a-z][a-zA-Z0-9]*$'.11
     Error designHideUtilityClassConstructorUtility classes should not have a public or default constructor.16
    VisibilityModifierVariable 'attribute_default' must be private and have accessor methods.11
     Error javadocJavadocMethodJavadocVariable Missing a Javadoc comment.19
    12
     ErrormiscFinalParametersParameter args should be final.19
    namingMemberNameName 'attribute_protected' must match pattern '^[a-z][a-zA-Z0-9]*$'.12
     ErrorsizesLineLengthLine is longer than 80 characters (found 100).25
    designVisibilityModifierVariable 'attribute_protected' must be private and have accessor methods.12
     ErrorsizesLineLengthLine is longer than 80 characters (found 105).26
    javadocJavadocVariableMissing a Javadoc comment.13
     ErrorcodingAvoidInlineConditionalsAvoid inline conditionals.26
    namingMemberNameName 'attribute_public' must match pattern '^[a-z][a-zA-Z0-9]*$'.13
     ErrorsizesLineLengthLine is longer than 80 characters (found 88).29
    designVisibilityModifierVariable 'attribute_public' must be private and have accessor methods.13
     ErrorwhitespaceWhitespaceAfter',' is not followed by whitespace.34
    javadocJavadocVariableMissing a Javadoc comment.14
     ErrorwhitespaceNoWhitespaceBefore',' is preceded with whitespace.36
    namingStaticVariableNameName 'attribute_static' must match pattern '^[a-z][a-zA-Z0-9]*$'.14
     ErrorwhitespaceWhitespaceAfter',' is not followed by whitespace.36
    designVisibilityModifierVariable 'attribute_static' must be private and have accessor methods.14
     ErrorwhitespaceWhitespaceAfter',' is not followed by whitespace.38
    javadocJavadocVariableMissing a Javadoc comment.15
     ErrorwhitespaceWhitespaceAround'{' is not preceded with whitespace.44
    namingMemberNameName 'attribute_final' must match pattern '^[a-z][a-zA-Z0-9]*$'.15
     ErrorwhitespaceWhitespaceAfter',' is not followed by whitespace.46
    designVisibilityModifierVariable 'attribute_final' must be private and have accessor methods.15
     ErrorwhitespaceWhitespaceAfter',' is not followed by whitespace.47
    designDesignForExtensionMethod 'sayHello' is not designed for extension - needs to be abstract, final or empty.17
     ErrorwhitespaceWhitespaceAround'{' is not preceded with whitespace.50
    javadocJavadocMethodMissing a Javadoc comment.17
     Error whitespaceWhitespaceAfter',' is not followed by whitespace.51
    +WhitespaceAround +'{' is not preceded with whitespace. +17
    -

    org/laidu/learn/hadoop/mapreduce/WordCount.java

    +

    org/laidu/learn/design/pattern/uml/Class_B.java

    @@ -21042,189 +21850,219 @@

    org/laidu/learn/hadoop/

    - - - - + + + + - - - - + + + + - - - - + + + + + + + + + +
    SeverityLine
     ErrormiscNewlineAtEndOfFileFile does not end with a newline.
    javadocJavadocStyleFirst sentence should end with a period.3
     ErrorjavadocJavadocPackageMissing package-info.java file.
    namingTypeNameName 'Class_B' must match pattern '^[A-Z][a-zA-Z0-9]*$'.8
     ErrordesignHideUtilityClassConstructorUtility classes should not have a public or default constructor.22
    javadocJavadocVariableMissing a Javadoc comment.10
     ErrornamingMemberNameName 'class_a' must match pattern '^[a-z][a-zA-Z0-9]*$'.10
    +
    +

    org/laidu/learn/design/pattern/uml/Class_C.java

    + + + + + + + - - - + + + - - - - + + + + - + - - - - + + + + - - - - + + + + + + + + + + - - - - - - - - - + + + - - - - + + + +
    SeverityCategoryRuleMessageLine
     Error javadocJavadocTypeMissing a Javadoc comment.25
    JavadocStyleFirst sentence should end with a period.3
     ErrorwhitespaceGenericWhitespace'>' is followed by an illegal character.26
    namingTypeNameName 'Class_C' must match pattern '^[A-Z][a-zA-Z0-9]*$'.8
     Error whitespace WhitespaceAround '{' is not preceded with whitespace.26
    8
     ErrorjavadocJavadocVariableMissing a Javadoc comment.28
    designDesignForExtensionMethod 'dependency' is not designed for extension - needs to be abstract, final or empty.10
     ErrormodifierModifierOrder'static' modifier out of order with the JLS suggestions.28
    javadocJavadocMethodMissing a Javadoc comment.10
     ErrormiscFinalParametersParameter class_b should be final.10
     Error namingConstantNameName 'one' must match pattern '^[A-Z][A-Z0-9]*(_[A-Z0-9]+)*$'.28
     ErrorjavadocJavadocVariableMissing a Javadoc comment.29
    ParameterNameName 'class_b' must match pattern '^[a-z][a-zA-Z0-9]*$'.10
     ErrordesignDesignForExtensionMethod 'map' is not designed for extension - needs to be abstract, final or empty.31
    whitespaceWhitespaceAround'{' is not preceded with whitespace.10
    +
    +

    org/laidu/learn/design/pattern/uml/Heart.java

    + + + + + + + - - - + + +
    SeverityCategoryRuleMessageLine
     Error javadocJavadocMethodMissing a Javadoc comment.31
    JavadocStyleFirst sentence should end with a period.3
    +
    +

    org/laidu/learn/design/pattern/uml/Interface_A.java

    + + + + + + + - - - - + + + + - - - - + + + +
    SeverityCategoryRuleMessageLine
     ErrormiscFinalParametersParameter key should be final.31
    javadocJavadocStyleFirst sentence should end with a period.3
     ErrormiscFinalParametersParameter value should be final.31
    namingTypeNameName 'Interface_A' must match pattern '^[A-Z][a-zA-Z0-9]*$'.9
    +
    +

    org/laidu/learn/design/pattern/uml/Interface_A_Impl.java

    + - - - - - + + + + + - - - + + + - - - - + + + + - - - + + +
     ErrormiscFinalParametersParameter context should be final.31
    SeverityCategoryRuleMessageLine
     Error javadocJavadocTypeMissing a Javadoc comment.41
    JavadocStyleFirst sentence should end with a period.3
     ErrorwhitespaceWhitespaceAfter',' is not followed by whitespace.42
    namingTypeNameName 'Interface_A_Impl' must match pattern '^[A-Z][a-zA-Z0-9]*$'.9
     Error whitespaceWhitespaceAfter',' is not followed by whitespace.42
    WhitespaceAround'{' is not preceded with whitespace.9
    +
    +

    org/laidu/learn/design/pattern/uml/Interface_B.java

    + - - - - - + + + + + - - - + + + - - - - + + + + - - - - + + + +
     ErrorwhitespaceWhitespaceAfter',' is not followed by whitespace.42
    SeverityCategoryRuleMessageLine
     Error javadocJavadocVariableMissing a Javadoc comment.43
    JavadocStyleFirst sentence should end with a period.3
     ErrordesignDesignForExtensionMethod 'reduce' is not designed for extension - needs to be abstract, final or empty.45
    namingTypeNameName 'Interface_B' must match pattern '^[A-Z][a-zA-Z0-9]*$'.8
     ErrorjavadocJavadocMethodMissing a Javadoc comment.45
    whitespaceWhitespaceAround'{' is not preceded with whitespace.8
    +
    +

    org/laidu/learn/design/pattern/uml/Schoole.java

    + - - - - - + + + + + - - - - + + + + - - - - - - - + - - - - - - - - - - - - -
     ErrormiscFinalParametersParameter key should be final.45
    SeverityCategoryRuleMessageLine
     ErrormiscFinalParametersParameter values should be final.45
    javadocJavadocStyleFirst sentence should end with a period.5
     ErrormiscFinalParametersParameter context should be final.46
     Error javadocJavadocMethodJavadocVariable Missing a Javadoc comment.57
     ErrormiscFinalParametersParameter args should be final.57
     ErrorcodingAvoidInlineConditionalsAvoid inline conditionals.69
    +13
    -

    org/laidu/learn/hadoop/package-info.java

    +

    org/laidu/learn/design/pattern/uml/Student.java

    - + + + + + + + - - - -
    Severity Category Rule Message Line
     ErrorjavadocJavadocStyleFirst sentence should end with a period.3
     ErrormiscNewlineAtEndOfFileFile does not end with a newline.
    +javadoc +JavadocVariable +Missing a Javadoc comment. +11
    -

    org/laidu/learn/io/aio/package-info.java

    +

    org/laidu/learn/design/pattern/uml/package-info.java

    @@ -21239,7 +22077,7 @@

    org/laidu/learn/io/aio/package

    SeverityFile does not end with a newline.
    -

    org/laidu/learn/io/bio/package-info.java

    +

    org/laidu/learn/fastutil/package-info.java

    @@ -21252,483 +22090,507 @@

    org/laidu/learn/io/bio/package

    -
    Severitymisc NewlineAtEndOfFile File does not end with a newline.
    + + + Error +javadoc +JavadocStyle +First sentence should end with a period. +1
    -

    org/laidu/learn/io/nio/NioClient.java

    +

    org/laidu/learn/hadoop/hdfs/Ls.java

    - + - + - + - - - - + + + + - - - + + + - - - - + + + + - - - - - - - + - - + + - - + + - - - - + + + + - - - - + + + + - - - - + + + + - - - + + + + + + + + + + + + + + + - - - - + + + + - - - - + + + + - - - - + + + + - - - - + + + + - - - - + + + + - - - - + + + +
    Severity Category Rule Message Line
     Error misc NewlineAtEndOfFile File does not end with a newline.
     Error javadocJavadocVariableMissing a Javadoc comment.21
    JavadocPackageMissing package-info.java file.
     Error sizes LineLengthLine is longer than 80 characters (found 84).23
    Line is longer than 80 characters (found 127).6
     Error designDesignForExtensionMethod 'initClient' is not designed for extension - needs to be abstract, final or empty.23
    HideUtilityClassConstructorUtility classes should not have a public or default constructor.16
     Error javadoc JavadocMethod Missing a Javadoc comment.23
     ErrormiscFinalParametersParameter ip should be final.23
    19
     Error misc FinalParametersParameter port should be final.23
    Parameter args should be final.19
     Error sizes LineLengthLine is longer than 80 characters (found 82).26
    Line is longer than 80 characters (found 100).25
     ErrorjavadocJavadocStyleFirst sentence should end with a period.31
    sizesLineLengthLine is longer than 80 characters (found 105).26
     ErrorjavadocJavadocMethodUnable to get class information for @throws tag '//'.32
    codingAvoidInlineConditionalsAvoid inline conditionals.26
     ErrordesignDesignForExtensionMethod 'listen' is not designed for extension - needs to be abstract, final or empty.35
    sizesLineLengthLine is longer than 80 characters (found 88).29
     ErrorjavadocJavadocMethodExpected @throws tag for 'Exception'.whitespaceWhitespaceAfter',' is not followed by whitespace.34
     ErrorwhitespaceNoWhitespaceBefore',' is preceded with whitespace.36
     ErrorwhitespaceWhitespaceAfter',' is not followed by whitespace. 36
     ErrorsizesLineLengthLine is longer than 80 characters (found 90).47
    whitespaceWhitespaceAfter',' is not followed by whitespace.38
     ErrorsizesLineLengthLine is longer than 80 characters (found 91).53
    whitespaceWhitespaceAround'{' is not preceded with whitespace.44
     ErrorsizesLineLengthLine is longer than 80 characters (found 86).55
    whitespaceWhitespaceAfter',' is not followed by whitespace.46
     ErrorjavadocJavadocMethodMissing a Javadoc comment.63
    whitespaceWhitespaceAfter',' is not followed by whitespace.47
     ErrormiscFinalParametersParameter key should be final.63
    whitespaceWhitespaceAround'{' is not preceded with whitespace.50
     ErrorcodingMagicNumber'10' is a magic number.66
    whitespaceWhitespaceAfter',' is not followed by whitespace.51
    +
    +

    org/laidu/learn/hadoop/mapreduce/WordCount.java

    + + + + + + + + + + + + + - - - + + + - - - - + + + + - - - + + + + + + + + + + + + + + + - - - + + + - - - -
    SeverityCategoryRuleMessageLine
     ErrormiscNewlineAtEndOfFileFile does not end with a newline.
     Error javadocJavadocStyleFirst sentence should end with a period.76
    JavadocPackageMissing package-info.java file.
     ErrormiscFinalParametersParameter args should be final.80
    designHideUtilityClassConstructorUtility classes should not have a public or default constructor.22
     Error javadocJavadocMethodExpected @param tag for 'args'.80
    JavadocTypeMissing a Javadoc comment.25
     ErrorwhitespaceGenericWhitespace'>' is followed by an illegal character.26
     ErrorwhitespaceWhitespaceAround'{' is not preceded with whitespace.26
     Error javadocJavadocMethodExpected @throws tag for 'Exception'.80
    JavadocVariableMissing a Javadoc comment.28
     ErrorcodingMagicNumber'8080' is a magic number.82
    -
    -

    org/laidu/learn/io/nio/NioServer.java

    - + + + + - - - - - + + + + + - + - - + + - + - - + + - - - - + + + + - - - - + + + + - - - - + + + + - + - + - - - - + + + + - - - - + + + + - - - - + + + + - + - - + + - - + + + + + + + + - - + + - - + + - - -
    modifierModifierOrder'static' modifier out of order with the JLS suggestions.28
    SeverityCategoryRuleMessageLine
     ErrornamingConstantNameName 'one' must match pattern '^[A-Z][A-Z0-9]*(_[A-Z0-9]+)*$'.28
     Error javadoc JavadocVariable Missing a Javadoc comment.24
    29
     Error design DesignForExtensionMethod 'initServer' is not designed for extension - needs to be abstract, final or empty.26
    Method 'map' is not designed for extension - needs to be abstract, final or empty.31
     Error javadoc JavadocMethod Missing a Javadoc comment.26
    31
     Error misc FinalParametersParameter port should be final.26
    Parameter key should be final.31
     ErrordesignDesignForExtensionMethod 'listen' is not designed for extension - needs to be abstract, final or empty.39
    miscFinalParametersParameter value should be final.31
     ErrorjavadocJavadocMethodMissing a Javadoc comment.39
    miscFinalParametersParameter context should be final.31
     ErrorsizesLineLengthLine is longer than 80 characters (found 85).52
    javadocJavadocTypeMissing a Javadoc comment.41
     Error whitespace WhitespaceAfter ',' is not followed by whitespace.56
    42
     Error whitespace WhitespaceAfter ',' is not followed by whitespace.62
    42
     ErrorjavadocJavadocMethodMissing a Javadoc comment.70
    whitespaceWhitespaceAfter',' is not followed by whitespace.42
     ErrormiscFinalParametersParameter key should be final.70
    javadocJavadocVariableMissing a Javadoc comment.43
     ErrorcodingMagicNumber'10' is a magic number.74
    designDesignForExtensionMethod 'reduce' is not designed for extension - needs to be abstract, final or empty.45
     Error javadoc JavadocMethod Missing a Javadoc comment.84
    45
     Error misc FinalParametersParameter channel should be final.84
    Parameter key should be final.45
     Error misc FinalParametersParameter msg should be final.84
    Parameter values should be final.45
     ErrormiscFinalParametersParameter context should be final.46
     Error javadoc JavadocMethod Missing a Javadoc comment.95
    57
     Error misc FinalParameters Parameter args should be final.95
    57
     Error codingMagicNumber'8080' is a magic number.97
    +AvoidInlineConditionals +Avoid inline conditionals. +69
    -

    org/laidu/learn/io/nio/Worker.java

    +

    org/laidu/learn/hadoop/package-info.java

    - + - + - - - - + + + +
    Severity Category Rule Message Line
     ErrorimportsUnusedImportsUnused import - java.nio.Buffer.7
    miscNewlineAtEndOfFileFile does not end with a newline.
    +
    +

    org/laidu/learn/io/aio/package-info.java

    + + + + + + + - - - - + + + +
    SeverityCategoryRuleMessageLine
     ErrorimportsUnusedImportsUnused import - java.nio.IntBuffer.9
    miscNewlineAtEndOfFileFile does not end with a newline.
    +
    +

    org/laidu/learn/io/bio/package-info.java

    + + + + + + + - - - - + + + +
    SeverityCategoryRuleMessageLine
     ErrorwhitespaceWhitespaceAround'{' is not preceded with whitespace.19
    miscNewlineAtEndOfFileFile does not end with a newline.
    +
    +

    org/laidu/learn/io/nio/NioClient.java

    + + + + + + + + + + + + + + + + + + + - - - + + + - + - - - - - - - - - - - - - - + + - - - - - - - - - - - - - - - - - - - - - - - - - - + + - - - -
    SeverityCategoryRuleMessageLine
     ErrormiscNewlineAtEndOfFileFile does not end with a newline.
     Error javadoc JavadocVariable Missing a Javadoc comment. 21
     ErrorsizesLineLengthLine is longer than 80 characters (found 84).23
     ErrorjavadocJavadocVariableMissing a Javadoc comment.designDesignForExtensionMethod 'initClient' is not designed for extension - needs to be abstract, final or empty. 23
     Error javadoc JavadocMethod Missing a Javadoc comment.25
    23
     Error misc FinalParametersParameter channel should be final.25
     ErrorcodingHiddenField'channel' hides a field.25
     ErrorwhitespaceWhitespaceAfter',' is not followed by whitespace.25
    Parameter ip should be final.23
     Error misc FinalParametersParameter buffer should be final.25
     ErrorcodingHiddenField'buffer' hides a field.25
     ErrordesignDesignForExtensionMethod 'run' is not designed for extension - needs to be abstract, final or empty.30
     ErrorwhitespaceWhitespaceAround'==' is not preceded with whitespace.40
     ErrorwhitespaceWhitespaceAround'==' is not followed by whitespace.40
    Parameter port should be final.23
     ErrorwhitespaceWhitespaceAround'{' is not preceded with whitespace.40
    -
    -

    org/laidu/learn/io/nio/channel/BasicChannelExample.java

    - + + + + - - - - - - - - - - - - - - - + + + - - - + + + - - + + - - + + - - - - - - - - - - - - - - + + - - - - + + + + - - - - + + + + - + - -
    sizesLineLengthLine is longer than 80 characters (found 82).26
    SeverityCategoryRuleMessageLine
     Error javadocJavadocPackageMissing package-info.java file.
     ErrorimportsUnusedImportsUnused import - java.io.File.6
    JavadocStyleFirst sentence should end with a period.31
     Error javadocJavadocStyleFirst sentence should end with a period.21
    JavadocMethodUnable to get class information for @throws tag '//'.32
     Error design DesignForExtensionMethod 'fileChannelExa' is not designed for extension - needs to be abstract, final or empty.25
    Method 'listen' is not designed for extension - needs to be abstract, final or empty.35
     Error javadoc JavadocMethodExpected @throws tag for 'IOException'.25
    Expected @throws tag for 'Exception'.36
     Error sizes LineLengthLine is longer than 80 characters (found 112).27
     ErrorwhitespaceNoWhitespaceBefore',' is preceded with whitespace.28
     ErrorcodingMagicNumber'48' is a magic number.32
    Line is longer than 80 characters (found 90).47
     ErrorwhitespaceWhitespaceAround'while' is not followed by whitespace.40
    sizesLineLengthLine is longer than 80 characters (found 91).53
     ErrorwhitespaceWhitespaceAround'{' is not preceded with whitespace.40
    sizesLineLengthLine is longer than 80 characters (found 86).55
     Error javadoc JavadocMethod Missing a Javadoc comment.50
    63
     Error misc FinalParametersParameter args should be final.50
    -
    -

    org/laidu/learn/io/nio/package-info.java

    - + + - - - - - + + + + + + + + + + + - - -
    Parameter key should be final.63
    SeverityCategoryRuleMessageLine
     ErrorcodingMagicNumber'10' is a magic number.66
     ErrorjavadocJavadocStyleFirst sentence should end with a period.76
     Error miscNewlineAtEndOfFileFile does not end with a newline.
    -
    -

    org/laidu/learn/io/package-info.java

    - + + + + + + + + + - - - - - + + + + + - - - -
    FinalParametersParameter args should be final.80
     ErrorjavadocJavadocMethodExpected @param tag for 'args'.80
    SeverityCategoryRuleMessageLine
     ErrorjavadocJavadocMethodExpected @throws tag for 'Exception'.80
     ErrormiscNewlineAtEndOfFileFile does not end with a newline.
    +coding +MagicNumber +'8080' is a magic number. +82
    -

    org/laidu/learn/jvm/Test.java

    +

    org/laidu/learn/io/nio/NioServer.java

    @@ -21738,84 +22600,114 @@

    org/laidu/learn/jvm/Test.java

    - - - - - - - + - + + + + + + + + + + + + + - -
    Severity Line
     ErrordesignHideUtilityClassConstructorUtility classes should not have a public or default constructor.11
     Error javadocJavadocMethodJavadocVariable Missing a Javadoc comment.13
    24
     ErrordesignDesignForExtensionMethod 'initServer' is not designed for extension - needs to be abstract, final or empty.26
     ErrorjavadocJavadocMethodMissing a Javadoc comment.26
     Error misc FinalParametersParameter args should be final.13
    -
    -

    org/laidu/learn/jvm/package-info.java

    - + + + + + + + + - - - - - + + + + + - - - -
    Parameter port should be final.26
     ErrordesignDesignForExtensionMethod 'listen' is not designed for extension - needs to be abstract, final or empty.39
    SeverityCategoryRuleMessageLine
     ErrorjavadocJavadocMethodMissing a Javadoc comment.39
     ErrormiscNewlineAtEndOfFileFile does not end with a newline.
    -
    -

    org/laidu/learn/language/feature/boxed/BasicDataType.java

    - + + + + - - - - - + + + + + + + + + + + - - - + + + + + + + + + - - - - + + + + - + - - + + - - - - + + + + - - - -
    sizesLineLengthLine is longer than 80 characters (found 85).52
    SeverityCategoryRuleMessageLine
     ErrorwhitespaceWhitespaceAfter',' is not followed by whitespace.56
     ErrorwhitespaceWhitespaceAfter',' is not followed by whitespace.62
     Error javadocJavadocStyleFirst sentence should end with a period.5
    JavadocMethodMissing a Javadoc comment.70
     ErrormiscFinalParametersParameter key should be final.70
     ErrordesignHideUtilityClassConstructorUtility classes should not have a public or default constructor.11
    codingMagicNumber'10' is a magic number.74
     Error javadoc JavadocMethod Missing a Javadoc comment.14
    84
     Error misc FinalParametersParameter args should be final.14
    Parameter channel should be final.84
     ErrorsizesLineLengthLine is longer than 80 characters (found 93).69
    miscFinalParametersParameter msg should be final.84
     ErrorsizesLineLengthLine is longer than 80 characters (found 93).71
    +javadoc +JavadocMethod +Missing a Javadoc comment. +95 + + Error +misc +FinalParameters +Parameter args should be final. +95 + + Error +coding +MagicNumber +'8080' is a magic number. +97
    -

    org/laidu/learn/language/feature/boxed/Boxing.java

    +

    org/laidu/learn/io/nio/Worker.java

    @@ -21825,933 +22717,4218 @@

    org/laidu/learn/lang

    - - - - + + + + - - - + + + + + + + + + + + + + + + + + + + + + - + + + + + + + + + + + + + + + + + + + - - + + - - -
    SeverityLine
     ErrorjavadocJavadocStyleFirst sentence should end with a period.3
    importsUnusedImportsUnused import - java.nio.Buffer.7
     ErrordesignHideUtilityClassConstructorUtility classes should not have a public or default constructor.importsUnusedImportsUnused import - java.nio.IntBuffer. 9
     ErrorwhitespaceWhitespaceAround'{' is not preceded with whitespace.19
     ErrorjavadocJavadocVariableMissing a Javadoc comment.21
     ErrorjavadocJavadocVariableMissing a Javadoc comment.23
     Error javadoc JavadocMethod Missing a Javadoc comment.11
    25
     ErrormiscFinalParametersParameter channel should be final.25
     ErrorcodingHiddenField'channel' hides a field.25
     ErrorwhitespaceWhitespaceAfter',' is not followed by whitespace.25
     Error misc FinalParametersParameter args should be final.11
    Parameter buffer should be final.25
     Error codingMagicNumber'10' is a magic number.13
    -
    -

    org/laidu/learn/language/feature/boxed/package-info.java

    - + + + - - - - - + + + + + - - - - + + + + - - - -
    HiddenField'buffer' hides a field.25
    SeverityCategoryRuleMessageLine
     ErrordesignDesignForExtensionMethod 'run' is not designed for extension - needs to be abstract, final or empty.30
     ErrormiscNewlineAtEndOfFileFile does not end with a newline.
    whitespaceWhitespaceAround'==' is not preceded with whitespace.40
     ErrorjavadocJavadocStyleFirst sentence should end with a period.1
    +whitespace +WhitespaceAround +'==' is not followed by whitespace. +40 + + Error +whitespace +WhitespaceAround +'{' is not preceded with whitespace. +40
    -

    org/laidu/learn/language/feature/collection/ListDemo.java

    +

    org/laidu/learn/io/nio/channel/BasicChannelExample.java

    - + - + - - - + + + + + + + + + - + - - - -
    Severity Category Rule Message Line
     ErrormiscNewlineAtEndOfFileFile does not end with a newline.javadocJavadocPackageMissing package-info.java file.
     ErrorimportsUnusedImportsUnused import - java.io.File.6
     Error javadoc JavadocStyle First sentence should end with a period.5
    21
     ErrormiscTodoCommentComment matches to-do format 'TODO:'.11
    -
    -

    org/laidu/learn/language/feature/collection/package-info.java

    - + + + + - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    designDesignForExtensionMethod 'fileChannelExa' is not designed for extension - needs to be abstract, final or empty.25
    SeverityCategoryRuleMessageLine
     ErrormiscjavadocJavadocMethodExpected @throws tag for 'IOException'.25
     ErrorsizesLineLengthLine is longer than 80 characters (found 112).27
     ErrorwhitespaceNoWhitespaceBefore',' is preceded with whitespace.28
     ErrorcodingMagicNumber'48' is a magic number.32
     ErrorwhitespaceWhitespaceAround'while' is not followed by whitespace.40
     ErrorwhitespaceWhitespaceAround'{' is not preceded with whitespace.40
     ErrorjavadocJavadocMethodMissing a Javadoc comment.50
     ErrormiscFinalParametersParameter args should be final.50
    +
    +

    org/laidu/learn/io/nio/package-info.java

    + + + + + + + + + +
    SeverityCategoryRuleMessageLine
     Errormisc NewlineAtEndOfFile File does not end with a newline.
    -

    org/laidu/learn/language/feature/date/DateUsage.java

    +

    org/laidu/learn/io/package-info.java

    + + + + + + + + + + + + +
    SeverityCategoryRuleMessageLine
     ErrormiscNewlineAtEndOfFileFile does not end with a newline.
    +
    +

    org/laidu/learn/jvm/Test.java

    + + + + + + + + + + + + + + + + + + + + + + + + +
    SeverityCategoryRuleMessageLine
     ErrordesignHideUtilityClassConstructorUtility classes should not have a public or default constructor.11
     ErrorjavadocJavadocMethodMissing a Javadoc comment.13
     ErrormiscFinalParametersParameter args should be final.13
    +
    +

    org/laidu/learn/jvm/package-info.java

    + + + + + + + + + + + + +
    SeverityCategoryRuleMessageLine
     ErrormiscNewlineAtEndOfFileFile does not end with a newline.
    +
    +

    org/laidu/learn/language/feature/boxed/BasicDataType.java

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    SeverityCategoryRuleMessageLine
     ErrorjavadocJavadocStyleFirst sentence should end with a period.5
     ErrordesignHideUtilityClassConstructorUtility classes should not have a public or default constructor.11
     ErrorjavadocJavadocMethodMissing a Javadoc comment.14
     ErrormiscFinalParametersParameter args should be final.14
     ErrorsizesLineLengthLine is longer than 80 characters (found 93).69
     ErrorsizesLineLengthLine is longer than 80 characters (found 93).71
    +
    +

    org/laidu/learn/language/feature/boxed/Boxing.java

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    SeverityCategoryRuleMessageLine
     ErrorjavadocJavadocStyleFirst sentence should end with a period.3
     ErrordesignHideUtilityClassConstructorUtility classes should not have a public or default constructor.9
     ErrorjavadocJavadocMethodMissing a Javadoc comment.11
     ErrormiscFinalParametersParameter args should be final.11
     ErrorcodingMagicNumber'10' is a magic number.13
    +
    +

    org/laidu/learn/language/feature/boxed/package-info.java

    + + + + + + + + + + + + + + + + + + +
    SeverityCategoryRuleMessageLine
     ErrormiscNewlineAtEndOfFileFile does not end with a newline.
     ErrorjavadocJavadocStyleFirst sentence should end with a period.1
    +
    +

    org/laidu/learn/language/feature/collection/ListDemo.java

    + + + + + + + + + + + + + + + + + + + + + + + + +
    SeverityCategoryRuleMessageLine
     ErrormiscNewlineAtEndOfFileFile does not end with a newline.
     ErrorjavadocJavadocStyleFirst sentence should end with a period.5
     ErrormiscTodoCommentComment matches to-do format 'TODO:'.11
    +
    +

    org/laidu/learn/language/feature/collection/package-info.java

    - - - - - + + + + + + + + + + +
    SeverityCategoryRuleMessageLine
    SeverityCategoryRuleMessageLine
     ErrormiscNewlineAtEndOfFileFile does not end with a newline.
    +
    +

    org/laidu/learn/language/feature/date/DateUsage.java

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    SeverityCategoryRuleMessageLine
     ErrorimportsAvoidStarImportUsing the '.*' form of import should be avoided - java.time.*.5
     ErrorjavadocJavadocMethodMissing a Javadoc comment.14
     ErrorwhitespaceWhitespaceAround'{' is not preceded with whitespace.14
     ErrorjavadocJavadocMethodMissing a Javadoc comment.20
     ErrormiscFinalParametersParameter args should be final.20
     ErrorwhitespaceWhitespaceAfter',' is not followed by whitespace.26
     ErrorwhitespaceWhitespaceAfter',' is not followed by whitespace.27
     ErrorwhitespaceWhitespaceAfter',' is not followed by whitespace.28
     ErrorwhitespaceWhitespaceAfter',' is not followed by whitespace.34
     ErrorwhitespaceWhitespaceAround'+' is not preceded with whitespace.39
     ErrorwhitespaceWhitespaceAround'+' is not followed by whitespace.39
     ErrorwhitespaceWhitespaceAround'+' is not preceded with whitespace.43
     ErrorwhitespaceWhitespaceAround'+' is not followed by whitespace.43
     ErrorcodingMagicNumber'30' is a magic number.46
     ErrorsizesLineLengthLine is longer than 80 characters (found 84).51
     ErrorsizesLineLengthLine is longer than 80 characters (found 92).53
     ErrorwhitespaceWhitespaceAfter',' is not followed by whitespace.53
    +
    +

    org/laidu/learn/language/feature/date/package-info.java

    + + + + + + + + + + + + +
    SeverityCategoryRuleMessageLine
     ErrormiscNewlineAtEndOfFileFile does not end with a newline.
    +
    +

    org/laidu/learn/language/feature/default_/method/ExtendClass.java

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    SeverityCategoryRuleMessageLine
     ErrorwhitespaceWhitespaceAfter',' is not followed by whitespace.14
     ErrorwhitespaceWhitespaceAround'{' is not preceded with whitespace.14
     ErrorjavadocJavadocStyleFirst sentence should end with a period.16
     ErrordesignDesignForExtensionMethod 'sayHello' is not designed for extension - needs to be abstract, final or empty.19
     ErrorsizesLineLengthLine is longer than 80 characters (found 98).21
     ErrorwhitespaceWhitespaceAfter',' is not followed by whitespace.21
     ErrorjavadocJavadocStyleFirst sentence should end with a period.24
     ErrordesignDesignForExtensionMethod 'sayBye' is not designed for extension - needs to be abstract, final or empty.27
     ErrorsizesLineLengthLine is longer than 80 characters (found 128).29
     ErrorwhitespaceWhitespaceAfter',' is not followed by whitespace.29
     ErrorjavadocJavadocStyleFirst sentence should end with a period.32
     ErrordesignDesignForExtensionMethod 'sayGood' is not designed for extension - needs to be abstract, final or empty.36
     ErrorsizesLineLengthLine is longer than 80 characters (found 98).38
     ErrorwhitespaceWhitespaceAfter',' is not followed by whitespace.38
     ErrorjavadocJavadocMethodMissing a Javadoc comment.41
     ErrormiscFinalParametersParameter args should be final.41
    +
    +

    org/laidu/learn/language/feature/default_/method/InterfaceA.java

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    SeverityCategoryRuleMessageLine
     ErrorjavadocJavadocMethodMissing a Javadoc comment.10
     ErrorwhitespaceWhitespaceAround'{' is not preceded with whitespace.10
     ErrorjavadocJavadocMethodMissing a Javadoc comment.14
     ErrorwhitespaceWhitespaceAround'{' is not preceded with whitespace.14
     ErrorjavadocJavadocMethodMissing a Javadoc comment.18
    +
    +

    org/laidu/learn/language/feature/default_/method/InterfaceB.java

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    SeverityCategoryRuleMessageLine
     ErrorjavadocJavadocMethodMissing a Javadoc comment.10
     ErrorwhitespaceWhitespaceAround'{' is not preceded with whitespace.10
     ErrorjavadocJavadocMethodMissing a Javadoc comment.13
     ErrorjavadocJavadocMethodMissing a Javadoc comment.15
    +
    +

    org/laidu/learn/language/feature/default_/method/package-info.java

    + + + + + + + + + + + + +
    SeverityCategoryRuleMessageLine
     ErrormiscNewlineAtEndOfFileFile does not end with a newline.
    +
    +

    org/laidu/learn/language/feature/package-info.java

    + + + + + + + + + + + + +
    SeverityCategoryRuleMessageLine
     ErrormiscNewlineAtEndOfFileFile does not end with a newline.
    +
    +

    org/laidu/learn/language/feature/regex/RegexUsage.java

    + + + + + + + + + + + + +
    SeverityCategoryRuleMessageLine
     ErrormiscNewlineAtEndOfFileFile does not end with a newline.
    +
    +

    org/laidu/learn/language/feature/regex/package-info.java

    + + + + + + + + + + + + +
    SeverityCategoryRuleMessageLine
     ErrormiscNewlineAtEndOfFileFile does not end with a newline.
    +
    +

    org/laidu/learn/language/feature/serialize/Main.java

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    SeverityCategoryRuleMessageLine
     ErrormiscNewlineAtEndOfFileFile does not end with a newline.
     ErrorimportsAvoidStarImportUsing the '.*' form of import should be avoided - java.io.*.3
     ErrorjavadocJavadocStyleFirst sentence should end with a period.5
     ErrormiscTodoCommentComment matches to-do format 'TODO:'.11
     ErrordesignHideUtilityClassConstructorUtility classes should not have a public or default constructor.12
     ErrorjavadocJavadocMethodMissing a Javadoc comment.14
     ErrormiscFinalParametersParameter args should be final.14
     ErrorsizesLineLengthLine is longer than 80 characters (found 113).19
     ErrorwhitespaceWhitespaceAround'+' is not preceded with whitespace.19
     ErrorwhitespaceWhitespaceAround'+' is not followed by whitespace.19
     ErrorsizesLineLengthLine is longer than 80 characters (found 96).21
     ErrorsizesLineLengthLine is longer than 80 characters (found 92).42
    +
    +

    org/laidu/learn/language/feature/serialize/Student.java

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    SeverityCategoryRuleMessageLine
     ErrormiscNewlineAtEndOfFileFile does not end with a newline.
     ErrorjavadocJavadocStyleFirst sentence should end with a period.9
     ErrorwhitespaceWhitespaceAround'{' is not preceded with whitespace.17
     ErrorjavadocJavadocVariableMissing a Javadoc comment.19
     ErrorjavadocJavadocVariableMissing a Javadoc comment.20
     ErrorjavadocJavadocVariableMissing a Javadoc comment.22
     ErrorjavadocJavadocVariableMissing a Javadoc comment.24
     ErrormodifierModifierOrder'private' modifier out of order with the JLS suggestions.24
     ErrorjavadocJavadocVariableMissing a Javadoc comment.25
     ErrordesignVisibilityModifierVariable 'gradeName' must be private and have accessor methods.25
     ErrorjavadocJavadocVariableMissing a Javadoc comment.27
     ErrorjavadocJavadocMethodMissing a Javadoc comment.33
    +
    +

    org/laidu/learn/language/feature/serialize/package-info.java

    + + + + + + + + + + + + + + + + + + + + + + + + +
    SeverityCategoryRuleMessageLine
     ErrormiscNewlineAtEndOfFileFile does not end with a newline.
     ErrorjavadocJavadocStyleFirst sentence should end with a period.1
     ErrormiscTodoCommentComment matches to-do format 'TODO:'.7
    +
    +

    org/laidu/learn/language/feature/string/StringBuilderPartMethod.java

    + + + + + + + + + + + + +
    SeverityCategoryRuleMessageLine
     ErrorjavadocJavadocTypeMissing a Javadoc comment.3
    +
    +

    org/laidu/learn/language/feature/string/StringPartMethod.java

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    SeverityCategoryRuleMessageLine
     ErrorimportsUnusedImportsUnused import - java.util.ArrayList.6
     ErrorimportsUnusedImportsUnused import - java.util.regex.Pattern.9
     ErrordesignHideUtilityClassConstructorUtility classes should not have a public or default constructor.17
     ErrorjavadocJavadocMethodExpected an @return tag.26
     ErrorsizesLineLengthLine is longer than 80 characters (found 81).26
     ErrormiscFinalParametersParameter delimiter should be final.26
     ErrorjavadocJavadocMethodExpected @param tag for 'delimiter'.26
     ErrormiscFinalParametersParameter elements should be final.26
     ErrorjavadocJavadocMethodExpected @param tag for 'elements'.26
     ErrorsizesLineLengthLine is longer than 80 characters (found 97).38
     ErrorjavadocJavadocMethodExpected an @return tag.43
     ErrormiscFinalParametersParameter delimiter should be final.43
     ErrorjavadocJavadocMethodExpected @param tag for 'delimiter'.43
     ErrormiscFinalParametersParameter elements should be final.44
     ErrorjavadocJavadocMethodExpected @param tag for 'elements'.44
    +
    +

    org/laidu/learn/language/feature/string/package-info.java

    + + + + + + + + + + + + +
    SeverityCategoryRuleMessageLine
     ErrormiscNewlineAtEndOfFileFile does not end with a newline.
    +
    +

    org/laidu/learn/language/feature/syntactic/sugar/package-info.java

    + + + + + + + + + + + + +
    SeverityCategoryRuleMessageLine
     ErrormiscNewlineAtEndOfFileFile does not end with a newline.
    +
    +

    org/laidu/learn/language/feature/thread/local/MyThreadLocal.java

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    SeverityCategoryRuleMessageLine
     ErrorwhitespaceGenericWhitespace'>' is followed by an illegal character.16
     ErrorwhitespaceWhitespaceAround'{' is not preceded with whitespace.16
     ErrordesignDesignForExtensionMethod 'initialValue' is not designed for extension - needs to be abstract, final or empty.17
     ErrordesignDesignForExtensionMethod 'set' is not designed for extension - needs to be abstract, final or empty.23
     ErrormiscFinalParametersParameter value should be final.24
    +
    +

    org/laidu/learn/language/feature/thread/local/ThreadA.java

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    SeverityCategoryRuleMessageLine
     ErrormiscNewlineAtEndOfFileFile does not end with a newline.
     ErrorjavadocJavadocVariableMissing a Javadoc comment.22
     ErrornamingConstantNameName 'nextId' must match pattern '^[A-Z][A-Z0-9]*(_[A-Z0-9]+)*$'.22
     ErrorsizesLineLengthLine is longer than 80 characters (found 113).25
     ErrorjavadocJavadocVariableMissing a Javadoc comment.25
     ErrornamingConstantNameName 'threadId' must match pattern '^[A-Z][A-Z0-9]*(_[A-Z0-9]+)*$'.25
     ErrorjavadocJavadocMethodMissing a Javadoc comment.28
     ErrordesignDesignForExtensionMethod 'run' is not designed for extension - needs to be abstract, final or empty.32
     ErrorwhitespaceWhitespaceAfter',' is not followed by whitespace.34
     ErrorjavadocJavadocMethodMissing a Javadoc comment.37
     ErrormiscFinalParametersParameter args should be final.37
     ErrorcodingMagicNumber'4' is a magic number.39
     ErrorwhitespaceWhitespaceAfter',' is not followed by whitespace.41
     ErrorcodingMagicNumber'100' is a magic number.41
     ErrorwhitespaceWhitespaceAround'{' is not preceded with whitespace.41
    +
    +

    org/laidu/learn/language/feature/thread/local/package-info.java

    + + + + + + + + + + + + +
    SeverityCategoryRuleMessageLine
     ErrormiscNewlineAtEndOfFileFile does not end with a newline.
    +
    +

    org/laidu/learn/language/feature/thread/local/source/ThreadLocal.java

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    SeverityCategoryRuleMessageLine
     ErrorjavadocJavadocPackageMissing package-info.java file.
     ErrorsizesLineLengthLine is longer than 80 characters (found 81).2
     ErrorsizesLineLengthLine is longer than 80 characters (found 84).141
     ErrorsizesLineLengthLine is longer than 80 characters (found 81).616
    +
    +

    org/laidu/learn/mybatis/Application.java

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    SeverityCategoryRuleMessageLine
     ErrormiscNewlineAtEndOfFileFile does not end with a newline.
     ErrorimportsUnusedImportsUnused import - org.springframework.context.annotation.PropertySource.6
     ErrordesignHideUtilityClassConstructorUtility classes should not have a public or default constructor.13
     ErrorjavadocJavadocMethodMissing a Javadoc comment.17
     ErrormiscFinalParametersParameter args should be final.17
     ErrorwhitespaceWhitespaceAround'{' is not preceded with whitespace.17
    +
    +

    org/laidu/learn/mybatis/config/DruidConfig.java

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    SeverityCategoryRuleMessageLine
     ErrormiscNewlineAtEndOfFileFile does not end with a newline.
     ErrorjavadocJavadocPackageMissing package-info.java file.
     ErrorimportsUnusedImportsUnused import - com.alibaba.druid.spring.boot.autoconfigure.DruidDataSourceBuilder.4
     ErrorimportsUnusedImportsUnused import - org.springframework.beans.factory.annotation.Autowired.8
     ErrorsizesLineLengthLine is longer than 80 characters (found 81).9
     ErrorimportsUnusedImportsUnused import - org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean.9
     ErrorimportsUnusedImportsUnused import - org.springframework.boot.context.properties.ConfigurationProperties.10
     ErrorimportsUnusedImportsUnused import - org.springframework.context.annotation.Primary.15
     ErrorimportsUnusedImportsUnused import - org.springframework.core.env.Environment.16
     ErrorimportsUnusedImportsUnused import - javax.sql.DataSource.18
     ErrordesignDesignForExtensionMethod 'logFilter' is not designed for extension - needs to be abstract, final or empty.32
     ErrorjavadocJavadocMethodMissing a Javadoc comment.32
     ErrorwhitespaceWhitespaceAround'{' is not preceded with whitespace.33
     ErrordesignDesignForExtensionMethod 'druidServlet' is not designed for extension - needs to be abstract, final or empty.45
     ErrorjavadocJavadocMethodMissing a Javadoc comment.45
     ErrorsizesLineLengthLine is longer than 80 characters (found 88).48
     ErrorwhitespaceWhitespaceAfter';' is not followed by whitespace.54
     ErrorsizesLineLengthLine is longer than 80 characters (found 83).56
     ErrordesignDesignForExtensionMethod 'filterRegistrationBean' is not designed for extension - needs to be abstract, final or empty.61
     ErrorjavadocJavadocMethodMissing a Javadoc comment.61
     ErrorsizesLineLengthLine is longer than 80 characters (found 85).63
     ErrorsizesLineLengthLine is longer than 80 characters (found 109).66
    +
    +

    org/laidu/learn/mybatis/controller/UserInfoController.java

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    SeverityCategoryRuleMessageLine
     ErrormiscNewlineAtEndOfFileFile does not end with a newline.
     ErrorjavadocJavadocPackageMissing package-info.java file.
     ErrorjavadocJavadocVariableMissing a Javadoc comment.24
     ErrorjavadocJavadocMethodMissing a Javadoc comment.26
     ErrormiscFinalParametersParameter userMapper should be final.27
     ErrorcodingHiddenField'userMapper' hides a field.27
     ErrordesignDesignForExtensionMethod 'queryById' is not designed for extension - needs to be abstract, final or empty.31
     ErrorjavadocJavadocMethodMissing a Javadoc comment.31
     ErrormiscFinalParametersParameter id should be final.32
     ErrorwhitespaceWhitespaceAround'{' is not preceded with whitespace.32
    +
    +

    org/laidu/learn/mybatis/mapper/AppUserMapper.java

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    SeverityCategoryRuleMessageLine
     ErrormiscNewlineAtEndOfFileFile does not end with a newline.
     ErrorjavadocJavadocPackageMissing package-info.java file.
     ErrorjavadocJavadocTypeMissing a Javadoc comment.14
     ErrorjavadocJavadocMethodMissing a Javadoc comment.15
     ErrorjavadocJavadocMethodMissing a Javadoc comment.21
     ErrorsizesLineLengthLine is longer than 80 characters (found 106).36
     ErrorjavadocJavadocMethodMissing a Javadoc comment.49
     ErrorwhitespaceWhitespaceAround'=' is not preceded with whitespace.49
     ErrorwhitespaceWhitespaceAround'=' is not followed by whitespace.49
     ErrorwhitespaceWhitespaceAround'=' is not preceded with whitespace.49
     ErrorwhitespaceWhitespaceAround'=' is not followed by whitespace.49
     ErrorjavadocJavadocMethodMissing a Javadoc comment.52
     ErrorsizesLineLengthLine is longer than 80 characters (found 91).54
     ErrorsizesLineLengthLine is longer than 80 characters (found 103).55
     ErrorsizesLineLengthLine is longer than 80 characters (found 90).56
     ErrorsizesLineLengthLine is longer than 80 characters (found 88).57
     ErrorwhitespaceWhitespaceAround'=' is not preceded with whitespace.62
     ErrorwhitespaceWhitespaceAround'=' is not followed by whitespace.62
     ErrorwhitespaceWhitespaceAround'=' is not preceded with whitespace.62
     ErrorwhitespaceWhitespaceAround'=' is not followed by whitespace.62
     ErrorwhitespaceWhitespaceAround'=' is not preceded with whitespace.62
     ErrorwhitespaceWhitespaceAround'=' is not followed by whitespace.62
     ErrorwhitespaceWhitespaceAround'=' is not preceded with whitespace.62
     ErrorwhitespaceWhitespaceAround'=' is not followed by whitespace.62
     ErrorwhitespaceWhitespaceAround'=' is not preceded with whitespace.63
     ErrorwhitespaceWhitespaceAround'=' is not followed by whitespace.63
     ErrorwhitespaceWhitespaceAround'=' is not preceded with whitespace.63
     ErrorwhitespaceWhitespaceAround'=' is not followed by whitespace.63
     ErrorwhitespaceWhitespaceAround'=' is not preceded with whitespace.63
     ErrorwhitespaceWhitespaceAround'=' is not followed by whitespace.63
     ErrorsizesLineLengthLine is longer than 80 characters (found 97).64
     ErrorwhitespaceWhitespaceAround'=' is not preceded with whitespace.64
     ErrorwhitespaceWhitespaceAround'=' is not followed by whitespace.64
     ErrorwhitespaceWhitespaceAround'=' is not preceded with whitespace.64
     ErrorwhitespaceWhitespaceAround'=' is not followed by whitespace.64
     ErrorwhitespaceWhitespaceAround'=' is not preceded with whitespace.64
     ErrorwhitespaceWhitespaceAround'=' is not followed by whitespace.64
     ErrorsizesLineLengthLine is longer than 80 characters (found 83).65
     ErrorwhitespaceWhitespaceAround'=' is not preceded with whitespace.65
     ErrorwhitespaceWhitespaceAround'=' is not followed by whitespace.65
     ErrorwhitespaceWhitespaceAround'=' is not preceded with whitespace.65
     ErrorwhitespaceWhitespaceAround'=' is not followed by whitespace.65
     ErrorwhitespaceWhitespaceAround'=' is not preceded with whitespace.65
     ErrorwhitespaceWhitespaceAround'=' is not followed by whitespace.65
     ErrorwhitespaceWhitespaceAround'=' is not preceded with whitespace.66
     ErrorwhitespaceWhitespaceAround'=' is not followed by whitespace.66
     ErrorwhitespaceWhitespaceAround'=' is not preceded with whitespace.66
     ErrorwhitespaceWhitespaceAround'=' is not followed by whitespace.66
     ErrorwhitespaceWhitespaceAround'=' is not preceded with whitespace.66
     ErrorwhitespaceWhitespaceAround'=' is not followed by whitespace.66
     ErrorwhitespaceWhitespaceAround'=' is not preceded with whitespace.67
     ErrorwhitespaceWhitespaceAround'=' is not followed by whitespace.67
     ErrorwhitespaceWhitespaceAround'=' is not preceded with whitespace.67
     ErrorwhitespaceWhitespaceAround'=' is not followed by whitespace.67
     ErrorwhitespaceWhitespaceAround'=' is not preceded with whitespace.67
     ErrorwhitespaceWhitespaceAround'=' is not followed by whitespace.67
     ErrorsizesLineLengthLine is longer than 80 characters (found 108).68
     ErrorwhitespaceWhitespaceAround'=' is not preceded with whitespace.68
     ErrorwhitespaceWhitespaceAround'=' is not followed by whitespace.68
     ErrorwhitespaceWhitespaceAround'=' is not preceded with whitespace.68
     ErrorwhitespaceWhitespaceAround'=' is not followed by whitespace.68
     ErrorwhitespaceWhitespaceAround'=' is not preceded with whitespace.68
     ErrorwhitespaceWhitespaceAround'=' is not followed by whitespace.68
     ErrorsizesLineLengthLine is longer than 80 characters (found 94).69
     ErrorwhitespaceWhitespaceAround'=' is not preceded with whitespace.69
     ErrorwhitespaceWhitespaceAround'=' is not followed by whitespace.69
     ErrorwhitespaceWhitespaceAround'=' is not preceded with whitespace.69
     ErrorwhitespaceWhitespaceAround'=' is not followed by whitespace.69
     ErrorwhitespaceWhitespaceAround'=' is not preceded with whitespace.69
     ErrorwhitespaceWhitespaceAround'=' is not followed by whitespace.69
     ErrorsizesLineLengthLine is longer than 80 characters (found 95).70
     ErrorwhitespaceWhitespaceAround'=' is not preceded with whitespace.70
     ErrorwhitespaceWhitespaceAround'=' is not followed by whitespace.70
     ErrorwhitespaceWhitespaceAround'=' is not preceded with whitespace.70
     ErrorwhitespaceWhitespaceAround'=' is not followed by whitespace.70
     ErrorwhitespaceWhitespaceAround'=' is not preceded with whitespace.70
     ErrorwhitespaceWhitespaceAround'=' is not followed by whitespace.70
     ErrorsizesLineLengthLine is longer than 80 characters (found 99).71
     ErrorwhitespaceWhitespaceAround'=' is not preceded with whitespace.71
     ErrorwhitespaceWhitespaceAround'=' is not followed by whitespace.71
     ErrorwhitespaceWhitespaceAround'=' is not preceded with whitespace.71
     ErrorwhitespaceWhitespaceAround'=' is not followed by whitespace.71
     ErrorwhitespaceWhitespaceAround'=' is not preceded with whitespace.71
     ErrorwhitespaceWhitespaceAround'=' is not followed by whitespace.71
     ErrorsizesLineLengthLine is longer than 80 characters (found 89).72
     ErrorwhitespaceWhitespaceAround'=' is not preceded with whitespace.72
     ErrorwhitespaceWhitespaceAround'=' is not followed by whitespace.72
     ErrorwhitespaceWhitespaceAround'=' is not preceded with whitespace.72
     ErrorwhitespaceWhitespaceAround'=' is not followed by whitespace.72
     ErrorwhitespaceWhitespaceAround'=' is not preceded with whitespace.72
     ErrorwhitespaceWhitespaceAround'=' is not followed by whitespace.72
     ErrorsizesLineLengthLine is longer than 80 characters (found 102).73
     ErrorwhitespaceWhitespaceAround'=' is not preceded with whitespace.73
     ErrorwhitespaceWhitespaceAround'=' is not followed by whitespace.73
     ErrorwhitespaceWhitespaceAround'=' is not preceded with whitespace.73
     ErrorwhitespaceWhitespaceAround'=' is not followed by whitespace.73
     ErrorwhitespaceWhitespaceAround'=' is not preceded with whitespace.73
     ErrorwhitespaceWhitespaceAround'=' is not followed by whitespace.73
     ErrorsizesLineLengthLine is longer than 80 characters (found 93).74
     ErrorwhitespaceWhitespaceAround'=' is not preceded with whitespace.74
     ErrorwhitespaceWhitespaceAround'=' is not followed by whitespace.74
     ErrorwhitespaceWhitespaceAround'=' is not preceded with whitespace.74
     ErrorwhitespaceWhitespaceAround'=' is not followed by whitespace.74
     ErrorwhitespaceWhitespaceAround'=' is not preceded with whitespace.74
     ErrorwhitespaceWhitespaceAround'=' is not followed by whitespace.74
     ErrorsizesLineLengthLine is longer than 80 characters (found 92).75
     ErrorwhitespaceWhitespaceAround'=' is not preceded with whitespace.75
     ErrorwhitespaceWhitespaceAround'=' is not followed by whitespace.75
     ErrorwhitespaceWhitespaceAround'=' is not preceded with whitespace.75
     ErrorwhitespaceWhitespaceAround'=' is not followed by whitespace.75
     ErrorwhitespaceWhitespaceAround'=' is not preceded with whitespace.75
     ErrorwhitespaceWhitespaceAround'=' is not followed by whitespace.75
     ErrorsizesLineLengthLine is longer than 80 characters (found 97).76
     ErrorwhitespaceWhitespaceAround'=' is not preceded with whitespace.76
     ErrorwhitespaceWhitespaceAround'=' is not followed by whitespace.76
     ErrorwhitespaceWhitespaceAround'=' is not preceded with whitespace.76
     ErrorwhitespaceWhitespaceAround'=' is not followed by whitespace.76
     ErrorwhitespaceWhitespaceAround'=' is not preceded with whitespace.76
     ErrorwhitespaceWhitespaceAround'=' is not followed by whitespace.76
     ErrorsizesLineLengthLine is longer than 80 characters (found 95).77
     ErrorwhitespaceWhitespaceAround'=' is not preceded with whitespace.77
     ErrorwhitespaceWhitespaceAround'=' is not followed by whitespace.77
     ErrorwhitespaceWhitespaceAround'=' is not preceded with whitespace.77
     ErrorwhitespaceWhitespaceAround'=' is not followed by whitespace.77
     ErrorwhitespaceWhitespaceAround'=' is not preceded with whitespace.77
     ErrorwhitespaceWhitespaceAround'=' is not followed by whitespace.77
     ErrorwhitespaceWhitespaceAround'=' is not preceded with whitespace.78
     ErrorwhitespaceWhitespaceAround'=' is not followed by whitespace.78
     ErrorwhitespaceWhitespaceAround'=' is not preceded with whitespace.78
     ErrorwhitespaceWhitespaceAround'=' is not followed by whitespace.78
     ErrorwhitespaceWhitespaceAround'=' is not preceded with whitespace.78
     ErrorwhitespaceWhitespaceAround'=' is not followed by whitespace.78
     ErrorwhitespaceWhitespaceAround'=' is not preceded with whitespace.79
     ErrorwhitespaceWhitespaceAround'=' is not followed by whitespace.79
     ErrorwhitespaceWhitespaceAround'=' is not preceded with whitespace.79
     ErrorwhitespaceWhitespaceAround'=' is not followed by whitespace.79
     ErrorwhitespaceWhitespaceAround'=' is not preceded with whitespace.79
     ErrorwhitespaceWhitespaceAround'=' is not followed by whitespace.79
     ErrorsizesLineLengthLine is longer than 80 characters (found 81).80
     ErrorwhitespaceWhitespaceAround'=' is not preceded with whitespace.80
     ErrorwhitespaceWhitespaceAround'=' is not followed by whitespace.80
     ErrorwhitespaceWhitespaceAround'=' is not preceded with whitespace.80
     ErrorwhitespaceWhitespaceAround'=' is not followed by whitespace.80
     ErrorwhitespaceWhitespaceAround'=' is not preceded with whitespace.80
     ErrorwhitespaceWhitespaceAround'=' is not followed by whitespace.80
     ErrorsizesLineLengthLine is longer than 80 characters (found 88).81
     ErrorwhitespaceWhitespaceAround'=' is not preceded with whitespace.81
     ErrorwhitespaceWhitespaceAround'=' is not followed by whitespace.81
     ErrorwhitespaceWhitespaceAround'=' is not preceded with whitespace.81
     ErrorwhitespaceWhitespaceAround'=' is not followed by whitespace.81
     ErrorwhitespaceWhitespaceAround'=' is not preceded with whitespace.81
     ErrorwhitespaceWhitespaceAround'=' is not followed by whitespace.81
     ErrorsizesLineLengthLine is longer than 80 characters (found 90).82
     ErrorwhitespaceWhitespaceAround'=' is not preceded with whitespace.82
     ErrorwhitespaceWhitespaceAround'=' is not followed by whitespace.82
     ErrorwhitespaceWhitespaceAround'=' is not preceded with whitespace.82
     ErrorwhitespaceWhitespaceAround'=' is not followed by whitespace.82
     ErrorwhitespaceWhitespaceAround'=' is not preceded with whitespace.82
     ErrorwhitespaceWhitespaceAround'=' is not followed by whitespace.82
     ErrorsizesLineLengthLine is longer than 80 characters (found 90).83
     ErrorwhitespaceWhitespaceAround'=' is not preceded with whitespace.83
     ErrorwhitespaceWhitespaceAround'=' is not followed by whitespace.83
     ErrorwhitespaceWhitespaceAround'=' is not preceded with whitespace.83
     ErrorwhitespaceWhitespaceAround'=' is not followed by whitespace.83
     ErrorwhitespaceWhitespaceAround'=' is not preceded with whitespace.83
     ErrorwhitespaceWhitespaceAround'=' is not followed by whitespace.83
     ErrorwhitespaceWhitespaceAround'=' is not preceded with whitespace.84
     ErrorwhitespaceWhitespaceAround'=' is not followed by whitespace.84
     ErrorwhitespaceWhitespaceAround'=' is not preceded with whitespace.84
     ErrorwhitespaceWhitespaceAround'=' is not followed by whitespace.84
     ErrorwhitespaceWhitespaceAround'=' is not preceded with whitespace.84
     ErrorwhitespaceWhitespaceAround'=' is not followed by whitespace.84
     ErrorsizesLineLengthLine is longer than 80 characters (found 96).85
     ErrorwhitespaceWhitespaceAround'=' is not preceded with whitespace.85
     ErrorwhitespaceWhitespaceAround'=' is not followed by whitespace.85
     ErrorwhitespaceWhitespaceAround'=' is not preceded with whitespace.85
     ErrorwhitespaceWhitespaceAround'=' is not followed by whitespace.85
     ErrorwhitespaceWhitespaceAround'=' is not preceded with whitespace.85
     ErrorwhitespaceWhitespaceAround'=' is not followed by whitespace.85
     ErrorsizesLineLengthLine is longer than 80 characters (found 88).89
     ErrorjavadocJavadocMethodMissing a Javadoc comment.89
     ErrorwhitespaceWhitespaceAround'=' is not preceded with whitespace.89
     ErrorwhitespaceWhitespaceAround'=' is not followed by whitespace.89
     ErrorwhitespaceWhitespaceAround'=' is not preceded with whitespace.89
     ErrorwhitespaceWhitespaceAround'=' is not followed by whitespace.89
     ErrorjavadocJavadocMethodMissing a Javadoc comment.92
     ErrorjavadocJavadocMethodMissing a Javadoc comment.121
    +
    +

    org/laidu/learn/mybatis/mapper/AppUserSqlProvider.java

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    SeverityCategoryRuleMessageLine
     ErrormiscNewlineAtEndOfFileFile does not end with a newline.
     ErrorjavadocJavadocTypeMissing a Javadoc comment.6
     ErrordesignDesignForExtensionMethod 'insertSelective' is not designed for extension - needs to be abstract, final or empty.8
     ErrorjavadocJavadocMethodMissing a Javadoc comment.8
     ErrormiscFinalParametersParameter record should be final.8
     ErrorregexpRegexpSinglelineLine has trailing spaces.11
     ErrorregexpRegexpSinglelineLine has trailing spaces.15
     ErrorregexpRegexpSinglelineLine has trailing spaces.19
     ErrorsizesLineLengthLine is longer than 80 characters (found 81).21
     ErrorregexpRegexpSinglelineLine has trailing spaces.23
     ErrorregexpRegexpSinglelineLine has trailing spaces.27
     ErrorregexpRegexpSinglelineLine has trailing spaces.31
     ErrorregexpRegexpSinglelineLine has trailing spaces.35
     ErrorsizesLineLengthLine is longer than 80 characters (found 92).37
     ErrorregexpRegexpSinglelineLine has trailing spaces.39
     ErrorregexpRegexpSinglelineLine has trailing spaces.43
     ErrorregexpRegexpSinglelineLine has trailing spaces.47
     ErrorsizesLineLengthLine is longer than 80 characters (found 83).49
     ErrorregexpRegexpSinglelineLine has trailing spaces.51
     ErrorregexpRegexpSinglelineLine has trailing spaces.55
     ErrorsizesLineLengthLine is longer than 80 characters (found 86).57
     ErrorregexpRegexpSinglelineLine has trailing spaces.59
     ErrorregexpRegexpSinglelineLine has trailing spaces.63
     ErrorregexpRegexpSinglelineLine has trailing spaces.67
     ErrorsizesLineLengthLine is longer than 80 characters (found 81).69
     ErrorregexpRegexpSinglelineLine has trailing spaces.71
     ErrorregexpRegexpSinglelineLine has trailing spaces.75
     ErrorregexpRegexpSinglelineLine has trailing spaces.79
     ErrorregexpRegexpSinglelineLine has trailing spaces.83
     ErrorregexpRegexpSinglelineLine has trailing spaces.87
     ErrorregexpRegexpSinglelineLine has trailing spaces.91
     ErrorregexpRegexpSinglelineLine has trailing spaces.95
     ErrorregexpRegexpSinglelineLine has trailing spaces.99
     ErrorregexpRegexpSinglelineLine has trailing spaces.103
     ErrorsizesLineLengthLine is longer than 80 characters (found 81).105
     ErrorregexpRegexpSinglelineLine has trailing spaces.107
     ErrordesignDesignForExtensionMethod 'updateByPrimaryKeySelective' is not designed for extension - needs to be abstract, final or empty.111
     ErrorjavadocJavadocMethodMissing a Javadoc comment.111
     ErrormiscFinalParametersParameter record should be final.111
     ErrorregexpRegexpSinglelineLine has trailing spaces.114
     ErrorregexpRegexpSinglelineLine has trailing spaces.118
     ErrorregexpRegexpSinglelineLine has trailing spaces.122
     ErrorregexpRegexpSinglelineLine has trailing spaces.126
     ErrorregexpRegexpSinglelineLine has trailing spaces.130
     ErrorregexpRegexpSinglelineLine has trailing spaces.134
     ErrorsizesLineLengthLine is longer than 80 characters (found 88).136
     ErrorregexpRegexpSinglelineLine has trailing spaces.138
     ErrorregexpRegexpSinglelineLine has trailing spaces.142
     ErrorregexpRegexpSinglelineLine has trailing spaces.146
     ErrorregexpRegexpSinglelineLine has trailing spaces.150
     ErrorregexpRegexpSinglelineLine has trailing spaces.154
     ErrorsizesLineLengthLine is longer than 80 characters (found 82).156
     ErrorregexpRegexpSinglelineLine has trailing spaces.158
     ErrorregexpRegexpSinglelineLine has trailing spaces.162
     ErrorregexpRegexpSinglelineLine has trailing spaces.166
     ErrorregexpRegexpSinglelineLine has trailing spaces.170
     ErrorregexpRegexpSinglelineLine has trailing spaces.174
     ErrorregexpRegexpSinglelineLine has trailing spaces.178
     ErrorregexpRegexpSinglelineLine has trailing spaces.182
     ErrorregexpRegexpSinglelineLine has trailing spaces.186
     ErrorregexpRegexpSinglelineLine has trailing spaces.190
     ErrorregexpRegexpSinglelineLine has trailing spaces.194
     ErrorregexpRegexpSinglelineLine has trailing spaces.198
     ErrorregexpRegexpSinglelineLine has trailing spaces.202
     ErrorregexpRegexpSinglelineLine has trailing spaces.206
     ErrorregexpRegexpSinglelineLine has trailing spaces.208
    +
    +

    org/laidu/learn/mybatis/model/AppUser.java

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - + + + + - + - - - - + + + + - + - - + + - - - - + + + + - - - - + + + + - - - - + + + + - - - - + + + + - - - - + + + + - - - - + + + + - - - - + + + + - - - - + + + + - - - + + + - - - - + + + + - - - - + + + + - - - -
    SeverityCategoryRuleMessageLine
     ErrormiscNewlineAtEndOfFileFile does not end with a newline.
     ErrorjavadocJavadocPackageMissing package-info.java file.
     ErrorjavadocJavadocTypeMissing a Javadoc comment.6
     ErrorjavadocJavadocVariableMissing a Javadoc comment.7
     ErrorjavadocJavadocVariableMissing a Javadoc comment.9
     ErrorjavadocJavadocVariableMissing a Javadoc comment.11
     ErrorjavadocJavadocVariableMissing a Javadoc comment.13
     ErrorjavadocJavadocVariableMissing a Javadoc comment.15
     ErrorjavadocJavadocVariableMissing a Javadoc comment.17
     ErrorjavadocJavadocVariableMissing a Javadoc comment.19
     ErrorjavadocJavadocVariableMissing a Javadoc comment.21
     ErrorjavadocJavadocVariableMissing a Javadoc comment.23
     ErrorjavadocJavadocVariableMissing a Javadoc comment.25
     ErrorjavadocJavadocVariableMissing a Javadoc comment.27
     ErrorjavadocJavadocVariableMissing a Javadoc comment.29
     ErrorjavadocJavadocVariableMissing a Javadoc comment.31
     ErrorjavadocJavadocVariableMissing a Javadoc comment.33
     ErrorjavadocJavadocVariableMissing a Javadoc comment.35
     ErrorjavadocJavadocVariableMissing a Javadoc comment.37
     ErrorjavadocJavadocVariableMissing a Javadoc comment.39
     ErrorjavadocJavadocVariableMissing a Javadoc comment.41
     ErrorjavadocJavadocVariableMissing a Javadoc comment.43
     ErrorjavadocJavadocVariableMissing a Javadoc comment.45
     ErrorjavadocJavadocVariableMissing a Javadoc comment.47
     ErrorjavadocJavadocVariableMissing a Javadoc comment.49
     ErrorjavadocJavadocVariableMissing a Javadoc comment.51
     ErrorjavadocJavadocVariableMissing a Javadoc comment.53
     ErrorjavadocJavadocVariableMissing a Javadoc comment.55
     ErrordesignDesignForExtensionMethod 'getId' is not designed for extension - needs to be abstract, final or empty.57
     ErrorjavadocJavadocMethodMissing a Javadoc comment.57
     ErrordesignDesignForExtensionMethod 'setId' is not designed for extension - needs to be abstract, final or empty.61
     ErrorjavadocJavadocMethodMissing a Javadoc comment.61
     ErrormiscFinalParametersParameter id should be final.61
     ErrorcodingHiddenField'id' hides a field.61
     ErrordesignDesignForExtensionMethod 'getOpenId' is not designed for extension - needs to be abstract, final or empty.65
     ErrorjavadocJavadocMethodMissing a Javadoc comment.65
     ErrordesignDesignForExtensionMethod 'setOpenId' is not designed for extension - needs to be abstract, final or empty.69
     ErrorjavadocJavadocMethodMissing a Javadoc comment.69
     ErrormiscFinalParametersParameter openId should be final.69
     ErrorcodingHiddenField'openId' hides a field.69
     ErrorcodingAvoidInlineConditionalsAvoid inline conditionals.70
     ErrordesignDesignForExtensionMethod 'getRegisterChannel' is not designed for extension - needs to be abstract, final or empty.73
     ErrorjavadocJavadocMethodMissing a Javadoc comment.73
     ErrordesignDesignForExtensionMethod 'setRegisterChannel' is not designed for extension - needs to be abstract, final or empty.77
     ErrorjavadocJavadocMethodMissing a Javadoc comment.77
     ErrormiscFinalParametersParameter registerChannel should be final.77
     ErrorcodingHiddenField'registerChannel' hides a field.77
     ErrorimportsAvoidStarImportUsing the '.*' form of import should be avoided - java.time.*.5
    designDesignForExtensionMethod 'getUsername' is not designed for extension - needs to be abstract, final or empty.81
     Error javadoc JavadocMethod Missing a Javadoc comment.14
    81
     ErrorwhitespaceWhitespaceAround'{' is not preceded with whitespace.14
    designDesignForExtensionMethod 'setUsername' is not designed for extension - needs to be abstract, final or empty.85
     Error javadoc JavadocMethod Missing a Javadoc comment.20
    85
     Error misc FinalParametersParameter args should be final.20
    Parameter username should be final.85
     ErrorwhitespaceWhitespaceAfter',' is not followed by whitespace.26
    codingHiddenField'username' hides a field.85
     ErrorwhitespaceWhitespaceAfter',' is not followed by whitespace.27
    codingAvoidInlineConditionalsAvoid inline conditionals.86
     ErrorwhitespaceWhitespaceAfter',' is not followed by whitespace.28
    designDesignForExtensionMethod 'getIdCard' is not designed for extension - needs to be abstract, final or empty.89
     ErrorwhitespaceWhitespaceAfter',' is not followed by whitespace.34
    javadocJavadocMethodMissing a Javadoc comment.89
     ErrorwhitespaceWhitespaceAround'+' is not preceded with whitespace.39
    designDesignForExtensionMethod 'setIdCard' is not designed for extension - needs to be abstract, final or empty.93
     ErrorwhitespaceWhitespaceAround'+' is not followed by whitespace.39
    javadocJavadocMethodMissing a Javadoc comment.93
     ErrorwhitespaceWhitespaceAround'+' is not preceded with whitespace.43
    miscFinalParametersParameter idCard should be final.93
     ErrorwhitespaceWhitespaceAround'+' is not followed by whitespace.43
    codingHiddenField'idCard' hides a field.93
     Error codingMagicNumber'30' is a magic number.46
    AvoidInlineConditionalsAvoid inline conditionals.94
     ErrorsizesLineLengthLine is longer than 80 characters (found 84).51
    designDesignForExtensionMethod 'getName' is not designed for extension - needs to be abstract, final or empty.97
     ErrorsizesLineLengthLine is longer than 80 characters (found 92).53
    javadocJavadocMethodMissing a Javadoc comment.97
     ErrorwhitespaceWhitespaceAfter',' is not followed by whitespace.53
    -
    -

    org/laidu/learn/language/feature/date/package-info.java

    - + + + + - - - - - + + + + + - - -
    designDesignForExtensionMethod 'setName' is not designed for extension - needs to be abstract, final or empty.101
    SeverityCategoryRuleMessageLine
     ErrorjavadocJavadocMethodMissing a Javadoc comment.101
     Error miscNewlineAtEndOfFileFile does not end with a newline.
    -
    -

    org/laidu/learn/language/feature/default_/method/ExtendClass.java

    - + + + - - - - - + + + + + - - - - + + + + - - - - + + + + - - - + + + - - + + + + + + + + + + + + + + + + + + + + - - + + + + + + + + - - - - + + + + - - - + + + - - + + - - - - + + + + - - - - + + + + - - - - + + + + - - + + - - - - - - - - - - + + + + + + + + + + - + - -
    FinalParametersParameter name should be final.101
    SeverityCategoryRuleMessageLine
     ErrorcodingHiddenField'name' hides a field.101
     ErrorwhitespaceWhitespaceAfter',' is not followed by whitespace.14
    codingAvoidInlineConditionalsAvoid inline conditionals.102
     ErrorwhitespaceWhitespaceAround'{' is not preceded with whitespace.14
    designDesignForExtensionMethod 'getIdCardDetailAddress' is not designed for extension - needs to be abstract, final or empty.105
     Error javadocJavadocStyleFirst sentence should end with a period.16
    JavadocMethodMissing a Javadoc comment.105
     Error design DesignForExtensionMethod 'sayHello' is not designed for extension - needs to be abstract, final or empty.19
    Method 'setIdCardDetailAddress' is not designed for extension - needs to be abstract, final or empty.109
     ErrorjavadocJavadocMethodMissing a Javadoc comment.109
     ErrormiscFinalParametersParameter idCardDetailAddress should be final.109
     ErrorcodingHiddenField'idCardDetailAddress' hides a field.109
     Error sizes LineLengthLine is longer than 80 characters (found 98).21
    Line is longer than 80 characters (found 99).110
     ErrorcodingAvoidInlineConditionalsAvoid inline conditionals.110
     ErrorwhitespaceWhitespaceAfter',' is not followed by whitespace.21
    designDesignForExtensionMethod 'getIsVerifyIdCard' is not designed for extension - needs to be abstract, final or empty.113
     Error javadocJavadocStyleFirst sentence should end with a period.24
    JavadocMethodMissing a Javadoc comment.113
     Error design DesignForExtensionMethod 'sayBye' is not designed for extension - needs to be abstract, final or empty.27
    Method 'setIsVerifyIdCard' is not designed for extension - needs to be abstract, final or empty.117
     ErrorsizesLineLengthLine is longer than 80 characters (found 128).29
    javadocJavadocMethodMissing a Javadoc comment.117
     ErrorwhitespaceWhitespaceAfter',' is not followed by whitespace.29
    miscFinalParametersParameter isVerifyIdCard should be final.117
     ErrorjavadocJavadocStyleFirst sentence should end with a period.32
    codingHiddenField'isVerifyIdCard' hides a field.117
     Error design DesignForExtensionMethod 'sayGood' is not designed for extension - needs to be abstract, final or empty.36
    Method 'getIdCardCoverup' is not designed for extension - needs to be abstract, final or empty.121
     ErrorsizesLineLengthLine is longer than 80 characters (found 98).38
     ErrorwhitespaceWhitespaceAfter',' is not followed by whitespace.38
    javadocJavadocMethodMissing a Javadoc comment.121
     ErrordesignDesignForExtensionMethod 'setIdCardCoverup' is not designed for extension - needs to be abstract, final or empty.125
     Error javadoc JavadocMethod Missing a Javadoc comment.41
    125
     Error misc FinalParametersParameter args should be final.41
    -
    -

    org/laidu/learn/language/feature/default_/method/InterfaceA.java

    - + + - - - - - + + + + + - - - - + + + + - - - - + + + + + + + + + + - - - - - - - + + + + + + + -
    Parameter idCardCoverup should be final.125
    SeverityCategoryRuleMessageLine
     ErrorcodingHiddenField'idCardCoverup' hides a field.125
     ErrorjavadocJavadocMethodMissing a Javadoc comment.10
    sizesLineLengthLine is longer than 80 characters (found 81).126
     ErrorwhitespaceWhitespaceAround'{' is not preceded with whitespace.10
    codingAvoidInlineConditionalsAvoid inline conditionals.126
     ErrordesignDesignForExtensionMethod 'getIdCardCoverdown' is not designed for extension - needs to be abstract, final or empty.129
     Error javadoc JavadocMethod Missing a Javadoc comment.14
     ErrorwhitespaceWhitespaceAround'{' is not preceded with whitespace.14
    129
     ErrordesignDesignForExtensionMethod 'setIdCardCoverdown' is not designed for extension - needs to be abstract, final or empty.133
     Error javadoc JavadocMethod Missing a Javadoc comment.18
    -
    -

    org/laidu/learn/language/feature/default_/method/InterfaceB.java

    - + + + + + + + - - - - - + + + + + - - - - + + + + - - - - + + + + + + + + + + - + + + + + + + -
    133
     ErrormiscFinalParametersParameter idCardCoverdown should be final.133
    SeverityCategoryRuleMessageLine
     ErrorcodingHiddenField'idCardCoverdown' hides a field.133
     ErrorjavadocJavadocMethodMissing a Javadoc comment.10
    sizesLineLengthLine is longer than 80 characters (found 87).134
     ErrorwhitespaceWhitespaceAround'{' is not preceded with whitespace.10
    codingAvoidInlineConditionalsAvoid inline conditionals.134
     ErrordesignDesignForExtensionMethod 'getIdCardHold' is not designed for extension - needs to be abstract, final or empty.137
     Error javadoc JavadocMethod Missing a Javadoc comment.13
    137
     ErrordesignDesignForExtensionMethod 'setIdCardHold' is not designed for extension - needs to be abstract, final or empty.141
     Error javadoc JavadocMethod Missing a Javadoc comment.15
    -
    -

    org/laidu/learn/language/feature/default_/method/package-info.java

    - + - - - - - - - - -
    141
    SeverityCategoryRuleMessageLine
     Error miscNewlineAtEndOfFileFile does not end with a newline.
    -
    -

    org/laidu/learn/language/feature/package-info.java

    - - - - - - - + + + - - - -
    SeverityCategoryRuleMessageLine
    FinalParametersParameter idCardHold should be final.141
     ErrormiscNewlineAtEndOfFileFile does not end with a newline.
    -
    -

    org/laidu/learn/language/feature/regex/RegexUsage.java

    - + + + + - - - - - + + + + + - - - -
    codingHiddenField'idCardHold' hides a field.141
    SeverityCategoryRuleMessageLine
     ErrorcodingAvoidInlineConditionalsAvoid inline conditionals.142
     ErrormiscNewlineAtEndOfFileFile does not end with a newline.
    -
    -

    org/laidu/learn/language/feature/regex/package-info.java

    - + + + + - - - - - + + + + + - - - -
    designDesignForExtensionMethod 'getIsOtherPictureAuth' is not designed for extension - needs to be abstract, final or empty.145
    SeverityCategoryRuleMessageLine
     ErrorjavadocJavadocMethodMissing a Javadoc comment.145
     ErrormiscNewlineAtEndOfFileFile does not end with a newline.
    -
    -

    org/laidu/learn/language/feature/serialize/Main.java

    - + + + + - - - - - + + + + + - - - + + + - - - - + + + + - - - - + + + + - - - - + + + + - - - + + + - + - - + + - - - - + + + + - - - - + + + + - - - - + + + + - - - - + + + + - - - -
    designDesignForExtensionMethod 'setIsOtherPictureAuth' is not designed for extension - needs to be abstract, final or empty.149
    SeverityCategoryRuleMessageLine
     ErrorjavadocJavadocMethodMissing a Javadoc comment.149
     Error miscNewlineAtEndOfFileFile does not end with a newline.
    FinalParametersParameter isOtherPictureAuth should be final.149
     ErrorimportsAvoidStarImportUsing the '.*' form of import should be avoided - java.io.*.3
    codingHiddenField'isOtherPictureAuth' hides a field.149
     ErrorjavadocJavadocStyleFirst sentence should end with a period.5
    designDesignForExtensionMethod 'getIsBankcardAuth' is not designed for extension - needs to be abstract, final or empty.153
     ErrormiscTodoCommentComment matches to-do format 'TODO:'.11
    javadocJavadocMethodMissing a Javadoc comment.153
     Error designHideUtilityClassConstructorUtility classes should not have a public or default constructor.12
    DesignForExtensionMethod 'setIsBankcardAuth' is not designed for extension - needs to be abstract, final or empty.157
     Error javadoc JavadocMethod Missing a Javadoc comment.14
    157
     Error misc FinalParametersParameter args should be final.14
    Parameter isBankcardAuth should be final.157
     ErrorsizesLineLengthLine is longer than 80 characters (found 113).19
    codingHiddenField'isBankcardAuth' hides a field.157
     ErrorwhitespaceWhitespaceAround'+' is not preceded with whitespace.19
    designDesignForExtensionMethod 'getSignaturePic' is not designed for extension - needs to be abstract, final or empty.161
     ErrorwhitespaceWhitespaceAround'+' is not followed by whitespace.19
    javadocJavadocMethodMissing a Javadoc comment.161
     ErrorsizesLineLengthLine is longer than 80 characters (found 96).21
    designDesignForExtensionMethod 'setSignaturePic' is not designed for extension - needs to be abstract, final or empty.165
     ErrorsizesLineLengthLine is longer than 80 characters (found 92).42
    -
    -

    org/laidu/learn/language/feature/serialize/Student.java

    - + + + + - - - - - - - - - + + + + + + + + + - - - - + + + + - - - - + + + + - + - + - - - - + + + + - + - + - - - - + + + + - - - - + + + + - - - - - - - - - - + + + + - + - + + + + + + + -
    javadocJavadocMethodMissing a Javadoc comment.165
    SeverityCategoryRuleMessageLine
     Error miscNewlineAtEndOfFileFile does not end with a newline.
    FinalParametersParameter signaturePic should be final.165
     ErrorcodingHiddenField'signaturePic' hides a field.165
     ErrorjavadocJavadocStyleFirst sentence should end with a period.9
    codingAvoidInlineConditionalsAvoid inline conditionals.166
     ErrorwhitespaceWhitespaceAround'{' is not preceded with whitespace.17
    designDesignForExtensionMethod 'getIsAdditionalAuth' is not designed for extension - needs to be abstract, final or empty.169
     Error javadocJavadocVariableJavadocMethod Missing a Javadoc comment.19
    169
     ErrorjavadocJavadocVariableMissing a Javadoc comment.20
    designDesignForExtensionMethod 'setIsAdditionalAuth' is not designed for extension - needs to be abstract, final or empty.173
     Error javadocJavadocVariableJavadocMethod Missing a Javadoc comment.22
    173
     ErrorjavadocJavadocVariableMissing a Javadoc comment.24
    miscFinalParametersParameter isAdditionalAuth should be final.173
     ErrormodifierModifierOrder'private' modifier out of order with the JLS suggestions.24
    codingHiddenField'isAdditionalAuth' hides a field.173
     ErrorjavadocJavadocVariableMissing a Javadoc comment.25
     Error designVisibilityModifierVariable 'gradeName' must be private and have accessor methods.25
    DesignForExtensionMethod 'getIsEmergencyAuth' is not designed for extension - needs to be abstract, final or empty.177
     Error javadocJavadocVariableJavadocMethod Missing a Javadoc comment.27
    177
     ErrordesignDesignForExtensionMethod 'setIsEmergencyAuth' is not designed for extension - needs to be abstract, final or empty.181
     Error javadoc JavadocMethod Missing a Javadoc comment.33
    -
    -

    org/laidu/learn/language/feature/serialize/package-info.java

    - + - - - - - - - - - + + + + + + + + + - - - - + + + + - - - -
    181
    SeverityCategoryRuleMessageLine
     Error miscNewlineAtEndOfFileFile does not end with a newline.
    FinalParametersParameter isEmergencyAuth should be final.181
     ErrorcodingHiddenField'isEmergencyAuth' hides a field.181
     ErrorjavadocJavadocStyleFirst sentence should end with a period.1
    designDesignForExtensionMethod 'getPhone' is not designed for extension - needs to be abstract, final or empty.185
     ErrormiscTodoCommentComment matches to-do format 'TODO:'.7
    -
    -

    org/laidu/learn/language/feature/string/StringBuilderPartMethod.java

    - + + + + - - - - - + + + + + - + -
    javadocJavadocMethodMissing a Javadoc comment.185
    SeverityCategoryRuleMessageLine
     ErrordesignDesignForExtensionMethod 'setPhone' is not designed for extension - needs to be abstract, final or empty.189
     Error javadocJavadocTypeJavadocMethod Missing a Javadoc comment.3
    -
    -

    org/laidu/learn/language/feature/string/StringPartMethod.java

    - + - - - - - + + + + + - - - - + + + + - - - - + + + + - - - + + + - - + + - - - - + + + + + + + + + + - - + + + + + + + + - - - - + + + + - - - - + + + + - - + + - - - - + + + + - - + + - - + + - - - - + + + + - - - - + + + + + + + + + + - -
    189
    SeverityCategoryRuleMessageLine
     ErrormiscFinalParametersParameter phone should be final.189
     ErrorimportsUnusedImportsUnused import - java.util.ArrayList.6
    codingHiddenField'phone' hides a field.189
     ErrorimportsUnusedImportsUnused import - java.util.regex.Pattern.9
    codingAvoidInlineConditionalsAvoid inline conditionals.190
     Error designHideUtilityClassConstructorUtility classes should not have a public or default constructor.17
    DesignForExtensionMethod 'getEmail' is not designed for extension - needs to be abstract, final or empty.193
     Error javadoc JavadocMethodExpected an @return tag.26
    Missing a Javadoc comment.193
     ErrorsizesLineLengthLine is longer than 80 characters (found 81).26
    designDesignForExtensionMethod 'setEmail' is not designed for extension - needs to be abstract, final or empty.197
     ErrorjavadocJavadocMethodMissing a Javadoc comment.197
     Error misc FinalParametersParameter delimiter should be final.26
    Parameter email should be final.197
     ErrorcodingHiddenField'email' hides a field.197
     ErrorjavadocJavadocMethodExpected @param tag for 'delimiter'.26
    codingAvoidInlineConditionalsAvoid inline conditionals.198
     ErrormiscFinalParametersParameter elements should be final.26
    designDesignForExtensionMethod 'getAddress' is not designed for extension - needs to be abstract, final or empty.201
     Error javadoc JavadocMethodExpected @param tag for 'elements'.26
    Missing a Javadoc comment.201
     ErrorsizesLineLengthLine is longer than 80 characters (found 97).38
    designDesignForExtensionMethod 'setAddress' is not designed for extension - needs to be abstract, final or empty.205
     Error javadoc JavadocMethodExpected an @return tag.43
    Missing a Javadoc comment.205
     Error misc FinalParametersParameter delimiter should be final.43
    Parameter address should be final.205
     ErrorjavadocJavadocMethodExpected @param tag for 'delimiter'.43
    codingHiddenField'address' hides a field.205
     ErrormiscFinalParametersParameter elements should be final.44
    codingAvoidInlineConditionalsAvoid inline conditionals.206
     ErrordesignDesignForExtensionMethod 'getUserStatus' is not designed for extension - needs to be abstract, final or empty.209
     Error javadoc JavadocMethodExpected @param tag for 'elements'.44
    -
    -

    org/laidu/learn/language/feature/string/package-info.java

    - + + + + + + + + - - - - - + + + + + - - -
    Missing a Javadoc comment.209
     ErrordesignDesignForExtensionMethod 'setUserStatus' is not designed for extension - needs to be abstract, final or empty.213
    SeverityCategoryRuleMessageLine
     ErrorjavadocJavadocMethodMissing a Javadoc comment.213
     Error miscNewlineAtEndOfFileFile does not end with a newline.
    -
    -

    org/laidu/learn/language/feature/syntactic/sugar/package-info.java

    - + + + - - - - - + + + + + - - - -
    FinalParametersParameter userStatus should be final.213
    SeverityCategoryRuleMessageLine
     ErrorcodingHiddenField'userStatus' hides a field.213
     ErrormiscNewlineAtEndOfFileFile does not end with a newline.
    -
    -

    org/laidu/learn/language/feature/thread/local/MyThreadLocal.java

    - + + + + - - - - - + + + + + + + + + + + + + + + + + - - - - + + + + - - - - + + + + - - + + + + + + + + - - + + + + + + + + - -
    designDesignForExtensionMethod 'getCreateTime' is not designed for extension - needs to be abstract, final or empty.217
    SeverityCategoryRuleMessageLine
     ErrorjavadocJavadocMethodMissing a Javadoc comment.217
     ErrordesignDesignForExtensionMethod 'setCreateTime' is not designed for extension - needs to be abstract, final or empty.221
     ErrorjavadocJavadocMethodMissing a Javadoc comment.221
     ErrorwhitespaceGenericWhitespace'>' is followed by an illegal character.16
    miscFinalParametersParameter createTime should be final.221
     ErrorwhitespaceWhitespaceAround'{' is not preceded with whitespace.16
    codingHiddenField'createTime' hides a field.221
     Error design DesignForExtensionMethod 'initialValue' is not designed for extension - needs to be abstract, final or empty.17
    Method 'getUpdateTime' is not designed for extension - needs to be abstract, final or empty.225
     ErrorjavadocJavadocMethodMissing a Javadoc comment.225
     Error design DesignForExtensionMethod 'set' is not designed for extension - needs to be abstract, final or empty.23
    Method 'setUpdateTime' is not designed for extension - needs to be abstract, final or empty.229
     ErrorjavadocJavadocMethodMissing a Javadoc comment.229
     Error misc FinalParametersParameter value should be final.24
    -
    -

    org/laidu/learn/language/feature/thread/local/ThreadA.java

    - + + - - - - - + + + + + - - - - + + + + - + - + - - - - + + + + - - - - - - - + - + + + + + + + - - - - + + + + + + + + + + + + + + + + - + - - + + - - - - - - - - + + - - - - - - - - + + - - - - + + + + - - - + + + - - - -
    Parameter updateTime should be final.229
    SeverityCategoryRuleMessageLine
     ErrorcodingHiddenField'updateTime' hides a field.229
     ErrormiscNewlineAtEndOfFileFile does not end with a newline.
    designDesignForExtensionMethod 'getRemark' is not designed for extension - needs to be abstract, final or empty.233
     Error javadocJavadocVariableJavadocMethod Missing a Javadoc comment.22
    233
     ErrornamingConstantNameName 'nextId' must match pattern '^[A-Z][A-Z0-9]*(_[A-Z0-9]+)*$'.22
    designDesignForExtensionMethod 'setRemark' is not designed for extension - needs to be abstract, final or empty.237
     ErrorsizesLineLengthLine is longer than 80 characters (found 113).25
     Error javadocJavadocVariableJavadocMethod Missing a Javadoc comment.25
    237
     ErrormiscFinalParametersParameter remark should be final.237
     ErrornamingConstantNameName 'threadId' must match pattern '^[A-Z][A-Z0-9]*(_[A-Z0-9]+)*$'.25
    codingHiddenField'remark' hides a field.237
     ErrorcodingAvoidInlineConditionalsAvoid inline conditionals.238
     ErrordesignDesignForExtensionMethod 'getIdCardPolice' is not designed for extension - needs to be abstract, final or empty.241
     Error javadoc JavadocMethod Missing a Javadoc comment.28
    241
     Error design DesignForExtensionMethod 'run' is not designed for extension - needs to be abstract, final or empty.32
    Method 'setIdCardPolice' is not designed for extension - needs to be abstract, final or empty.245
     ErrorwhitespaceWhitespaceAfter',' is not followed by whitespace.34
     Error javadoc JavadocMethod Missing a Javadoc comment.37
    245
     Error misc FinalParametersParameter args should be final.37
     ErrorcodingMagicNumber'4' is a magic number.39
    Parameter idCardPolice should be final.245
     ErrorwhitespaceWhitespaceAfter',' is not followed by whitespace.41
    codingHiddenField'idCardPolice' hides a field.245
     Error codingMagicNumber'100' is a magic number.41
    AvoidInlineConditionalsAvoid inline conditionals.246
     ErrorwhitespaceWhitespaceAround'{' is not preceded with whitespace.41
    +design +DesignForExtension +Method 'toString' is not designed for extension - needs to be abstract, final or empty. +249
    -

    org/laidu/learn/language/feature/thread/local/package-info.java

    +

    org/laidu/learn/mybatis/package-info.java

    @@ -22766,7 +26943,7 @@

    org/lai

    SeverityFile does not end with a newline.
    -

    org/laidu/learn/language/feature/thread/local/source/ThreadLocal.java

    +

    org/laidu/learn/netty/package-info.java

    @@ -22776,39 +26953,6 @@

    o

    - - - - - - - - - - - - - - - - - - - - - -
    SeverityLine
     ErrorjavadocJavadocPackageMissing package-info.java file.
     ErrorsizesLineLengthLine is longer than 80 characters (found 81).2
     ErrorsizesLineLengthLine is longer than 80 characters (found 84).141
     ErrorsizesLineLengthLine is longer than 80 characters (found 81).616
    -
    -

    org/laidu/learn/netty/package-info.java

    - - - - - - - - - @@ -22816,49 +26960,49 @@

    org/laidu/learn/netty/package-i

    org/laidu/learn/play/controller/Application.java

    SeverityCategoryRuleMessageLine
     Error misc NewlineAtEndOfFile File does not end with a newline.
    - + - + - + - + - + - + - + - + @@ -22867,37 +27011,37 @@

    org/laidu/learn/play/c

    org/laidu/learn/play/model/Result.java

    Severity Category Rule Message Line
     Error misc NewlineAtEndOfFile File does not end with a newline.
     Error javadoc JavadocPackage Missing package-info.java file.
     Error imports AvoidStarImport Using the '.*' form of import should be avoided - play.*. 4
     Error imports AvoidStarImport Using the '.*' form of import should be avoided - play.mvc.*. 5
     Error whitespace WhitespaceAround '{' is not preceded with whitespace. 13
     Error design DesignForExtension Method 'index' is not designed for extension - needs to be abstract, final or empty. 15
     Error javadoc JavadocMethod
    - + - + - + - + - + - + @@ -22906,13 +27050,13 @@

    org/laidu/learn/play/model/Resul

    org/laidu/learn/play/model/package-info.java

    Severity Category Rule Message Line
     Error misc NewlineAtEndOfFile File does not end with a newline.
     Error javadoc JavadocType Type Javadoc comment is missing an @param <T> tag. 13
     Error javadoc JavadocVariable Missing a Javadoc comment. 19
     Error javadoc JavadocVariable Missing a Javadoc comment. 21
     Error javadoc JavadocVariable
    - + - + @@ -22921,13 +27065,13 @@

    org/laidu/learn/play/model

    org/laidu/learn/play/package-info.java

    Severity Category Rule Message Line
     Error misc NewlineAtEndOfFile
    - + - + @@ -22936,19 +27080,19 @@

    org/laidu/learn/play/package-inf

    org/laidu/learn/script/package-info.java

    Severity Category Rule Message Line
     Error misc NewlineAtEndOfFile
    - + - + - + @@ -22957,43 +27101,43 @@

    org/laidu/learn/script/package

    org/laidu/learn/spring/boot/app/SpringBootAppApplication.java

    Severity Category Rule Message Line
     Error misc NewlineAtEndOfFile File does not end with a newline.
     Error regexp RegexpSingleline
    - + - + - + - + - + - + - + @@ -23002,43 +27146,43 @@

    org/laidu

    org/laidu/learn/spring/cloud/ServiceHelloApplication.java

    Severity Category Rule Message Line
     Error javadoc JavadocPackage Missing package-info.java file.
     Error javadoc JavadocType Missing a Javadoc comment. 6
     Error design HideUtilityClassConstructor Utility classes should not have a public or default constructor. 6
     Error whitespace FileTabCharacter File contains tab characters (this is the first instance). 9
     Error javadoc JavadocMethod Missing a Javadoc comment. 9
     Error misc FinalParameters
    - + - + - + - + - + - + - + @@ -23047,49 +27191,49 @@

    org/laidu/lea

    org/laidu/learn/spring/cloud/consumer/CustomerHelloApplication.java

    Severity Category Rule Message Line
     Error javadoc JavadocPackage Missing package-info.java file.
     Error javadoc JavadocType Missing a Javadoc comment. 7
     Error design HideUtilityClassConstructor Utility classes should not have a public or default constructor. 7
     Error whitespace FileTabCharacter File contains tab characters (this is the first instance). 11
     Error javadoc JavadocMethod Missing a Javadoc comment. 11
     Error misc FinalParameters
    - + - + - + - + - + - + - + - + @@ -23098,79 +27242,79 @@

    org

    org/laidu/learn/spring/cloud/consumer/controller/HelloConsumerController.java

    Severity Category Rule Message Line
     Error javadoc JavadocPackage Missing package-info.java file.
     Error whitespace FileTabCharacter File contains tab characters (this is the first instance). 19
     Error design DesignForExtension Method 'restTemplate' is not designed for extension - needs to be abstract, final or empty. 19
     Error javadoc JavadocMethod Missing a Javadoc comment. 19
     Error whitespace WhitespaceAround '{' is not preceded with whitespace. 21
     Error javadoc JavadocMethod Missing a Javadoc comment. 25
     Error misc FinalParameters
    - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -23179,25 +27323,25 @@

    org/laidu/learn/spring/cloud/consumer/service/HelloService.java

    Severity Category Rule Message Line
     Error misc NewlineAtEndOfFile File does not end with a newline.
     Error javadoc JavadocPackage Missing package-info.java file.
     Error javadoc JavadocType Unknown tag 'date'. 12
     Error javadoc JavadocVariable Missing a Javadoc comment. 19
     Error javadoc JavadocMethod Missing a Javadoc comment. 21
     Error misc FinalParameters Parameter restTemplate should be final. 22
     Error coding HiddenField 'restTemplate' hides a field. 22
     Error design DesignForExtension Method 'helloConsumer' is not designed for extension - needs to be abstract, final or empty. 26
     Error javadoc JavadocMethod Missing a Javadoc comment. 26
     Error whitespace WhitespaceAround '{' is not preceded with whitespace. 27
     Error sizes LineLength Line is longer than 80 characters (found 94). 28
     Error whitespace WhitespaceAfter
    - + - + - + - + @@ -23206,85 +27350,85 @@

    org/lai

    org/laidu/learn/spring/cloud/controller/HelloController.java

    Severity Category Rule Message Line
     Error javadoc JavadocPackage Missing package-info.java file.
     Error javadoc JavadocStyle First sentence should end with a period. 3
     Error javadoc JavadocType
    - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -23293,43 +27437,43 @@

    org/laidu/

    org/laidu/learn/spring/cloud/eureka/EurekaServerApplication.java

    Severity Category Rule Message Line
     Error misc NewlineAtEndOfFile File does not end with a newline.
     Error javadoc JavadocPackage Missing package-info.java file.
     Error imports UnusedImports Unused import - org.springframework.cloud.client.discovery.DiscoveryClient. 6
     Error javadoc JavadocStyle First sentence should end with a period. 11
     Error javadoc JavadocType Unknown tag 'date'. 15
     Error javadoc JavadocVariable Missing a Javadoc comment. 22
     Error javadoc JavadocMethod Missing a Javadoc comment. 24
     Error misc FinalParameters Parameter instance should be final. 25
     Error design DesignForExtension Method 'index' is not designed for extension - needs to be abstract, final or empty. 29
     Error javadoc JavadocMethod Missing a Javadoc comment. 29
     Error whitespace WhitespaceAround '{' is not preceded with whitespace. 30
     Error sizes LineLength Line is longer than 80 characters (found 113). 31
     Error whitespace WhitespaceAfter
    - + - + - + - + - + - + - + @@ -23338,37 +27482,37 @@

    org/la

    org/laidu/learn/spring/cloud/eureka/server/EurekaServer.java

    Severity Category Rule Message Line
     Error javadoc JavadocPackage Missing package-info.java file.
     Error javadoc JavadocType Missing a Javadoc comment. 7
     Error design HideUtilityClassConstructor Utility classes should not have a public or default constructor. 7
     Error whitespace FileTabCharacter File contains tab characters (this is the first instance). 11
     Error javadoc JavadocMethod Missing a Javadoc comment. 11
     Error misc FinalParameters
    - + - + - + - + - + - + @@ -23377,37 +27521,37 @@

    org/laidu/

    org/laidu/learn/spring/data/Application.java

    Severity Category Rule Message Line
     Error misc NewlineAtEndOfFile File does not end with a newline.
     Error javadoc JavadocPackage Missing package-info.java file.
     Error imports UnusedImports Unused import - org.springframework.cloud.client.discovery.EnableDiscoveryClient. 4
     Error javadoc JavadocStyle First sentence should end with a period. 6
     Error javadoc JavadocType
    - + - + - + - + - + - + @@ -23416,13 +27560,13 @@

    org/laidu/learn/spring/dat

    org/laidu/learn/spring/data/mongo/package-info.java

    Severity Category Rule Message Line
     Error misc NewlineAtEndOfFile File does not end with a newline.
     Error design HideUtilityClassConstructor Utility classes should not have a public or default constructor. 12
     Error javadoc JavadocMethod Missing a Javadoc comment. 15
     Error misc FinalParameters Parameter args should be final. 15
     Error whitespace WhitespaceAround
    - + - + @@ -23431,13 +27575,13 @@

    org/laidu/learn/spr

    org/laidu/learn/spring/data/mysql/package-info.java

    Severity Category Rule Message Line
     Error misc NewlineAtEndOfFile
    - + - + @@ -23446,25 +27590,25 @@

    org/laidu/learn/spr

    org/laidu/learn/spring/data/package-info.java

    Severity Category Rule Message Line
     Error misc NewlineAtEndOfFile
    - + - + - + - + @@ -23473,13 +27617,13 @@

    org/laidu/learn/spring/da

    org/laidu/learn/spring/hadoop/package-info.java

    Severity Category Rule Message Line
     Error misc NewlineAtEndOfFile File does not end with a newline.
     Error misc TodoComment Comment matches to-do format 'TODO:'. 1
     Error javadoc JavadocStyle
    - + - + @@ -23488,43 +27632,43 @@

    org/laidu/learn/spring/

    org/laidu/learn/swagger/demo/SwaggerApplication.java

    Severity Category Rule Message Line
     Error misc NewlineAtEndOfFile
    - + - + - + - + - + - + - + @@ -23533,24 +27677,18 @@

    org/laidu/learn/sw

    org/laidu/learn/swagger/demo/config/SwaggerConfig.java

    Severity Category Rule Message Line
     Error javadoc JavadocPackage Missing package-info.java file.
     Error javadoc JavadocType Missing a Javadoc comment. 6
     Error design HideUtilityClassConstructor Utility classes should not have a public or default constructor. 6
     Error whitespace FileTabCharacter File contains tab characters (this is the first instance). 8
     Error javadoc JavadocMethod Missing a Javadoc comment. 8
     Error misc FinalParameters
    - + - + - - - - - - @@ -23604,29 +27742,35 @@

    org/laidu/learn/swag

    + + + + + + - + - + - + - + @@ -23635,145 +27779,145 @@

    org/laidu/learn/swag

    org/laidu/learn/swagger/demo/controller/HomeController.java

    Severity Category Rule Message Line
     Error misc NewlineAtEndOfFile File does not end with a newline.
     ErrorjavadocJavadocPackageMissing package-info.java file.
     Error sizes
     ErrorjavadocJavadocPackageMissing package-info.java file.
     Error sizes LineLength Line is longer than 80 characters (found 81). 8
     Error javadoc JavadocVariable Missing a Javadoc comment. 20
     Error design VisibilityModifier Variable 'requestInterceptor' must be private and have accessor methods. 21
     Error design DesignForExtension Method 'addInterceptors' is not designed for extension - needs to be abstract, final or empty. 23
     Error misc FinalParameters
    - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -23782,145 +27926,145 @@

    org/laidu/l

    org/laidu/learn/swagger/demo/intercaptor/RequestInterceptor.java

    Severity Category Rule Message Line
     Error misc NewlineAtEndOfFile File does not end with a newline.
     Error javadoc JavadocPackage Missing package-info.java file.
     Error imports AvoidStarImport Using the '.*' form of import should be avoided - org.springframework.web.bind.annotation.*. 7
     Error design DesignForExtension Method 'home' is not designed for extension - needs to be abstract, final or empty. 19
     Error javadoc JavadocMethod Missing a Javadoc comment. 19
     Error whitespace WhitespaceAfter ',' is not followed by whitespace. 19
     Error whitespace WhitespaceAfter ',' is not followed by whitespace. 19
     Error whitespace WhitespaceAround '{' is not preceded with whitespace. 20
     Error design DesignForExtension Method 'query' is not designed for extension - needs to be abstract, final or empty. 24
     Error javadoc JavadocMethod Missing a Javadoc comment. 24
     Error misc FinalParameters Parameter id should be final. 27
     Error whitespace WhitespaceAround '{' is not preceded with whitespace. 27
     Error whitespace WhitespaceAround '+' is not preceded with whitespace. 31
     Error whitespace WhitespaceAround '+' is not followed by whitespace. 31
     Error design DesignForExtension Method 'add' is not designed for extension - needs to be abstract, final or empty. 35
     Error javadoc JavadocMethod Missing a Javadoc comment. 35
     Error misc FinalParameters Parameter product should be final. 36
     Error whitespace WhitespaceAround '{' is not preceded with whitespace. 36
     Error design DesignForExtension Method 'test' is not designed for extension - needs to be abstract, final or empty. 40
     Error javadoc JavadocMethod Missing a Javadoc comment. 40
     Error misc FinalParameters Parameter bodyByte should be final. 41
     Error whitespace WhitespaceAround '{' is not preceded with whitespace. 41
     Error sizes LineLength
    - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -23929,67 +28073,67 @@

    org/la

    org/laidu/learn/swagger/demo/model/Product.java

    Severity Category Rule Message Line
     Error misc NewlineAtEndOfFile File does not end with a newline.
     Error javadoc JavadocPackage Missing package-info.java file.
     Error design DesignForExtension Method 'preHandle' is not designed for extension - needs to be abstract, final or empty. 30
     Error misc FinalParameters Parameter request should be final. 31
     Error sizes LineLength Line is longer than 80 characters (found 92). 32
     Error misc FinalParameters Parameter response should be final. 32
     Error misc FinalParameters Parameter object should be final. 32
     Error regexp RegexpSingleline Line has trailing spaces. 33
     Error sizes LineLength Line is longer than 80 characters (found 87). 36
     Error whitespace OperatorWrap '+' should be on a new line. 37
     Error design DesignForExtension Method 'postHandle' is not designed for extension - needs to be abstract, final or empty. 43
     Error sizes LineLength Line is longer than 80 characters (found 84). 44
     Error misc FinalParameters Parameter request should be final. 44
     Error misc FinalParameters Parameter response should be final. 44
     Error misc FinalParameters Parameter object should be final. 45
     Error misc FinalParameters Parameter model should be final. 45
     Error sizes LineLength Line is longer than 80 characters (found 100). 50
     Error design DesignForExtension Method 'afterCompletion' is not designed for extension - needs to be abstract, final or empty. 57
     Error sizes LineLength Line is longer than 80 characters (found 89). 58
     Error misc FinalParameters Parameter request should be final. 58
     Error misc FinalParameters Parameter response should be final. 58
     Error misc FinalParameters Parameter object should be final. 59
     Error misc FinalParameters
    - + - + - + - + - + - + - + - + - + - + - + @@ -23998,67 +28142,67 @@

    org/laidu/learn/swagger

    org/laidu/learn/test/junit5/mock/TestedService.java

    Severity Category Rule Message Line
     Error misc NewlineAtEndOfFile File does not end with a newline.
     Error javadoc JavadocPackage Missing package-info.java file.
     Error javadoc JavadocStyle First sentence should end with a period. 8
     Error javadoc JavadocType Unknown tag 'date'. 13
     Error javadoc JavadocStyle First sentence should end with a period. 21
     Error design VisibilityModifier Variable 'id' must be private and have accessor methods. 24
     Error javadoc JavadocStyle First sentence should end with a period. 26
     Error design VisibilityModifier Variable 'name' must be private and have accessor methods. 29
     Error javadoc JavadocStyle First sentence should end with a period. 31
     Error design VisibilityModifier
    - + - + - + - + - + - + - + - + - + - + - + @@ -24067,19 +28211,19 @@

    org/laidu/learn/tes

    org/laidu/learn/test/junit5/package-info.java

    Severity Category Rule Message Line
     Error javadoc JavadocPackage Missing package-info.java file.
     Error javadoc JavadocStyle First sentence should end with a period. 5
     Error javadoc JavadocMethod Missing a Javadoc comment. 11
     Error misc FinalParameters Parameter service should be final. 11
     Error coding MagicNumber '1000' is a magic number. 13
     Error sizes LineLength Line is longer than 80 characters (found 96). 15
     Error javadoc JavadocMethod Missing a Javadoc comment. 18
     Error misc FinalParameters Parameter service should be final. 18
     Error whitespace WhitespaceAround '{' is not preceded with whitespace. 18
     Error sizes LineLength
    - + - + - + @@ -24088,55 +28232,55 @@

    org/laidu/learn/test/juni

    org/laidu/learn/test/mockito/ServiceA.java

    Severity Category Rule Message Line
     Error misc NewlineAtEndOfFile File does not end with a newline.
     Error regexp RegexpSingleline
    - + - + - + - + - + - + - + - + - + @@ -24145,25 +28289,25 @@

    org/laidu/learn/test/mockito

    org/laidu/learn/test/mockito/ServiceB.java

    Severity Category Rule Message Line
     Error javadoc JavadocVariable Missing a Javadoc comment. 16
     Error javadoc JavadocVariable Missing a Javadoc comment. 18
     Error design DesignForExtension Method 'invokeServiceB' is not designed for extension - needs to be abstract, final or empty. 20
     Error javadoc JavadocMethod Missing a Javadoc comment. 20
     Error whitespace WhitespaceAround '{' is not preceded with whitespace. 20
     Error design DesignForExtension Method 'invokeServiceC' is not designed for extension - needs to be abstract, final or empty. 24
     Error javadoc JavadocMethod Missing a Javadoc comment. 24
     Error whitespace WhitespaceAround
    - + - + - + - + @@ -24172,25 +28316,25 @@

    org/laidu/learn/test/mockito

    org/laidu/learn/test/mockito/ServiceC.java

    Severity Category Rule Message Line
     Error design DesignForExtension Method 'service' is not designed for extension - needs to be abstract, final or empty. 13
     Error javadoc JavadocMethod Missing a Javadoc comment. 13
     Error whitespace WhitespaceAround
    - + - + - + - + @@ -24199,19 +28343,19 @@

    org/laidu/learn/test/mockito

    org/laidu/learn/test/mockito/package-info.java

    Severity Category Rule Message Line
     Error design DesignForExtension Method 'service' is not designed for extension - needs to be abstract, final or empty. 13
     Error javadoc JavadocMethod Missing a Javadoc comment. 13
     Error whitespace WhitespaceAround
    - + - + - + @@ -24220,43 +28364,43 @@

    org/laidu/learn/test/moc

    org/laidu/learn/tool/cache/Cache.java

    Severity Category Rule Message Line
     Error misc NewlineAtEndOfFile File does not end with a newline.
     Error javadoc JavadocStyle
    - + - + - + - + - + - + - + @@ -24265,169 +28409,169 @@

    org/laidu/learn/tool/cache/Cache.

    org/laidu/learn/tool/cache/CacheService.java

    Severity Category Rule Message Line
     Error misc NewlineAtEndOfFile File does not end with a newline.
     Error javadoc JavadocStyle First sentence should end with a period. 5
     Error misc TodoComment Comment matches to-do format 'TODO:'. 11
     Error javadoc JavadocStyle First sentence should end with a period. 14
     Error javadoc JavadocStyle First sentence should end with a period. 22
     Error javadoc JavadocStyle
    - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -24436,55 +28580,55 @@

    org/laidu/learn/tool/cache

    org/laidu/learn/tool/cache/entry/Entry.java

    Severity Category Rule Message Line
     Error misc NewlineAtEndOfFile File does not end with a newline.
     Error javadoc JavadocStyle First sentence should end with a period. 12
     Error whitespace WhitespaceAround '{' is not preceded with whitespace. 20
     Error javadoc JavadocVariable Missing a Javadoc comment. 22
     Error javadoc JavadocVariable Missing a Javadoc comment. 23
     Error javadoc JavadocVariable Missing a Javadoc comment. 24
     Error javadoc JavadocVariable Missing a Javadoc comment. 25
     Error design DesignForExtension Method 'cache' is not designed for extension - needs to be abstract, final or empty. 27
     Error misc FinalParameters Parameter key should be final. 28
     Error misc FinalParameters Parameter o should be final. 28
     Error whitespace WhitespaceAfter ',' is not followed by whitespace. 29
     Error design DesignForExtension Method 'get' is not designed for extension - needs to be abstract, final or empty. 32
     Error misc FinalParameters Parameter key should be final. 33
     Error design DesignForExtension Method 'update' is not designed for extension - needs to be abstract, final or empty. 37
     Error misc FinalParameters Parameter key should be final. 38
     Error misc FinalParameters Parameter o should be final. 38
     Error whitespace WhitespaceAfter ',' is not followed by whitespace. 39
     Error design DesignForExtension Method 'remove' is not designed for extension - needs to be abstract, final or empty. 42
     Error misc FinalParameters Parameter key should be final. 43
     Error design DesignForExtension Method 'getAndPut' is not designed for extension - needs to be abstract, final or empty. 47
     Error misc FinalParameters Parameter key should be final. 48
     Error misc FinalParameters Parameter o should be final. 48
     Error whitespace WhitespaceAfter ',' is not followed by whitespace. 49
     Error design DesignForExtension Method 'getAndRemove' is not designed for extension - needs to be abstract, final or empty. 52
     Error misc FinalParameters Parameter key should be final. 53
     Error misc FinalParameters Parameter o should be final. 53
     Error whitespace WhitespaceAfter
    - + - + - + - + - + - + - + - + - + @@ -24493,25 +28637,25 @@

    org/laidu/learn/tool/cache/

    org/laidu/learn/tool/cache/event/CacheEntryCreatedListener.java

    Severity Category Rule Message Line
     Error misc NewlineAtEndOfFile File does not end with a newline.
     Error javadoc JavadocPackage Missing package-info.java file.
     Error imports UnusedImports Unused import - javax.cache.Cache. 3
     Error javadoc JavadocStyle First sentence should end with a period. 5
     Error javadoc JavadocType Type Javadoc comment is missing an @param <K> tag. 12
     Error javadoc JavadocType Type Javadoc comment is missing an @param <V> tag. 12
     Error sizes LineLength Line is longer than 80 characters (found 82). 30
     Error sizes LineLength
    - + - + - + - + @@ -24520,25 +28664,25 @@

    org/lai

    org/laidu/learn/tool/cache/event/CacheEntryListener.java

    Severity Category Rule Message Line
     Error misc NewlineAtEndOfFile File does not end with a newline.
     Error javadoc JavadocStyle First sentence should end with a period. 3
     Error misc TodoComment
    - + - + - + - + @@ -24547,31 +28691,31 @@

    org/laidu/lear

    org/laidu/learn/tool/cache/event/CacheEntryRemovedListener.java

    Severity Category Rule Message Line
     Error misc NewlineAtEndOfFile File does not end with a newline.
     Error javadoc JavadocStyle First sentence should end with a period. 3
     Error misc TodoComment
    - + - + - + - + - + @@ -24580,25 +28724,25 @@

    org/lai

    org/laidu/learn/tool/cache/event/CacheEntryUpdatedListener.java

    Severity Category Rule Message Line
     Error misc NewlineAtEndOfFile File does not end with a newline.
     Error javadoc JavadocStyle First sentence should end with a period. 3
     Error misc TodoComment Comment matches to-do format 'TODO:'. 10
     Error javadoc JavadocMethod
    - + - + - + - + @@ -24607,19 +28751,19 @@

    org/lai

    org/laidu/learn/tool/cache/event/EventType.java

    Severity Category Rule Message Line
     Error misc NewlineAtEndOfFile File does not end with a newline.
     Error javadoc JavadocStyle First sentence should end with a period. 3
     Error misc TodoComment
    - + - + - + @@ -24628,25 +28772,25 @@

    org/laidu/learn/tool/ca

    org/laidu/learn/tool/cache/event/package-info.java

    Severity Category Rule Message Line
     Error javadoc JavadocStyle First sentence should end with a period. 3
     Error sizes LineLength
    - + - + - + - + @@ -24655,25 +28799,25 @@

    org/laidu/learn/tool

    org/laidu/learn/tool/cache/package-info.java

    Severity Category Rule Message Line
     Error misc NewlineAtEndOfFile File does not end with a newline.
     Error javadoc JavadocStyle First sentence should end with a period. 1
     Error misc TodoComment
    - + - + - + - + @@ -24682,24 +28826,18 @@

    org/laidu/learn/tool/cache

    org/laidu/learn/tool/cache/policy/CrontabSyncPolicy.java

    Severity Category Rule Message Line
     Error misc NewlineAtEndOfFile File does not end with a newline.
     Error javadoc JavadocStyle First sentence should end with a period. 1
     Error misc TodoComment
    - + - + - - - - - - @@ -24757,16 +28895,22 @@

    org/laidu/learn/tool/

    + + + + + + - + - + @@ -24775,31 +28919,31 @@

    org/laidu/learn/tool/

    org/laidu/learn/tool/cache/provider/DSProvider.java

    Severity Category Rule Message Line
     Error misc NewlineAtEndOfFile File does not end with a newline.
     ErrorjavadocJavadocPackageMissing package-info.java file.
     Error javadoc
     Error javadocJavadocPackageMissing package-info.java file.
     Errorjavadoc JavadocStyle First sentence should end with a period. 3
     Error misc TodoComment Comment matches to-do format 'TODO:'. 10
     Error regexp RegexpSingleline
    - + - + - + - + - + @@ -24808,24 +28952,18 @@

    org/laidu/learn/too

    org/laidu/learn/tool/cache/strategy/CacheStrategy.java

    Severity Category Rule Message Line
     Error misc NewlineAtEndOfFile File does not end with a newline.
     Error javadoc JavadocPackage Missing package-info.java file.
     Error javadoc JavadocStyle First sentence should end with a period. 7
     Error misc TodoComment
    - + - + - - - - - - @@ -24862,82 +29000,88 @@

    org/laidu/lear

    + + + + + + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -24946,25 +29090,25 @@

    org/laidu/lear

    org/laidu/learn/tool/spring/package-info.java

    Severity Category Rule Message Line
     Error misc NewlineAtEndOfFile File does not end with a newline.
     ErrorjavadocJavadocPackageMissing package-info.java file.
     Error javadoc
     Error javadocJavadocPackageMissing package-info.java file.
     Errorjavadoc JavadocStyle First sentence should end with a period. 6
     Error misc TodoComment Comment matches to-do format 'TODO:'. 12
     Error javadoc JavadocVariable Missing a Javadoc comment. 15
     Error misc FinalParameters Parameter key should be final. 18
     Error misc FinalParameters Parameter o should be final. 18
     Error design DesignForExtension Method 'get' is not designed for extension - needs to be abstract, final or empty. 22
     Error misc FinalParameters Parameter key should be final. 23
     Error misc FinalParameters Parameter key should be final. 28
     Error misc FinalParameters Parameter o should be final. 28
     Error misc FinalParameters Parameter key should be final. 33
     Error misc FinalParameters Parameter key should be final. 38
     Error misc FinalParameters Parameter o should be final. 38
     Error misc FinalParameters Parameter key should be final. 43
     Error misc FinalParameters
    - + - + - + - + @@ -24973,61 +29117,61 @@

    org/laidu/learn/tool/spri

    org/laidu/learn/tool/spring/stopwatch/MockServiceClient.java

    Severity Category Rule Message Line
     Error misc NewlineAtEndOfFile File does not end with a newline.
     Error javadoc JavadocStyle First sentence should end with a period. 1
     Error misc TodoComment
    - + - + - + - + - + - + - + - + - + - + @@ -25036,37 +29180,37 @@

    org/laidu/

    org/laidu/learn/tool/spring/stopwatch/TimeConsumingStatistics.java

    Severity Category Rule Message Line
     Error design DesignForExtension Method 'open' is not designed for extension - needs to be abstract, final or empty. 14
     Error javadoc JavadocMethod Missing a Javadoc comment. 14
     Error whitespace WhitespaceAround '{' is not preceded with whitespace. 14
     Error sizes LineLength Line is longer than 80 characters (found 82). 16
     Error coding MagicNumber '1000' is a magic number. 18
     Error design DesignForExtension Method 'call' is not designed for extension - needs to be abstract, final or empty. 26
     Error javadoc JavadocMethod Missing a Javadoc comment. 26
     Error whitespace WhitespaceAround '{' is not preceded with whitespace. 26
     Error sizes LineLength
    - + - + - + - + - + - + @@ -25075,13 +29219,13 @@

    org/

    org/laidu/learn/tool/spring/stopwatch/package-info.java

    Severity Category Rule Message Line
     Error design HideUtilityClassConstructor Utility classes should not have a public or default constructor. 22
     Error javadoc JavadocMethod Missing a Javadoc comment. 25
     Error misc FinalParameters Parameter args should be final. 25
     Error sizes LineLength Line is longer than 80 characters (found 109). 40
     Error whitespace WhitespaceAfter
    - + - + @@ -25090,457 +29234,457 @@

    org/laidu/learn

    org/laidu/learn/tool/spring/stopwatch/source/StopWatch.java

    Severity Category Rule Message Line
     Error misc NewlineAtEndOfFile
    - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -25549,13 +29693,13 @@

    org/laidu/l

    org/laidu/learn/xml/dom4j/package-info.java

    Severity Category Rule Message Line
     Error javadoc JavadocPackage Missing package-info.java file.
     Error sizes LineLength Line is longer than 80 characters (found 85). 12
     Error javadoc JavadocVariable Missing a Javadoc comment. 35
     Error javadoc JavadocVariable Missing a Javadoc comment. 37
     Error javadoc JavadocStyle First sentence should end with a period. 39
     Error javadoc JavadocStyle First sentence should end with a period. 49
     Error javadoc JavadocVariable Missing a Javadoc comment. 54
     Error javadoc JavadocVariable Missing a Javadoc comment. 56
     Error javadoc JavadocStyle First sentence should end with a period. 58
     Error misc FinalParameters Parameter id should be final. 79
     Error coding HiddenField 'id' hides a field. 79
     Error design DesignForExtension Method 'getId' is not designed for extension - needs to be abstract, final or empty. 91
     Error design DesignForExtension Method 'setKeepTaskList' is not designed for extension - needs to be abstract, final or empty. 100
     Error misc FinalParameters Parameter keepTaskList should be final. 100
     Error coding HiddenField 'keepTaskList' hides a field. 100
     Error javadoc JavadocMethod Expected @param tag for 'keepTaskList'. 100
     Error design DesignForExtension Method 'start' is not designed for extension - needs to be abstract, final or empty. 111
     Error javadoc JavadocMethod Expected @throws tag for 'IllegalStateException'. 111
     Error design DesignForExtension Method 'start' is not designed for extension - needs to be abstract, final or empty. 122
     Error misc FinalParameters Parameter taskName should be final. 122
     Error javadoc JavadocMethod Expected @throws tag for 'IllegalStateException'. 122
     Error sizes LineLength Line is longer than 80 characters (found 91). 124
     Error design DesignForExtension Method 'stop' is not designed for extension - needs to be abstract, final or empty. 138
     Error javadoc JavadocMethod Expected @throws tag for 'IllegalStateException'. 138
     Error sizes LineLength Line is longer than 80 characters (found 86). 140
     Error javadoc JavadocMethod Expected an @return tag. 158
     Error design DesignForExtension Method 'isRunning' is not designed for extension - needs to be abstract, final or empty. 158
     Error javadoc JavadocMethod Expected an @return tag. 168
     Error design DesignForExtension Method 'currentTaskName' is not designed for extension - needs to be abstract, final or empty. 168
     Error javadoc JavadocMethod Expected an @return tag. 176
     Error design DesignForExtension Method 'getLastTaskTimeMillis' is not designed for extension - needs to be abstract, final or empty. 176
     Error javadoc JavadocMethod Expected @throws tag for 'IllegalStateException'. 176
     Error sizes LineLength Line is longer than 80 characters (found 90). 178
     Error javadoc JavadocMethod Expected an @return tag. 186
     Error design DesignForExtension Method 'getLastTaskName' is not designed for extension - needs to be abstract, final or empty. 186
     Error javadoc JavadocMethod Expected @throws tag for 'IllegalStateException'. 186
     Error sizes LineLength Line is longer than 80 characters (found 86). 188
     Error javadoc JavadocMethod Expected an @return tag. 196
     Error design DesignForExtension Method 'getLastTaskInfo' is not designed for extension - needs to be abstract, final or empty. 196
     Error javadoc JavadocMethod Expected @throws tag for 'IllegalStateException'. 196
     Error sizes LineLength Line is longer than 80 characters (found 86). 198
     Error javadoc JavadocMethod Expected an @return tag. 207
     Error design DesignForExtension Method 'getTotalTimeMillis' is not designed for extension - needs to be abstract, final or empty. 207
     Error javadoc JavadocMethod Expected an @return tag. 214
     Error design DesignForExtension Method 'getTotalTimeSeconds' is not designed for extension - needs to be abstract, final or empty. 214
     Error coding MagicNumber '1000.0' is a magic number. 215
     Error javadoc JavadocMethod Expected an @return tag. 221
     Error design DesignForExtension Method 'getTaskCount' is not designed for extension - needs to be abstract, final or empty. 221
     Error javadoc JavadocMethod Expected an @return tag. 228
     Error design DesignForExtension Method 'getTaskInfo' is not designed for extension - needs to be abstract, final or empty. 228
     Error sizes LineLength Line is longer than 80 characters (found 84). 230
     Error javadoc JavadocMethod Expected an @return tag. 239
     Error design DesignForExtension Method 'shortSummary' is not designed for extension - needs to be abstract, final or empty. 239
     Error sizes LineLength Line is longer than 80 characters (found 94). 240
     Error javadoc JavadocMethod Expected an @return tag. 247
     Error design DesignForExtension Method 'prettyPrint' is not designed for extension - needs to be abstract, final or empty. 247
     Error coding MagicNumber '5' is a magic number. 257
     Error coding MagicNumber '3' is a magic number. 260
     Error sizes LineLength Line is longer than 80 characters (found 97). 264
     Error sizes LineLength Line is longer than 80 characters (found 87). 273
     Error design DesignForExtension Method 'toString' is not designed for extension - needs to be abstract, final or empty. 275
     Error sizes LineLength Line is longer than 80 characters (found 107). 280
     Error sizes LineLength Line is longer than 80 characters (found 99). 281
     Error coding MagicNumber '100.0' is a magic number. 281
     Error javadoc JavadocVariable Missing a Javadoc comment. 296
     Error javadoc JavadocVariable Missing a Javadoc comment. 298
     Error javadoc JavadocMethod Missing a Javadoc comment. 300
     Error misc FinalParameters Parameter taskName should be final. 300
     Error coding HiddenField 'taskName' hides a field. 300
     Error misc FinalParameters Parameter timeMillis should be final. 300
     Error coding HiddenField 'timeMillis' hides a field. 300
     Error javadoc JavadocMethod Expected an @return tag. 308
     Error javadoc JavadocMethod Expected an @return tag. 315
     Error javadoc JavadocMethod Expected an @return tag. 322
     Error coding MagicNumber
    - + - + @@ -25564,13 +29708,13 @@

    org/laidu/learn/xml/dom4j/p

    org/laidu/learn/xml/jdk/package-info.java

    Severity Category Rule Message Line
     Error misc NewlineAtEndOfFile
    - + - + @@ -25579,13 +29723,13 @@

    org/laidu/learn/xml/jdk/packa

    org/laidu/learn/xml/jsoup/package-info.java

    Severity Category Rule Message Line
     Error misc NewlineAtEndOfFile
    - + - + @@ -25594,13 +29738,13 @@

    org/laidu/learn/xml/jsoup/p

    org/laidu/learn/xml/package-info.java

    Severity Category Rule Message Line
     Error misc NewlineAtEndOfFile
    - + - + @@ -25609,13 +29753,13 @@

    org/laidu/learn/xml/package-info.

    org/laidu/production/component/package-info.java

    Severity Category Rule Message Line
     Error misc NewlineAtEndOfFile
    - + - + diff --git a/docs/checkstyle.html b/docs/checkstyle.html index a092e11c3..d5810711e 100644 --- a/docs/checkstyle.html +++ b/docs/checkstyle.html @@ -1,5 +1,5 @@ - + @@ -25,7 +25,7 @@ @@ -97,7 +97,7 @@ under the License. 0 @@ -200,7 +200,7 @@ under the License. @@ -279,7 +279,7 @@ under the License. 0 @@ -307,7 +307,7 @@ under the License. 0 @@ -391,7 +391,7 @@ under the License. 0 @@ -407,6 +407,34 @@ under the License. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -965,7 +1077,7 @@ under the License. 0 @@ -1021,7 +1133,7 @@ under the License. 0 @@ -1093,6 +1205,20 @@ under the License. + + + + + + @@ -1385,7 +1511,7 @@ under the License. 0 @@ -1497,7 +1623,7 @@ under the License. 0 @@ -1527,6 +1653,20 @@ under the License. + + + + + + @@ -1572,7 +1712,7 @@ under the License. @@ -1623,7 +1763,7 @@ under the License. 0 @@ -1707,7 +1847,7 @@ under the License. 0 @@ -1737,6 +1877,20 @@ under the License. + + + + + + @@ -1847,7 +2001,7 @@ under the License. 0 @@ -1891,6 +2045,20 @@ under the License. + + + + + + + + + + + + @@ -2379,7 +2561,7 @@ under the License. 0 @@ -2491,7 +2673,7 @@ under the License. 0 @@ -2566,7 +2748,7 @@ under the License. + + + + + + + + + + + + + + + + + + + + + + + + @@ -3011,6 +3249,20 @@ under the License. + + + + + + + + + + + + @@ -3459,6 +3725,20 @@ under the License. + + + + + + + + + + + + + + + + + + @@ -4031,7 +4339,21 @@ under the License. 0 + + + + + + @@ -4087,7 +4409,7 @@ under the License. 0 @@ -4129,7 +4451,7 @@ under the License. 0 @@ -4173,6 +4495,20 @@ under the License. + + + + + + - + - + - + - + - +
    Severity Category Rule Message Line
     Error misc NewlineAtEndOfFile - 4 + 3
    - 17 + 16
    - org/laidu/learn/amqp/rabbitmq/official/conf/RabbitmqConfig.java + org/laidu/learn/amqp/rabbitmq/official/work/queues/package-info.java 0 @@ -209,12 +209,12 @@ under the License. 0 - 8 + 1
    - org/laidu/learn/amqp/rabbitmq/official/work/queues/package-info.java + org/laidu/learn/amqp/rabbitmq/official/conf/RabbitmqConfig.java 0 @@ -223,12 +223,12 @@ under the License. 0 - 1 + 8
    - org/laidu/learn/design/pattern/_abstract/factory/Client.java + org/laidu/learn/design/pattern/singleton/Singleton.java 0 @@ -237,12 +237,12 @@ under the License. 0 - 7 + 26
    - org/laidu/learn/design/pattern/singleton/Singleton.java + org/laidu/learn/design/pattern/_abstract/factory/Client.java 0 @@ -251,7 +251,7 @@ under the License. 0 - 26 + 7
    - 7 + 8
    - 4 + 3
    - 15 + 14
    2
    + org/laidu/crawler/helper/model/http/burp/BurpSiteItem.java + + 0 + + 0 + + 2 +
    + org/laidu/learn/mybatis/config/DruidConfig.java + + 0 + + 0 + + 22 +
    @@ -505,6 +533,20 @@ under the License. 4
    + org/laidu/learn/mybatis/package-info.java + + 0 + + 0 + + 1 +
    @@ -533,6 +575,20 @@ under the License. 8
    + org/laidu/learn/mybatis/Application.java + + 0 + + 0 + + 6 +
    @@ -589,6 +645,20 @@ under the License. 3
    + org/laidu/learn/date/structure/tree/package-info.java + + 0 + + 0 + + 2 +
    @@ -673,6 +743,34 @@ under the License. 1
    + org/laidu/learn/date/structure/tree/basic/ListAllFiles.java + + 0 + + 0 + + 19 +
    + org/laidu/learn/code/practice/jianzhioffer/ReConstructBinaryTree.java + + 0 + + 0 + + 17 +
    @@ -701,6 +799,20 @@ under the License. 4
    + org/elasticsearch/xpack/core/XPackBuild.java + + 0 + + 0 + + 22 +
    @@ -844,7 +956,7 @@ under the License.
    - org/laidu/learn/design/pattern/_abstract/factory/ConcreteProductB.java + org/laidu/learn/design/pattern/iterator/Iterator.java 0 @@ -853,12 +965,12 @@ under the License. 0 - 3 + 7
    - org/laidu/learn/design/pattern/iterator/Iterator.java + org/laidu/learn/design/pattern/_abstract/factory/ConcreteProductB.java 0 @@ -867,7 +979,7 @@ under the License. 0 - 7 + 3
    - 26 + 27
    - 5 + 4
    13
    + org/elasticsearch/license/LicenseVerifier.java + + 0 + + 0 + + 14 +
    @@ -1189,7 +1315,7 @@ under the License. 0 - 8 + 7
    - 29 + 30
    - 20 + 21
    1
    + org/laidu/learn/amqp/service/Calculate.java + + 0 + + 0 + + 3 +
    @@ -1544,7 +1684,7 @@ under the License.
    - org/laidu/learn/amqp/service/Calculate.java + org/laidu/commom/util/http/har/model/Response.java 0 @@ -1553,7 +1693,7 @@ under the License. 0 - 3 + 19
    - org/laidu/commom/util/http/har/model/Response.java + org/laidu/learn/design/pattern/uml/Student.java 0 @@ -1581,12 +1721,12 @@ under the License. 0 - 19 + 2
    - org/laidu/learn/design/pattern/uml/Student.java + org/laidu/crawler/helper/model/http/burp/Response.java 0 @@ -1595,7 +1735,7 @@ under the License. 0 - 2 + 3
    - 6 + 5
    - 4 + 3
    7
    + org/laidu/crawler/helper/model/http/burp/Item.java + + 0 + + 0 + + 15 +
    @@ -1819,7 +1973,7 @@ under the License. 0 - 9 + 10
    - 15 + 16
    1
    + org/laidu/learn/book/learn/dsaa3th/package-info.java + + 0 + + 0 + + 1 +
    @@ -1905,6 +2073,20 @@ under the License. 11
    + org/laidu/learn/aws/dynamodb/convert/ItermConverter.java + + 0 + + 0 + + 25 +
    @@ -1917,7 +2099,7 @@ under the License. 0 - 6 + 7
    - 8 + 9
    - 8 + 9
    - org/laidu/learn/design/pattern/builder/Client.java + org/laidu/learn/design/pattern/simple/factory/ConcreteBlueProduct.java 0 @@ -2580,7 +2762,7 @@ under the License.
    - org/laidu/learn/design/pattern/simple/factory/ConcreteBlueProduct.java + org/laidu/learn/design/pattern/builder/Client.java 0 @@ -2619,6 +2801,20 @@ under the License. 17
    + org/laidu/learn/mybatis/controller/UserInfoController.java + + 0 + + 0 + + 10 +
    @@ -2633,6 +2829,20 @@ under the License. 2
    + org/laidu/learn/aws/dynamodb/package-info.java + + 0 + + 0 + + 2 +
    @@ -2787,6 +2997,20 @@ under the License. 3
    + org/laidu/crawler/helper/model/http/burp/Host.java + + 0 + + 0 + + 3 +
    @@ -2899,6 +3123,20 @@ under the License. 28
    + org/laidu/learn/mybatis/mapper/AppUserMapper.java + + 0 + + 0 + + 187 +
    @@ -2911,7 +3149,7 @@ under the License. 0 - 4 + 5
    36
    + org/laidu/learn/mybatis/mapper/AppUserSqlProvider.java + + 0 + + 0 + + 66 +
    @@ -3123,6 +3375,20 @@ under the License. 54
    + org/laidu/crawler/helper/model/http/burp/package-info.java + + 0 + + 0 + + 1 +
    @@ -3317,7 +3583,7 @@ under the License. 0 - 1 + 2
    3
    + org/laidu/crawler/helper/model/http/har/package-info.java + + 0 + + 0 + + 1 +
    @@ -3753,6 +4033,20 @@ under the License. 5
    + org/laidu/crawler/helper/model/http/burp/Request.java + + 0 + + 0 + + 3 +
    @@ -3963,6 +4257,20 @@ under the License. 1
    + org/laidu/learn/mybatis/model/AppUser.java + + 0 + + 0 + + 190 +
    @@ -3989,7 +4297,7 @@ under the License. 0 - 3 + 4
    - 6 + 5 +
    + org/laidu/crawler/helper/model/http/burp/Items.java + + 0 + + 0 + + 4
    - 36 + 35
    - 27 + 26
    3
    + org/laidu/learn/date/structure/tree/Binarytree/BtreeBasic.java + + 0 + + 0 + + 16 +
    diff --git a/docs/dependencies.html b/docs/dependencies.html index 65cf2a504..72e4cd18f 100644 --- a/docs/dependencies.html +++ b/docs/dependencies.html @@ -1,5 +1,5 @@ - + @@ -25,7 +25,7 @@
    Number of modules:58
    64
    Number of dependencies (NOD):338
    379
    Number of unique artifacts (NOA):500
    550
    Number of version-conflicting artifacts (NOC):43
    44
    Number of SNAPSHOT artifacts (NOS): 0
    Convergence (NOD/NOA):[Error] 67 %
    [Error] 68 %
    Ready for release (100% convergence and no SNAPSHOTS): [Error] Error
    You do not have 100% convergence.
    @@ -181,8 +181,9 @@

    ch.qos.logback:logback-accessorg.laidu.learn:spring-amqp:jar:1.0-SNAPSHOT
    \- org.laidu.learn:common-util:jar:1.0-SNAPSHOT:compile
       \- (ch.qos.logback:logback-access:jar:1.1.11:compile - version managed from 1.2.3; omitted for conflict with 1.2.3)

  • org.laidu.learn:spring-boot:pom:1.0-SNAPSHOT
    \- org.laidu.learn:common-util:jar:1.0-SNAPSHOT:compile
       \- (ch.qos.logback:logback-access:jar:1.1.11:compile - version managed from 1.2.3; omitted for conflict with 1.2.3)

  • org.laidu.learn:spring-cloud:pom:1.0-SNAPSHOT
    \- org.laidu.learn:common-util:jar:1.0-SNAPSHOT:compile
       \- (ch.qos.logback:logback-access:jar:1.1.11:compile - version managed from 1.2.3; omitted for conflict with 1.2.3)

  • -
  • org.laidu.learn:spring-data:jar:1.0-SNAPSHOT
    \- org.laidu.learn:common-util:jar:1.0-SNAPSHOT:compile
       \- (ch.qos.logback:logback-access:jar:1.1.11:compile - version managed from 1.2.3; omitted for conflict with 1.2.3)

  • +
  • org.laidu.learn:spring-data:pom:1.0-SNAPSHOT
    \- org.laidu.learn:common-util:jar:1.0-SNAPSHOT:compile
       \- (ch.qos.logback:logback-access:jar:1.1.11:compile - version managed from 1.2.3; omitted for conflict with 1.2.3)

  • org.laidu.learn:spring-hadoop:jar:1.0-SNAPSHOT
    \- org.laidu.learn:common-util:jar:1.0-SNAPSHOT:compile
       \- (ch.qos.logback:logback-access:jar:1.1.11:compile - version managed from 1.2.3; omitted for conflict with 1.2.3)

  • +
  • org.laidu.learn:spring-mybatis:jar:1.0-SNAPSHOT
    \- org.laidu.learn:common-util:jar:1.0-SNAPSHOT:compile
       \- (ch.qos.logback:logback-access:jar:1.1.11:compile - version managed from 1.2.3; omitted for conflict with 1.2.3)

  • org.laidu.learn:spring:pom:1.0-SNAPSHOT
    \- org.laidu.learn:common-util:jar:1.0-SNAPSHOT:compile
       \- (ch.qos.logback:logback-access:jar:1.1.11:compile - version managed from 1.2.3; omitted for conflict with 1.2.3)

  • 1.2.3 @@ -192,8 +193,9 @@

    ch.qos.logback:logback-accessorg.laidu.learn:spring-amqp:jar:1.0-SNAPSHOT
    \- ch.qos.logback:logback-access:jar:1.2.3:compile

  • org.laidu.learn:spring-boot:pom:1.0-SNAPSHOT
    \- ch.qos.logback:logback-access:jar:1.2.3:compile

  • org.laidu.learn:spring-cloud:pom:1.0-SNAPSHOT
    \- ch.qos.logback:logback-access:jar:1.2.3:compile

  • -
  • org.laidu.learn:spring-data:jar:1.0-SNAPSHOT
    \- ch.qos.logback:logback-access:jar:1.2.3:compile

  • +
  • org.laidu.learn:spring-data:pom:1.0-SNAPSHOT
    \- ch.qos.logback:logback-access:jar:1.2.3:compile

  • org.laidu.learn:spring-hadoop:jar:1.0-SNAPSHOT
    \- ch.qos.logback:logback-access:jar:1.2.3:compile

  • +
  • org.laidu.learn:spring-mybatis:jar:1.0-SNAPSHOT
    \- ch.qos.logback:logback-access:jar:1.2.3:compile

  • org.laidu.learn:spring:pom:1.0-SNAPSHOT
    \- ch.qos.logback:logback-access:jar:1.2.3:compile

  • ch.qos.logback:logback-classic

    @@ -211,8 +213,9 @@

    ch.qos.logback:logback-classic<
  • org.laidu.learn:spring-amqp:jar:1.0-SNAPSHOT
    +- org.springframework.boot:spring-boot-starter:jar:1.5.9.RELEASE:compile
    |  \- org.springframework.boot:spring-boot-starter-logging:jar:1.5.9.RELEASE:compile
    |     \- (ch.qos.logback:logback-classic:jar:1.1.11:compile - version managed from 1.2.3; omitted for duplicate)
    \- org.laidu.learn:common-util:jar:1.0-SNAPSHOT:compile
       \- (ch.qos.logback:logback-classic:jar:1.1.11:compile - version managed from 1.2.3; omitted for conflict with 1.2.3)

  • org.laidu.learn:spring-boot:pom:1.0-SNAPSHOT
    +- org.springframework.boot:spring-boot-starter:jar:1.5.9.RELEASE:compile
    |  \- org.springframework.boot:spring-boot-starter-logging:jar:1.5.9.RELEASE:compile
    |     \- (ch.qos.logback:logback-classic:jar:1.1.11:compile - version managed from 1.2.3; omitted for duplicate)
    \- org.laidu.learn:common-util:jar:1.0-SNAPSHOT:compile
       \- (ch.qos.logback:logback-classic:jar:1.1.11:compile - version managed from 1.2.3; omitted for conflict with 1.2.3)

  • org.laidu.learn:spring-cloud:pom:1.0-SNAPSHOT
    +- org.springframework.boot:spring-boot-starter:jar:1.5.9.RELEASE:compile
    |  \- org.springframework.boot:spring-boot-starter-logging:jar:1.5.9.RELEASE:compile
    |     \- (ch.qos.logback:logback-classic:jar:1.1.11:compile - version managed from 1.2.3; omitted for duplicate)
    \- org.laidu.learn:common-util:jar:1.0-SNAPSHOT:compile
       \- (ch.qos.logback:logback-classic:jar:1.1.11:compile - version managed from 1.2.3; omitted for conflict with 1.2.3)

  • -
  • org.laidu.learn:spring-data:jar:1.0-SNAPSHOT
    +- org.springframework.boot:spring-boot-starter:jar:1.5.9.RELEASE:compile
    |  \- org.springframework.boot:spring-boot-starter-logging:jar:1.5.9.RELEASE:compile
    |     \- (ch.qos.logback:logback-classic:jar:1.1.11:compile - version managed from 1.2.3; omitted for duplicate)
    \- org.laidu.learn:common-util:jar:1.0-SNAPSHOT:compile
       \- (ch.qos.logback:logback-classic:jar:1.1.11:compile - version managed from 1.2.3; omitted for conflict with 1.2.3)

  • +
  • org.laidu.learn:spring-data:pom:1.0-SNAPSHOT
    +- org.springframework.boot:spring-boot-starter:jar:1.5.9.RELEASE:compile
    |  \- org.springframework.boot:spring-boot-starter-logging:jar:1.5.9.RELEASE:compile
    |     \- (ch.qos.logback:logback-classic:jar:1.1.11:compile - version managed from 1.2.3; omitted for duplicate)
    \- org.laidu.learn:common-util:jar:1.0-SNAPSHOT:compile
       \- (ch.qos.logback:logback-classic:jar:1.1.11:compile - version managed from 1.2.3; omitted for conflict with 1.2.3)

  • org.laidu.learn:spring-hadoop:jar:1.0-SNAPSHOT
    +- org.springframework.boot:spring-boot-starter:jar:1.5.9.RELEASE:compile
    |  \- org.springframework.boot:spring-boot-starter-logging:jar:1.5.9.RELEASE:compile
    |     \- (ch.qos.logback:logback-classic:jar:1.1.11:compile - version managed from 1.2.3; omitted for duplicate)
    \- org.laidu.learn:common-util:jar:1.0-SNAPSHOT:compile
       \- (ch.qos.logback:logback-classic:jar:1.1.11:compile - version managed from 1.2.3; omitted for conflict with 1.2.3)

  • +
  • org.laidu.learn:spring-mybatis:jar:1.0-SNAPSHOT
    +- org.springframework.boot:spring-boot-starter:jar:1.5.9.RELEASE:compile
    |  \- org.springframework.boot:spring-boot-starter-logging:jar:1.5.9.RELEASE:compile
    |     \- (ch.qos.logback:logback-classic:jar:1.1.11:compile - version managed from 1.2.3; omitted for duplicate)
    \- org.laidu.learn:common-util:jar:1.0-SNAPSHOT:compile
       \- (ch.qos.logback:logback-classic:jar:1.1.11:compile - version managed from 1.2.3; omitted for conflict with 1.2.3)

  • org.laidu.learn:spring:pom:1.0-SNAPSHOT
    +- org.springframework.boot:spring-boot-starter:jar:1.5.9.RELEASE:compile
    |  \- org.springframework.boot:spring-boot-starter-logging:jar:1.5.9.RELEASE:compile
    |     \- (ch.qos.logback:logback-classic:jar:1.1.11:compile - version managed from 1.2.3; omitted for duplicate)
    \- org.laidu.learn:common-util:jar:1.0-SNAPSHOT:compile
       \- (ch.qos.logback:logback-classic:jar:1.1.11:compile - version managed from 1.2.3; omitted for conflict with 1.2.3)

  • 1.2.3 @@ -223,8 +226,9 @@

    ch.qos.logback:logback-classic<
  • org.laidu.learn:spring-amqp:jar:1.0-SNAPSHOT
    \- ch.qos.logback:logback-classic:jar:1.2.3:compile

  • org.laidu.learn:spring-boot:pom:1.0-SNAPSHOT
    \- ch.qos.logback:logback-classic:jar:1.2.3:compile

  • org.laidu.learn:spring-cloud:pom:1.0-SNAPSHOT
    \- ch.qos.logback:logback-classic:jar:1.2.3:compile

  • -
  • org.laidu.learn:spring-data:jar:1.0-SNAPSHOT
    \- ch.qos.logback:logback-classic:jar:1.2.3:compile

  • +
  • org.laidu.learn:spring-data:pom:1.0-SNAPSHOT
    \- ch.qos.logback:logback-classic:jar:1.2.3:compile

  • org.laidu.learn:spring-hadoop:jar:1.0-SNAPSHOT
    \- ch.qos.logback:logback-classic:jar:1.2.3:compile

  • +
  • org.laidu.learn:spring-mybatis:jar:1.0-SNAPSHOT
    \- ch.qos.logback:logback-classic:jar:1.2.3:compile

  • org.laidu.learn:spring:pom:1.0-SNAPSHOT
    \- ch.qos.logback:logback-classic:jar:1.2.3:compile

  • ch.qos.logback:logback-core

    @@ -241,8 +245,9 @@

    ch.qos.logback:logback-core

  • org.laidu.learn:spring-amqp:jar:1.0-SNAPSHOT
    +- org.laidu.learn:common-util:jar:1.0-SNAPSHOT:compile
    |  \- (ch.qos.logback:logback-core:jar:1.1.11:compile - version managed from 1.2.3; omitted for conflict with 1.2.3)
    +- ch.qos.logback:logback-classic:jar:1.2.3:compile
    |  \- (ch.qos.logback:logback-core:jar:1.1.11:compile - version managed from 1.2.3; omitted for conflict with 1.2.3)
    \- ch.qos.logback:logback-access:jar:1.2.3:compile
       \- (ch.qos.logback:logback-core:jar:1.1.11:compile - version managed from 1.2.3; omitted for conflict with 1.2.3)

  • org.laidu.learn:spring-boot:pom:1.0-SNAPSHOT
    +- org.laidu.learn:common-util:jar:1.0-SNAPSHOT:compile
    |  \- (ch.qos.logback:logback-core:jar:1.1.11:compile - version managed from 1.2.3; omitted for conflict with 1.2.3)
    +- ch.qos.logback:logback-classic:jar:1.2.3:compile
    |  \- (ch.qos.logback:logback-core:jar:1.1.11:compile - version managed from 1.2.3; omitted for conflict with 1.2.3)
    \- ch.qos.logback:logback-access:jar:1.2.3:compile
       \- (ch.qos.logback:logback-core:jar:1.1.11:compile - version managed from 1.2.3; omitted for conflict with 1.2.3)

  • org.laidu.learn:spring-cloud:pom:1.0-SNAPSHOT
    +- org.laidu.learn:common-util:jar:1.0-SNAPSHOT:compile
    |  \- (ch.qos.logback:logback-core:jar:1.1.11:compile - version managed from 1.2.3; omitted for conflict with 1.2.3)
    +- ch.qos.logback:logback-classic:jar:1.2.3:compile
    |  \- (ch.qos.logback:logback-core:jar:1.1.11:compile - version managed from 1.2.3; omitted for conflict with 1.2.3)
    \- ch.qos.logback:logback-access:jar:1.2.3:compile
       \- (ch.qos.logback:logback-core:jar:1.1.11:compile - version managed from 1.2.3; omitted for conflict with 1.2.3)

  • -
  • org.laidu.learn:spring-data:jar:1.0-SNAPSHOT
    +- org.laidu.learn:common-util:jar:1.0-SNAPSHOT:compile
    |  \- (ch.qos.logback:logback-core:jar:1.1.11:compile - version managed from 1.2.3; omitted for conflict with 1.2.3)
    +- ch.qos.logback:logback-classic:jar:1.2.3:compile
    |  \- (ch.qos.logback:logback-core:jar:1.1.11:compile - version managed from 1.2.3; omitted for conflict with 1.2.3)
    \- ch.qos.logback:logback-access:jar:1.2.3:compile
       \- (ch.qos.logback:logback-core:jar:1.1.11:compile - version managed from 1.2.3; omitted for conflict with 1.2.3)

  • +
  • org.laidu.learn:spring-data:pom:1.0-SNAPSHOT
    +- org.laidu.learn:common-util:jar:1.0-SNAPSHOT:compile
    |  \- (ch.qos.logback:logback-core:jar:1.1.11:compile - version managed from 1.2.3; omitted for conflict with 1.2.3)
    +- ch.qos.logback:logback-classic:jar:1.2.3:compile
    |  \- (ch.qos.logback:logback-core:jar:1.1.11:compile - version managed from 1.2.3; omitted for conflict with 1.2.3)
    \- ch.qos.logback:logback-access:jar:1.2.3:compile
       \- (ch.qos.logback:logback-core:jar:1.1.11:compile - version managed from 1.2.3; omitted for conflict with 1.2.3)

  • org.laidu.learn:spring-hadoop:jar:1.0-SNAPSHOT
    +- org.laidu.learn:common-util:jar:1.0-SNAPSHOT:compile
    |  \- (ch.qos.logback:logback-core:jar:1.1.11:compile - version managed from 1.2.3; omitted for conflict with 1.2.3)
    +- ch.qos.logback:logback-classic:jar:1.2.3:compile
    |  \- (ch.qos.logback:logback-core:jar:1.1.11:compile - version managed from 1.2.3; omitted for conflict with 1.2.3)
    \- ch.qos.logback:logback-access:jar:1.2.3:compile
       \- (ch.qos.logback:logback-core:jar:1.1.11:compile - version managed from 1.2.3; omitted for conflict with 1.2.3)

  • +
  • org.laidu.learn:spring-mybatis:jar:1.0-SNAPSHOT
    +- org.laidu.learn:common-util:jar:1.0-SNAPSHOT:compile
    |  \- (ch.qos.logback:logback-core:jar:1.1.11:compile - version managed from 1.2.3; omitted for conflict with 1.2.3)
    +- ch.qos.logback:logback-classic:jar:1.2.3:compile
    |  \- (ch.qos.logback:logback-core:jar:1.1.11:compile - version managed from 1.2.3; omitted for conflict with 1.2.3)
    \- ch.qos.logback:logback-access:jar:1.2.3:compile
       \- (ch.qos.logback:logback-core:jar:1.1.11:compile - version managed from 1.2.3; omitted for conflict with 1.2.3)

  • org.laidu.learn:spring:pom:1.0-SNAPSHOT
    +- org.laidu.learn:common-util:jar:1.0-SNAPSHOT:compile
    |  \- (ch.qos.logback:logback-core:jar:1.1.11:compile - version managed from 1.2.3; omitted for conflict with 1.2.3)
    +- ch.qos.logback:logback-classic:jar:1.2.3:compile
    |  \- (ch.qos.logback:logback-core:jar:1.1.11:compile - version managed from 1.2.3; omitted for conflict with 1.2.3)
    \- ch.qos.logback:logback-access:jar:1.2.3:compile
       \- (ch.qos.logback:logback-core:jar:1.1.11:compile - version managed from 1.2.3; omitted for conflict with 1.2.3)

  • 1.2.3 @@ -252,8 +257,9 @@

    ch.qos.logback:logback-core

  • org.laidu.learn:spring-amqp:jar:1.0-SNAPSHOT
    \- ch.qos.logback:logback-core:jar:1.2.3:compile

  • org.laidu.learn:spring-boot:pom:1.0-SNAPSHOT
    \- ch.qos.logback:logback-core:jar:1.2.3:compile

  • org.laidu.learn:spring-cloud:pom:1.0-SNAPSHOT
    \- ch.qos.logback:logback-core:jar:1.2.3:compile

  • -
  • org.laidu.learn:spring-data:jar:1.0-SNAPSHOT
    \- ch.qos.logback:logback-core:jar:1.2.3:compile

  • +
  • org.laidu.learn:spring-data:pom:1.0-SNAPSHOT
    \- ch.qos.logback:logback-core:jar:1.2.3:compile

  • org.laidu.learn:spring-hadoop:jar:1.0-SNAPSHOT
    \- ch.qos.logback:logback-core:jar:1.2.3:compile

  • +
  • org.laidu.learn:spring-mybatis:jar:1.0-SNAPSHOT
    \- ch.qos.logback:logback-core:jar:1.2.3:compile

  • org.laidu.learn:spring:pom:1.0-SNAPSHOT
    \- ch.qos.logback:logback-core:jar:1.2.3:compile

  • com.alibaba:fastjson

    @@ -303,6 +309,7 @@

    com.fasterxml.j
  • org.laidu.crawler:crawler-helper:jar:1.0-SNAPSHOT
    \- org.laidu.learn:common-util:jar:1.0-SNAPSHOT:compile
       \- com.fasterxml.jackson.core:jackson-databind:jar:2.9.1:compile
          \- (com.fasterxml.jackson.core:jackson-annotations:jar:2.9.0:compile - omitted for conflict with 2.9.1)

  • org.laidu.learn:algorithm:jar:1.0-SNAPSHOT
    \- org.laidu.learn:common-util:jar:1.0-SNAPSHOT:compile
       \- com.fasterxml.jackson.core:jackson-databind:jar:2.9.1:compile
          \- (com.fasterxml.jackson.core:jackson-annotations:jar:2.9.0:compile - omitted for conflict with 2.9.1)

  • org.laidu.learn:async-http-client:jar:1.0-SNAPSHOT
    \- org.laidu.learn:common-util:jar:1.0-SNAPSHOT:compile
       \- com.fasterxml.jackson.core:jackson-databind:jar:2.9.1:compile
          \- (com.fasterxml.jackson.core:jackson-annotations:jar:2.9.0:compile - omitted for conflict with 2.9.1)

  • +
  • org.laidu.learn:aws:pom:1.0-SNAPSHOT
    \- org.laidu.learn:common-util:jar:1.0-SNAPSHOT:compile
       \- com.fasterxml.jackson.core:jackson-databind:jar:2.9.1:compile
          \- (com.fasterxml.jackson.core:jackson-annotations:jar:2.9.0:compile - omitted for conflict with 2.9.1)

  • org.laidu.learn:common-util:jar:1.0-SNAPSHOT
    \- com.fasterxml.jackson.core:jackson-databind:jar:2.9.1:compile
       \- (com.fasterxml.jackson.core:jackson-annotations:jar:2.9.0:compile - omitted for conflict with 2.9.1)

  • org.laidu.learn:common:pom:1.0-SNAPSHOT
    \- org.laidu.learn:common-util:jar:1.0-SNAPSHOT:compile
       \- com.fasterxml.jackson.core:jackson-databind:jar:2.9.1:compile
          \- (com.fasterxml.jackson.core:jackson-annotations:jar:2.9.0:compile - omitted for conflict with 2.9.1)

  • org.laidu.learn:commons-cli:jar:1.0-SNAPSHOT
    \- org.laidu.learn:common-util:jar:1.0-SNAPSHOT:compile
       \- com.fasterxml.jackson.core:jackson-databind:jar:2.9.1:compile
          \- (com.fasterxml.jackson.core:jackson-annotations:jar:2.9.0:compile - omitted for conflict with 2.9.1)

  • @@ -310,6 +317,7 @@

    com.fasterxml.j
  • org.laidu.learn:commons-net:jar:1.0-SNAPSHOT
    \- org.laidu.learn:common-util:jar:1.0-SNAPSHOT:compile
       \- com.fasterxml.jackson.core:jackson-databind:jar:2.9.1:compile
          \- (com.fasterxml.jackson.core:jackson-annotations:jar:2.9.0:compile - omitted for conflict with 2.9.1)

  • org.laidu.learn:commons-text:jar:1.0-SNAPSHOT
    \- org.laidu.learn:common-util:jar:1.0-SNAPSHOT:compile
       \- com.fasterxml.jackson.core:jackson-databind:jar:2.9.1:compile
          \- (com.fasterxml.jackson.core:jackson-annotations:jar:2.9.0:compile - omitted for conflict with 2.9.1)

  • org.laidu.learn:drools:jar:1.0-SNAPSHOT
    \- org.laidu.learn:common-util:jar:1.0-SNAPSHOT:compile
       \- com.fasterxml.jackson.core:jackson-databind:jar:2.9.1:compile
          \- (com.fasterxml.jackson.core:jackson-annotations:jar:2.9.0:compile - omitted for conflict with 2.9.1)

  • +
  • org.laidu.learn:dynamoDB:jar:1.0-SNAPSHOT
    \- org.laidu.learn:common-util:jar:1.0-SNAPSHOT:compile
       \- com.fasterxml.jackson.core:jackson-databind:jar:2.9.1:compile
          \- (com.fasterxml.jackson.core:jackson-annotations:jar:2.9.0:compile - omitted for conflict with 2.9.1)

  • org.laidu.learn:framework:pom:1.0-SNAPSHOT
    \- org.laidu.learn:common-util:jar:1.0-SNAPSHOT:compile
       \- com.fasterxml.jackson.core:jackson-databind:jar:2.9.1:compile
          \- (com.fasterxml.jackson.core:jackson-annotations:jar:2.9.0:compile - omitted for conflict with 2.9.1)

  • org.laidu.learn:httpclient:jar:1.0-SNAPSHOT
    \- org.laidu.learn:common-util:jar:1.0-SNAPSHOT:compile
       \- com.fasterxml.jackson.core:jackson-databind:jar:2.9.1:compile
          \- (com.fasterxml.jackson.core:jackson-annotations:jar:2.9.0:compile - omitted for conflict with 2.9.1)

  • org.laidu.learn:junit5:jar:1.0-SNAPSHOT
    \- org.laidu.learn:common-util:jar:1.0-SNAPSHOT:compile
       \- com.fasterxml.jackson.core:jackson-databind:jar:2.9.1:compile
          \- (com.fasterxml.jackson.core:jackson-annotations:jar:2.9.0:compile - omitted for conflict with 2.9.1)

  • @@ -328,6 +336,7 @@

    com.fasterxml.j
  • org.laidu.crawler:crawler-helper:jar:1.0-SNAPSHOT
    \- org.laidu.learn:common-util:jar:1.0-SNAPSHOT:compile
       \- com.fasterxml.jackson.core:jackson-annotations:jar:2.9.1:compile

  • org.laidu.learn:algorithm:jar:1.0-SNAPSHOT
    \- org.laidu.learn:common-util:jar:1.0-SNAPSHOT:compile
       \- com.fasterxml.jackson.core:jackson-annotations:jar:2.9.1:compile

  • org.laidu.learn:async-http-client:jar:1.0-SNAPSHOT
    \- org.laidu.learn:common-util:jar:1.0-SNAPSHOT:compile
       \- com.fasterxml.jackson.core:jackson-annotations:jar:2.9.1:compile

  • +
  • org.laidu.learn:aws:pom:1.0-SNAPSHOT
    \- org.laidu.learn:common-util:jar:1.0-SNAPSHOT:compile
       \- com.fasterxml.jackson.core:jackson-annotations:jar:2.9.1:compile

  • org.laidu.learn:common-util:jar:1.0-SNAPSHOT
    \- com.fasterxml.jackson.core:jackson-annotations:jar:2.9.1:compile

  • org.laidu.learn:common:pom:1.0-SNAPSHOT
    \- org.laidu.learn:common-util:jar:1.0-SNAPSHOT:compile
       \- com.fasterxml.jackson.core:jackson-annotations:jar:2.9.1:compile

  • org.laidu.learn:commons-cli:jar:1.0-SNAPSHOT
    \- org.laidu.learn:common-util:jar:1.0-SNAPSHOT:compile
       \- com.fasterxml.jackson.core:jackson-annotations:jar:2.9.1:compile

  • @@ -335,6 +344,7 @@

    com.fasterxml.j
  • org.laidu.learn:commons-net:jar:1.0-SNAPSHOT
    \- org.laidu.learn:common-util:jar:1.0-SNAPSHOT:compile
       \- com.fasterxml.jackson.core:jackson-annotations:jar:2.9.1:compile

  • org.laidu.learn:commons-text:jar:1.0-SNAPSHOT
    \- org.laidu.learn:common-util:jar:1.0-SNAPSHOT:compile
       \- com.fasterxml.jackson.core:jackson-annotations:jar:2.9.1:compile

  • org.laidu.learn:drools:jar:1.0-SNAPSHOT
    \- org.laidu.learn:common-util:jar:1.0-SNAPSHOT:compile
       \- com.fasterxml.jackson.core:jackson-annotations:jar:2.9.1:compile

  • +
  • org.laidu.learn:dynamoDB:jar:1.0-SNAPSHOT
    \- org.laidu.learn:common-util:jar:1.0-SNAPSHOT:compile
       \- com.fasterxml.jackson.core:jackson-annotations:jar:2.9.1:compile

  • org.laidu.learn:framework:pom:1.0-SNAPSHOT
    \- org.laidu.learn:common-util:jar:1.0-SNAPSHOT:compile
       \- com.fasterxml.jackson.core:jackson-annotations:jar:2.9.1:compile

  • org.laidu.learn:httpclient:jar:1.0-SNAPSHOT
    \- org.laidu.learn:common-util:jar:1.0-SNAPSHOT:compile
       \- com.fasterxml.jackson.core:jackson-annotations:jar:2.9.1:compile

  • org.laidu.learn:junit5:jar:1.0-SNAPSHOT
    \- org.laidu.learn:common-util:jar:1.0-SNAPSHOT:compile
       \- com.fasterxml.jackson.core:jackson-annotations:jar:2.9.1:compile

  • @@ -355,10 +365,43 @@

    com.fasterxml.jackson. + + + + + +
    2.6.7 +
      +
    1. org.laidu.learn:dynamoDB:jar:1.0-SNAPSHOT
      \- com.amazonaws:aws-java-sdk-dynamodb:jar:1.11.297:compile
         \- com.amazonaws:aws-java-sdk-core:jar:1.11.297:compile
            \- com.fasterxml.jackson.dataformat:jackson-dataformat-cbor:jar:2.6.7:compile
               \- (com.fasterxml.jackson.core:jackson-core:jar:2.6.7:compile - omitted for conflict with 2.9.1)

    2.8.10
    1. org.laidu.learn:play:jar:1.0-SNAPSHOT
      \- com.typesafe.play:play_2.11:jar:2.6.6:compile
         +- com.fasterxml.jackson.core:jackson-core:jar:2.8.10:compile
         +- com.fasterxml.jackson.core:jackson-databind:jar:2.8.10:compile
         |  \- (com.fasterxml.jackson.core:jackson-core:jar:2.8.10:compile - omitted for duplicate)
         +- com.fasterxml.jackson.datatype:jackson-datatype-jdk8:jar:2.8.10:compile
         |  \- (com.fasterxml.jackson.core:jackson-core:jar:2.8.10:compile - omitted for duplicate)
         \- com.fasterxml.jackson.datatype:jackson-datatype-jsr310:jar:2.8.10:compile
            \- (com.fasterxml.jackson.core:jackson-core:jar:2.8.10:compile - omitted for duplicate)

    2.8.8 +
      +
    1. org.laidu.crawler:crawler-helper:jar:1.0-SNAPSHOT
      \- org.laidu.learn:common-util:jar:1.0-SNAPSHOT:compile
         \- de.ruedigermoeller:fst:jar:2.57:compile
            \- (com.fasterxml.jackson.core:jackson-core:jar:2.8.8:compile - omitted for conflict with 2.9.1)

    2. +
    3. org.laidu.learn:algorithm:jar:1.0-SNAPSHOT
      \- org.laidu.learn:common-util:jar:1.0-SNAPSHOT:compile
         \- de.ruedigermoeller:fst:jar:2.57:compile
            \- (com.fasterxml.jackson.core:jackson-core:jar:2.8.8:compile - omitted for conflict with 2.9.1)

    4. +
    5. org.laidu.learn:async-http-client:jar:1.0-SNAPSHOT
      \- org.laidu.learn:common-util:jar:1.0-SNAPSHOT:compile
         \- de.ruedigermoeller:fst:jar:2.57:compile
            \- (com.fasterxml.jackson.core:jackson-core:jar:2.8.8:compile - omitted for conflict with 2.9.1)

    6. +
    7. org.laidu.learn:aws:pom:1.0-SNAPSHOT
      \- org.laidu.learn:common-util:jar:1.0-SNAPSHOT:compile
         \- de.ruedigermoeller:fst:jar:2.57:compile
            \- (com.fasterxml.jackson.core:jackson-core:jar:2.8.8:compile - omitted for conflict with 2.9.1)

    8. +
    9. org.laidu.learn:common-util:jar:1.0-SNAPSHOT
      \- de.ruedigermoeller:fst:jar:2.57:compile
         \- (com.fasterxml.jackson.core:jackson-core:jar:2.8.8:compile - omitted for conflict with 2.9.1)

    10. +
    11. org.laidu.learn:common:pom:1.0-SNAPSHOT
      \- org.laidu.learn:common-util:jar:1.0-SNAPSHOT:compile
         \- de.ruedigermoeller:fst:jar:2.57:compile
            \- (com.fasterxml.jackson.core:jackson-core:jar:2.8.8:compile - omitted for conflict with 2.9.1)

    12. +
    13. org.laidu.learn:commons-cli:jar:1.0-SNAPSHOT
      \- org.laidu.learn:common-util:jar:1.0-SNAPSHOT:compile
         \- de.ruedigermoeller:fst:jar:2.57:compile
            \- (com.fasterxml.jackson.core:jackson-core:jar:2.8.8:compile - omitted for conflict with 2.9.1)

    14. +
    15. org.laidu.learn:commons-lang3:jar:1.0-SNAPSHOT
      \- org.laidu.learn:common-util:jar:1.0-SNAPSHOT:compile
         \- de.ruedigermoeller:fst:jar:2.57:compile
            \- (com.fasterxml.jackson.core:jackson-core:jar:2.8.8:compile - omitted for conflict with 2.9.1)

    16. +
    17. org.laidu.learn:commons-net:jar:1.0-SNAPSHOT
      \- org.laidu.learn:common-util:jar:1.0-SNAPSHOT:compile
         \- de.ruedigermoeller:fst:jar:2.57:compile
            \- (com.fasterxml.jackson.core:jackson-core:jar:2.8.8:compile - omitted for conflict with 2.9.1)

    18. +
    19. org.laidu.learn:commons-text:jar:1.0-SNAPSHOT
      \- org.laidu.learn:common-util:jar:1.0-SNAPSHOT:compile
         \- de.ruedigermoeller:fst:jar:2.57:compile
            \- (com.fasterxml.jackson.core:jackson-core:jar:2.8.8:compile - omitted for conflict with 2.9.1)

    20. +
    21. org.laidu.learn:drools:jar:1.0-SNAPSHOT
      \- org.laidu.learn:common-util:jar:1.0-SNAPSHOT:compile
         \- de.ruedigermoeller:fst:jar:2.57:compile
            \- (com.fasterxml.jackson.core:jackson-core:jar:2.8.8:compile - omitted for conflict with 2.9.1)

    22. +
    23. org.laidu.learn:dynamoDB:jar:1.0-SNAPSHOT
      \- org.laidu.learn:common-util:jar:1.0-SNAPSHOT:compile
         \- de.ruedigermoeller:fst:jar:2.57:compile
            \- (com.fasterxml.jackson.core:jackson-core:jar:2.8.8:compile - omitted for conflict with 2.9.1)

    24. +
    25. org.laidu.learn:framework:pom:1.0-SNAPSHOT
      \- org.laidu.learn:common-util:jar:1.0-SNAPSHOT:compile
         \- de.ruedigermoeller:fst:jar:2.57:compile
            \- (com.fasterxml.jackson.core:jackson-core:jar:2.8.8:compile - omitted for conflict with 2.9.1)

    26. +
    27. org.laidu.learn:httpclient:jar:1.0-SNAPSHOT
      \- org.laidu.learn:common-util:jar:1.0-SNAPSHOT:compile
         \- de.ruedigermoeller:fst:jar:2.57:compile
            \- (com.fasterxml.jackson.core:jackson-core:jar:2.8.8:compile - omitted for conflict with 2.9.1)

    28. +
    29. org.laidu.learn:junit5:jar:1.0-SNAPSHOT
      \- org.laidu.learn:common-util:jar:1.0-SNAPSHOT:compile
         \- de.ruedigermoeller:fst:jar:2.57:compile
            \- (com.fasterxml.jackson.core:jackson-core:jar:2.8.8:compile - omitted for conflict with 2.9.1)

    30. +
    31. org.laidu.learn:mockito:jar:1.0-SNAPSHOT
      \- org.laidu.learn:common-util:jar:1.0-SNAPSHOT:compile
         \- de.ruedigermoeller:fst:jar:2.57:compile
            \- (com.fasterxml.jackson.core:jackson-core:jar:2.8.8:compile - omitted for conflict with 2.9.1)

    32. +
    33. org.laidu.learn:netty:jar:1.0-SNAPSHOT
      \- org.laidu.learn:common-util:jar:1.0-SNAPSHOT:compile
         \- de.ruedigermoeller:fst:jar:2.57:compile
            \- (com.fasterxml.jackson.core:jackson-core:jar:2.8.8:compile - omitted for conflict with 2.9.1)

    34. +
    35. org.laidu.learn:network:pom:1.0-SNAPSHOT
      \- org.laidu.learn:common-util:jar:1.0-SNAPSHOT:compile
         \- de.ruedigermoeller:fst:jar:2.57:compile
            \- (com.fasterxml.jackson.core:jackson-core:jar:2.8.8:compile - omitted for conflict with 2.9.1)

    36. +
    37. org.laidu.learn:play:jar:1.0-SNAPSHOT
      \- org.laidu.learn:common-util:jar:1.0-SNAPSHOT:compile
         \- de.ruedigermoeller:fst:jar:2.57:compile
            \- (com.fasterxml.jackson.core:jackson-core:jar:2.8.8:compile - omitted for conflict with 2.8.10)

    38. +
    39. org.laidu.learn:rules-engine:pom:1.0-SNAPSHOT
      \- org.laidu.learn:common-util:jar:1.0-SNAPSHOT:compile
         \- de.ruedigermoeller:fst:jar:2.57:compile
            \- (com.fasterxml.jackson.core:jackson-core:jar:2.8.8:compile - omitted for conflict with 2.9.1)

    40. +
    41. org.laidu.learn:test:pom:1.0-SNAPSHOT
      \- org.laidu.learn:common-util:jar:1.0-SNAPSHOT:compile
         \- de.ruedigermoeller:fst:jar:2.57:compile
            \- (com.fasterxml.jackson.core:jackson-core:jar:2.8.8:compile - omitted for conflict with 2.9.1)

    42. +
    43. org.laidu.learn:web:pom:1.0-SNAPSHOT
      \- org.laidu.learn:common-util:jar:1.0-SNAPSHOT:compile
         \- de.ruedigermoeller:fst:jar:2.57:compile
            \- (com.fasterxml.jackson.core:jackson-core:jar:2.8.8:compile - omitted for conflict with 2.9.1)

    44. +
    45. org.laidu.learn:webmagic-learn:jar:1.0-SNAPSHOT
      \- org.laidu.learn:common-util:jar:1.0-SNAPSHOT:compile
         \- de.ruedigermoeller:fst:jar:2.57:compile
            \- (com.fasterxml.jackson.core:jackson-core:jar:2.8.8:compile - omitted for conflict with 2.9.1)

    46. +
    47. org.laidu.learn:webmagic:pom:1.0-SNAPSHOT
      \- org.laidu.learn:common-util:jar:1.0-SNAPSHOT:compile
         \- de.ruedigermoeller:fst:jar:2.57:compile
            \- (com.fasterxml.jackson.core:jackson-core:jar:2.8.8:compile - omitted for conflict with 2.9.1)

    2.8.9 @@ -368,7 +411,30 @@

    com.fasterxml.jackson.

    2.9.1
      -
    1. org.laidu.learn:play:jar:1.0-SNAPSHOT
      \- org.laidu.learn:common-util:jar:1.0-SNAPSHOT:compile
         \- (com.fasterxml.jackson.core:jackson-core:jar:2.9.1:compile - omitted for conflict with 2.8.10)

    +
  • org.laidu.crawler:crawler-helper:jar:1.0-SNAPSHOT
    \- org.laidu.learn:common-util:jar:1.0-SNAPSHOT:compile
       +- com.fasterxml.jackson.core:jackson-core:jar:2.9.1:compile
       \- com.fasterxml.jackson.core:jackson-databind:jar:2.9.1:compile
          \- (com.fasterxml.jackson.core:jackson-core:jar:2.9.1:compile - omitted for duplicate)

  • +
  • org.laidu.learn:algorithm:jar:1.0-SNAPSHOT
    \- org.laidu.learn:common-util:jar:1.0-SNAPSHOT:compile
       +- com.fasterxml.jackson.core:jackson-core:jar:2.9.1:compile
       \- com.fasterxml.jackson.core:jackson-databind:jar:2.9.1:compile
          \- (com.fasterxml.jackson.core:jackson-core:jar:2.9.1:compile - omitted for duplicate)

  • +
  • org.laidu.learn:async-http-client:jar:1.0-SNAPSHOT
    \- org.laidu.learn:common-util:jar:1.0-SNAPSHOT:compile
       +- com.fasterxml.jackson.core:jackson-core:jar:2.9.1:compile
       \- com.fasterxml.jackson.core:jackson-databind:jar:2.9.1:compile
          \- (com.fasterxml.jackson.core:jackson-core:jar:2.9.1:compile - omitted for duplicate)

  • +
  • org.laidu.learn:aws:pom:1.0-SNAPSHOT
    \- org.laidu.learn:common-util:jar:1.0-SNAPSHOT:compile
       +- com.fasterxml.jackson.core:jackson-core:jar:2.9.1:compile
       \- com.fasterxml.jackson.core:jackson-databind:jar:2.9.1:compile
          \- (com.fasterxml.jackson.core:jackson-core:jar:2.9.1:compile - omitted for duplicate)

  • +
  • org.laidu.learn:common-util:jar:1.0-SNAPSHOT
    +- com.fasterxml.jackson.core:jackson-core:jar:2.9.1:compile
    \- com.fasterxml.jackson.core:jackson-databind:jar:2.9.1:compile
       \- (com.fasterxml.jackson.core:jackson-core:jar:2.9.1:compile - omitted for duplicate)

  • +
  • org.laidu.learn:common:pom:1.0-SNAPSHOT
    \- org.laidu.learn:common-util:jar:1.0-SNAPSHOT:compile
       +- com.fasterxml.jackson.core:jackson-core:jar:2.9.1:compile
       \- com.fasterxml.jackson.core:jackson-databind:jar:2.9.1:compile
          \- (com.fasterxml.jackson.core:jackson-core:jar:2.9.1:compile - omitted for duplicate)

  • +
  • org.laidu.learn:commons-cli:jar:1.0-SNAPSHOT
    \- org.laidu.learn:common-util:jar:1.0-SNAPSHOT:compile
       +- com.fasterxml.jackson.core:jackson-core:jar:2.9.1:compile
       \- com.fasterxml.jackson.core:jackson-databind:jar:2.9.1:compile
          \- (com.fasterxml.jackson.core:jackson-core:jar:2.9.1:compile - omitted for duplicate)

  • +
  • org.laidu.learn:commons-lang3:jar:1.0-SNAPSHOT
    \- org.laidu.learn:common-util:jar:1.0-SNAPSHOT:compile
       +- com.fasterxml.jackson.core:jackson-core:jar:2.9.1:compile
       \- com.fasterxml.jackson.core:jackson-databind:jar:2.9.1:compile
          \- (com.fasterxml.jackson.core:jackson-core:jar:2.9.1:compile - omitted for duplicate)

  • +
  • org.laidu.learn:commons-net:jar:1.0-SNAPSHOT
    \- org.laidu.learn:common-util:jar:1.0-SNAPSHOT:compile
       +- com.fasterxml.jackson.core:jackson-core:jar:2.9.1:compile
       \- com.fasterxml.jackson.core:jackson-databind:jar:2.9.1:compile
          \- (com.fasterxml.jackson.core:jackson-core:jar:2.9.1:compile - omitted for duplicate)

  • +
  • org.laidu.learn:commons-text:jar:1.0-SNAPSHOT
    \- org.laidu.learn:common-util:jar:1.0-SNAPSHOT:compile
       +- com.fasterxml.jackson.core:jackson-core:jar:2.9.1:compile
       \- com.fasterxml.jackson.core:jackson-databind:jar:2.9.1:compile
          \- (com.fasterxml.jackson.core:jackson-core:jar:2.9.1:compile - omitted for duplicate)

  • +
  • org.laidu.learn:drools:jar:1.0-SNAPSHOT
    \- org.laidu.learn:common-util:jar:1.0-SNAPSHOT:compile
       +- com.fasterxml.jackson.core:jackson-core:jar:2.9.1:compile
       \- com.fasterxml.jackson.core:jackson-databind:jar:2.9.1:compile
          \- (com.fasterxml.jackson.core:jackson-core:jar:2.9.1:compile - omitted for duplicate)

  • +
  • org.laidu.learn:dynamoDB:jar:1.0-SNAPSHOT
    \- org.laidu.learn:common-util:jar:1.0-SNAPSHOT:compile
       +- com.fasterxml.jackson.core:jackson-core:jar:2.9.1:compile
       \- com.fasterxml.jackson.core:jackson-databind:jar:2.9.1:compile
          \- (com.fasterxml.jackson.core:jackson-core:jar:2.9.1:compile - omitted for duplicate)

  • +
  • org.laidu.learn:framework:pom:1.0-SNAPSHOT
    \- org.laidu.learn:common-util:jar:1.0-SNAPSHOT:compile
       +- com.fasterxml.jackson.core:jackson-core:jar:2.9.1:compile
       \- com.fasterxml.jackson.core:jackson-databind:jar:2.9.1:compile
          \- (com.fasterxml.jackson.core:jackson-core:jar:2.9.1:compile - omitted for duplicate)

  • +
  • org.laidu.learn:httpclient:jar:1.0-SNAPSHOT
    \- org.laidu.learn:common-util:jar:1.0-SNAPSHOT:compile
       +- com.fasterxml.jackson.core:jackson-core:jar:2.9.1:compile
       \- com.fasterxml.jackson.core:jackson-databind:jar:2.9.1:compile
          \- (com.fasterxml.jackson.core:jackson-core:jar:2.9.1:compile - omitted for duplicate)

  • +
  • org.laidu.learn:junit5:jar:1.0-SNAPSHOT
    \- org.laidu.learn:common-util:jar:1.0-SNAPSHOT:compile
       +- com.fasterxml.jackson.core:jackson-core:jar:2.9.1:compile
       \- com.fasterxml.jackson.core:jackson-databind:jar:2.9.1:compile
          \- (com.fasterxml.jackson.core:jackson-core:jar:2.9.1:compile - omitted for duplicate)

  • +
  • org.laidu.learn:mockito:jar:1.0-SNAPSHOT
    \- org.laidu.learn:common-util:jar:1.0-SNAPSHOT:compile
       +- com.fasterxml.jackson.core:jackson-core:jar:2.9.1:compile
       \- com.fasterxml.jackson.core:jackson-databind:jar:2.9.1:compile
          \- (com.fasterxml.jackson.core:jackson-core:jar:2.9.1:compile - omitted for duplicate)

  • +
  • org.laidu.learn:netty:jar:1.0-SNAPSHOT
    \- org.laidu.learn:common-util:jar:1.0-SNAPSHOT:compile
       +- com.fasterxml.jackson.core:jackson-core:jar:2.9.1:compile
       \- com.fasterxml.jackson.core:jackson-databind:jar:2.9.1:compile
          \- (com.fasterxml.jackson.core:jackson-core:jar:2.9.1:compile - omitted for duplicate)

  • +
  • org.laidu.learn:network:pom:1.0-SNAPSHOT
    \- org.laidu.learn:common-util:jar:1.0-SNAPSHOT:compile
       +- com.fasterxml.jackson.core:jackson-core:jar:2.9.1:compile
       \- com.fasterxml.jackson.core:jackson-databind:jar:2.9.1:compile
          \- (com.fasterxml.jackson.core:jackson-core:jar:2.9.1:compile - omitted for duplicate)

  • +
  • org.laidu.learn:play:jar:1.0-SNAPSHOT
    \- org.laidu.learn:common-util:jar:1.0-SNAPSHOT:compile
       \- (com.fasterxml.jackson.core:jackson-core:jar:2.9.1:compile - omitted for conflict with 2.8.10)

  • +
  • org.laidu.learn:rules-engine:pom:1.0-SNAPSHOT
    \- org.laidu.learn:common-util:jar:1.0-SNAPSHOT:compile
       +- com.fasterxml.jackson.core:jackson-core:jar:2.9.1:compile
       \- com.fasterxml.jackson.core:jackson-databind:jar:2.9.1:compile
          \- (com.fasterxml.jackson.core:jackson-core:jar:2.9.1:compile - omitted for duplicate)

  • +
  • org.laidu.learn:test:pom:1.0-SNAPSHOT
    \- org.laidu.learn:common-util:jar:1.0-SNAPSHOT:compile
       +- com.fasterxml.jackson.core:jackson-core:jar:2.9.1:compile
       \- com.fasterxml.jackson.core:jackson-databind:jar:2.9.1:compile
          \- (com.fasterxml.jackson.core:jackson-core:jar:2.9.1:compile - omitted for duplicate)

  • +
  • org.laidu.learn:web:pom:1.0-SNAPSHOT
    \- org.laidu.learn:common-util:jar:1.0-SNAPSHOT:compile
       +- com.fasterxml.jackson.core:jackson-core:jar:2.9.1:compile
       \- com.fasterxml.jackson.core:jackson-databind:jar:2.9.1:compile
          \- (com.fasterxml.jackson.core:jackson-core:jar:2.9.1:compile - omitted for duplicate)

  • +
  • org.laidu.learn:webmagic-learn:jar:1.0-SNAPSHOT
    \- org.laidu.learn:common-util:jar:1.0-SNAPSHOT:compile
       +- com.fasterxml.jackson.core:jackson-core:jar:2.9.1:compile
       \- com.fasterxml.jackson.core:jackson-databind:jar:2.9.1:compile
          \- (com.fasterxml.jackson.core:jackson-core:jar:2.9.1:compile - omitted for duplicate)

  • +
  • org.laidu.learn:webmagic:pom:1.0-SNAPSHOT
    \- org.laidu.learn:common-util:jar:1.0-SNAPSHOT:compile
       +- com.fasterxml.jackson.core:jackson-core:jar:2.9.1:compile
       \- com.fasterxml.jackson.core:jackson-databind:jar:2.9.1:compile
          \- (com.fasterxml.jackson.core:jackson-core:jar:2.9.1:compile - omitted for duplicate)

  • com.fasterxml.jackson.core:jackson-databind

    @@ -377,38 +443,44 @@

    com.fasterxml.jack

    + + + - + - + - +
    2.6.7.1 +
      +
    1. org.laidu.learn:dynamoDB:jar:1.0-SNAPSHOT
      \- com.amazonaws:aws-java-sdk-dynamodb:jar:1.11.297:compile
         +- com.amazonaws:aws-java-sdk-core:jar:1.11.297:compile
         |  \- (com.fasterxml.jackson.core:jackson-databind:jar:2.6.7.1:compile - omitted for conflict with 2.9.1)
         \- com.amazonaws:jmespath-java:jar:1.11.297:compile
            \- (com.fasterxml.jackson.core:jackson-databind:jar:2.6.7.1:compile - omitted for conflict with 2.9.1)

    2.8.10
    1. org.laidu.learn:play:jar:1.0-SNAPSHOT
      \- com.typesafe.play:play_2.11:jar:2.6.6:compile
         +- com.fasterxml.jackson.core:jackson-databind:jar:2.8.10:compile
         +- com.fasterxml.jackson.datatype:jackson-datatype-jdk8:jar:2.8.10:compile
         |  \- (com.fasterxml.jackson.core:jackson-databind:jar:2.8.10:compile - omitted for duplicate)
         \- com.fasterxml.jackson.datatype:jackson-datatype-jsr310:jar:2.8.10:compile
            \- (com.fasterxml.jackson.core:jackson-databind:jar:2.8.10:compile - omitted for duplicate)

    2.8.2
    1. org.laidu.learn:play:jar:1.0-SNAPSHOT
      \- com.typesafe.play:play_2.11:jar:2.6.6:compile
         \- io.jsonwebtoken:jjwt:jar:0.7.0:compile
            \- (com.fasterxml.jackson.core:jackson-databind:jar:2.8.2:compile - omitted for conflict with 2.8.10)

    2.8.9
    1. org.laidu.learn:play:jar:1.0-SNAPSHOT
      \- com.typesafe.play:play_2.11:jar:2.6.6:compile
         \- com.typesafe.play:play-json_2.11:jar:2.6.6:compile
            \- (com.fasterxml.jackson.core:jackson-databind:jar:2.8.9:compile - omitted for conflict with 2.8.10)

    2.9.1
      +
    1. org.laidu.learn:dynamoDB:jar:1.0-SNAPSHOT
      \- org.laidu.learn:common-util:jar:1.0-SNAPSHOT:compile
         \- com.fasterxml.jackson.core:jackson-databind:jar:2.9.1:compile

    2. org.laidu.learn:play:jar:1.0-SNAPSHOT
      \- org.laidu.learn:common-util:jar:1.0-SNAPSHOT:compile
         \- (com.fasterxml.jackson.core:jackson-databind:jar:2.9.1:compile - omitted for conflict with 2.8.10)

    com.fasterxml.jackson.datatype:jackson-datatype-jdk8

    - +
    [Error] - + - +
    2.8.10
    1. org.laidu.learn:play:jar:1.0-SNAPSHOT
      \- com.typesafe.play:play_2.11:jar:2.6.6:compile
         \- com.fasterxml.jackson.datatype:jackson-datatype-jdk8:jar:2.8.10:compile

    2.8.9
      @@ -416,16 +488,16 @@

      com.faste

      com.fasterxml.jackson.datatype:jackson-datatype-jsr310

      - + - - + - - - - - - - - - - - - - - - - - - - - - - - - - -
      [Error] - + - +
      2.8.10
      1. org.laidu.learn:play:jar:1.0-SNAPSHOT
        \- com.typesafe.play:play_2.11:jar:2.6.6:compile
           \- com.fasterxml.jackson.datatype:jackson-datatype-jsr310:jar:2.8.10:compile

      2.8.9
        @@ -433,16 +505,16 @@

        com.fas

        com.google.code.findbugs:jsr305

        - +
        [Error] - + - + - - - + + + @@ -577,62 +577,134 @@

        Dependency Repository Location

        + + + + + + + + + + + + + + + + + +
        1.3.9
        1. org.laidu.learn:hadoop:jar:1.0-SNAPSHOT
          \- org.apache.hadoop:hadoop-common:jar:2.8.1:compile
             \- com.google.guava:guava:jar:11.0.2:compile
                \- (com.google.code.findbugs:jsr305:jar:1.3.9:compile - omitted for conflict with 3.0.0)

        3.0.0
          @@ -450,36 +522,36 @@

          com.google.code.findbugs:jsr30

          com.google.guava:guava

          - +
          [Error] - + - + - + - + - + - +
          11.0.2
          1. org.laidu.learn:hadoop:jar:1.0-SNAPSHOT
            +- org.apache.hadoop:hadoop-common:jar:2.8.1:compile
            |  \- com.google.guava:guava:jar:11.0.2:compile
            +- org.apache.hadoop:hadoop-client:jar:2.8.1:compile
            |  +- org.apache.hadoop:hadoop-hdfs:jar:2.8.1:compile
            |  |  \- (com.google.guava:guava:jar:11.0.2:compile - omitted for duplicate)
            |  +- org.apache.hadoop:hadoop-mapreduce-client-app:jar:2.8.1:compile
            |  |  \- org.apache.hadoop:hadoop-mapreduce-client-common:jar:2.8.1:compile
            |  |     +- org.apache.hadoop:hadoop-yarn-client:jar:2.8.1:compile
            |  |     |  \- (com.google.guava:guava:jar:11.0.2:compile - omitted for duplicate)
            |  |     \- org.apache.hadoop:hadoop-yarn-server-common:jar:2.8.1:compile
            |  |        \- (com.google.guava:guava:jar:11.0.2:compile - omitted for duplicate)
            |  \- org.apache.hadoop:hadoop-yarn-api:jar:2.8.1:compile
            |     \- (com.google.guava:guava:jar:11.0.2:compile - omitted for duplicate)
            \- org.apache.hadoop:hadoop-mapreduce-client-core:jar:2.8.1:compile
               \- org.apache.hadoop:hadoop-yarn-common:jar:2.8.1:compile
                  \- (com.google.guava:guava:jar:11.0.2:compile - omitted for duplicate)

          16.0.1
          1. org.laidu.learn:hadoop:jar:1.0-SNAPSHOT
            \- org.apache.hadoop:hadoop-common:jar:2.8.1:compile
               +- org.apache.hadoop:hadoop-auth:jar:2.8.1:compile
               |  \- org.apache.curator:curator-framework:jar:2.7.1:compile
               |     \- (com.google.guava:guava:jar:16.0.1:compile - omitted for conflict with 11.0.2)
               +- org.apache.curator:curator-client:jar:2.7.1:compile
               |  \- (com.google.guava:guava:jar:16.0.1:compile - omitted for conflict with 11.0.2)
               \- org.apache.curator:curator-recipes:jar:2.7.1:compile
                  \- (com.google.guava:guava:jar:16.0.1:compile - omitted for conflict with 11.0.2)

          18.0
          1. org.laidu.learn.swagger:swagger:jar:0.0.1-SNAPSHOT
            \- io.springfox:springfox-swagger2:jar:2.7.0:compile
               +- io.springfox:springfox-spi:jar:2.7.0:compile
               |  \- io.springfox:springfox-core:jar:2.7.0:compile
               |     \- (com.google.guava:guava:jar:18.0:compile - omitted for conflict with 23.5-jre)
               +- io.springfox:springfox-swagger-common:jar:2.7.0:compile
               |  \- (com.google.guava:guava:jar:18.0:compile - omitted for conflict with 23.5-jre)
               +- io.springfox:springfox-spring-web:jar:2.7.0:compile
               |  \- (com.google.guava:guava:jar:18.0:compile - omitted for conflict with 23.5-jre)
               \- (com.google.guava:guava:jar:18.0:compile - omitted for conflict with 23.5-jre)

          20.0
          1. org.laidu.learn.swagger:swagger:jar:0.0.1-SNAPSHOT
            \- io.springfox:springfox-swagger2:jar:2.7.0:compile
               \- io.springfox:springfox-spring-web:jar:2.7.0:compile
                  \- org.reflections:reflections:jar:0.9.11:compile
                     \- (com.google.guava:guava:jar:20.0:compile - omitted for conflict with 23.5-jre)

          22.0
          1. org.laidu.learn:play:jar:1.0-SNAPSHOT
            \- com.typesafe.play:play_2.11:jar:2.6.6:compile
               \- com.google.guava:guava:jar:22.0:compile

          23.5-jre
            @@ -488,16 +560,16 @@

            com.google.guava:guava

            com.squareup:javapoet

            - +
            [Error] - + - +
            1.10.0
            1. org.laidu.crawler:crawler-helper:jar:1.0-SNAPSHOT
              \- org.laidu.learn:common-util:jar:1.0-SNAPSHOT:compile
                 \- (com.squareup:javapoet:jar:1.10.0:compile - omitted for conflict with 1.9.0)

            1.9.0
              @@ -505,16 +577,16 @@

              com.squareup:javapoet

              com.typesafe:config

              - + + + + + + +
              [Error] - + - +
              1.2.0
              1. org.laidu.learn:play:jar:1.0-SNAPSHOT
                \- com.typesafe.play:play_2.11:jar:2.6.6:compile
                   \- com.typesafe.play:play-streams_2.11:jar:2.6.6:compile
                      \- com.typesafe.akka:akka-stream_2.11:jar:2.5.4:compile
                         \- com.typesafe:ssl-config-core_2.11:jar:0.2.1:compile
                            \- (com.typesafe:config:jar:1.2.0:compile - omitted for conflict with 1.3.1)

              1.3.1
                @@ -522,21 +594,21 @@

                com.typesafe:config

                commons-codec:commons-codec

                - +
                [Error] - + - + - + + + + + + +
                1.10
                1. org.laidu.learn:play:jar:1.0-SNAPSHOT
                  \- com.typesafe.play:play_2.11:jar:2.6.6:compile
                     \- commons-codec:commons-codec:jar:1.10:compile

                1.4
                1. org.laidu.learn:hadoop:jar:1.0-SNAPSHOT
                  +- org.apache.hadoop:hadoop-common:jar:2.8.1:compile
                  |  +- commons-codec:commons-codec:jar:1.4:compile
                  |  +- net.java.dev.jets3t:jets3t:jar:0.9.0:compile
                  |  |  \- (commons-codec:commons-codec:jar:1.4:compile - omitted for duplicate)
                  |  \- org.apache.hadoop:hadoop-auth:jar:2.8.1:compile
                  |     \- (commons-codec:commons-codec:jar:1.4:compile - omitted for duplicate)
                  +- org.apache.hadoop:hadoop-client:jar:2.8.1:compile
                  |  \- org.apache.hadoop:hadoop-hdfs:jar:2.8.1:compile
                  |     \- (commons-codec:commons-codec:jar:1.4:compile - omitted for duplicate)
                  \- org.apache.hadoop:hadoop-mapreduce-client-core:jar:2.8.1:compile
                     \- org.apache.hadoop:hadoop-yarn-common:jar:2.8.1:compile
                        \- (commons-codec:commons-codec:jar:1.4:compile - omitted for duplicate)

                1.9
                  @@ -545,16 +617,16 @@

                  commons-codec:commons-codec

                  commons-collections:commons-collections

                  - +
                  [Error] - + - + @@ -413,6 +331,7 @@

                  com.fasterxml.jackson.
                  1. org.laidu.crawler:crawler-helper:jar:1.0-SNAPSHOT
                    \- org.laidu.learn:common-util:jar:1.0-SNAPSHOT:compile
                       +- com.fasterxml.jackson.core:jackson-core:jar:2.9.1:compile
                       \- com.fasterxml.jackson.core:jackson-databind:jar:2.9.1:compile
                          \- (com.fasterxml.jackson.core:jackson-core:jar:2.9.1:compile - omitted for duplicate)

                  2. org.laidu.learn:algorithm:jar:1.0-SNAPSHOT
                    \- org.laidu.learn:common-util:jar:1.0-SNAPSHOT:compile
                       +- com.fasterxml.jackson.core:jackson-core:jar:2.9.1:compile
                       \- com.fasterxml.jackson.core:jackson-databind:jar:2.9.1:compile
                          \- (com.fasterxml.jackson.core:jackson-core:jar:2.9.1:compile - omitted for duplicate)

                  3. +
                  4. org.laidu.learn:apache-poi:jar:1.0-SNAPSHOT
                    \- org.laidu.learn:common-util:jar:1.0-SNAPSHOT:compile
                       +- com.fasterxml.jackson.core:jackson-core:jar:2.9.1:compile
                       \- com.fasterxml.jackson.core:jackson-databind:jar:2.9.1:compile
                          \- (com.fasterxml.jackson.core:jackson-core:jar:2.9.1:compile - omitted for duplicate)

                  5. org.laidu.learn:async-http-client:jar:1.0-SNAPSHOT
                    \- org.laidu.learn:common-util:jar:1.0-SNAPSHOT:compile
                       +- com.fasterxml.jackson.core:jackson-core:jar:2.9.1:compile
                       \- com.fasterxml.jackson.core:jackson-databind:jar:2.9.1:compile
                          \- (com.fasterxml.jackson.core:jackson-core:jar:2.9.1:compile - omitted for duplicate)

                  6. org.laidu.learn:aws:pom:1.0-SNAPSHOT
                    \- org.laidu.learn:common-util:jar:1.0-SNAPSHOT:compile
                       +- com.fasterxml.jackson.core:jackson-core:jar:2.9.1:compile
                       \- com.fasterxml.jackson.core:jackson-databind:jar:2.9.1:compile
                          \- (com.fasterxml.jackson.core:jackson-core:jar:2.9.1:compile - omitted for duplicate)

                  7. org.laidu.learn:common-util:jar:1.0-SNAPSHOT
                    +- com.fasterxml.jackson.core:jackson-core:jar:2.9.1:compile
                    \- com.fasterxml.jackson.core:jackson-databind:jar:2.9.1:compile
                       \- (com.fasterxml.jackson.core:jackson-core:jar:2.9.1:compile - omitted for duplicate)

                  8. @@ -421,8 +340,10 @@

                    com.fasterxml.jackson.
                  9. org.laidu.learn:commons-lang3:jar:1.0-SNAPSHOT
                    \- org.laidu.learn:common-util:jar:1.0-SNAPSHOT:compile
                       +- com.fasterxml.jackson.core:jackson-core:jar:2.9.1:compile
                       \- com.fasterxml.jackson.core:jackson-databind:jar:2.9.1:compile
                          \- (com.fasterxml.jackson.core:jackson-core:jar:2.9.1:compile - omitted for duplicate)

                  10. org.laidu.learn:commons-net:jar:1.0-SNAPSHOT
                    \- org.laidu.learn:common-util:jar:1.0-SNAPSHOT:compile
                       +- com.fasterxml.jackson.core:jackson-core:jar:2.9.1:compile
                       \- com.fasterxml.jackson.core:jackson-databind:jar:2.9.1:compile
                          \- (com.fasterxml.jackson.core:jackson-core:jar:2.9.1:compile - omitted for duplicate)

                  11. org.laidu.learn:commons-text:jar:1.0-SNAPSHOT
                    \- org.laidu.learn:common-util:jar:1.0-SNAPSHOT:compile
                       +- com.fasterxml.jackson.core:jackson-core:jar:2.9.1:compile
                       \- com.fasterxml.jackson.core:jackson-databind:jar:2.9.1:compile
                          \- (com.fasterxml.jackson.core:jackson-core:jar:2.9.1:compile - omitted for duplicate)

                  12. +
                  13. org.laidu.learn:compress:pom:1.0-SNAPSHOT
                    \- org.laidu.learn:common-util:jar:1.0-SNAPSHOT:compile
                       +- com.fasterxml.jackson.core:jackson-core:jar:2.9.1:compile
                       \- com.fasterxml.jackson.core:jackson-databind:jar:2.9.1:compile
                          \- (com.fasterxml.jackson.core:jackson-core:jar:2.9.1:compile - omitted for duplicate)

                  14. org.laidu.learn:drools:jar:1.0-SNAPSHOT
                    \- org.laidu.learn:common-util:jar:1.0-SNAPSHOT:compile
                       +- com.fasterxml.jackson.core:jackson-core:jar:2.9.1:compile
                       \- com.fasterxml.jackson.core:jackson-databind:jar:2.9.1:compile
                          \- (com.fasterxml.jackson.core:jackson-core:jar:2.9.1:compile - omitted for duplicate)

                  15. org.laidu.learn:dynamoDB:jar:1.0-SNAPSHOT
                    \- org.laidu.learn:common-util:jar:1.0-SNAPSHOT:compile
                       +- com.fasterxml.jackson.core:jackson-core:jar:2.9.1:compile
                       \- com.fasterxml.jackson.core:jackson-databind:jar:2.9.1:compile
                          \- (com.fasterxml.jackson.core:jackson-core:jar:2.9.1:compile - omitted for duplicate)

                  16. +
                  17. org.laidu.learn:elastic-job:jar:1.0-SNAPSHOT
                    \- org.laidu.learn:common-util:jar:1.0-SNAPSHOT:compile
                       +- com.fasterxml.jackson.core:jackson-core:jar:2.9.1:compile
                       \- com.fasterxml.jackson.core:jackson-databind:jar:2.9.1:compile
                          \- (com.fasterxml.jackson.core:jackson-core:jar:2.9.1:compile - omitted for duplicate)

                  18. org.laidu.learn:framework:pom:1.0-SNAPSHOT
                    \- org.laidu.learn:common-util:jar:1.0-SNAPSHOT:compile
                       +- com.fasterxml.jackson.core:jackson-core:jar:2.9.1:compile
                       \- com.fasterxml.jackson.core:jackson-databind:jar:2.9.1:compile
                          \- (com.fasterxml.jackson.core:jackson-core:jar:2.9.1:compile - omitted for duplicate)

                  19. org.laidu.learn:httpclient:jar:1.0-SNAPSHOT
                    \- org.laidu.learn:common-util:jar:1.0-SNAPSHOT:compile
                       +- com.fasterxml.jackson.core:jackson-core:jar:2.9.1:compile
                       \- com.fasterxml.jackson.core:jackson-databind:jar:2.9.1:compile
                          \- (com.fasterxml.jackson.core:jackson-core:jar:2.9.1:compile - omitted for duplicate)

                  20. org.laidu.learn:junit5:jar:1.0-SNAPSHOT
                    \- org.laidu.learn:common-util:jar:1.0-SNAPSHOT:compile
                       +- com.fasterxml.jackson.core:jackson-core:jar:2.9.1:compile
                       \- com.fasterxml.jackson.core:jackson-databind:jar:2.9.1:compile
                          \- (com.fasterxml.jackson.core:jackson-core:jar:2.9.1:compile - omitted for duplicate)

                  21. @@ -431,10 +352,23 @@

                    com.fasterxml.jackson.
                  22. org.laidu.learn:network:pom:1.0-SNAPSHOT
                    \- org.laidu.learn:common-util:jar:1.0-SNAPSHOT:compile
                       +- com.fasterxml.jackson.core:jackson-core:jar:2.9.1:compile
                       \- com.fasterxml.jackson.core:jackson-databind:jar:2.9.1:compile
                          \- (com.fasterxml.jackson.core:jackson-core:jar:2.9.1:compile - omitted for duplicate)

                  23. org.laidu.learn:play:jar:1.0-SNAPSHOT
                    \- org.laidu.learn:common-util:jar:1.0-SNAPSHOT:compile
                       \- (com.fasterxml.jackson.core:jackson-core:jar:2.9.1:compile - omitted for conflict with 2.8.10)

                  24. org.laidu.learn:rules-engine:pom:1.0-SNAPSHOT
                    \- org.laidu.learn:common-util:jar:1.0-SNAPSHOT:compile
                       +- com.fasterxml.jackson.core:jackson-core:jar:2.9.1:compile
                       \- com.fasterxml.jackson.core:jackson-databind:jar:2.9.1:compile
                          \- (com.fasterxml.jackson.core:jackson-core:jar:2.9.1:compile - omitted for duplicate)

                  25. +
                  26. org.laidu.learn:shiro:jar:1.0-SNAPSHOT
                    \- org.laidu.learn:common-util:jar:1.0-SNAPSHOT:compile
                       +- com.fasterxml.jackson.core:jackson-core:jar:2.9.1:compile
                       \- com.fasterxml.jackson.core:jackson-databind:jar:2.9.1:compile
                          \- (com.fasterxml.jackson.core:jackson-core:jar:2.9.1:compile - omitted for duplicate)

                  27. +
                  28. org.laidu.learn:task-scheduler:pom:1.0-SNAPSHOT
                    \- org.laidu.learn:common-util:jar:1.0-SNAPSHOT:compile
                       +- com.fasterxml.jackson.core:jackson-core:jar:2.9.1:compile
                       \- com.fasterxml.jackson.core:jackson-databind:jar:2.9.1:compile
                          \- (com.fasterxml.jackson.core:jackson-core:jar:2.9.1:compile - omitted for duplicate)

                  29. org.laidu.learn:test:pom:1.0-SNAPSHOT
                    \- org.laidu.learn:common-util:jar:1.0-SNAPSHOT:compile
                       +- com.fasterxml.jackson.core:jackson-core:jar:2.9.1:compile
                       \- com.fasterxml.jackson.core:jackson-databind:jar:2.9.1:compile
                          \- (com.fasterxml.jackson.core:jackson-core:jar:2.9.1:compile - omitted for duplicate)

                  30. +
                  31. org.laidu.learn:thumbnailator-google:jar:1.0-SNAPSHOT
                    \- org.laidu.learn:common-util:jar:1.0-SNAPSHOT:compile
                       +- com.fasterxml.jackson.core:jackson-core:jar:2.9.1:compile
                       \- com.fasterxml.jackson.core:jackson-databind:jar:2.9.1:compile
                          \- (com.fasterxml.jackson.core:jackson-core:jar:2.9.1:compile - omitted for duplicate)

                  32. org.laidu.learn:web:pom:1.0-SNAPSHOT
                    \- org.laidu.learn:common-util:jar:1.0-SNAPSHOT:compile
                       +- com.fasterxml.jackson.core:jackson-core:jar:2.9.1:compile
                       \- com.fasterxml.jackson.core:jackson-databind:jar:2.9.1:compile
                          \- (com.fasterxml.jackson.core:jackson-core:jar:2.9.1:compile - omitted for duplicate)

                  33. org.laidu.learn:webmagic-learn:jar:1.0-SNAPSHOT
                    \- org.laidu.learn:common-util:jar:1.0-SNAPSHOT:compile
                       +- com.fasterxml.jackson.core:jackson-core:jar:2.9.1:compile
                       \- com.fasterxml.jackson.core:jackson-databind:jar:2.9.1:compile
                          \- (com.fasterxml.jackson.core:jackson-core:jar:2.9.1:compile - omitted for duplicate)

                  34. -
                  35. org.laidu.learn:webmagic:pom:1.0-SNAPSHOT
                    \- org.laidu.learn:common-util:jar:1.0-SNAPSHOT:compile
                       +- com.fasterxml.jackson.core:jackson-core:jar:2.9.1:compile
                       \- com.fasterxml.jackson.core:jackson-databind:jar:2.9.1:compile
                          \- (com.fasterxml.jackson.core:jackson-core:jar:2.9.1:compile - omitted for duplicate)

                  3.2.1
                  1. org.laidu.learn:hadoop:jar:1.0-SNAPSHOT
                    \- org.apache.hadoop:hadoop-common:jar:2.8.1:compile
                       \- commons-configuration:commons-configuration:jar:1.6:compile
                          \- (commons-collections:commons-collections:jar:3.2.1:compile - omitted for conflict with 3.2.2)

                  3.2.2
                    @@ -562,17 +634,17 @@

                    commons-collections:co

                    commons-io:commons-io

                    - +
                    [Error] - + - +
                    1.3.2
                    1. org.laidu.learn:crawler:jar:1.0-SNAPSHOT
                      \- us.codecraft:webmagic-core:jar:0.7.3:compile
                         \- (commons-io:commons-io:jar:1.3.2:compile - omitted for conflict with 2.5)

                    2. org.laidu.learn:webmagic-learn:jar:1.0-SNAPSHOT
                      \- us.codecraft:webmagic-core:jar:0.7.3:compile
                         \- (commons-io:commons-io:jar:1.3.2:compile - omitted for conflict with 2.5)

                    2.5
                      @@ -581,16 +653,16 @@

                      commons-io:commons-io

                      commons-lang:commons-lang

                      - +
                      [Error] - + - +
                      2.4
                      1. org.laidu.learn:hadoop:jar:1.0-SNAPSHOT
                        \- org.apache.hadoop:hadoop-common:jar:2.8.1:compile
                           \- commons-configuration:commons-configuration:jar:1.6:compile
                              \- (commons-lang:commons-lang:jar:2.4:compile - omitted for conflict with 2.6)

                      2.6
                        @@ -598,48 +670,50 @@

                        commons-lang:commons-lang

                        commons-logging:commons-logging

                        - +
                        [Error] - + - + - + - + - +
                        1.0.3
                        1. org.laidu.learn:hadoop:jar:1.0-SNAPSHOT
                          \- org.apache.hadoop:hadoop-common:jar:2.8.1:compile
                             \- commons-configuration:commons-configuration:jar:1.6:compile
                                \- commons-digester:commons-digester:jar:1.8:compile
                                   \- commons-beanutils:commons-beanutils:jar:1.7.0:compile
                                      \- (commons-logging:commons-logging:jar:1.0.3:compile - omitted for conflict with 1.1.3)

                        1.1
                        1. org.laidu.learn:hadoop:jar:1.0-SNAPSHOT
                          \- org.apache.hadoop:hadoop-common:jar:2.8.1:compile
                             \- commons-configuration:commons-configuration:jar:1.6:compile
                                \- commons-digester:commons-digester:jar:1.8:compile
                                   \- (commons-logging:commons-logging:jar:1.1:compile - omitted for conflict with 1.1.3)

                        1.1.1
                        1. org.laidu.learn:hadoop:jar:1.0-SNAPSHOT
                          \- org.apache.hadoop:hadoop-common:jar:2.8.1:compile
                             +- net.java.dev.jets3t:jets3t:jar:0.9.0:compile
                             |  \- (commons-logging:commons-logging:jar:1.1.1:compile - omitted for conflict with 1.1.3)
                             \- commons-configuration:commons-configuration:jar:1.6:compile
                                +- (commons-logging:commons-logging:jar:1.1.1:compile - omitted for conflict with 1.1.3)
                                \- commons-beanutils:commons-beanutils-core:jar:1.8.0:compile
                                   \- (commons-logging:commons-logging:jar:1.1.1:compile - omitted for conflict with 1.1.3)

                        1.1.3
                          +
                        1. org.laidu.learn:dynamoDB:jar:1.0-SNAPSHOT
                          \- com.amazonaws:aws-java-sdk-dynamodb:jar:1.11.297:compile
                             \- com.amazonaws:aws-java-sdk-core:jar:1.11.297:compile
                                \- (commons-logging:commons-logging:jar:1.1.3:compile - omitted for conflict with 1.2)

                        2. org.laidu.learn:hadoop:jar:1.0-SNAPSHOT
                          +- org.apache.hadoop:hadoop-common:jar:2.8.1:compile
                          |  \- commons-logging:commons-logging:jar:1.1.3:compile
                          +- org.apache.hadoop:hadoop-client:jar:2.8.1:compile
                          |  +- org.apache.hadoop:hadoop-hdfs:jar:2.8.1:compile
                          |  |  \- (commons-logging:commons-logging:jar:1.1.3:compile - omitted for duplicate)
                          |  +- org.apache.hadoop:hadoop-mapreduce-client-app:jar:2.8.1:compile
                          |  |  \- org.apache.hadoop:hadoop-mapreduce-client-common:jar:2.8.1:compile
                          |  |     +- org.apache.hadoop:hadoop-yarn-client:jar:2.8.1:compile
                          |  |     |  \- (commons-logging:commons-logging:jar:1.1.3:compile - omitted for duplicate)
                          |  |     \- org.apache.hadoop:hadoop-yarn-server-common:jar:2.8.1:compile
                          |  |        \- (commons-logging:commons-logging:jar:1.1.3:compile - omitted for duplicate)
                          |  \- org.apache.hadoop:hadoop-yarn-api:jar:2.8.1:compile
                          |     \- (commons-logging:commons-logging:jar:1.1.3:compile - omitted for duplicate)
                          \- org.apache.hadoop:hadoop-mapreduce-client-core:jar:2.8.1:compile
                             \- org.apache.hadoop:hadoop-yarn-common:jar:2.8.1:compile
                                \- (commons-logging:commons-logging:jar:1.1.3:compile - omitted for duplicate)

                        1.2
                          +
                        1. org.laidu.learn:dynamoDB:jar:1.0-SNAPSHOT
                          \- org.laidu.learn:common-util:jar:1.0-SNAPSHOT:compile
                             \- org.apache.httpcomponents:httpclient:jar:4.5.3:compile
                                \- commons-logging:commons-logging:jar:1.2:compile

                        2. org.laidu.learn:hadoop:jar:1.0-SNAPSHOT
                          \- org.apache.hadoop:hadoop-common:jar:2.8.1:compile
                             \- org.apache.httpcomponents:httpclient:jar:4.5.2:compile
                                \- (commons-logging:commons-logging:jar:1.2:compile - omitted for conflict with 1.1.3)

                        io.netty:netty

                        - +
                        [Error] - + - +
                        3.6.2.Final
                        1. org.laidu.learn:hadoop:jar:1.0-SNAPSHOT
                          +- org.apache.hadoop:hadoop-mapreduce-client-core:jar:2.8.1:compile
                          |  \- io.netty:netty:jar:3.6.2.Final:compile
                          \- org.apache.hadoop:hadoop-mapreduce-client-jobclient:jar:2.8.1:provided
                             \- (io.netty:netty:jar:3.6.2.Final:provided - omitted for duplicate)

                        3.7.0.Final
                          @@ -647,16 +721,16 @@

                          io.netty:netty

                          io.netty:netty-handler

                          - +
                          [Error] - + - +
                          4.1.13.Final
                          1. org.laidu.learn:async-http-client:jar:1.0-SNAPSHOT
                            \- org.asynchttpclient:async-http-client:jar:2.1.0-alpha24:compile
                               \- com.typesafe.netty:netty-reactive-streams:jar:2.0.0:compile
                                  \- (io.netty:netty-handler:jar:4.1.13.Final:compile - omitted for conflict with 4.1.15.Final)

                          4.1.15.Final
                            @@ -664,16 +738,16 @@

                            io.netty:netty-handler

                            log4j:log4j

                            - +
                            [Error] - + - +
                            1.2.16
                            1. org.laidu.learn:hadoop:jar:1.0-SNAPSHOT
                              \- org.apache.hadoop:hadoop-common:jar:2.8.1:compile
                                 \- org.apache.zookeeper:zookeeper:jar:3.4.6:compile
                                    \- (log4j:log4j:jar:1.2.16:compile - omitted for conflict with 1.2.17)

                            1.2.17
                              @@ -681,17 +755,17 @@

                              log4j:log4j

                              org.apache.commons:commons-lang3

                              - +
                              [Error] - + - + + + +
                              3.1
                              1. org.laidu.learn:crawler:jar:1.0-SNAPSHOT
                                \- us.codecraft:webmagic-core:jar:0.7.3:compile
                                   \- (org.apache.commons:commons-lang3:jar:3.1:compile - omitted for conflict with 3.6)

                              2. org.laidu.learn:webmagic-learn:jar:1.0-SNAPSHOT
                                \- us.codecraft:webmagic-core:jar:0.7.3:compile
                                   \- (org.apache.commons:commons-lang3:jar:3.1:compile - omitted for conflict with 3.6)

                              3.6
                                @@ -700,26 +774,32 @@

                                org.apache.commons:commons-la

                                org.apache.httpcomponents:httpclient

                                - +
                                [Error] - + - + - +
                                4.1.2
                                1. org.laidu.learn:hadoop:jar:1.0-SNAPSHOT
                                  \- org.apache.hadoop:hadoop-common:jar:2.8.1:compile
                                     \- net.java.dev.jets3t:jets3t:jar:0.9.0:compile
                                        \- (org.apache.httpcomponents:httpclient:jar:4.1.2:compile - omitted for conflict with 4.5.2)

                                4.5.2
                                1. org.laidu.learn:hadoop:jar:1.0-SNAPSHOT
                                  \- org.apache.hadoop:hadoop-common:jar:2.8.1:compile
                                     +- org.apache.httpcomponents:httpclient:jar:4.5.2:compile
                                     \- org.apache.hadoop:hadoop-auth:jar:2.8.1:compile
                                        \- (org.apache.httpcomponents:httpclient:jar:4.5.2:compile - omitted for duplicate)

                                2. org.laidu.learn:webmagic-learn:jar:1.0-SNAPSHOT
                                  \- us.codecraft:webmagic-core:jar:0.7.3:compile
                                     \- (org.apache.httpcomponents:httpclient:jar:4.5.2:compile - omitted for conflict with 4.5.3)

                                4.5.3
                                  -
                                1. org.laidu.learn:webmagic-learn:jar:1.0-SNAPSHOT
                                  \- org.laidu.learn:common-util:jar:1.0-SNAPSHOT:compile
                                     \- org.apache.httpcomponents:httpclient:jar:4.5.3:compile

                                +
                              1. org.laidu.learn:dynamoDB:jar:1.0-SNAPSHOT
                                \- org.laidu.learn:common-util:jar:1.0-SNAPSHOT:compile
                                   \- org.apache.httpcomponents:httpclient:jar:4.5.3:compile

                              2. +
                              3. org.laidu.learn:webmagic-learn:jar:1.0-SNAPSHOT
                                \- org.laidu.learn:common-util:jar:1.0-SNAPSHOT:compile
                                   \- org.apache.httpcomponents:httpclient:jar:4.5.3:compile

                              4.5.5 +
                                +
                              1. org.laidu.learn:dynamoDB:jar:1.0-SNAPSHOT
                                \- com.amazonaws:aws-java-sdk-dynamodb:jar:1.11.297:compile
                                   \- com.amazonaws:aws-java-sdk-core:jar:1.11.297:compile
                                      \- (org.apache.httpcomponents:httpclient:jar:4.5.5:compile - omitted for conflict with 4.5.3)

                              org.apache.httpcomponents:httpcore

                              @@ -744,6 +824,7 @@

                              org.apache.httpcomponents:h
                            1. org.laidu.crawler:crawler-helper:jar:1.0-SNAPSHOT
                              \- org.laidu.learn:common-util:jar:1.0-SNAPSHOT:compile
                                 \- org.apache.httpcomponents:httpclient:jar:4.5.3:compile
                                    \- (org.apache.httpcomponents:httpcore:jar:4.4.6:compile - omitted for conflict with 4.4.8)

                            2. org.laidu.learn:algorithm:jar:1.0-SNAPSHOT
                              \- org.laidu.learn:common-util:jar:1.0-SNAPSHOT:compile
                                 \- org.apache.httpcomponents:httpclient:jar:4.5.3:compile
                                    \- (org.apache.httpcomponents:httpcore:jar:4.4.6:compile - omitted for conflict with 4.4.8)

                            3. org.laidu.learn:async-http-client:jar:1.0-SNAPSHOT
                              \- org.laidu.learn:common-util:jar:1.0-SNAPSHOT:compile
                                 \- org.apache.httpcomponents:httpclient:jar:4.5.3:compile
                                    \- (org.apache.httpcomponents:httpcore:jar:4.4.6:compile - omitted for conflict with 4.4.8)

                            4. +
                            5. org.laidu.learn:aws:pom:1.0-SNAPSHOT
                              \- org.laidu.learn:common-util:jar:1.0-SNAPSHOT:compile
                                 \- org.apache.httpcomponents:httpclient:jar:4.5.3:compile
                                    \- (org.apache.httpcomponents:httpcore:jar:4.4.6:compile - omitted for conflict with 4.4.8)

                            6. org.laidu.learn:common-util:jar:1.0-SNAPSHOT
                              \- org.apache.httpcomponents:httpclient:jar:4.5.3:compile
                                 \- (org.apache.httpcomponents:httpcore:jar:4.4.6:compile - omitted for conflict with 4.4.8)

                            7. org.laidu.learn:common:pom:1.0-SNAPSHOT
                              \- org.laidu.learn:common-util:jar:1.0-SNAPSHOT:compile
                                 \- org.apache.httpcomponents:httpclient:jar:4.5.3:compile
                                    \- (org.apache.httpcomponents:httpcore:jar:4.4.6:compile - omitted for conflict with 4.4.8)

                            8. org.laidu.learn:commons-cli:jar:1.0-SNAPSHOT
                              \- org.laidu.learn:common-util:jar:1.0-SNAPSHOT:compile
                                 \- org.apache.httpcomponents:httpclient:jar:4.5.3:compile
                                    \- (org.apache.httpcomponents:httpcore:jar:4.4.6:compile - omitted for conflict with 4.4.8)

                            9. @@ -751,6 +832,7 @@

                              org.apache.httpcomponents:h
                            10. org.laidu.learn:commons-net:jar:1.0-SNAPSHOT
                              \- org.laidu.learn:common-util:jar:1.0-SNAPSHOT:compile
                                 \- org.apache.httpcomponents:httpclient:jar:4.5.3:compile
                                    \- (org.apache.httpcomponents:httpcore:jar:4.4.6:compile - omitted for conflict with 4.4.8)

                            11. org.laidu.learn:commons-text:jar:1.0-SNAPSHOT
                              \- org.laidu.learn:common-util:jar:1.0-SNAPSHOT:compile
                                 \- org.apache.httpcomponents:httpclient:jar:4.5.3:compile
                                    \- (org.apache.httpcomponents:httpcore:jar:4.4.6:compile - omitted for conflict with 4.4.8)

                            12. org.laidu.learn:drools:jar:1.0-SNAPSHOT
                              \- org.laidu.learn:common-util:jar:1.0-SNAPSHOT:compile
                                 \- org.apache.httpcomponents:httpclient:jar:4.5.3:compile
                                    \- (org.apache.httpcomponents:httpcore:jar:4.4.6:compile - omitted for conflict with 4.4.8)

                            13. +
                            14. org.laidu.learn:dynamoDB:jar:1.0-SNAPSHOT
                              \- org.laidu.learn:common-util:jar:1.0-SNAPSHOT:compile
                                 \- org.apache.httpcomponents:httpclient:jar:4.5.3:compile
                                    \- (org.apache.httpcomponents:httpcore:jar:4.4.6:compile - omitted for conflict with 4.4.8)

                            15. org.laidu.learn:framework:pom:1.0-SNAPSHOT
                              \- org.laidu.learn:common-util:jar:1.0-SNAPSHOT:compile
                                 \- org.apache.httpcomponents:httpclient:jar:4.5.3:compile
                                    \- (org.apache.httpcomponents:httpcore:jar:4.4.6:compile - omitted for conflict with 4.4.8)

                            16. org.laidu.learn:httpclient:jar:1.0-SNAPSHOT
                              \- org.laidu.learn:common-util:jar:1.0-SNAPSHOT:compile
                                 \- org.apache.httpcomponents:httpclient:jar:4.5.3:compile
                                    \- (org.apache.httpcomponents:httpcore:jar:4.4.6:compile - omitted for conflict with 4.4.8)

                            17. org.laidu.learn:junit5:jar:1.0-SNAPSHOT
                              \- org.laidu.learn:common-util:jar:1.0-SNAPSHOT:compile
                                 \- org.apache.httpcomponents:httpclient:jar:4.5.3:compile
                                    \- (org.apache.httpcomponents:httpcore:jar:4.4.6:compile - omitted for conflict with 4.4.8)

                            18. @@ -770,6 +852,7 @@

                              org.apache.httpcomponents:h
                            19. org.laidu.crawler:crawler-helper:jar:1.0-SNAPSHOT
                              \- org.laidu.learn:common-util:jar:1.0-SNAPSHOT:compile
                                 \- org.apache.httpcomponents:httpcore:jar:4.4.8:compile

                            20. org.laidu.learn:algorithm:jar:1.0-SNAPSHOT
                              \- org.laidu.learn:common-util:jar:1.0-SNAPSHOT:compile
                                 \- org.apache.httpcomponents:httpcore:jar:4.4.8:compile

                            21. org.laidu.learn:async-http-client:jar:1.0-SNAPSHOT
                              \- org.laidu.learn:common-util:jar:1.0-SNAPSHOT:compile
                                 \- org.apache.httpcomponents:httpcore:jar:4.4.8:compile

                            22. +
                            23. org.laidu.learn:aws:pom:1.0-SNAPSHOT
                              \- org.laidu.learn:common-util:jar:1.0-SNAPSHOT:compile
                                 \- org.apache.httpcomponents:httpcore:jar:4.4.8:compile

                            24. org.laidu.learn:common-util:jar:1.0-SNAPSHOT
                              \- org.apache.httpcomponents:httpcore:jar:4.4.8:compile

                            25. org.laidu.learn:common:pom:1.0-SNAPSHOT
                              \- org.laidu.learn:common-util:jar:1.0-SNAPSHOT:compile
                                 \- org.apache.httpcomponents:httpcore:jar:4.4.8:compile

                            26. org.laidu.learn:commons-cli:jar:1.0-SNAPSHOT
                              \- org.laidu.learn:common-util:jar:1.0-SNAPSHOT:compile
                                 \- org.apache.httpcomponents:httpcore:jar:4.4.8:compile

                            27. @@ -777,6 +860,7 @@

                              org.apache.httpcomponents:h
                            28. org.laidu.learn:commons-net:jar:1.0-SNAPSHOT
                              \- org.laidu.learn:common-util:jar:1.0-SNAPSHOT:compile
                                 \- org.apache.httpcomponents:httpcore:jar:4.4.8:compile

                            29. org.laidu.learn:commons-text:jar:1.0-SNAPSHOT
                              \- org.laidu.learn:common-util:jar:1.0-SNAPSHOT:compile
                                 \- org.apache.httpcomponents:httpcore:jar:4.4.8:compile

                            30. org.laidu.learn:drools:jar:1.0-SNAPSHOT
                              \- org.laidu.learn:common-util:jar:1.0-SNAPSHOT:compile
                                 \- org.apache.httpcomponents:httpcore:jar:4.4.8:compile

                            31. +
                            32. org.laidu.learn:dynamoDB:jar:1.0-SNAPSHOT
                              \- org.laidu.learn:common-util:jar:1.0-SNAPSHOT:compile
                                 \- org.apache.httpcomponents:httpcore:jar:4.4.8:compile

                            33. org.laidu.learn:framework:pom:1.0-SNAPSHOT
                              \- org.laidu.learn:common-util:jar:1.0-SNAPSHOT:compile
                                 \- org.apache.httpcomponents:httpcore:jar:4.4.8:compile

                            34. org.laidu.learn:httpclient:jar:1.0-SNAPSHOT
                              \- org.laidu.learn:common-util:jar:1.0-SNAPSHOT:compile
                                 \- org.apache.httpcomponents:httpcore:jar:4.4.8:compile

                            35. org.laidu.learn:junit5:jar:1.0-SNAPSHOT
                              \- org.laidu.learn:common-util:jar:1.0-SNAPSHOT:compile
                                 \- org.apache.httpcomponents:httpcore:jar:4.4.8:compile

                            36. @@ -907,7 +991,9 @@

                              org.junit.platform:ju
                            37. org.laidu.learn:BTrace:jar:1.0-SNAPSHOT
                              +- org.junit.jupiter:junit-jupiter-engine:jar:5.0.0:test
                              |  \- (org.junit.platform:junit-platform-engine:jar:1.0.0:test - omitted for conflict with 1.0.2)
                              \- org.junit.vintage:junit-vintage-engine:jar:4.12.0:test
                                 \- (org.junit.platform:junit-platform-engine:jar:1.0.0:test - omitted for conflict with 1.0.2)

                            38. org.laidu.learn:algorithm:jar:1.0-SNAPSHOT
                              +- org.junit.jupiter:junit-jupiter-engine:jar:5.0.0:test
                              |  \- (org.junit.platform:junit-platform-engine:jar:1.0.0:test - omitted for conflict with 1.0.2)
                              \- org.junit.vintage:junit-vintage-engine:jar:4.12.0:test
                                 \- (org.junit.platform:junit-platform-engine:jar:1.0.0:test - omitted for conflict with 1.0.2)

                            39. org.laidu.learn:async-http-client:jar:1.0-SNAPSHOT
                              +- org.junit.jupiter:junit-jupiter-engine:jar:5.0.0:test
                              |  \- (org.junit.platform:junit-platform-engine:jar:1.0.0:test - omitted for conflict with 1.0.2)
                              \- org.junit.vintage:junit-vintage-engine:jar:4.12.0:test
                                 \- (org.junit.platform:junit-platform-engine:jar:1.0.0:test - omitted for conflict with 1.0.2)

                            40. +
                            41. org.laidu.learn:aws:pom:1.0-SNAPSHOT
                              +- org.junit.jupiter:junit-jupiter-engine:jar:5.0.0:test
                              |  \- (org.junit.platform:junit-platform-engine:jar:1.0.0:test - omitted for conflict with 1.0.2)
                              \- org.junit.vintage:junit-vintage-engine:jar:4.12.0:test
                                 \- (org.junit.platform:junit-platform-engine:jar:1.0.0:test - omitted for conflict with 1.0.2)

                            42. org.laidu.learn:big-data:pom:1.0-SNAPSHOT
                              +- org.junit.jupiter:junit-jupiter-engine:jar:5.0.0:test
                              |  \- (org.junit.platform:junit-platform-engine:jar:1.0.0:test - omitted for conflict with 1.0.2)
                              \- org.junit.vintage:junit-vintage-engine:jar:4.12.0:test
                                 \- (org.junit.platform:junit-platform-engine:jar:1.0.0:test - omitted for conflict with 1.0.2)

                            43. +
                            44. org.laidu.learn:book-learn:pom:1.0-SNAPSHOT
                              +- org.junit.jupiter:junit-jupiter-engine:jar:5.0.0:test
                              |  \- (org.junit.platform:junit-platform-engine:jar:1.0.0:test - omitted for conflict with 1.0.2)
                              \- org.junit.vintage:junit-vintage-engine:jar:4.12.0:test
                                 \- (org.junit.platform:junit-platform-engine:jar:1.0.0:test - omitted for conflict with 1.0.2)

                            45. org.laidu.learn:code-practice:pom:1.0-SNAPSHOT
                              +- org.junit.jupiter:junit-jupiter-engine:jar:5.0.0:test
                              |  \- (org.junit.platform:junit-platform-engine:jar:1.0.0:test - omitted for conflict with 1.0.2)
                              \- org.junit.vintage:junit-vintage-engine:jar:4.12.0:test
                                 \- (org.junit.platform:junit-platform-engine:jar:1.0.0:test - omitted for conflict with 1.0.2)

                            46. org.laidu.learn:common-amqp:jar:1.0-SNAPSHOT
                              +- org.junit.jupiter:junit-jupiter-engine:jar:5.0.0:test
                              |  \- (org.junit.platform:junit-platform-engine:jar:1.0.0:test - omitted for conflict with 1.0.2)
                              \- org.junit.vintage:junit-vintage-engine:jar:4.12.0:test
                                 \- (org.junit.platform:junit-platform-engine:jar:1.0.0:test - omitted for conflict with 1.0.2)

                            47. org.laidu.learn:common-pool:jar:1.0-SNAPSHOT
                              +- org.junit.jupiter:junit-jupiter-engine:jar:5.0.0:test
                              |  \- (org.junit.platform:junit-platform-engine:jar:1.0.0:test - omitted for conflict with 1.0.2)
                              \- org.junit.vintage:junit-vintage-engine:jar:4.12.0:test
                                 \- (org.junit.platform:junit-platform-engine:jar:1.0.0:test - omitted for conflict with 1.0.2)

                            48. @@ -921,9 +1007,11 @@

                              org.junit.platform:ju
                            49. org.laidu.learn:convenient-util:pom:1.0-SNAPSHOT
                              +- org.junit.jupiter:junit-jupiter-engine:jar:5.0.0:test
                              |  \- (org.junit.platform:junit-platform-engine:jar:1.0.0:test - omitted for conflict with 1.0.2)
                              \- org.junit.vintage:junit-vintage-engine:jar:4.12.0:test
                                 \- (org.junit.platform:junit-platform-engine:jar:1.0.0:test - omitted for conflict with 1.0.2)

                            50. org.laidu.learn:crawler:jar:1.0-SNAPSHOT
                              +- org.junit.jupiter:junit-jupiter-engine:jar:5.0.0:test
                              |  \- (org.junit.platform:junit-platform-engine:jar:1.0.0:test - omitted for conflict with 1.0.2)
                              \- org.junit.vintage:junit-vintage-engine:jar:4.12.0:test
                                 \- (org.junit.platform:junit-platform-engine:jar:1.0.0:test - omitted for conflict with 1.0.2)

                            51. org.laidu.learn:data-structure:jar:1.0-SNAPSHOT
                              +- org.junit.jupiter:junit-jupiter-engine:jar:5.0.0:test
                              |  \- (org.junit.platform:junit-platform-engine:jar:1.0.0:test - omitted for conflict with 1.0.2)
                              \- org.junit.vintage:junit-vintage-engine:jar:4.12.0:test
                                 \- (org.junit.platform:junit-platform-engine:jar:1.0.0:test - omitted for conflict with 1.0.2)

                            52. +
                            53. org.laidu.learn:dataStructureandAlgorithmAnalysis3th:jar:1.0-SNAPSHOT
                              +- org.junit.jupiter:junit-jupiter-engine:jar:5.0.0:test
                              |  \- (org.junit.platform:junit-platform-engine:jar:1.0.0:test - omitted for conflict with 1.0.2)
                              \- org.junit.vintage:junit-vintage-engine:jar:4.12.0:test
                                 \- (org.junit.platform:junit-platform-engine:jar:1.0.0:test - omitted for conflict with 1.0.2)

                            54. org.laidu.learn:design-pattern:pom:1.0-SNAPSHOT
                              +- org.junit.jupiter:junit-jupiter-engine:jar:5.0.0:test
                              |  \- (org.junit.platform:junit-platform-engine:jar:1.0.0:test - omitted for conflict with 1.0.2)
                              \- org.junit.vintage:junit-vintage-engine:jar:4.12.0:test
                                 \- (org.junit.platform:junit-platform-engine:jar:1.0.0:test - omitted for conflict with 1.0.2)

                            55. -
                            56. org.laidu.learn:dev-ops:jar:1.0-SNAPSHOT
                              +- org.junit.jupiter:junit-jupiter-engine:jar:5.0.0:test
                              |  \- (org.junit.platform:junit-platform-engine:jar:1.0.0:test - omitted for conflict with 1.0.2)
                              \- org.junit.vintage:junit-vintage-engine:jar:4.12.0:test
                                 \- (org.junit.platform:junit-platform-engine:jar:1.0.0:test - omitted for conflict with 1.0.2)

                            57. +
                            58. org.laidu.learn:dev-ops:pom:1.0-SNAPSHOT
                              +- org.junit.jupiter:junit-jupiter-engine:jar:5.0.0:test
                              |  \- (org.junit.platform:junit-platform-engine:jar:1.0.0:test - omitted for conflict with 1.0.2)
                              \- org.junit.vintage:junit-vintage-engine:jar:4.12.0:test
                                 \- (org.junit.platform:junit-platform-engine:jar:1.0.0:test - omitted for conflict with 1.0.2)

                            59. org.laidu.learn:drools:jar:1.0-SNAPSHOT
                              +- org.junit.jupiter:junit-jupiter-engine:jar:5.0.0:test
                              |  \- (org.junit.platform:junit-platform-engine:jar:1.0.0:test - omitted for conflict with 1.0.2)
                              \- org.junit.vintage:junit-vintage-engine:jar:4.12.0:test
                                 \- (org.junit.platform:junit-platform-engine:jar:1.0.0:test - omitted for conflict with 1.0.2)

                            60. +
                            61. org.laidu.learn:dynamoDB:jar:1.0-SNAPSHOT
                              +- org.junit.jupiter:junit-jupiter-engine:jar:5.0.0:test
                              |  \- (org.junit.platform:junit-platform-engine:jar:1.0.0:test - omitted for conflict with 1.0.2)
                              \- org.junit.vintage:junit-vintage-engine:jar:4.12.0:test
                                 \- (org.junit.platform:junit-platform-engine:jar:1.0.0:test - omitted for conflict with 1.0.2)

                            62. org.laidu.learn:fastutil:jar:1.0-SNAPSHOT
                              +- org.junit.jupiter:junit-jupiter-engine:jar:5.0.0:test
                              |  \- (org.junit.platform:junit-platform-engine:jar:1.0.0:test - omitted for conflict with 1.0.2)
                              \- org.junit.vintage:junit-vintage-engine:jar:4.12.0:test
                                 \- (org.junit.platform:junit-platform-engine:jar:1.0.0:test - omitted for conflict with 1.0.2)

                            63. org.laidu.learn:framework:pom:1.0-SNAPSHOT
                              +- org.junit.jupiter:junit-jupiter-engine:jar:5.0.0:test
                              |  \- (org.junit.platform:junit-platform-engine:jar:1.0.0:test - omitted for conflict with 1.0.2)
                              \- org.junit.vintage:junit-vintage-engine:jar:4.12.0:test
                                 \- (org.junit.platform:junit-platform-engine:jar:1.0.0:test - omitted for conflict with 1.0.2)

                            64. org.laidu.learn:hadoop:jar:1.0-SNAPSHOT
                              +- org.junit.jupiter:junit-jupiter-engine:jar:5.0.0:test
                              |  \- (org.junit.platform:junit-platform-engine:jar:1.0.0:test - omitted for conflict with 1.0.2)
                              \- org.junit.vintage:junit-vintage-engine:jar:4.12.0:test
                                 \- (org.junit.platform:junit-platform-engine:jar:1.0.0:test - omitted for conflict with 1.0.2)

                            65. @@ -947,14 +1035,16 @@

                              org.junit.platform:ju
                            66. org.laidu.learn:spring-amqp:jar:1.0-SNAPSHOT
                              +- org.junit.jupiter:junit-jupiter-engine:jar:5.0.0:test
                              |  \- (org.junit.platform:junit-platform-engine:jar:1.0.0:test - omitted for conflict with 1.0.2)
                              \- org.junit.vintage:junit-vintage-engine:jar:4.12.0:test
                                 \- (org.junit.platform:junit-platform-engine:jar:1.0.0:test - omitted for conflict with 1.0.2)

                            67. org.laidu.learn:spring-boot:pom:1.0-SNAPSHOT
                              +- org.junit.jupiter:junit-jupiter-engine:jar:5.0.0:test
                              |  \- (org.junit.platform:junit-platform-engine:jar:1.0.0:test - omitted for conflict with 1.0.2)
                              \- org.junit.vintage:junit-vintage-engine:jar:4.12.0:test
                                 \- (org.junit.platform:junit-platform-engine:jar:1.0.0:test - omitted for conflict with 1.0.2)

                            68. org.laidu.learn:spring-cloud:pom:1.0-SNAPSHOT
                              +- org.junit.jupiter:junit-jupiter-engine:jar:5.0.0:test
                              |  \- (org.junit.platform:junit-platform-engine:jar:1.0.0:test - omitted for conflict with 1.0.2)
                              \- org.junit.vintage:junit-vintage-engine:jar:4.12.0:test
                                 \- (org.junit.platform:junit-platform-engine:jar:1.0.0:test - omitted for conflict with 1.0.2)

                            69. -
                            70. org.laidu.learn:spring-data:jar:1.0-SNAPSHOT
                              +- org.junit.jupiter:junit-jupiter-engine:jar:5.0.0:test
                              |  \- (org.junit.platform:junit-platform-engine:jar:1.0.0:test - omitted for conflict with 1.0.2)
                              \- org.junit.vintage:junit-vintage-engine:jar:4.12.0:test
                                 \- (org.junit.platform:junit-platform-engine:jar:1.0.0:test - omitted for conflict with 1.0.2)

                            71. +
                            72. org.laidu.learn:spring-data:pom:1.0-SNAPSHOT
                              +- org.junit.jupiter:junit-jupiter-engine:jar:5.0.0:test
                              |  \- (org.junit.platform:junit-platform-engine:jar:1.0.0:test - omitted for conflict with 1.0.2)
                              \- org.junit.vintage:junit-vintage-engine:jar:4.12.0:test
                                 \- (org.junit.platform:junit-platform-engine:jar:1.0.0:test - omitted for conflict with 1.0.2)

                            73. org.laidu.learn:spring-hadoop:jar:1.0-SNAPSHOT
                              +- org.junit.jupiter:junit-jupiter-engine:jar:5.0.0:test
                              |  \- (org.junit.platform:junit-platform-engine:jar:1.0.0:test - omitted for conflict with 1.0.2)
                              \- org.junit.vintage:junit-vintage-engine:jar:4.12.0:test
                                 \- (org.junit.platform:junit-platform-engine:jar:1.0.0:test - omitted for conflict with 1.0.2)

                            74. +
                            75. org.laidu.learn:spring-mybatis:jar:1.0-SNAPSHOT
                              +- org.junit.jupiter:junit-jupiter-engine:jar:5.0.0:test
                              |  \- (org.junit.platform:junit-platform-engine:jar:1.0.0:test - omitted for conflict with 1.0.2)
                              \- org.junit.vintage:junit-vintage-engine:jar:4.12.0:test
                                 \- (org.junit.platform:junit-platform-engine:jar:1.0.0:test - omitted for conflict with 1.0.2)

                            76. org.laidu.learn:spring-tool:jar:1.0-SNAPSHOT
                              +- org.junit.jupiter:junit-jupiter-engine:jar:5.0.0:test
                              |  \- (org.junit.platform:junit-platform-engine:jar:1.0.0:test - omitted for conflict with 1.0.2)
                              \- org.junit.vintage:junit-vintage-engine:jar:4.12.0:test
                                 \- (org.junit.platform:junit-platform-engine:jar:1.0.0:test - omitted for conflict with 1.0.2)

                            77. org.laidu.learn:spring:pom:1.0-SNAPSHOT
                              +- org.junit.jupiter:junit-jupiter-engine:jar:5.0.0:test
                              |  \- (org.junit.platform:junit-platform-engine:jar:1.0.0:test - omitted for conflict with 1.0.2)
                              \- org.junit.vintage:junit-vintage-engine:jar:4.12.0:test
                                 \- (org.junit.platform:junit-platform-engine:jar:1.0.0:test - omitted for conflict with 1.0.2)

                            78. org.laidu.learn:test:pom:1.0-SNAPSHOT
                              +- org.junit.jupiter:junit-jupiter-engine:jar:5.0.0:test
                              |  \- (org.junit.platform:junit-platform-engine:jar:1.0.0:test - omitted for conflict with 1.0.2)
                              \- org.junit.vintage:junit-vintage-engine:jar:4.12.0:test
                                 \- (org.junit.platform:junit-platform-engine:jar:1.0.0:test - omitted for conflict with 1.0.2)

                            79. org.laidu.learn:web:pom:1.0-SNAPSHOT
                              +- org.junit.jupiter:junit-jupiter-engine:jar:5.0.0:test
                              |  \- (org.junit.platform:junit-platform-engine:jar:1.0.0:test - omitted for conflict with 1.0.2)
                              \- org.junit.vintage:junit-vintage-engine:jar:4.12.0:test
                                 \- (org.junit.platform:junit-platform-engine:jar:1.0.0:test - omitted for conflict with 1.0.2)

                            80. org.laidu.learn:webmagic-learn:jar:1.0-SNAPSHOT
                              +- org.junit.jupiter:junit-jupiter-engine:jar:5.0.0:test
                              |  \- (org.junit.platform:junit-platform-engine:jar:1.0.0:test - omitted for conflict with 1.0.2)
                              \- org.junit.vintage:junit-vintage-engine:jar:4.12.0:test
                                 \- (org.junit.platform:junit-platform-engine:jar:1.0.0:test - omitted for conflict with 1.0.2)

                            81. org.laidu.learn:webmagic:pom:1.0-SNAPSHOT
                              +- org.junit.jupiter:junit-jupiter-engine:jar:5.0.0:test
                              |  \- (org.junit.platform:junit-platform-engine:jar:1.0.0:test - omitted for conflict with 1.0.2)
                              \- org.junit.vintage:junit-vintage-engine:jar:4.12.0:test
                                 \- (org.junit.platform:junit-platform-engine:jar:1.0.0:test - omitted for conflict with 1.0.2)

                            82. +
                            83. org.laidu.learn:x-pack:jar:1.0-SNAPSHOT
                              +- org.junit.jupiter:junit-jupiter-engine:jar:5.0.0:test
                              |  \- (org.junit.platform:junit-platform-engine:jar:1.0.0:test - omitted for conflict with 1.0.2)
                              \- org.junit.vintage:junit-vintage-engine:jar:4.12.0:test
                                 \- (org.junit.platform:junit-platform-engine:jar:1.0.0:test - omitted for conflict with 1.0.2)

                            84. org.laidu.learn:xml:jar:1.0-SNAPSHOT
                              +- org.junit.jupiter:junit-jupiter-engine:jar:5.0.0:test
                              |  \- (org.junit.platform:junit-platform-engine:jar:1.0.0:test - omitted for conflict with 1.0.2)
                              \- org.junit.vintage:junit-vintage-engine:jar:4.12.0:test
                                 \- (org.junit.platform:junit-platform-engine:jar:1.0.0:test - omitted for conflict with 1.0.2)

                            85. @@ -964,7 +1054,9 @@

                              org.junit.platform:ju
                            86. org.laidu.learn:BTrace:jar:1.0-SNAPSHOT
                              +- org.junit.platform:junit-platform-engine:jar:1.0.2:test
                              \- org.junit.platform:junit-platform-launcher:jar:1.0.2:test
                                 \- (org.junit.platform:junit-platform-engine:jar:1.0.2:test - omitted for duplicate)

                            87. org.laidu.learn:algorithm:jar:1.0-SNAPSHOT
                              +- org.junit.platform:junit-platform-engine:jar:1.0.2:test
                              \- org.junit.platform:junit-platform-launcher:jar:1.0.2:test
                                 \- (org.junit.platform:junit-platform-engine:jar:1.0.2:test - omitted for duplicate)

                            88. org.laidu.learn:async-http-client:jar:1.0-SNAPSHOT
                              +- org.junit.platform:junit-platform-engine:jar:1.0.2:test
                              \- org.junit.platform:junit-platform-launcher:jar:1.0.2:test
                                 \- (org.junit.platform:junit-platform-engine:jar:1.0.2:test - omitted for duplicate)

                            89. +
                            90. org.laidu.learn:aws:pom:1.0-SNAPSHOT
                              +- org.junit.platform:junit-platform-engine:jar:1.0.2:test
                              \- org.junit.platform:junit-platform-launcher:jar:1.0.2:test
                                 \- (org.junit.platform:junit-platform-engine:jar:1.0.2:test - omitted for duplicate)

                            91. org.laidu.learn:big-data:pom:1.0-SNAPSHOT
                              +- org.junit.platform:junit-platform-engine:jar:1.0.2:test
                              \- org.junit.platform:junit-platform-launcher:jar:1.0.2:test
                                 \- (org.junit.platform:junit-platform-engine:jar:1.0.2:test - omitted for duplicate)

                            92. +
                            93. org.laidu.learn:book-learn:pom:1.0-SNAPSHOT
                              +- org.junit.platform:junit-platform-engine:jar:1.0.2:test
                              \- org.junit.platform:junit-platform-launcher:jar:1.0.2:test
                                 \- (org.junit.platform:junit-platform-engine:jar:1.0.2:test - omitted for duplicate)

                            94. org.laidu.learn:code-practice:pom:1.0-SNAPSHOT
                              +- org.junit.platform:junit-platform-engine:jar:1.0.2:test
                              \- org.junit.platform:junit-platform-launcher:jar:1.0.2:test
                                 \- (org.junit.platform:junit-platform-engine:jar:1.0.2:test - omitted for duplicate)

                            95. org.laidu.learn:common-amqp:jar:1.0-SNAPSHOT
                              +- org.junit.platform:junit-platform-engine:jar:1.0.2:test
                              \- org.junit.platform:junit-platform-launcher:jar:1.0.2:test
                                 \- (org.junit.platform:junit-platform-engine:jar:1.0.2:test - omitted for duplicate)

                            96. org.laidu.learn:common-pool:jar:1.0-SNAPSHOT
                              +- org.junit.platform:junit-platform-engine:jar:1.0.2:test
                              \- org.junit.platform:junit-platform-launcher:jar:1.0.2:test
                                 \- (org.junit.platform:junit-platform-engine:jar:1.0.2:test - omitted for duplicate)

                            97. @@ -978,9 +1070,11 @@

                              org.junit.platform:ju
                            98. org.laidu.learn:convenient-util:pom:1.0-SNAPSHOT
                              +- org.junit.platform:junit-platform-engine:jar:1.0.2:test
                              \- org.junit.platform:junit-platform-launcher:jar:1.0.2:test
                                 \- (org.junit.platform:junit-platform-engine:jar:1.0.2:test - omitted for duplicate)

                            99. org.laidu.learn:crawler:jar:1.0-SNAPSHOT
                              +- org.junit.platform:junit-platform-engine:jar:1.0.2:test
                              \- org.junit.platform:junit-platform-launcher:jar:1.0.2:test
                                 \- (org.junit.platform:junit-platform-engine:jar:1.0.2:test - omitted for duplicate)

                            100. org.laidu.learn:data-structure:jar:1.0-SNAPSHOT
                              +- org.junit.platform:junit-platform-engine:jar:1.0.2:test
                              \- org.junit.platform:junit-platform-launcher:jar:1.0.2:test
                                 \- (org.junit.platform:junit-platform-engine:jar:1.0.2:test - omitted for duplicate)

                            101. +
                            102. org.laidu.learn:dataStructureandAlgorithmAnalysis3th:jar:1.0-SNAPSHOT
                              +- org.junit.platform:junit-platform-engine:jar:1.0.2:test
                              \- org.junit.platform:junit-platform-launcher:jar:1.0.2:test
                                 \- (org.junit.platform:junit-platform-engine:jar:1.0.2:test - omitted for duplicate)

                            103. org.laidu.learn:design-pattern:pom:1.0-SNAPSHOT
                              +- org.junit.platform:junit-platform-engine:jar:1.0.2:test
                              \- org.junit.platform:junit-platform-launcher:jar:1.0.2:test
                                 \- (org.junit.platform:junit-platform-engine:jar:1.0.2:test - omitted for duplicate)

                            104. -
                            105. org.laidu.learn:dev-ops:jar:1.0-SNAPSHOT
                              +- org.junit.platform:junit-platform-engine:jar:1.0.2:test
                              \- org.junit.platform:junit-platform-launcher:jar:1.0.2:test
                                 \- (org.junit.platform:junit-platform-engine:jar:1.0.2:test - omitted for duplicate)

                            106. +
                            107. org.laidu.learn:dev-ops:pom:1.0-SNAPSHOT
                              +- org.junit.platform:junit-platform-engine:jar:1.0.2:test
                              \- org.junit.platform:junit-platform-launcher:jar:1.0.2:test
                                 \- (org.junit.platform:junit-platform-engine:jar:1.0.2:test - omitted for duplicate)

                            108. org.laidu.learn:drools:jar:1.0-SNAPSHOT
                              +- org.junit.platform:junit-platform-engine:jar:1.0.2:test
                              \- org.junit.platform:junit-platform-launcher:jar:1.0.2:test
                                 \- (org.junit.platform:junit-platform-engine:jar:1.0.2:test - omitted for duplicate)

                            109. +
                            110. org.laidu.learn:dynamoDB:jar:1.0-SNAPSHOT
                              +- org.junit.platform:junit-platform-engine:jar:1.0.2:test
                              \- org.junit.platform:junit-platform-launcher:jar:1.0.2:test
                                 \- (org.junit.platform:junit-platform-engine:jar:1.0.2:test - omitted for duplicate)

                            111. org.laidu.learn:fastutil:jar:1.0-SNAPSHOT
                              +- org.junit.platform:junit-platform-engine:jar:1.0.2:test
                              \- org.junit.platform:junit-platform-launcher:jar:1.0.2:test
                                 \- (org.junit.platform:junit-platform-engine:jar:1.0.2:test - omitted for duplicate)

                            112. org.laidu.learn:framework:pom:1.0-SNAPSHOT
                              +- org.junit.platform:junit-platform-engine:jar:1.0.2:test
                              \- org.junit.platform:junit-platform-launcher:jar:1.0.2:test
                                 \- (org.junit.platform:junit-platform-engine:jar:1.0.2:test - omitted for duplicate)

                            113. org.laidu.learn:hadoop:jar:1.0-SNAPSHOT
                              +- org.junit.platform:junit-platform-engine:jar:1.0.2:test
                              \- org.junit.platform:junit-platform-launcher:jar:1.0.2:test
                                 \- (org.junit.platform:junit-platform-engine:jar:1.0.2:test - omitted for duplicate)

                            114. @@ -1004,34 +1098,53 @@

                              org.junit.platform:ju
                            115. org.laidu.learn:spring-amqp:jar:1.0-SNAPSHOT
                              +- org.junit.platform:junit-platform-engine:jar:1.0.2:test
                              \- org.junit.platform:junit-platform-launcher:jar:1.0.2:test
                                 \- (org.junit.platform:junit-platform-engine:jar:1.0.2:test - omitted for duplicate)

                            116. org.laidu.learn:spring-boot:pom:1.0-SNAPSHOT
                              +- org.junit.platform:junit-platform-engine:jar:1.0.2:test
                              \- org.junit.platform:junit-platform-launcher:jar:1.0.2:test
                                 \- (org.junit.platform:junit-platform-engine:jar:1.0.2:test - omitted for duplicate)

                            117. org.laidu.learn:spring-cloud:pom:1.0-SNAPSHOT
                              +- org.junit.platform:junit-platform-engine:jar:1.0.2:test
                              \- org.junit.platform:junit-platform-launcher:jar:1.0.2:test
                                 \- (org.junit.platform:junit-platform-engine:jar:1.0.2:test - omitted for duplicate)

                            118. -
                            119. org.laidu.learn:spring-data:jar:1.0-SNAPSHOT
                              +- org.junit.platform:junit-platform-engine:jar:1.0.2:test
                              \- org.junit.platform:junit-platform-launcher:jar:1.0.2:test
                                 \- (org.junit.platform:junit-platform-engine:jar:1.0.2:test - omitted for duplicate)

                            120. +
                            121. org.laidu.learn:spring-data:pom:1.0-SNAPSHOT
                              +- org.junit.platform:junit-platform-engine:jar:1.0.2:test
                              \- org.junit.platform:junit-platform-launcher:jar:1.0.2:test
                                 \- (org.junit.platform:junit-platform-engine:jar:1.0.2:test - omitted for duplicate)

                            122. org.laidu.learn:spring-hadoop:jar:1.0-SNAPSHOT
                              +- org.junit.platform:junit-platform-engine:jar:1.0.2:test
                              \- org.junit.platform:junit-platform-launcher:jar:1.0.2:test
                                 \- (org.junit.platform:junit-platform-engine:jar:1.0.2:test - omitted for duplicate)

                            123. +
                            124. org.laidu.learn:spring-mybatis:jar:1.0-SNAPSHOT
                              +- org.junit.platform:junit-platform-engine:jar:1.0.2:test
                              \- org.junit.platform:junit-platform-launcher:jar:1.0.2:test
                                 \- (org.junit.platform:junit-platform-engine:jar:1.0.2:test - omitted for duplicate)

                            125. org.laidu.learn:spring-tool:jar:1.0-SNAPSHOT
                              +- org.junit.platform:junit-platform-engine:jar:1.0.2:test
                              \- org.junit.platform:junit-platform-launcher:jar:1.0.2:test
                                 \- (org.junit.platform:junit-platform-engine:jar:1.0.2:test - omitted for duplicate)

                            126. org.laidu.learn:spring:pom:1.0-SNAPSHOT
                              +- org.junit.platform:junit-platform-engine:jar:1.0.2:test
                              \- org.junit.platform:junit-platform-launcher:jar:1.0.2:test
                                 \- (org.junit.platform:junit-platform-engine:jar:1.0.2:test - omitted for duplicate)

                            127. org.laidu.learn:test:pom:1.0-SNAPSHOT
                              +- org.junit.platform:junit-platform-engine:jar:1.0.2:test
                              \- org.junit.platform:junit-platform-launcher:jar:1.0.2:test
                                 \- (org.junit.platform:junit-platform-engine:jar:1.0.2:test - omitted for duplicate)

                            128. org.laidu.learn:web:pom:1.0-SNAPSHOT
                              +- org.junit.platform:junit-platform-engine:jar:1.0.2:test
                              \- org.junit.platform:junit-platform-launcher:jar:1.0.2:test
                                 \- (org.junit.platform:junit-platform-engine:jar:1.0.2:test - omitted for duplicate)

                            129. org.laidu.learn:webmagic-learn:jar:1.0-SNAPSHOT
                              +- org.junit.platform:junit-platform-engine:jar:1.0.2:test
                              \- org.junit.platform:junit-platform-launcher:jar:1.0.2:test
                                 \- (org.junit.platform:junit-platform-engine:jar:1.0.2:test - omitted for duplicate)

                            130. org.laidu.learn:webmagic:pom:1.0-SNAPSHOT
                              +- org.junit.platform:junit-platform-engine:jar:1.0.2:test
                              \- org.junit.platform:junit-platform-launcher:jar:1.0.2:test
                                 \- (org.junit.platform:junit-platform-engine:jar:1.0.2:test - omitted for duplicate)

                            131. +
                            132. org.laidu.learn:x-pack:jar:1.0-SNAPSHOT
                              +- org.junit.platform:junit-platform-engine:jar:1.0.2:test
                              \- org.junit.platform:junit-platform-launcher:jar:1.0.2:test
                                 \- (org.junit.platform:junit-platform-engine:jar:1.0.2:test - omitted for duplicate)

                            133. org.laidu.learn:xml:jar:1.0-SNAPSHOT
                              +- org.junit.platform:junit-platform-engine:jar:1.0.2:test
                              \- org.junit.platform:junit-platform-launcher:jar:1.0.2:test
                                 \- (org.junit.platform:junit-platform-engine:jar:1.0.2:test - omitted for duplicate)

                            134. 1.0.2
                            -

                            org.ow2.asm:asm

                            +

                            org.objenesis:objenesis

                            [Error] + + + + +
                            2.1 +
                              +
                            1. org.laidu.learn.swagger:swagger:jar:0.0.1-SNAPSHOT
                              \- org.springframework.boot:spring-boot-starter-test:jar:1.5.9.RELEASE:test
                                 \- org.mockito:mockito-core:jar:1.10.19:test
                                    \- (org.objenesis:objenesis:jar:2.1:test - omitted for conflict with 2.5.1)

                            2.5.1 +
                              +
                            1. org.laidu.learn.swagger:swagger:jar:0.0.1-SNAPSHOT
                              \- org.laidu.learn:common-util:jar:1.0-SNAPSHOT:compile
                                 \- de.ruedigermoeller:fst:jar:2.57:compile
                                    \- org.objenesis:objenesis:jar:2.5.1:compile

                            +
                            +

                            org.ow2.asm:asm

                            + + + +
                            [Error] + + - + - + +
                          1. org.laidu.learn:crawler:jar:1.0-SNAPSHOT
                            +- org.laidu.learn:common-amqp:jar:1.0-SNAPSHOT:compile
                            |  \- (ch.qos.logback:logback-access:jar:1.1.11:compile - version managed from 1.2.3; omitted for conflict with 1.2.3)
                            \- org.laidu.learn:common-util:jar:1.0-SNAPSHOT:compile
                               \- (ch.qos.logback:logback-access:jar:1.1.11:compile - version managed from 1.2.3; omitted for duplicate)

                          2. 5.0.3
                            1. org.laidu.learn.spring.cloud:consumer-hello:jar:0.0.1-SNAPSHOT
                              \- org.springframework.boot:spring-boot-starter-test:jar:1.5.10.RELEASE:test
                                 \- com.jayway.jsonpath:json-path:jar:2.2.0:test
                                    \- net.minidev:json-smart:jar:2.2.1:test
                                       \- net.minidev:accessors-smart:jar:1.1:test
                                          \- (org.ow2.asm:asm:jar:5.0.3:test - omitted for conflict with 5.0.4)

                            2. org.laidu.learn.spring.cloud:eureka-server:jar:0.0.1-SNAPSHOT
                              \- org.springframework.boot:spring-boot-starter-test:jar:1.5.10.RELEASE:test
                                 \- com.jayway.jsonpath:json-path:jar:2.2.0:test
                                    \- net.minidev:json-smart:jar:2.2.1:test
                                       \- net.minidev:accessors-smart:jar:1.1:test
                                          \- (org.ow2.asm:asm:jar:5.0.3:test - omitted for conflict with 6.0)

                            5.0.4
                            1. org.laidu.learn.spring.cloud:consumer-hello:jar:0.0.1-SNAPSHOT
                              \- org.springframework.cloud:spring-cloud-starter-hystrix:jar:1.4.3.RELEASE:compile
                                 \- org.springframework.cloud:spring-cloud-starter-netflix-hystrix:jar:1.4.3.RELEASE:compile
                                    \- com.netflix.hystrix:hystrix-javanica:jar:1.5.12:compile
                                       \- org.ow2.asm:asm:jar:5.0.4:runtime

                            6.0
                              @@ -1039,16 +1152,16 @@

                              org.ow2.asm:asm

                              org.scala-lang.modules:scala-java8-compat_2.11

                              - + + + +
                              [Error] - + - +
                              0.7.0
                              1. org.laidu.learn:play:jar:1.0-SNAPSHOT
                                \- com.typesafe.play:play_2.11:jar:2.6.6:compile
                                   \- com.typesafe.akka:akka-actor_2.11:jar:2.5.4:compile
                                      \- (org.scala-lang.modules:scala-java8-compat_2.11:jar:0.7.0:compile - omitted for conflict with 0.8.0)

                              0.8.0
                                @@ -1056,16 +1169,16 @@

                                org.scala-lang.

                                org.scala-lang.modules:scala-parser-combinators_2.11

                                - + + + + + + + - + - + - + - + + + + + + + @@ -367,72 +379,78 @@

                                compile

                                + + + + + + - + - + - + - + - + - + - + - + - + - + - + @@ -525,36 +543,30 @@

                                test

                                - - - - - - - + - + - + - + @@ -813,7 +825,7 @@

                                Dependency Tree

                                URL: http://www.mockito.org

                                Project Licenses: The MIT License

                                [Error] - + - +
                                1.0.4
                                1. org.laidu.learn:play:jar:1.0-SNAPSHOT
                                  \- com.typesafe.play:play_2.11:jar:2.6.6:compile
                                     \- com.typesafe.play:play-streams_2.11:jar:2.6.6:compile
                                        \- com.typesafe.akka:akka-stream_2.11:jar:2.5.4:compile
                                           \- com.typesafe:ssl-config-core_2.11:jar:0.2.1:compile
                                              \- (org.scala-lang.modules:scala-parser-combinators_2.11:jar:1.0.4:compile - omitted for conflict with 1.0.6)

                                1.0.6
                                  @@ -1073,21 +1186,21 @@

                                  org.scala

                                  org.scala-lang:scala-library

                                  - +
                                  [Error] - + - + - + - + - + @@ -1718,161 +1718,155 @@

                                  org/laidu/lea

                                  - - - - - - - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -1881,12 +1875,18 @@

                                  org/laidu/lea

                                  org/laidu/learn/amqp/rabbitmq/official/rpc/RPCServer.java

                                  2.11.11
                                  1. org.laidu.learn:play:jar:1.0-SNAPSHOT
                                    \- com.typesafe.play:play_2.11:jar:2.6.6:compile
                                       +- org.scala-lang:scala-library:jar:2.11.11:compile
                                       +- com.typesafe.play:play-streams_2.11:jar:2.6.6:compile
                                       |  +- (org.scala-lang:scala-library:jar:2.11.11:compile - omitted for duplicate)
                                       |  \- com.typesafe.akka:akka-stream_2.11:jar:2.5.4:compile
                                       |     \- (org.scala-lang:scala-library:jar:2.11.11:compile - omitted for duplicate)
                                       +- com.typesafe.play:twirl-api_2.11:jar:1.3.12:compile
                                       |  \- (org.scala-lang:scala-library:jar:2.11.11:compile - omitted for duplicate)
                                       +- com.typesafe.akka:akka-actor_2.11:jar:2.5.4:compile
                                       |  \- (org.scala-lang:scala-library:jar:2.11.11:compile - omitted for duplicate)
                                       +- com.typesafe.akka:akka-slf4j_2.11:jar:2.5.4:compile
                                       |  \- (org.scala-lang:scala-library:jar:2.11.11:compile - omitted for duplicate)
                                       +- com.typesafe.play:play-json_2.11:jar:2.6.6:compile
                                       |  +- (org.scala-lang:scala-library:jar:2.11.11:compile - omitted for duplicate)
                                       |  \- com.typesafe.play:play-functional_2.11:jar:2.6.6:compile
                                       |     \- (org.scala-lang:scala-library:jar:2.11.11:compile - omitted for duplicate)
                                       +- org.scala-lang:scala-reflect:jar:2.11.11:compile
                                       |  \- (org.scala-lang:scala-library:jar:2.11.11:compile - omitted for duplicate)
                                       \- org.scala-lang.modules:scala-parser-combinators_2.11:jar:1.0.6:compile
                                          \- (org.scala-lang:scala-library:jar:2.11.11:compile - omitted for duplicate)

                                  2.11.7
                                  1. org.laidu.learn:play:jar:1.0-SNAPSHOT
                                    \- com.typesafe.play:play_2.11:jar:2.6.6:compile
                                       \- com.typesafe.play:play-json_2.11:jar:2.6.6:compile
                                          \- org.typelevel:macro-compat_2.11:jar:1.1.1:compile
                                             \- (org.scala-lang:scala-library:jar:2.11.7:compile - omitted for conflict with 2.11.11)

                                  2.11.8
                                    @@ -1095,36 +1208,36 @@

                                    org.scala-lang:scala-library

                                    org.slf4j:slf4j-api

                                    - +
                                    [Error] - + - + - + - + - + - + - + - + - + - - - -
                                    1.6.1
                                    1. org.laidu.learn:hadoop:jar:1.0-SNAPSHOT
                                      \- org.apache.hadoop:hadoop-common:jar:2.8.1:compile
                                         \- org.apache.zookeeper:zookeeper:jar:3.4.6:compile
                                            \- (org.slf4j:slf4j-api:jar:1.6.1:compile - omitted for conflict with 1.7.10)

                                    1.6.4
                                    1. org.laidu.learn:hadoop:jar:1.0-SNAPSHOT
                                      \- org.apache.hadoop:hadoop-common:jar:2.8.1:compile
                                         \- org.apache.avro:avro:jar:1.7.4:compile
                                            \- (org.slf4j:slf4j-api:jar:1.6.4:compile - omitted for conflict with 1.7.10)

                                    1.7.10
                                    1. org.laidu.learn:hadoop:jar:1.0-SNAPSHOT
                                      +- org.apache.hadoop:hadoop-common:jar:2.8.1:compile
                                      |  +- org.slf4j:slf4j-api:jar:1.7.10:compile
                                      |  \- org.apache.hadoop:hadoop-auth:jar:2.8.1:compile
                                      |     \- (org.slf4j:slf4j-api:jar:1.7.10:compile - omitted for duplicate)
                                      +- org.apache.hadoop:hadoop-client:jar:2.8.1:compile
                                      |  \- org.apache.hadoop:hadoop-mapreduce-client-app:jar:2.8.1:compile
                                      |     +- org.apache.hadoop:hadoop-mapreduce-client-common:jar:2.8.1:compile
                                      |     |  \- (org.slf4j:slf4j-api:jar:1.7.10:compile - omitted for duplicate)
                                      |     +- org.apache.hadoop:hadoop-mapreduce-client-shuffle:jar:2.8.1:compile
                                      |     |  \- (org.slf4j:slf4j-api:jar:1.7.10:compile - omitted for duplicate)
                                      |     \- (org.slf4j:slf4j-api:jar:1.7.10:compile - omitted for duplicate)
                                      +- org.apache.hadoop:hadoop-mapreduce-client-core:jar:2.8.1:compile
                                      |  +- org.apache.hadoop:hadoop-yarn-common:jar:2.8.1:compile
                                      |  |  \- (org.slf4j:slf4j-api:jar:1.7.10:compile - omitted for duplicate)
                                      |  +- (org.slf4j:slf4j-api:jar:1.7.10:compile - omitted for duplicate)
                                      |  \- org.slf4j:slf4j-log4j12:jar:1.7.10:compile
                                      |     \- (org.slf4j:slf4j-api:jar:1.7.10:compile - omitted for duplicate)
                                      \- org.apache.hadoop:hadoop-mapreduce-client-jobclient:jar:2.8.1:provided
                                         \- (org.slf4j:slf4j-api:jar:1.7.10:provided - omitted for duplicate)

                                    1.7.21
                                    1. org.laidu.learn:common-amqp:jar:1.0-SNAPSHOT
                                      \- org.springframework.boot:spring-boot-starter-amqp:jar:1.5.9.RELEASE:compile
                                         \- org.springframework.amqp:spring-rabbit:jar:1.7.4.RELEASE:compile
                                            \- com.rabbitmq:amqp-client:jar:4.0.3:compile
                                               \- (org.slf4j:slf4j-api:jar:1.7.21:compile - omitted for conflict with 1.7.25)

                                    1.7.23
                                    1. org.laidu.learn:play:jar:1.0-SNAPSHOT
                                      \- com.typesafe.play:play_2.11:jar:2.6.6:compile
                                         \- com.typesafe.akka:akka-slf4j_2.11:jar:2.5.4:compile
                                            \- (org.slf4j:slf4j-api:jar:1.7.23:compile - omitted for conflict with 1.7.25)

                                    1.7.25
                                      @@ -1133,18 +1246,18 @@

                                      org.slf4j:slf4j-api

                                    1. org.laidu.learn:local-cache:jar:1.0-SNAPSHOT
                                      \- ch.qos.logback:logback-classic:jar:1.2.3:compile
                                         \- (org.slf4j:slf4j-api:jar:1.7.25:compile - omitted for conflict with 1.7.7)

                                    2. org.laidu.learn:play:jar:1.0-SNAPSHOT
                                      +- com.typesafe.play:play_2.11:jar:2.6.6:compile
                                      |  +- com.typesafe.play:play-netty-utils:jar:2.6.6:compile
                                      |  |  \- (org.slf4j:slf4j-api:jar:1.7.25:compile - omitted for duplicate)
                                      |  +- org.slf4j:slf4j-api:jar:1.7.25:compile
                                      |  +- org.slf4j:jul-to-slf4j:jar:1.7.25:compile
                                      |  |  \- (org.slf4j:slf4j-api:jar:1.7.25:compile - omitted for duplicate)
                                      |  \- org.slf4j:jcl-over-slf4j:jar:1.7.25:compile
                                      |     \- (org.slf4j:slf4j-api:jar:1.7.25:compile - omitted for duplicate)
                                      \- ch.qos.logback:logback-classic:jar:1.2.3:compile
                                         \- (org.slf4j:slf4j-api:jar:1.7.25:compile - omitted for duplicate)

                                    3. org.laidu.learn:webmagic-learn:jar:1.0-SNAPSHOT
                                      +- us.codecraft:webmagic-core:jar:0.7.3:compile
                                      |  \- com.jayway.jsonpath:json-path:jar:2.4.0:compile
                                      |     \- (org.slf4j:slf4j-api:jar:1.7.25:compile - omitted for conflict with 1.7.6)
                                      \- ch.qos.logback:logback-classic:jar:1.2.3:compile
                                         \- (org.slf4j:slf4j-api:jar:1.7.25:compile - omitted for conflict with 1.7.6)

                                    1.7.5
                                    1. org.laidu.learn:hadoop:jar:1.0-SNAPSHOT
                                      \- org.apache.hadoop:hadoop-common:jar:2.8.1:compile
                                         \- org.apache.hadoop:hadoop-auth:jar:2.8.1:compile
                                            \- org.apache.directory.server:apacheds-kerberos-codec:jar:2.0.0-M15:compile
                                               +- org.apache.directory.server:apacheds-i18n:jar:2.0.0-M15:compile
                                               |  \- (org.slf4j:slf4j-api:jar:1.7.5:compile - omitted for conflict with 1.7.10)
                                               +- org.apache.directory.api:api-asn1-api:jar:1.0.0-M20:compile
                                               |  \- (org.slf4j:slf4j-api:jar:1.7.5:compile - omitted for conflict with 1.7.10)
                                               +- org.apache.directory.api:api-util:jar:1.0.0-M20:compile
                                               |  \- (org.slf4j:slf4j-api:jar:1.7.5:compile - omitted for conflict with 1.7.10)
                                               \- (org.slf4j:slf4j-api:jar:1.7.5:compile - omitted for conflict with 1.7.10)

                                    1.7.6
                                    1. org.laidu.learn:hadoop:jar:1.0-SNAPSHOT
                                      \- org.apache.hadoop:hadoop-common:jar:2.8.1:compile
                                         \- org.apache.curator:curator-client:jar:2.7.1:compile
                                            \- (org.slf4j:slf4j-api:jar:1.7.6:compile - omitted for conflict with 1.7.10)

                                    2. org.laidu.learn:webmagic-learn:jar:1.0-SNAPSHOT
                                      \- us.codecraft:webmagic-core:jar:0.7.3:compile
                                         +- org.slf4j:slf4j-api:jar:1.7.6:compile
                                         \- org.slf4j:slf4j-log4j12:jar:1.7.6:compile
                                            \- (org.slf4j:slf4j-api:jar:1.7.6:compile - omitted for duplicate)

                                    1.7.7
                                      @@ -1152,16 +1265,16 @@

                                      org.slf4j:slf4j-api

                                      org.slf4j:slf4j-log4j12

                                      - + + + + - + - + - + - +
                                      [Error] - + - +
                                      1.6.1
                                      1. org.laidu.learn:hadoop:jar:1.0-SNAPSHOT
                                        \- org.apache.hadoop:hadoop-common:jar:2.8.1:compile
                                           \- org.apache.zookeeper:zookeeper:jar:3.4.6:compile
                                              \- (org.slf4j:slf4j-log4j12:jar:1.6.1:compile - omitted for conflict with 1.7.10)

                                      1.7.10
                                        @@ -1169,16 +1282,16 @@

                                        org.slf4j:slf4j-log4j12

                                        org.springframework.amqp:spring-rabbit

                                        - + - - - - - + - - - - - - - - -
                                        [Error] - + - + + + + +
                                        1.7.4.RELEASE
                                        1. org.laidu.learn:spring-amqp:jar:1.0-SNAPSHOT
                                          \- org.springframework.boot:spring-boot-starter-amqp:jar:1.5.9.RELEASE:compile
                                             \- (org.springframework.amqp:spring-rabbit:jar:1.7.4.RELEASE:compile - omitted for conflict with 2.0.1.RELEASE)

                                        2.0.1.RELEASE
                                          @@ -1186,16 +1299,16 @@

                                          org.springframework.amq

                                          org.springframework:spring-aop

                                          - + -
                                          [Error] - + - +
                                          4.3.11.RELEASE
                                          1. org.laidu.learn:common-amqp:jar:1.0-SNAPSHOT
                                            \- org.springframework.boot:spring-boot-starter-amqp:jar:1.5.9.RELEASE:compile
                                               \- org.springframework.amqp:spring-rabbit:jar:1.7.4.RELEASE:compile
                                                  \- org.springframework:spring-web:jar:4.3.11.RELEASE:compile
                                                     \- (org.springframework:spring-aop:jar:4.3.11.RELEASE:compile - omitted for conflict with 4.3.13.RELEASE)

                                          4.3.13.RELEASE
                                            @@ -1203,16 +1316,16 @@

                                            org.springframework:spring-aop<

                                            org.springframework:spring-beans

                                            - + + + + + + + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - - - - - - @@ -2381,1439 +2390,1461 @@

                                            compile

                                            + + + + + + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + -
                                            [Error] - + - +
                                            4.3.11.RELEASE
                                            1. org.laidu.learn:common-amqp:jar:1.0-SNAPSHOT
                                              \- org.springframework.boot:spring-boot-starter-amqp:jar:1.5.9.RELEASE:compile
                                                 \- org.springframework.amqp:spring-rabbit:jar:1.7.4.RELEASE:compile
                                                    +- org.springframework:spring-web:jar:4.3.11.RELEASE:compile
                                                    |  \- (org.springframework:spring-beans:jar:4.3.11.RELEASE:compile - omitted for conflict with 4.3.13.RELEASE)
                                                    \- org.springframework:spring-tx:jar:4.3.11.RELEASE:compile
                                                       \- (org.springframework:spring-beans:jar:4.3.11.RELEASE:compile - omitted for conflict with 4.3.13.RELEASE)

                                            4.3.13.RELEASE
                                              @@ -1220,16 +1333,16 @@

                                              org.springframework:spring-be

                                              org.springframework:spring-context

                                              - + - - - - - - - + - + - + - + @@ -570,7 +687,7 @@

                                              Project Dependency Graph

                                              Dependency Tree

                                                -
                                              • org.laidu.learn:spring-data:jar:1.0-SNAPSHOT [Information]
                                              • org.laidu.learn:spring-data:pom:1.0-SNAPSHOT [Information]
                                              [Error] - + - + + + + + + + - + - + - + - + - + - + - + - + - + - + - + - + + + + + + + + + + + + + - + - + + + + + + + + + + + + + + + + + + + + + + + + + - + + + + + + + + + + + + + + + + + + + @@ -352,59 +427,83 @@

                                              compile

                                              + + + + + + - + - + - + - + - + - + - + - + + + + + + + + + + + + + + + + + + + @@ -422,6 +521,30 @@

                                              compile

                                              + + + + + + + + + + + + + + + + + + + + + + + +
                                              4.3.11.RELEASE
                                              1. org.laidu.learn:common-amqp:jar:1.0-SNAPSHOT
                                                \- org.springframework.boot:spring-boot-starter-amqp:jar:1.5.9.RELEASE:compile
                                                   \- org.springframework.amqp:spring-rabbit:jar:1.7.4.RELEASE:compile
                                                      +- org.springframework:spring-web:jar:4.3.11.RELEASE:compile
                                                      |  \- (org.springframework:spring-context:jar:4.3.11.RELEASE:compile - omitted for conflict with 4.3.13.RELEASE)
                                                      \- (org.springframework:spring-context:jar:4.3.11.RELEASE:compile - omitted for conflict with 4.3.13.RELEASE)

                                              4.3.13.RELEASE
                                                @@ -1237,21 +1350,21 @@

                                                org.springframework:spring-

                                                org.springframework:spring-core

                                                - +
                                                [Error] - + - + - + + + + + + + - + - + - + - + + + + + + + @@ -376,72 +388,78 @@

                                                compile

                                                + + + + + + - + - + - + - + - + - + - + - + - + - + - + @@ -534,36 +552,30 @@

                                                test

                                                - - - - - - - + - + - + - + @@ -822,7 +834,7 @@

                                                Dependency Tree

                                                URL: http://www.mockito.org

                                                Project Licenses: The MIT License

                                                4.3.11.RELEASE
                                                1. org.laidu.learn:common-amqp:jar:1.0-SNAPSHOT
                                                  \- org.springframework.boot:spring-boot-starter-amqp:jar:1.5.9.RELEASE:compile
                                                     \- org.springframework.amqp:spring-rabbit:jar:1.7.4.RELEASE:compile
                                                        +- org.springframework:spring-web:jar:4.3.11.RELEASE:compile
                                                        |  \- (org.springframework:spring-core:jar:4.3.11.RELEASE:compile - omitted for conflict with 4.3.13.RELEASE)
                                                        +- org.springframework.amqp:spring-amqp:jar:1.7.4.RELEASE:compile
                                                        |  \- (org.springframework:spring-core:jar:4.3.11.RELEASE:compile - omitted for conflict with 4.3.13.RELEASE)
                                                        \- org.springframework:spring-tx:jar:4.3.11.RELEASE:compile
                                                           \- (org.springframework:spring-core:jar:4.3.11.RELEASE:compile - omitted for conflict with 4.3.13.RELEASE)

                                                4.3.13.RELEASE
                                                1. org.laidu.learn:common-amqp:jar:1.0-SNAPSHOT
                                                  \- org.springframework.boot:spring-boot-starter-amqp:jar:1.5.9.RELEASE:compile
                                                     +- org.springframework.boot:spring-boot-starter:jar:1.5.9.RELEASE:compile
                                                     |  +- org.springframework.boot:spring-boot:jar:1.5.9.RELEASE:compile
                                                     |  |  \- (org.springframework:spring-core:jar:4.3.13.RELEASE:compile - omitted for duplicate)
                                                     |  \- org.springframework:spring-core:jar:4.3.13.RELEASE:compile
                                                     \- org.springframework:spring-messaging:jar:4.3.13.RELEASE:compile
                                                        +- org.springframework:spring-beans:jar:4.3.13.RELEASE:compile
                                                        |  \- (org.springframework:spring-core:jar:4.3.13.RELEASE:compile - omitted for duplicate)
                                                        +- org.springframework:spring-context:jar:4.3.13.RELEASE:compile
                                                        |  +- org.springframework:spring-aop:jar:4.3.13.RELEASE:compile
                                                        |  |  \- (org.springframework:spring-core:jar:4.3.13.RELEASE:compile - omitted for duplicate)
                                                        |  +- (org.springframework:spring-core:jar:4.3.13.RELEASE:compile - omitted for duplicate)
                                                        |  \- org.springframework:spring-expression:jar:4.3.13.RELEASE:compile
                                                        |     \- (org.springframework:spring-core:jar:4.3.13.RELEASE:compile - omitted for duplicate)
                                                        \- (org.springframework:spring-core:jar:4.3.13.RELEASE:compile - omitted for duplicate)

                                                4.3.3.RELEASE
                                                  @@ -1259,16 +1372,16 @@

                                                  org.springframework:spring-cor

                                                  org.springframework:spring-messaging

                                                  - +
                                                  [Error] - + - + diff --git a/docs/language-feature/collection.html b/docs/language-feature/collection.html index 7628cdee3..a58e90956 100644 --- a/docs/language-feature/collection.html +++ b/docs/language-feature/collection.html @@ -1,5 +1,5 @@ - + @@ -25,7 +25,7 @@ - + @@ -112,7 +112,7 @@

                                                  Files

                                                  - + @@ -212,7 +212,7 @@

                                                  Files

                                                  - + @@ -257,7 +257,7 @@

                                                  Files

                                                  - + @@ -533,214 +533,208 @@

                                                  org/laidu/commo

                                                  - - - - - - - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -749,583 +743,583 @@

                                                  org/laidu/commo

                                                  org/laidu/commom/util/encryption/BasicEncryptionUtil.java

                                                  4.3.11.RELEASE
                                                  1. org.laidu.learn:common-amqp:jar:1.0-SNAPSHOT
                                                    \- org.springframework.boot:spring-boot-starter-amqp:jar:1.5.9.RELEASE:compile
                                                       \- org.springframework.amqp:spring-rabbit:jar:1.7.4.RELEASE:compile
                                                          \- (org.springframework:spring-messaging:jar:4.3.11.RELEASE:compile - omitted for conflict with 4.3.13.RELEASE)

                                                  4.3.13.RELEASE
                                                    @@ -1276,29 +1389,31 @@

                                                    org.springframework:sprin

                                                    org.springframework:spring-test

                                                    - +
                                                    [Error] - + - +
                                                    4.3.13.RELEASE
                                                    1. org.laidu.learn:spring-amqp:jar:1.0-SNAPSHOT
                                                      \- org.springframework.boot:spring-boot-starter-test:jar:1.5.9.RELEASE:test
                                                         \- (org.springframework:spring-test:jar:4.3.13.RELEASE:test - omitted for conflict with 5.0.2.RELEASE)

                                                    2. org.laidu.learn:spring-boot:pom:1.0-SNAPSHOT
                                                      \- org.springframework.boot:spring-boot-starter-test:jar:1.5.9.RELEASE:test
                                                         \- (org.springframework:spring-test:jar:4.3.13.RELEASE:test - omitted for conflict with 5.0.2.RELEASE)

                                                    3. org.laidu.learn:spring-cloud:pom:1.0-SNAPSHOT
                                                      \- org.springframework.boot:spring-boot-starter-test:jar:1.5.9.RELEASE:test
                                                         \- (org.springframework:spring-test:jar:4.3.13.RELEASE:test - omitted for conflict with 5.0.2.RELEASE)

                                                    4. -
                                                    5. org.laidu.learn:spring-data:jar:1.0-SNAPSHOT
                                                      \- org.springframework.boot:spring-boot-starter-test:jar:1.5.9.RELEASE:test
                                                         \- (org.springframework:spring-test:jar:4.3.13.RELEASE:test - omitted for conflict with 5.0.2.RELEASE)

                                                    6. +
                                                    7. org.laidu.learn:spring-data:pom:1.0-SNAPSHOT
                                                      \- org.springframework.boot:spring-boot-starter-test:jar:1.5.9.RELEASE:test
                                                         \- (org.springframework:spring-test:jar:4.3.13.RELEASE:test - omitted for conflict with 5.0.2.RELEASE)

                                                    8. org.laidu.learn:spring-hadoop:jar:1.0-SNAPSHOT
                                                      \- org.springframework.boot:spring-boot-starter-test:jar:1.5.9.RELEASE:test
                                                         \- (org.springframework:spring-test:jar:4.3.13.RELEASE:test - omitted for conflict with 5.0.2.RELEASE)

                                                    9. +
                                                    10. org.laidu.learn:spring-mybatis:jar:1.0-SNAPSHOT
                                                      \- org.springframework.boot:spring-boot-starter-test:jar:1.5.9.RELEASE:test
                                                         \- (org.springframework:spring-test:jar:4.3.13.RELEASE:test - omitted for conflict with 5.0.2.RELEASE)

                                                    11. org.laidu.learn:spring:pom:1.0-SNAPSHOT
                                                      \- org.springframework.boot:spring-boot-starter-test:jar:1.5.9.RELEASE:test
                                                         \- (org.springframework:spring-test:jar:4.3.13.RELEASE:test - omitted for conflict with 5.0.2.RELEASE)

                                                    5.0.2.RELEASE
                                                    1. org.laidu.learn:spring-amqp:jar:1.0-SNAPSHOT
                                                      \- org.springframework:spring-test:jar:5.0.2.RELEASE:test

                                                    2. org.laidu.learn:spring-boot:pom:1.0-SNAPSHOT
                                                      \- org.springframework:spring-test:jar:5.0.2.RELEASE:test

                                                    3. org.laidu.learn:spring-cloud:pom:1.0-SNAPSHOT
                                                      \- org.springframework:spring-test:jar:5.0.2.RELEASE:test

                                                    4. -
                                                    5. org.laidu.learn:spring-data:jar:1.0-SNAPSHOT
                                                      \- org.springframework:spring-test:jar:5.0.2.RELEASE:test

                                                    6. +
                                                    7. org.laidu.learn:spring-data:pom:1.0-SNAPSHOT
                                                      \- org.springframework:spring-test:jar:5.0.2.RELEASE:test

                                                    8. org.laidu.learn:spring-hadoop:jar:1.0-SNAPSHOT
                                                      \- org.springframework:spring-test:jar:5.0.2.RELEASE:test

                                                    9. +
                                                    10. org.laidu.learn:spring-mybatis:jar:1.0-SNAPSHOT
                                                      \- org.springframework:spring-test:jar:5.0.2.RELEASE:test

                                                    11. org.laidu.learn:spring:pom:1.0-SNAPSHOT
                                                      \- org.springframework:spring-test:jar:5.0.2.RELEASE:test

                                                    diff --git a/docs/dependency-info.html b/docs/dependency-info.html index 2e44dfbea..3b0df647d 100644 --- a/docs/dependency-info.html +++ b/docs/dependency-info.html @@ -1,5 +1,5 @@ - + @@ -25,7 +25,7 @@

                                                  - org/laidu/learn/language/feature/default_/method/InterfaceA.java + org/laidu/learn/language/feature/serialize/Main.java 0 @@ -293,12 +293,12 @@ under the License. 0 - 5 + 12
                                                  - org/laidu/learn/language/feature/serialize/Main.java + org/laidu/learn/language/feature/default_/method/InterfaceA.java 0 @@ -307,7 +307,7 @@ under the License. 0 - 12 + 5
                                                  org/laidu/commom/util/encryption/AESEncryptionUtil.java 0 036
                                                  35
                                                  org/laidu/commom/util/encryption/BasicEncryptionUtil.java 0org/laidu/commom/util/encryption/DESEncryptionUtil.java 0 029
                                                  30
                                                  org/laidu/commom/util/encryption/DESedeEncryptionUtil.java 0org/laidu/commom/util/http/har/model/Browser.java 0 06
                                                  5
                                                  org/laidu/commom/util/http/har/model/Cache.java 0org/laidu/commom/util/http/har/model/PageTimings.java 0 08
                                                  9
                                                  org/laidu/commom/util/http/har/model/Pages.java 0
                                                   Error javadocJavadocPackageMissing package-info.java file.
                                                   Errorjavadoc JavadocVariable Missing a Javadoc comment. 33
                                                   Error javadoc JavadocVariable Missing a Javadoc comment. 35
                                                   Error javadoc JavadocVariable Missing a Javadoc comment. 36
                                                   Error javadoc JavadocVariable Missing a Javadoc comment. 38
                                                   Error javadoc JavadocMethod Missing a Javadoc comment. 41
                                                   Error javadoc JavadocStyle First sentence should end with a period. 60
                                                   Error javadoc JavadocMethod Expected an @return tag. 69
                                                   Error misc FinalParameters Parameter data should be final. 69
                                                   Error javadoc JavadocMethod Expected @param tag for 'data'. 69
                                                   Error misc FinalParameters Parameter key should be final. 69
                                                   Error javadoc JavadocMethod Expected @param tag for 'key'. 69
                                                   Error misc FinalParameters Parameter ivp should be final. 69
                                                   Error javadoc JavadocMethod Expected @param tag for 'ivp'. 69
                                                   Error sizes LineLength Line is longer than 80 characters (found 129). 70
                                                   Error javadoc JavadocStyle First sentence should end with a period. 73
                                                   Error misc FinalParameters Parameter data should be final. 82
                                                   Error misc FinalParameters Parameter key should be final. 82
                                                   Error misc FinalParameters Parameter ivp should be final. 82
                                                   Error sizes LineLength Line is longer than 80 characters (found 129). 83
                                                   Error javadoc JavadocStyle First sentence should end with a period. 86
                                                   Error javadoc JavadocMethod Expected an @return tag. 92
                                                   Error misc FinalParameters Parameter data should be final. 92
                                                   Error javadoc JavadocMethod Expected @param tag for 'data'. 92
                                                   Error misc FinalParameters Parameter key should be final. 92
                                                   Error javadoc JavadocMethod Expected @param tag for 'key'. 92
                                                   Error whitespace WhitespaceAround '{' is not preceded with whitespace. 92
                                                   Error sizes LineLength Line is longer than 80 characters (found 130). 93
                                                   Error javadoc JavadocStyle First sentence should end with a period. 96
                                                   Error javadoc JavadocMethod Expected an @return tag. 102
                                                   Error misc FinalParameters Parameter data should be final. 102
                                                   Error javadoc JavadocMethod Expected @param tag for 'data'. 102
                                                   Error misc FinalParameters Parameter key should be final. 102
                                                   Error javadoc JavadocMethod Expected @param tag for 'key'. 102
                                                   Error whitespace WhitespaceAround '{' is not preceded with whitespace. 102
                                                   Error sizes LineLength
                                                  - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -1334,12 +1328,18 @@

                                                  org/laidu/com

                                                  org/laidu/commom/util/encryption/DESEncryptionUtil.java

                                                  Severity Category Rule Message Line
                                                   Error javadoc JavadocVariable Missing a Javadoc comment. 37
                                                   Error javadoc JavadocStyle First sentence should end with a period. 41
                                                   Error javadoc JavadocMethod Expected an @return tag. 51
                                                   Error sizes LineLength Line is longer than 80 characters (found 102). 51
                                                   Error misc FinalParameters Parameter algorithm should be final. 51
                                                   Error javadoc JavadocMethod Expected @param tag for 'algorithm'. 51
                                                   Error whitespace WhitespaceAfter ',' is not followed by whitespace. 51
                                                   Error misc FinalParameters Parameter algorithmKey should be final. 51
                                                   Error javadoc JavadocMethod Expected @param tag for 'algorithmKey'. 51
                                                   Error misc FinalParameters Parameter key should be final. 51
                                                   Error javadoc JavadocMethod Expected @param tag for 'key'. 51
                                                   Error misc FinalParameters Parameter ivp should be final. 51
                                                   Error javadoc JavadocMethod Expected @param tag for 'ivp'. 51
                                                   Error misc FinalParameters Parameter data should be final. 51
                                                   Error javadoc JavadocMethod Expected @param tag for 'data'. 51
                                                   Error whitespace WhitespaceAround '{' is not preceded with whitespace. 51
                                                   Error whitespace WhitespaceAround '==' is not preceded with whitespace. 57
                                                   Error whitespace WhitespaceAround '==' is not followed by whitespace. 57
                                                   Error whitespace WhitespaceAround 'else' is not preceded with whitespace. 59
                                                   Error whitespace WhitespaceAround '}' is not followed by whitespace. 59
                                                   Error sizes LineLength Line is longer than 80 characters (found 86). 60
                                                   Error javadoc JavadocStyle First sentence should end with a period. 70
                                                   Error javadoc JavadocMethod Expected an @return tag. 80
                                                   Error sizes LineLength Line is longer than 80 characters (found 102). 80
                                                   Error misc FinalParameters Parameter algorithm should be final. 80
                                                   Error javadoc JavadocMethod Expected @param tag for 'algorithm'. 80
                                                   Error whitespace WhitespaceAfter ',' is not followed by whitespace. 80
                                                   Error misc FinalParameters Parameter algorithmKey should be final. 80
                                                   Error javadoc JavadocMethod Expected @param tag for 'algorithmKey'. 80
                                                   Error misc FinalParameters Parameter key should be final. 80
                                                   Error javadoc JavadocMethod Expected @param tag for 'key'. 80
                                                   Error misc FinalParameters Parameter ivp should be final. 80
                                                   Error javadoc JavadocMethod Expected @param tag for 'ivp'. 80
                                                   Error misc FinalParameters Parameter data should be final. 80
                                                   Error javadoc JavadocMethod Expected @param tag for 'data'. 80
                                                   Error whitespace WhitespaceAround '{' is not preceded with whitespace. 80
                                                   Error whitespace WhitespaceAround '==' is not preceded with whitespace. 87
                                                   Error whitespace WhitespaceAround '==' is not followed by whitespace. 87
                                                   Error whitespace WhitespaceAround 'else' is not preceded with whitespace. 89
                                                   Error whitespace WhitespaceAround '}' is not followed by whitespace. 89
                                                   Error sizes LineLength Line is longer than 80 characters (found 86). 90
                                                   Error whitespace WhitespaceAfter ',' is not followed by whitespace. 94
                                                   Error whitespace WhitespaceAfter ',' is not followed by whitespace. 94
                                                   Error javadoc JavadocStyle First sentence should end with a period. 101
                                                   Error javadoc JavadocMethod Expected an @return tag. 109
                                                   Error sizes LineLength Line is longer than 80 characters (found 93). 109
                                                   Error misc FinalParameters Parameter secretKey should be final. 109
                                                   Error javadoc JavadocMethod Expected @param tag for 'secretKey'. 109
                                                   Error whitespace WhitespaceAfter ',' is not followed by whitespace. 109
                                                   Error misc FinalParameters Parameter algorithmKey should be final. 109
                                                   Error javadoc JavadocMethod Expected @param tag for 'algorithmKey'. 109
                                                   Error misc FinalParameters Parameter ivp should be final. 109
                                                   Error javadoc JavadocMethod Expected @param tag for 'ivp'. 109
                                                   Error misc FinalParameters Parameter data should be final. 109
                                                   Error javadoc JavadocMethod Expected @param tag for 'data'. 109
                                                   Error whitespace WhitespaceAround '{' is not preceded with whitespace. 109
                                                   Error whitespace WhitespaceAround '==' is not preceded with whitespace. 114
                                                   Error whitespace WhitespaceAround '==' is not followed by whitespace. 114
                                                   Error whitespace WhitespaceAround 'else' is not preceded with whitespace. 116
                                                   Error whitespace WhitespaceAround '}' is not followed by whitespace. 116
                                                   Error sizes LineLength Line is longer than 80 characters (found 86). 117
                                                   Error javadoc JavadocStyle First sentence should end with a period. 127
                                                   Error javadoc JavadocMethod Expected an @return tag. 135
                                                   Error sizes LineLength Line is longer than 80 characters (found 92). 135
                                                   Error misc FinalParameters Parameter secretKey should be final. 135
                                                   Error javadoc JavadocMethod Expected @param tag for 'secretKey'. 135
                                                   Error whitespace WhitespaceAfter ',' is not followed by whitespace. 135
                                                   Error misc FinalParameters Parameter algorithmKey should be final. 135
                                                   Error javadoc JavadocMethod Expected @param tag for 'algorithmKey'. 135
                                                   Error misc FinalParameters Parameter ivp should be final. 135
                                                   Error javadoc JavadocMethod Expected @param tag for 'ivp'. 135
                                                   Error misc FinalParameters Parameter data should be final. 135
                                                   Error javadoc JavadocMethod Expected @param tag for 'data'. 135
                                                   Error whitespace WhitespaceAround '{' is not preceded with whitespace. 135
                                                   Error whitespace WhitespaceAround '==' is not preceded with whitespace. 141
                                                   Error whitespace WhitespaceAround '==' is not followed by whitespace. 141
                                                   Error whitespace WhitespaceAround 'else' is not preceded with whitespace. 143
                                                   Error whitespace WhitespaceAround '}' is not followed by whitespace. 143
                                                   Error sizes LineLength Line is longer than 80 characters (found 86). 144
                                                   Error whitespace WhitespaceAfter ',' is not followed by whitespace. 148
                                                   Error whitespace WhitespaceAfter ',' is not followed by whitespace. 148
                                                   Error sizes LineLength Line is longer than 80 characters (found 84). 154
                                                   Error javadoc JavadocMethod Missing a Javadoc comment. 154
                                                   Error misc FinalParameters Parameter algorithm should be final. 154
                                                   Error misc FinalParameters Parameter privateKey should be final. 154
                                                   Error misc FinalParameters Parameter data should be final. 154
                                                   Error whitespace WhitespaceAround '{' is not preceded with whitespace. 154
                                                   Error whitespace WhitespaceAfter ',' is not followed by whitespace. 162
                                                   Error whitespace WhitespaceAfter ',' is not followed by whitespace. 162
                                                   Error javadoc JavadocMethod Missing a Javadoc comment. 167
                                                   Error misc FinalParameters Parameter algorithm should be final. 167
                                                   Error misc FinalParameters Parameter publicKey should be final. 167
                                                   Error misc FinalParameters Parameter data should be final. 167
                                                   Error whitespace WhitespaceAround '{' is not preceded with whitespace. 167
                                                   Error whitespace WhitespaceAfter ',' is not followed by whitespace. 175
                                                   Error whitespace WhitespaceAfter
                                                  - + + + + + + + @@ -3869,34 +3869,28 @@

                                                  org/laidu/commom/util

                                                  - - - - - - - + - + - + - + @@ -3905,13 +3899,13 @@

                                                  org/laidu/commom/util

                                                  org/laidu/commom/util/http/har/model/Cache.java

                                                  Severity Category Rule Message Line
                                                   ErrorjavadocJavadocPackageMissing package-info.java file.
                                                   Error javadoc
                                                   Error javadocJavadocPackageMissing package-info.java file.
                                                   Errorjavadoc JavadocType Missing a Javadoc comment. 5
                                                   Error javadoc JavadocVariable Missing a Javadoc comment. 7
                                                   Error design VisibilityModifier Variable 'name' must be private and have accessor methods. 7
                                                   Error javadoc JavadocVariable Missing a Javadoc comment. 8
                                                   Error design VisibilityModifier
                                                  - + - + @@ -3920,37 +3914,37 @@

                                                  org/laidu/commom/util/h

                                                  org/laidu/commom/util/http/har/model/Content.java

                                                  Severity Category Rule Message Line
                                                   Error javadoc JavadocType
                                                  - + - + - + - + - + - + @@ -3959,37 +3953,37 @@

                                                  org/laidu/commom/util

                                                  org/laidu/commom/util/http/har/model/Cookies.java

                                                  Severity Category Rule Message Line
                                                   Error javadoc JavadocType Missing a Javadoc comment. 3
                                                   Error javadoc JavadocVariable Missing a Javadoc comment. 5
                                                   Error design VisibilityModifier Variable 'size' must be private and have accessor methods. 5
                                                   Error javadoc JavadocVariable Missing a Javadoc comment. 6
                                                   Error design VisibilityModifier
                                                  - + - + - + - + - + - + @@ -3998,37 +3992,37 @@

                                                  org/laidu/commom/util

                                                  org/laidu/commom/util/http/har/model/Creator.java

                                                  Severity Category Rule Message Line
                                                   Error javadoc JavadocType Missing a Javadoc comment. 3
                                                   Error javadoc JavadocVariable Missing a Javadoc comment. 4
                                                   Error design VisibilityModifier Variable 'name' must be private and have accessor methods. 4
                                                   Error javadoc JavadocVariable Missing a Javadoc comment. 5
                                                   Error design VisibilityModifier
                                                  - + - + - + - + - + - + @@ -4037,1033 +4031,1033 @@

                                                  org/laidu/commom/util

                                                  org/laidu/commom/util/http/har/model/Entries.java

                                                  Severity Category Rule Message Line
                                                   Error javadoc JavadocType Missing a Javadoc comment. 3
                                                   Error javadoc JavadocVariable Missing a Javadoc comment. 5
                                                   Error design VisibilityModifier Variable 'name' must be private and have accessor methods. 5
                                                   Error javadoc JavadocVariable Missing a Javadoc comment. 6
                                                   Error design VisibilityModifier
                                                  - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -5072,25 +5066,25 @@

                                                  org/laidu/commom/util

                                                  org/laidu/commom/util/http/har/model/Har.java

                                                  Severity Category Rule Message Line
                                                   Error javadoc JavadocType Missing a Javadoc comment. 3
                                                   Error javadoc JavadocVariable Missing a Javadoc comment. 4
                                                   Error design VisibilityModifier Variable 'pageref' must be private and have accessor methods. 4
                                                   Error javadoc JavadocVariable Missing a Javadoc comment. 5
                                                   Error design VisibilityModifier Variable 'startedDateTime' must be private and have accessor methods. 5
                                                   Error javadoc JavadocVariable Missing a Javadoc comment. 6
                                                   Error design VisibilityModifier Variable 'time' must be private and have accessor methods. 6
                                                   Error javadoc JavadocVariable Missing a Javadoc comment. 7
                                                   Error design VisibilityModifier Variable 'request' must be private and have accessor methods. 7
                                                   Error javadoc JavadocVariable Missing a Javadoc comment. 8
                                                   Error design VisibilityModifier Variable 'response' must be private and have accessor methods. 8
                                                   Error javadoc JavadocVariable Missing a Javadoc comment. 9
                                                   Error design VisibilityModifier Variable 'cache' must be private and have accessor methods. 9
                                                   Error javadoc JavadocVariable Missing a Javadoc comment. 10
                                                   Error design VisibilityModifier Variable 'timings' must be private and have accessor methods. 10
                                                   Error javadoc JavadocVariable Missing a Javadoc comment. 11
                                                   Error naming MemberName Name '_ip_addr' must match pattern '^[a-z][a-zA-Z0-9]*$'. 11
                                                   Error design VisibilityModifier Variable '_ip_addr' must be private and have accessor methods. 11
                                                   Error javadoc JavadocVariable Missing a Javadoc comment. 12
                                                   Error naming MemberName Name '_method' must match pattern '^[a-z][a-zA-Z0-9]*$'. 12
                                                   Error design VisibilityModifier Variable '_method' must be private and have accessor methods. 12
                                                   Error javadoc JavadocVariable Missing a Javadoc comment. 13
                                                   Error naming MemberName Name '_host' must match pattern '^[a-z][a-zA-Z0-9]*$'. 13
                                                   Error design VisibilityModifier Variable '_host' must be private and have accessor methods. 13
                                                   Error javadoc JavadocVariable Missing a Javadoc comment. 14
                                                   Error naming MemberName Name '_url' must match pattern '^[a-z][a-zA-Z0-9]*$'. 14
                                                   Error design VisibilityModifier Variable '_url' must be private and have accessor methods. 14
                                                   Error javadoc JavadocVariable Missing a Javadoc comment. 15
                                                   Error naming MemberName Name '_responseCode' must match pattern '^[a-z][a-zA-Z0-9]*$'. 15
                                                   Error design VisibilityModifier Variable '_responseCode' must be private and have accessor methods. 15
                                                   Error javadoc JavadocVariable Missing a Javadoc comment. 16
                                                   Error naming MemberName Name '_load_ms' must match pattern '^[a-z][a-zA-Z0-9]*$'. 16
                                                   Error design VisibilityModifier Variable '_load_ms' must be private and have accessor methods. 16
                                                   Error javadoc JavadocVariable Missing a Javadoc comment. 17
                                                   Error naming MemberName Name '_ttfb_ms' must match pattern '^[a-z][a-zA-Z0-9]*$'. 17
                                                   Error design VisibilityModifier Variable '_ttfb_ms' must be private and have accessor methods. 17
                                                   Error javadoc JavadocVariable Missing a Javadoc comment. 18
                                                   Error naming MemberName Name '_load_start' must match pattern '^[a-z][a-zA-Z0-9]*$'. 18
                                                   Error design VisibilityModifier Variable '_load_start' must be private and have accessor methods. 18
                                                   Error javadoc JavadocVariable Missing a Javadoc comment. 19
                                                   Error naming MemberName Name '_bytesOut' must match pattern '^[a-z][a-zA-Z0-9]*$'. 19
                                                   Error design VisibilityModifier Variable '_bytesOut' must be private and have accessor methods. 19
                                                   Error javadoc JavadocVariable Missing a Javadoc comment. 20
                                                   Error naming MemberName Name '_expires' must match pattern '^[a-z][a-zA-Z0-9]*$'. 20
                                                   Error design VisibilityModifier Variable '_expires' must be private and have accessor methods. 20
                                                   Error javadoc JavadocVariable Missing a Javadoc comment. 21
                                                   Error naming MemberName Name '_contentType' must match pattern '^[a-z][a-zA-Z0-9]*$'. 21
                                                   Error design VisibilityModifier Variable '_contentType' must be private and have accessor methods. 21
                                                   Error javadoc JavadocVariable Missing a Javadoc comment. 22
                                                   Error naming MemberName Name '_contentEncoding' must match pattern '^[a-z][a-zA-Z0-9]*$'. 22
                                                   Error design VisibilityModifier Variable '_contentEncoding' must be private and have accessor methods. 22
                                                   Error javadoc JavadocVariable Missing a Javadoc comment. 23
                                                   Error naming MemberName Name '_type' must match pattern '^[a-z][a-zA-Z0-9]*$'. 23
                                                   Error design VisibilityModifier Variable '_type' must be private and have accessor methods. 23
                                                   Error javadoc JavadocVariable Missing a Javadoc comment. 24
                                                   Error naming MemberName Name '_socket' must match pattern '^[a-z][a-zA-Z0-9]*$'. 24
                                                   Error design VisibilityModifier Variable '_socket' must be private and have accessor methods. 24
                                                   Error javadoc JavadocVariable Missing a Javadoc comment. 25
                                                   Error naming MemberName Name '_score_cache' must match pattern '^[a-z][a-zA-Z0-9]*$'. 25
                                                   Error design VisibilityModifier Variable '_score_cache' must be private and have accessor methods. 25
                                                   Error javadoc JavadocVariable Missing a Javadoc comment. 26
                                                   Error naming MemberName Name '_score_cdn' must match pattern '^[a-z][a-zA-Z0-9]*$'. 26
                                                   Error design VisibilityModifier Variable '_score_cdn' must be private and have accessor methods. 26
                                                   Error javadoc JavadocVariable Missing a Javadoc comment. 27
                                                   Error naming MemberName Name '_score_gzip' must match pattern '^[a-z][a-zA-Z0-9]*$'. 27
                                                   Error design VisibilityModifier Variable '_score_gzip' must be private and have accessor methods. 27
                                                   Error javadoc JavadocVariable Missing a Javadoc comment. 28
                                                   Error naming MemberName Name '_score_cookies' must match pattern '^[a-z][a-zA-Z0-9]*$'. 28
                                                   Error design VisibilityModifier Variable '_score_cookies' must be private and have accessor methods. 28
                                                   Error javadoc JavadocVariable Missing a Javadoc comment. 30
                                                   Error naming MemberName Name '_score_minify' must match pattern '^[a-z][a-zA-Z0-9]*$'. 30
                                                   Error design VisibilityModifier Variable '_score_minify' must be private and have accessor methods. 30
                                                   Error javadoc JavadocVariable Missing a Javadoc comment. 31
                                                   Error naming MemberName Name '_score_combine' must match pattern '^[a-z][a-zA-Z0-9]*$'. 31
                                                   Error design VisibilityModifier Variable '_score_combine' must be private and have accessor methods. 31
                                                   Error javadoc JavadocVariable Missing a Javadoc comment. 32
                                                   Error naming MemberName Name '_score_compress' must match pattern '^[a-z][a-zA-Z0-9]*$'. 32
                                                   Error design VisibilityModifier Variable '_score_compress' must be private and have accessor methods. 32
                                                   Error javadoc JavadocVariable Missing a Javadoc comment. 33
                                                   Error naming MemberName Name '_score_etags' must match pattern '^[a-z][a-zA-Z0-9]*$'. 33
                                                   Error design VisibilityModifier Variable '_score_etags' must be private and have accessor methods. 33
                                                   Error javadoc JavadocVariable Missing a Javadoc comment. 34
                                                   Error naming MemberName Name '_is_secure' must match pattern '^[a-z][a-zA-Z0-9]*$'. 34
                                                   Error design VisibilityModifier Variable '_is_secure' must be private and have accessor methods. 34
                                                   Error javadoc JavadocVariable Missing a Javadoc comment. 35
                                                   Error naming MemberName Name '_dns_ms' must match pattern '^[a-z][a-zA-Z0-9]*$'. 35
                                                   Error design VisibilityModifier Variable '_dns_ms' must be private and have accessor methods. 35
                                                   Error javadoc JavadocVariable Missing a Javadoc comment. 36
                                                   Error naming MemberName Name '_connect_ms' must match pattern '^[a-z][a-zA-Z0-9]*$'. 36
                                                   Error design VisibilityModifier Variable '_connect_ms' must be private and have accessor methods. 36
                                                   Error javadoc JavadocVariable Missing a Javadoc comment. 37
                                                   Error naming MemberName Name '_ssl_ms' must match pattern '^[a-z][a-zA-Z0-9]*$'. 37
                                                   Error design VisibilityModifier Variable '_ssl_ms' must be private and have accessor methods. 37
                                                   Error javadoc JavadocVariable Missing a Javadoc comment. 38
                                                   Error naming MemberName Name '_gzip_total' must match pattern '^[a-z][a-zA-Z0-9]*$'. 38
                                                   Error design VisibilityModifier Variable '_gzip_total' must be private and have accessor methods. 38
                                                   Error javadoc JavadocVariable Missing a Javadoc comment. 39
                                                   Error naming MemberName Name '_gzip_save' must match pattern '^[a-z][a-zA-Z0-9]*$'. 39
                                                   Error design VisibilityModifier Variable '_gzip_save' must be private and have accessor methods. 39
                                                   Error javadoc JavadocVariable Missing a Javadoc comment. 40
                                                   Error naming MemberName Name '_minify_total' must match pattern '^[a-z][a-zA-Z0-9]*$'. 40
                                                   Error design VisibilityModifier Variable '_minify_total' must be private and have accessor methods. 40
                                                   Error javadoc JavadocVariable Missing a Javadoc comment. 41
                                                   Error naming MemberName Name '_minify_save' must match pattern '^[a-z][a-zA-Z0-9]*$'. 41
                                                   Error design VisibilityModifier Variable '_minify_save' must be private and have accessor methods. 41
                                                   Error javadoc JavadocVariable Missing a Javadoc comment. 42
                                                   Error naming MemberName Name '_image_total' must match pattern '^[a-z][a-zA-Z0-9]*$'. 42
                                                   Error design VisibilityModifier Variable '_image_total' must be private and have accessor methods. 42
                                                   Error javadoc JavadocVariable Missing a Javadoc comment. 43
                                                   Error naming MemberName Name '_image_save' must match pattern '^[a-z][a-zA-Z0-9]*$'. 43
                                                   Error design VisibilityModifier Variable '_image_save' must be private and have accessor methods. 43
                                                   Error javadoc JavadocVariable Missing a Javadoc comment. 44
                                                   Error naming MemberName Name '_cache_time' must match pattern '^[a-z][a-zA-Z0-9]*$'. 44
                                                   Error design VisibilityModifier Variable '_cache_time' must be private and have accessor methods. 44
                                                   Error javadoc JavadocVariable Missing a Javadoc comment. 45
                                                   Error naming MemberName Name '_dns_start' must match pattern '^[a-z][a-zA-Z0-9]*$'. 45
                                                   Error design VisibilityModifier Variable '_dns_start' must be private and have accessor methods. 45
                                                   Error javadoc JavadocVariable Missing a Javadoc comment. 46
                                                   Error naming MemberName Name '_dns_end' must match pattern '^[a-z][a-zA-Z0-9]*$'. 46
                                                   Error design VisibilityModifier Variable '_dns_end' must be private and have accessor methods. 46
                                                   Error javadoc JavadocVariable Missing a Javadoc comment. 47
                                                   Error naming MemberName Name '_server_count' must match pattern '^[a-z][a-zA-Z0-9]*$'. 47
                                                   Error design VisibilityModifier Variable '_server_count' must be private and have accessor methods. 47
                                                   Error javadoc JavadocVariable Missing a Javadoc comment. 48
                                                   Error naming MemberName Name '_server_rtt' must match pattern '^[a-z][a-zA-Z0-9]*$'. 48
                                                   Error design VisibilityModifier Variable '_server_rtt' must be private and have accessor methods. 48
                                                   Error javadoc JavadocVariable Missing a Javadoc comment. 49
                                                   Error naming MemberName Name '_client_port' must match pattern '^[a-z][a-zA-Z0-9]*$'. 49
                                                   Error design VisibilityModifier Variable '_client_port' must be private and have accessor methods. 49
                                                   Error javadoc JavadocVariable Missing a Javadoc comment. 50
                                                   Error naming MemberName Name '_jpeg_scan_count' must match pattern '^[a-z][a-zA-Z0-9]*$'. 50
                                                   Error design VisibilityModifier Variable '_jpeg_scan_count' must be private and have accessor methods. 50
                                                   Error javadoc JavadocVariable Missing a Javadoc comment. 51
                                                   Error naming MemberName Name '_full_url' must match pattern '^[a-z][a-zA-Z0-9]*$'. 51
                                                   Error design VisibilityModifier Variable '_full_url' must be private and have accessor methods. 51
                                                   Error javadoc JavadocVariable Missing a Javadoc comment. 52
                                                   Error naming MemberName Name '_score_progressive_jpeg' must match pattern '^[a-z][a-zA-Z0-9]*$'. 52
                                                   Error design VisibilityModifier Variable '_score_progressive_jpeg' must be private and have accessor methods. 52
                                                   Error javadoc JavadocVariable Missing a Javadoc comment. 53
                                                   Error naming MemberName Name '_load_end' must match pattern '^[a-z][a-zA-Z0-9]*$'. 53
                                                   Error design VisibilityModifier Variable '_load_end' must be private and have accessor methods. 53
                                                   Error javadoc JavadocVariable Missing a Javadoc comment. 54
                                                   Error naming MemberName Name '_ttfb_start' must match pattern '^[a-z][a-zA-Z0-9]*$'. 54
                                                   Error design VisibilityModifier Variable '_ttfb_start' must be private and have accessor methods. 54
                                                   Error javadoc JavadocVariable Missing a Javadoc comment. 55
                                                   Error naming MemberName Name '_ttfb_end' must match pattern '^[a-z][a-zA-Z0-9]*$'. 55
                                                   Error design VisibilityModifier Variable '_ttfb_end' must be private and have accessor methods. 55
                                                   Error javadoc JavadocVariable Missing a Javadoc comment. 56
                                                   Error naming MemberName Name '_download_start' must match pattern '^[a-z][a-zA-Z0-9]*$'. 56
                                                   Error design VisibilityModifier Variable '_download_start' must be private and have accessor methods. 56
                                                   Error javadoc JavadocVariable Missing a Javadoc comment. 57
                                                   Error naming MemberName Name '_download_end' must match pattern '^[a-z][a-zA-Z0-9]*$'. 57
                                                   Error design VisibilityModifier Variable '_download_end' must be private and have accessor methods. 57
                                                   Error javadoc JavadocVariable Missing a Javadoc comment. 58
                                                   Error naming MemberName Name '_download_ms' must match pattern '^[a-z][a-zA-Z0-9]*$'. 58
                                                   Error design VisibilityModifier Variable '_download_ms' must be private and have accessor methods. 58
                                                   Error javadoc JavadocVariable Missing a Javadoc comment. 59
                                                   Error naming MemberName Name '_all_start' must match pattern '^[a-z][a-zA-Z0-9]*$'. 59
                                                   Error design VisibilityModifier Variable '_all_start' must be private and have accessor methods. 59
                                                   Error javadoc JavadocVariable Missing a Javadoc comment. 60
                                                   Error naming MemberName Name '_all_end' must match pattern '^[a-z][a-zA-Z0-9]*$'. 60
                                                   Error design VisibilityModifier Variable '_all_end' must be private and have accessor methods. 60
                                                   Error javadoc JavadocVariable Missing a Javadoc comment. 61
                                                   Error naming MemberName Name '_all_ms' must match pattern '^[a-z][a-zA-Z0-9]*$'. 61
                                                   Error design VisibilityModifier Variable '_all_ms' must be private and have accessor methods. 61
                                                   Error javadoc JavadocVariable Missing a Javadoc comment. 62
                                                   Error naming MemberName Name '_index' must match pattern '^[a-z][a-zA-Z0-9]*$'. 62
                                                   Error design VisibilityModifier Variable '_index' must be private and have accessor methods. 62
                                                   Error javadoc JavadocVariable Missing a Javadoc comment. 63
                                                   Error naming MemberName Name '_number' must match pattern '^[a-z][a-zA-Z0-9]*$'. 63
                                                   Error design VisibilityModifier
                                                  - + - + - + - + @@ -5099,37 +5093,37 @@

                                                  org/laidu/commom/util/htt

                                                  org/laidu/commom/util/http/har/model/Headers.java

                                                  Severity Category Rule Message Line
                                                   Error javadoc JavadocType Missing a Javadoc comment. 3
                                                   Error javadoc JavadocVariable Missing a Javadoc comment. 5
                                                   Error design VisibilityModifier
                                                  - + - + - + - + - + - + @@ -5138,73 +5132,73 @@

                                                  org/laidu/commom/util

                                                  org/laidu/commom/util/http/har/model/Log.java

                                                  Severity Category Rule Message Line
                                                   Error javadoc JavadocType Missing a Javadoc comment. 3
                                                   Error javadoc JavadocVariable Missing a Javadoc comment. 4
                                                   Error design VisibilityModifier Variable 'name' must be private and have accessor methods. 4
                                                   Error javadoc JavadocVariable Missing a Javadoc comment. 5
                                                   Error design VisibilityModifier
                                                  - + - + - + - + - + - + - + - + - + - + - + - + @@ -5213,12 +5207,18 @@

                                                  org/laidu/commom/util/htt

                                                  org/laidu/commom/util/http/har/model/PageTimings.java

                                                  Severity Category Rule Message Line
                                                   Error javadoc JavadocType Missing a Javadoc comment. 5
                                                   Error javadoc JavadocVariable Missing a Javadoc comment. 7
                                                   Error design VisibilityModifier Variable 'version' must be private and have accessor methods. 7
                                                   Error javadoc JavadocVariable Missing a Javadoc comment. 8
                                                   Error design VisibilityModifier Variable 'creator' must be private and have accessor methods. 8
                                                   Error javadoc JavadocVariable Missing a Javadoc comment. 9
                                                   Error design VisibilityModifier Variable 'pages' must be private and have accessor methods. 9
                                                   Error javadoc JavadocVariable Missing a Javadoc comment. 10
                                                   Error design VisibilityModifier Variable 'browser' must be private and have accessor methods. 10
                                                   Error javadoc JavadocVariable Missing a Javadoc comment. 11
                                                   Error design VisibilityModifier
                                                  - + + + + + + + diff --git a/docs/production-component/common-util/checkstyle.rss b/docs/production-component/common-util/checkstyle.rss index aa694ae9a..7395f94d0 100644 --- a/docs/production-component/common-util/checkstyle.rss +++ b/docs/production-component/common-util/checkstyle.rss @@ -60,7 +60,7 @@ under the License. @@ -130,7 +130,7 @@ under the License. @@ -270,7 +270,7 @@ under the License. @@ -396,7 +396,7 @@ under the License. @@ -480,7 +480,7 @@ under the License. @@ -573,7 +573,7 @@ under the License. 0 @@ -592,7 +592,7 @@ under the License. diff --git a/docs/production-component/common-util/common-util.pdf b/docs/production-component/common-util/common-util.pdf index 6becede7690722e777f8600afef9ed26dbdbaa7f..fa5ee19ae14d4b93e9ef224315cd333400690575 100644 GIT binary patch delta 3410 zcmah_c|6o>A7w;iAH)b*lI$5{eltU|%wiixgfIw6MI+g66f;EGib&S#no8UuLU)o#&kMea`neLsrvP=}!FTe9roX-*k6`05Cuw z1;F5FZ5Ub|22+1hb5BGH(1ig``Y0m+X7ra}1cOzb6g|%S_gE%VO!MC?nJZ%VDIxMG z$n!<*;A-&!o+~U6t4{LpIMz4Yb^MCMez zl-PgS>xa3;y}WDaRl3a3AjFPmJal(AsCQDFHxi zcWu$ZS<4#A{;SDEzUvRo=Zq-(3)H}`o%GD>2sGmIb8kJJi&*GFwi&C(ErE65$cH^(;s@4APL=h{vauI?zAnF98&R98d13Q=5@L^Vy3tM3xC24wUqCEuaiv#b`)7-$^55lb$Nv%Avxis_b%Yrx zr|x=3AW9V48s)W+*BtQStOgGEZS5#KP_}3{FC@wni07rB?WU`U)QQIX3-SfEyo1N{ z)}D10mv5%_<8-*9K8XD;SXqQTvApfBBDKKFdB5a9QE-%Vl2w>|@`PJi2j&YY9nODVc?;0T!7J^ktP+RVf&H_v?HD`Mxe@dwwq zjpEt-V_3t}#3w`K!P!%1_+|w8ep~O=VfRg7s#xuef%-oOU)LY!ximM#Ctm2vd;0U_ zpe4(0%J217wEC>H;+ajWf$x!;kL)WZ^xw>$B(3x|r*bzZpR*Hmu=1o*md?$Q!ZZr@ ze1N-}=oF%C>N4WfzPo8L@+Mu!tQB_=$08c~gMRyM=GuCGKS5Q)kg3^Gh;g@Q({7w`<3!T&&Rt<7UgYN4som2*V)S(o1u)^ z$4WK#=I2cZhG*v|d=F=ltaI02$247druGG@U~`l)!htGm#N9s;yd-=h(uv_W;=1w^ z%t95`i({Ie%tIB1X}*k+i>cGwjNP{Xr|#y&80q~owa#zJ7(ttsYhN+mkRJy%Wq&zB zdcG07_|<1Gl>#C!z1TRKbWE+|aKfSKzSG?N6>h|`Y3Ch&-^`gky&wco^+H+&L?Ho? z7sHFk2Ut$Ndf!t`l?rd^sW_Xp3Xc~i$T$boVzjnQCkJLDq|`l?s{34s6P>+dhK$sP zBm%R`uGLicV;%;4+tFk5GGqNTv=%kyNVd+^i;nJ%{z3M59dfZsnEq!viL}{R)nD)# zc&2x4rTxo#OXhgn;Bju0P5b6J1r`IO4vUWU*x%lW>#@<)jv>(7H-C69P9%4*na34IhCSguvE)+WGbUBW8y-6+g$YF)GfKTEw8UXnsrV@{-BS(rQAEjf_8D? zyoJ1NgxJ5X@r^V4= zXO|BRT9dc9MEmteN$A;2ZruZ-1ncmaclK`#?8sXeTC#kF&X|L8GlYCkihd5PP=#?6s;6rL;Hy+QjzDl!avi#Xe zZ=V7;!{e`1&~xA3Wb5Skg7#KR!SMs(W|lcT7onmc$h6!WLVP^zxLF#_aTj3Ooy*P3VOoAdoIrwBJ-m|qL0yoL=={hi&MXWgf(%13fUobmQX zl53gF+bJ}2RlfQfQj!$po47y?jV!%4@s8xSPVtT))0xb+Ho{b!5A&c|j<#%0W{tC- zvWmtVX_4w;vb1bY)%#a+`Wgjrvn}ZaUBL?dsO*R=k2Dt5*x%3|}BLe`Yk zDWFjo^f|dP6h3wyVU-MuY#n}AC;qM}6lPW-43)UMw}HS9 z2FYxT&au=xWeMq;lIfEWpU2AHg|6|o(nKD*WI)2M2W8$#tJDOV8BYbDOfsm+>|<#43d&{tN}J>}t|#_?b`&_=;Ehzj9>lC_H8D}CM!%u7j5 z?VyLy?L_gTU^2g0dmxX7NqJ)xqi|PsDl2e?-G2`CJYuVDBf7?udx5{`0!8$p!p1$1 zfZ?Ua58U9|Xj2o$r-T`0zO;pDBr5+r`Zm9=P@m#F+l(LGTF*MdvXr@vd zNoz0%rGwKgxagc>ajE6Z83keCf37~6y!+Jg(B)B@iO2hEDQm$FN}F{ioeW*6ReZ{u z%y!i~vh_{%U-}BdxEHQRuOIHnQYR3uZeB1x@Zc#@f&J;DYD;$LCSORWy=SKPzHhw9 zs$+_m__Ri;| zeFlaI;8zX+0L0%M<)1YH0QE0M!<`%ou_FXP>LYiA{L9iP;Fr%)wktvd+im?-)&DGG z2;b2R3IKNakT4|r*I5(_xnn^zfch67+CXE+FdEotG(-ZKt*XXe1{ezfhQq_q7FeV? zfCTjMSfnA`0EII^8<=B|SQBOA|7-CSGBFVf4f6>JyBKoHUkHtaqlMJe@b(r${{@r3 B!L$GX delta 3402 zcmai#c{CL48on_dT(#e9m3urzHW)iiF z+7nZXRT*D`mG_SeDoZIqN5hlC^M`H&Petq>UfZ-UHV?3X)y!@XyTaKM_P)nS?N$xJ zp~d_+E7Xh^MyxCwxIQFh2TCZaN~>fNavvA#@$*>kQw!DCH_nai&gx$=5Z>41JyQBp zrGIkZBRTqw|PFE@P;fy9G%&n!_$k zFD3b`nTI7kxOCyLNzpM2!77XI7k>Dqqxg9p%C7L~$=vnt9*y*; zMP>j5n-nO2NoT+3pyVeVBihM_AtH@#Qdgc#3SOr)D7*@*7tnj%p+(S;3plUt`a%o5 zHyrXTrm(q8`@T@RHCSUFo@rP&jqaj4KaUc2=xu^3g%kXUgI6FGnLd(-{jx4}Fr{KH z{jnW=cx+Ej5P&*=1b@`wq72ZB}|&8ct|qk^~(vpybx zPNy__J0orva>9b#aY-QYT*KbEkqEyw%d1*xvq? zdnrVA_q`gw9suUj7p7#13)}eRCnl*7;G>#Nz9K)0%?RnIhH(O?PqQE)Pn&bslzsZMEl2mM>*U8&4@T^l5Ey?fo0GZk441=D_T^X+fB!O6CS;;f1 z+3w5j(zQ|8QZWDZuKa*o{kP3Oj>JOZ(_@CjC?-S42XQRKo)VYS{H2=PYDm~%piP;c z_>%mgnC040Ok{si@5z{$@#Xx7gK+EJK$Rs=5Wj;{Z$8Ob)=vS{E+zCaigg~u@6%hZ zgpB~ayzRKE&^TpsISPIWn|go!pd9w03kX69yb_Z9Y=W zv@_GaXj4Ao%^g2K#Xlp$AG9^3Gd4V7`MkNUo;%aeeqTf8`_WhjP$HHCJ6bwx4EEz# z1)5tcsb#opd0$lj;7qcz4H`0=;mHhd?l~}OAv(9$=HfH4x*tO}PSA#P%CzQ@z6wkE zo?z#(wM$J$2+Ett(44}%1dw9$?A4dtIi-QzA3-aF$4>f(*<~6>K1mGKS3(^pMa5+C zU2DUMb(ep8%3f5Pq1tfT&>MITS2-rfw{;A@P?|BEh3y>3yO+-BoZP6&AtZcH%}!vf ze1d+ZQsqYPeeFmYz~~wA(=_a=odqsF&dp31U&|noE)j05a;Qs#3+cs)1-3SfK>Ju% ztw?a)!lRVVvZ{-_c$DumS-hP3+O_4Cb{38Z6R~Umq0bwx*o!Jyc};6jFzf!_0!p>*e2NQ-%#%AXI+p+11Bu|Hz4lBZZn8y z^{C_FeTrn}pZ*Q=vM*fy6tPCzJfwOw-2}EzG5YA{-_Klg22+i4elh&%qiusZusMU* zo1rV;2*54j;i-59rc|?S<_}Ry#S4a)MQ;wd_?Pf%h~SLqc^{8}K>za;@4q77v!0@O z6}XCTvV=?n5QTl-D+2-2>~Ioqd5ffv%_>)XXXR-6l_@tLOKII%2NDbgWu$aG9l-v`pm$20Yv;cncLm-of&QYl4oDNrQvO_Mj^>hUs_NwKd0M>>{la0- z&3qfPO=EN19E+nq4lhg=b0^eFyKm@*I_7-a%}CP@BG1og!Zt`W_UbbHra?T9;QRx8 zMw?Z%3M)ReQ5fFN0b?1$Sq%1Sh%D`ua?ph>f8C$8*ZuJpr$ptpc&taI!B#!gtBJe; z<8L>pUKJt9te~Kgn{PXvdc4f;ZUv2y9TV6o-m=jY!thJV&;Cd>gSv738Fy>fSP*+P z7mPTQ{uz9jhN2PH+cxLxF6M}14aCQkqvjdxYef^h2-y>J28*K`V~h1CzSb+eo1wz) zpSJDvT6Z;n-Bf(n=6zu)K<0`nhg8brS^91*IgmG+l}ioks`VZ8y%59q;<~^4YeJe7 z7|qlhm80=(eWJl{KU{P`6hSJg<<3G)?N9>ukFYl&KD2KqV3Jrf%bT99EsI?VU0AYk z9MBhx3T&En%AgQ0;oe?6yR_zP>*VF99(Zg@4R$~^Ff}b%^5|LJMJergeX@zOktXMKKSljfE90D2$C$`E%8`U=fDV? z9{;n3t2B+`142!VMZvdWQ}V)4`oIHqQ$v{CfSRAU`%_bwJzoaYUzv`=sw;KI1fJM3 zCFA3aT=wGc-L2FKD{=64QgMsF)z&mMoY|t+Xf)LSVXB3?*BU_=8y3lc>c;TJzP$ z2?0P?#3$5=#B}XEvs0Qtfn}({>j)U%+T9*?d)l#5TNW^M$cg&YTwhNHDY*3Fk+;nE zeIj6p-8k8+rvw<*{-BtcT6Ec003Z(-VihCdWz@}ZQyar!7(YKM3zY8_mmOB&A{5?& zC7SP*O)uDvg(}r%(~{^gO?fmNo>l4M?%rnFotH#+;}kcEfYyZhUAik{#hPqHZfUzFVeR4CqWvIrXk|rk zNj6A8`%eOCmw*p5XYxIj&jECUmbi!Rr>%&+GoQsY43bwfrPl&KHK*no3ImR~fFY#Y z_Y@u;?AmjnOIlD*WhgQZ)EPg*0tx`YF5vtphHp9sh%M40Edeobl0?}_9pXdL17W8{ zUJ!vj4rL~xZ-}Q<_=W&rQ@XoK1x!;y%;T|^r~v3kLt50NE~&mlppCgFn-mB8rF7(QvT1Mgovd!X~XEU%ef z&ShNf)zGnPx!xv z>t4)yjrAF3eaRZ9L`3aKH(7eqv^)3qFOwVTk9O}_rZDxb`=XOMit@?I`(^&QAUw@c zd6JhS@{?&g(fXNg6VDx;4f3_o`&ISs_2&JF#$=Yd@fKc5s>fL&fja*+=~J8D79ivg z+q~q<`xgNC=VYbp{90Iy3jD95;-ez^cL2vDP`Dioi9;m|Ko8K+zh{tm9C8QKh3}|} zLE%updw4Vg{yRhIq7c6`32{(D3W7QUlt3|<%eyNAR4 zwjSDc9XuMpv!E_w$HX`cYKMn~V|Hv1hr{gH0v?0i*$fVcIJl!jJbI_7i$NuKsS?f* zO^p${C^!; - + @@ -25,7 +25,7 @@ - + @@ -188,42 +188,48 @@

                                                  compile

                                                  + + + + + + - + - + - + - + - + - + @@ -331,6 +337,18 @@

                                                  compile

                                                  + + + + + + + + + + + + @@ -664,7 +682,7 @@

                                                  Dependency Tree

                                                  Description: Core annotations used for value types, used by Jackson data binding package.

                                                  URL: http://github.com/FasterXML/jackson

                                                  Project Licenses: The Apache Software License, Version 2.0

                                                  Severity Category Rule Message Line
                                                   ErrorjavadocJavadocPackageMissing package-info.java file.
                                                   Error javadoc
                                                  - org/laidu/commom/util/encryption/BasicEncryptionUtil.java + org/laidu/commom/util/serialize/package-info.java 0 @@ -69,12 +69,12 @@ under the License. 0 - 96 + 3
                                                  - org/laidu/commom/util/serialize/package-info.java + org/laidu/commom/util/encryption/BasicEncryptionUtil.java 0 @@ -83,7 +83,7 @@ under the License. 0 - 3 + 96
                                                  - org/laidu/commom/util/http/har/CrawlerRequestTrack.java + org/laidu/commom/util/http/har/model/Cache.java 0 @@ -139,12 +139,12 @@ under the License. 0 - 7 + 1
                                                  - org/laidu/commom/util/http/har/model/Cache.java + org/laidu/commom/util/http/har/CrawlerRequestTrack.java 0 @@ -153,7 +153,7 @@ under the License. 0 - 1 + 7
                                                  - org/laidu/commom/util/encryption/DESEncryptionUtil.java + org/laidu/commom/util/http/har/model/PageTimings.java 0 @@ -279,12 +279,12 @@ under the License. 0 - 29 + 9
                                                  - org/laidu/commom/util/http/har/model/PageTimings.java + org/laidu/commom/util/encryption/DESEncryptionUtil.java 0 @@ -293,7 +293,7 @@ under the License. 0 - 8 + 30
                                                  - org/laidu/commom/util/enums/BasicCodeEnum.java + org/laidu/commom/util/http/HttpClientService.java 0 @@ -405,12 +405,12 @@ under the License. 0 - 7 + 3
                                                  - org/laidu/commom/util/http/HttpClientService.java + org/laidu/commom/util/http/har/model/Response.java 0 @@ -419,12 +419,12 @@ under the License. 0 - 3 + 19
                                                  - org/laidu/commom/util/http/core/HttpMethod.java + org/laidu/commom/util/http/har/model/Headers.java 0 @@ -433,12 +433,12 @@ under the License. 0 - 32 + 5
                                                  - org/laidu/commom/util/http/har/model/Headers.java + org/laidu/commom/util/http/core/HttpMethod.java 0 @@ -447,12 +447,12 @@ under the License. 0 - 5 + 32
                                                  - org/laidu/commom/util/http/har/model/Response.java + org/laidu/commom/util/enums/BasicCodeEnum.java 0 @@ -461,7 +461,7 @@ under the License. 0 - 19 + 7
                                                  - org/laidu/commom/util/file/package-info.java + org/laidu/commom/util/xml/JAXBUtil.java 0 @@ -489,12 +489,12 @@ under the License. 0 - 1 + 12
                                                  - org/laidu/commom/util/xml/JAXBUtil.java + org/laidu/commom/util/file/package-info.java 0 @@ -503,12 +503,12 @@ under the License. 0 - 12 + 1
                                                  - org/laidu/commom/util/http/core/package-info.java + org/laidu/commom/util/http/har/model/Har.java 0 @@ -517,12 +517,12 @@ under the License. 0 - 1 + 3
                                                  - org/laidu/commom/util/http/har/model/Har.java + org/laidu/commom/util/http/core/package-info.java 0 @@ -531,7 +531,7 @@ under the License. 0 - 3 + 1
                                                  - 6 + 5
                                                  - org/laidu/commom/util/encryption/AESEncryptionUtil.java + org/laidu/commom/util/encryption/MD5Util.java 0 @@ -601,12 +601,12 @@ under the License. 0 - 36 + 8
                                                  - org/laidu/commom/util/encryption/MD5Util.java + org/laidu/commom/util/encryption/AESEncryptionUtil.java 0 @@ -615,7 +615,7 @@ under the License. 0 - 8 + 35
                                                  com.google.code.gson gson2.8.22.8.4 jar Apache 2.0
                                                  jar Apache License, Version 2.0
                                                  de.ruedigermoellerfst2.57jarApache License 2.0
                                                  org.apache.commons commons-lang3 3.6 jar Apache License, Version 2.0
                                                  org.apache.httpcomponents httpclient 4.5.3 jar Apache License, Version 2.0
                                                  org.apache.httpcomponents httpcore 4.4.8 jar Apache License, Version 2.0
                                                  org.jodd jodd-bean 3.9.1 jar The BSD 2-Clause License
                                                  org.jodd jodd-core 3.9.1 jar The BSD 2-Clause License
                                                  org.jsoup jsoup 1.11.2 jar The MIT License
                                                  org.projectlombok lombok 1.16.18jar MIT license
                                                  org.javassistjavassist3.21.0-GAjarMPL 1.1-LGPL 2.1-Apache License 2.0
                                                  org.objenesisobjenesis2.5.1jarApache 2
                                                  org.slf4j slf4j-api 1.7.25
                                                  -
                                                1. com.google.code.gson:gson:jar:2.8.2 (compile) [Information]
                                                2. com.google.code.gson:gson:jar:2.8.4 (compile) [Information]
                                                3. -
                                                4. junit:junit:jar:4.12 (test) [Information]
                                                5. de.ruedigermoeller:fst:jar:2.57 (compile) [Information] +
                                                    +
                                                  • org.javassist:javassist:jar:3.21.0-GA (compile) [Information]
                                                  • +
                                                  • org.objenesis:objenesis:jar:2.5.1 (compile) [Information]
                                                6. +
                                                7. junit:junit:jar:4.12 (test) [Information]
                                                    -
                                                  • org.hamcrest:hamcrest-core:jar:1.3 (test) [Information]
                                                  • org.hamcrest:hamcrest-core:jar:1.3 (test) [Information]
                                                8. -
                                                9. org.junit.jupiter:junit-jupiter-api:jar:5.0.0 (test) [Information]
                                                10. org.junit.jupiter:junit-jupiter-api:jar:5.0.0 (test) [Information]
                                                11. -
                                                12. org.junit.jupiter:junit-jupiter-engine:jar:5.0.0 (test) [Information]
                                                13. org.junit.jupiter:junit-jupiter-engine:jar:5.0.0 (test) [Information]
                                                14. -
                                                15. org.junit.platform:junit-platform-engine:jar:1.0.2 (test) [Information]
                                                16. org.junit.platform:junit-platform-engine:jar:1.0.2 (test) [Information]
                                                17. -
                                                18. org.junit.platform:junit-platform-launcher:jar:1.0.2 (test) [Information]
                                                19. org.junit.platform:junit-platform-launcher:jar:1.0.2 (test) [Information]
                                                20. -
                                                21. org.junit.vintage:junit-vintage-engine:jar:4.12.0 (test) [Information]
                                                22. org.junit.vintage:junit-vintage-engine:jar:4.12.0 (test) [Information]
                                                23. -
                                                24. com.google.code.gson:gson:jar:2.8.2 (compile) [Information]
                                                25. com.google.code.gson:gson:jar:2.8.4 (compile) [Information]
                                                26. -
                                                27. org.projectlombok:lombok:jar:1.16.18 (compile) [Information]
                                                28. +
                                                29. de.ruedigermoeller:fst:jar:2.57 (compile) [Information] +
                                                    +
                                                  • org.javassist:javassist:jar:3.21.0-GA (compile) [Information]
                                                  • +
                                                  • org.objenesis:objenesis:jar:2.5.1 (compile) [Information]
                                                30. +
                                                31. org.projectlombok:lombok:jar:1.16.18 (compile) [Information]
                                                32. -
                                                33. ch.qos.logback:logback-core:jar:1.2.3 (compile) [Information]
                                                34. ch.qos.logback:logback-core:jar:1.2.3 (compile) [Information]
                                                35. -
                                                36. ch.qos.logback:logback-classic:jar:1.2.3 (compile) [Information]
                                                37. ch.qos.logback:logback-classic:jar:1.2.3 (compile) [Information]
                                                    -
                                                  • org.slf4j:slf4j-api:jar:1.7.25 (compile) [Information]
                                                  • org.slf4j:slf4j-api:jar:1.7.25 (compile) [Information]
                                                38. -
                                                39. ch.qos.logback:logback-access:jar:1.2.3 (compile) [Information]
                                                40. ch.qos.logback:logback-access:jar:1.2.3 (compile) [Information]
                                                41. -
                                                42. junit:junit:jar:4.12 (test) [Information]
                                                43. junit:junit:jar:4.12 (test) [Information]
                                                    -
                                                  • org.hamcrest:hamcrest-core:jar:1.3 (test) [Information]
                                                  • org.hamcrest:hamcrest-core:jar:1.3 (test) [Information]
                                                44. -
                                                45. org.junit.jupiter:junit-jupiter-api:jar:5.0.0 (test) [Information]
                                                46. org.junit.jupiter:junit-jupiter-api:jar:5.0.0 (test) [Information]
                                                47. -
                                                48. org.junit.jupiter:junit-jupiter-engine:jar:5.0.0 (test) [Information]
                                                49. org.junit.jupiter:junit-jupiter-engine:jar:5.0.0 (test) [Information]
                                                50. -
                                                51. org.junit.platform:junit-platform-engine:jar:1.0.2 (test) [Information]
                                                52. org.junit.platform:junit-platform-engine:jar:1.0.2 (test) [Information]
                                                53. -
                                                54. org.junit.platform:junit-platform-launcher:jar:1.0.2 (test) [Information]
                                                55. org.junit.platform:junit-platform-launcher:jar:1.0.2 (test) [Information]
                                                56. -
                                                57. org.junit.vintage:junit-vintage-engine:jar:4.12.0 (test) [Information]
                                                58. org.junit.vintage:junit-vintage-engine:jar:4.12.0 (test) [Information] diff --git a/docs/framework/plugin-management.html b/docs/framework/plugin-management.html index b80abc48f..13191df69 100644 --- a/docs/framework/plugin-management.html +++ b/docs/framework/plugin-management.html @@ -1,5 +1,5 @@ - + @@ -25,7 +25,7 @@
                                                59. rules-engine +
                                                60. +
                                                61. + aws
                                                62. Project Documentation
                                                  diff --git a/docs/framework/plugins.html b/docs/framework/plugins.html index e722f99ad..4260e94a7 100644 --- a/docs/framework/plugins.html +++ b/docs/framework/plugins.html @@ -1,5 +1,5 @@ - + @@ -25,7 +25,7 @@

                                                jar Apache License, Version 2.0
                                                de.ruedigermoellerfst2.57jarApache License 2.0
                                                org.apache.commons commons-lang3 3.6 jar Apache License, Version 2.0
                                                org.apache.httpcomponents httpclient 4.5.3 jar Apache License, Version 2.0
                                                org.apache.httpcomponents httpcore 4.4.8 jar Apache License, Version 2.0
                                                org.checkerframework checker-qual 2.0.0 jar GNU General Public License, version 2 (GPL2), with the classpath exception-The MIT License
                                                org.codehaus.mojo animal-sniffer-annotations 1.14 jar MIT license
                                                org.javassistjavassist3.21.0-GAjarMPL 1.1-LGPL 2.1-Apache License 2.0
                                                org.jodd jodd-bean jar The MIT License
                                                org.objenesisobjenesis2.1jarApache 2
                                                org.slf4j jcl-over-slf4j 1.7.25 jar MIT License
                                                org.slf4j jul-to-slf4j 1.7.25 jar MIT License
                                                org.slf4j log4j-over-slf4j 1.7.25 jar Apache Software Licenses
                                                org.slf4j slf4j-api 1.7.25 jar MIT License
                                                org.springframework spring-aop 4.3.13.RELEASE jar Apache License, Version 2.0
                                                org.springframework spring-beans 4.3.13.RELEASE jar Apache License, Version 2.0
                                                org.springframework spring-context 4.3.13.RELEASE jar Apache License, Version 2.0
                                                org.springframework spring-core 4.3.13.RELEASE jar Apache License, Version 2.0
                                                org.springframework spring-expression 4.3.13.RELEASE jar Apache License, Version 2.0
                                                org.springframework.boot spring-boot 1.5.9.RELEASE jar Apache License, Version 2.0
                                                org.springframework.boot spring-boot-autoconfigure 1.5.9.RELEASE jar Apache License, Version 2.0
                                                org.springframework.boot spring-boot-starter-logging 1.5.9.RELEASE jar The MIT License
                                                org.objenesisobjenesis2.1jarApache 2
                                                org.opentest4j opentest4j 1.0.0 jar The Apache License, Version 2.0
                                                org.ow2.asm asm 5.0.3 jar BSD
                                                org.skyscreamer jsonassert 1.4.0 jar The Apache Software License, Version 2.0
                                                org.springframework.boot spring-boot-test 1.5.9.RELEASE jar Apache License, Version 2.0
                                                org.springframework.boot spring-boot-test-autoconfigure 1.5.9.RELEASE
                                                  -
                                                • org.objenesis:objenesis:jar:2.1 (test) [Information]
                                                • org.objenesis:objenesis:jar:2.1 (compile) [Information]
                                                -
                                              1. org.projectlombok:lombok:jar:1.16.18 (compile) [Information]
                                              2. +
                                              3. de.ruedigermoeller:fst:jar:2.57 (compile) [Information] +
                                                  +
                                                • org.javassist:javassist:jar:3.21.0-GA (compile) [Information]
                                              4. +
                                              5. org.projectlombok:lombok:jar:1.16.18 (compile) [Information]
                                              6. -
                                              7. ch.qos.logback:logback-core:jar:1.2.3 (compile) [Information]
                                              8. ch.qos.logback:logback-core:jar:1.2.3 (compile) [Information]
                                              9. -
                                              10. ch.qos.logback:logback-classic:jar:1.2.3 (compile) [Information]
                                              11. ch.qos.logback:logback-classic:jar:1.2.3 (compile) [Information]
                                                  -
                                                • org.slf4j:slf4j-api:jar:1.7.25 (compile) [Information]
                                                • org.slf4j:slf4j-api:jar:1.7.25 (compile) [Information]
                                              12. -
                                              13. ch.qos.logback:logback-access:jar:1.2.3 (compile) [Information]
                                              14. ch.qos.logback:logback-access:jar:1.2.3 (compile) [Information]
                                              15. -
                                              16. junit:junit:jar:4.12 (test) [Information]
                                              17. junit:junit:jar:4.12 (test) [Information]
                                              18. -
                                              19. org.junit.jupiter:junit-jupiter-api:jar:5.0.0 (test) [Information]
                                              20. org.junit.jupiter:junit-jupiter-api:jar:5.0.0 (test) [Information]
                                              21. -
                                              22. org.junit.jupiter:junit-jupiter-engine:jar:5.0.0 (test) [Information]
                                              23. org.junit.jupiter:junit-jupiter-engine:jar:5.0.0 (test) [Information]
                                              24. -
                                              25. org.junit.platform:junit-platform-engine:jar:1.0.2 (test) [Information]
                                              26. org.junit.platform:junit-platform-engine:jar:1.0.2 (test) [Information]
                                              27. -
                                              28. org.junit.platform:junit-platform-launcher:jar:1.0.2 (test) [Information]
                                              29. org.junit.platform:junit-platform-launcher:jar:1.0.2 (test) [Information]
                                              30. -
                                              31. org.junit.vintage:junit-vintage-engine:jar:4.12.0 (test) [Information]
                                              32. org.junit.vintage:junit-vintage-engine:jar:4.12.0 (test) [Information]

                                                test

                                                @@ -226,113 +241,173 @@

                                                compile

                                              jar Apache 2
                                              com.fasterxmlclassmate1.3.4jarThe Apache Software License, Version 2.0
                                              com.fasterxml.jackson.core jackson-annotations 2.8.0 jar The Apache Software License, Version 2.0
                                              com.fasterxml.jackson.core jackson-core 2.8.10 jar The Apache Software License, Version 2.0
                                              com.fasterxml.jackson.core jackson-databind 2.8.10 jar The Apache Software License, Version 2.0
                                              com.github.stuxuhai jpinyin 1.1.8 jar The GNU General Public License v3.0
                                              com.google.code.findbugs jsr305 1.3.9 jar The Apache Software License, Version 2.0
                                              com.google.code.gson gson 2.8.2 jar Apache 2.0
                                              com.google.errorprone error_prone_annotations 2.0.18 jar Apache 2.0
                                              com.google.guava guava 23.5-jre jar The Apache Software License, Version 2.0
                                              com.google.j2objc j2objc-annotations 1.1 jar The Apache Software License, Version 2.0
                                              com.squareup javapoet 1.10.0 jar Apache 2.0
                                              commons-cli commons-cli 1.4 jar Apache License, Version 2.0
                                              commons-codec commons-codec 1.10 jar Apache License, Version 2.0
                                              commons-io commons-io 2.5 jar Apache License, Version 2.0
                                              de.ruedigermoellerfst2.57jarApache License 2.0
                                              javax.validationvalidation-api1.1.0.FinaljarThe Apache Software License, Version 2.0
                                              org.apache.commons commons-lang3 3.6 jar Apache License, Version 2.0
                                              org.apache.httpcomponents httpclient 4.5.3 jar Apache License, Version 2.0
                                              org.apache.httpcomponents httpcore 4.4.8 jar Apache License, Version 2.0
                                              org.apache.tomcattomcat-annotations-api8.5.23jarApache License, Version 2.0
                                              org.apache.tomcat.embedtomcat-embed-core8.5.23jarApache License, Version 2.0
                                              org.apache.tomcat.embedtomcat-embed-el8.5.23jarApache License, Version 2.0
                                              org.apache.tomcat.embedtomcat-embed-websocket8.5.23jarApache License, Version 2.0
                                              org.checkerframework checker-qual 2.0.0 jar GNU General Public License, version 2 (GPL2), with the classpath exception-The MIT License
                                              org.codehaus.mojo animal-sniffer-annotations 1.14 jar MIT license
                                              org.hibernatehibernate-validator5.3.6.FinaljarApache License 2.0
                                              org.javassistjavassist3.21.0-GAjarMPL 1.1-LGPL 2.1-Apache License 2.0
                                              org.jboss.loggingjboss-logging3.3.1.FinaljarApache License, version 2.0
                                              org.jodd jodd-bean jar The MIT License
                                              org.objenesisobjenesis2.1jarApache 2
                                              org.slf4j jcl-over-slf4j 1.7.25 jar MIT License
                                              org.slf4j jul-to-slf4j 1.7.25 jar MIT License
                                              org.slf4j log4j-over-slf4j 1.7.25 jar Apache Software Licenses
                                              org.slf4j slf4j-api 1.7.25 jar MIT License
                                              org.springframework spring-aop 4.3.13.RELEASE jar Apache License, Version 2.0
                                              org.springframework spring-beans 4.3.13.RELEASE jar Apache License, Version 2.0
                                              org.springframework spring-context 4.3.13.RELEASE jar Apache License, Version 2.0
                                              org.springframework spring-core 4.3.13.RELEASE jar Apache License, Version 2.0
                                              org.springframework spring-expression 4.3.13.RELEASE jar Apache License, Version 2.0
                                              org.springframeworkspring-oxm4.3.13.RELEASEjarApache License, Version 2.0
                                              org.springframeworkspring-web4.3.13.RELEASEjarApache License, Version 2.0
                                              org.springframeworkspring-webmvc4.3.13.RELEASEjarApache License, Version 2.0
                                              org.springframework.boot spring-boot spring-boot-starter-logging 1.5.9.RELEASE jarApache License, Version 2.0
                                              org.springframework.bootspring-boot-starter-tomcat1.5.9.RELEASEjarApache License, Version 2.0
                                              org.springframework.bootspring-boot-starter-web1.5.9.RELEASEjarApache License, Version 2.0
                                              org.springframework.wsspring-ws-core2.4.2.RELEASEjarApache License, Version 2.0
                                              org.springframework.wsspring-xml2.4.2.RELEASEjar Apache License, Version 2.0

                                              runtime

                                              @@ -510,36 +633,30 @@

                                              test

                                              jar The MIT License
                                              org.objenesisobjenesis2.1jarApache 2
                                              org.opentest4j opentest4j 1.0.0 jar The Apache License, Version 2.0
                                              org.ow2.asm asm 5.0.3 jar BSD
                                              org.skyscreamer jsonassert 1.4.0 jar The Apache Software License, Version 2.0
                                              org.springframework.boot spring-boot-test 1.5.9.RELEASE jar Apache License, Version 2.0
                                              org.springframework.boot spring-boot-test-autoconfigure 1.5.9.RELEASE
                                              @@ -610,25 +727,7 @@

                                              Dependency Tree

                                              URL: https://github.com/spring-projects/spring-framework

                                              Project Licenses: Apache License, Version 2.0

                                              spring-data
                                              -
                                            1. org.springframework.boot:spring-boot-autoconfigure:jar:1.5.9.RELEASE (compile) [Information]
                                            2. org.springframework.boot:spring-boot-autoconfigure:jar:1.5.9.RELEASE (compile) [Information]
                                            3. -
                                            4. org.springframework.boot:spring-boot-starter-logging:jar:1.5.9.RELEASE (compile) [Information]
                                            5. org.springframework.boot:spring-boot-starter-logging:jar:1.5.9.RELEASE (compile) [Information]
                                                -
                                              • org.slf4j:jcl-over-slf4j:jar:1.7.25 (compile) [Information]
                                              • org.slf4j:jcl-over-slf4j:jar:1.7.25 (compile) [Information]
                                              • -
                                              • org.slf4j:jul-to-slf4j:jar:1.7.25 (compile) [Information]
                                              • org.slf4j:jul-to-slf4j:jar:1.7.25 (compile) [Information]
                                              • -
                                              • org.slf4j:log4j-over-slf4j:jar:1.7.25 (compile) [Information]
                                              • org.slf4j:log4j-over-slf4j:jar:1.7.25 (compile) [Information]
                                            6. -
                                            7. org.springframework:spring-core:jar:4.3.13.RELEASE (compile) [Information]
                                            8. org.springframework:spring-core:jar:4.3.13.RELEASE (compile) [Information]
                                            9. -
                                            10. org.yaml:snakeyaml:jar:1.17 (runtime) [Information]
                                            11. org.yaml:snakeyaml:jar:1.17 (runtime) [Information]
                                            12. -
                                            13. org.springframework:spring-test:jar:5.0.2.RELEASE (test) [Information]
                                            14. org.springframework.boot:spring-boot-starter-web-services:jar:1.5.9.RELEASE (compile) [Information] +
                                            15. +
                                            16. org.springframework:spring-test:jar:5.0.2.RELEASE (test) [Information]
                                            17. -
                                            18. org.springframework.boot:spring-boot-starter-test:jar:1.5.9.RELEASE (test) [Information]
                                            19. org.springframework.boot:spring-boot-starter-test:jar:1.5.9.RELEASE (test) [Information]
                                            20. -
                                            21. org.laidu.learn:common-util:jar:1.0-SNAPSHOT (compile) [Information]
                                            22. org.laidu.learn:common-util:jar:1.0-SNAPSHOT (compile) [Information]
                                            23. -
                                            24. org.projectlombok:lombok:jar:1.16.18 (compile) [Information]
                                            +
                                          1. de.ruedigermoeller:fst:jar:2.57 (compile) [Information] +
                                              +
                                            • org.javassist:javassist:jar:3.21.0-GA (compile) [Information]
                                          2. +
                                          3. org.projectlombok:lombok:jar:1.16.18 (compile) [Information]
                                          4. -
                                          5. ch.qos.logback:logback-core:jar:1.2.3 (compile) [Information]
                                          6. ch.qos.logback:logback-core:jar:1.2.3 (compile) [Information]
                                          7. -
                                          8. ch.qos.logback:logback-classic:jar:1.2.3 (compile) [Information]
                                          9. ch.qos.logback:logback-classic:jar:1.2.3 (compile) [Information]
                                              -
                                            • org.slf4j:slf4j-api:jar:1.7.25 (compile) [Information]
                                            • org.slf4j:slf4j-api:jar:1.7.25 (compile) [Information]
                                          10. -
                                          11. ch.qos.logback:logback-access:jar:1.2.3 (compile) [Information]
                                          12. ch.qos.logback:logback-access:jar:1.2.3 (compile) [Information]
                                          13. -
                                          14. junit:junit:jar:4.12 (test) [Information]
                                          15. junit:junit:jar:4.12 (test) [Information]
                                          16. -
                                          17. org.junit.jupiter:junit-jupiter-api:jar:5.0.0 (test) [Information]
                                          18. org.junit.jupiter:junit-jupiter-api:jar:5.0.0 (test) [Information]
                                          19. -
                                          20. org.junit.jupiter:junit-jupiter-engine:jar:5.0.0 (test) [Information]
                                          21. org.junit.jupiter:junit-jupiter-engine:jar:5.0.0 (test) [Information]
                                          22. -
                                          23. org.junit.platform:junit-platform-engine:jar:1.0.2 (test) [Information]
                                          24. org.junit.platform:junit-platform-engine:jar:1.0.2 (test) [Information]
                                          25. -
                                          26. org.junit.platform:junit-platform-launcher:jar:1.0.2 (test) [Information]
                                          27. org.junit.platform:junit-platform-launcher:jar:1.0.2 (test) [Information]
                                          28. -
                                          29. org.junit.vintage:junit-vintage-engine:jar:4.12.0 (test) [Information]
                                          30. org.junit.vintage:junit-vintage-engine:jar:4.12.0 (test) [Information]
                                          31. Licenses

                                            +

                                            Apache License, version 2.0: JBoss Logging 3

                                            Apache 2.0: Gson, JavaPoet, error-prone annotations

                                            Eclipse Public License 1.0: JUnit

                                            The Apache License, Version 2.0: org.apiguardian:apiguardian-api, org.opentest4j:opentest4j

                                            @@ -1211,12 +1503,14 @@

                                            Licenses

                                            BSD: ASM Core

                                            Unknown: common-util, spring-data

                                            Apache Software Licenses: Log4j Implemented Over SLF4J

                                            -

                                            Apache License 2.0: JSON library from Android SDK

                                            +

                                            Apache License 2.0: Hibernate Validator Engine, JSON library from Android SDK, Javassist, fst

                                            The MIT License: Checker Qual, Mockito, Project Lombok, jsoup Java HTML Parser

                                            -

                                            Apache License, Version 2.0: Apache Commons CLI, Apache Commons Codec, Apache Commons IO, Apache Commons Lang, Apache HttpClient, Apache HttpCore, AssertJ fluent assertions, SnakeYAML, Spring AOP, Spring Beans, Spring Boot, Spring Boot AutoConfigure, Spring Boot Logging Starter, Spring Boot Starter, Spring Boot Test, Spring Boot Test Auto-Configure, Spring Boot Test Starter, Spring Context, Spring Core, Spring Expression Language (SpEL), Spring TestContext Framework

                                            +

                                            Apache License, Version 2.0: Apache Commons CLI, Apache Commons Codec, Apache Commons IO, Apache Commons Lang, Apache HttpClient, Apache HttpCore, AssertJ fluent assertions, SnakeYAML, Spring AOP, Spring Beans, Spring Boot, Spring Boot AutoConfigure, Spring Boot Logging Starter, Spring Boot Starter, Spring Boot Test, Spring Boot Test Auto-Configure, Spring Boot Test Starter, Spring Boot Tomcat Starter, Spring Boot Web Services Starter, Spring Boot Web Starter, Spring Context, Spring Core, Spring Expression Language (SpEL), Spring Object/XML Marshalling, Spring TestContext Framework, Spring Web, Spring Web MVC, spring-ws-core, spring-xml, tomcat-annotations-api, tomcat-embed-core, tomcat-embed-el, tomcat-embed-websocket

                                            GNU General Public License, version 2 (GPL2), with the classpath exception: Checker Qual

                                            +

                                            LGPL 2.1: Javassist

                                            MIT license: Animal Sniffer Annotations

                                            -

                                            The Apache Software License, Version 2.0: ASM based accessors helper used by json-smart, FindBugs-jsr305, Guava: Google Core Libraries for Java, J2ObjC Annotations, JSON Small and Fast Parser, JSONassert, Jackson-annotations, Jackson-core, Json Path, jackson-databind

                                            +

                                            MPL 1.1: Javassist

                                            +

                                            The Apache Software License, Version 2.0: ASM based accessors helper used by json-smart, Bean Validation API, ClassMate, FindBugs-jsr305, Guava: Google Core Libraries for Java, J2ObjC Annotations, JSON Small and Fast Parser, JSONassert, Jackson-annotations, Jackson-core, Json Path, jackson-databind

                                            Eclipse Public License - v 1.0: Logback Access Module, Logback Classic Module, Logback Core Module

                                            diff --git a/docs/framework/spring/spring-data/dependency-info.html b/docs/framework/spring/spring-data/dependency-info.html index a5d52b9ad..01e2336b9 100644 --- a/docs/framework/spring/spring-data/dependency-info.html +++ b/docs/framework/spring/spring-data/dependency-info.html @@ -1,5 +1,5 @@ - + @@ -25,7 +25,7 @@

                                            Apache Buildr

                                            -
                                            'org.laidu.learn:spring-data:jar:1.0-SNAPSHOT'
                                            +
                                            'org.laidu.learn:spring-data:pom:1.0-SNAPSHOT'

                                            Apache Ivy

                                            <dependency org="org.laidu.learn" name="spring-data" rev="1.0-SNAPSHOT">
                                            -  <artifact name="spring-data" type="jar" />
                                            +  <artifact name="spring-data" type="pom" />
                                             </dependency>

                                            Groovy Grape

                                            diff --git a/docs/framework/spring/spring-data/dependency-management.html b/docs/framework/spring/spring-data/dependency-management.html index 6affa1a70..7aadbcf8c 100644 --- a/docs/framework/spring/spring-data/dependency-management.html +++ b/docs/framework/spring/spring-data/dependency-management.html @@ -1,5 +1,5 @@ - + @@ -25,7 +25,7 @@
                                            jar Eclipse Public License - v 1.0, GNU Lesser General Public License
                                            com.alibabadruid-spring-boot-starter1.1.9jarApache 2
                                            com.atomikos transactions-jdbc 3.9.3 jar Atomikos Multiple Licensing Scheme
                                            com.atomikos transactions-jms 3.9.3 jar Atomikos Multiple Licensing Scheme
                                            com.atomikos transactions-jta 3.9.3 jar Atomikos Multiple Licensing Scheme
                                            com.couchbase.client couchbase-spring-cache 2.1.0 jar The Apache Software License, Version 2.0
                                            com.couchbase.client java-client 2.3.7 jar The Apache Software License, Version 2.0
                                            com.datastax.cassandra cassandra-driver-core 3.1.4 jar Apache 2
                                            com.datastax.cassandra cassandra-driver-mapping 3.1.4 jar Apache 2
                                            com.fasterxml classmate 1.3.4 jar The Apache Software License, Version 2.0
                                            com.fasterxml.jackson.core jackson-annotations 2.8.0 jar The Apache Software License, Version 2.0
                                            com.fasterxml.jackson.core jackson-core 2.8.10 jar The Apache Software License, Version 2.0
                                            com.fasterxml.jackson.core jackson-databind 2.8.10 jar The Apache Software License, Version 2.0
                                            com.fasterxml.jackson.dataformat jackson-dataformat-avro 2.8.10 jar The Apache Software License, Version 2.0
                                            com.fasterxml.jackson.dataformat jackson-dataformat-cbor 2.8.10 jar The Apache Software License, Version 2.0
                                            com.fasterxml.jackson.dataformat jackson-dataformat-csv 2.8.10 jar The Apache Software License, Version 2.0
                                            com.fasterxml.jackson.dataformat jackson-dataformat-ion 2.8.10 jar The Apache License, Version 2.0
                                            com.fasterxml.jackson.dataformat jackson-dataformat-properties 2.8.10 jar The Apache Software License, Version 2.0
                                            com.fasterxml.jackson.dataformat jackson-dataformat-protobuf 2.8.10 jar The Apache Software License, Version 2.0
                                            com.fasterxml.jackson.dataformat jackson-dataformat-smile 2.8.10 jar The Apache Software License, Version 2.0
                                            com.fasterxml.jackson.dataformat jackson-dataformat-xml 2.8.10 jar The Apache Software License, Version 2.0
                                            com.fasterxml.jackson.dataformat jackson-dataformat-yaml 2.8.10 jar The Apache Software License, Version 2.0
                                            com.fasterxml.jackson.datatype jackson-datatype-guava 2.8.10 jar The Apache Software License, Version 2.0
                                            com.fasterxml.jackson.datatype jackson-datatype-hibernate3 2.8.10 jar The Apache Software License, Version 2.0
                                            com.fasterxml.jackson.datatype jackson-datatype-hibernate4 2.8.10 jar The Apache Software License, Version 2.0
                                            com.fasterxml.jackson.datatype jackson-datatype-hibernate5 2.8.10 jar The Apache Software License, Version 2.0
                                            com.fasterxml.jackson.datatype jackson-datatype-hppc 2.8.10 jar The Apache Software License, Version 2.0
                                            com.fasterxml.jackson.datatype jackson-datatype-jaxrs 2.8.10 jar The Apache Software License, Version 2.0
                                            com.fasterxml.jackson.datatype jackson-datatype-jdk8 2.8.10 jar The Apache Software License, Version 2.0
                                            com.fasterxml.jackson.datatype jackson-datatype-joda 2.8.10 jar The Apache Software License, Version 2.0
                                            com.fasterxml.jackson.datatype jackson-datatype-json-org 2.8.10 jar The Apache Software License, Version 2.0
                                            com.fasterxml.jackson.datatype jackson-datatype-jsr310 2.8.10 jar The Apache Software License, Version 2.0
                                            com.fasterxml.jackson.datatype jackson-datatype-jsr353 2.8.10 jar The Apache Software License, Version 2.0
                                            com.fasterxml.jackson.datatype jackson-datatype-pcollections 2.8.10 jar The Apache Software License, Version 2.0
                                            com.fasterxml.jackson.jaxrs jackson-jaxrs-base 2.8.10 jar The Apache Software License, Version 2.0
                                            com.fasterxml.jackson.jaxrs jackson-jaxrs-cbor-provider 2.8.10 jar The Apache Software License, Version 2.0
                                            com.fasterxml.jackson.jaxrs jackson-jaxrs-json-provider 2.8.10 jar The Apache Software License, Version 2.0
                                            com.fasterxml.jackson.jaxrs jackson-jaxrs-smile-provider 2.8.10 jar The Apache Software License, Version 2.0
                                            com.fasterxml.jackson.jaxrs jackson-jaxrs-xml-provider 2.8.10 jar The Apache Software License, Version 2.0
                                            com.fasterxml.jackson.jaxrs jackson-jaxrs-yaml-provider 2.8.10 jar The Apache Software License, Version 2.0
                                            com.fasterxml.jackson.jr jackson-jr-all 2.8.10 jar The Apache Software License, Version 2.0
                                            com.fasterxml.jackson.jr jackson-jr-objects 2.8.10 jar The Apache Software License, Version 2.0
                                            com.fasterxml.jackson.jr jackson-jr-retrofit2 2.8.10 jar The Apache Software License, Version 2.0
                                            com.fasterxml.jackson.jr jackson-jr-stree 2.8.10 jar The Apache Software License, Version 2.0
                                            com.fasterxml.jackson.module jackson-module-afterburner 2.8.10 jar The Apache Software License, Version 2.0
                                            com.fasterxml.jackson.module jackson-module-guice 2.8.10 jar The Apache Software License, Version 2.0
                                            com.fasterxml.jackson.module jackson-module-jaxb-annotations 2.8.10 jar The Apache Software License, Version 2.0
                                            com.fasterxml.jackson.module jackson-module-jsonSchema 2.8.10 jar The Apache Software License, Version 2.0
                                            com.fasterxml.jackson.module jackson-module-kotlin 2.8.10 jar The Apache Software License, Version 2.0
                                            com.fasterxml.jackson.module jackson-module-mrbean 2.8.10 jar The Apache Software License, Version 2.0
                                            com.fasterxml.jackson.module jackson-module-osgi 2.8.10 jar The Apache Software License, Version 2.0
                                            com.fasterxml.jackson.module jackson-module-parameter-names 2.8.10 jar The Apache Software License, Version 2.0
                                            com.fasterxml.jackson.module jackson-module-paranamer 2.8.10 jar The Apache Software License, Version 2.0
                                            com.fasterxml.jackson.module jackson-module-scala_2.10 2.8.10 jar The Apache Software License, Version 2.0
                                            com.fasterxml.jackson.module jackson-module-scala_2.11 2.8.10 jar The Apache Software License, Version 2.0
                                            com.fasterxml.jackson.module jackson-module-scala_2.12 2.8.10 jar The Apache Software License, Version 2.0
                                            com.gemstone.gemfire gemfire 8.2.7 jar -
                                            com.github.ben-manes.caffeine caffeine 2.3.5 jar Apache License, Version 2.0
                                            com.github.mxab.thymeleaf.extras thymeleaf-extras-data-attribute 1.3 jar The Apache Software License, Version 2.0
                                            com.google.appengine appengine-api-1.0-sdk 1.9.59 jar Google App Engine Terms of Service
                                            com.google.code.gson gson 2.8.2 jar Apache 2.0
                                            com.googlecode.json-simple json-simple 1.1.1 jar The Apache Software License, Version 2.0
                                            com.h2database h2 1.4.196 jar MPL 2.0 or EPL 1.0
                                            com.hazelcast hazelcast 3.7.8 jar The Apache Software License, Version 2.0
                                            com.hazelcast hazelcast-client 3.7.8 jar The Apache Software License, Version 2.0
                                            com.hazelcast hazelcast-hibernate4 3.7.1 jar The Apache Software License, Version 2.0
                                            com.hazelcast hazelcast-hibernate5 1.1.3 jar The Apache Software License, Version 2.0
                                            com.hazelcast hazelcast-spring 3.7.8 jar The Apache Software License, Version 2.0
                                            com.jayway.jsonpath json-path 2.2.0 jar The Apache Software License, Version 2.0
                                            com.jayway.jsonpath json-path-assert 2.2.0 jar The Apache Software License, Version 2.0
                                            com.microsoft.sqlserver mssql-jdbc 6.1.0.jre7 jar MIT License
                                            com.querydsl querydsl-apt 4.1.4 jar Apache License, Version 2.0
                                            com.querydsl querydsl-collections 4.1.4 jar Apache License, Version 2.0
                                            com.querydsl querydsl-core 4.1.4 jar Apache License, Version 2.0
                                            com.querydsl querydsl-jpa 4.1.4 jar Apache License, Version 2.0
                                            com.querydsl querydsl-mongodb 4.1.4 jar Apache License, Version 2.0
                                            com.rabbitmq amqp-client 5.1.1 jar ASL 2.0, GPL v2, MPL 1.1
                                            com.samskivert jmustache 1.13 jar The (New) BSD License
                                            com.sendgrid sendgrid-java 2.2.2 jar MIT License
                                            com.sun.mail javax.mail 1.5.6 jar CDDL/GPLv2+CE
                                            com.timgroup java-statsd-client 3.1.0 jar The MIT License (MIT)
                                            com.typesafe.play play_2.11 2.6.6 jar Apache-2.0
                                            com.unboundid unboundid-ldapsdk 3.2.1 jar GNU General Public License version 2 (GPLv2), GNU Lesser General Public License version 2.1 (LGPLv2.1), UnboundID LDAP SDK Free Use License
                                            com.zaxxer HikariCP 2.5.1 jar The Apache Software License, Version 2.0
                                            com.zaxxer HikariCP-java6 2.3.13 jar The Apache Software License, Version 2.0
                                            com.zaxxer HikariCP-java7 2.4.13 jar The Apache Software License, Version 2.0
                                            commons-beanutils commons-beanutils 1.9.3 jar Apache License, Version 2.0
                                            commons-codec commons-codec 1.10 jar Apache License, Version 2.0
                                            commons-collections commons-collections 3.2.2 jar Apache License, Version 2.0
                                            commons-dbcp commons-dbcp 1.4 jar The Apache Software License, Version 2.0
                                            commons-digester commons-digester 2.1 jar The Apache Software License, Version 2.0
                                            commons-pool commons-pool 1.6 jar The Apache Software License, Version 2.0
                                            de.flapdoodle.embed de.flapdoodle.embed.mongo 1.50.5 jar The Apache Software License, Version 2.0
                                            dom4j dom4j 1.6.1 jar -
                                            io.dropwizard.metrics metrics-annotation 3.1.5 jar Apache License 2.0
                                            io.dropwizard.metrics metrics-core 3.1.5 jar Apache License 2.0
                                            io.dropwizard.metrics metrics-ehcache 3.1.5 jar Apache License 2.0
                                            io.dropwizard.metrics metrics-ganglia 3.1.5 jar Apache License 2.0
                                            io.dropwizard.metrics metrics-graphite 3.1.5 jar Apache License 2.0
                                            io.dropwizard.metrics metrics-healthchecks 3.1.5 jar Apache License 2.0
                                            io.dropwizard.metrics metrics-httpasyncclient 3.1.5 jar Apache License 2.0
                                            io.dropwizard.metrics metrics-jdbi 3.1.5 jar Apache License 2.0
                                            io.dropwizard.metrics metrics-jersey 3.1.5 jar Apache License 2.0
                                            io.dropwizard.metrics metrics-jersey2 3.1.5 jar Apache License 2.0
                                            io.dropwizard.metrics metrics-jetty8 3.1.5 jar Apache License 2.0
                                            io.dropwizard.metrics metrics-jetty9 3.1.5 jar Apache License 2.0
                                            io.dropwizard.metrics metrics-jetty9-legacy 3.1.5 jar Apache License 2.0
                                            io.dropwizard.metrics metrics-json 3.1.5 jar Apache License 2.0
                                            io.dropwizard.metrics metrics-jvm 3.1.5 jar Apache License 2.0
                                            io.dropwizard.metrics metrics-log4j 3.1.5 jar Apache License 2.0
                                            io.dropwizard.metrics metrics-log4j2 3.1.5 jar Apache License 2.0
                                            io.dropwizard.metrics metrics-logback 3.1.5 jar Apache License 2.0
                                            io.dropwizard.metrics metrics-servlet 3.1.5 jar Apache License 2.0
                                            io.dropwizard.metrics metrics-servlets 3.1.5 jar Apache License 2.0
                                            io.projectreactor reactor-bus 2.0.8.RELEASE jar The Apache Software License, Version 2.0
                                            io.projectreactor reactor-core 2.0.8.RELEASE jar The Apache Software License, Version 2.0
                                            io.projectreactor reactor-groovy 2.0.8.RELEASE jar The Apache Software License, Version 2.0
                                            io.projectreactor reactor-groovy-extensions 2.0.8.RELEASE jar The Apache Software License, Version 2.0
                                            io.projectreactor reactor-logback 2.0.8.RELEASE jar The Apache Software License, Version 2.0
                                            io.projectreactor reactor-net 2.0.8.RELEASE jar The Apache Software License, Version 2.0
                                            io.projectreactor reactor-stream 2.0.8.RELEASE jar The Apache Software License, Version 2.0
                                            io.projectreactor.spring reactor-spring-context 2.0.7.RELEASE jar The Apache Software License, Version 2.0
                                            io.projectreactor.spring reactor-spring-core 2.0.7.RELEASE jar The Apache Software License, Version 2.0
                                            io.projectreactor.spring reactor-spring-messaging 2.0.7.RELEASE jar The Apache Software License, Version 2.0
                                            io.projectreactor.spring reactor-spring-webmvc 2.0.7.RELEASE jar The Apache Software License, Version 2.0
                                            io.searchbox jest 2.0.4 jar The Apache Software License, Version 2.0
                                            io.undertow undertow-core 1.4.21.Final jar Apache License Version 2.0
                                            io.undertow undertow-servlet 1.4.21.Final jar Apache License Version 2.0
                                            io.undertow undertow-websockets-jsr 1.4.21.Final jar Apache License Version 2.0
                                            javax.cache cache-api 1.0.0 jar JSR-000107 JCACHE 2.9 Public Review - Updated Specification License
                                            javax.jms jms-api 1.1-rev-1 jar CDDL + GPLv2 with classpath exception
                                            javax.mail javax.mail-api 1.5.6 jar CDDL/GPLv2+CE
                                            javax.servlet javax.servlet-api 3.1.0 jar CDDL + GPLv2 with classpath exception
                                            javax.servlet jstl 1.2 jar -
                                            javax.transaction javax.transaction-api 1.2 jar CDDL + GPLv2 with classpath exception
                                            javax.validation validation-api 1.1.0.Final jar The Apache Software License, Version 2.0
                                            jaxen jaxen 1.1.6 jar null
                                            joda-time joda-time 2.9.9 jar Apache 2
                                            junit junit 4.12 jar Eclipse Public License 1.0
                                            mysqlmysql-connector-java5.1.44jarThe GNU General Public License, Version 2
                                            net.java.dev.jna jna jar Apache License Version 2.0
                                            org.mybatis.spring.bootmybatis-spring-boot-starter1.3.2jarThe Apache Software License, Version 2.0
                                            org.neo4j neo4j-ogm-api 2.1.5 jar The Apache Software License, Version 2.0
                                            org.neo4j neo4j-ogm-compiler 2.1.5 jar The Apache Software License, Version 2.0
                                            org.neo4j neo4j-ogm-core 2.1.5 jar The Apache Software License, Version 2.0
                                            org.neo4j neo4j-ogm-http-driver 2.1.5 jar The Apache Software License, Version 2.0
                                            org.postgresql postgresql 9.4.1212.jre7 jar The PostgreSQL License
                                            org.projectlombok lombok 1.16.18 jar The MIT License
                                            org.seleniumhq.selenium htmlunit-driver 2.21 jar The Apache Software License, Version 2.0
                                            org.seleniumhq.selenium selenium-api 2.53.1 jar The Apache Software License, Version 2.0
                                            org.seleniumhq.selenium selenium-chrome-driver 2.53.1 jar The Apache Software License, Version 2.0
                                            org.seleniumhq.selenium selenium-firefox-driver 2.53.1 jar The Apache Software License, Version 2.0
                                            org.seleniumhq.selenium selenium-ie-driver 2.53.1 jar The Apache Software License, Version 2.0
                                            org.seleniumhq.selenium selenium-java 2.53.1 jar The Apache Software License, Version 2.0
                                            org.seleniumhq.selenium selenium-remote-driver 2.53.1 jar The Apache Software License, Version 2.0
                                            org.seleniumhq.selenium selenium-safari-driver 2.53.1 jar The Apache Software License, Version 2.0
                                            org.seleniumhq.selenium selenium-support 2.53.1 jar The Apache Software License, Version 2.0
                                            org.skyscreamer jsonassert 1.4.0 jar The Apache Software License, Version 2.0
                                            org.slf4j jcl-over-slf4j 1.7.25 jar MIT License
                                            org.slf4j jul-to-slf4j 1.7.25 jar MIT License
                                            org.slf4j log4j-over-slf4j 1.7.25 jar Apache Software Licenses
                                            org.slf4j slf4j-api 1.7.25 jar MIT License
                                            org.slf4j slf4j-ext 1.7.25 jar MIT License
                                            org.slf4j slf4j-jcl 1.7.25 jar MIT License
                                            org.slf4j slf4j-jdk14 1.7.25 jar MIT License
                                            org.slf4j slf4j-log4j12 1.7.25 jar MIT License
                                            org.slf4j slf4j-nop 1.7.25 jar MIT License
                                            org.slf4j slf4j-simple 1.7.25 jar MIT License
                                            org.spockframework spock-core 1.0-groovy-2.4 jar The Apache Software License, Version 2.0
                                            org.spockframework spock-spring 1.0-groovy-2.4 jar The Apache Software License, Version 2.0
                                            org.springframework spring-aop 4.3.13.RELEASE jar Apache License, Version 2.0
                                            org.springframework spring-aspects 4.3.13.RELEASE jar Apache License, Version 2.0
                                            org.springframework spring-beans 4.3.13.RELEASE jar Apache License, Version 2.0
                                            org.springframework spring-context 4.3.13.RELEASE jar Apache License, Version 2.0
                                            org.springframework spring-context-support 4.3.13.RELEASE jar Apache License, Version 2.0
                                            org.springframework spring-core 4.3.13.RELEASE jar Apache License, Version 2.0
                                            org.springframework spring-expression 4.3.13.RELEASE jar Apache License, Version 2.0
                                            org.springframework spring-instrument 4.3.13.RELEASE jar Apache License, Version 2.0
                                            org.springframework spring-instrument-tomcat 4.3.13.RELEASE jar Apache License, Version 2.0
                                            org.springframework spring-jdbc 4.3.13.RELEASE jar Apache License, Version 2.0
                                            org.springframework spring-jms 4.3.13.RELEASE jar Apache License, Version 2.0
                                            org.springframework spring-messaging 4.3.13.RELEASE jar Apache License, Version 2.0
                                            org.springframework spring-orm 4.3.13.RELEASE jar Apache License, Version 2.0
                                            org.springframework spring-oxm 4.3.13.RELEASE jar Apache License, Version 2.0
                                            org.springframework spring-test 4.3.13.RELEASE jar Apache License, Version 2.0
                                            org.springframework spring-tx 4.3.13.RELEASE jar Apache License, Version 2.0
                                            org.springframework spring-web 4.3.13.RELEASE jar Apache License, Version 2.0
                                            org.springframework spring-webmvc 4.3.13.RELEASE jar Apache License, Version 2.0
                                            org.springframework spring-webmvc-portlet 4.3.13.RELEASE jar Apache License, Version 2.0
                                            org.springframework spring-websocket 4.3.13.RELEASE jar Apache License, Version 2.0
                                            org.springframework springloaded 1.2.8.RELEASE jar The Apache Software License, Version 2.0
                                            org.springframework.amqp spring-amqp 1.7.4.RELEASE jar The Apache Software License, Version 2.0
                                            org.springframework.amqp spring-rabbit 1.7.4.RELEASE jar The Apache Software License, Version 2.0
                                            org.springframework.batch spring-batch-core 3.0.8.RELEASE jar The Apache Software License, Version 2.0
                                            org.springframework.batch spring-batch-infrastructure 3.0.8.RELEASE jar The Apache Software License, Version 2.0
                                            org.springframework.batch spring-batch-integration 3.0.8.RELEASE jar The Apache Software License, Version 2.0
                                            org.springframework.batch spring-batch-test 3.0.8.RELEASE jar The Apache Software License, Version 2.0
                                            org.springframework.boot spring-boot 1.5.9.RELEASE jar Apache License, Version 2.0
                                            org.springframework.boot spring-boot 1.5.9.RELEASE test-jar Apache License, Version 2.0
                                            org.springframework.boot spring-boot-actuator 1.5.9.RELEASE jar Apache License, Version 2.0
                                            org.springframework.boot spring-boot-actuator-docs 1.5.9.RELEASE jar Apache License, Version 2.0
                                            org.springframework.boot spring-boot-autoconfigure 1.5.9.RELEASE jar Apache License, Version 2.0
                                            org.springframework.boot spring-boot-autoconfigure-processor 1.5.9.RELEASE jar Apache License, Version 2.0
                                            org.springframework.boot spring-boot-configuration-metadata 1.5.9.RELEASE jar Apache License, Version 2.0
                                            org.springframework.boot spring-boot-configuration-processor 1.5.9.RELEASE jar Apache License, Version 2.0
                                            org.springframework.boot spring-boot-devtools 1.5.9.RELEASE jar Apache License, Version 2.0
                                            org.springframework.boot spring-boot-loader 1.5.9.RELEASE jar Apache License, Version 2.0
                                            org.springframework.boot spring-boot-loader-tools 1.5.9.RELEASE jar Apache License, Version 2.0
                                            org.springframework.boot spring-boot-starter 1.5.9.RELEASE jar Apache License, Version 2.0
                                            org.springframework.boot spring-boot-starter-activemq 1.5.9.RELEASE jar Apache License, Version 2.0
                                            org.springframework.boot spring-boot-starter-actuator 1.5.9.RELEASE jar Apache License, Version 2.0
                                            org.springframework.boot spring-boot-starter-amqp 1.5.9.RELEASE jar Apache License, Version 2.0
                                            org.springframework.boot spring-boot-starter-aop 1.5.9.RELEASE jar Apache License, Version 2.0
                                            org.springframework.boot spring-boot-starter-artemis 1.5.9.RELEASE jar Apache License, Version 2.0
                                            org.springframework.boot spring-boot-starter-batch 1.5.9.RELEASE jar Apache License, Version 2.0
                                            org.springframework.boot spring-boot-starter-cache 1.5.9.RELEASE jar Apache License, Version 2.0
                                            org.springframework.boot spring-boot-starter-cloud-connectors 1.5.9.RELEASE jar Apache License, Version 2.0
                                            org.springframework.boot spring-boot-starter-data-cassandra 1.5.9.RELEASE jar Apache License, Version 2.0
                                            org.springframework.boot spring-boot-starter-data-couchbase 1.5.9.RELEASE jar Apache License, Version 2.0
                                            org.springframework.boot spring-boot-starter-data-elasticsearch 1.5.9.RELEASE jar Apache License, Version 2.0
                                            org.springframework.boot spring-boot-starter-data-gemfire 1.5.9.RELEASE jar Apache License, Version 2.0
                                            org.springframework.boot spring-boot-starter-data-jpa 1.5.9.RELEASE jar Apache License, Version 2.0
                                            org.springframework.boot spring-boot-starter-data-ldap 1.5.9.RELEASE jar Apache License, Version 2.0
                                            org.springframework.boot spring-boot-starter-data-mongodb 1.5.9.RELEASE jar Apache License, Version 2.0
                                            org.springframework.boot spring-boot-starter-data-neo4j 1.5.9.RELEASE jar Apache License, Version 2.0
                                            org.springframework.boot spring-boot-starter-data-redis 1.5.9.RELEASE jar Apache License, Version 2.0
                                            org.springframework.boot spring-boot-starter-data-rest 1.5.9.RELEASE jar Apache License, Version 2.0
                                            org.springframework.boot spring-boot-starter-data-solr 1.5.9.RELEASE jar Apache License, Version 2.0
                                            org.springframework.boot spring-boot-starter-freemarker 1.5.9.RELEASE jar Apache License, Version 2.0
                                            org.springframework.boot spring-boot-starter-groovy-templates 1.5.9.RELEASE jar Apache License, Version 2.0
                                            org.springframework.boot spring-boot-starter-hateoas 1.5.9.RELEASE jar Apache License, Version 2.0
                                            org.springframework.boot spring-boot-starter-integration 1.5.9.RELEASE jar Apache License, Version 2.0
                                            org.springframework.boot spring-boot-starter-jdbc 1.5.9.RELEASE jar Apache License, Version 2.0
                                            org.springframework.boot spring-boot-starter-jersey 1.5.9.RELEASE jar Apache License, Version 2.0
                                            org.springframework.boot spring-boot-starter-jetty 1.5.9.RELEASE jar Apache License, Version 2.0
                                            org.springframework.boot spring-boot-starter-jooq 1.5.9.RELEASE jar Apache License, Version 2.0
                                            org.springframework.boot spring-boot-starter-jta-atomikos 1.5.9.RELEASE jar Apache License, Version 2.0
                                            org.springframework.boot spring-boot-starter-jta-bitronix 1.5.9.RELEASE jar Apache License, Version 2.0
                                            org.springframework.boot spring-boot-starter-jta-narayana 1.5.9.RELEASE jar Apache License, Version 2.0
                                            org.springframework.boot spring-boot-starter-log4j2 1.5.9.RELEASE jar Apache License, Version 2.0
                                            org.springframework.boot spring-boot-starter-logging 1.5.9.RELEASE jar Apache License, Version 2.0
                                            org.springframework.boot spring-boot-starter-mail 1.5.9.RELEASE jar Apache License, Version 2.0
                                            org.springframework.boot spring-boot-starter-mobile 1.5.9.RELEASE jar Apache License, Version 2.0
                                            org.springframework.boot spring-boot-starter-mustache 1.5.9.RELEASE jar Apache License, Version 2.0
                                            org.springframework.boot spring-boot-starter-remote-shell 1.5.9.RELEASE jar Apache License, Version 2.0
                                            org.springframework.boot spring-boot-starter-security 1.5.9.RELEASE jar Apache License, Version 2.0
                                            org.springframework.boot spring-boot-starter-social-facebook 1.5.9.RELEASE jar Apache License, Version 2.0
                                            org.springframework.boot spring-boot-starter-social-linkedin 1.5.9.RELEASE jar Apache License, Version 2.0
                                            org.springframework.boot spring-boot-starter-social-twitter 1.5.9.RELEASE jar Apache License, Version 2.0
                                            org.springframework.boot spring-boot-starter-test 1.5.9.RELEASE jar Apache License, Version 2.0
                                            org.springframework.boot spring-boot-starter-thymeleaf 1.5.9.RELEASE jar Apache License, Version 2.0
                                            org.springframework.boot spring-boot-starter-tomcat 1.5.9.RELEASE jar Apache License, Version 2.0
                                            org.springframework.boot spring-boot-starter-undertow 1.5.9.RELEASE jar Apache License, Version 2.0
                                            org.springframework.boot spring-boot-starter-validation 1.5.9.RELEASE jar Apache License, Version 2.0
                                            org.springframework.boot spring-boot-starter-web 1.5.9.RELEASE jar Apache License, Version 2.0
                                            org.springframework.boot spring-boot-starter-web-services 1.5.9.RELEASE jar Apache License, Version 2.0
                                            org.springframework.boot spring-boot-starter-websocket 1.5.9.RELEASE jar Apache License, Version 2.0
                                            org.springframework.boot spring-boot-test 1.5.9.RELEASE jar Apache License, Version 2.0
                                            org.springframework.boot spring-boot-test 1.5.9.RELEASE test-jar Apache License, Version 2.0
                                            org.springframework.boot spring-boot-test-autoconfigure 1.5.9.RELEASE jar Apache License, Version 2.0
                                            org.springframework.cloud spring-cloud-cloudfoundry-connector 1.2.5.RELEASE jar The Apache Software License, Version 2.0
                                            org.springframework.cloud spring-cloud-core 1.2.5.RELEASE jar The Apache Software License, Version 2.0
                                            org.springframework.cloud spring-cloud-heroku-connector 1.2.5.RELEASE jar The Apache Software License, Version 2.0
                                            org.springframework.cloud spring-cloud-localconfig-connector 1.2.5.RELEASE jar The Apache Software License, Version 2.0
                                            org.springframework.cloud spring-cloud-spring-service-connector 1.2.5.RELEASE jar The Apache Software License, Version 2.0
                                            org.springframework.data spring-cql 1.5.9.RELEASE jar Apache License, Version 2.0
                                            org.springframework.data spring-data-cassandra 1.5.9.RELEASE jar Apache License, Version 2.0
                                            org.springframework.data spring-data-commons 1.13.9.RELEASE jar Apache License, Version 2.0
                                            org.springframework.data spring-data-couchbase 2.2.9.RELEASE jar Apache License, Version 2.0
                                            org.springframework.data spring-data-elasticsearch 2.1.9.RELEASE jar Apache License, Version 2.0
                                            org.springframework.data spring-data-envers 1.1.9.RELEASE jar Apache License, Version 2.0
                                            org.springframework.data spring-data-gemfire 1.9.9.RELEASE jar Apache License, Version 2.0
                                            org.springframework.data spring-data-hadoop 2.5.0.RELEASE jar The Apache Software License, Version 2.0
                                            org.springframework.data spring-data-jpa 1.11.9.RELEASE jar Apache License, Version 2.0
                                            org.springframework.data spring-data-keyvalue 1.2.9.RELEASE jar Apache License, Version 2.0
                                            org.springframework.data spring-data-ldap 1.0.9.RELEASE jar Apache License, Version 2.0
                                            org.springframework.data spring-data-mongodb 1.10.9.RELEASE jar Apache License, Version 2.0
                                            org.springframework.data spring-data-mongodb-cross-store 1.10.9.RELEASE jar Apache License, Version 2.0
                                            org.springframework.data spring-data-mongodb-log4j 1.10.9.RELEASE jar Apache License, Version 2.0
                                            org.springframework.data spring-data-neo4j 4.2.9.RELEASE jar Apache License, Version 2.0
                                            org.springframework.data spring-data-redis 1.8.9.RELEASE jar Apache License, Version 2.0
                                            org.springframework.data spring-data-rest-core 2.6.9.RELEASE jar Apache License, Version 2.0
                                            org.springframework.data spring-data-rest-hal-browser 2.6.9.RELEASE jar Apache License, Version 2.0
                                            org.springframework.data spring-data-rest-webmvc 2.6.9.RELEASE jar Apache License, Version 2.0
                                            org.springframework.data spring-data-solr 2.1.9.RELEASE jar Apache License, Version 2.0
                                            org.springframework.hateoas spring-hateoas 0.23.0.RELEASE jar Apache License, Version 2.0
                                            org.springframework.integration spring-integration-amqp 4.3.12.RELEASE jar The Apache Software License, Version 2.0
                                            org.springframework.integration spring-integration-core 4.3.12.RELEASE jar The Apache Software License, Version 2.0
                                            org.springframework.integration spring-integration-event 4.3.12.RELEASE jar The Apache Software License, Version 2.0
                                            org.springframework.integration spring-integration-feed 4.3.12.RELEASE jar The Apache Software License, Version 2.0
                                            org.springframework.integration spring-integration-file 4.3.12.RELEASE jar The Apache Software License, Version 2.0
                                            org.springframework.integration spring-integration-ftp 4.3.12.RELEASE jar The Apache Software License, Version 2.0
                                            org.springframework.integration spring-integration-gemfire 4.3.12.RELEASE jar The Apache Software License, Version 2.0
                                            org.springframework.integration spring-integration-groovy 4.3.12.RELEASE jar The Apache Software License, Version 2.0
                                            org.springframework.integration spring-integration-http 4.3.12.RELEASE jar The Apache Software License, Version 2.0
                                            org.springframework.integration spring-integration-ip 4.3.12.RELEASE jar The Apache Software License, Version 2.0
                                            org.springframework.integration spring-integration-java-dsl 1.2.3.RELEASE jar The Apache Software License, Version 2.0
                                            org.springframework.integration spring-integration-jdbc 4.3.12.RELEASE jar The Apache Software License, Version 2.0
                                            org.springframework.integration spring-integration-jms 4.3.12.RELEASE jar The Apache Software License, Version 2.0
                                            org.springframework.integration spring-integration-jmx 4.3.12.RELEASE jar The Apache Software License, Version 2.0
                                            org.springframework.integration spring-integration-jpa 4.3.12.RELEASE jar The Apache Software License, Version 2.0
                                            org.springframework.integration spring-integration-mail 4.3.12.RELEASE jar The Apache Software License, Version 2.0
                                            org.springframework.integration spring-integration-mongodb 4.3.12.RELEASE jar The Apache Software License, Version 2.0
                                            org.springframework.integration spring-integration-mqtt 4.3.12.RELEASE jar The Apache Software License, Version 2.0
                                            org.springframework.integration spring-integration-redis 4.3.12.RELEASE jar The Apache Software License, Version 2.0
                                            org.springframework.integration spring-integration-rmi 4.3.12.RELEASE jar The Apache Software License, Version 2.0
                                            org.springframework.integration spring-integration-scripting 4.3.12.RELEASE jar The Apache Software License, Version 2.0
                                            org.springframework.integration spring-integration-security 4.3.12.RELEASE jar The Apache Software License, Version 2.0
                                            org.springframework.integration spring-integration-sftp 4.3.12.RELEASE jar The Apache Software License, Version 2.0
                                            org.springframework.integration spring-integration-stomp 4.3.12.RELEASE jar The Apache Software License, Version 2.0
                                            org.springframework.integration spring-integration-stream 4.3.12.RELEASE jar The Apache Software License, Version 2.0
                                            org.springframework.integration spring-integration-syslog 4.3.12.RELEASE jar The Apache Software License, Version 2.0
                                            org.springframework.integration spring-integration-test 4.3.12.RELEASE jar The Apache Software License, Version 2.0
                                            org.springframework.integration spring-integration-twitter 4.3.12.RELEASE jar The Apache Software License, Version 2.0
                                            org.springframework.integration spring-integration-websocket 4.3.12.RELEASE jar The Apache Software License, Version 2.0
                                            org.springframework.integration spring-integration-ws 4.3.12.RELEASE jar The Apache Software License, Version 2.0
                                            org.springframework.integration spring-integration-xml 4.3.12.RELEASE jar The Apache Software License, Version 2.0
                                            org.springframework.integration spring-integration-xmpp 4.3.12.RELEASE jar The Apache Software License, Version 2.0
                                            org.springframework.integration spring-integration-zookeeper 4.3.12.RELEASE jar The Apache Software License, Version 2.0
                                            org.springframework.kafka spring-kafka 1.1.7.RELEASE jar The Apache Software License, Version 2.0
                                            org.springframework.kafka spring-kafka-test 1.1.7.RELEASE jar The Apache Software License, Version 2.0
                                            org.springframework.ldap spring-ldap-core 2.3.2.RELEASE jar The Apache Software License, Version 2.0
                                            org.springframework.ldap spring-ldap-core-tiger 2.3.2.RELEASE jar The Apache Software License, Version 2.0
                                            org.springframework.ldap spring-ldap-ldif-batch 2.3.2.RELEASE jar The Apache Software License, Version 2.0
                                            org.springframework.ldap spring-ldap-ldif-core 2.3.2.RELEASE jar The Apache Software License, Version 2.0
                                            org.springframework.ldap spring-ldap-odm 2.3.2.RELEASE jar The Apache Software License, Version 2.0
                                            org.springframework.ldap spring-ldap-test 2.3.2.RELEASE jar The Apache Software License, Version 2.0
                                            org.springframework.mobile spring-mobile-device 1.1.5.RELEASE jar The Apache Software License, Version 2.0
                                            org.springframework.plugin spring-plugin-core 1.2.0.RELEASE jar Apache License, Version 2.0
                                            org.springframework.plugin spring-plugin-metadata 1.2.0.RELEASE jar Apache License, Version 2.0
                                            org.springframework.restdocs spring-restdocs-core 1.1.3.RELEASE jar The Apache Software License, Version 2.0
                                            org.springframework.restdocs spring-restdocs-mockmvc 1.1.3.RELEASE jar The Apache Software License, Version 2.0
                                            org.springframework.restdocs spring-restdocs-restassured 1.1.3.RELEASE jar The Apache Software License, Version 2.0
                                            org.springframework.retry spring-retry 1.2.1.RELEASE jar Apache 2.0
                                            org.springframework.security spring-security-acl 4.2.3.RELEASE jar The Apache Software License, Version 2.0
                                            org.springframework.security spring-security-aspects 4.2.3.RELEASE jar The Apache Software License, Version 2.0
                                            org.springframework.security spring-security-cas 4.2.3.RELEASE jar The Apache Software License, Version 2.0
                                            org.springframework.security spring-security-config 4.2.3.RELEASE jar The Apache Software License, Version 2.0
                                            org.springframework.security spring-security-core 4.2.3.RELEASE jar The Apache Software License, Version 2.0
                                            org.springframework.security spring-security-crypto 4.2.3.RELEASE jar The Apache Software License, Version 2.0
                                            org.springframework.security spring-security-data 4.2.3.RELEASE jar The Apache Software License, Version 2.0
                                            org.springframework.security spring-security-jwt 1.0.8.RELEASE jar Apache 2.0
                                            org.springframework.security spring-security-ldap 4.2.3.RELEASE jar The Apache Software License, Version 2.0
                                            org.springframework.security spring-security-messaging 4.2.3.RELEASE jar The Apache Software License, Version 2.0
                                            org.springframework.security spring-security-openid 4.2.3.RELEASE jar The Apache Software License, Version 2.0
                                            org.springframework.security spring-security-remoting 4.2.3.RELEASE jar The Apache Software License, Version 2.0
                                            org.springframework.security spring-security-taglibs 4.2.3.RELEASE jar The Apache Software License, Version 2.0
                                            org.springframework.security spring-security-test 4.2.3.RELEASE jar The Apache Software License, Version 2.0
                                            org.springframework.security spring-security-web 4.2.3.RELEASE jar The Apache Software License, Version 2.0
                                            org.springframework.security.oauth spring-security-oauth 2.0.14.RELEASE jar Apache 2.0
                                            org.springframework.security.oauth spring-security-oauth2 2.0.14.RELEASE jar Apache 2.0
                                            org.springframework.session spring-session 1.3.1.RELEASE jar The Apache Software License, Version 2.0
                                            org.springframework.session spring-session-data-gemfire 1.3.1.RELEASE jar The Apache Software License, Version 2.0
                                            org.springframework.session spring-session-data-mongo 1.3.1.RELEASE jar The Apache Software License, Version 2.0
                                            org.springframework.session spring-session-data-redis 1.3.1.RELEASE jar The Apache Software License, Version 2.0
                                            org.springframework.session spring-session-hazelcast 1.3.1.RELEASE jar The Apache Software License, Version 2.0
                                            org.springframework.session spring-session-jdbc 1.3.1.RELEASE jar The Apache Software License, Version 2.0
                                            org.springframework.social spring-social-config 1.1.4.RELEASE jar The Apache Software License, Version 2.0
                                            org.springframework.social spring-social-core 1.1.4.RELEASE jar The Apache Software License, Version 2.0
                                            org.springframework.social spring-social-facebook 2.0.3.RELEASE jar The Apache Software License, Version 2.0
                                            org.springframework.social spring-social-facebook-web 2.0.3.RELEASE jar The Apache Software License, Version 2.0
                                            org.springframework.social spring-social-linkedin 1.0.2.RELEASE jar The Apache Software License, Version 2.0
                                            org.springframework.social spring-social-security 1.1.4.RELEASE jar The Apache Software License, Version 2.0
                                            org.springframework.social spring-social-twitter 1.1.2.RELEASE jar The Apache Software License, Version 2.0
                                            org.springframework.social spring-social-web 1.1.4.RELEASE jar The Apache Software License, Version 2.0
                                            org.springframework.ws spring-ws-core 2.4.2.RELEASE jar Apache License, Version 2.0
                                            org.springframework.ws spring-ws-security 2.4.2.RELEASE jar Apache License, Version 2.0
                                            org.springframework.ws spring-ws-support 2.4.2.RELEASE jar Apache License, Version 2.0
                                            org.springframework.ws spring-ws-test 2.4.2.RELEASE jar Apache License, Version 2.0
                                            org.thymeleaf thymeleaf 2.1.6.RELEASE jar The Apache Software License, Version 2.0
                                            org.thymeleaf thymeleaf-spring4 2.1.6.RELEASE jar The Apache Software License, Version 2.0
                                            org.thymeleaf.extras thymeleaf-extras-conditionalcomments 2.1.2.RELEASE jar The Apache Software License, Version 2.0
                                            org.thymeleaf.extras thymeleaf-extras-java8time 2.1.0.RELEASE jar The Apache Software License, Version 2.0
                                            org.thymeleaf.extras thymeleaf-extras-springsecurity4 2.1.3.RELEASE jar The Apache Software License, Version 2.0
                                            org.webjars hal-browser 9f96c74 jar MIT License
                                            org.webjars webjars-locator 0.32-1 jar MIT
                                            org.xerial sqlite-jdbc 3.15.1 jar The Apache Software License, Version 2.0
                                            org.yaml snakeyaml 1.17 jar Apache License, Version 2.0
                                            redis.clients jedis 2.9.0 jar MIT
                                            wsdl4j wsdl4j 1.6.3 jar CPL
                                            xml-apis xml-apis 1.4.01 jarThe Apache Software License, Version 2.0, The SAX License, The W3C License
                                            +

                                          The Apache Software License, Version 2.0, The SAX License, The W3C License
                                          +
                                          +

                                          runtime

                                          +

                                          The following is a list of runtime dependencies in the DependencyManagement of this project. These dependencies can be included in the submodules to run the submodule:

                                          + + + + + + + + + + + + +
                                          GroupIdArtifactIdVersionTypeLicense
                                          mysqlmysql-connector-java5.1.46jarThe GNU General Public License, Version 2
                                          diff --git a/docs/framework/spring/spring-data/distribution-management.html b/docs/framework/spring/spring-data/distribution-management.html index 83965c86e..d58265594 100644 --- a/docs/framework/spring/spring-data/distribution-management.html +++ b/docs/framework/spring/spring-data/distribution-management.html @@ -1,5 +1,5 @@ - + @@ -25,7 +25,7 @@
                                          org.apache.maven.plugins maven-release-plugin2.3.2
                                          +

                                        2.3.2
                                        org.mybatis.generatormybatis-generator-maven-plugin1.3.5
                                        diff --git a/docs/framework/spring/spring-data/plugins.html b/docs/framework/spring/spring-data/plugins.html index d85272172..3a78d9e55 100644 --- a/docs/framework/spring/spring-data/plugins.html +++ b/docs/framework/spring/spring-data/plugins.html @@ -1,5 +1,5 @@ - + @@ -25,7 +25,7 @@
                                        org.apache.maven.pluginsmaven-jar-plugin2.4
                                        org.apache.maven.plugins maven-pdf-plugin 1.4
                                        org.apache.maven.plugins maven-release-plugin 2.2.1
                                        org.apache.maven.pluginsmaven-resources-plugin2.6
                                        org.apache.maven.plugins maven-site-plugin3.6
                                        org.apache.maven.pluginsmaven-surefire-plugin2.12.4
                                        +
                                      3.6

                                      Project Report Plugins

                                      There are no plugins reports defined in the Reporting part of this project.

                                      diff --git a/docs/framework/spring/spring-data/project-info.html b/docs/framework/spring/spring-data/project-info.html index eeb888f77..fc36fa3b9 100644 --- a/docs/framework/spring/spring-data/project-info.html +++ b/docs/framework/spring/spring-data/project-info.html @@ -1,5 +1,5 @@ - + @@ -25,7 +25,7 @@
                                      Issue Management This document provides information on the issue management system used in this project.
                                      Project ModulesThis document lists the modules (sub-projects) of this project.
                                      Plugin Management This document lists the plugins that are defined through pluginManagement.
                                      Plugins This document lists the build plugins and the report plugins used by this project.
                                      Team This document provides information on the members of this project. These are the individuals who have contributed to the project in one form or another.
                                      Source Code Management This document lists ways to access the online source repository.
                                      Summary This document lists other related information of this project
                                      diff --git a/docs/framework/spring/spring-data/project-reports.html b/docs/framework/spring/spring-data/project-reports.html index 44af3dbe5..2bb287ce4 100644 --- a/docs/framework/spring/spring-data/project-reports.html +++ b/docs/framework/spring/spring-data/project-reports.html @@ -1,5 +1,5 @@ - + @@ -25,7 +25,7 @@
                                    Typejar
                                    Java Version1.8
                                    +
                                    pom
                                    diff --git a/docs/framework/spring/spring-data/source-repository.html b/docs/framework/spring/spring-data/source-repository.html index 80e384baa..7428257e3 100644 --- a/docs/framework/spring/spring-data/source-repository.html +++ b/docs/framework/spring/spring-data/source-repository.html @@ -1,5 +1,5 @@ - + @@ -25,7 +25,7 @@
                                  org/laidu/learn/amqp/rabbitmq/official/rpc/RPCClient.java 0 027
                                  26
                                  org/laidu/learn/amqp/rabbitmq/official/rpc/RPCServer.java 0 020
                                  21
                                  org/laidu/learn/amqp/rabbitmq/official/work/queues/package-info.java 0Line
                                   ErrorjavadocJavadocPackageMissing package-info.java file.
                                   Error imports AvoidStarImport Using the '.*' form of import should be avoided - com.rabbitmq.client.*. 6
                                   Error imports AvoidStarImport Using the '.*' form of import should be avoided - java.util.concurrent.*. 10
                                   Error javadoc JavadocVariable Missing a Javadoc comment. 21
                                   Error javadoc JavadocVariable Missing a Javadoc comment. 22
                                   Error javadoc JavadocVariable Missing a Javadoc comment. 23
                                   Error javadoc JavadocVariable Missing a Javadoc comment. 24
                                   Error javadoc JavadocMethod Missing a Javadoc comment. 26
                                   Error coding MagicNumber '5672' is a magic number. 31
                                   Error sizes LineLength Line is longer than 80 characters (found 81). 40
                                   Error design DesignForExtension Method 'call' is not designed for extension - needs to be abstract, final or empty. 40
                                   Error javadoc JavadocMethod Missing a Javadoc comment. 40
                                   Error misc FinalParameters Parameter message should be final. 40
                                   Error sizes LineLength Line is longer than 80 characters (found 85). 49
                                   Error sizes LineLength Line is longer than 80 characters (found 81). 53
                                   Error sizes LineLength Line is longer than 80 characters (found 144). 55
                                   Error misc FinalParameters Parameter consumerTag should be final. 55
                                   Error misc FinalParameters Parameter envelope should be final. 55
                                   Error misc FinalParameters Parameter properties should be final. 55
                                   Error misc FinalParameters Parameter body should be final. 55
                                   Error design DesignForExtension Method 'close' is not designed for extension - needs to be abstract, final or empty. 65
                                   Error javadoc JavadocMethod Missing a Javadoc comment. 65
                                   Error sizes LineLength Line is longer than 80 characters (found 103). 69
                                   Error javadoc JavadocMethod Missing a Javadoc comment. 69
                                   Error misc FinalParameters Parameter args should be final. 69
                                   Error coding MagicNumber '10' is a magic number. 73
                                   Error whitespace WhitespaceAround
                                  - + + + + + + + diff --git a/docs/framework/spring/spring-amqp/checkstyle.rss b/docs/framework/spring/spring-amqp/checkstyle.rss index 2b9b139d0..4c3a8ef89 100644 --- a/docs/framework/spring/spring-amqp/checkstyle.rss +++ b/docs/framework/spring/spring-amqp/checkstyle.rss @@ -102,7 +102,7 @@ under the License. @@ -139,7 +139,7 @@ under the License. 0 @@ -158,7 +158,7 @@ under the License. @@ -214,7 +214,7 @@ under the License. @@ -265,7 +265,7 @@ under the License. 0 @@ -284,7 +284,7 @@ under the License. diff --git a/docs/framework/spring/spring-amqp/dependencies.html b/docs/framework/spring/spring-amqp/dependencies.html index a60745fa1..a9a15c1b3 100644 --- a/docs/framework/spring/spring-amqp/dependencies.html +++ b/docs/framework/spring/spring-amqp/dependencies.html @@ -1,5 +1,5 @@ - + @@ -25,7 +25,7 @@ + + + + + + - + - + - + - + + + + + + + @@ -382,96 +394,102 @@

                                  compile

                                  + + + + + + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -564,36 +582,30 @@

                                  test

                                  - - - - - - - + - + - + - + @@ -945,7 +957,7 @@

                                  Dependency Tree

                                  URL: http://www.mockito.org

                                  Project Licenses: The MIT License

                                  Severity Category Rule Message Line
                                   ErrorjavadocJavadocPackageMissing package-info.java file.
                                   Error imports
                                  - org/laidu/learn/amqp/rabbitmq/official/conf/RabbitmqConfig.java + org/laidu/learn/amqp/rabbitmq/official/work/queues/package-info.java 0 @@ -111,12 +111,12 @@ under the License. 0 - 8 + 1
                                  - org/laidu/learn/amqp/rabbitmq/official/work/queues/package-info.java + org/laidu/learn/amqp/rabbitmq/official/conf/RabbitmqConfig.java 0 @@ -125,7 +125,7 @@ under the License. 0 - 1 + 8
                                  - 27 + 26
                                  - org/laidu/learn/amqp/rabbitmq/java/ClientDemo.java + org/laidu/learn/amqp/service/impl/CalculateImpl.java 0 @@ -167,12 +167,12 @@ under the License. 0 - 4 + 6
                                  - org/laidu/learn/amqp/service/impl/CalculateImpl.java + org/laidu/learn/amqp/rabbitmq/java/ClientDemo.java 0 @@ -181,7 +181,7 @@ under the License. 0 - 6 + 4
                                  - org/laidu/learn/amqp/package-info.java + org/laidu/learn/amqp/rabbitmq/json/JsonApp.java 0 @@ -223,12 +223,12 @@ under the License. 0 - 1 + 61
                                  - org/laidu/learn/amqp/rabbitmq/json/JsonApp.java + org/laidu/learn/amqp/package-info.java 0 @@ -237,7 +237,7 @@ under the License. 0 - 61 + 1
                                  - 20 + 21
                                  - org/laidu/learn/amqp/rabbitmq/official/package-info.java + org/laidu/learn/amqp/service/Calculate.java 0 @@ -293,12 +293,12 @@ under the License. 0 - 1 + 3
                                  - org/laidu/learn/amqp/service/Calculate.java + org/laidu/learn/amqp/rabbitmq/official/package-info.java 0 @@ -307,7 +307,7 @@ under the License. 0 - 3 + 1
                                  jar Apache License, Version 2.0
                                  de.ruedigermoellerfst2.57jarApache License 2.0
                                  org.apache.commons commons-lang3 3.6 jar Apache License, Version 2.0
                                  org.apache.httpcomponents httpclient 4.5.3 jar Apache License, Version 2.0
                                  org.apache.httpcomponents httpcore 4.4.8 jar Apache License, Version 2.0
                                  org.checkerframework checker-qual 2.0.0 jar GNU General Public License, version 2 (GPL2), with the classpath exception-The MIT License
                                  org.codehaus.mojo animal-sniffer-annotations 1.14 jar MIT license
                                  org.javassistjavassist3.21.0-GAjarMPL 1.1-LGPL 2.1-Apache License 2.0
                                  org.jodd jodd-bean jar The MIT License
                                  org.objenesisobjenesis2.1jarApache 2
                                  org.slf4j jcl-over-slf4j 1.7.25 jar MIT License
                                  org.slf4j jul-to-slf4j 1.7.25 jar MIT License
                                  org.slf4j log4j-over-slf4j 1.7.25 jar Apache Software Licenses
                                  org.slf4j slf4j-api 1.7.25 jar MIT License
                                  org.springframework spring-aop 4.3.13.RELEASE jar Apache License, Version 2.0
                                  org.springframework spring-beans 4.3.13.RELEASE jar Apache License, Version 2.0
                                  org.springframework spring-context 4.3.13.RELEASE jar Apache License, Version 2.0
                                  org.springframework spring-core 4.3.13.RELEASE jar Apache License, Version 2.0
                                  org.springframework spring-expression 4.3.13.RELEASE jar Apache License, Version 2.0
                                  org.springframework spring-messaging 4.3.13.RELEASE jar Apache License, Version 2.0
                                  org.springframework spring-tx 4.3.13.RELEASE jar Apache License, Version 2.0
                                  org.springframework spring-web 4.3.13.RELEASE jar Apache License, Version 2.0
                                  org.springframework.boot spring-boot 1.5.9.RELEASE jar Apache License, Version 2.0
                                  org.springframework.boot spring-boot-autoconfigure 1.5.9.RELEASE jar Apache License, Version 2.0
                                  org.springframework.boot spring-boot-starter-logging 1.5.9.RELEASE jar Apache License, Version 2.0
                                  org.springframework.retry spring-retry 1.2.1.RELEASE jar The MIT License
                                  org.objenesisobjenesis2.1jarApache 2
                                  org.opentest4j opentest4j 1.0.0 jar The Apache License, Version 2.0
                                  org.ow2.asm asm 5.0.3 jar BSD
                                  org.skyscreamer jsonassert 1.4.0 jar The Apache Software License, Version 2.0
                                  org.springframework.boot spring-boot-test 1.5.9.RELEASE jar Apache License, Version 2.0
                                  org.springframework.boot spring-boot-test-autoconfigure 1.5.9.RELEASE
                                    -
                                  • org.objenesis:objenesis:jar:2.1 (test) [Information]
                                  • org.objenesis:objenesis:jar:2.1 (compile) [Information]
                                  -
                                1. org.projectlombok:lombok:jar:1.16.18 (compile) [Information]
                                2. +
                                3. de.ruedigermoeller:fst:jar:2.57 (compile) [Information] +
                                    +
                                  • org.javassist:javassist:jar:3.21.0-GA (compile) [Information]
                                4. +
                                5. org.projectlombok:lombok:jar:1.16.18 (compile) [Information]
                                6. -
                                7. ch.qos.logback:logback-core:jar:1.2.3 (compile) [Information]
                                8. ch.qos.logback:logback-core:jar:1.2.3 (compile) [Information]
                                9. -
                                10. ch.qos.logback:logback-classic:jar:1.2.3 (compile) [Information]
                                11. ch.qos.logback:logback-classic:jar:1.2.3 (compile) [Information]
                                12. -
                                13. ch.qos.logback:logback-access:jar:1.2.3 (compile) [Information]
                                14. ch.qos.logback:logback-access:jar:1.2.3 (compile) [Information]
                                15. -
                                16. junit:junit:jar:4.12 (test) [Information]
                                17. junit:junit:jar:4.12 (test) [Information]
                                18. -
                                19. org.junit.jupiter:junit-jupiter-api:jar:5.0.0 (test) [Information]
                                20. org.junit.jupiter:junit-jupiter-api:jar:5.0.0 (test) [Information]
                                21. -
                                22. org.junit.jupiter:junit-jupiter-engine:jar:5.0.0 (test) [Information]
                                23. org.junit.jupiter:junit-jupiter-engine:jar:5.0.0 (test) [Information]
                                24. -
                                25. org.junit.platform:junit-platform-engine:jar:1.0.2 (test) [Information]
                                26. org.junit.platform:junit-platform-engine:jar:1.0.2 (test) [Information]
                                27. -
                                28. org.junit.platform:junit-platform-launcher:jar:1.0.2 (test) [Information]
                                29. org.junit.platform:junit-platform-launcher:jar:1.0.2 (test) [Information]
                                30. -
                                31. org.junit.vintage:junit-vintage-engine:jar:4.12.0 (test) [Information]
                                32. org.junit.vintage:junit-vintage-engine:jar:4.12.0 (test) [Information]
                                    -
                                  • org.objenesis:objenesis:jar:2.1 (test) [Information]
                                  • org.objenesis:objenesis:jar:2.1 (compile) [Information]
                                33. -
                                34. org.projectlombok:lombok:jar:1.16.18 (compile) [Information]
                                +
                              1. de.ruedigermoeller:fst:jar:2.57 (compile) [Information] +
                                  +
                                • org.javassist:javassist:jar:3.21.0-GA (compile) [Information]
                              2. +
                              3. org.projectlombok:lombok:jar:1.16.18 (compile) [Information]
                              4. -
                              5. ch.qos.logback:logback-core:jar:1.2.3 (compile) [Information]
                              6. ch.qos.logback:logback-core:jar:1.2.3 (compile) [Information]
                              7. -
                              8. ch.qos.logback:logback-classic:jar:1.2.3 (compile) [Information]
                              9. ch.qos.logback:logback-classic:jar:1.2.3 (compile) [Information]
                                  -
                                • org.slf4j:slf4j-api:jar:1.7.25 (compile) [Information]
                                • org.slf4j:slf4j-api:jar:1.7.25 (compile) [Information]
                              10. -
                              11. ch.qos.logback:logback-access:jar:1.2.3 (compile) [Information]
                              12. ch.qos.logback:logback-access:jar:1.2.3 (compile) [Information]
                              13. -
                              14. junit:junit:jar:4.12 (test) [Information]
                              15. junit:junit:jar:4.12 (test) [Information]
                              16. -
                              17. org.junit.jupiter:junit-jupiter-api:jar:5.0.0 (test) [Information]
                              18. org.junit.jupiter:junit-jupiter-api:jar:5.0.0 (test) [Information]
                              19. -
                              20. org.junit.jupiter:junit-jupiter-engine:jar:5.0.0 (test) [Information]
                              21. org.junit.jupiter:junit-jupiter-engine:jar:5.0.0 (test) [Information]
                              22. -
                              23. org.junit.platform:junit-platform-engine:jar:1.0.2 (test) [Information]
                              24. org.junit.platform:junit-platform-engine:jar:1.0.2 (test) [Information]
                              25. -
                              26. org.junit.platform:junit-platform-launcher:jar:1.0.2 (test) [Information]
                              27. org.junit.platform:junit-platform-launcher:jar:1.0.2 (test) [Information]
                              28. -
                              29. org.junit.vintage:junit-vintage-engine:jar:4.12.0 (test) [Information]
                              30. org.junit.vintage:junit-vintage-engine:jar:4.12.0 (test) [Information] +
                                +

                                Files

                                + + + + + +
                                File I W E
                                +
                                +

                                Rules

                                + + + + + +
                                CategoryRuleViolationsSeverity
                                +
                                +

                                Details

                                + + +
                                +
                                +
                                + + + diff --git a/docs/framework/spring/spring-cloud/checkstyle.rss b/docs/framework/spring/spring-cloud/checkstyle.rss new file mode 100644 index 000000000..6a9d252fa --- /dev/null +++ b/docs/framework/spring/spring-cloud/checkstyle.rss @@ -0,0 +1,54 @@ + + + + + spring-cloud - Checkstyle report + https://github.com/laidu/java-learn/framework/spring/spring-cloud + spring-cloud - Checkstyle report + en-us + ©2018 + + File: 0, + Errors: 0, + Warnings: 0, + Infos: 0 + + https://github.com/laidu/java-learn/framework/spring/spring-cloud/checkstyle.html + +

                                Click here for the full Checkstyle report.

                                + + + + + + + + + + + + +
                                FilesIWE
                                + +
                                +
                                +
                                +
                                + diff --git a/docs/framework/spring/spring-cloud/dependencies.html b/docs/framework/spring/spring-cloud/dependencies.html index 2f5a86167..725b3b617 100644 --- a/docs/framework/spring/spring-cloud/dependencies.html +++ b/docs/framework/spring/spring-cloud/dependencies.html @@ -1,5 +1,5 @@ - + @@ -25,7 +25,7 @@
                              31. - @@ -319,35 +319,47 @@

                                compile

                                jar Apache License, Version 2.0
                                de.ruedigermoellerfst2.57jarApache License 2.0
                                org.apache.commons commons-lang3 3.6 jar Apache License, Version 2.0
                                org.apache.httpcomponents httpclient 4.5.3 jar Apache License, Version 2.0
                                org.apache.httpcomponents httpcore 4.4.8 jar Apache License, Version 2.0
                                org.checkerframework checker-qual 2.0.0 jar GNU General Public License, version 2 (GPL2), with the classpath exception-The MIT License
                                org.codehaus.mojo animal-sniffer-annotations 1.14 jar MIT license
                                org.javassistjavassist3.21.0-GAjarMPL 1.1-LGPL 2.1-Apache License 2.0
                                org.jodd jodd-bean jar The MIT License
                                org.objenesisobjenesis2.1jarApache 2
                                org.slf4j jcl-over-slf4j 1.7.25 jar MIT License
                                org.slf4j jul-to-slf4j 1.7.25 jar MIT License
                                org.slf4j log4j-over-slf4j 1.7.25 jar Apache Software Licenses
                                org.slf4j slf4j-api 1.7.25 jar MIT License
                                org.springframework spring-aop 4.3.13.RELEASE jar Apache License, Version 2.0
                                org.springframework spring-beans 4.3.13.RELEASE jar Apache License, Version 2.0
                                org.springframework spring-context 4.3.13.RELEASE jar Apache License, Version 2.0
                                org.springframework spring-core 4.3.13.RELEASE jar Apache License, Version 2.0
                                org.springframework spring-expression 4.3.13.RELEASE jar Apache License, Version 2.0
                                org.springframework.boot spring-boot 1.5.9.RELEASE jar Apache License, Version 2.0
                                org.springframework.boot spring-boot-autoconfigure 1.5.9.RELEASE jar Apache License, Version 2.0
                                org.springframework.boot spring-boot-starter-logging 1.5.9.RELEASE jar The MIT License
                                org.objenesisobjenesis2.1jarApache 2
                                org.opentest4j opentest4j 1.0.0 jar The Apache License, Version 2.0
                                org.ow2.asm asm 5.0.3 jar BSD
                                org.skyscreamer jsonassert 1.4.0 jar The Apache Software License, Version 2.0
                                org.springframework.boot spring-boot-test 1.5.9.RELEASE jar Apache License, Version 2.0
                                org.springframework.boot spring-boot-test-autoconfigure 1.5.9.RELEASE
                                  -
                                • org.objenesis:objenesis:jar:2.1 (test) [Information]
                                • org.objenesis:objenesis:jar:2.1 (compile) [Information]
                                -
                              32. org.projectlombok:lombok:jar:1.16.18 (compile) [Information]
                              +
                            1. de.ruedigermoeller:fst:jar:2.57 (compile) [Information] +
                                +
                              • org.javassist:javassist:jar:3.21.0-GA (compile) [Information]
                            2. +
                            3. org.projectlombok:lombok:jar:1.16.18 (compile) [Information]
                            4. -
                            5. ch.qos.logback:logback-core:jar:1.2.3 (compile) [Information]
                            6. ch.qos.logback:logback-core:jar:1.2.3 (compile) [Information]
                            7. -
                            8. ch.qos.logback:logback-classic:jar:1.2.3 (compile) [Information]
                            9. ch.qos.logback:logback-classic:jar:1.2.3 (compile) [Information]
                                -
                              • org.slf4j:slf4j-api:jar:1.7.25 (compile) [Information]
                              • org.slf4j:slf4j-api:jar:1.7.25 (compile) [Information]
                            10. -
                            11. ch.qos.logback:logback-access:jar:1.2.3 (compile) [Information]
                            12. ch.qos.logback:logback-access:jar:1.2.3 (compile) [Information]
                            13. -
                            14. junit:junit:jar:4.12 (test) [Information]
                            15. junit:junit:jar:4.12 (test) [Information]
                            16. -
                            17. org.junit.jupiter:junit-jupiter-api:jar:5.0.0 (test) [Information]
                            18. org.junit.jupiter:junit-jupiter-api:jar:5.0.0 (test) [Information]
                            19. -
                            20. org.junit.jupiter:junit-jupiter-engine:jar:5.0.0 (test) [Information]
                            21. org.junit.jupiter:junit-jupiter-engine:jar:5.0.0 (test) [Information]
                            22. -
                            23. org.junit.platform:junit-platform-engine:jar:1.0.2 (test) [Information]
                            24. org.junit.platform:junit-platform-engine:jar:1.0.2 (test) [Information]
                            25. -
                            26. org.junit.platform:junit-platform-launcher:jar:1.0.2 (test) [Information]
                            27. org.junit.platform:junit-platform-launcher:jar:1.0.2 (test) [Information]
                            28. -
                            29. org.junit.vintage:junit-vintage-engine:jar:4.12.0 (test) [Information]
                            30. org.junit.vintage:junit-vintage-engine:jar:4.12.0 (test) [Information] +
                            31. Report on the test results of the project.
                              CheckstyleReport on coding style conventions.
                              diff --git a/docs/framework/spring/spring-cloud/project-summary.html b/docs/framework/spring/spring-cloud/project-summary.html index cf4f6dea1..d33e5a0f8 100644 --- a/docs/framework/spring/spring-cloud/project-summary.html +++ b/docs/framework/spring/spring-cloud/project-summary.html @@ -1,5 +1,5 @@ - + @@ -25,7 +25,7 @@
                              -
                            1. org.laidu.learn:crawler:jar:1.0-SNAPSHOT
                              +- org.laidu.learn:common-amqp:jar:1.0-SNAPSHOT:compile
                              |  \- (ch.qos.logback:logback-access:jar:1.1.11:compile - version managed from 1.2.3; omitted for conflict with 1.2.3)
                              \- org.laidu.learn:common-util:jar:1.0-SNAPSHOT:compile
                                 \- (ch.qos.logback:logback-access:jar:1.1.11:compile - version managed from 1.2.3; omitted for duplicate)

                            2. -
                            3. org.laidu.learn:spring-amqp:jar:1.0-SNAPSHOT
                              \- org.laidu.learn:common-util:jar:1.0-SNAPSHOT:compile
                                 \- (ch.qos.logback:logback-access:jar:1.1.11:compile - version managed from 1.2.3; omitted for conflict with 1.2.3)

                            4. -
                            5. org.laidu.learn:spring-boot:pom:1.0-SNAPSHOT
                              \- org.laidu.learn:common-util:jar:1.0-SNAPSHOT:compile
                                 \- (ch.qos.logback:logback-access:jar:1.1.11:compile - version managed from 1.2.3; omitted for conflict with 1.2.3)

                            6. -
                            7. org.laidu.learn:spring-cloud:pom:1.0-SNAPSHOT
                              \- org.laidu.learn:common-util:jar:1.0-SNAPSHOT:compile
                                 \- (ch.qos.logback:logback-access:jar:1.1.11:compile - version managed from 1.2.3; omitted for conflict with 1.2.3)

                            8. -
                            9. org.laidu.learn:spring-data:pom:1.0-SNAPSHOT
                              \- org.laidu.learn:common-util:jar:1.0-SNAPSHOT:compile
                                 \- (ch.qos.logback:logback-access:jar:1.1.11:compile - version managed from 1.2.3; omitted for conflict with 1.2.3)

                            10. -
                            11. org.laidu.learn:spring-hadoop:jar:1.0-SNAPSHOT
                              \- org.laidu.learn:common-util:jar:1.0-SNAPSHOT:compile
                                 \- (ch.qos.logback:logback-access:jar:1.1.11:compile - version managed from 1.2.3; omitted for conflict with 1.2.3)

                            12. -
                            13. org.laidu.learn:spring-mybatis:jar:1.0-SNAPSHOT
                              \- org.laidu.learn:common-util:jar:1.0-SNAPSHOT:compile
                                 \- (ch.qos.logback:logback-access:jar:1.1.11:compile - version managed from 1.2.3; omitted for conflict with 1.2.3)

                            14. -
                            15. org.laidu.learn:spring:pom:1.0-SNAPSHOT
                              \- org.laidu.learn:common-util:jar:1.0-SNAPSHOT:compile
                                 \- (ch.qos.logback:logback-access:jar:1.1.11:compile - version managed from 1.2.3; omitted for conflict with 1.2.3)

                            1.2.3
                              -
                            1. org.laidu.learn:crawler:jar:1.0-SNAPSHOT
                              \- ch.qos.logback:logback-access:jar:1.2.3:compile

                            2. -
                            3. org.laidu.learn:spring-amqp:jar:1.0-SNAPSHOT
                              \- ch.qos.logback:logback-access:jar:1.2.3:compile

                            4. -
                            5. org.laidu.learn:spring-boot:pom:1.0-SNAPSHOT
                              \- ch.qos.logback:logback-access:jar:1.2.3:compile

                            6. -
                            7. org.laidu.learn:spring-cloud:pom:1.0-SNAPSHOT
                              \- ch.qos.logback:logback-access:jar:1.2.3:compile

                            8. -
                            9. org.laidu.learn:spring-data:pom:1.0-SNAPSHOT
                              \- ch.qos.logback:logback-access:jar:1.2.3:compile

                            10. -
                            11. org.laidu.learn:spring-hadoop:jar:1.0-SNAPSHOT
                              \- ch.qos.logback:logback-access:jar:1.2.3:compile

                            12. -
                            13. org.laidu.learn:spring-mybatis:jar:1.0-SNAPSHOT
                              \- ch.qos.logback:logback-access:jar:1.2.3:compile

                            14. -
                            15. org.laidu.learn:spring:pom:1.0-SNAPSHOT
                              \- ch.qos.logback:logback-access:jar:1.2.3:compile

                            +
                          3. org.laidu.learn:crawler:jar:1.0-SNAPSHOT
                            \- ch.qos.logback:logback-access:jar:1.2.3:compile

                          ch.qos.logback:logback-classic

                          @@ -209,27 +137,13 @@

                          ch.qos.logback:logback-classic<

                          +
                        1. org.laidu.learn:crawler:jar:1.0-SNAPSHOT
                          +- org.springframework.boot:spring-boot-starter:jar:1.5.9.RELEASE:compile
                          |  \- org.springframework.boot:spring-boot-starter-logging:jar:1.5.9.RELEASE:compile
                          |     \- (ch.qos.logback:logback-classic:jar:1.1.11:compile - version managed from 1.2.3; omitted for duplicate)
                          +- org.laidu.learn:common-amqp:jar:1.0-SNAPSHOT:compile
                          |  \- (ch.qos.logback:logback-classic:jar:1.1.11:compile - version managed from 1.2.3; omitted for conflict with 1.2.3)
                          \- org.laidu.learn:common-util:jar:1.0-SNAPSHOT:compile
                             \- (ch.qos.logback:logback-classic:jar:1.1.11:compile - version managed from 1.2.3; omitted for duplicate)

                          1. org.laidu.learn:common-amqp:jar:1.0-SNAPSHOT
                            \- org.springframework.boot:spring-boot-starter-amqp:jar:1.5.9.RELEASE:compile
                               \- org.springframework.boot:spring-boot-starter:jar:1.5.9.RELEASE:compile
                                  \- org.springframework.boot:spring-boot-starter-logging:jar:1.5.9.RELEASE:compile
                                     \- (ch.qos.logback:logback-classic:jar:1.1.11:compile - omitted for conflict with 1.2.3)

                          2. -
                          3. org.laidu.learn:crawler:jar:1.0-SNAPSHOT
                            +- org.springframework.boot:spring-boot-starter:jar:1.5.9.RELEASE:compile
                            |  \- org.springframework.boot:spring-boot-starter-logging:jar:1.5.9.RELEASE:compile
                            |     \- (ch.qos.logback:logback-classic:jar:1.1.11:compile - version managed from 1.2.3; omitted for duplicate)
                            +- org.laidu.learn:common-amqp:jar:1.0-SNAPSHOT:compile
                            |  \- (ch.qos.logback:logback-classic:jar:1.1.11:compile - version managed from 1.2.3; omitted for conflict with 1.2.3)
                            \- org.laidu.learn:common-util:jar:1.0-SNAPSHOT:compile
                               \- (ch.qos.logback:logback-classic:jar:1.1.11:compile - version managed from 1.2.3; omitted for duplicate)

                          4. -
                          5. org.laidu.learn:spring-amqp:jar:1.0-SNAPSHOT
                            +- org.springframework.boot:spring-boot-starter:jar:1.5.9.RELEASE:compile
                            |  \- org.springframework.boot:spring-boot-starter-logging:jar:1.5.9.RELEASE:compile
                            |     \- (ch.qos.logback:logback-classic:jar:1.1.11:compile - version managed from 1.2.3; omitted for duplicate)
                            \- org.laidu.learn:common-util:jar:1.0-SNAPSHOT:compile
                               \- (ch.qos.logback:logback-classic:jar:1.1.11:compile - version managed from 1.2.3; omitted for conflict with 1.2.3)

                          6. -
                          7. org.laidu.learn:spring-boot:pom:1.0-SNAPSHOT
                            +- org.springframework.boot:spring-boot-starter:jar:1.5.9.RELEASE:compile
                            |  \- org.springframework.boot:spring-boot-starter-logging:jar:1.5.9.RELEASE:compile
                            |     \- (ch.qos.logback:logback-classic:jar:1.1.11:compile - version managed from 1.2.3; omitted for duplicate)
                            \- org.laidu.learn:common-util:jar:1.0-SNAPSHOT:compile
                               \- (ch.qos.logback:logback-classic:jar:1.1.11:compile - version managed from 1.2.3; omitted for conflict with 1.2.3)

                          8. -
                          9. org.laidu.learn:spring-cloud:pom:1.0-SNAPSHOT
                            +- org.springframework.boot:spring-boot-starter:jar:1.5.9.RELEASE:compile
                            |  \- org.springframework.boot:spring-boot-starter-logging:jar:1.5.9.RELEASE:compile
                            |     \- (ch.qos.logback:logback-classic:jar:1.1.11:compile - version managed from 1.2.3; omitted for duplicate)
                            \- org.laidu.learn:common-util:jar:1.0-SNAPSHOT:compile
                               \- (ch.qos.logback:logback-classic:jar:1.1.11:compile - version managed from 1.2.3; omitted for conflict with 1.2.3)

                          10. -
                          11. org.laidu.learn:spring-data:pom:1.0-SNAPSHOT
                            +- org.springframework.boot:spring-boot-starter:jar:1.5.9.RELEASE:compile
                            |  \- org.springframework.boot:spring-boot-starter-logging:jar:1.5.9.RELEASE:compile
                            |     \- (ch.qos.logback:logback-classic:jar:1.1.11:compile - version managed from 1.2.3; omitted for duplicate)
                            \- org.laidu.learn:common-util:jar:1.0-SNAPSHOT:compile
                               \- (ch.qos.logback:logback-classic:jar:1.1.11:compile - version managed from 1.2.3; omitted for conflict with 1.2.3)

                          12. -
                          13. org.laidu.learn:spring-hadoop:jar:1.0-SNAPSHOT
                            +- org.springframework.boot:spring-boot-starter:jar:1.5.9.RELEASE:compile
                            |  \- org.springframework.boot:spring-boot-starter-logging:jar:1.5.9.RELEASE:compile
                            |     \- (ch.qos.logback:logback-classic:jar:1.1.11:compile - version managed from 1.2.3; omitted for duplicate)
                            \- org.laidu.learn:common-util:jar:1.0-SNAPSHOT:compile
                               \- (ch.qos.logback:logback-classic:jar:1.1.11:compile - version managed from 1.2.3; omitted for conflict with 1.2.3)

                          14. -
                          15. org.laidu.learn:spring-mybatis:jar:1.0-SNAPSHOT
                            +- org.springframework.boot:spring-boot-starter:jar:1.5.9.RELEASE:compile
                            |  \- org.springframework.boot:spring-boot-starter-logging:jar:1.5.9.RELEASE:compile
                            |     \- (ch.qos.logback:logback-classic:jar:1.1.11:compile - version managed from 1.2.3; omitted for duplicate)
                            \- org.laidu.learn:common-util:jar:1.0-SNAPSHOT:compile
                               \- (ch.qos.logback:logback-classic:jar:1.1.11:compile - version managed from 1.2.3; omitted for conflict with 1.2.3)

                          16. -
                          17. org.laidu.learn:spring:pom:1.0-SNAPSHOT
                            +- org.springframework.boot:spring-boot-starter:jar:1.5.9.RELEASE:compile
                            |  \- org.springframework.boot:spring-boot-starter-logging:jar:1.5.9.RELEASE:compile
                            |     \- (ch.qos.logback:logback-classic:jar:1.1.11:compile - version managed from 1.2.3; omitted for duplicate)
                            \- org.laidu.learn:common-util:jar:1.0-SNAPSHOT:compile
                               \- (ch.qos.logback:logback-classic:jar:1.1.11:compile - version managed from 1.2.3; omitted for conflict with 1.2.3)

                          1.2.3
                          1. org.laidu.learn:common-amqp:jar:1.0-SNAPSHOT
                            \- ch.qos.logback:logback-classic:jar:1.2.3:compile

                          2. -
                          3. org.laidu.learn:crawler:jar:1.0-SNAPSHOT
                            \- ch.qos.logback:logback-classic:jar:1.2.3:compile

                          4. -
                          5. org.laidu.learn:spring-amqp:jar:1.0-SNAPSHOT
                            \- ch.qos.logback:logback-classic:jar:1.2.3:compile

                          6. -
                          7. org.laidu.learn:spring-boot:pom:1.0-SNAPSHOT
                            \- ch.qos.logback:logback-classic:jar:1.2.3:compile

                          8. -
                          9. org.laidu.learn:spring-cloud:pom:1.0-SNAPSHOT
                            \- ch.qos.logback:logback-classic:jar:1.2.3:compile

                          10. -
                          11. org.laidu.learn:spring-data:pom:1.0-SNAPSHOT
                            \- ch.qos.logback:logback-classic:jar:1.2.3:compile

                          12. -
                          13. org.laidu.learn:spring-hadoop:jar:1.0-SNAPSHOT
                            \- ch.qos.logback:logback-classic:jar:1.2.3:compile

                          14. -
                          15. org.laidu.learn:spring-mybatis:jar:1.0-SNAPSHOT
                            \- ch.qos.logback:logback-classic:jar:1.2.3:compile

                          16. -
                          17. org.laidu.learn:spring:pom:1.0-SNAPSHOT
                            \- ch.qos.logback:logback-classic:jar:1.2.3:compile

                          +
                        2. org.laidu.learn:crawler:jar:1.0-SNAPSHOT
                          \- ch.qos.logback:logback-classic:jar:1.2.3:compile

                        ch.qos.logback:logback-core

                        @@ -241,26 +155,12 @@

                        ch.qos.logback:logback-core

                        +
                      1. org.laidu.learn:crawler:jar:1.0-SNAPSHOT
                        +- org.laidu.learn:common-amqp:jar:1.0-SNAPSHOT:compile
                        |  \- (ch.qos.logback:logback-core:jar:1.1.11:compile - version managed from 1.2.3; omitted for conflict with 1.2.3)
                        +- org.laidu.learn:common-util:jar:1.0-SNAPSHOT:compile
                        |  \- (ch.qos.logback:logback-core:jar:1.1.11:compile - version managed from 1.2.3; omitted for duplicate)
                        +- ch.qos.logback:logback-classic:jar:1.2.3:compile
                        |  \- (ch.qos.logback:logback-core:jar:1.1.11:compile - version managed from 1.2.3; omitted for conflict with 1.2.3)
                        \- ch.qos.logback:logback-access:jar:1.2.3:compile
                           \- (ch.qos.logback:logback-core:jar:1.1.11:compile - version managed from 1.2.3; omitted for conflict with 1.2.3)

                      2. 1.1.11
                          -
                        1. org.laidu.learn:crawler:jar:1.0-SNAPSHOT
                          +- org.laidu.learn:common-amqp:jar:1.0-SNAPSHOT:compile
                          |  \- (ch.qos.logback:logback-core:jar:1.1.11:compile - version managed from 1.2.3; omitted for conflict with 1.2.3)
                          +- org.laidu.learn:common-util:jar:1.0-SNAPSHOT:compile
                          |  \- (ch.qos.logback:logback-core:jar:1.1.11:compile - version managed from 1.2.3; omitted for duplicate)
                          +- ch.qos.logback:logback-classic:jar:1.2.3:compile
                          |  \- (ch.qos.logback:logback-core:jar:1.1.11:compile - version managed from 1.2.3; omitted for conflict with 1.2.3)
                          \- ch.qos.logback:logback-access:jar:1.2.3:compile
                             \- (ch.qos.logback:logback-core:jar:1.1.11:compile - version managed from 1.2.3; omitted for conflict with 1.2.3)

                        2. -
                        3. org.laidu.learn:spring-amqp:jar:1.0-SNAPSHOT
                          +- org.laidu.learn:common-util:jar:1.0-SNAPSHOT:compile
                          |  \- (ch.qos.logback:logback-core:jar:1.1.11:compile - version managed from 1.2.3; omitted for conflict with 1.2.3)
                          +- ch.qos.logback:logback-classic:jar:1.2.3:compile
                          |  \- (ch.qos.logback:logback-core:jar:1.1.11:compile - version managed from 1.2.3; omitted for conflict with 1.2.3)
                          \- ch.qos.logback:logback-access:jar:1.2.3:compile
                             \- (ch.qos.logback:logback-core:jar:1.1.11:compile - version managed from 1.2.3; omitted for conflict with 1.2.3)

                        4. -
                        5. org.laidu.learn:spring-boot:pom:1.0-SNAPSHOT
                          +- org.laidu.learn:common-util:jar:1.0-SNAPSHOT:compile
                          |  \- (ch.qos.logback:logback-core:jar:1.1.11:compile - version managed from 1.2.3; omitted for conflict with 1.2.3)
                          +- ch.qos.logback:logback-classic:jar:1.2.3:compile
                          |  \- (ch.qos.logback:logback-core:jar:1.1.11:compile - version managed from 1.2.3; omitted for conflict with 1.2.3)
                          \- ch.qos.logback:logback-access:jar:1.2.3:compile
                             \- (ch.qos.logback:logback-core:jar:1.1.11:compile - version managed from 1.2.3; omitted for conflict with 1.2.3)

                        6. -
                        7. org.laidu.learn:spring-cloud:pom:1.0-SNAPSHOT
                          +- org.laidu.learn:common-util:jar:1.0-SNAPSHOT:compile
                          |  \- (ch.qos.logback:logback-core:jar:1.1.11:compile - version managed from 1.2.3; omitted for conflict with 1.2.3)
                          +- ch.qos.logback:logback-classic:jar:1.2.3:compile
                          |  \- (ch.qos.logback:logback-core:jar:1.1.11:compile - version managed from 1.2.3; omitted for conflict with 1.2.3)
                          \- ch.qos.logback:logback-access:jar:1.2.3:compile
                             \- (ch.qos.logback:logback-core:jar:1.1.11:compile - version managed from 1.2.3; omitted for conflict with 1.2.3)

                        8. -
                        9. org.laidu.learn:spring-data:pom:1.0-SNAPSHOT
                          +- org.laidu.learn:common-util:jar:1.0-SNAPSHOT:compile
                          |  \- (ch.qos.logback:logback-core:jar:1.1.11:compile - version managed from 1.2.3; omitted for conflict with 1.2.3)
                          +- ch.qos.logback:logback-classic:jar:1.2.3:compile
                          |  \- (ch.qos.logback:logback-core:jar:1.1.11:compile - version managed from 1.2.3; omitted for conflict with 1.2.3)
                          \- ch.qos.logback:logback-access:jar:1.2.3:compile
                             \- (ch.qos.logback:logback-core:jar:1.1.11:compile - version managed from 1.2.3; omitted for conflict with 1.2.3)

                        10. -
                        11. org.laidu.learn:spring-hadoop:jar:1.0-SNAPSHOT
                          +- org.laidu.learn:common-util:jar:1.0-SNAPSHOT:compile
                          |  \- (ch.qos.logback:logback-core:jar:1.1.11:compile - version managed from 1.2.3; omitted for conflict with 1.2.3)
                          +- ch.qos.logback:logback-classic:jar:1.2.3:compile
                          |  \- (ch.qos.logback:logback-core:jar:1.1.11:compile - version managed from 1.2.3; omitted for conflict with 1.2.3)
                          \- ch.qos.logback:logback-access:jar:1.2.3:compile
                             \- (ch.qos.logback:logback-core:jar:1.1.11:compile - version managed from 1.2.3; omitted for conflict with 1.2.3)

                        12. -
                        13. org.laidu.learn:spring-mybatis:jar:1.0-SNAPSHOT
                          +- org.laidu.learn:common-util:jar:1.0-SNAPSHOT:compile
                          |  \- (ch.qos.logback:logback-core:jar:1.1.11:compile - version managed from 1.2.3; omitted for conflict with 1.2.3)
                          +- ch.qos.logback:logback-classic:jar:1.2.3:compile
                          |  \- (ch.qos.logback:logback-core:jar:1.1.11:compile - version managed from 1.2.3; omitted for conflict with 1.2.3)
                          \- ch.qos.logback:logback-access:jar:1.2.3:compile
                             \- (ch.qos.logback:logback-core:jar:1.1.11:compile - version managed from 1.2.3; omitted for conflict with 1.2.3)

                        14. -
                        15. org.laidu.learn:spring:pom:1.0-SNAPSHOT
                          +- org.laidu.learn:common-util:jar:1.0-SNAPSHOT:compile
                          |  \- (ch.qos.logback:logback-core:jar:1.1.11:compile - version managed from 1.2.3; omitted for conflict with 1.2.3)
                          +- ch.qos.logback:logback-classic:jar:1.2.3:compile
                          |  \- (ch.qos.logback:logback-core:jar:1.1.11:compile - version managed from 1.2.3; omitted for conflict with 1.2.3)
                          \- ch.qos.logback:logback-access:jar:1.2.3:compile
                             \- (ch.qos.logback:logback-core:jar:1.1.11:compile - version managed from 1.2.3; omitted for conflict with 1.2.3)

                        1.2.3
                          -
                        1. org.laidu.learn:crawler:jar:1.0-SNAPSHOT
                          \- ch.qos.logback:logback-core:jar:1.2.3:compile

                        2. -
                        3. org.laidu.learn:spring-amqp:jar:1.0-SNAPSHOT
                          \- ch.qos.logback:logback-core:jar:1.2.3:compile

                        4. -
                        5. org.laidu.learn:spring-boot:pom:1.0-SNAPSHOT
                          \- ch.qos.logback:logback-core:jar:1.2.3:compile

                        6. -
                        7. org.laidu.learn:spring-cloud:pom:1.0-SNAPSHOT
                          \- ch.qos.logback:logback-core:jar:1.2.3:compile

                        8. -
                        9. org.laidu.learn:spring-data:pom:1.0-SNAPSHOT
                          \- ch.qos.logback:logback-core:jar:1.2.3:compile

                        10. -
                        11. org.laidu.learn:spring-hadoop:jar:1.0-SNAPSHOT
                          \- ch.qos.logback:logback-core:jar:1.2.3:compile

                        12. -
                        13. org.laidu.learn:spring-mybatis:jar:1.0-SNAPSHOT
                          \- ch.qos.logback:logback-core:jar:1.2.3:compile

                        14. -
                        15. org.laidu.learn:spring:pom:1.0-SNAPSHOT
                          \- ch.qos.logback:logback-core:jar:1.2.3:compile

                      +
                    1. org.laidu.learn:crawler:jar:1.0-SNAPSHOT
                      \- ch.qos.logback:logback-core:jar:1.2.3:compile

                    com.alibaba:fastjson

                    @@ -308,6 +208,7 @@

                    com.fasterxml.j
                    1. org.laidu.crawler:crawler-helper:jar:1.0-SNAPSHOT
                      \- org.laidu.learn:common-util:jar:1.0-SNAPSHOT:compile
                         \- com.fasterxml.jackson.core:jackson-databind:jar:2.9.1:compile
                            \- (com.fasterxml.jackson.core:jackson-annotations:jar:2.9.0:compile - omitted for conflict with 2.9.1)

                    2. org.laidu.learn:algorithm:jar:1.0-SNAPSHOT
                      \- org.laidu.learn:common-util:jar:1.0-SNAPSHOT:compile
                         \- com.fasterxml.jackson.core:jackson-databind:jar:2.9.1:compile
                            \- (com.fasterxml.jackson.core:jackson-annotations:jar:2.9.0:compile - omitted for conflict with 2.9.1)

                    3. +
                    4. org.laidu.learn:apache-poi:jar:1.0-SNAPSHOT
                      \- org.laidu.learn:common-util:jar:1.0-SNAPSHOT:compile
                         \- com.fasterxml.jackson.core:jackson-databind:jar:2.9.1:compile
                            \- (com.fasterxml.jackson.core:jackson-annotations:jar:2.9.0:compile - omitted for conflict with 2.9.1)

                    5. org.laidu.learn:async-http-client:jar:1.0-SNAPSHOT
                      \- org.laidu.learn:common-util:jar:1.0-SNAPSHOT:compile
                         \- com.fasterxml.jackson.core:jackson-databind:jar:2.9.1:compile
                            \- (com.fasterxml.jackson.core:jackson-annotations:jar:2.9.0:compile - omitted for conflict with 2.9.1)

                    6. org.laidu.learn:aws:pom:1.0-SNAPSHOT
                      \- org.laidu.learn:common-util:jar:1.0-SNAPSHOT:compile
                         \- com.fasterxml.jackson.core:jackson-databind:jar:2.9.1:compile
                            \- (com.fasterxml.jackson.core:jackson-annotations:jar:2.9.0:compile - omitted for conflict with 2.9.1)

                    7. org.laidu.learn:common-util:jar:1.0-SNAPSHOT
                      \- com.fasterxml.jackson.core:jackson-databind:jar:2.9.1:compile
                         \- (com.fasterxml.jackson.core:jackson-annotations:jar:2.9.0:compile - omitted for conflict with 2.9.1)

                    8. @@ -316,8 +217,10 @@

                      com.fasterxml.j
                    9. org.laidu.learn:commons-lang3:jar:1.0-SNAPSHOT
                      \- org.laidu.learn:common-util:jar:1.0-SNAPSHOT:compile
                         \- com.fasterxml.jackson.core:jackson-databind:jar:2.9.1:compile
                            \- (com.fasterxml.jackson.core:jackson-annotations:jar:2.9.0:compile - omitted for conflict with 2.9.1)

                    10. org.laidu.learn:commons-net:jar:1.0-SNAPSHOT
                      \- org.laidu.learn:common-util:jar:1.0-SNAPSHOT:compile
                         \- com.fasterxml.jackson.core:jackson-databind:jar:2.9.1:compile
                            \- (com.fasterxml.jackson.core:jackson-annotations:jar:2.9.0:compile - omitted for conflict with 2.9.1)

                    11. org.laidu.learn:commons-text:jar:1.0-SNAPSHOT
                      \- org.laidu.learn:common-util:jar:1.0-SNAPSHOT:compile
                         \- com.fasterxml.jackson.core:jackson-databind:jar:2.9.1:compile
                            \- (com.fasterxml.jackson.core:jackson-annotations:jar:2.9.0:compile - omitted for conflict with 2.9.1)

                    12. +
                    13. org.laidu.learn:compress:pom:1.0-SNAPSHOT
                      \- org.laidu.learn:common-util:jar:1.0-SNAPSHOT:compile
                         \- com.fasterxml.jackson.core:jackson-databind:jar:2.9.1:compile
                            \- (com.fasterxml.jackson.core:jackson-annotations:jar:2.9.0:compile - omitted for conflict with 2.9.1)

                    14. org.laidu.learn:drools:jar:1.0-SNAPSHOT
                      \- org.laidu.learn:common-util:jar:1.0-SNAPSHOT:compile
                         \- com.fasterxml.jackson.core:jackson-databind:jar:2.9.1:compile
                            \- (com.fasterxml.jackson.core:jackson-annotations:jar:2.9.0:compile - omitted for conflict with 2.9.1)

                    15. org.laidu.learn:dynamoDB:jar:1.0-SNAPSHOT
                      \- org.laidu.learn:common-util:jar:1.0-SNAPSHOT:compile
                         \- com.fasterxml.jackson.core:jackson-databind:jar:2.9.1:compile
                            \- (com.fasterxml.jackson.core:jackson-annotations:jar:2.9.0:compile - omitted for conflict with 2.9.1)

                    16. +
                    17. org.laidu.learn:elastic-job:jar:1.0-SNAPSHOT
                      +- org.laidu.learn:spring-boot-app:jar:0.0.1-SNAPSHOT:compile
                      |  \- org.springframework.boot:spring-boot-starter-web:jar:2.0.1.RELEASE:compile
                      |     \- org.springframework.boot:spring-boot-starter-json:jar:2.0.1.RELEASE:compile
                      |        \- com.fasterxml.jackson.datatype:jackson-datatype-jsr310:jar:2.9.5:compile
                      |           \- (com.fasterxml.jackson.core:jackson-annotations:jar:2.9.0:compile - omitted for duplicate)
                      \- org.laidu.learn:common-util:jar:1.0-SNAPSHOT:compile
                         \- com.fasterxml.jackson.core:jackson-databind:jar:2.9.1:compile
                            \- (com.fasterxml.jackson.core:jackson-annotations:jar:2.9.0:compile - omitted for conflict with 2.9.1)

                    18. org.laidu.learn:framework:pom:1.0-SNAPSHOT
                      \- org.laidu.learn:common-util:jar:1.0-SNAPSHOT:compile
                         \- com.fasterxml.jackson.core:jackson-databind:jar:2.9.1:compile
                            \- (com.fasterxml.jackson.core:jackson-annotations:jar:2.9.0:compile - omitted for conflict with 2.9.1)

                    19. org.laidu.learn:httpclient:jar:1.0-SNAPSHOT
                      \- org.laidu.learn:common-util:jar:1.0-SNAPSHOT:compile
                         \- com.fasterxml.jackson.core:jackson-databind:jar:2.9.1:compile
                            \- (com.fasterxml.jackson.core:jackson-annotations:jar:2.9.0:compile - omitted for conflict with 2.9.1)

                    20. org.laidu.learn:junit5:jar:1.0-SNAPSHOT
                      \- org.laidu.learn:common-util:jar:1.0-SNAPSHOT:compile
                         \- com.fasterxml.jackson.core:jackson-databind:jar:2.9.1:compile
                            \- (com.fasterxml.jackson.core:jackson-annotations:jar:2.9.0:compile - omitted for conflict with 2.9.1)

                    21. @@ -325,7 +228,10 @@

                      com.fasterxml.j
                    22. org.laidu.learn:netty:jar:1.0-SNAPSHOT
                      \- org.laidu.learn:common-util:jar:1.0-SNAPSHOT:compile
                         \- com.fasterxml.jackson.core:jackson-databind:jar:2.9.1:compile
                            \- (com.fasterxml.jackson.core:jackson-annotations:jar:2.9.0:compile - omitted for conflict with 2.9.1)

                    23. org.laidu.learn:network:pom:1.0-SNAPSHOT
                      \- org.laidu.learn:common-util:jar:1.0-SNAPSHOT:compile
                         \- com.fasterxml.jackson.core:jackson-databind:jar:2.9.1:compile
                            \- (com.fasterxml.jackson.core:jackson-annotations:jar:2.9.0:compile - omitted for conflict with 2.9.1)

                    24. org.laidu.learn:rules-engine:pom:1.0-SNAPSHOT
                      \- org.laidu.learn:common-util:jar:1.0-SNAPSHOT:compile
                         \- com.fasterxml.jackson.core:jackson-databind:jar:2.9.1:compile
                            \- (com.fasterxml.jackson.core:jackson-annotations:jar:2.9.0:compile - omitted for conflict with 2.9.1)

                    25. +
                    26. org.laidu.learn:shiro:jar:1.0-SNAPSHOT
                      \- org.laidu.learn:common-util:jar:1.0-SNAPSHOT:compile
                         \- com.fasterxml.jackson.core:jackson-databind:jar:2.9.1:compile
                            \- (com.fasterxml.jackson.core:jackson-annotations:jar:2.9.0:compile - omitted for conflict with 2.9.1)

                    27. +
                    28. org.laidu.learn:task-scheduler:pom:1.0-SNAPSHOT
                      \- org.laidu.learn:common-util:jar:1.0-SNAPSHOT:compile
                         \- com.fasterxml.jackson.core:jackson-databind:jar:2.9.1:compile
                            \- (com.fasterxml.jackson.core:jackson-annotations:jar:2.9.0:compile - omitted for conflict with 2.9.1)

                    29. org.laidu.learn:test:pom:1.0-SNAPSHOT
                      \- org.laidu.learn:common-util:jar:1.0-SNAPSHOT:compile
                         \- com.fasterxml.jackson.core:jackson-databind:jar:2.9.1:compile
                            \- (com.fasterxml.jackson.core:jackson-annotations:jar:2.9.0:compile - omitted for conflict with 2.9.1)

                    30. +
                    31. org.laidu.learn:thumbnailator-google:jar:1.0-SNAPSHOT
                      \- org.laidu.learn:common-util:jar:1.0-SNAPSHOT:compile
                         \- com.fasterxml.jackson.core:jackson-databind:jar:2.9.1:compile
                            \- (com.fasterxml.jackson.core:jackson-annotations:jar:2.9.0:compile - omitted for conflict with 2.9.1)

                    32. org.laidu.learn:web:pom:1.0-SNAPSHOT
                      \- org.laidu.learn:common-util:jar:1.0-SNAPSHOT:compile
                         \- com.fasterxml.jackson.core:jackson-databind:jar:2.9.1:compile
                            \- (com.fasterxml.jackson.core:jackson-annotations:jar:2.9.0:compile - omitted for conflict with 2.9.1)

                    33. org.laidu.learn:webmagic-learn:jar:1.0-SNAPSHOT
                      \- org.laidu.learn:common-util:jar:1.0-SNAPSHOT:compile
                         \- com.fasterxml.jackson.core:jackson-databind:jar:2.9.1:compile
                            \- (com.fasterxml.jackson.core:jackson-annotations:jar:2.9.0:compile - omitted for conflict with 2.9.1)

                    34. org.laidu.learn:webmagic:pom:1.0-SNAPSHOT
                      \- org.laidu.learn:common-util:jar:1.0-SNAPSHOT:compile
                         \- com.fasterxml.jackson.core:jackson-databind:jar:2.9.1:compile
                            \- (com.fasterxml.jackson.core:jackson-annotations:jar:2.9.0:compile - omitted for conflict with 2.9.1)

                    @@ -335,6 +241,7 @@

                    com.fasterxml.j
                    1. org.laidu.crawler:crawler-helper:jar:1.0-SNAPSHOT
                      \- org.laidu.learn:common-util:jar:1.0-SNAPSHOT:compile
                         \- com.fasterxml.jackson.core:jackson-annotations:jar:2.9.1:compile

                    2. org.laidu.learn:algorithm:jar:1.0-SNAPSHOT
                      \- org.laidu.learn:common-util:jar:1.0-SNAPSHOT:compile
                         \- com.fasterxml.jackson.core:jackson-annotations:jar:2.9.1:compile

                    3. +
                    4. org.laidu.learn:apache-poi:jar:1.0-SNAPSHOT
                      \- org.laidu.learn:common-util:jar:1.0-SNAPSHOT:compile
                         \- com.fasterxml.jackson.core:jackson-annotations:jar:2.9.1:compile

                    5. org.laidu.learn:async-http-client:jar:1.0-SNAPSHOT
                      \- org.laidu.learn:common-util:jar:1.0-SNAPSHOT:compile
                         \- com.fasterxml.jackson.core:jackson-annotations:jar:2.9.1:compile

                    6. org.laidu.learn:aws:pom:1.0-SNAPSHOT
                      \- org.laidu.learn:common-util:jar:1.0-SNAPSHOT:compile
                         \- com.fasterxml.jackson.core:jackson-annotations:jar:2.9.1:compile

                    7. org.laidu.learn:common-util:jar:1.0-SNAPSHOT
                      \- com.fasterxml.jackson.core:jackson-annotations:jar:2.9.1:compile

                    8. @@ -343,8 +250,10 @@

                      com.fasterxml.j
                    9. org.laidu.learn:commons-lang3:jar:1.0-SNAPSHOT
                      \- org.laidu.learn:common-util:jar:1.0-SNAPSHOT:compile
                         \- com.fasterxml.jackson.core:jackson-annotations:jar:2.9.1:compile

                    10. org.laidu.learn:commons-net:jar:1.0-SNAPSHOT
                      \- org.laidu.learn:common-util:jar:1.0-SNAPSHOT:compile
                         \- com.fasterxml.jackson.core:jackson-annotations:jar:2.9.1:compile

                    11. org.laidu.learn:commons-text:jar:1.0-SNAPSHOT
                      \- org.laidu.learn:common-util:jar:1.0-SNAPSHOT:compile
                         \- com.fasterxml.jackson.core:jackson-annotations:jar:2.9.1:compile

                    12. +
                    13. org.laidu.learn:compress:pom:1.0-SNAPSHOT
                      \- org.laidu.learn:common-util:jar:1.0-SNAPSHOT:compile
                         \- com.fasterxml.jackson.core:jackson-annotations:jar:2.9.1:compile

                    14. org.laidu.learn:drools:jar:1.0-SNAPSHOT
                      \- org.laidu.learn:common-util:jar:1.0-SNAPSHOT:compile
                         \- com.fasterxml.jackson.core:jackson-annotations:jar:2.9.1:compile

                    15. org.laidu.learn:dynamoDB:jar:1.0-SNAPSHOT
                      \- org.laidu.learn:common-util:jar:1.0-SNAPSHOT:compile
                         \- com.fasterxml.jackson.core:jackson-annotations:jar:2.9.1:compile

                    16. +
                    17. org.laidu.learn:elastic-job:jar:1.0-SNAPSHOT
                      \- org.laidu.learn:common-util:jar:1.0-SNAPSHOT:compile
                         \- com.fasterxml.jackson.core:jackson-annotations:jar:2.9.1:compile

                    18. org.laidu.learn:framework:pom:1.0-SNAPSHOT
                      \- org.laidu.learn:common-util:jar:1.0-SNAPSHOT:compile
                         \- com.fasterxml.jackson.core:jackson-annotations:jar:2.9.1:compile

                    19. org.laidu.learn:httpclient:jar:1.0-SNAPSHOT
                      \- org.laidu.learn:common-util:jar:1.0-SNAPSHOT:compile
                         \- com.fasterxml.jackson.core:jackson-annotations:jar:2.9.1:compile

                    20. org.laidu.learn:junit5:jar:1.0-SNAPSHOT
                      \- org.laidu.learn:common-util:jar:1.0-SNAPSHOT:compile
                         \- com.fasterxml.jackson.core:jackson-annotations:jar:2.9.1:compile

                    21. @@ -353,7 +262,10 @@

                      com.fasterxml.j
                    22. org.laidu.learn:network:pom:1.0-SNAPSHOT
                      \- org.laidu.learn:common-util:jar:1.0-SNAPSHOT:compile
                         \- com.fasterxml.jackson.core:jackson-annotations:jar:2.9.1:compile

                    23. org.laidu.learn:play:jar:1.0-SNAPSHOT
                      \- org.laidu.learn:common-util:jar:1.0-SNAPSHOT:compile
                         \- (com.fasterxml.jackson.core:jackson-annotations:jar:2.9.1:compile - omitted for conflict with 2.8.10)

                    24. org.laidu.learn:rules-engine:pom:1.0-SNAPSHOT
                      \- org.laidu.learn:common-util:jar:1.0-SNAPSHOT:compile
                         \- com.fasterxml.jackson.core:jackson-annotations:jar:2.9.1:compile

                    25. +
                    26. org.laidu.learn:shiro:jar:1.0-SNAPSHOT
                      \- org.laidu.learn:common-util:jar:1.0-SNAPSHOT:compile
                         \- com.fasterxml.jackson.core:jackson-annotations:jar:2.9.1:compile

                    27. +
                    28. org.laidu.learn:task-scheduler:pom:1.0-SNAPSHOT
                      \- org.laidu.learn:common-util:jar:1.0-SNAPSHOT:compile
                         \- com.fasterxml.jackson.core:jackson-annotations:jar:2.9.1:compile

                    29. org.laidu.learn:test:pom:1.0-SNAPSHOT
                      \- org.laidu.learn:common-util:jar:1.0-SNAPSHOT:compile
                         \- com.fasterxml.jackson.core:jackson-annotations:jar:2.9.1:compile

                    30. +
                    31. org.laidu.learn:thumbnailator-google:jar:1.0-SNAPSHOT
                      \- org.laidu.learn:common-util:jar:1.0-SNAPSHOT:compile
                         \- com.fasterxml.jackson.core:jackson-annotations:jar:2.9.1:compile

                    32. org.laidu.learn:web:pom:1.0-SNAPSHOT
                      \- org.laidu.learn:common-util:jar:1.0-SNAPSHOT:compile
                         \- com.fasterxml.jackson.core:jackson-annotations:jar:2.9.1:compile

                    33. org.laidu.learn:webmagic-learn:jar:1.0-SNAPSHOT
                      \- org.laidu.learn:common-util:jar:1.0-SNAPSHOT:compile
                         \- com.fasterxml.jackson.core:jackson-annotations:jar:2.9.1:compile

                    34. org.laidu.learn:webmagic:pom:1.0-SNAPSHOT
                      \- org.laidu.learn:common-util:jar:1.0-SNAPSHOT:compile
                         \- com.fasterxml.jackson.core:jackson-annotations:jar:2.9.1:compile

                    @@ -380,6 +292,7 @@

                    com.fasterxml.jackson.
                    1. org.laidu.crawler:crawler-helper:jar:1.0-SNAPSHOT
                      \- org.laidu.learn:common-util:jar:1.0-SNAPSHOT:compile
                         \- de.ruedigermoeller:fst:jar:2.57:compile
                            \- (com.fasterxml.jackson.core:jackson-core:jar:2.8.8:compile - omitted for conflict with 2.9.1)

                    2. org.laidu.learn:algorithm:jar:1.0-SNAPSHOT
                      \- org.laidu.learn:common-util:jar:1.0-SNAPSHOT:compile
                         \- de.ruedigermoeller:fst:jar:2.57:compile
                            \- (com.fasterxml.jackson.core:jackson-core:jar:2.8.8:compile - omitted for conflict with 2.9.1)

                    3. +
                    4. org.laidu.learn:apache-poi:jar:1.0-SNAPSHOT
                      \- org.laidu.learn:common-util:jar:1.0-SNAPSHOT:compile
                         \- de.ruedigermoeller:fst:jar:2.57:compile
                            \- (com.fasterxml.jackson.core:jackson-core:jar:2.8.8:compile - omitted for conflict with 2.9.1)

                    5. org.laidu.learn:async-http-client:jar:1.0-SNAPSHOT
                      \- org.laidu.learn:common-util:jar:1.0-SNAPSHOT:compile
                         \- de.ruedigermoeller:fst:jar:2.57:compile
                            \- (com.fasterxml.jackson.core:jackson-core:jar:2.8.8:compile - omitted for conflict with 2.9.1)

                    6. org.laidu.learn:aws:pom:1.0-SNAPSHOT
                      \- org.laidu.learn:common-util:jar:1.0-SNAPSHOT:compile
                         \- de.ruedigermoeller:fst:jar:2.57:compile
                            \- (com.fasterxml.jackson.core:jackson-core:jar:2.8.8:compile - omitted for conflict with 2.9.1)

                    7. org.laidu.learn:common-util:jar:1.0-SNAPSHOT
                      \- de.ruedigermoeller:fst:jar:2.57:compile
                         \- (com.fasterxml.jackson.core:jackson-core:jar:2.8.8:compile - omitted for conflict with 2.9.1)

                    8. @@ -388,8 +301,10 @@

                      com.fasterxml.jackson.
                    9. org.laidu.learn:commons-lang3:jar:1.0-SNAPSHOT
                      \- org.laidu.learn:common-util:jar:1.0-SNAPSHOT:compile
                         \- de.ruedigermoeller:fst:jar:2.57:compile
                            \- (com.fasterxml.jackson.core:jackson-core:jar:2.8.8:compile - omitted for conflict with 2.9.1)

                    10. org.laidu.learn:commons-net:jar:1.0-SNAPSHOT
                      \- org.laidu.learn:common-util:jar:1.0-SNAPSHOT:compile
                         \- de.ruedigermoeller:fst:jar:2.57:compile
                            \- (com.fasterxml.jackson.core:jackson-core:jar:2.8.8:compile - omitted for conflict with 2.9.1)

                    11. org.laidu.learn:commons-text:jar:1.0-SNAPSHOT
                      \- org.laidu.learn:common-util:jar:1.0-SNAPSHOT:compile
                         \- de.ruedigermoeller:fst:jar:2.57:compile
                            \- (com.fasterxml.jackson.core:jackson-core:jar:2.8.8:compile - omitted for conflict with 2.9.1)

                    12. +
                    13. org.laidu.learn:compress:pom:1.0-SNAPSHOT
                      \- org.laidu.learn:common-util:jar:1.0-SNAPSHOT:compile
                         \- de.ruedigermoeller:fst:jar:2.57:compile
                            \- (com.fasterxml.jackson.core:jackson-core:jar:2.8.8:compile - omitted for conflict with 2.9.1)

                    14. org.laidu.learn:drools:jar:1.0-SNAPSHOT
                      \- org.laidu.learn:common-util:jar:1.0-SNAPSHOT:compile
                         \- de.ruedigermoeller:fst:jar:2.57:compile
                            \- (com.fasterxml.jackson.core:jackson-core:jar:2.8.8:compile - omitted for conflict with 2.9.1)

                    15. org.laidu.learn:dynamoDB:jar:1.0-SNAPSHOT
                      \- org.laidu.learn:common-util:jar:1.0-SNAPSHOT:compile
                         \- de.ruedigermoeller:fst:jar:2.57:compile
                            \- (com.fasterxml.jackson.core:jackson-core:jar:2.8.8:compile - omitted for conflict with 2.9.1)

                    16. +
                    17. org.laidu.learn:elastic-job:jar:1.0-SNAPSHOT
                      \- org.laidu.learn:common-util:jar:1.0-SNAPSHOT:compile
                         \- de.ruedigermoeller:fst:jar:2.57:compile
                            \- (com.fasterxml.jackson.core:jackson-core:jar:2.8.8:compile - omitted for conflict with 2.9.1)

                    18. org.laidu.learn:framework:pom:1.0-SNAPSHOT
                      \- org.laidu.learn:common-util:jar:1.0-SNAPSHOT:compile
                         \- de.ruedigermoeller:fst:jar:2.57:compile
                            \- (com.fasterxml.jackson.core:jackson-core:jar:2.8.8:compile - omitted for conflict with 2.9.1)

                    19. org.laidu.learn:httpclient:jar:1.0-SNAPSHOT
                      \- org.laidu.learn:common-util:jar:1.0-SNAPSHOT:compile
                         \- de.ruedigermoeller:fst:jar:2.57:compile
                            \- (com.fasterxml.jackson.core:jackson-core:jar:2.8.8:compile - omitted for conflict with 2.9.1)

                    20. org.laidu.learn:junit5:jar:1.0-SNAPSHOT
                      \- org.laidu.learn:common-util:jar:1.0-SNAPSHOT:compile
                         \- de.ruedigermoeller:fst:jar:2.57:compile
                            \- (com.fasterxml.jackson.core:jackson-core:jar:2.8.8:compile - omitted for conflict with 2.9.1)

                    21. @@ -398,7 +313,10 @@

                      com.fasterxml.jackson.
                    22. org.laidu.learn:network:pom:1.0-SNAPSHOT
                      \- org.laidu.learn:common-util:jar:1.0-SNAPSHOT:compile
                         \- de.ruedigermoeller:fst:jar:2.57:compile
                            \- (com.fasterxml.jackson.core:jackson-core:jar:2.8.8:compile - omitted for conflict with 2.9.1)

                    23. org.laidu.learn:play:jar:1.0-SNAPSHOT
                      \- org.laidu.learn:common-util:jar:1.0-SNAPSHOT:compile
                         \- de.ruedigermoeller:fst:jar:2.57:compile
                            \- (com.fasterxml.jackson.core:jackson-core:jar:2.8.8:compile - omitted for conflict with 2.8.10)

                    24. org.laidu.learn:rules-engine:pom:1.0-SNAPSHOT
                      \- org.laidu.learn:common-util:jar:1.0-SNAPSHOT:compile
                         \- de.ruedigermoeller:fst:jar:2.57:compile
                            \- (com.fasterxml.jackson.core:jackson-core:jar:2.8.8:compile - omitted for conflict with 2.9.1)

                    25. +
                    26. org.laidu.learn:shiro:jar:1.0-SNAPSHOT
                      \- org.laidu.learn:common-util:jar:1.0-SNAPSHOT:compile
                         \- de.ruedigermoeller:fst:jar:2.57:compile
                            \- (com.fasterxml.jackson.core:jackson-core:jar:2.8.8:compile - omitted for conflict with 2.9.1)

                    27. +
                    28. org.laidu.learn:task-scheduler:pom:1.0-SNAPSHOT
                      \- org.laidu.learn:common-util:jar:1.0-SNAPSHOT:compile
                         \- de.ruedigermoeller:fst:jar:2.57:compile
                            \- (com.fasterxml.jackson.core:jackson-core:jar:2.8.8:compile - omitted for conflict with 2.9.1)

                    29. org.laidu.learn:test:pom:1.0-SNAPSHOT
                      \- org.laidu.learn:common-util:jar:1.0-SNAPSHOT:compile
                         \- de.ruedigermoeller:fst:jar:2.57:compile
                            \- (com.fasterxml.jackson.core:jackson-core:jar:2.8.8:compile - omitted for conflict with 2.9.1)

                    30. +
                    31. org.laidu.learn:thumbnailator-google:jar:1.0-SNAPSHOT
                      \- org.laidu.learn:common-util:jar:1.0-SNAPSHOT:compile
                         \- de.ruedigermoeller:fst:jar:2.57:compile
                            \- (com.fasterxml.jackson.core:jackson-core:jar:2.8.8:compile - omitted for conflict with 2.9.1)

                    32. org.laidu.learn:web:pom:1.0-SNAPSHOT
                      \- org.laidu.learn:common-util:jar:1.0-SNAPSHOT:compile
                         \- de.ruedigermoeller:fst:jar:2.57:compile
                            \- (com.fasterxml.jackson.core:jackson-core:jar:2.8.8:compile - omitted for conflict with 2.9.1)

                    33. org.laidu.learn:webmagic-learn:jar:1.0-SNAPSHOT
                      \- org.laidu.learn:common-util:jar:1.0-SNAPSHOT:compile
                         \- de.ruedigermoeller:fst:jar:2.57:compile
                            \- (com.fasterxml.jackson.core:jackson-core:jar:2.8.8:compile - omitted for conflict with 2.9.1)

                    34. org.laidu.learn:webmagic:pom:1.0-SNAPSHOT
                      \- org.laidu.learn:common-util:jar:1.0-SNAPSHOT:compile
                         \- de.ruedigermoeller:fst:jar:2.57:compile
                            \- (com.fasterxml.jackson.core:jackson-core:jar:2.8.8:compile - omitted for conflict with 2.9.1)

                  +
                1. org.laidu.learn:webmagic:pom:1.0-SNAPSHOT
                  \- org.laidu.learn:common-util:jar:1.0-SNAPSHOT:compile
                     +- com.fasterxml.jackson.core:jackson-core:jar:2.9.1:compile
                     \- com.fasterxml.jackson.core:jackson-databind:jar:2.9.1:compile
                        \- (com.fasterxml.jackson.core:jackson-core:jar:2.9.1:compile - omitted for duplicate)

                2.9.4 +
                  +
                1. org.laidu.learn:elastic-job:jar:1.0-SNAPSHOT
                  \- org.laidu.learn:spring-boot-app:jar:0.0.1-SNAPSHOT:compile
                     \- io.micrometer:micrometer-registry-atlas:jar:1.0.3:compile
                        \- com.netflix.spectator:spectator-reg-atlas:jar:0.63.0:compile
                           +- (com.fasterxml.jackson.core:jackson-core:jar:2.9.4:compile - omitted for conflict with 2.9.1)
                           \- com.fasterxml.jackson.dataformat:jackson-dataformat-smile:jar:2.9.4:compile
                              \- (com.fasterxml.jackson.core:jackson-core:jar:2.9.4:compile - omitted for duplicate)

                2.9.5 +
                  +
                1. org.laidu.learn:elastic-job:jar:1.0-SNAPSHOT
                  \- org.laidu.learn:spring-boot-app:jar:0.0.1-SNAPSHOT:compile
                     \- org.springframework.boot:spring-boot-starter-web:jar:2.0.1.RELEASE:compile
                        \- org.springframework.boot:spring-boot-starter-json:jar:2.0.1.RELEASE:compile
                           +- com.fasterxml.jackson.datatype:jackson-datatype-jdk8:jar:2.9.5:compile
                           |  \- (com.fasterxml.jackson.core:jackson-core:jar:2.9.5:compile - omitted for conflict with 2.9.4)
                           +- com.fasterxml.jackson.datatype:jackson-datatype-jsr310:jar:2.9.5:compile
                           |  \- (com.fasterxml.jackson.core:jackson-core:jar:2.9.5:compile - omitted for conflict with 2.9.4)
                           \- com.fasterxml.jackson.module:jackson-module-parameter-names:jar:2.9.5:compile
                              \- (com.fasterxml.jackson.core:jackson-core:jar:2.9.5:compile - omitted for conflict with 2.9.4)

                com.fasterxml.jackson.core:jackson-databind

                @@ -467,7 +401,18 @@

                com.fasterxml.jack

                1. org.laidu.learn:dynamoDB:jar:1.0-SNAPSHOT
                  \- org.laidu.learn:common-util:jar:1.0-SNAPSHOT:compile
                     \- com.fasterxml.jackson.core:jackson-databind:jar:2.9.1:compile

                2. -
                3. org.laidu.learn:play:jar:1.0-SNAPSHOT
                  \- org.laidu.learn:common-util:jar:1.0-SNAPSHOT:compile
                     \- (com.fasterxml.jackson.core:jackson-databind:jar:2.9.1:compile - omitted for conflict with 2.8.10)

              +
            1. org.laidu.learn:elastic-job:jar:1.0-SNAPSHOT
              \- org.laidu.learn:common-util:jar:1.0-SNAPSHOT:compile
                 \- com.fasterxml.jackson.core:jackson-databind:jar:2.9.1:compile

            2. +
            3. org.laidu.learn:play:jar:1.0-SNAPSHOT
              \- org.laidu.learn:common-util:jar:1.0-SNAPSHOT:compile
                 \- (com.fasterxml.jackson.core:jackson-databind:jar:2.9.1:compile - omitted for conflict with 2.8.10)

            4. 2.9.4 +
                +
              1. org.laidu.learn:elastic-job:jar:1.0-SNAPSHOT
                \- org.laidu.learn:spring-boot-app:jar:0.0.1-SNAPSHOT:compile
                   \- io.micrometer:micrometer-registry-atlas:jar:1.0.3:compile
                      \- com.netflix.spectator:spectator-reg-atlas:jar:0.63.0:compile
                         \- (com.fasterxml.jackson.core:jackson-databind:jar:2.9.4:compile - omitted for conflict with 2.9.5)

              2.9.5 +
                +
              1. org.laidu.learn:elastic-job:jar:1.0-SNAPSHOT
                \- org.laidu.learn:spring-boot-app:jar:0.0.1-SNAPSHOT:compile
                   +- org.springframework.boot:spring-boot-starter-actuator:jar:2.0.1.RELEASE:compile
                   |  \- org.springframework.boot:spring-boot-actuator-autoconfigure:jar:2.0.1.RELEASE:compile
                   |     \- (com.fasterxml.jackson.core:jackson-databind:jar:2.9.5:compile - omitted for conflict with 2.9.1)
                   \- org.springframework.boot:spring-boot-starter-web:jar:2.0.1.RELEASE:compile
                      \- org.springframework.boot:spring-boot-starter-json:jar:2.0.1.RELEASE:compile
                         +- (com.fasterxml.jackson.core:jackson-databind:jar:2.9.5:compile - omitted for duplicate)
                         +- com.fasterxml.jackson.datatype:jackson-datatype-jdk8:jar:2.9.5:compile
                         |  \- (com.fasterxml.jackson.core:jackson-databind:jar:2.9.5:compile - omitted for duplicate)
                         +- com.fasterxml.jackson.datatype:jackson-datatype-jsr310:jar:2.9.5:compile
                         |  \- (com.fasterxml.jackson.core:jackson-databind:jar:2.9.5:compile - omitted for duplicate)
                         \- com.fasterxml.jackson.module:jackson-module-parameter-names:jar:2.9.5:compile
                            \- (com.fasterxml.jackson.core:jackson-databind:jar:2.9.5:compile - omitted for duplicate)

            com.fasterxml.jackson.datatype:jackson-datatype-jdk8

            @@ -520,56 +465,75 @@

            com.google.code.findbugs:jsr30
            1. org.laidu.learn:hadoop:jar:1.0-SNAPSHOT
              \- org.apache.hadoop:hadoop-common:jar:2.8.1:compile
                 \- com.google.code.findbugs:jsr305:jar:3.0.0:compile

            -

            com.google.guava:guava

            +

            com.google.code.gson:gson

            [Error] + + + + +
            2.6.1 +
              +
            1. org.laidu.learn:elastic-job:jar:1.0-SNAPSHOT
              \- com.dangdang:elastic-job-lite-core:jar:2.1.5:compile
                 \- com.dangdang:elastic-job-common-core:jar:2.1.5:compile
                    \- (com.google.code.gson:gson:jar:2.6.1:compile - omitted for conflict with RELEASE)

            RELEASE +
              +
            1. org.laidu.learn:elastic-job:jar:1.0-SNAPSHOT
              \- org.laidu.learn:common-util:jar:1.0-SNAPSHOT:compile
                 \- com.google.code.gson:gson:jar:RELEASE:compile

            +
            +

            com.google.guava:guava

            + + + +
            [Error] + + - + - + - +
          1. org.laidu.learn.swagger:swagger:jar:0.0.1-SNAPSHOT
            \- io.springfox:springfox-swagger2:jar:2.7.0:compile
               +- io.springfox:springfox-spi:jar:2.7.0:compile
               |  \- io.springfox:springfox-core:jar:2.7.0:compile
               |     \- (com.google.guava:guava:jar:18.0:compile - omitted for conflict with 25.0-jre)
               +- io.springfox:springfox-swagger-common:jar:2.7.0:compile
               |  \- (com.google.guava:guava:jar:18.0:compile - omitted for conflict with 25.0-jre)
               +- io.springfox:springfox-spring-web:jar:2.7.0:compile
               |  \- (com.google.guava:guava:jar:18.0:compile - omitted for conflict with 25.0-jre)
               \- (com.google.guava:guava:jar:18.0:compile - omitted for conflict with 25.0-jre)

          2. +
          3. org.laidu.learn:elastic-job:jar:1.0-SNAPSHOT
            \- com.dangdang:elastic-job-lite-core:jar:2.1.5:compile
               \- com.dangdang:elastic-job-common-core:jar:2.1.5:compile
                  \- (com.google.guava:guava:jar:18.0:compile - omitted for conflict with 25.0-jre)

          4. + - +
          5. org.laidu.learn.swagger:swagger:jar:0.0.1-SNAPSHOT
            \- io.springfox:springfox-swagger2:jar:2.7.0:compile
               \- io.springfox:springfox-spring-web:jar:2.7.0:compile
                  \- org.reflections:reflections:jar:0.9.11:compile
                     \- (com.google.guava:guava:jar:20.0:compile - omitted for conflict with 25.0-jre)

          6. + - - + +
            11.0.2
            1. org.laidu.learn:hadoop:jar:1.0-SNAPSHOT
              +- org.apache.hadoop:hadoop-common:jar:2.8.1:compile
              |  \- com.google.guava:guava:jar:11.0.2:compile
              +- org.apache.hadoop:hadoop-client:jar:2.8.1:compile
              |  +- org.apache.hadoop:hadoop-hdfs:jar:2.8.1:compile
              |  |  \- (com.google.guava:guava:jar:11.0.2:compile - omitted for duplicate)
              |  +- org.apache.hadoop:hadoop-mapreduce-client-app:jar:2.8.1:compile
              |  |  \- org.apache.hadoop:hadoop-mapreduce-client-common:jar:2.8.1:compile
              |  |     +- org.apache.hadoop:hadoop-yarn-client:jar:2.8.1:compile
              |  |     |  \- (com.google.guava:guava:jar:11.0.2:compile - omitted for duplicate)
              |  |     \- org.apache.hadoop:hadoop-yarn-server-common:jar:2.8.1:compile
              |  |        \- (com.google.guava:guava:jar:11.0.2:compile - omitted for duplicate)
              |  \- org.apache.hadoop:hadoop-yarn-api:jar:2.8.1:compile
              |     \- (com.google.guava:guava:jar:11.0.2:compile - omitted for duplicate)
              \- org.apache.hadoop:hadoop-mapreduce-client-core:jar:2.8.1:compile
                 \- org.apache.hadoop:hadoop-yarn-common:jar:2.8.1:compile
                    \- (com.google.guava:guava:jar:11.0.2:compile - omitted for duplicate)

            16.0.1
              +
            1. org.laidu.learn:elastic-job:jar:1.0-SNAPSHOT
              \- com.dangdang:elastic-job-lite-core:jar:2.1.5:compile
                 \- com.dangdang:elastic-job-common-core:jar:2.1.5:compile
                    \- org.apache.curator:curator-client:jar:2.10.0:compile
                       \- (com.google.guava:guava:jar:16.0.1:compile - omitted for conflict with 25.0-jre)

            2. org.laidu.learn:hadoop:jar:1.0-SNAPSHOT
              \- org.apache.hadoop:hadoop-common:jar:2.8.1:compile
                 +- org.apache.hadoop:hadoop-auth:jar:2.8.1:compile
                 |  \- org.apache.curator:curator-framework:jar:2.7.1:compile
                 |     \- (com.google.guava:guava:jar:16.0.1:compile - omitted for conflict with 11.0.2)
                 +- org.apache.curator:curator-client:jar:2.7.1:compile
                 |  \- (com.google.guava:guava:jar:16.0.1:compile - omitted for conflict with 11.0.2)
                 \- org.apache.curator:curator-recipes:jar:2.7.1:compile
                    \- (com.google.guava:guava:jar:16.0.1:compile - omitted for conflict with 11.0.2)

            18.0
              -
            1. org.laidu.learn.swagger:swagger:jar:0.0.1-SNAPSHOT
              \- io.springfox:springfox-swagger2:jar:2.7.0:compile
                 +- io.springfox:springfox-spi:jar:2.7.0:compile
                 |  \- io.springfox:springfox-core:jar:2.7.0:compile
                 |     \- (com.google.guava:guava:jar:18.0:compile - omitted for conflict with 23.5-jre)
                 +- io.springfox:springfox-swagger-common:jar:2.7.0:compile
                 |  \- (com.google.guava:guava:jar:18.0:compile - omitted for conflict with 23.5-jre)
                 +- io.springfox:springfox-spring-web:jar:2.7.0:compile
                 |  \- (com.google.guava:guava:jar:18.0:compile - omitted for conflict with 23.5-jre)
                 \- (com.google.guava:guava:jar:18.0:compile - omitted for conflict with 23.5-jre)

            20.0
              -
            1. org.laidu.learn.swagger:swagger:jar:0.0.1-SNAPSHOT
              \- io.springfox:springfox-swagger2:jar:2.7.0:compile
                 \- io.springfox:springfox-spring-web:jar:2.7.0:compile
                    \- org.reflections:reflections:jar:0.9.11:compile
                       \- (com.google.guava:guava:jar:20.0:compile - omitted for conflict with 23.5-jre)

            22.0
            1. org.laidu.learn:play:jar:1.0-SNAPSHOT
              \- com.typesafe.play:play_2.11:jar:2.6.6:compile
                 \- com.google.guava:guava:jar:22.0:compile

            23.5-jre
            25.0-jre
              -
            1. org.laidu.learn.swagger:swagger:jar:0.0.1-SNAPSHOT
              \- org.laidu.learn:common-util:jar:1.0-SNAPSHOT:compile
                 \- com.google.guava:guava:jar:23.5-jre:compile

            2. -
            3. org.laidu.learn:play:jar:1.0-SNAPSHOT
              \- org.laidu.learn:common-util:jar:1.0-SNAPSHOT:compile
                 \- (com.google.guava:guava:jar:23.5-jre:compile - omitted for conflict with 22.0)

            +
          7. org.laidu.learn.swagger:swagger:jar:0.0.1-SNAPSHOT
            \- org.laidu.learn:common-util:jar:1.0-SNAPSHOT:compile
               \- com.google.guava:guava:jar:25.0-jre:compile

          8. +
          9. org.laidu.learn:play:jar:1.0-SNAPSHOT
            \- org.laidu.learn:common-util:jar:1.0-SNAPSHOT:compile
               \- (com.google.guava:guava:jar:25.0-jre:compile - omitted for conflict with 22.0)

          com.squareup:javapoet

          - +
          [Error] - + - +
          1.10.0
          1. org.laidu.crawler:crawler-helper:jar:1.0-SNAPSHOT
            \- org.laidu.learn:common-util:jar:1.0-SNAPSHOT:compile
               \- (com.squareup:javapoet:jar:1.10.0:compile - omitted for conflict with 1.9.0)

          1.9.0
            @@ -577,16 +541,16 @@

            com.squareup:javapoet

            com.typesafe:config

            - +
            [Error] - + - +
            1.2.0
            1. org.laidu.learn:play:jar:1.0-SNAPSHOT
              \- com.typesafe.play:play_2.11:jar:2.6.6:compile
                 \- com.typesafe.play:play-streams_2.11:jar:2.6.6:compile
                    \- com.typesafe.akka:akka-stream_2.11:jar:2.5.4:compile
                       \- com.typesafe:ssl-config-core_2.11:jar:0.2.1:compile
                          \- (com.typesafe:config:jar:1.2.0:compile - omitted for conflict with 1.3.1)

            1.3.1
              @@ -594,39 +558,41 @@

              com.typesafe:config

              commons-codec:commons-codec

              - +
              [Error] - + - + - +
              1.10
                +
              1. org.laidu.learn:apache-poi:jar:1.0-SNAPSHOT
                \- org.apache.poi:poi:jar:3.17:compile
                   \- commons-codec:commons-codec:jar:1.10:compile

              2. org.laidu.learn:play:jar:1.0-SNAPSHOT
                \- com.typesafe.play:play_2.11:jar:2.6.6:compile
                   \- commons-codec:commons-codec:jar:1.10:compile

              1.4
              1. org.laidu.learn:hadoop:jar:1.0-SNAPSHOT
                +- org.apache.hadoop:hadoop-common:jar:2.8.1:compile
                |  +- commons-codec:commons-codec:jar:1.4:compile
                |  +- net.java.dev.jets3t:jets3t:jar:0.9.0:compile
                |  |  \- (commons-codec:commons-codec:jar:1.4:compile - omitted for duplicate)
                |  \- org.apache.hadoop:hadoop-auth:jar:2.8.1:compile
                |     \- (commons-codec:commons-codec:jar:1.4:compile - omitted for duplicate)
                +- org.apache.hadoop:hadoop-client:jar:2.8.1:compile
                |  \- org.apache.hadoop:hadoop-hdfs:jar:2.8.1:compile
                |     \- (commons-codec:commons-codec:jar:1.4:compile - omitted for duplicate)
                \- org.apache.hadoop:hadoop-mapreduce-client-core:jar:2.8.1:compile
                   \- org.apache.hadoop:hadoop-yarn-common:jar:2.8.1:compile
                      \- (commons-codec:commons-codec:jar:1.4:compile - omitted for duplicate)

              1.9
                +
              1. org.laidu.learn:apache-poi:jar:1.0-SNAPSHOT
                \- org.laidu.learn:common-util:jar:1.0-SNAPSHOT:compile
                   \- org.apache.httpcomponents:httpclient:jar:4.5.3:compile
                      \- (commons-codec:commons-codec:jar:1.9:compile - omitted for conflict with 1.10)

              2. org.laidu.learn:hadoop:jar:1.0-SNAPSHOT
                \- org.apache.hadoop:hadoop-common:jar:2.8.1:compile
                   \- org.apache.httpcomponents:httpclient:jar:4.5.2:compile
                      \- (commons-codec:commons-codec:jar:1.9:compile - omitted for conflict with 1.4)

              3. org.laidu.learn:play:jar:1.0-SNAPSHOT
                \- org.laidu.learn:common-util:jar:1.0-SNAPSHOT:compile
                   \- org.apache.httpcomponents:httpclient:jar:4.5.3:compile
                      \- (commons-codec:commons-codec:jar:1.9:compile - omitted for conflict with 1.10)

              commons-collections:commons-collections

              - +
              [Error] - + - + + + + + + +
              3.2.1
              1. org.laidu.learn:hadoop:jar:1.0-SNAPSHOT
                \- org.apache.hadoop:hadoop-common:jar:2.8.1:compile
                   \- commons-configuration:commons-configuration:jar:1.6:compile
                      \- (commons-collections:commons-collections:jar:3.2.1:compile - omitted for conflict with 3.2.2)

              3.2.2
                @@ -634,17 +600,17 @@

                commons-collections:co

                commons-io:commons-io

                - +
                [Error] - + - +
                1.3.2
                1. org.laidu.learn:crawler:jar:1.0-SNAPSHOT
                  \- us.codecraft:webmagic-core:jar:0.7.3:compile
                     \- (commons-io:commons-io:jar:1.3.2:compile - omitted for conflict with 2.5)

                2. org.laidu.learn:webmagic-learn:jar:1.0-SNAPSHOT
                  \- us.codecraft:webmagic-core:jar:0.7.3:compile
                     \- (commons-io:commons-io:jar:1.3.2:compile - omitted for conflict with 2.5)

                2.5
                  @@ -653,16 +619,16 @@

                  commons-io:commons-io

                  commons-lang:commons-lang

                  - + + + + + + +
                  [Error] - + - +
                  2.4
                  1. org.laidu.learn:hadoop:jar:1.0-SNAPSHOT
                    \- org.apache.hadoop:hadoop-common:jar:2.8.1:compile
                       \- commons-configuration:commons-configuration:jar:1.6:compile
                          \- (commons-lang:commons-lang:jar:2.4:compile - omitted for conflict with 2.6)

                  2.6
                    @@ -670,32 +636,32 @@

                    commons-lang:commons-lang

                    commons-logging:commons-logging

                    - +
                    [Error] - + - + - + - + - +
                    1.0.3
                    1. org.laidu.learn:hadoop:jar:1.0-SNAPSHOT
                      \- org.apache.hadoop:hadoop-common:jar:2.8.1:compile
                         \- commons-configuration:commons-configuration:jar:1.6:compile
                            \- commons-digester:commons-digester:jar:1.8:compile
                               \- commons-beanutils:commons-beanutils:jar:1.7.0:compile
                                  \- (commons-logging:commons-logging:jar:1.0.3:compile - omitted for conflict with 1.1.3)

                    1.1
                    1. org.laidu.learn:hadoop:jar:1.0-SNAPSHOT
                      \- org.apache.hadoop:hadoop-common:jar:2.8.1:compile
                         \- commons-configuration:commons-configuration:jar:1.6:compile
                            \- commons-digester:commons-digester:jar:1.8:compile
                               \- (commons-logging:commons-logging:jar:1.1:compile - omitted for conflict with 1.1.3)

                    1.1.1
                    1. org.laidu.learn:hadoop:jar:1.0-SNAPSHOT
                      \- org.apache.hadoop:hadoop-common:jar:2.8.1:compile
                         +- net.java.dev.jets3t:jets3t:jar:0.9.0:compile
                         |  \- (commons-logging:commons-logging:jar:1.1.1:compile - omitted for conflict with 1.1.3)
                         \- commons-configuration:commons-configuration:jar:1.6:compile
                            +- (commons-logging:commons-logging:jar:1.1.1:compile - omitted for conflict with 1.1.3)
                            \- commons-beanutils:commons-beanutils-core:jar:1.8.0:compile
                               \- (commons-logging:commons-logging:jar:1.1.1:compile - omitted for conflict with 1.1.3)

                    1.1.3
                    1. org.laidu.learn:dynamoDB:jar:1.0-SNAPSHOT
                      \- com.amazonaws:aws-java-sdk-dynamodb:jar:1.11.297:compile
                         \- com.amazonaws:aws-java-sdk-core:jar:1.11.297:compile
                            \- (commons-logging:commons-logging:jar:1.1.3:compile - omitted for conflict with 1.2)

                    2. org.laidu.learn:hadoop:jar:1.0-SNAPSHOT
                      +- org.apache.hadoop:hadoop-common:jar:2.8.1:compile
                      |  \- commons-logging:commons-logging:jar:1.1.3:compile
                      +- org.apache.hadoop:hadoop-client:jar:2.8.1:compile
                      |  +- org.apache.hadoop:hadoop-hdfs:jar:2.8.1:compile
                      |  |  \- (commons-logging:commons-logging:jar:1.1.3:compile - omitted for duplicate)
                      |  +- org.apache.hadoop:hadoop-mapreduce-client-app:jar:2.8.1:compile
                      |  |  \- org.apache.hadoop:hadoop-mapreduce-client-common:jar:2.8.1:compile
                      |  |     +- org.apache.hadoop:hadoop-yarn-client:jar:2.8.1:compile
                      |  |     |  \- (commons-logging:commons-logging:jar:1.1.3:compile - omitted for duplicate)
                      |  |     \- org.apache.hadoop:hadoop-yarn-server-common:jar:2.8.1:compile
                      |  |        \- (commons-logging:commons-logging:jar:1.1.3:compile - omitted for duplicate)
                      |  \- org.apache.hadoop:hadoop-yarn-api:jar:2.8.1:compile
                      |     \- (commons-logging:commons-logging:jar:1.1.3:compile - omitted for duplicate)
                      \- org.apache.hadoop:hadoop-mapreduce-client-core:jar:2.8.1:compile
                         \- org.apache.hadoop:hadoop-yarn-common:jar:2.8.1:compile
                            \- (commons-logging:commons-logging:jar:1.1.3:compile - omitted for duplicate)

                    1.2
                      @@ -704,16 +670,16 @@

                      commons-logging:commons-loggin

                      io.netty:netty

                      - +
                      [Error] - + - + + + +
                      3.6.2.Final
                      1. org.laidu.learn:hadoop:jar:1.0-SNAPSHOT
                        +- org.apache.hadoop:hadoop-mapreduce-client-core:jar:2.8.1:compile
                        |  \- io.netty:netty:jar:3.6.2.Final:compile
                        \- org.apache.hadoop:hadoop-mapreduce-client-jobclient:jar:2.8.1:provided
                           \- (io.netty:netty:jar:3.6.2.Final:provided - omitted for duplicate)

                      3.7.0.Final
                        @@ -721,16 +687,16 @@

                        io.netty:netty

                        io.netty:netty-handler

                        - +
                        [Error] - + - +
                        4.1.13.Final
                        1. org.laidu.learn:async-http-client:jar:1.0-SNAPSHOT
                          \- org.asynchttpclient:async-http-client:jar:2.1.0-alpha24:compile
                             \- com.typesafe.netty:netty-reactive-streams:jar:2.0.0:compile
                                \- (io.netty:netty-handler:jar:4.1.13.Final:compile - omitted for conflict with 4.1.15.Final)

                        4.1.15.Final
                          @@ -738,16 +704,16 @@

                          io.netty:netty-handler

                          log4j:log4j

                          - +
                          [Error] - + - + @@ -851,6 +829,7 @@

                          org.apache.httpcomponents:h
                          1. org.laidu.crawler:crawler-helper:jar:1.0-SNAPSHOT
                            \- org.laidu.learn:common-util:jar:1.0-SNAPSHOT:compile
                               \- org.apache.httpcomponents:httpcore:jar:4.4.8:compile

                          2. org.laidu.learn:algorithm:jar:1.0-SNAPSHOT
                            \- org.laidu.learn:common-util:jar:1.0-SNAPSHOT:compile
                               \- org.apache.httpcomponents:httpcore:jar:4.4.8:compile

                          3. +
                          4. org.laidu.learn:apache-poi:jar:1.0-SNAPSHOT
                            \- org.laidu.learn:common-util:jar:1.0-SNAPSHOT:compile
                               \- org.apache.httpcomponents:httpcore:jar:4.4.8:compile

                          5. org.laidu.learn:async-http-client:jar:1.0-SNAPSHOT
                            \- org.laidu.learn:common-util:jar:1.0-SNAPSHOT:compile
                               \- org.apache.httpcomponents:httpcore:jar:4.4.8:compile

                          6. org.laidu.learn:aws:pom:1.0-SNAPSHOT
                            \- org.laidu.learn:common-util:jar:1.0-SNAPSHOT:compile
                               \- org.apache.httpcomponents:httpcore:jar:4.4.8:compile

                          7. org.laidu.learn:common-util:jar:1.0-SNAPSHOT
                            \- org.apache.httpcomponents:httpcore:jar:4.4.8:compile

                          8. @@ -859,8 +838,10 @@

                            org.apache.httpcomponents:h
                          9. org.laidu.learn:commons-lang3:jar:1.0-SNAPSHOT
                            \- org.laidu.learn:common-util:jar:1.0-SNAPSHOT:compile
                               \- org.apache.httpcomponents:httpcore:jar:4.4.8:compile

                          10. org.laidu.learn:commons-net:jar:1.0-SNAPSHOT
                            \- org.laidu.learn:common-util:jar:1.0-SNAPSHOT:compile
                               \- org.apache.httpcomponents:httpcore:jar:4.4.8:compile

                          11. org.laidu.learn:commons-text:jar:1.0-SNAPSHOT
                            \- org.laidu.learn:common-util:jar:1.0-SNAPSHOT:compile
                               \- org.apache.httpcomponents:httpcore:jar:4.4.8:compile

                          12. +
                          13. org.laidu.learn:compress:pom:1.0-SNAPSHOT
                            \- org.laidu.learn:common-util:jar:1.0-SNAPSHOT:compile
                               \- org.apache.httpcomponents:httpcore:jar:4.4.8:compile

                          14. org.laidu.learn:drools:jar:1.0-SNAPSHOT
                            \- org.laidu.learn:common-util:jar:1.0-SNAPSHOT:compile
                               \- org.apache.httpcomponents:httpcore:jar:4.4.8:compile

                          15. org.laidu.learn:dynamoDB:jar:1.0-SNAPSHOT
                            \- org.laidu.learn:common-util:jar:1.0-SNAPSHOT:compile
                               \- org.apache.httpcomponents:httpcore:jar:4.4.8:compile

                          16. +
                          17. org.laidu.learn:elastic-job:jar:1.0-SNAPSHOT
                            \- org.laidu.learn:common-util:jar:1.0-SNAPSHOT:compile
                               \- org.apache.httpcomponents:httpcore:jar:4.4.8:compile

                          18. org.laidu.learn:framework:pom:1.0-SNAPSHOT
                            \- org.laidu.learn:common-util:jar:1.0-SNAPSHOT:compile
                               \- org.apache.httpcomponents:httpcore:jar:4.4.8:compile

                          19. org.laidu.learn:httpclient:jar:1.0-SNAPSHOT
                            \- org.laidu.learn:common-util:jar:1.0-SNAPSHOT:compile
                               \- org.apache.httpcomponents:httpcore:jar:4.4.8:compile

                          20. org.laidu.learn:junit5:jar:1.0-SNAPSHOT
                            \- org.laidu.learn:common-util:jar:1.0-SNAPSHOT:compile
                               \- org.apache.httpcomponents:httpcore:jar:4.4.8:compile

                          21. @@ -869,7 +850,10 @@

                            org.apache.httpcomponents:h
                          22. org.laidu.learn:network:pom:1.0-SNAPSHOT
                            \- org.laidu.learn:common-util:jar:1.0-SNAPSHOT:compile
                               \- org.apache.httpcomponents:httpcore:jar:4.4.8:compile

                          23. org.laidu.learn:play:jar:1.0-SNAPSHOT
                            \- org.laidu.learn:common-util:jar:1.0-SNAPSHOT:compile
                               \- org.apache.httpcomponents:httpcore:jar:4.4.8:compile

                          24. org.laidu.learn:rules-engine:pom:1.0-SNAPSHOT
                            \- org.laidu.learn:common-util:jar:1.0-SNAPSHOT:compile
                               \- org.apache.httpcomponents:httpcore:jar:4.4.8:compile

                          25. +
                          26. org.laidu.learn:shiro:jar:1.0-SNAPSHOT
                            \- org.laidu.learn:common-util:jar:1.0-SNAPSHOT:compile
                               \- org.apache.httpcomponents:httpcore:jar:4.4.8:compile

                          27. +
                          28. org.laidu.learn:task-scheduler:pom:1.0-SNAPSHOT
                            \- org.laidu.learn:common-util:jar:1.0-SNAPSHOT:compile
                               \- org.apache.httpcomponents:httpcore:jar:4.4.8:compile

                          29. org.laidu.learn:test:pom:1.0-SNAPSHOT
                            \- org.laidu.learn:common-util:jar:1.0-SNAPSHOT:compile
                               \- org.apache.httpcomponents:httpcore:jar:4.4.8:compile

                          30. +
                          31. org.laidu.learn:thumbnailator-google:jar:1.0-SNAPSHOT
                            \- org.laidu.learn:common-util:jar:1.0-SNAPSHOT:compile
                               \- org.apache.httpcomponents:httpcore:jar:4.4.8:compile

                          32. org.laidu.learn:web:pom:1.0-SNAPSHOT
                            \- org.laidu.learn:common-util:jar:1.0-SNAPSHOT:compile
                               \- org.apache.httpcomponents:httpcore:jar:4.4.8:compile

                          33. org.laidu.learn:webmagic-learn:jar:1.0-SNAPSHOT
                            \- org.laidu.learn:common-util:jar:1.0-SNAPSHOT:compile
                               \- org.apache.httpcomponents:httpcore:jar:4.4.8:compile

                          34. org.laidu.learn:webmagic:pom:1.0-SNAPSHOT
                            \- org.laidu.learn:common-util:jar:1.0-SNAPSHOT:compile
                               \- org.apache.httpcomponents:httpcore:jar:4.4.8:compile

                          1.2.16
                          1. org.laidu.learn:hadoop:jar:1.0-SNAPSHOT
                            \- org.apache.hadoop:hadoop-common:jar:2.8.1:compile
                               \- org.apache.zookeeper:zookeeper:jar:3.4.6:compile
                                  \- (log4j:log4j:jar:1.2.16:compile - omitted for conflict with 1.2.17)

                          1.2.17
                            @@ -755,21 +721,27 @@

                            log4j:log4j

                            org.apache.commons:commons-lang3

                            - +
                            [Error] - + + + +
                            3.1
                            1. org.laidu.learn:crawler:jar:1.0-SNAPSHOT
                              \- us.codecraft:webmagic-core:jar:0.7.3:compile
                                 \- (org.apache.commons:commons-lang3:jar:3.1:compile - omitted for conflict with 3.6)

                            2. org.laidu.learn:webmagic-learn:jar:1.0-SNAPSHOT
                              \- us.codecraft:webmagic-core:jar:0.7.3:compile
                                 \- (org.apache.commons:commons-lang3:jar:3.1:compile - omitted for conflict with 3.6)

                            3.4 +
                              +
                            1. org.laidu.learn:elastic-job:jar:1.0-SNAPSHOT
                              \- com.dangdang:elastic-job-lite-core:jar:2.1.5:compile
                                 \- com.dangdang:elastic-job-common-core:jar:2.1.5:compile
                                    \- (org.apache.commons:commons-lang3:jar:3.4:compile - omitted for conflict with 3.6)

                            3.6
                            1. org.laidu.learn:crawler:jar:1.0-SNAPSHOT
                              \- org.laidu.learn:common-util:jar:1.0-SNAPSHOT:compile
                                 \- org.apache.commons:commons-lang3:jar:3.6:compile

                            2. +
                            3. org.laidu.learn:elastic-job:jar:1.0-SNAPSHOT
                              \- org.laidu.learn:common-util:jar:1.0-SNAPSHOT:compile
                                 \- org.apache.commons:commons-lang3:jar:3.6:compile

                            4. org.laidu.learn:webmagic-learn:jar:1.0-SNAPSHOT
                              \- org.laidu.learn:common-util:jar:1.0-SNAPSHOT:compile
                                 \- org.apache.commons:commons-lang3:jar:3.6:compile

                            org.apache.httpcomponents:httpclient

                            @@ -823,6 +795,7 @@

                            org.apache.httpcomponents:h
                            1. org.laidu.crawler:crawler-helper:jar:1.0-SNAPSHOT
                              \- org.laidu.learn:common-util:jar:1.0-SNAPSHOT:compile
                                 \- org.apache.httpcomponents:httpclient:jar:4.5.3:compile
                                    \- (org.apache.httpcomponents:httpcore:jar:4.4.6:compile - omitted for conflict with 4.4.8)

                            2. org.laidu.learn:algorithm:jar:1.0-SNAPSHOT
                              \- org.laidu.learn:common-util:jar:1.0-SNAPSHOT:compile
                                 \- org.apache.httpcomponents:httpclient:jar:4.5.3:compile
                                    \- (org.apache.httpcomponents:httpcore:jar:4.4.6:compile - omitted for conflict with 4.4.8)

                            3. +
                            4. org.laidu.learn:apache-poi:jar:1.0-SNAPSHOT
                              \- org.laidu.learn:common-util:jar:1.0-SNAPSHOT:compile
                                 \- org.apache.httpcomponents:httpclient:jar:4.5.3:compile
                                    \- (org.apache.httpcomponents:httpcore:jar:4.4.6:compile - omitted for conflict with 4.4.8)

                            5. org.laidu.learn:async-http-client:jar:1.0-SNAPSHOT
                              \- org.laidu.learn:common-util:jar:1.0-SNAPSHOT:compile
                                 \- org.apache.httpcomponents:httpclient:jar:4.5.3:compile
                                    \- (org.apache.httpcomponents:httpcore:jar:4.4.6:compile - omitted for conflict with 4.4.8)

                            6. org.laidu.learn:aws:pom:1.0-SNAPSHOT
                              \- org.laidu.learn:common-util:jar:1.0-SNAPSHOT:compile
                                 \- org.apache.httpcomponents:httpclient:jar:4.5.3:compile
                                    \- (org.apache.httpcomponents:httpcore:jar:4.4.6:compile - omitted for conflict with 4.4.8)

                            7. org.laidu.learn:common-util:jar:1.0-SNAPSHOT
                              \- org.apache.httpcomponents:httpclient:jar:4.5.3:compile
                                 \- (org.apache.httpcomponents:httpcore:jar:4.4.6:compile - omitted for conflict with 4.4.8)

                            8. @@ -831,8 +804,10 @@

                              org.apache.httpcomponents:h
                            9. org.laidu.learn:commons-lang3:jar:1.0-SNAPSHOT
                              \- org.laidu.learn:common-util:jar:1.0-SNAPSHOT:compile
                                 \- org.apache.httpcomponents:httpclient:jar:4.5.3:compile
                                    \- (org.apache.httpcomponents:httpcore:jar:4.4.6:compile - omitted for conflict with 4.4.8)

                            10. org.laidu.learn:commons-net:jar:1.0-SNAPSHOT
                              \- org.laidu.learn:common-util:jar:1.0-SNAPSHOT:compile
                                 \- org.apache.httpcomponents:httpclient:jar:4.5.3:compile
                                    \- (org.apache.httpcomponents:httpcore:jar:4.4.6:compile - omitted for conflict with 4.4.8)

                            11. org.laidu.learn:commons-text:jar:1.0-SNAPSHOT
                              \- org.laidu.learn:common-util:jar:1.0-SNAPSHOT:compile
                                 \- org.apache.httpcomponents:httpclient:jar:4.5.3:compile
                                    \- (org.apache.httpcomponents:httpcore:jar:4.4.6:compile - omitted for conflict with 4.4.8)

                            12. +
                            13. org.laidu.learn:compress:pom:1.0-SNAPSHOT
                              \- org.laidu.learn:common-util:jar:1.0-SNAPSHOT:compile
                                 \- org.apache.httpcomponents:httpclient:jar:4.5.3:compile
                                    \- (org.apache.httpcomponents:httpcore:jar:4.4.6:compile - omitted for conflict with 4.4.8)

                            14. org.laidu.learn:drools:jar:1.0-SNAPSHOT
                              \- org.laidu.learn:common-util:jar:1.0-SNAPSHOT:compile
                                 \- org.apache.httpcomponents:httpclient:jar:4.5.3:compile
                                    \- (org.apache.httpcomponents:httpcore:jar:4.4.6:compile - omitted for conflict with 4.4.8)

                            15. org.laidu.learn:dynamoDB:jar:1.0-SNAPSHOT
                              \- org.laidu.learn:common-util:jar:1.0-SNAPSHOT:compile
                                 \- org.apache.httpcomponents:httpclient:jar:4.5.3:compile
                                    \- (org.apache.httpcomponents:httpcore:jar:4.4.6:compile - omitted for conflict with 4.4.8)

                            16. +
                            17. org.laidu.learn:elastic-job:jar:1.0-SNAPSHOT
                              \- org.laidu.learn:common-util:jar:1.0-SNAPSHOT:compile
                                 \- org.apache.httpcomponents:httpclient:jar:4.5.3:compile
                                    \- (org.apache.httpcomponents:httpcore:jar:4.4.6:compile - omitted for conflict with 4.4.8)

                            18. org.laidu.learn:framework:pom:1.0-SNAPSHOT
                              \- org.laidu.learn:common-util:jar:1.0-SNAPSHOT:compile
                                 \- org.apache.httpcomponents:httpclient:jar:4.5.3:compile
                                    \- (org.apache.httpcomponents:httpcore:jar:4.4.6:compile - omitted for conflict with 4.4.8)

                            19. org.laidu.learn:httpclient:jar:1.0-SNAPSHOT
                              \- org.laidu.learn:common-util:jar:1.0-SNAPSHOT:compile
                                 \- org.apache.httpcomponents:httpclient:jar:4.5.3:compile
                                    \- (org.apache.httpcomponents:httpcore:jar:4.4.6:compile - omitted for conflict with 4.4.8)

                            20. org.laidu.learn:junit5:jar:1.0-SNAPSHOT
                              \- org.laidu.learn:common-util:jar:1.0-SNAPSHOT:compile
                                 \- org.apache.httpcomponents:httpclient:jar:4.5.3:compile
                                    \- (org.apache.httpcomponents:httpcore:jar:4.4.6:compile - omitted for conflict with 4.4.8)

                            21. @@ -841,7 +816,10 @@

                              org.apache.httpcomponents:h
                            22. org.laidu.learn:network:pom:1.0-SNAPSHOT
                              \- org.laidu.learn:common-util:jar:1.0-SNAPSHOT:compile
                                 \- org.apache.httpcomponents:httpclient:jar:4.5.3:compile
                                    \- (org.apache.httpcomponents:httpcore:jar:4.4.6:compile - omitted for conflict with 4.4.8)

                            23. org.laidu.learn:play:jar:1.0-SNAPSHOT
                              \- org.laidu.learn:common-util:jar:1.0-SNAPSHOT:compile
                                 \- org.apache.httpcomponents:httpclient:jar:4.5.3:compile
                                    \- (org.apache.httpcomponents:httpcore:jar:4.4.6:compile - omitted for conflict with 4.4.8)

                            24. org.laidu.learn:rules-engine:pom:1.0-SNAPSHOT
                              \- org.laidu.learn:common-util:jar:1.0-SNAPSHOT:compile
                                 \- org.apache.httpcomponents:httpclient:jar:4.5.3:compile
                                    \- (org.apache.httpcomponents:httpcore:jar:4.4.6:compile - omitted for conflict with 4.4.8)

                            25. +
                            26. org.laidu.learn:shiro:jar:1.0-SNAPSHOT
                              \- org.laidu.learn:common-util:jar:1.0-SNAPSHOT:compile
                                 \- org.apache.httpcomponents:httpclient:jar:4.5.3:compile
                                    \- (org.apache.httpcomponents:httpcore:jar:4.4.6:compile - omitted for conflict with 4.4.8)

                            27. +
                            28. org.laidu.learn:task-scheduler:pom:1.0-SNAPSHOT
                              \- org.laidu.learn:common-util:jar:1.0-SNAPSHOT:compile
                                 \- org.apache.httpcomponents:httpclient:jar:4.5.3:compile
                                    \- (org.apache.httpcomponents:httpcore:jar:4.4.6:compile - omitted for conflict with 4.4.8)

                            29. org.laidu.learn:test:pom:1.0-SNAPSHOT
                              \- org.laidu.learn:common-util:jar:1.0-SNAPSHOT:compile
                                 \- org.apache.httpcomponents:httpclient:jar:4.5.3:compile
                                    \- (org.apache.httpcomponents:httpcore:jar:4.4.6:compile - omitted for conflict with 4.4.8)

                            30. +
                            31. org.laidu.learn:thumbnailator-google:jar:1.0-SNAPSHOT
                              \- org.laidu.learn:common-util:jar:1.0-SNAPSHOT:compile
                                 \- org.apache.httpcomponents:httpclient:jar:4.5.3:compile
                                    \- (org.apache.httpcomponents:httpcore:jar:4.4.6:compile - omitted for conflict with 4.4.8)

                            32. org.laidu.learn:web:pom:1.0-SNAPSHOT
                              \- org.laidu.learn:common-util:jar:1.0-SNAPSHOT:compile
                                 \- org.apache.httpcomponents:httpclient:jar:4.5.3:compile
                                    \- (org.apache.httpcomponents:httpcore:jar:4.4.6:compile - omitted for conflict with 4.4.8)

                            33. org.laidu.learn:webmagic-learn:jar:1.0-SNAPSHOT
                              \- org.laidu.learn:common-util:jar:1.0-SNAPSHOT:compile
                                 \- org.apache.httpcomponents:httpclient:jar:4.5.3:compile
                                    \- (org.apache.httpcomponents:httpcore:jar:4.4.6:compile - omitted for conflict with 4.4.8)

                            34. org.laidu.learn:webmagic:pom:1.0-SNAPSHOT
                              \- org.laidu.learn:common-util:jar:1.0-SNAPSHOT:compile
                                 \- org.apache.httpcomponents:httpclient:jar:4.5.3:compile
                                    \- (org.apache.httpcomponents:httpcore:jar:4.4.6:compile - omitted for conflict with 4.4.8)

                          @@ -952,44 +936,119 @@

                          org.codehaus.jackson:jackson-x
                          1. org.laidu.learn:hadoop:jar:1.0-SNAPSHOT
                            \- org.apache.hadoop:hadoop-mapreduce-client-core:jar:2.8.1:compile
                               \- org.apache.hadoop:hadoop-yarn-common:jar:2.8.1:compile
                                  \- (org.codehaus.jackson:jackson-xc:jar:1.9.13:compile - omitted for conflict with 1.8.3)

                        -

                        org.jsoup:jsoup

                        +

                        org.hdrhistogram:HdrHistogram

                        [Error] + + + + +
                        2.1.10 +
                          +
                        1. org.laidu.learn.spring.cloud:eureka-server:jar:0.0.1-SNAPSHOT
                          \- org.springframework.cloud:spring-cloud-starter-netflix-eureka-server:jar:1.4.3.RELEASE:compile
                             \- org.springframework.cloud:spring-cloud-netflix-eureka-server:jar:1.4.3.RELEASE:compile
                                \- org.springframework.boot:spring-boot-starter-actuator:jar:2.0.1.RELEASE:compile (version managed from 1.5.10.RELEASE)
                                   \- io.micrometer:micrometer-core:jar:1.0.3:compile
                                      \- org.hdrhistogram:HdrHistogram:jar:2.1.10:compile

                        2.1.9 +
                          +
                        1. org.laidu.learn.spring.cloud:eureka-server:jar:0.0.1-SNAPSHOT
                          \- org.springframework.cloud:spring-cloud-starter-netflix-eureka-server:jar:1.4.3.RELEASE:compile
                             \- org.springframework.cloud:spring-cloud-starter-netflix-ribbon:jar:1.4.3.RELEASE:compile
                                \- com.netflix.ribbon:ribbon:jar:2.2.4:compile
                                   \- com.netflix.hystrix:hystrix-core:jar:1.5.12:runtime (version managed from 1.4.3)
                                      \- (org.hdrhistogram:HdrHistogram:jar:2.1.9:runtime - omitted for conflict with 2.1.10)

                        +
                        +

                        org.jsoup:jsoup

                        + + + +
                        [Error] + + - + - +
                        1.10.3
                        1. org.laidu.learn:crawler:jar:1.0-SNAPSHOT
                          \- us.codecraft:webmagic-core:jar:0.7.3:compile
                             \- (org.jsoup:jsoup:jar:1.10.3:compile - omitted for conflict with 1.11.2)

                        2. org.laidu.learn:webmagic-learn:jar:1.0-SNAPSHOT
                          \- us.codecraft:webmagic-core:jar:0.7.3:compile
                             \- (org.jsoup:jsoup:jar:1.10.3:compile - omitted for conflict with 1.11.2)

                        1.11.2
                        1. org.laidu.learn:crawler:jar:1.0-SNAPSHOT
                          \- org.laidu.learn:common-util:jar:1.0-SNAPSHOT:compile
                             \- org.jsoup:jsoup:jar:1.11.2:compile

                        2. org.laidu.learn:webmagic-learn:jar:1.0-SNAPSHOT
                          \- org.laidu.learn:common-util:jar:1.0-SNAPSHOT:compile
                             \- org.jsoup:jsoup:jar:1.11.2:compile

                        1.8.3
                        1. org.laidu.learn:crawler:jar:1.0-SNAPSHOT
                          \- us.codecraft:webmagic-core:jar:0.7.3:compile
                             \- us.codecraft:xsoup:jar:0.3.1:compile
                                \- (org.jsoup:jsoup:jar:1.8.3:compile - omitted for conflict with 1.11.2)

                        2. org.laidu.learn:webmagic-learn:jar:1.0-SNAPSHOT
                          \- us.codecraft:webmagic-core:jar:0.7.3:compile
                             \- us.codecraft:xsoup:jar:0.3.1:compile
                                \- (org.jsoup:jsoup:jar:1.8.3:compile - omitted for conflict with 1.11.2)

                        -

                        org.junit.platform:junit-platform-engine

                        +

                        org.junit.jupiter:junit-jupiter-api

                        - +
                        [Error] + + + + + + + + +
                        5.0.0 +
                          +
                        1. org.laidu.learn.spring.cloud:consumer-hello:jar:0.0.1-SNAPSHOT
                          \- org.junit.jupiter:junit-jupiter-api:jar:5.0.0:test

                        2. +
                        3. org.laidu.learn.spring.cloud:eureka-server:jar:0.0.1-SNAPSHOT
                          \- org.junit.jupiter:junit-jupiter-api:jar:5.0.0:test

                        4. +
                        5. org.laidu.learn.spring.cloud:service-hello:jar:0.0.1-SNAPSHOT
                          \- org.junit.jupiter:junit-jupiter-api:jar:5.0.0:test

                        6. +
                        7. org.laidu.learn.swagger:swagger:jar:0.0.1-SNAPSHOT
                          \- org.junit.jupiter:junit-jupiter-api:jar:5.0.0:test

                        8. +
                        9. org.laidu.learn:spring-amqp:jar:1.0-SNAPSHOT
                          \- org.junit.jupiter:junit-jupiter-api:jar:5.0.0:test

                        10. +
                        11. org.laidu.learn:spring-boot-app:jar:0.0.1-SNAPSHOT
                          \- org.junit.jupiter:junit-jupiter-api:jar:5.0.0:test

                        12. +
                        13. org.laidu.learn:spring-boot-shiro:jar:1.0-SNAPSHOT
                          \- org.junit.jupiter:junit-jupiter-api:jar:5.0.0:test

                        14. +
                        15. org.laidu.learn:spring-boot:pom:1.0-SNAPSHOT
                          \- org.junit.jupiter:junit-jupiter-api:jar:5.0.0:test

                        16. +
                        17. org.laidu.learn:spring-cloud:pom:1.0-SNAPSHOT
                          \- org.junit.jupiter:junit-jupiter-api:jar:5.0.0:test

                        18. +
                        19. org.laidu.learn:spring-data:pom:1.0-SNAPSHOT
                          \- org.junit.jupiter:junit-jupiter-api:jar:5.0.0:test

                        20. +
                        21. org.laidu.learn:spring-hadoop:jar:1.0-SNAPSHOT
                          \- org.junit.jupiter:junit-jupiter-api:jar:5.0.0:test

                        22. +
                        23. org.laidu.learn:spring-mvc:jar:1.0-SNAPSHOT
                          \- org.junit.jupiter:junit-jupiter-api:jar:5.0.0:test

                        24. +
                        25. org.laidu.learn:spring-mybatis:jar:1.0-SNAPSHOT
                          \- org.junit.jupiter:junit-jupiter-api:jar:5.0.0:test

                        26. +
                        27. org.laidu.learn:spring-redis:jar:1.0-SNAPSHOT
                          \- org.junit.jupiter:junit-jupiter-api:jar:5.0.0:test

                        28. +
                        29. org.laidu.learn:spring-statemachine:jar:1.0-SNAPSHOT
                          \- org.junit.jupiter:junit-jupiter-api:jar:5.0.0:test

                        30. +
                        31. org.laidu.learn:spring-web:pom:1.0-SNAPSHOT
                          \- org.junit.jupiter:junit-jupiter-api:jar:5.0.0:test

                        32. +
                        33. org.laidu.learn:spring:pom:1.0-SNAPSHOT
                          \- org.junit.jupiter:junit-jupiter-api:jar:5.0.0:test

                        5.1.0 +
                          +
                        1. org.laidu.learn.spring.cloud:consumer-hello:jar:0.0.1-SNAPSHOT
                          \- org.junit.jupiter:junit-jupiter-engine:jar:5.0.0:test
                             \- (org.junit.jupiter:junit-jupiter-api:jar:5.1.0:test - version managed from 5.0.0; omitted for conflict with 5.0.0)

                        2. +
                        3. org.laidu.learn.spring.cloud:eureka-server:jar:0.0.1-SNAPSHOT
                          \- org.junit.jupiter:junit-jupiter-engine:jar:5.0.0:test
                             \- (org.junit.jupiter:junit-jupiter-api:jar:5.1.0:test - version managed from 5.0.0; omitted for conflict with 5.0.0)

                        4. +
                        5. org.laidu.learn.spring.cloud:service-hello:jar:0.0.1-SNAPSHOT
                          \- org.junit.jupiter:junit-jupiter-engine:jar:5.0.0:test
                             \- (org.junit.jupiter:junit-jupiter-api:jar:5.1.0:test - version managed from 5.0.0; omitted for conflict with 5.0.0)

                        6. +
                        7. org.laidu.learn.swagger:swagger:jar:0.0.1-SNAPSHOT
                          \- org.junit.jupiter:junit-jupiter-engine:jar:5.0.0:test
                             \- (org.junit.jupiter:junit-jupiter-api:jar:5.1.0:test - version managed from 5.0.0; omitted for conflict with 5.0.0)

                        8. +
                        9. org.laidu.learn:spring-boot-app:jar:0.0.1-SNAPSHOT
                          \- org.junit.jupiter:junit-jupiter-engine:jar:5.0.0:test
                             \- (org.junit.jupiter:junit-jupiter-api:jar:5.1.0:test - version managed from 5.0.0; omitted for conflict with 5.0.0)

                        10. +
                        11. org.laidu.learn:spring-boot-shiro:jar:1.0-SNAPSHOT
                          \- org.junit.jupiter:junit-jupiter-engine:jar:5.0.0:test
                             \- (org.junit.jupiter:junit-jupiter-api:jar:5.1.0:test - version managed from 5.0.0; omitted for conflict with 5.0.0)

                        12. +
                        13. org.laidu.learn:spring-boot:pom:1.0-SNAPSHOT
                          \- org.junit.jupiter:junit-jupiter-engine:jar:5.0.0:test
                             \- (org.junit.jupiter:junit-jupiter-api:jar:5.1.0:test - version managed from 5.0.0; omitted for conflict with 5.0.0)

                        14. +
                        15. org.laidu.learn:spring-cloud:pom:1.0-SNAPSHOT
                          \- org.junit.jupiter:junit-jupiter-engine:jar:5.0.0:test
                             \- (org.junit.jupiter:junit-jupiter-api:jar:5.1.0:test - version managed from 5.0.0; omitted for conflict with 5.0.0)

                        16. +
                        17. org.laidu.learn:spring-mvc:jar:1.0-SNAPSHOT
                          \- org.junit.jupiter:junit-jupiter-engine:jar:5.0.0:test
                             \- (org.junit.jupiter:junit-jupiter-api:jar:5.1.0:test - version managed from 5.0.0; omitted for conflict with 5.0.0)

                        18. +
                        19. org.laidu.learn:spring-web:pom:1.0-SNAPSHOT
                          \- org.junit.jupiter:junit-jupiter-engine:jar:5.0.0:test
                             \- (org.junit.jupiter:junit-jupiter-api:jar:5.1.0:test - version managed from 5.0.0; omitted for conflict with 5.0.0)

                        5.1.1 +
                          +
                        1. org.laidu.learn:spring-amqp:jar:1.0-SNAPSHOT
                          \- org.junit.jupiter:junit-jupiter-engine:jar:5.0.0:test
                             \- (org.junit.jupiter:junit-jupiter-api:jar:5.1.1:test - version managed from 5.0.0; omitted for conflict with 5.0.0)

                        2. +
                        3. org.laidu.learn:spring-data:pom:1.0-SNAPSHOT
                          \- org.junit.jupiter:junit-jupiter-engine:jar:5.0.0:test
                             \- (org.junit.jupiter:junit-jupiter-api:jar:5.1.1:test - version managed from 5.0.0; omitted for conflict with 5.0.0)

                        4. +
                        5. org.laidu.learn:spring-hadoop:jar:1.0-SNAPSHOT
                          \- org.junit.jupiter:junit-jupiter-engine:jar:5.0.0:test
                             \- (org.junit.jupiter:junit-jupiter-api:jar:5.1.1:test - version managed from 5.0.0; omitted for conflict with 5.0.0)

                        6. +
                        7. org.laidu.learn:spring-mybatis:jar:1.0-SNAPSHOT
                          \- org.junit.jupiter:junit-jupiter-engine:jar:5.0.0:test
                             \- (org.junit.jupiter:junit-jupiter-api:jar:5.1.1:test - version managed from 5.0.0; omitted for conflict with 5.0.0)

                        8. +
                        9. org.laidu.learn:spring-redis:jar:1.0-SNAPSHOT
                          \- org.junit.jupiter:junit-jupiter-engine:jar:5.0.0:test
                             \- (org.junit.jupiter:junit-jupiter-api:jar:5.1.1:test - version managed from 5.0.0; omitted for conflict with 5.0.0)

                        10. +
                        11. org.laidu.learn:spring-statemachine:jar:1.0-SNAPSHOT
                          \- org.junit.jupiter:junit-jupiter-engine:jar:5.0.0:test
                             \- (org.junit.jupiter:junit-jupiter-api:jar:5.1.1:test - version managed from 5.0.0; omitted for conflict with 5.0.0)

                        12. +
                        13. org.laidu.learn:spring:pom:1.0-SNAPSHOT
                          \- org.junit.jupiter:junit-jupiter-engine:jar:5.0.0:test
                             \- (org.junit.jupiter:junit-jupiter-api:jar:5.1.1:test - version managed from 5.0.0; omitted for conflict with 5.0.0)

                        +
                        +

                        org.junit.platform:junit-platform-engine

                        + + +
                        [Error] + + - +
                        1.0.0
                        1. org.laidu.crawler:crawler-helper:jar:1.0-SNAPSHOT
                          +- org.junit.jupiter:junit-jupiter-engine:jar:5.0.0:test
                          |  \- (org.junit.platform:junit-platform-engine:jar:1.0.0:test - omitted for conflict with 1.0.2)
                          \- org.junit.vintage:junit-vintage-engine:jar:4.12.0:test
                             \- (org.junit.platform:junit-platform-engine:jar:1.0.0:test - omitted for conflict with 1.0.2)

                        2. +
                        3. org.laidu.learn.spring.cloud:consumer-hello:jar:0.0.1-SNAPSHOT
                          +- org.junit.jupiter:junit-jupiter-engine:jar:5.0.0:test
                          |  \- (org.junit.platform:junit-platform-engine:jar:1.0.0:test - omitted for conflict with 1.0.2)
                          \- org.junit.vintage:junit-vintage-engine:jar:4.12.0:test
                             \- (org.junit.platform:junit-platform-engine:jar:1.0.0:test - omitted for conflict with 1.0.2)

                        4. +
                        5. org.laidu.learn.spring.cloud:eureka-server:jar:0.0.1-SNAPSHOT
                          +- org.junit.jupiter:junit-jupiter-engine:jar:5.0.0:test
                          |  \- (org.junit.platform:junit-platform-engine:jar:1.0.0:test - omitted for conflict with 1.0.2)
                          \- org.junit.vintage:junit-vintage-engine:jar:4.12.0:test
                             \- (org.junit.platform:junit-platform-engine:jar:1.0.0:test - omitted for conflict with 1.0.2)

                        6. +
                        7. org.laidu.learn.spring.cloud:service-hello:jar:0.0.1-SNAPSHOT
                          +- org.junit.jupiter:junit-jupiter-engine:jar:5.0.0:test
                          |  \- (org.junit.platform:junit-platform-engine:jar:1.0.0:test - omitted for conflict with 1.0.2)
                          \- org.junit.vintage:junit-vintage-engine:jar:4.12.0:test
                             \- (org.junit.platform:junit-platform-engine:jar:1.0.0:test - omitted for conflict with 1.0.2)

                        8. +
                        9. org.laidu.learn.swagger:swagger:jar:0.0.1-SNAPSHOT
                          +- org.junit.jupiter:junit-jupiter-engine:jar:5.0.0:test
                          |  \- (org.junit.platform:junit-platform-engine:jar:1.0.0:test - omitted for conflict with 1.0.2)
                          \- org.junit.vintage:junit-vintage-engine:jar:4.12.0:test
                             \- (org.junit.platform:junit-platform-engine:jar:1.0.0:test - omitted for conflict with 1.0.2)

                        10. org.laidu.learn:BTrace:jar:1.0-SNAPSHOT
                          +- org.junit.jupiter:junit-jupiter-engine:jar:5.0.0:test
                          |  \- (org.junit.platform:junit-platform-engine:jar:1.0.0:test - omitted for conflict with 1.0.2)
                          \- org.junit.vintage:junit-vintage-engine:jar:4.12.0:test
                             \- (org.junit.platform:junit-platform-engine:jar:1.0.0:test - omitted for conflict with 1.0.2)

                        11. org.laidu.learn:algorithm:jar:1.0-SNAPSHOT
                          +- org.junit.jupiter:junit-jupiter-engine:jar:5.0.0:test
                          |  \- (org.junit.platform:junit-platform-engine:jar:1.0.0:test - omitted for conflict with 1.0.2)
                          \- org.junit.vintage:junit-vintage-engine:jar:4.12.0:test
                             \- (org.junit.platform:junit-platform-engine:jar:1.0.0:test - omitted for conflict with 1.0.2)

                        12. +
                        13. org.laidu.learn:apache-poi:jar:1.0-SNAPSHOT
                          +- org.junit.jupiter:junit-jupiter-engine:jar:5.0.0:test
                          |  \- (org.junit.platform:junit-platform-engine:jar:1.0.0:test - omitted for conflict with 1.0.2)
                          \- org.junit.vintage:junit-vintage-engine:jar:4.12.0:test
                             \- (org.junit.platform:junit-platform-engine:jar:1.0.0:test - omitted for conflict with 1.0.2)

                        14. org.laidu.learn:async-http-client:jar:1.0-SNAPSHOT
                          +- org.junit.jupiter:junit-jupiter-engine:jar:5.0.0:test
                          |  \- (org.junit.platform:junit-platform-engine:jar:1.0.0:test - omitted for conflict with 1.0.2)
                          \- org.junit.vintage:junit-vintage-engine:jar:4.12.0:test
                             \- (org.junit.platform:junit-platform-engine:jar:1.0.0:test - omitted for conflict with 1.0.2)

                        15. org.laidu.learn:aws:pom:1.0-SNAPSHOT
                          +- org.junit.jupiter:junit-jupiter-engine:jar:5.0.0:test
                          |  \- (org.junit.platform:junit-platform-engine:jar:1.0.0:test - omitted for conflict with 1.0.2)
                          \- org.junit.vintage:junit-vintage-engine:jar:4.12.0:test
                             \- (org.junit.platform:junit-platform-engine:jar:1.0.0:test - omitted for conflict with 1.0.2)

                        16. org.laidu.learn:big-data:pom:1.0-SNAPSHOT
                          +- org.junit.jupiter:junit-jupiter-engine:jar:5.0.0:test
                          |  \- (org.junit.platform:junit-platform-engine:jar:1.0.0:test - omitted for conflict with 1.0.2)
                          \- org.junit.vintage:junit-vintage-engine:jar:4.12.0:test
                             \- (org.junit.platform:junit-platform-engine:jar:1.0.0:test - omitted for conflict with 1.0.2)

                        17. @@ -1003,6 +1062,7 @@

                          org.junit.platform:ju
                        18. org.laidu.learn:commons-lang3:jar:1.0-SNAPSHOT
                          +- org.junit.jupiter:junit-jupiter-engine:jar:5.0.0:test
                          |  \- (org.junit.platform:junit-platform-engine:jar:1.0.0:test - omitted for conflict with 1.0.2)
                          \- org.junit.vintage:junit-vintage-engine:jar:4.12.0:test
                             \- (org.junit.platform:junit-platform-engine:jar:1.0.0:test - omitted for conflict with 1.0.2)

                        19. org.laidu.learn:commons-net:jar:1.0-SNAPSHOT
                          +- org.junit.jupiter:junit-jupiter-engine:jar:5.0.0:test
                          |  \- (org.junit.platform:junit-platform-engine:jar:1.0.0:test - omitted for conflict with 1.0.2)
                          \- org.junit.vintage:junit-vintage-engine:jar:4.12.0:test
                             \- (org.junit.platform:junit-platform-engine:jar:1.0.0:test - omitted for conflict with 1.0.2)

                        20. org.laidu.learn:commons-text:jar:1.0-SNAPSHOT
                          +- org.junit.jupiter:junit-jupiter-engine:jar:5.0.0:test
                          |  \- (org.junit.platform:junit-platform-engine:jar:1.0.0:test - omitted for conflict with 1.0.2)
                          \- org.junit.vintage:junit-vintage-engine:jar:4.12.0:test
                             \- (org.junit.platform:junit-platform-engine:jar:1.0.0:test - omitted for conflict with 1.0.2)

                        21. +
                        22. org.laidu.learn:compress:pom:1.0-SNAPSHOT
                          +- org.junit.jupiter:junit-jupiter-engine:jar:5.0.0:test
                          |  \- (org.junit.platform:junit-platform-engine:jar:1.0.0:test - omitted for conflict with 1.0.2)
                          \- org.junit.vintage:junit-vintage-engine:jar:4.12.0:test
                             \- (org.junit.platform:junit-platform-engine:jar:1.0.0:test - omitted for conflict with 1.0.2)

                        23. org.laidu.learn:concurrent:jar:1.0-SNAPSHOT
                          +- org.junit.jupiter:junit-jupiter-engine:jar:5.0.0:test
                          |  \- (org.junit.platform:junit-platform-engine:jar:1.0.0:test - omitted for conflict with 1.0.2)
                          \- org.junit.vintage:junit-vintage-engine:jar:4.12.0:test
                             \- (org.junit.platform:junit-platform-engine:jar:1.0.0:test - omitted for conflict with 1.0.2)

                        24. org.laidu.learn:convenient-util:pom:1.0-SNAPSHOT
                          +- org.junit.jupiter:junit-jupiter-engine:jar:5.0.0:test
                          |  \- (org.junit.platform:junit-platform-engine:jar:1.0.0:test - omitted for conflict with 1.0.2)
                          \- org.junit.vintage:junit-vintage-engine:jar:4.12.0:test
                             \- (org.junit.platform:junit-platform-engine:jar:1.0.0:test - omitted for conflict with 1.0.2)

                        25. org.laidu.learn:crawler:jar:1.0-SNAPSHOT
                          +- org.junit.jupiter:junit-jupiter-engine:jar:5.0.0:test
                          |  \- (org.junit.platform:junit-platform-engine:jar:1.0.0:test - omitted for conflict with 1.0.2)
                          \- org.junit.vintage:junit-vintage-engine:jar:4.12.0:test
                             \- (org.junit.platform:junit-platform-engine:jar:1.0.0:test - omitted for conflict with 1.0.2)

                        26. @@ -1012,6 +1072,7 @@

                          org.junit.platform:ju
                        27. org.laidu.learn:dev-ops:pom:1.0-SNAPSHOT
                          +- org.junit.jupiter:junit-jupiter-engine:jar:5.0.0:test
                          |  \- (org.junit.platform:junit-platform-engine:jar:1.0.0:test - omitted for conflict with 1.0.2)
                          \- org.junit.vintage:junit-vintage-engine:jar:4.12.0:test
                             \- (org.junit.platform:junit-platform-engine:jar:1.0.0:test - omitted for conflict with 1.0.2)

                        28. org.laidu.learn:drools:jar:1.0-SNAPSHOT
                          +- org.junit.jupiter:junit-jupiter-engine:jar:5.0.0:test
                          |  \- (org.junit.platform:junit-platform-engine:jar:1.0.0:test - omitted for conflict with 1.0.2)
                          \- org.junit.vintage:junit-vintage-engine:jar:4.12.0:test
                             \- (org.junit.platform:junit-platform-engine:jar:1.0.0:test - omitted for conflict with 1.0.2)

                        29. org.laidu.learn:dynamoDB:jar:1.0-SNAPSHOT
                          +- org.junit.jupiter:junit-jupiter-engine:jar:5.0.0:test
                          |  \- (org.junit.platform:junit-platform-engine:jar:1.0.0:test - omitted for conflict with 1.0.2)
                          \- org.junit.vintage:junit-vintage-engine:jar:4.12.0:test
                             \- (org.junit.platform:junit-platform-engine:jar:1.0.0:test - omitted for conflict with 1.0.2)

                        30. +
                        31. org.laidu.learn:elastic-job:jar:1.0-SNAPSHOT
                          +- org.junit.jupiter:junit-jupiter-engine:jar:5.0.0:test
                          |  \- (org.junit.platform:junit-platform-engine:jar:1.0.0:test - omitted for conflict with 1.0.2)
                          \- org.junit.vintage:junit-vintage-engine:jar:4.12.0:test
                             \- (org.junit.platform:junit-platform-engine:jar:1.0.0:test - omitted for conflict with 1.0.2)

                        32. org.laidu.learn:fastutil:jar:1.0-SNAPSHOT
                          +- org.junit.jupiter:junit-jupiter-engine:jar:5.0.0:test
                          |  \- (org.junit.platform:junit-platform-engine:jar:1.0.0:test - omitted for conflict with 1.0.2)
                          \- org.junit.vintage:junit-vintage-engine:jar:4.12.0:test
                             \- (org.junit.platform:junit-platform-engine:jar:1.0.0:test - omitted for conflict with 1.0.2)

                        33. org.laidu.learn:framework:pom:1.0-SNAPSHOT
                          +- org.junit.jupiter:junit-jupiter-engine:jar:5.0.0:test
                          |  \- (org.junit.platform:junit-platform-engine:jar:1.0.0:test - omitted for conflict with 1.0.2)
                          \- org.junit.vintage:junit-vintage-engine:jar:4.12.0:test
                             \- (org.junit.platform:junit-platform-engine:jar:1.0.0:test - omitted for conflict with 1.0.2)

                        34. org.laidu.learn:hadoop:jar:1.0-SNAPSHOT
                          +- org.junit.jupiter:junit-jupiter-engine:jar:5.0.0:test
                          |  \- (org.junit.platform:junit-platform-engine:jar:1.0.0:test - omitted for conflict with 1.0.2)
                          \- org.junit.vintage:junit-vintage-engine:jar:4.12.0:test
                             \- (org.junit.platform:junit-platform-engine:jar:1.0.0:test - omitted for conflict with 1.0.2)

                        35. @@ -1032,27 +1093,40 @@

                          org.junit.platform:ju
                        36. org.laidu.learn:production-component:pom:1.0-SNAPSHOT
                          +- org.junit.jupiter:junit-jupiter-engine:jar:5.0.0:test
                          |  \- (org.junit.platform:junit-platform-engine:jar:1.0.0:test - omitted for conflict with 1.0.2)
                          \- org.junit.vintage:junit-vintage-engine:jar:4.12.0:test
                             \- (org.junit.platform:junit-platform-engine:jar:1.0.0:test - omitted for conflict with 1.0.2)

                        37. org.laidu.learn:rules-engine:pom:1.0-SNAPSHOT
                          +- org.junit.jupiter:junit-jupiter-engine:jar:5.0.0:test
                          |  \- (org.junit.platform:junit-platform-engine:jar:1.0.0:test - omitted for conflict with 1.0.2)
                          \- org.junit.vintage:junit-vintage-engine:jar:4.12.0:test
                             \- (org.junit.platform:junit-platform-engine:jar:1.0.0:test - omitted for conflict with 1.0.2)

                        38. org.laidu.learn:script:jar:1.0-SNAPSHOT
                          +- org.junit.jupiter:junit-jupiter-engine:jar:5.0.0:test
                          |  \- (org.junit.platform:junit-platform-engine:jar:1.0.0:test - omitted for conflict with 1.0.2)
                          \- org.junit.vintage:junit-vintage-engine:jar:4.12.0:test
                             \- (org.junit.platform:junit-platform-engine:jar:1.0.0:test - omitted for conflict with 1.0.2)

                        39. +
                        40. org.laidu.learn:shiro:jar:1.0-SNAPSHOT
                          +- org.junit.jupiter:junit-jupiter-engine:jar:5.0.0:test
                          |  \- (org.junit.platform:junit-platform-engine:jar:1.0.0:test - omitted for conflict with 1.0.2)
                          \- org.junit.vintage:junit-vintage-engine:jar:4.12.0:test
                             \- (org.junit.platform:junit-platform-engine:jar:1.0.0:test - omitted for conflict with 1.0.2)

                        41. org.laidu.learn:spring-amqp:jar:1.0-SNAPSHOT
                          +- org.junit.jupiter:junit-jupiter-engine:jar:5.0.0:test
                          |  \- (org.junit.platform:junit-platform-engine:jar:1.0.0:test - omitted for conflict with 1.0.2)
                          \- org.junit.vintage:junit-vintage-engine:jar:4.12.0:test
                             \- (org.junit.platform:junit-platform-engine:jar:1.0.0:test - omitted for conflict with 1.0.2)

                        42. +
                        43. org.laidu.learn:spring-boot-app:jar:0.0.1-SNAPSHOT
                          +- org.junit.jupiter:junit-jupiter-engine:jar:5.0.0:test
                          |  \- (org.junit.platform:junit-platform-engine:jar:1.0.0:test - omitted for conflict with 1.0.2)
                          \- org.junit.vintage:junit-vintage-engine:jar:4.12.0:test
                             \- (org.junit.platform:junit-platform-engine:jar:1.0.0:test - omitted for conflict with 1.0.2)

                        44. +
                        45. org.laidu.learn:spring-boot-shiro:jar:1.0-SNAPSHOT
                          +- org.junit.jupiter:junit-jupiter-engine:jar:5.0.0:test
                          |  \- (org.junit.platform:junit-platform-engine:jar:1.0.0:test - omitted for conflict with 1.0.2)
                          \- org.junit.vintage:junit-vintage-engine:jar:4.12.0:test
                             \- (org.junit.platform:junit-platform-engine:jar:1.0.0:test - omitted for conflict with 1.0.2)

                        46. org.laidu.learn:spring-boot:pom:1.0-SNAPSHOT
                          +- org.junit.jupiter:junit-jupiter-engine:jar:5.0.0:test
                          |  \- (org.junit.platform:junit-platform-engine:jar:1.0.0:test - omitted for conflict with 1.0.2)
                          \- org.junit.vintage:junit-vintage-engine:jar:4.12.0:test
                             \- (org.junit.platform:junit-platform-engine:jar:1.0.0:test - omitted for conflict with 1.0.2)

                        47. org.laidu.learn:spring-cloud:pom:1.0-SNAPSHOT
                          +- org.junit.jupiter:junit-jupiter-engine:jar:5.0.0:test
                          |  \- (org.junit.platform:junit-platform-engine:jar:1.0.0:test - omitted for conflict with 1.0.2)
                          \- org.junit.vintage:junit-vintage-engine:jar:4.12.0:test
                             \- (org.junit.platform:junit-platform-engine:jar:1.0.0:test - omitted for conflict with 1.0.2)

                        48. org.laidu.learn:spring-data:pom:1.0-SNAPSHOT
                          +- org.junit.jupiter:junit-jupiter-engine:jar:5.0.0:test
                          |  \- (org.junit.platform:junit-platform-engine:jar:1.0.0:test - omitted for conflict with 1.0.2)
                          \- org.junit.vintage:junit-vintage-engine:jar:4.12.0:test
                             \- (org.junit.platform:junit-platform-engine:jar:1.0.0:test - omitted for conflict with 1.0.2)

                        49. org.laidu.learn:spring-hadoop:jar:1.0-SNAPSHOT
                          +- org.junit.jupiter:junit-jupiter-engine:jar:5.0.0:test
                          |  \- (org.junit.platform:junit-platform-engine:jar:1.0.0:test - omitted for conflict with 1.0.2)
                          \- org.junit.vintage:junit-vintage-engine:jar:4.12.0:test
                             \- (org.junit.platform:junit-platform-engine:jar:1.0.0:test - omitted for conflict with 1.0.2)

                        50. +
                        51. org.laidu.learn:spring-mvc:jar:1.0-SNAPSHOT
                          +- org.junit.jupiter:junit-jupiter-engine:jar:5.0.0:test
                          |  \- (org.junit.platform:junit-platform-engine:jar:1.0.0:test - omitted for conflict with 1.0.2)
                          \- org.junit.vintage:junit-vintage-engine:jar:4.12.0:test
                             \- (org.junit.platform:junit-platform-engine:jar:1.0.0:test - omitted for conflict with 1.0.2)

                        52. org.laidu.learn:spring-mybatis:jar:1.0-SNAPSHOT
                          +- org.junit.jupiter:junit-jupiter-engine:jar:5.0.0:test
                          |  \- (org.junit.platform:junit-platform-engine:jar:1.0.0:test - omitted for conflict with 1.0.2)
                          \- org.junit.vintage:junit-vintage-engine:jar:4.12.0:test
                             \- (org.junit.platform:junit-platform-engine:jar:1.0.0:test - omitted for conflict with 1.0.2)

                        53. +
                        54. org.laidu.learn:spring-redis:jar:1.0-SNAPSHOT
                          +- org.junit.jupiter:junit-jupiter-engine:jar:5.0.0:test
                          |  \- (org.junit.platform:junit-platform-engine:jar:1.0.0:test - omitted for conflict with 1.0.2)
                          \- org.junit.vintage:junit-vintage-engine:jar:4.12.0:test
                             \- (org.junit.platform:junit-platform-engine:jar:1.0.0:test - omitted for conflict with 1.0.2)

                        55. +
                        56. org.laidu.learn:spring-statemachine:jar:1.0-SNAPSHOT
                          +- org.junit.jupiter:junit-jupiter-engine:jar:5.0.0:test
                          |  \- (org.junit.platform:junit-platform-engine:jar:1.0.0:test - omitted for conflict with 1.0.2)
                          \- org.junit.vintage:junit-vintage-engine:jar:4.12.0:test
                             \- (org.junit.platform:junit-platform-engine:jar:1.0.0:test - omitted for conflict with 1.0.2)

                        57. org.laidu.learn:spring-tool:jar:1.0-SNAPSHOT
                          +- org.junit.jupiter:junit-jupiter-engine:jar:5.0.0:test
                          |  \- (org.junit.platform:junit-platform-engine:jar:1.0.0:test - omitted for conflict with 1.0.2)
                          \- org.junit.vintage:junit-vintage-engine:jar:4.12.0:test
                             \- (org.junit.platform:junit-platform-engine:jar:1.0.0:test - omitted for conflict with 1.0.2)

                        58. +
                        59. org.laidu.learn:spring-web:pom:1.0-SNAPSHOT
                          +- org.junit.jupiter:junit-jupiter-engine:jar:5.0.0:test
                          |  \- (org.junit.platform:junit-platform-engine:jar:1.0.0:test - omitted for conflict with 1.0.2)
                          \- org.junit.vintage:junit-vintage-engine:jar:4.12.0:test
                             \- (org.junit.platform:junit-platform-engine:jar:1.0.0:test - omitted for conflict with 1.0.2)

                        60. org.laidu.learn:spring:pom:1.0-SNAPSHOT
                          +- org.junit.jupiter:junit-jupiter-engine:jar:5.0.0:test
                          |  \- (org.junit.platform:junit-platform-engine:jar:1.0.0:test - omitted for conflict with 1.0.2)
                          \- org.junit.vintage:junit-vintage-engine:jar:4.12.0:test
                             \- (org.junit.platform:junit-platform-engine:jar:1.0.0:test - omitted for conflict with 1.0.2)

                        61. +
                        62. org.laidu.learn:task-scheduler:pom:1.0-SNAPSHOT
                          +- org.junit.jupiter:junit-jupiter-engine:jar:5.0.0:test
                          |  \- (org.junit.platform:junit-platform-engine:jar:1.0.0:test - omitted for conflict with 1.0.2)
                          \- org.junit.vintage:junit-vintage-engine:jar:4.12.0:test
                             \- (org.junit.platform:junit-platform-engine:jar:1.0.0:test - omitted for conflict with 1.0.2)

                        63. org.laidu.learn:test:pom:1.0-SNAPSHOT
                          +- org.junit.jupiter:junit-jupiter-engine:jar:5.0.0:test
                          |  \- (org.junit.platform:junit-platform-engine:jar:1.0.0:test - omitted for conflict with 1.0.2)
                          \- org.junit.vintage:junit-vintage-engine:jar:4.12.0:test
                             \- (org.junit.platform:junit-platform-engine:jar:1.0.0:test - omitted for conflict with 1.0.2)

                        64. +
                        65. org.laidu.learn:thumbnailator-google:jar:1.0-SNAPSHOT
                          +- org.junit.jupiter:junit-jupiter-engine:jar:5.0.0:test
                          |  \- (org.junit.platform:junit-platform-engine:jar:1.0.0:test - omitted for conflict with 1.0.2)
                          \- org.junit.vintage:junit-vintage-engine:jar:4.12.0:test
                             \- (org.junit.platform:junit-platform-engine:jar:1.0.0:test - omitted for conflict with 1.0.2)

                        66. org.laidu.learn:web:pom:1.0-SNAPSHOT
                          +- org.junit.jupiter:junit-jupiter-engine:jar:5.0.0:test
                          |  \- (org.junit.platform:junit-platform-engine:jar:1.0.0:test - omitted for conflict with 1.0.2)
                          \- org.junit.vintage:junit-vintage-engine:jar:4.12.0:test
                             \- (org.junit.platform:junit-platform-engine:jar:1.0.0:test - omitted for conflict with 1.0.2)

                        67. org.laidu.learn:webmagic-learn:jar:1.0-SNAPSHOT
                          +- org.junit.jupiter:junit-jupiter-engine:jar:5.0.0:test
                          |  \- (org.junit.platform:junit-platform-engine:jar:1.0.0:test - omitted for conflict with 1.0.2)
                          \- org.junit.vintage:junit-vintage-engine:jar:4.12.0:test
                             \- (org.junit.platform:junit-platform-engine:jar:1.0.0:test - omitted for conflict with 1.0.2)

                        68. org.laidu.learn:webmagic:pom:1.0-SNAPSHOT
                          +- org.junit.jupiter:junit-jupiter-engine:jar:5.0.0:test
                          |  \- (org.junit.platform:junit-platform-engine:jar:1.0.0:test - omitted for conflict with 1.0.2)
                          \- org.junit.vintage:junit-vintage-engine:jar:4.12.0:test
                             \- (org.junit.platform:junit-platform-engine:jar:1.0.0:test - omitted for conflict with 1.0.2)

                        69. -
                        70. org.laidu.learn:x-pack:jar:1.0-SNAPSHOT
                          +- org.junit.jupiter:junit-jupiter-engine:jar:5.0.0:test
                          |  \- (org.junit.platform:junit-platform-engine:jar:1.0.0:test - omitted for conflict with 1.0.2)
                          \- org.junit.vintage:junit-vintage-engine:jar:4.12.0:test
                             \- (org.junit.platform:junit-platform-engine:jar:1.0.0:test - omitted for conflict with 1.0.2)

                        71. org.laidu.learn:xml:jar:1.0-SNAPSHOT
                          +- org.junit.jupiter:junit-jupiter-engine:jar:5.0.0:test
                          |  \- (org.junit.platform:junit-platform-engine:jar:1.0.0:test - omitted for conflict with 1.0.2)
                          \- org.junit.vintage:junit-vintage-engine:jar:4.12.0:test
                             \- (org.junit.platform:junit-platform-engine:jar:1.0.0:test - omitted for conflict with 1.0.2)

                        1.0.2
                        1. org.laidu.crawler:crawler-helper:jar:1.0-SNAPSHOT
                          +- org.junit.platform:junit-platform-engine:jar:1.0.2:test
                          \- org.junit.platform:junit-platform-launcher:jar:1.0.2:test
                             \- (org.junit.platform:junit-platform-engine:jar:1.0.2:test - omitted for duplicate)

                        2. +
                        3. org.laidu.learn.spring.cloud:consumer-hello:jar:0.0.1-SNAPSHOT
                          +- org.junit.platform:junit-platform-engine:jar:1.0.2:test
                          \- org.junit.platform:junit-platform-launcher:jar:1.0.2:test
                             \- (org.junit.platform:junit-platform-engine:jar:1.0.2:test - omitted for duplicate)

                        4. +
                        5. org.laidu.learn.spring.cloud:eureka-server:jar:0.0.1-SNAPSHOT
                          +- org.junit.platform:junit-platform-engine:jar:1.0.2:test
                          \- org.junit.platform:junit-platform-launcher:jar:1.0.2:test
                             \- (org.junit.platform:junit-platform-engine:jar:1.0.2:test - omitted for duplicate)

                        6. +
                        7. org.laidu.learn.spring.cloud:service-hello:jar:0.0.1-SNAPSHOT
                          +- org.junit.platform:junit-platform-engine:jar:1.0.2:test
                          \- org.junit.platform:junit-platform-launcher:jar:1.0.2:test
                             \- (org.junit.platform:junit-platform-engine:jar:1.0.2:test - omitted for duplicate)

                        8. +
                        9. org.laidu.learn.swagger:swagger:jar:0.0.1-SNAPSHOT
                          +- org.junit.platform:junit-platform-engine:jar:1.0.2:test
                          \- org.junit.platform:junit-platform-launcher:jar:1.0.2:test
                             \- (org.junit.platform:junit-platform-engine:jar:1.0.2:test - omitted for duplicate)

                        10. org.laidu.learn:BTrace:jar:1.0-SNAPSHOT
                          +- org.junit.platform:junit-platform-engine:jar:1.0.2:test
                          \- org.junit.platform:junit-platform-launcher:jar:1.0.2:test
                             \- (org.junit.platform:junit-platform-engine:jar:1.0.2:test - omitted for duplicate)

                        11. org.laidu.learn:algorithm:jar:1.0-SNAPSHOT
                          +- org.junit.platform:junit-platform-engine:jar:1.0.2:test
                          \- org.junit.platform:junit-platform-launcher:jar:1.0.2:test
                             \- (org.junit.platform:junit-platform-engine:jar:1.0.2:test - omitted for duplicate)

                        12. +
                        13. org.laidu.learn:apache-poi:jar:1.0-SNAPSHOT
                          +- org.junit.platform:junit-platform-engine:jar:1.0.2:test
                          \- org.junit.platform:junit-platform-launcher:jar:1.0.2:test
                             \- (org.junit.platform:junit-platform-engine:jar:1.0.2:test - omitted for duplicate)

                        14. org.laidu.learn:async-http-client:jar:1.0-SNAPSHOT
                          +- org.junit.platform:junit-platform-engine:jar:1.0.2:test
                          \- org.junit.platform:junit-platform-launcher:jar:1.0.2:test
                             \- (org.junit.platform:junit-platform-engine:jar:1.0.2:test - omitted for duplicate)

                        15. org.laidu.learn:aws:pom:1.0-SNAPSHOT
                          +- org.junit.platform:junit-platform-engine:jar:1.0.2:test
                          \- org.junit.platform:junit-platform-launcher:jar:1.0.2:test
                             \- (org.junit.platform:junit-platform-engine:jar:1.0.2:test - omitted for duplicate)

                        16. org.laidu.learn:big-data:pom:1.0-SNAPSHOT
                          +- org.junit.platform:junit-platform-engine:jar:1.0.2:test
                          \- org.junit.platform:junit-platform-launcher:jar:1.0.2:test
                             \- (org.junit.platform:junit-platform-engine:jar:1.0.2:test - omitted for duplicate)

                        17. @@ -1066,6 +1140,7 @@

                          org.junit.platform:ju
                        18. org.laidu.learn:commons-lang3:jar:1.0-SNAPSHOT
                          +- org.junit.platform:junit-platform-engine:jar:1.0.2:test
                          \- org.junit.platform:junit-platform-launcher:jar:1.0.2:test
                             \- (org.junit.platform:junit-platform-engine:jar:1.0.2:test - omitted for duplicate)

                        19. org.laidu.learn:commons-net:jar:1.0-SNAPSHOT
                          +- org.junit.platform:junit-platform-engine:jar:1.0.2:test
                          \- org.junit.platform:junit-platform-launcher:jar:1.0.2:test
                             \- (org.junit.platform:junit-platform-engine:jar:1.0.2:test - omitted for duplicate)

                        20. org.laidu.learn:commons-text:jar:1.0-SNAPSHOT
                          +- org.junit.platform:junit-platform-engine:jar:1.0.2:test
                          \- org.junit.platform:junit-platform-launcher:jar:1.0.2:test
                             \- (org.junit.platform:junit-platform-engine:jar:1.0.2:test - omitted for duplicate)

                        21. +
                        22. org.laidu.learn:compress:pom:1.0-SNAPSHOT
                          +- org.junit.platform:junit-platform-engine:jar:1.0.2:test
                          \- org.junit.platform:junit-platform-launcher:jar:1.0.2:test
                             \- (org.junit.platform:junit-platform-engine:jar:1.0.2:test - omitted for duplicate)

                        23. org.laidu.learn:concurrent:jar:1.0-SNAPSHOT
                          +- org.junit.platform:junit-platform-engine:jar:1.0.2:test
                          \- org.junit.platform:junit-platform-launcher:jar:1.0.2:test
                             \- (org.junit.platform:junit-platform-engine:jar:1.0.2:test - omitted for duplicate)

                        24. org.laidu.learn:convenient-util:pom:1.0-SNAPSHOT
                          +- org.junit.platform:junit-platform-engine:jar:1.0.2:test
                          \- org.junit.platform:junit-platform-launcher:jar:1.0.2:test
                             \- (org.junit.platform:junit-platform-engine:jar:1.0.2:test - omitted for duplicate)

                        25. org.laidu.learn:crawler:jar:1.0-SNAPSHOT
                          +- org.junit.platform:junit-platform-engine:jar:1.0.2:test
                          \- org.junit.platform:junit-platform-launcher:jar:1.0.2:test
                             \- (org.junit.platform:junit-platform-engine:jar:1.0.2:test - omitted for duplicate)

                        26. @@ -1075,6 +1150,7 @@

                          org.junit.platform:ju
                        27. org.laidu.learn:dev-ops:pom:1.0-SNAPSHOT
                          +- org.junit.platform:junit-platform-engine:jar:1.0.2:test
                          \- org.junit.platform:junit-platform-launcher:jar:1.0.2:test
                             \- (org.junit.platform:junit-platform-engine:jar:1.0.2:test - omitted for duplicate)

                        28. org.laidu.learn:drools:jar:1.0-SNAPSHOT
                          +- org.junit.platform:junit-platform-engine:jar:1.0.2:test
                          \- org.junit.platform:junit-platform-launcher:jar:1.0.2:test
                             \- (org.junit.platform:junit-platform-engine:jar:1.0.2:test - omitted for duplicate)

                        29. org.laidu.learn:dynamoDB:jar:1.0-SNAPSHOT
                          +- org.junit.platform:junit-platform-engine:jar:1.0.2:test
                          \- org.junit.platform:junit-platform-launcher:jar:1.0.2:test
                             \- (org.junit.platform:junit-platform-engine:jar:1.0.2:test - omitted for duplicate)

                        30. +
                        31. org.laidu.learn:elastic-job:jar:1.0-SNAPSHOT
                          +- org.junit.platform:junit-platform-engine:jar:1.0.2:test
                          \- org.junit.platform:junit-platform-launcher:jar:1.0.2:test
                             \- (org.junit.platform:junit-platform-engine:jar:1.0.2:test - omitted for duplicate)

                        32. org.laidu.learn:fastutil:jar:1.0-SNAPSHOT
                          +- org.junit.platform:junit-platform-engine:jar:1.0.2:test
                          \- org.junit.platform:junit-platform-launcher:jar:1.0.2:test
                             \- (org.junit.platform:junit-platform-engine:jar:1.0.2:test - omitted for duplicate)

                        33. org.laidu.learn:framework:pom:1.0-SNAPSHOT
                          +- org.junit.platform:junit-platform-engine:jar:1.0.2:test
                          \- org.junit.platform:junit-platform-launcher:jar:1.0.2:test
                             \- (org.junit.platform:junit-platform-engine:jar:1.0.2:test - omitted for duplicate)

                        34. org.laidu.learn:hadoop:jar:1.0-SNAPSHOT
                          +- org.junit.platform:junit-platform-engine:jar:1.0.2:test
                          \- org.junit.platform:junit-platform-launcher:jar:1.0.2:test
                             \- (org.junit.platform:junit-platform-engine:jar:1.0.2:test - omitted for duplicate)

                        35. @@ -1095,73 +1171,164 @@

                          org.junit.platform:ju
                        36. org.laidu.learn:production-component:pom:1.0-SNAPSHOT
                          +- org.junit.platform:junit-platform-engine:jar:1.0.2:test
                          \- org.junit.platform:junit-platform-launcher:jar:1.0.2:test
                             \- (org.junit.platform:junit-platform-engine:jar:1.0.2:test - omitted for duplicate)

                        37. org.laidu.learn:rules-engine:pom:1.0-SNAPSHOT
                          +- org.junit.platform:junit-platform-engine:jar:1.0.2:test
                          \- org.junit.platform:junit-platform-launcher:jar:1.0.2:test
                             \- (org.junit.platform:junit-platform-engine:jar:1.0.2:test - omitted for duplicate)

                        38. org.laidu.learn:script:jar:1.0-SNAPSHOT
                          +- org.junit.platform:junit-platform-engine:jar:1.0.2:test
                          \- org.junit.platform:junit-platform-launcher:jar:1.0.2:test
                             \- (org.junit.platform:junit-platform-engine:jar:1.0.2:test - omitted for duplicate)

                        39. +
                        40. org.laidu.learn:shiro:jar:1.0-SNAPSHOT
                          +- org.junit.platform:junit-platform-engine:jar:1.0.2:test
                          \- org.junit.platform:junit-platform-launcher:jar:1.0.2:test
                             \- (org.junit.platform:junit-platform-engine:jar:1.0.2:test - omitted for duplicate)

                        41. org.laidu.learn:spring-amqp:jar:1.0-SNAPSHOT
                          +- org.junit.platform:junit-platform-engine:jar:1.0.2:test
                          \- org.junit.platform:junit-platform-launcher:jar:1.0.2:test
                             \- (org.junit.platform:junit-platform-engine:jar:1.0.2:test - omitted for duplicate)

                        42. +
                        43. org.laidu.learn:spring-boot-app:jar:0.0.1-SNAPSHOT
                          +- org.junit.platform:junit-platform-engine:jar:1.0.2:test
                          \- org.junit.platform:junit-platform-launcher:jar:1.0.2:test
                             \- (org.junit.platform:junit-platform-engine:jar:1.0.2:test - omitted for duplicate)

                        44. +
                        45. org.laidu.learn:spring-boot-shiro:jar:1.0-SNAPSHOT
                          +- org.junit.platform:junit-platform-engine:jar:1.0.2:test
                          \- org.junit.platform:junit-platform-launcher:jar:1.0.2:test
                             \- (org.junit.platform:junit-platform-engine:jar:1.0.2:test - omitted for duplicate)

                        46. org.laidu.learn:spring-boot:pom:1.0-SNAPSHOT
                          +- org.junit.platform:junit-platform-engine:jar:1.0.2:test
                          \- org.junit.platform:junit-platform-launcher:jar:1.0.2:test
                             \- (org.junit.platform:junit-platform-engine:jar:1.0.2:test - omitted for duplicate)

                        47. org.laidu.learn:spring-cloud:pom:1.0-SNAPSHOT
                          +- org.junit.platform:junit-platform-engine:jar:1.0.2:test
                          \- org.junit.platform:junit-platform-launcher:jar:1.0.2:test
                             \- (org.junit.platform:junit-platform-engine:jar:1.0.2:test - omitted for duplicate)

                        48. org.laidu.learn:spring-data:pom:1.0-SNAPSHOT
                          +- org.junit.platform:junit-platform-engine:jar:1.0.2:test
                          \- org.junit.platform:junit-platform-launcher:jar:1.0.2:test
                             \- (org.junit.platform:junit-platform-engine:jar:1.0.2:test - omitted for duplicate)

                        49. org.laidu.learn:spring-hadoop:jar:1.0-SNAPSHOT
                          +- org.junit.platform:junit-platform-engine:jar:1.0.2:test
                          \- org.junit.platform:junit-platform-launcher:jar:1.0.2:test
                             \- (org.junit.platform:junit-platform-engine:jar:1.0.2:test - omitted for duplicate)

                        50. +
                        51. org.laidu.learn:spring-mvc:jar:1.0-SNAPSHOT
                          +- org.junit.platform:junit-platform-engine:jar:1.0.2:test
                          \- org.junit.platform:junit-platform-launcher:jar:1.0.2:test
                             \- (org.junit.platform:junit-platform-engine:jar:1.0.2:test - omitted for duplicate)

                        52. org.laidu.learn:spring-mybatis:jar:1.0-SNAPSHOT
                          +- org.junit.platform:junit-platform-engine:jar:1.0.2:test
                          \- org.junit.platform:junit-platform-launcher:jar:1.0.2:test
                             \- (org.junit.platform:junit-platform-engine:jar:1.0.2:test - omitted for duplicate)

                        53. +
                        54. org.laidu.learn:spring-redis:jar:1.0-SNAPSHOT
                          +- org.junit.platform:junit-platform-engine:jar:1.0.2:test
                          \- org.junit.platform:junit-platform-launcher:jar:1.0.2:test
                             \- (org.junit.platform:junit-platform-engine:jar:1.0.2:test - omitted for duplicate)

                        55. +
                        56. org.laidu.learn:spring-statemachine:jar:1.0-SNAPSHOT
                          +- org.junit.platform:junit-platform-engine:jar:1.0.2:test
                          \- org.junit.platform:junit-platform-launcher:jar:1.0.2:test
                             \- (org.junit.platform:junit-platform-engine:jar:1.0.2:test - omitted for duplicate)

                        57. org.laidu.learn:spring-tool:jar:1.0-SNAPSHOT
                          +- org.junit.platform:junit-platform-engine:jar:1.0.2:test
                          \- org.junit.platform:junit-platform-launcher:jar:1.0.2:test
                             \- (org.junit.platform:junit-platform-engine:jar:1.0.2:test - omitted for duplicate)

                        58. +
                        59. org.laidu.learn:spring-web:pom:1.0-SNAPSHOT
                          +- org.junit.platform:junit-platform-engine:jar:1.0.2:test
                          \- org.junit.platform:junit-platform-launcher:jar:1.0.2:test
                             \- (org.junit.platform:junit-platform-engine:jar:1.0.2:test - omitted for duplicate)

                        60. org.laidu.learn:spring:pom:1.0-SNAPSHOT
                          +- org.junit.platform:junit-platform-engine:jar:1.0.2:test
                          \- org.junit.platform:junit-platform-launcher:jar:1.0.2:test
                             \- (org.junit.platform:junit-platform-engine:jar:1.0.2:test - omitted for duplicate)

                        61. +
                        62. org.laidu.learn:task-scheduler:pom:1.0-SNAPSHOT
                          +- org.junit.platform:junit-platform-engine:jar:1.0.2:test
                          \- org.junit.platform:junit-platform-launcher:jar:1.0.2:test
                             \- (org.junit.platform:junit-platform-engine:jar:1.0.2:test - omitted for duplicate)

                        63. org.laidu.learn:test:pom:1.0-SNAPSHOT
                          +- org.junit.platform:junit-platform-engine:jar:1.0.2:test
                          \- org.junit.platform:junit-platform-launcher:jar:1.0.2:test
                             \- (org.junit.platform:junit-platform-engine:jar:1.0.2:test - omitted for duplicate)

                        64. +
                        65. org.laidu.learn:thumbnailator-google:jar:1.0-SNAPSHOT
                          +- org.junit.platform:junit-platform-engine:jar:1.0.2:test
                          \- org.junit.platform:junit-platform-launcher:jar:1.0.2:test
                             \- (org.junit.platform:junit-platform-engine:jar:1.0.2:test - omitted for duplicate)

                        66. org.laidu.learn:web:pom:1.0-SNAPSHOT
                          +- org.junit.platform:junit-platform-engine:jar:1.0.2:test
                          \- org.junit.platform:junit-platform-launcher:jar:1.0.2:test
                             \- (org.junit.platform:junit-platform-engine:jar:1.0.2:test - omitted for duplicate)

                        67. org.laidu.learn:webmagic-learn:jar:1.0-SNAPSHOT
                          +- org.junit.platform:junit-platform-engine:jar:1.0.2:test
                          \- org.junit.platform:junit-platform-launcher:jar:1.0.2:test
                             \- (org.junit.platform:junit-platform-engine:jar:1.0.2:test - omitted for duplicate)

                        68. org.laidu.learn:webmagic:pom:1.0-SNAPSHOT
                          +- org.junit.platform:junit-platform-engine:jar:1.0.2:test
                          \- org.junit.platform:junit-platform-launcher:jar:1.0.2:test
                             \- (org.junit.platform:junit-platform-engine:jar:1.0.2:test - omitted for duplicate)

                        69. -
                        70. org.laidu.learn:x-pack:jar:1.0-SNAPSHOT
                          +- org.junit.platform:junit-platform-engine:jar:1.0.2:test
                          \- org.junit.platform:junit-platform-launcher:jar:1.0.2:test
                             \- (org.junit.platform:junit-platform-engine:jar:1.0.2:test - omitted for duplicate)

                        71. org.laidu.learn:xml:jar:1.0-SNAPSHOT
                          +- org.junit.platform:junit-platform-engine:jar:1.0.2:test
                          \- org.junit.platform:junit-platform-launcher:jar:1.0.2:test
                             \- (org.junit.platform:junit-platform-engine:jar:1.0.2:test - omitted for duplicate)

                        org.objenesis:objenesis

                        - +
                        [Error] - - -
                        2.1 -
                          -
                        1. org.laidu.learn.swagger:swagger:jar:0.0.1-SNAPSHOT
                          \- org.springframework.boot:spring-boot-starter-test:jar:1.5.9.RELEASE:test
                             \- org.mockito:mockito-core:jar:1.10.19:test
                                \- (org.objenesis:objenesis:jar:2.1:test - omitted for conflict with 2.5.1)

                        2.5.1
                          -
                        1. org.laidu.learn.swagger:swagger:jar:0.0.1-SNAPSHOT
                          \- org.laidu.learn:common-util:jar:1.0-SNAPSHOT:compile
                             \- de.ruedigermoeller:fst:jar:2.57:compile
                                \- org.objenesis:objenesis:jar:2.5.1:compile

                        +
                      1. org.laidu.learn.swagger:swagger:jar:0.0.1-SNAPSHOT
                        \- org.laidu.learn:common-util:jar:1.0-SNAPSHOT:compile
                           \- de.ruedigermoeller:fst:jar:2.57:compile
                              \- org.objenesis:objenesis:jar:2.5.1:compile

                      2.6 +
                        +
                      1. org.laidu.learn.swagger:swagger:jar:0.0.1-SNAPSHOT
                        \- org.springframework.boot:spring-boot-starter-test:jar:2.0.1.RELEASE:test
                           \- org.mockito:mockito-core:jar:2.15.0:test
                              \- (org.objenesis:objenesis:jar:2.6:test - omitted for conflict with 2.5.1)

                      org.ow2.asm:asm

                      - +
                      [Error] - - - +
                    1. org.laidu.learn.spring.cloud:eureka-server:jar:0.0.1-SNAPSHOT
                      \- org.springframework.boot:spring-boot-starter-test:jar:2.0.1.RELEASE:test
                         \- com.jayway.jsonpath:json-path:jar:2.4.0:test
                            \- net.minidev:json-smart:jar:2.3:test
                               \- net.minidev:accessors-smart:jar:1.2:test
                                  \- (org.ow2.asm:asm:jar:5.0.4:test - omitted for conflict with 6.0)

                    2. +
                    3. org.laidu.learn:spring-mvc:jar:1.0-SNAPSHOT
                      \- org.springframework.boot:spring-boot-starter-test:jar:2.0.2.RELEASE:test
                         \- com.jayway.jsonpath:json-path:jar:2.4.0:test
                            \- net.minidev:json-smart:jar:2.3:test
                               \- net.minidev:accessors-smart:jar:1.2:test
                                  \- (org.ow2.asm:asm:jar:5.0.4:test - omitted for conflict with 6.0)

                    4. 5.0.3 -
                        -
                      1. org.laidu.learn.spring.cloud:consumer-hello:jar:0.0.1-SNAPSHOT
                        \- org.springframework.boot:spring-boot-starter-test:jar:1.5.10.RELEASE:test
                           \- com.jayway.jsonpath:json-path:jar:2.2.0:test
                              \- net.minidev:json-smart:jar:2.2.1:test
                                 \- net.minidev:accessors-smart:jar:1.1:test
                                    \- (org.ow2.asm:asm:jar:5.0.3:test - omitted for conflict with 5.0.4)

                      2. -
                      3. org.laidu.learn.spring.cloud:eureka-server:jar:0.0.1-SNAPSHOT
                        \- org.springframework.boot:spring-boot-starter-test:jar:1.5.10.RELEASE:test
                           \- com.jayway.jsonpath:json-path:jar:2.2.0:test
                              \- net.minidev:json-smart:jar:2.2.1:test
                                 \- net.minidev:accessors-smart:jar:1.1:test
                                    \- (org.ow2.asm:asm:jar:5.0.3:test - omitted for conflict with 6.0)

                      5.0.4
                        -
                      1. org.laidu.learn.spring.cloud:consumer-hello:jar:0.0.1-SNAPSHOT
                        \- org.springframework.cloud:spring-cloud-starter-hystrix:jar:1.4.3.RELEASE:compile
                           \- org.springframework.cloud:spring-cloud-starter-netflix-hystrix:jar:1.4.3.RELEASE:compile
                              \- com.netflix.hystrix:hystrix-javanica:jar:1.5.12:compile
                                 \- org.ow2.asm:asm:jar:5.0.4:runtime

                      6.0
                        -
                      1. org.laidu.learn.spring.cloud:eureka-server:jar:0.0.1-SNAPSHOT
                        \- org.springframework.boot:spring-boot-starter-jetty:jar:1.5.10.RELEASE:compile
                           \- org.eclipse.jetty.websocket:javax-websocket-server-impl:jar:9.4.8.v20171121:compile
                              \- org.eclipse.jetty:jetty-annotations:jar:9.4.8.v20171121:compile
                                 +- org.ow2.asm:asm:jar:6.0:compile
                                 \- org.ow2.asm:asm-commons:jar:6.0:compile
                                    \- org.ow2.asm:asm-tree:jar:6.0:compile
                                       \- (org.ow2.asm:asm:jar:6.0:compile - omitted for duplicate)

                      +
                    5. org.laidu.learn.spring.cloud:eureka-server:jar:0.0.1-SNAPSHOT
                      \- org.springframework.boot:spring-boot-starter-jetty:jar:2.0.1.RELEASE:compile
                         \- org.eclipse.jetty.websocket:javax-websocket-server-impl:jar:9.4.9.v20180320:compile
                            \- org.eclipse.jetty:jetty-annotations:jar:9.4.9.v20180320:compile
                               +- org.ow2.asm:asm:jar:6.0:compile
                               \- org.ow2.asm:asm-commons:jar:6.0:compile
                                  \- org.ow2.asm:asm-tree:jar:6.0:compile
                                     \- (org.ow2.asm:asm:jar:6.0:compile - omitted for duplicate)

                    6. +
                    7. org.laidu.learn:spring-mvc:jar:1.0-SNAPSHOT
                      \- org.springframework.boot:spring-boot-starter-jetty:jar:2.0.1.RELEASE:compile
                         \- org.eclipse.jetty.websocket:javax-websocket-server-impl:jar:9.4.9.v20180320:compile
                            \- org.eclipse.jetty:jetty-annotations:jar:9.4.9.v20180320:compile
                               +- org.ow2.asm:asm:jar:6.0:compile
                               \- org.ow2.asm:asm-commons:jar:6.0:compile
                                  \- org.ow2.asm:asm-tree:jar:6.0:compile
                                     \- (org.ow2.asm:asm:jar:6.0:compile - omitted for duplicate)

                    -

                    org.scala-lang.modules:scala-java8-compat_2.11

                    +

                    org.projectlombok:lombok

                    [Error] + + + + +
                    1.16.18 +
                      +
                    1. org.laidu.crawler:crawler-helper:jar:1.0-SNAPSHOT
                      \- org.projectlombok:lombok:jar:1.16.18:compile

                    2. +
                    3. org.laidu.learn:algorithm:jar:1.0-SNAPSHOT
                      \- org.projectlombok:lombok:jar:1.16.18:compile

                    4. +
                    5. org.laidu.learn:apache-poi:jar:1.0-SNAPSHOT
                      \- org.projectlombok:lombok:jar:1.16.18:compile

                    6. +
                    7. org.laidu.learn:async-http-client:jar:1.0-SNAPSHOT
                      \- org.projectlombok:lombok:jar:1.16.18:compile

                    8. +
                    9. org.laidu.learn:aws:pom:1.0-SNAPSHOT
                      \- org.projectlombok:lombok:jar:1.16.18:compile

                    10. +
                    11. org.laidu.learn:common:pom:1.0-SNAPSHOT
                      \- org.projectlombok:lombok:jar:1.16.18:compile

                    12. +
                    13. org.laidu.learn:commons-cli:jar:1.0-SNAPSHOT
                      \- org.projectlombok:lombok:jar:1.16.18:compile

                    14. +
                    15. org.laidu.learn:commons-lang3:jar:1.0-SNAPSHOT
                      \- org.projectlombok:lombok:jar:1.16.18:compile

                    16. +
                    17. org.laidu.learn:commons-net:jar:1.0-SNAPSHOT
                      \- org.projectlombok:lombok:jar:1.16.18:compile

                    18. +
                    19. org.laidu.learn:commons-text:jar:1.0-SNAPSHOT
                      \- org.projectlombok:lombok:jar:1.16.18:compile

                    20. +
                    21. org.laidu.learn:compress:pom:1.0-SNAPSHOT
                      \- org.projectlombok:lombok:jar:1.16.18:compile

                    22. +
                    23. org.laidu.learn:drools:jar:1.0-SNAPSHOT
                      \- org.projectlombok:lombok:jar:1.16.18:compile

                    24. +
                    25. org.laidu.learn:dynamoDB:jar:1.0-SNAPSHOT
                      \- org.projectlombok:lombok:jar:1.16.18:compile

                    26. +
                    27. org.laidu.learn:elastic-job:jar:1.0-SNAPSHOT
                      \- org.projectlombok:lombok:jar:1.16.18:compile

                    28. +
                    29. org.laidu.learn:framework:pom:1.0-SNAPSHOT
                      \- org.projectlombok:lombok:jar:1.16.18:compile

                    30. +
                    31. org.laidu.learn:httpclient:jar:1.0-SNAPSHOT
                      \- org.projectlombok:lombok:jar:1.16.18:compile

                    32. +
                    33. org.laidu.learn:junit5:jar:1.0-SNAPSHOT
                      \- org.projectlombok:lombok:jar:1.16.18:compile

                    34. +
                    35. org.laidu.learn:mockito:jar:1.0-SNAPSHOT
                      \- org.projectlombok:lombok:jar:1.16.18:compile

                    36. +
                    37. org.laidu.learn:netty:jar:1.0-SNAPSHOT
                      \- org.projectlombok:lombok:jar:1.16.18:compile

                    38. +
                    39. org.laidu.learn:network:pom:1.0-SNAPSHOT
                      \- org.projectlombok:lombok:jar:1.16.18:compile

                    40. +
                    41. org.laidu.learn:play:jar:1.0-SNAPSHOT
                      \- org.projectlombok:lombok:jar:1.16.18:compile

                    42. +
                    43. org.laidu.learn:rules-engine:pom:1.0-SNAPSHOT
                      \- org.projectlombok:lombok:jar:1.16.18:compile

                    44. +
                    45. org.laidu.learn:shiro:jar:1.0-SNAPSHOT
                      \- org.projectlombok:lombok:jar:1.16.18:compile

                    46. +
                    47. org.laidu.learn:spring-amqp:jar:1.0-SNAPSHOT
                      \- org.projectlombok:lombok:jar:1.16.18:compile

                    48. +
                    49. org.laidu.learn:spring-data:pom:1.0-SNAPSHOT
                      \- org.projectlombok:lombok:jar:1.16.18:compile

                    50. +
                    51. org.laidu.learn:spring-hadoop:jar:1.0-SNAPSHOT
                      \- org.projectlombok:lombok:jar:1.16.18:compile

                    52. +
                    53. org.laidu.learn:spring-mybatis:jar:1.0-SNAPSHOT
                      \- org.projectlombok:lombok:jar:1.16.18:compile

                    54. +
                    55. org.laidu.learn:spring-redis:jar:1.0-SNAPSHOT
                      \- org.projectlombok:lombok:jar:1.16.18:compile

                    56. +
                    57. org.laidu.learn:spring-statemachine:jar:1.0-SNAPSHOT
                      \- org.projectlombok:lombok:jar:1.16.18:compile

                    58. +
                    59. org.laidu.learn:spring:pom:1.0-SNAPSHOT
                      \- org.projectlombok:lombok:jar:1.16.18:compile

                    60. +
                    61. org.laidu.learn:task-scheduler:pom:1.0-SNAPSHOT
                      \- org.projectlombok:lombok:jar:1.16.18:compile

                    62. +
                    63. org.laidu.learn:test:pom:1.0-SNAPSHOT
                      \- org.projectlombok:lombok:jar:1.16.18:compile

                    64. +
                    65. org.laidu.learn:thumbnailator-google:jar:1.0-SNAPSHOT
                      \- org.projectlombok:lombok:jar:1.16.18:compile

                    66. +
                    67. org.laidu.learn:web:pom:1.0-SNAPSHOT
                      \- org.projectlombok:lombok:jar:1.16.18:compile

                    68. +
                    69. org.laidu.learn:webmagic-learn:jar:1.0-SNAPSHOT
                      \- org.projectlombok:lombok:jar:1.16.18:compile

                    70. +
                    71. org.laidu.learn:webmagic:pom:1.0-SNAPSHOT
                      \- org.projectlombok:lombok:jar:1.16.18:compile

                    1.16.20 +
                      +
                    1. org.laidu.crawler:crawler-helper:jar:1.0-SNAPSHOT
                      \- org.laidu.learn:common-util:jar:1.0-SNAPSHOT:compile
                         \- (org.projectlombok:lombok:jar:1.16.20:compile - omitted for conflict with 1.16.18)

                    2. +
                    3. org.laidu.learn:algorithm:jar:1.0-SNAPSHOT
                      \- org.laidu.learn:common-util:jar:1.0-SNAPSHOT:compile
                         \- (org.projectlombok:lombok:jar:1.16.20:compile - omitted for conflict with 1.16.18)

                    4. +
                    5. org.laidu.learn:apache-poi:jar:1.0-SNAPSHOT
                      \- org.laidu.learn:common-util:jar:1.0-SNAPSHOT:compile
                         \- (org.projectlombok:lombok:jar:1.16.20:compile - omitted for conflict with 1.16.18)

                    6. +
                    7. org.laidu.learn:async-http-client:jar:1.0-SNAPSHOT
                      \- org.laidu.learn:common-util:jar:1.0-SNAPSHOT:compile
                         \- (org.projectlombok:lombok:jar:1.16.20:compile - omitted for conflict with 1.16.18)

                    8. +
                    9. org.laidu.learn:aws:pom:1.0-SNAPSHOT
                      \- org.laidu.learn:common-util:jar:1.0-SNAPSHOT:compile
                         \- (org.projectlombok:lombok:jar:1.16.20:compile - omitted for conflict with 1.16.18)

                    10. +
                    11. org.laidu.learn:common:pom:1.0-SNAPSHOT
                      \- org.laidu.learn:common-util:jar:1.0-SNAPSHOT:compile
                         \- (org.projectlombok:lombok:jar:1.16.20:compile - omitted for conflict with 1.16.18)

                    12. +
                    13. org.laidu.learn:commons-cli:jar:1.0-SNAPSHOT
                      \- org.laidu.learn:common-util:jar:1.0-SNAPSHOT:compile
                         \- (org.projectlombok:lombok:jar:1.16.20:compile - omitted for conflict with 1.16.18)

                    14. +
                    15. org.laidu.learn:commons-lang3:jar:1.0-SNAPSHOT
                      \- org.laidu.learn:common-util:jar:1.0-SNAPSHOT:compile
                         \- (org.projectlombok:lombok:jar:1.16.20:compile - omitted for conflict with 1.16.18)

                    16. +
                    17. org.laidu.learn:commons-net:jar:1.0-SNAPSHOT
                      \- org.laidu.learn:common-util:jar:1.0-SNAPSHOT:compile
                         \- (org.projectlombok:lombok:jar:1.16.20:compile - omitted for conflict with 1.16.18)

                    18. +
                    19. org.laidu.learn:commons-text:jar:1.0-SNAPSHOT
                      \- org.laidu.learn:common-util:jar:1.0-SNAPSHOT:compile
                         \- (org.projectlombok:lombok:jar:1.16.20:compile - omitted for conflict with 1.16.18)

                    20. +
                    21. org.laidu.learn:compress:pom:1.0-SNAPSHOT
                      \- org.laidu.learn:common-util:jar:1.0-SNAPSHOT:compile
                         \- (org.projectlombok:lombok:jar:1.16.20:compile - omitted for conflict with 1.16.18)

                    22. +
                    23. org.laidu.learn:drools:jar:1.0-SNAPSHOT
                      \- org.laidu.learn:common-util:jar:1.0-SNAPSHOT:compile
                         \- (org.projectlombok:lombok:jar:1.16.20:compile - omitted for conflict with 1.16.18)

                    24. +
                    25. org.laidu.learn:dynamoDB:jar:1.0-SNAPSHOT
                      \- org.laidu.learn:common-util:jar:1.0-SNAPSHOT:compile
                         \- (org.projectlombok:lombok:jar:1.16.20:compile - omitted for conflict with 1.16.18)

                    26. +
                    27. org.laidu.learn:elastic-job:jar:1.0-SNAPSHOT
                      \- org.laidu.learn:common-util:jar:1.0-SNAPSHOT:compile
                         \- (org.projectlombok:lombok:jar:1.16.20:compile - omitted for conflict with 1.16.18)

                    28. +
                    29. org.laidu.learn:framework:pom:1.0-SNAPSHOT
                      \- org.laidu.learn:common-util:jar:1.0-SNAPSHOT:compile
                         \- (org.projectlombok:lombok:jar:1.16.20:compile - omitted for conflict with 1.16.18)

                    30. +
                    31. org.laidu.learn:httpclient:jar:1.0-SNAPSHOT
                      \- org.laidu.learn:common-util:jar:1.0-SNAPSHOT:compile
                         \- (org.projectlombok:lombok:jar:1.16.20:compile - omitted for conflict with 1.16.18)

                    32. +
                    33. org.laidu.learn:junit5:jar:1.0-SNAPSHOT
                      \- org.laidu.learn:common-util:jar:1.0-SNAPSHOT:compile
                         \- (org.projectlombok:lombok:jar:1.16.20:compile - omitted for conflict with 1.16.18)

                    34. +
                    35. org.laidu.learn:mockito:jar:1.0-SNAPSHOT
                      \- org.laidu.learn:common-util:jar:1.0-SNAPSHOT:compile
                         \- (org.projectlombok:lombok:jar:1.16.20:compile - omitted for conflict with 1.16.18)

                    36. +
                    37. org.laidu.learn:netty:jar:1.0-SNAPSHOT
                      \- org.laidu.learn:common-util:jar:1.0-SNAPSHOT:compile
                         \- (org.projectlombok:lombok:jar:1.16.20:compile - omitted for conflict with 1.16.18)

                    38. +
                    39. org.laidu.learn:network:pom:1.0-SNAPSHOT
                      \- org.laidu.learn:common-util:jar:1.0-SNAPSHOT:compile
                         \- (org.projectlombok:lombok:jar:1.16.20:compile - omitted for conflict with 1.16.18)

                    40. +
                    41. org.laidu.learn:play:jar:1.0-SNAPSHOT
                      \- org.laidu.learn:common-util:jar:1.0-SNAPSHOT:compile
                         \- (org.projectlombok:lombok:jar:1.16.20:compile - omitted for conflict with 1.16.18)

                    42. +
                    43. org.laidu.learn:rules-engine:pom:1.0-SNAPSHOT
                      \- org.laidu.learn:common-util:jar:1.0-SNAPSHOT:compile
                         \- (org.projectlombok:lombok:jar:1.16.20:compile - omitted for conflict with 1.16.18)

                    44. +
                    45. org.laidu.learn:shiro:jar:1.0-SNAPSHOT
                      \- org.laidu.learn:common-util:jar:1.0-SNAPSHOT:compile
                         \- (org.projectlombok:lombok:jar:1.16.20:compile - omitted for conflict with 1.16.18)

                    46. +
                    47. org.laidu.learn:spring-amqp:jar:1.0-SNAPSHOT
                      \- org.laidu.learn:common-util:jar:1.0-SNAPSHOT:compile
                         \- (org.projectlombok:lombok:jar:1.16.20:compile - omitted for conflict with 1.16.18)

                    48. +
                    49. org.laidu.learn:spring-data:pom:1.0-SNAPSHOT
                      \- org.laidu.learn:common-util:jar:1.0-SNAPSHOT:compile
                         \- (org.projectlombok:lombok:jar:1.16.20:compile - omitted for conflict with 1.16.18)

                    50. +
                    51. org.laidu.learn:spring-hadoop:jar:1.0-SNAPSHOT
                      \- org.laidu.learn:common-util:jar:1.0-SNAPSHOT:compile
                         \- (org.projectlombok:lombok:jar:1.16.20:compile - omitted for conflict with 1.16.18)

                    52. +
                    53. org.laidu.learn:spring-mybatis:jar:1.0-SNAPSHOT
                      \- org.laidu.learn:common-util:jar:1.0-SNAPSHOT:compile
                         \- (org.projectlombok:lombok:jar:1.16.20:compile - omitted for conflict with 1.16.18)

                    54. +
                    55. org.laidu.learn:spring-redis:jar:1.0-SNAPSHOT
                      \- org.laidu.learn:common-util:jar:1.0-SNAPSHOT:compile
                         \- (org.projectlombok:lombok:jar:1.16.20:compile - omitted for conflict with 1.16.18)

                    56. +
                    57. org.laidu.learn:spring-statemachine:jar:1.0-SNAPSHOT
                      \- org.laidu.learn:common-util:jar:1.0-SNAPSHOT:compile
                         \- (org.projectlombok:lombok:jar:1.16.20:compile - omitted for conflict with 1.16.18)

                    58. +
                    59. org.laidu.learn:spring:pom:1.0-SNAPSHOT
                      \- org.laidu.learn:common-util:jar:1.0-SNAPSHOT:compile
                         \- (org.projectlombok:lombok:jar:1.16.20:compile - omitted for conflict with 1.16.18)

                    60. +
                    61. org.laidu.learn:task-scheduler:pom:1.0-SNAPSHOT
                      \- org.laidu.learn:common-util:jar:1.0-SNAPSHOT:compile
                         \- (org.projectlombok:lombok:jar:1.16.20:compile - omitted for conflict with 1.16.18)

                    62. +
                    63. org.laidu.learn:test:pom:1.0-SNAPSHOT
                      \- org.laidu.learn:common-util:jar:1.0-SNAPSHOT:compile
                         \- (org.projectlombok:lombok:jar:1.16.20:compile - omitted for conflict with 1.16.18)

                    64. +
                    65. org.laidu.learn:thumbnailator-google:jar:1.0-SNAPSHOT
                      \- org.laidu.learn:common-util:jar:1.0-SNAPSHOT:compile
                         \- (org.projectlombok:lombok:jar:1.16.20:compile - omitted for conflict with 1.16.18)

                    66. +
                    67. org.laidu.learn:web:pom:1.0-SNAPSHOT
                      \- org.laidu.learn:common-util:jar:1.0-SNAPSHOT:compile
                         \- (org.projectlombok:lombok:jar:1.16.20:compile - omitted for conflict with 1.16.18)

                    68. +
                    69. org.laidu.learn:webmagic-learn:jar:1.0-SNAPSHOT
                      \- org.laidu.learn:common-util:jar:1.0-SNAPSHOT:compile
                         \- (org.projectlombok:lombok:jar:1.16.20:compile - omitted for conflict with 1.16.18)

                    70. +
                    71. org.laidu.learn:webmagic:pom:1.0-SNAPSHOT
                      \- org.laidu.learn:common-util:jar:1.0-SNAPSHOT:compile
                         \- (org.projectlombok:lombok:jar:1.16.20:compile - omitted for conflict with 1.16.18)

                    +
                    +

                    org.scala-lang.modules:scala-java8-compat_2.11

                    + + + +
                    [Error] + + - + + + + + + +
                    0.7.0
                    1. org.laidu.learn:play:jar:1.0-SNAPSHOT
                      \- com.typesafe.play:play_2.11:jar:2.6.6:compile
                         \- com.typesafe.akka:akka-actor_2.11:jar:2.5.4:compile
                            \- (org.scala-lang.modules:scala-java8-compat_2.11:jar:0.7.0:compile - omitted for conflict with 0.8.0)

                    0.8.0
                      @@ -1169,16 +1336,16 @@

                      org.scala-lang.

                      org.scala-lang.modules:scala-parser-combinators_2.11

                      - +
                      [Error] - + - +
                      1.0.4
                      1. org.laidu.learn:play:jar:1.0-SNAPSHOT
                        \- com.typesafe.play:play_2.11:jar:2.6.6:compile
                           \- com.typesafe.play:play-streams_2.11:jar:2.6.6:compile
                              \- com.typesafe.akka:akka-stream_2.11:jar:2.5.4:compile
                                 \- com.typesafe:ssl-config-core_2.11:jar:0.2.1:compile
                                    \- (org.scala-lang.modules:scala-parser-combinators_2.11:jar:1.0.4:compile - omitted for conflict with 1.0.6)

                      1.0.6
                        @@ -1186,21 +1353,21 @@

                        org.scala

                        org.scala-lang:scala-library

                        - + + + + + + +
                        [Error] - + - + - +
                        2.11.11
                        1. org.laidu.learn:play:jar:1.0-SNAPSHOT
                          \- com.typesafe.play:play_2.11:jar:2.6.6:compile
                             +- org.scala-lang:scala-library:jar:2.11.11:compile
                             +- com.typesafe.play:play-streams_2.11:jar:2.6.6:compile
                             |  +- (org.scala-lang:scala-library:jar:2.11.11:compile - omitted for duplicate)
                             |  \- com.typesafe.akka:akka-stream_2.11:jar:2.5.4:compile
                             |     \- (org.scala-lang:scala-library:jar:2.11.11:compile - omitted for duplicate)
                             +- com.typesafe.play:twirl-api_2.11:jar:1.3.12:compile
                             |  \- (org.scala-lang:scala-library:jar:2.11.11:compile - omitted for duplicate)
                             +- com.typesafe.akka:akka-actor_2.11:jar:2.5.4:compile
                             |  \- (org.scala-lang:scala-library:jar:2.11.11:compile - omitted for duplicate)
                             +- com.typesafe.akka:akka-slf4j_2.11:jar:2.5.4:compile
                             |  \- (org.scala-lang:scala-library:jar:2.11.11:compile - omitted for duplicate)
                             +- com.typesafe.play:play-json_2.11:jar:2.6.6:compile
                             |  +- (org.scala-lang:scala-library:jar:2.11.11:compile - omitted for duplicate)
                             |  \- com.typesafe.play:play-functional_2.11:jar:2.6.6:compile
                             |     \- (org.scala-lang:scala-library:jar:2.11.11:compile - omitted for duplicate)
                             +- org.scala-lang:scala-reflect:jar:2.11.11:compile
                             |  \- (org.scala-lang:scala-library:jar:2.11.11:compile - omitted for duplicate)
                             \- org.scala-lang.modules:scala-parser-combinators_2.11:jar:1.0.6:compile
                                \- (org.scala-lang:scala-library:jar:2.11.11:compile - omitted for duplicate)

                        2.11.7
                        1. org.laidu.learn:play:jar:1.0-SNAPSHOT
                          \- com.typesafe.play:play_2.11:jar:2.6.6:compile
                             \- com.typesafe.play:play-json_2.11:jar:2.6.6:compile
                                \- org.typelevel:macro-compat_2.11:jar:1.1.1:compile
                                   \- (org.scala-lang:scala-library:jar:2.11.7:compile - omitted for conflict with 2.11.11)

                        2.11.8
                          @@ -1208,20 +1375,27 @@

                          org.scala-lang:scala-library

                          org.slf4j:slf4j-api

                          - +
                          [Error] - + - + +
                        1. org.laidu.learn:hadoop:jar:1.0-SNAPSHOT
                          \- org.apache.hadoop:hadoop-common:jar:2.8.1:compile
                             \- org.apache.avro:avro:jar:1.7.4:compile
                                \- (org.slf4j:slf4j-api:jar:1.6.4:compile - omitted for conflict with 1.7.10)

                        2. +
                        3. org.laidu.learn:shiro:jar:1.0-SNAPSHOT
                          \- org.apache.shiro:shiro-core:jar:1.3.2:compile
                             \- org.slf4j:slf4j-api:jar:1.6.4:compile

                        4. + + + + + + - + - + - + - +
                          1.6.1
                            +
                          1. org.laidu.learn:elastic-job:jar:1.0-SNAPSHOT
                            \- com.dangdang:elastic-job-lite-core:jar:2.1.5:compile
                               \- com.dangdang:elastic-job-common-core:jar:2.1.5:compile
                                  \- org.apache.curator:curator-client:jar:2.10.0:compile
                                     \- org.apache.zookeeper:zookeeper:jar:3.4.6:compile
                                        \- (org.slf4j:slf4j-api:jar:1.6.1:compile - omitted for conflict with 1.7.25)

                          2. org.laidu.learn:hadoop:jar:1.0-SNAPSHOT
                            \- org.apache.hadoop:hadoop-common:jar:2.8.1:compile
                               \- org.apache.zookeeper:zookeeper:jar:3.4.6:compile
                                  \- (org.slf4j:slf4j-api:jar:1.6.1:compile - omitted for conflict with 1.7.10)

                          1.6.4
                            -
                          1. org.laidu.learn:hadoop:jar:1.0-SNAPSHOT
                            \- org.apache.hadoop:hadoop-common:jar:2.8.1:compile
                               \- org.apache.avro:avro:jar:1.7.4:compile
                                  \- (org.slf4j:slf4j-api:jar:1.6.4:compile - omitted for conflict with 1.7.10)

                          1.6.6 +
                            +
                          1. org.laidu.learn:elastic-job:jar:1.0-SNAPSHOT
                            \- com.dangdang:elastic-job-lite-core:jar:2.1.5:compile
                               \- com.dangdang:elastic-job-common-core:jar:2.1.5:compile
                                  \- org.quartz-scheduler:quartz:jar:2.2.1:compile
                                     \- (org.slf4j:slf4j-api:jar:1.6.6:compile - omitted for conflict with 1.7.25)

                          1.7.10 @@ -1233,48 +1407,57 @@

                          org.slf4j:slf4j-api

                          1. org.laidu.learn:common-amqp:jar:1.0-SNAPSHOT
                            \- org.springframework.boot:spring-boot-starter-amqp:jar:1.5.9.RELEASE:compile
                               \- org.springframework.amqp:spring-rabbit:jar:1.7.4.RELEASE:compile
                                  \- com.rabbitmq:amqp-client:jar:4.0.3:compile
                                     \- (org.slf4j:slf4j-api:jar:1.7.21:compile - omitted for conflict with 1.7.25)

                          1.7.22 +
                            +
                          1. org.laidu.learn:elastic-job:jar:1.0-SNAPSHOT
                            \- org.laidu.learn:spring-boot-app:jar:0.0.1-SNAPSHOT:compile
                               \- io.micrometer:micrometer-registry-graphite:jar:1.0.3:compile
                                  \- io.dropwizard.metrics:metrics-graphite:jar:3.2.6:compile
                                     +- io.dropwizard.metrics:metrics-core:jar:3.2.6:compile
                                     |  \- (org.slf4j:slf4j-api:jar:1.7.22:compile - omitted for conflict with 1.7.25)
                                     \- (org.slf4j:slf4j-api:jar:1.7.22:compile - omitted for conflict with 1.7.25)

                          1.7.23
                          1. org.laidu.learn:play:jar:1.0-SNAPSHOT
                            \- com.typesafe.play:play_2.11:jar:2.6.6:compile
                               \- com.typesafe.akka:akka-slf4j_2.11:jar:2.5.4:compile
                                  \- (org.slf4j:slf4j-api:jar:1.7.23:compile - omitted for conflict with 1.7.25)

                          1.7.25
                          1. org.laidu.learn:common-amqp:jar:1.0-SNAPSHOT
                            +- org.springframework.boot:spring-boot-starter-amqp:jar:1.5.9.RELEASE:compile
                            |  \- org.springframework.boot:spring-boot-starter:jar:1.5.9.RELEASE:compile
                            |     \- org.springframework.boot:spring-boot-starter-logging:jar:1.5.9.RELEASE:compile
                            |        +- org.slf4j:jcl-over-slf4j:jar:1.7.25:compile
                            |        |  \- (org.slf4j:slf4j-api:jar:1.7.25:compile - omitted for conflict with 1.7.22)
                            |        +- org.slf4j:jul-to-slf4j:jar:1.7.25:compile
                            |        |  \- (org.slf4j:slf4j-api:jar:1.7.25:compile - omitted for conflict with 1.7.22)
                            |        \- org.slf4j:log4j-over-slf4j:jar:1.7.25:compile
                            |           \- (org.slf4j:slf4j-api:jar:1.7.25:compile - omitted for conflict with 1.7.22)
                            \- ch.qos.logback:logback-classic:jar:1.2.3:compile
                               \- org.slf4j:slf4j-api:jar:1.7.25:compile

                          2. +
                          3. org.laidu.learn:elastic-job:jar:1.0-SNAPSHOT
                            +- org.laidu.learn:spring-boot-app:jar:0.0.1-SNAPSHOT:compile
                            |  +- io.micrometer:micrometer-registry-atlas:jar:1.0.3:compile
                            |  |  \- com.netflix.spectator:spectator-reg-atlas:jar:0.63.0:compile
                            |  |     +- (org.slf4j:slf4j-api:jar:1.7.25:compile - omitted for duplicate)
                            |  |     +- com.netflix.spectator:spectator-ext-sandbox:jar:0.63.0:compile
                            |  |     |  \- (org.slf4j:slf4j-api:jar:1.7.25:compile - omitted for duplicate)
                            |  |     \- com.netflix.spectator:spectator-api:jar:0.63.0:compile
                            |  |        \- (org.slf4j:slf4j-api:jar:1.7.25:compile - omitted for duplicate)
                            |  \- org.springframework.boot:spring-boot-starter:jar:2.0.1.RELEASE:compile
                            |     \- org.springframework.boot:spring-boot-starter-logging:jar:2.0.1.RELEASE:compile
                            |        +- org.apache.logging.log4j:log4j-to-slf4j:jar:2.10.0:compile
                            |        |  \- (org.slf4j:slf4j-api:jar:1.7.25:compile - omitted for duplicate)
                            |        \- org.slf4j:jul-to-slf4j:jar:1.7.25:compile
                            |           \- (org.slf4j:slf4j-api:jar:1.7.25:compile - omitted for duplicate)
                            \- ch.qos.logback:logback-classic:jar:1.2.3:compile
                               \- org.slf4j:slf4j-api:jar:1.7.25:compile

                          4. org.laidu.learn:hadoop:jar:1.0-SNAPSHOT
                            \- ch.qos.logback:logback-classic:jar:1.2.3:compile
                               \- (org.slf4j:slf4j-api:jar:1.7.25:compile - omitted for conflict with 1.7.10)

                          5. org.laidu.learn:local-cache:jar:1.0-SNAPSHOT
                            \- ch.qos.logback:logback-classic:jar:1.2.3:compile
                               \- (org.slf4j:slf4j-api:jar:1.7.25:compile - omitted for conflict with 1.7.7)

                          6. org.laidu.learn:play:jar:1.0-SNAPSHOT
                            +- com.typesafe.play:play_2.11:jar:2.6.6:compile
                            |  +- com.typesafe.play:play-netty-utils:jar:2.6.6:compile
                            |  |  \- (org.slf4j:slf4j-api:jar:1.7.25:compile - omitted for duplicate)
                            |  +- org.slf4j:slf4j-api:jar:1.7.25:compile
                            |  +- org.slf4j:jul-to-slf4j:jar:1.7.25:compile
                            |  |  \- (org.slf4j:slf4j-api:jar:1.7.25:compile - omitted for duplicate)
                            |  \- org.slf4j:jcl-over-slf4j:jar:1.7.25:compile
                            |     \- (org.slf4j:slf4j-api:jar:1.7.25:compile - omitted for duplicate)
                            \- ch.qos.logback:logback-classic:jar:1.2.3:compile
                               \- (org.slf4j:slf4j-api:jar:1.7.25:compile - omitted for duplicate)

                          7. +
                          8. org.laidu.learn:shiro:jar:1.0-SNAPSHOT
                            \- ch.qos.logback:logback-classic:jar:1.2.3:compile
                               \- (org.slf4j:slf4j-api:jar:1.7.25:compile - omitted for conflict with 1.6.4)

                          9. org.laidu.learn:webmagic-learn:jar:1.0-SNAPSHOT
                            +- us.codecraft:webmagic-core:jar:0.7.3:compile
                            |  \- com.jayway.jsonpath:json-path:jar:2.4.0:compile
                            |     \- (org.slf4j:slf4j-api:jar:1.7.25:compile - omitted for conflict with 1.7.6)
                            \- ch.qos.logback:logback-classic:jar:1.2.3:compile
                               \- (org.slf4j:slf4j-api:jar:1.7.25:compile - omitted for conflict with 1.7.6)

                          1.7.5
                          1. org.laidu.learn:hadoop:jar:1.0-SNAPSHOT
                            \- org.apache.hadoop:hadoop-common:jar:2.8.1:compile
                               \- org.apache.hadoop:hadoop-auth:jar:2.8.1:compile
                                  \- org.apache.directory.server:apacheds-kerberos-codec:jar:2.0.0-M15:compile
                                     +- org.apache.directory.server:apacheds-i18n:jar:2.0.0-M15:compile
                                     |  \- (org.slf4j:slf4j-api:jar:1.7.5:compile - omitted for conflict with 1.7.10)
                                     +- org.apache.directory.api:api-asn1-api:jar:1.0.0-M20:compile
                                     |  \- (org.slf4j:slf4j-api:jar:1.7.5:compile - omitted for conflict with 1.7.10)
                                     +- org.apache.directory.api:api-util:jar:1.0.0-M20:compile
                                     |  \- (org.slf4j:slf4j-api:jar:1.7.5:compile - omitted for conflict with 1.7.10)
                                     \- (org.slf4j:slf4j-api:jar:1.7.5:compile - omitted for conflict with 1.7.10)

                          1.7.6
                            +
                          1. org.laidu.learn:elastic-job:jar:1.0-SNAPSHOT
                            \- com.dangdang:elastic-job-lite-core:jar:2.1.5:compile
                               \- com.dangdang:elastic-job-common-core:jar:2.1.5:compile
                                  \- org.apache.curator:curator-client:jar:2.10.0:compile
                                     \- (org.slf4j:slf4j-api:jar:1.7.6:compile - omitted for conflict with 1.7.25)

                          2. org.laidu.learn:hadoop:jar:1.0-SNAPSHOT
                            \- org.apache.hadoop:hadoop-common:jar:2.8.1:compile
                               \- org.apache.curator:curator-client:jar:2.7.1:compile
                                  \- (org.slf4j:slf4j-api:jar:1.7.6:compile - omitted for conflict with 1.7.10)

                          3. org.laidu.learn:webmagic-learn:jar:1.0-SNAPSHOT
                            \- us.codecraft:webmagic-core:jar:0.7.3:compile
                               +- org.slf4j:slf4j-api:jar:1.7.6:compile
                               \- org.slf4j:slf4j-log4j12:jar:1.7.6:compile
                                  \- (org.slf4j:slf4j-api:jar:1.7.6:compile - omitted for duplicate)

                          1.7.7
                            +
                          1. org.laidu.learn:elastic-job:jar:1.0-SNAPSHOT
                            \- com.dangdang:elastic-job-lite-core:jar:2.1.5:compile
                               \- com.dangdang:elastic-job-common-core:jar:2.1.5:compile
                                  \- (org.slf4j:slf4j-api:jar:1.7.7:compile - omitted for conflict with 1.7.25)

                          2. org.laidu.learn:local-cache:jar:1.0-SNAPSHOT
                            \- org.ehcache:ehcache:jar:3.4.0:compile
                               \- org.slf4j:slf4j-api:jar:1.7.7:compile

                          org.slf4j:slf4j-log4j12

                          - +
                          [Error] - + - + + + +
                          1.6.1
                          1. org.laidu.learn:hadoop:jar:1.0-SNAPSHOT
                            \- org.apache.hadoop:hadoop-common:jar:2.8.1:compile
                               \- org.apache.zookeeper:zookeeper:jar:3.4.6:compile
                                  \- (org.slf4j:slf4j-log4j12:jar:1.6.1:compile - omitted for conflict with 1.7.10)

                          1.7.10
                            @@ -1282,20 +1465,37 @@

                            org.slf4j:slf4j-log4j12

                            org.springframework.amqp:spring-rabbit

                            - +
                            [Error] + + + - + +
                          1. org.laidu.learn:spring-amqp:jar:1.0-SNAPSHOT
                            \- org.springframework.boot:spring-boot-starter-amqp:jar:2.0.2.RELEASE:compile
                               \- (org.springframework.amqp:spring-rabbit:jar:2.0.3.RELEASE:compile - omitted for conflict with 2.0.1.RELEASE)

                          2. 2.0.1.RELEASE +
                              +
                            1. org.laidu.learn:spring-amqp:jar:1.0-SNAPSHOT
                              \- org.springframework.amqp:spring-rabbit:jar:2.0.1.RELEASE:compile

                            1.7.4.RELEASE2.0.3.RELEASE
                              -
                            1. org.laidu.learn:spring-amqp:jar:1.0-SNAPSHOT
                              \- org.springframework.boot:spring-boot-starter-amqp:jar:1.5.9.RELEASE:compile
                                 \- (org.springframework.amqp:spring-rabbit:jar:1.7.4.RELEASE:compile - omitted for conflict with 2.0.1.RELEASE)

                            +
                            +

                            org.springframework.boot:spring-boot-starter

                            + + +
                            [Error] + +
                            2.0.1.RELEASE
                              -
                            1. org.laidu.learn:spring-amqp:jar:1.0-SNAPSHOT
                              \- org.springframework.amqp:spring-rabbit:jar:2.0.1.RELEASE:compile

                            +
                          3. org.laidu.learn.swagger:swagger:jar:0.0.1-SNAPSHOT
                            +- org.springframework.boot:spring-boot-starter-web-services:jar:2.0.1.RELEASE:compile
                            |  +- (org.springframework.boot:spring-boot-starter:jar:2.0.1.RELEASE:compile - omitted for conflict with 2.0.2.RELEASE)
                            |  \- org.springframework.boot:spring-boot-starter-web:jar:2.0.1.RELEASE:compile
                            |     +- (org.springframework.boot:spring-boot-starter:jar:2.0.1.RELEASE:compile - omitted for duplicate)
                            |     \- org.springframework.boot:spring-boot-starter-json:jar:2.0.1.RELEASE:compile
                            |        \- (org.springframework.boot:spring-boot-starter:jar:2.0.1.RELEASE:compile - omitted for duplicate)
                            \- org.springframework.boot:spring-boot-starter-test:jar:2.0.1.RELEASE:test
                               \- (org.springframework.boot:spring-boot-starter:jar:2.0.1.RELEASE:test - omitted for duplicate)

                          2.0.2.RELEASE +
                            +
                          1. org.laidu.learn.swagger:swagger:jar:0.0.1-SNAPSHOT
                            \- org.springframework.boot:spring-boot-starter:jar:2.0.2.RELEASE:compile

                          org.springframework:spring-aop

                          @@ -1312,7 +1512,17 @@

                          org.springframework:spring-aop<

                          4.3.13.RELEASE
                            -
                          1. org.laidu.learn:common-amqp:jar:1.0-SNAPSHOT
                            \- org.springframework.boot:spring-boot-starter-amqp:jar:1.5.9.RELEASE:compile
                               \- org.springframework:spring-messaging:jar:4.3.13.RELEASE:compile
                                  \- org.springframework:spring-context:jar:4.3.13.RELEASE:compile
                                     \- org.springframework:spring-aop:jar:4.3.13.RELEASE:compile

                        +
                      1. org.laidu.learn:common-amqp:jar:1.0-SNAPSHOT
                        \- org.springframework.boot:spring-boot-starter-amqp:jar:1.5.9.RELEASE:compile
                           \- org.springframework:spring-messaging:jar:4.3.13.RELEASE:compile
                              \- org.springframework:spring-context:jar:4.3.13.RELEASE:compile
                                 \- org.springframework:spring-aop:jar:4.3.13.RELEASE:compile

                      2. 5.0.4.RELEASE +
                          +
                        1. org.laidu.learn:elastic-job:jar:1.0-SNAPSHOT
                          \- org.laidu.learn:spring-boot-app:jar:0.0.1-SNAPSHOT:compile
                             \- org.springframework.boot:spring-boot-starter-web-services:jar:2.0.1.RELEASE:compile
                                \- org.springframework.ws:spring-ws-core:jar:3.0.1.RELEASE:compile
                                   \- (org.springframework:spring-aop:jar:5.0.4.RELEASE:compile - omitted for conflict with 5.0.5.RELEASE)

                        5.0.5.RELEASE +
                          +
                        1. org.laidu.learn:elastic-job:jar:1.0-SNAPSHOT
                          \- org.laidu.learn:spring-boot-app:jar:0.0.1-SNAPSHOT:compile
                             +- org.springframework.boot:spring-boot-starter-actuator:jar:2.0.1.RELEASE:compile
                             |  \- org.springframework.boot:spring-boot-actuator-autoconfigure:jar:2.0.1.RELEASE:compile
                             |     \- org.springframework:spring-context:jar:5.0.5.RELEASE:compile
                             |        \- (org.springframework:spring-aop:jar:5.0.5.RELEASE:compile - omitted for duplicate)
                             \- org.springframework.boot:spring-boot-starter-web:jar:2.0.1.RELEASE:compile
                                \- org.springframework:spring-webmvc:jar:5.0.5.RELEASE:compile
                                   \- org.springframework:spring-aop:jar:5.0.5.RELEASE:compile

                      org.springframework:spring-beans

                      @@ -1329,7 +1539,17 @@

                      org.springframework:spring-be

                      4.3.13.RELEASE
                        -
                      1. org.laidu.learn:common-amqp:jar:1.0-SNAPSHOT
                        \- org.springframework.boot:spring-boot-starter-amqp:jar:1.5.9.RELEASE:compile
                           \- org.springframework:spring-messaging:jar:4.3.13.RELEASE:compile
                              +- org.springframework:spring-beans:jar:4.3.13.RELEASE:compile
                              \- org.springframework:spring-context:jar:4.3.13.RELEASE:compile
                                 +- org.springframework:spring-aop:jar:4.3.13.RELEASE:compile
                                 |  \- (org.springframework:spring-beans:jar:4.3.13.RELEASE:compile - omitted for duplicate)
                                 \- (org.springframework:spring-beans:jar:4.3.13.RELEASE:compile - omitted for duplicate)

                      +
                    1. org.laidu.learn:common-amqp:jar:1.0-SNAPSHOT
                      \- org.springframework.boot:spring-boot-starter-amqp:jar:1.5.9.RELEASE:compile
                         \- org.springframework:spring-messaging:jar:4.3.13.RELEASE:compile
                            +- org.springframework:spring-beans:jar:4.3.13.RELEASE:compile
                            \- org.springframework:spring-context:jar:4.3.13.RELEASE:compile
                               +- org.springframework:spring-aop:jar:4.3.13.RELEASE:compile
                               |  \- (org.springframework:spring-beans:jar:4.3.13.RELEASE:compile - omitted for duplicate)
                               \- (org.springframework:spring-beans:jar:4.3.13.RELEASE:compile - omitted for duplicate)

                    5.0.4.RELEASE +
                      +
                    1. org.laidu.learn:elastic-job:jar:1.0-SNAPSHOT
                      \- org.laidu.learn:spring-boot-app:jar:0.0.1-SNAPSHOT:compile
                         \- org.springframework.boot:spring-boot-starter-web-services:jar:2.0.1.RELEASE:compile
                            \- org.springframework.ws:spring-ws-core:jar:3.0.1.RELEASE:compile
                               +- org.springframework.ws:spring-xml:jar:3.0.1.RELEASE:compile
                               |  \- (org.springframework:spring-beans:jar:5.0.4.RELEASE:compile - omitted for conflict with 5.0.5.RELEASE)
                               \- (org.springframework:spring-beans:jar:5.0.4.RELEASE:compile - omitted for conflict with 5.0.5.RELEASE)

                    5.0.5.RELEASE +
                      +
                    1. org.laidu.learn:elastic-job:jar:1.0-SNAPSHOT
                      \- org.laidu.learn:spring-boot-app:jar:0.0.1-SNAPSHOT:compile
                         +- org.springframework.boot:spring-boot-starter-actuator:jar:2.0.1.RELEASE:compile
                         |  \- org.springframework.boot:spring-boot-actuator-autoconfigure:jar:2.0.1.RELEASE:compile
                         |     \- org.springframework:spring-context:jar:5.0.5.RELEASE:compile
                         |        \- (org.springframework:spring-beans:jar:5.0.5.RELEASE:compile - omitted for duplicate)
                         +- org.springframework.boot:spring-boot-starter-web:jar:2.0.1.RELEASE:compile
                         |  +- org.springframework:spring-web:jar:5.0.5.RELEASE:compile
                         |  |  \- org.springframework:spring-beans:jar:5.0.5.RELEASE:compile
                         |  \- org.springframework:spring-webmvc:jar:5.0.5.RELEASE:compile
                         |     +- org.springframework:spring-aop:jar:5.0.5.RELEASE:compile
                         |     |  \- (org.springframework:spring-beans:jar:5.0.5.RELEASE:compile - omitted for duplicate)
                         |     \- (org.springframework:spring-beans:jar:5.0.5.RELEASE:compile - omitted for duplicate)
                         \- org.springframework.boot:spring-boot-starter-web-services:jar:2.0.1.RELEASE:compile
                            \- org.springframework:spring-oxm:jar:5.0.5.RELEASE:compile
                               \- (org.springframework:spring-beans:jar:5.0.5.RELEASE:compile - omitted for duplicate)

                    org.springframework:spring-context

                    @@ -1346,7 +1566,17 @@

                    org.springframework:spring-

                    4.3.13.RELEASE
                      -
                    1. org.laidu.learn:common-amqp:jar:1.0-SNAPSHOT
                      \- org.springframework.boot:spring-boot-starter-amqp:jar:1.5.9.RELEASE:compile
                         +- org.springframework.boot:spring-boot-starter:jar:1.5.9.RELEASE:compile
                         |  \- org.springframework.boot:spring-boot:jar:1.5.9.RELEASE:compile
                         |     \- (org.springframework:spring-context:jar:4.3.13.RELEASE:compile - omitted for duplicate)
                         \- org.springframework:spring-messaging:jar:4.3.13.RELEASE:compile
                            \- org.springframework:spring-context:jar:4.3.13.RELEASE:compile

                  +
                1. org.laidu.learn:common-amqp:jar:1.0-SNAPSHOT
                  \- org.springframework.boot:spring-boot-starter-amqp:jar:1.5.9.RELEASE:compile
                     +- org.springframework.boot:spring-boot-starter:jar:1.5.9.RELEASE:compile
                     |  \- org.springframework.boot:spring-boot:jar:1.5.9.RELEASE:compile
                     |     \- (org.springframework:spring-context:jar:4.3.13.RELEASE:compile - omitted for duplicate)
                     \- org.springframework:spring-messaging:jar:4.3.13.RELEASE:compile
                        \- org.springframework:spring-context:jar:4.3.13.RELEASE:compile

                2. 5.0.4.RELEASE +
                    +
                  1. org.laidu.learn:elastic-job:jar:1.0-SNAPSHOT
                    \- org.laidu.learn:spring-boot-app:jar:0.0.1-SNAPSHOT:compile
                       \- org.springframework.boot:spring-boot-starter-web-services:jar:2.0.1.RELEASE:compile
                          \- org.springframework.ws:spring-ws-core:jar:3.0.1.RELEASE:compile
                             \- org.springframework.ws:spring-xml:jar:3.0.1.RELEASE:compile
                                \- (org.springframework:spring-context:jar:5.0.4.RELEASE:compile - omitted for conflict with 5.0.5.RELEASE)

                  5.0.5.RELEASE +
                    +
                  1. org.laidu.learn:elastic-job:jar:1.0-SNAPSHOT
                    \- org.laidu.learn:spring-boot-app:jar:0.0.1-SNAPSHOT:compile
                       +- org.springframework.boot:spring-boot-starter-actuator:jar:2.0.1.RELEASE:compile
                       |  \- org.springframework.boot:spring-boot-actuator-autoconfigure:jar:2.0.1.RELEASE:compile
                       |     \- org.springframework:spring-context:jar:5.0.5.RELEASE:compile
                       +- org.springframework.boot:spring-boot-starter:jar:2.0.1.RELEASE:compile
                       |  \- org.springframework.boot:spring-boot:jar:2.0.1.RELEASE:compile
                       |     \- (org.springframework:spring-context:jar:5.0.5.RELEASE:compile - omitted for duplicate)
                       \- org.springframework.boot:spring-boot-starter-web:jar:2.0.1.RELEASE:compile
                          \- org.springframework:spring-webmvc:jar:5.0.5.RELEASE:compile
                             \- (org.springframework:spring-context:jar:5.0.5.RELEASE:compile - omitted for duplicate)

                org.springframework:spring-core

                @@ -1368,7 +1598,17 @@

                org.springframework:spring-cor

                4.3.3.RELEASE
                  -
                1. org.laidu.learn:common-amqp:jar:1.0-SNAPSHOT
                  \- org.springframework.boot:spring-boot-starter-amqp:jar:1.5.9.RELEASE:compile
                     \- org.springframework.amqp:spring-rabbit:jar:1.7.4.RELEASE:compile
                        \- org.springframework.retry:spring-retry:jar:1.2.0.RELEASE:compile
                           \- (org.springframework:spring-core:jar:4.3.3.RELEASE:compile - omitted for conflict with 4.3.13.RELEASE)

                +
              1. org.laidu.learn:common-amqp:jar:1.0-SNAPSHOT
                \- org.springframework.boot:spring-boot-starter-amqp:jar:1.5.9.RELEASE:compile
                   \- org.springframework.amqp:spring-rabbit:jar:1.7.4.RELEASE:compile
                      \- org.springframework.retry:spring-retry:jar:1.2.0.RELEASE:compile
                         \- (org.springframework:spring-core:jar:4.3.3.RELEASE:compile - omitted for conflict with 4.3.13.RELEASE)

              5.0.4.RELEASE +
                +
              1. org.laidu.learn:elastic-job:jar:1.0-SNAPSHOT
                \- org.laidu.learn:spring-boot-app:jar:0.0.1-SNAPSHOT:compile
                   \- org.springframework.boot:spring-boot-starter-web-services:jar:2.0.1.RELEASE:compile
                      \- org.springframework.ws:spring-ws-core:jar:3.0.1.RELEASE:compile
                         +- org.springframework.ws:spring-xml:jar:3.0.1.RELEASE:compile
                         |  \- (org.springframework:spring-core:jar:5.0.4.RELEASE:compile - omitted for conflict with 5.0.5.RELEASE)
                         \- (org.springframework:spring-core:jar:5.0.4.RELEASE:compile - omitted for conflict with 5.0.5.RELEASE)

              5.0.5.RELEASE +
                +
              1. org.laidu.learn:elastic-job:jar:1.0-SNAPSHOT
                \- org.laidu.learn:spring-boot-app:jar:0.0.1-SNAPSHOT:compile
                   +- org.springframework.boot:spring-boot-starter-actuator:jar:2.0.1.RELEASE:compile
                   |  \- org.springframework.boot:spring-boot-actuator-autoconfigure:jar:2.0.1.RELEASE:compile
                   |     +- (org.springframework:spring-core:jar:5.0.5.RELEASE:compile - omitted for duplicate)
                   |     \- org.springframework:spring-context:jar:5.0.5.RELEASE:compile
                   |        \- (org.springframework:spring-core:jar:5.0.5.RELEASE:compile - omitted for duplicate)
                   +- org.springframework.boot:spring-boot-starter:jar:2.0.1.RELEASE:compile
                   |  +- org.springframework.boot:spring-boot:jar:2.0.1.RELEASE:compile
                   |  |  \- (org.springframework:spring-core:jar:5.0.5.RELEASE:compile - omitted for duplicate)
                   |  \- org.springframework:spring-core:jar:5.0.5.RELEASE:compile
                   +- org.springframework.boot:spring-boot-starter-web:jar:2.0.1.RELEASE:compile
                   |  +- org.springframework:spring-web:jar:5.0.5.RELEASE:compile
                   |  |  +- org.springframework:spring-beans:jar:5.0.5.RELEASE:compile
                   |  |  |  \- (org.springframework:spring-core:jar:5.0.5.RELEASE:compile - omitted for duplicate)
                   |  |  \- (org.springframework:spring-core:jar:5.0.5.RELEASE:compile - omitted for duplicate)
                   |  \- org.springframework:spring-webmvc:jar:5.0.5.RELEASE:compile
                   |     +- org.springframework:spring-aop:jar:5.0.5.RELEASE:compile
                   |     |  \- (org.springframework:spring-core:jar:5.0.5.RELEASE:compile - omitted for duplicate)
                   |     +- (org.springframework:spring-core:jar:5.0.5.RELEASE:compile - omitted for duplicate)
                   |     \- org.springframework:spring-expression:jar:5.0.5.RELEASE:compile
                   |        \- (org.springframework:spring-core:jar:5.0.5.RELEASE:compile - omitted for duplicate)
                   \- org.springframework.boot:spring-boot-starter-web-services:jar:2.0.1.RELEASE:compile
                      \- org.springframework:spring-oxm:jar:5.0.5.RELEASE:compile
                         \- (org.springframework:spring-core:jar:5.0.5.RELEASE:compile - omitted for duplicate)

              org.springframework:spring-messaging

              @@ -1387,34 +1627,91 @@

              org.springframework:sprin
              1. org.laidu.learn:common-amqp:jar:1.0-SNAPSHOT
                \- org.springframework.boot:spring-boot-starter-amqp:jar:1.5.9.RELEASE:compile
                   \- org.springframework:spring-messaging:jar:4.3.13.RELEASE:compile

            +

            org.springframework:spring-oxm

            + + + +
            [Error] + + + + + + +
            5.0.4.RELEASE +
              +
            1. org.laidu.learn:elastic-job:jar:1.0-SNAPSHOT
              \- org.laidu.learn:spring-boot-app:jar:0.0.1-SNAPSHOT:compile
                 \- org.springframework.boot:spring-boot-starter-web-services:jar:2.0.1.RELEASE:compile
                    \- org.springframework.ws:spring-ws-core:jar:3.0.1.RELEASE:compile
                       \- (org.springframework:spring-oxm:jar:5.0.4.RELEASE:compile - omitted for conflict with 5.0.5.RELEASE)

            5.0.5.RELEASE +
              +
            1. org.laidu.learn:elastic-job:jar:1.0-SNAPSHOT
              \- org.laidu.learn:spring-boot-app:jar:0.0.1-SNAPSHOT:compile
                 \- org.springframework.boot:spring-boot-starter-web-services:jar:2.0.1.RELEASE:compile
                    \- org.springframework:spring-oxm:jar:5.0.5.RELEASE:compile

            +

            org.springframework:spring-test

            + + +
            [Error] + + + + + + +
            5.0.5.RELEASE +
              +
            1. org.laidu.learn.spring.cloud:consumer-hello:jar:0.0.1-SNAPSHOT
              \- org.springframework.boot:spring-boot-starter-test:jar:2.0.1.RELEASE:test
                 \- (org.springframework:spring-test:jar:5.0.5.RELEASE:test - omitted for conflict with 5.0.6.RELEASE)

            2. +
            3. org.laidu.learn.spring.cloud:eureka-server:jar:0.0.1-SNAPSHOT
              \- org.springframework.boot:spring-boot-starter-test:jar:2.0.1.RELEASE:test
                 \- (org.springframework:spring-test:jar:5.0.5.RELEASE:test - omitted for conflict with 5.0.6.RELEASE)

            4. +
            5. org.laidu.learn.spring.cloud:service-hello:jar:0.0.1-SNAPSHOT
              \- org.springframework.boot:spring-boot-starter-test:jar:2.0.1.RELEASE:test
                 \- (org.springframework:spring-test:jar:5.0.5.RELEASE:test - omitted for conflict with 5.0.6.RELEASE)

            6. +
            7. org.laidu.learn.swagger:swagger:jar:0.0.1-SNAPSHOT
              \- org.springframework.boot:spring-boot-starter-test:jar:2.0.1.RELEASE:test
                 \- (org.springframework:spring-test:jar:5.0.5.RELEASE:test - omitted for conflict with 5.0.6.RELEASE)

            8. +
            9. org.laidu.learn:spring-boot-app:jar:0.0.1-SNAPSHOT
              \- org.springframework.boot:spring-boot-starter-test:jar:2.0.1.RELEASE:test
                 \- (org.springframework:spring-test:jar:5.0.5.RELEASE:test - omitted for conflict with 5.0.6.RELEASE)

            10. +
            11. org.laidu.learn:spring-boot-shiro:jar:1.0-SNAPSHOT
              \- org.springframework.boot:spring-boot-starter-test:jar:2.0.1.RELEASE:test
                 \- (org.springframework:spring-test:jar:5.0.5.RELEASE:test - omitted for conflict with 5.0.6.RELEASE)

            12. +
            13. org.laidu.learn:spring-boot:pom:1.0-SNAPSHOT
              \- org.springframework.boot:spring-boot-starter-test:jar:2.0.1.RELEASE:test
                 \- (org.springframework:spring-test:jar:5.0.5.RELEASE:test - omitted for conflict with 5.0.6.RELEASE)

            14. +
            15. org.laidu.learn:spring-cloud:pom:1.0-SNAPSHOT
              \- org.springframework.boot:spring-boot-starter-test:jar:2.0.1.RELEASE:test
                 \- (org.springframework:spring-test:jar:5.0.5.RELEASE:test - omitted for conflict with 5.0.6.RELEASE)

            16. +
            17. org.laidu.learn:spring-mvc:jar:1.0-SNAPSHOT
              \- org.springframework.boot:spring-boot-starter-test:jar:2.0.2.RELEASE:test
                 \- (org.springframework:spring-test:jar:5.0.5.RELEASE:test - version managed from 5.0.6.RELEASE; omitted for conflict with 5.0.6.RELEASE)

            18. +
            19. org.laidu.learn:spring-web:pom:1.0-SNAPSHOT
              \- org.springframework.boot:spring-boot-starter-test:jar:2.0.2.RELEASE:test
                 \- (org.springframework:spring-test:jar:5.0.5.RELEASE:test - version managed from 5.0.6.RELEASE; omitted for conflict with 5.0.6.RELEASE)

            5.0.6.RELEASE +
              +
            1. org.laidu.learn.spring.cloud:consumer-hello:jar:0.0.1-SNAPSHOT
              \- org.springframework:spring-test:jar:5.0.6.RELEASE:test

            2. +
            3. org.laidu.learn.spring.cloud:eureka-server:jar:0.0.1-SNAPSHOT
              \- org.springframework:spring-test:jar:5.0.6.RELEASE:test

            4. +
            5. org.laidu.learn.spring.cloud:service-hello:jar:0.0.1-SNAPSHOT
              \- org.springframework:spring-test:jar:5.0.6.RELEASE:test

            6. +
            7. org.laidu.learn.swagger:swagger:jar:0.0.1-SNAPSHOT
              \- org.springframework:spring-test:jar:5.0.6.RELEASE:test

            8. +
            9. org.laidu.learn:spring-boot-app:jar:0.0.1-SNAPSHOT
              \- org.springframework:spring-test:jar:5.0.6.RELEASE:test

            10. +
            11. org.laidu.learn:spring-boot-shiro:jar:1.0-SNAPSHOT
              \- org.springframework:spring-test:jar:5.0.6.RELEASE:test

            12. +
            13. org.laidu.learn:spring-boot:pom:1.0-SNAPSHOT
              \- org.springframework:spring-test:jar:5.0.6.RELEASE:test

            14. +
            15. org.laidu.learn:spring-cloud:pom:1.0-SNAPSHOT
              \- org.springframework:spring-test:jar:5.0.6.RELEASE:test

            16. +
            17. org.laidu.learn:spring-mvc:jar:1.0-SNAPSHOT
              \- org.springframework:spring-test:jar:5.0.6.RELEASE:test

            18. +
            19. org.laidu.learn:spring-web:pom:1.0-SNAPSHOT
              \- org.springframework:spring-test:jar:5.0.6.RELEASE:test

            +
            +

            org.springframework:spring-web

            +
            [Error] - + +
          1. org.laidu.learn:elastic-job:jar:1.0-SNAPSHOT
            \- org.laidu.learn:spring-boot-app:jar:0.0.1-SNAPSHOT:compile
               \- org.springframework.boot:spring-boot-starter-web-services:jar:2.0.1.RELEASE:compile
                  \- org.springframework.ws:spring-ws-core:jar:3.0.1.RELEASE:compile
                     \- (org.springframework:spring-web:jar:5.0.4.RELEASE:compile - omitted for conflict with 5.0.5.RELEASE)

          2. - + +
            4.3.13.RELEASE5.0.4.RELEASE
              -
            1. org.laidu.learn:spring-amqp:jar:1.0-SNAPSHOT
              \- org.springframework.boot:spring-boot-starter-test:jar:1.5.9.RELEASE:test
                 \- (org.springframework:spring-test:jar:4.3.13.RELEASE:test - omitted for conflict with 5.0.2.RELEASE)

            2. -
            3. org.laidu.learn:spring-boot:pom:1.0-SNAPSHOT
              \- org.springframework.boot:spring-boot-starter-test:jar:1.5.9.RELEASE:test
                 \- (org.springframework:spring-test:jar:4.3.13.RELEASE:test - omitted for conflict with 5.0.2.RELEASE)

            4. -
            5. org.laidu.learn:spring-cloud:pom:1.0-SNAPSHOT
              \- org.springframework.boot:spring-boot-starter-test:jar:1.5.9.RELEASE:test
                 \- (org.springframework:spring-test:jar:4.3.13.RELEASE:test - omitted for conflict with 5.0.2.RELEASE)

            6. -
            7. org.laidu.learn:spring-data:pom:1.0-SNAPSHOT
              \- org.springframework.boot:spring-boot-starter-test:jar:1.5.9.RELEASE:test
                 \- (org.springframework:spring-test:jar:4.3.13.RELEASE:test - omitted for conflict with 5.0.2.RELEASE)

            8. -
            9. org.laidu.learn:spring-hadoop:jar:1.0-SNAPSHOT
              \- org.springframework.boot:spring-boot-starter-test:jar:1.5.9.RELEASE:test
                 \- (org.springframework:spring-test:jar:4.3.13.RELEASE:test - omitted for conflict with 5.0.2.RELEASE)

            10. -
            11. org.laidu.learn:spring-mybatis:jar:1.0-SNAPSHOT
              \- org.springframework.boot:spring-boot-starter-test:jar:1.5.9.RELEASE:test
                 \- (org.springframework:spring-test:jar:4.3.13.RELEASE:test - omitted for conflict with 5.0.2.RELEASE)

            12. -
            13. org.laidu.learn:spring:pom:1.0-SNAPSHOT
              \- org.springframework.boot:spring-boot-starter-test:jar:1.5.9.RELEASE:test
                 \- (org.springframework:spring-test:jar:4.3.13.RELEASE:test - omitted for conflict with 5.0.2.RELEASE)

            5.0.2.RELEASE5.0.5.RELEASE +
              +
            1. org.laidu.learn:elastic-job:jar:1.0-SNAPSHOT
              \- org.laidu.learn:spring-boot-app:jar:0.0.1-SNAPSHOT:compile
                 \- org.springframework.boot:spring-boot-starter-web:jar:2.0.1.RELEASE:compile
                    +- org.springframework.boot:spring-boot-starter-json:jar:2.0.1.RELEASE:compile
                    |  \- (org.springframework:spring-web:jar:5.0.5.RELEASE:compile - omitted for duplicate)
                    +- org.springframework:spring-web:jar:5.0.5.RELEASE:compile
                    \- org.springframework:spring-webmvc:jar:5.0.5.RELEASE:compile
                       \- (org.springframework:spring-web:jar:5.0.5.RELEASE:compile - omitted for duplicate)

            +
            +

            org.springframework:spring-webmvc

            + + + +
            [Error] + + + + + +
            5.0.4.RELEASE +
              +
            1. org.laidu.learn:elastic-job:jar:1.0-SNAPSHOT
              \- org.laidu.learn:spring-boot-app:jar:0.0.1-SNAPSHOT:compile
                 \- org.springframework.boot:spring-boot-starter-web-services:jar:2.0.1.RELEASE:compile
                    \- org.springframework.ws:spring-ws-core:jar:3.0.1.RELEASE:compile
                       \- (org.springframework:spring-webmvc:jar:5.0.4.RELEASE:compile - omitted for conflict with 5.0.5.RELEASE)

            5.0.5.RELEASE
              -
            1. org.laidu.learn:spring-amqp:jar:1.0-SNAPSHOT
              \- org.springframework:spring-test:jar:5.0.2.RELEASE:test

            2. -
            3. org.laidu.learn:spring-boot:pom:1.0-SNAPSHOT
              \- org.springframework:spring-test:jar:5.0.2.RELEASE:test

            4. -
            5. org.laidu.learn:spring-cloud:pom:1.0-SNAPSHOT
              \- org.springframework:spring-test:jar:5.0.2.RELEASE:test

            6. -
            7. org.laidu.learn:spring-data:pom:1.0-SNAPSHOT
              \- org.springframework:spring-test:jar:5.0.2.RELEASE:test

            8. -
            9. org.laidu.learn:spring-hadoop:jar:1.0-SNAPSHOT
              \- org.springframework:spring-test:jar:5.0.2.RELEASE:test

            10. -
            11. org.laidu.learn:spring-mybatis:jar:1.0-SNAPSHOT
              \- org.springframework:spring-test:jar:5.0.2.RELEASE:test

            12. -
            13. org.laidu.learn:spring:pom:1.0-SNAPSHOT
              \- org.springframework:spring-test:jar:5.0.2.RELEASE:test

            +
          3. org.laidu.learn:elastic-job:jar:1.0-SNAPSHOT
            \- org.laidu.learn:spring-boot-app:jar:0.0.1-SNAPSHOT:compile
               \- org.springframework.boot:spring-boot-starter-web:jar:2.0.1.RELEASE:compile
                  \- org.springframework:spring-webmvc:jar:5.0.5.RELEASE:compile

          @@ -1422,9 +1719,7 @@

          org.springframework:spring-tes


          diff --git a/docs/dependency-info.html b/docs/dependency-info.html index 3b0df647d..0d2b6335b 100644 --- a/docs/dependency-info.html +++ b/docs/dependency-info.html @@ -1,5 +1,5 @@ - + @@ -11,128 +11,70 @@ - - + +
          3.7.1

          Project Report Plugins

          -

          There are no plugins reports defined in the Reporting part of this project.

          + + + + + + + + +
          GroupIdArtifactIdVersion
          org.apache.maven.pluginsmaven-project-info-reports-plugin2.9

          diff --git a/docs/problem.html b/docs/problem.html new file mode 100644 index 000000000..2b1cde6ba --- /dev/null +++ b/docs/problem.html @@ -0,0 +1,78 @@ + + + + + + java-learn – 问题集锦 + + + + + + + +
          + +
          +
          +

          问题集锦

          +

          1、排序应该在数据库还是在应用程序中进行?

          +

          参考1

          +
          +
          +
          +
          +
          + + + diff --git a/docs/project-info.html b/docs/project-info.html index c99db1e4c..19c20794d 100644 --- a/docs/project-info.html +++ b/docs/project-info.html @@ -1,5 +1,5 @@ - + @@ -11,128 +11,70 @@ - - + +

        Snapshot Blacklisted
        finlinkhttp://10.22.11.149:8081/nexus/content/groups/publicYessonatype-snapshotshttps://oss.sonatype.org/content/repositories/snapshots/No Yes No
        https://repo.maven.apache.org/maven2 Yes NoNo
        sonatypehttps://oss.sonatype.org/content/repositories/releases/YesNoNo
        apache-snapshotshttps://repository.apache.org/snapshots/NoYesNo
        sonatype-apachehttps://repository.apache.org/releases/YesNo Yes

        Repository locations for each of the Dependencies.

        - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + + + + + + +
        Artifactfinlink
        sonatype-snapshotscentralsonatypeapache-snapshots
        ch.qos.logback:logback-access:jar:1.2.3-Found at https://repo.maven.apache.org/maven2Found at https://oss.sonatype.org/content/repositories/releases/ -
        ch.qos.logback:logback-classic:jar:1.2.3-Found at https://repo.maven.apache.org/maven2Found at https://oss.sonatype.org/content/repositories/releases/ -
        ch.qos.logback:logback-core:jar:1.2.3-Found at https://repo.maven.apache.org/maven2Found at https://oss.sonatype.org/content/repositories/releases/ -
        junit:junit:jar:4.12-Found at https://repo.maven.apache.org/maven2Found at https://oss.sonatype.org/content/repositories/releases/ -
        org.apiguardian:apiguardian-api:jar:1.0.0-Found at https://repo.maven.apache.org/maven2Found at https://oss.sonatype.org/content/repositories/releases/ -
        org.hamcrest:hamcrest-core:jar:1.3-Found at https://repo.maven.apache.org/maven2Found at https://oss.sonatype.org/content/repositories/releases/ -
        org.junit.jupiter:junit-jupiter-api:jar:5.0.0-Found at https://repo.maven.apache.org/maven2Found at https://oss.sonatype.org/content/repositories/releases/ -
        org.junit.jupiter:junit-jupiter-engine:jar:5.0.0-Found at https://repo.maven.apache.org/maven2Found at https://oss.sonatype.org/content/repositories/releases/ -
        org.junit.platform:junit-platform-commons:jar:1.0.0-Found at https://repo.maven.apache.org/maven2Found at https://oss.sonatype.org/content/repositories/releases/ -
        org.junit.platform:junit-platform-engine:jar:1.0.2-Found at https://repo.maven.apache.org/maven2Found at https://oss.sonatype.org/content/repositories/releases/ -
        org.junit.platform:junit-platform-launcher:jar:1.0.2-Found at https://repo.maven.apache.org/maven2Found at https://oss.sonatype.org/content/repositories/releases/ -
        org.junit.vintage:junit-vintage-engine:jar:4.12.0-Found at https://repo.maven.apache.org/maven2Found at https://oss.sonatype.org/content/repositories/releases/ -
        org.opentest4j:opentest4j:jar:1.0.0-Found at https://repo.maven.apache.org/maven2Found at https://oss.sonatype.org/content/repositories/releases/ -
        org.projectlombok:lombok:jar:1.16.18-Found at https://repo.maven.apache.org/maven2Found at https://oss.sonatype.org/content/repositories/releases/ -
        org.slf4j:slf4j-api:jar:1.7.25-Found at https://repo.maven.apache.org/maven2Found at https://oss.sonatype.org/content/repositories/releases/ -
        Totalfinlink
        sonatype-snapshotscentralsonatypeapache-snapshots
        15 (compile: 5, test: 10)01515 0
        From 084373be03d60ec5f0f4e2870131bb51e3cc1423 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=9D=90=E7=AC=83=E5=A4=A7=E5=A4=A7?= Date: Tue, 5 Jun 2018 03:05:52 +0000 Subject: [PATCH 045/417] Creating site for design-pattern, 1.0-SNAPSHOT --- docs/design-pattern/css/maven-base.css | 342 +++++++------- docs/design-pattern/css/print.css | 52 +-- docs/design-pattern/dependencies.html | 436 ++++++++++++++---- docs/design-pattern/dependency-info.html | 122 ++--- .../distribution-management.html | 122 ++--- docs/design-pattern/index.html | 122 ++--- docs/design-pattern/integration.html | 122 ++--- docs/design-pattern/issue-tracking.html | 122 ++--- docs/design-pattern/modules.html | 122 ++--- docs/design-pattern/plugin-management.html | 122 ++--- docs/design-pattern/plugins.html | 140 +++--- docs/design-pattern/project-info.html | 122 ++--- docs/design-pattern/project-summary.html | 122 ++--- docs/design-pattern/source-repository.html | 122 ++--- docs/design-pattern/team-list.html | 122 ++--- 15 files changed, 1051 insertions(+), 1261 deletions(-) diff --git a/docs/design-pattern/css/maven-base.css b/docs/design-pattern/css/maven-base.css index b72646a72..322efae73 100644 --- a/docs/design-pattern/css/maven-base.css +++ b/docs/design-pattern/css/maven-base.css @@ -1,174 +1,168 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - -body { - margin: 0px; - padding: 0px; -} -img { - border:none; -} -table { - padding:0px; - width: 100%; - margin-left: -2px; - margin-right: -2px; -} -acronym { - cursor: help; - border-bottom: 1px dotted #feb; -} -table.bodyTable th, table.bodyTable td { - padding: 2px 4px 2px 4px; - vertical-align: top; -} -div.clear{ - clear:both; - visibility: hidden; -} -div.clear hr{ - display: none; -} -#bannerLeft, #bannerRight { - font-size: xx-large; - font-weight: bold; -} -#bannerLeft img, #bannerRight img { - margin: 0px; -} -.xleft, #bannerLeft img { - float:left; -} -.xright, #bannerRight { - float:right; -} -#banner { - padding: 0px; -} -#banner img { - border: none; -} -#breadcrumbs { - padding: 3px 10px 3px 10px; -} -#leftColumn { - width: 170px; - float:left; - overflow: auto; -} -#bodyColumn { - margin-right: 1.5em; - margin-left: 197px; -} -#legend { - padding: 8px 0 8px 0; -} -#navcolumn { - padding: 8px 4px 0 8px; -} -#navcolumn h5 { - margin: 0; - padding: 0; - font-size: small; -} -#navcolumn ul { - margin: 0; - padding: 0; - font-size: small; -} -#navcolumn li { - list-style-type: none; - background-image: none; - background-repeat: no-repeat; - background-position: 0 0.4em; - padding-left: 16px; - list-style-position: outside; - line-height: 1.2em; - font-size: smaller; -} -#navcolumn li.expanded { - background-image: url(../images/expanded.gif); -} -#navcolumn li.collapsed { - background-image: url(../images/collapsed.gif); -} -#navcolumn li.none { - text-indent: -1em; - margin-left: 1em; -} -#poweredBy { - text-align: center; -} -#navcolumn img { - margin-top: 10px; - margin-bottom: 3px; -} -#poweredBy img { - display:block; - margin: 20px 0 20px 17px; -} -#search img { - margin: 0px; - display: block; -} -#search #q, #search #btnG { - border: 1px solid #999; - margin-bottom:10px; -} -#search form { - margin: 0px; -} -#lastPublished { - font-size: x-small; -} -.navSection { - margin-bottom: 2px; - padding: 8px; -} -.navSectionHead { - font-weight: bold; - font-size: x-small; -} -.section { - padding: 4px; -} -#footer { - padding: 3px 10px 3px 10px; - font-size: x-small; -} -#breadcrumbs { - font-size: x-small; - margin: 0pt; -} -.source { - padding: 12px; - margin: 1em 7px 1em 7px; -} -.source pre { - margin: 0px; - padding: 0px; -} -#navcolumn img.imageLink, .imageLink { - padding-left: 0px; - padding-bottom: 0px; - padding-top: 0px; - padding-right: 2px; - border: 0px; - margin: 0px; -} +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +body { + margin: 0px; + padding: 0px; +} +table { + padding:0px; + width: 100%; + margin-left: -2px; + margin-right: -2px; +} +acronym { + cursor: help; + border-bottom: 1px dotted #feb; +} +table.bodyTable th, table.bodyTable td { + padding: 2px 4px 2px 4px; + vertical-align: top; +} +div.clear{ + clear:both; + visibility: hidden; +} +div.clear hr{ + display: none; +} +#bannerLeft, #bannerRight { + font-size: xx-large; + font-weight: bold; +} +#bannerLeft img, #bannerRight img { + margin: 0px; +} +.xleft, #bannerLeft img { + float:left; +} +.xright, #bannerRight { + float:right; +} +#banner { + padding: 0px; +} +#breadcrumbs { + padding: 3px 10px 3px 10px; +} +#leftColumn { + width: 170px; + float:left; + overflow: auto; +} +#bodyColumn { + margin-right: 1.5em; + margin-left: 197px; +} +#legend { + padding: 8px 0 8px 0; +} +#navcolumn { + padding: 8px 4px 0 8px; +} +#navcolumn h5 { + margin: 0; + padding: 0; + font-size: small; +} +#navcolumn ul { + margin: 0; + padding: 0; + font-size: small; +} +#navcolumn li { + list-style-type: none; + background-image: none; + background-repeat: no-repeat; + background-position: 0 0.4em; + padding-left: 16px; + list-style-position: outside; + line-height: 1.2em; + font-size: smaller; +} +#navcolumn li.expanded { + background-image: url(../images/expanded.gif); +} +#navcolumn li.collapsed { + background-image: url(../images/collapsed.gif); +} +#navcolumn li.none { + text-indent: -1em; + margin-left: 1em; +} +#poweredBy { + text-align: center; +} +#navcolumn img { + margin-top: 10px; + margin-bottom: 3px; +} +#poweredBy img { + display:block; + margin: 20px 0 20px 17px; +} +#search img { + margin: 0px; + display: block; +} +#search #q, #search #btnG { + border: 1px solid #999; + margin-bottom:10px; +} +#search form { + margin: 0px; +} +#lastPublished { + font-size: x-small; +} +.navSection { + margin-bottom: 2px; + padding: 8px; +} +.navSectionHead { + font-weight: bold; + font-size: x-small; +} +.section { + padding: 4px; +} +#footer { + padding: 3px 10px 3px 10px; + font-size: x-small; +} +#breadcrumbs { + font-size: x-small; + margin: 0pt; +} +.source { + padding: 12px; + margin: 1em 7px 1em 7px; +} +.source pre { + margin: 0px; + padding: 0px; +} +#navcolumn img.imageLink, .imageLink { + padding-left: 0px; + padding-bottom: 0px; + padding-top: 0px; + padding-right: 2px; + border: 0px; + margin: 0px; +} diff --git a/docs/design-pattern/css/print.css b/docs/design-pattern/css/print.css index 97be85ff1..18fcbad70 100644 --- a/docs/design-pattern/css/print.css +++ b/docs/design-pattern/css/print.css @@ -1,26 +1,26 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - -#banner, #footer, #leftcol, #breadcrumbs, .docs #toc, .docs .courtesylinks, #leftColumn, #navColumn { - display: none !important; -} -#bodyColumn, body.docs div.docs { - margin: 0 !important; - border: none !important -} +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +#banner, #footer, #leftcol, #breadcrumbs, .docs #toc, .docs .courtesylinks, #leftColumn, #navColumn { + display: none !important; +} +#bodyColumn, body.docs div.docs { + margin: 0 !important; + border: none !important +} diff --git a/docs/design-pattern/dependencies.html b/docs/design-pattern/dependencies.html index a69af0f70..10ae49d9e 100644 --- a/docs/design-pattern/dependencies.html +++ b/docs/design-pattern/dependencies.html @@ -1,5 +1,5 @@ - + @@ -11,101 +11,63 @@ - - + +
        3.7.1

        Project Report Plugins

        -

        There are no plugins reports defined in the Reporting part of this project.

        + + + + + + + + +
        GroupIdArtifactIdVersion
        org.apache.maven.pluginsmaven-project-info-reports-plugin2.9

        diff --git a/docs/design-pattern/project-info.html b/docs/design-pattern/project-info.html index 8b77a4e30..801b6558c 100644 --- a/docs/design-pattern/project-info.html +++ b/docs/design-pattern/project-info.html @@ -1,5 +1,5 @@ - + @@ -11,101 +11,63 @@ - - + +

      Description: java 程序员的学习成长之路

      -

      URL: https://github.com/laidu/java-learn

      +

      URL: https://laidu.github.io/java-learn

      Project Licenses: No licenses are defined for this project.

      • org.projectlombok:lombok:jar:1.16.18 (compile) [Information]
      Repo ID URL ReleaseSnapshotBlacklisted
      Snapshot
      sonatype-snapshotshttps://oss.sonatype.org/content/repositories/snapshots/NoYesNo
      central https://repo.maven.apache.org/maven2 YesNoNo
      sonatypehttps://oss.sonatype.org/content/repositories/releases/YesNoNo
      apache-snapshotshttps://repository.apache.org/snapshots/NoYesNo
      sonatype-apachehttps://repository.apache.org/releases/YesNoYes
      +

    No

    Repository locations for each of the Dependencies.

    - - - - + - - - - + - - - - + - - - - + - - - - + - - - - + - - - - + - - - - + - - - - + - - - - + - - - - + - - - - + - - - - + - - - - + - - - - + - - - - + - - - - + - - - -
    Artifactsonatype-snapshotscentralsonatypeapache-snapshots
    nexus-aliyun
    ch.qos.logback:logback-access:jar:1.2.3-Found at https://repo.maven.apache.org/maven2Found at https://oss.sonatype.org/content/repositories/releases/-
    Found at http://maven.aliyun.com/nexus/content/repositories/central
    ch.qos.logback:logback-classic:jar:1.2.3-Found at https://repo.maven.apache.org/maven2Found at https://oss.sonatype.org/content/repositories/releases/-
    Found at http://maven.aliyun.com/nexus/content/repositories/central
    ch.qos.logback:logback-core:jar:1.2.3-Found at https://repo.maven.apache.org/maven2Found at https://oss.sonatype.org/content/repositories/releases/-
    Found at http://maven.aliyun.com/nexus/content/repositories/central
    junit:junit:jar:4.12-Found at https://repo.maven.apache.org/maven2Found at https://oss.sonatype.org/content/repositories/releases/-
    Found at http://maven.aliyun.com/nexus/content/repositories/central
    org.apiguardian:apiguardian-api:jar:1.0.0-Found at https://repo.maven.apache.org/maven2Found at https://oss.sonatype.org/content/repositories/releases/-
    Found at http://maven.aliyun.com/nexus/content/repositories/central
    org.hamcrest:hamcrest-core:jar:1.3-Found at https://repo.maven.apache.org/maven2Found at https://oss.sonatype.org/content/repositories/releases/-
    Found at http://maven.aliyun.com/nexus/content/repositories/central
    org.junit.jupiter:junit-jupiter-api:jar:5.0.0-Found at https://repo.maven.apache.org/maven2Found at https://oss.sonatype.org/content/repositories/releases/-
    Found at http://maven.aliyun.com/nexus/content/repositories/central
    org.junit.jupiter:junit-jupiter-engine:jar:5.0.0-Found at https://repo.maven.apache.org/maven2Found at https://oss.sonatype.org/content/repositories/releases/-
    Found at http://maven.aliyun.com/nexus/content/repositories/central
    org.junit.platform:junit-platform-commons:jar:1.0.0-Found at https://repo.maven.apache.org/maven2Found at https://oss.sonatype.org/content/repositories/releases/-
    Found at http://maven.aliyun.com/nexus/content/repositories/central
    org.junit.platform:junit-platform-engine:jar:1.0.2-Found at https://repo.maven.apache.org/maven2Found at https://oss.sonatype.org/content/repositories/releases/-
    Found at http://maven.aliyun.com/nexus/content/repositories/central
    org.junit.platform:junit-platform-launcher:jar:1.0.2-Found at https://repo.maven.apache.org/maven2Found at https://oss.sonatype.org/content/repositories/releases/-
    Found at http://maven.aliyun.com/nexus/content/repositories/central
    org.junit.vintage:junit-vintage-engine:jar:4.12.0-Found at https://repo.maven.apache.org/maven2Found at https://oss.sonatype.org/content/repositories/releases/-
    Found at http://maven.aliyun.com/nexus/content/repositories/central
    org.opentest4j:opentest4j:jar:1.0.0-Found at https://repo.maven.apache.org/maven2Found at https://oss.sonatype.org/content/repositories/releases/-
    Found at http://maven.aliyun.com/nexus/content/repositories/central
    org.projectlombok:lombok:jar:1.16.18-Found at https://repo.maven.apache.org/maven2Found at https://oss.sonatype.org/content/repositories/releases/-
    Found at http://maven.aliyun.com/nexus/content/repositories/central
    org.slf4j:slf4j-api:jar:1.7.25-Found at https://repo.maven.apache.org/maven2Found at https://oss.sonatype.org/content/repositories/releases/-
    Found at http://maven.aliyun.com/nexus/content/repositories/central
    Totalsonatype-snapshotscentralsonatypeapache-snapshots
    nexus-aliyun
    15 (compile: 5, test: 10)015150
    +
    15
    diff --git a/docs/dependency-convergence.html b/docs/dependency-convergence.html index 05f839fd9..d87ea0a5b 100644 --- a/docs/dependency-convergence.html +++ b/docs/dependency-convergence.html @@ -1,5 +1,5 @@ - + @@ -24,7 +24,7 @@
    @@ -119,7 +119,7 @@

    ch.qos.logback:logback-access1.1.11
      -
    1. org.laidu.learn:crawler:jar:1.0-SNAPSHOT
      +- org.laidu.learn:common-amqp:jar:1.0-SNAPSHOT:compile
      |  \- (ch.qos.logback:logback-access:jar:1.1.11:compile - version managed from 1.2.3; omitted for conflict with 1.2.3)
      \- org.laidu.learn:common-util:jar:1.0-SNAPSHOT:compile
         \- (ch.qos.logback:logback-access:jar:1.1.11:compile - version managed from 1.2.3; omitted for duplicate)

    +
  • org.laidu.learn:crawler:jar:1.0-SNAPSHOT
    \- org.laidu.learn:common-util:jar:1.0-SNAPSHOT:compile
       \- (ch.qos.logback:logback-access:jar:1.1.11:compile - version managed from 1.2.3; omitted for conflict with 1.2.3)

  • 1.2.3 @@ -136,13 +136,11 @@

    ch.qos.logback:logback-classic< 1.1.11
      -
    1. org.laidu.learn:common-amqp:jar:1.0-SNAPSHOT
      \- org.springframework.boot:spring-boot-starter-amqp:jar:1.5.9.RELEASE:compile
         \- org.springframework.boot:spring-boot-starter:jar:1.5.9.RELEASE:compile
            \- org.springframework.boot:spring-boot-starter-logging:jar:1.5.9.RELEASE:compile
               \- (ch.qos.logback:logback-classic:jar:1.1.11:compile - omitted for conflict with 1.2.3)

    2. -
    3. org.laidu.learn:crawler:jar:1.0-SNAPSHOT
      +- org.springframework.boot:spring-boot-starter:jar:1.5.9.RELEASE:compile
      |  \- org.springframework.boot:spring-boot-starter-logging:jar:1.5.9.RELEASE:compile
      |     \- (ch.qos.logback:logback-classic:jar:1.1.11:compile - version managed from 1.2.3; omitted for duplicate)
      +- org.laidu.learn:common-amqp:jar:1.0-SNAPSHOT:compile
      |  \- (ch.qos.logback:logback-classic:jar:1.1.11:compile - version managed from 1.2.3; omitted for conflict with 1.2.3)
      \- org.laidu.learn:common-util:jar:1.0-SNAPSHOT:compile
         \- (ch.qos.logback:logback-classic:jar:1.1.11:compile - version managed from 1.2.3; omitted for duplicate)

    +
  • org.laidu.learn:crawler:jar:1.0-SNAPSHOT
    +- org.springframework.boot:spring-boot-starter:jar:1.5.9.RELEASE:compile
    |  \- org.springframework.boot:spring-boot-starter-logging:jar:1.5.9.RELEASE:compile
    |     \- (ch.qos.logback:logback-classic:jar:1.1.11:compile - version managed from 1.2.3; omitted for duplicate)
    \- org.laidu.learn:common-util:jar:1.0-SNAPSHOT:compile
       \- (ch.qos.logback:logback-classic:jar:1.1.11:compile - version managed from 1.2.3; omitted for conflict with 1.2.3)

  • 1.2.3
      -
    1. org.laidu.learn:common-amqp:jar:1.0-SNAPSHOT
      \- ch.qos.logback:logback-classic:jar:1.2.3:compile

    2. org.laidu.learn:crawler:jar:1.0-SNAPSHOT
      \- ch.qos.logback:logback-classic:jar:1.2.3:compile

    ch.qos.logback:logback-core

    @@ -155,7 +153,7 @@

    ch.qos.logback:logback-core

    1.1.11
      -
    1. org.laidu.learn:crawler:jar:1.0-SNAPSHOT
      +- org.laidu.learn:common-amqp:jar:1.0-SNAPSHOT:compile
      |  \- (ch.qos.logback:logback-core:jar:1.1.11:compile - version managed from 1.2.3; omitted for conflict with 1.2.3)
      +- org.laidu.learn:common-util:jar:1.0-SNAPSHOT:compile
      |  \- (ch.qos.logback:logback-core:jar:1.1.11:compile - version managed from 1.2.3; omitted for duplicate)
      +- ch.qos.logback:logback-classic:jar:1.2.3:compile
      |  \- (ch.qos.logback:logback-core:jar:1.1.11:compile - version managed from 1.2.3; omitted for conflict with 1.2.3)
      \- ch.qos.logback:logback-access:jar:1.2.3:compile
         \- (ch.qos.logback:logback-core:jar:1.1.11:compile - version managed from 1.2.3; omitted for conflict with 1.2.3)

    +
  • org.laidu.learn:crawler:jar:1.0-SNAPSHOT
    +- org.laidu.learn:common-util:jar:1.0-SNAPSHOT:compile
    |  \- (ch.qos.logback:logback-core:jar:1.1.11:compile - version managed from 1.2.3; omitted for conflict with 1.2.3)
    +- ch.qos.logback:logback-classic:jar:1.2.3:compile
    |  \- (ch.qos.logback:logback-core:jar:1.1.11:compile - version managed from 1.2.3; omitted for conflict with 1.2.3)
    \- ch.qos.logback:logback-access:jar:1.2.3:compile
       \- (ch.qos.logback:logback-core:jar:1.1.11:compile - version managed from 1.2.3; omitted for conflict with 1.2.3)

  • 1.2.3 @@ -220,7 +218,6 @@

    com.fasterxml.j
  • org.laidu.learn:compress:pom:1.0-SNAPSHOT
    \- org.laidu.learn:common-util:jar:1.0-SNAPSHOT:compile
       \- com.fasterxml.jackson.core:jackson-databind:jar:2.9.1:compile
          \- (com.fasterxml.jackson.core:jackson-annotations:jar:2.9.0:compile - omitted for conflict with 2.9.1)

  • org.laidu.learn:drools:jar:1.0-SNAPSHOT
    \- org.laidu.learn:common-util:jar:1.0-SNAPSHOT:compile
       \- com.fasterxml.jackson.core:jackson-databind:jar:2.9.1:compile
          \- (com.fasterxml.jackson.core:jackson-annotations:jar:2.9.0:compile - omitted for conflict with 2.9.1)

  • org.laidu.learn:dynamoDB:jar:1.0-SNAPSHOT
    \- org.laidu.learn:common-util:jar:1.0-SNAPSHOT:compile
       \- com.fasterxml.jackson.core:jackson-databind:jar:2.9.1:compile
          \- (com.fasterxml.jackson.core:jackson-annotations:jar:2.9.0:compile - omitted for conflict with 2.9.1)

  • -
  • org.laidu.learn:elastic-job:jar:1.0-SNAPSHOT
    +- org.laidu.learn:spring-boot-app:jar:0.0.1-SNAPSHOT:compile
    |  \- org.springframework.boot:spring-boot-starter-web:jar:2.0.1.RELEASE:compile
    |     \- org.springframework.boot:spring-boot-starter-json:jar:2.0.1.RELEASE:compile
    |        \- com.fasterxml.jackson.datatype:jackson-datatype-jsr310:jar:2.9.5:compile
    |           \- (com.fasterxml.jackson.core:jackson-annotations:jar:2.9.0:compile - omitted for duplicate)
    \- org.laidu.learn:common-util:jar:1.0-SNAPSHOT:compile
       \- com.fasterxml.jackson.core:jackson-databind:jar:2.9.1:compile
          \- (com.fasterxml.jackson.core:jackson-annotations:jar:2.9.0:compile - omitted for conflict with 2.9.1)

  • org.laidu.learn:framework:pom:1.0-SNAPSHOT
    \- org.laidu.learn:common-util:jar:1.0-SNAPSHOT:compile
       \- com.fasterxml.jackson.core:jackson-databind:jar:2.9.1:compile
          \- (com.fasterxml.jackson.core:jackson-annotations:jar:2.9.0:compile - omitted for conflict with 2.9.1)

  • org.laidu.learn:httpclient:jar:1.0-SNAPSHOT
    \- org.laidu.learn:common-util:jar:1.0-SNAPSHOT:compile
       \- com.fasterxml.jackson.core:jackson-databind:jar:2.9.1:compile
          \- (com.fasterxml.jackson.core:jackson-annotations:jar:2.9.0:compile - omitted for conflict with 2.9.1)

  • org.laidu.learn:junit5:jar:1.0-SNAPSHOT
    \- org.laidu.learn:common-util:jar:1.0-SNAPSHOT:compile
       \- com.fasterxml.jackson.core:jackson-databind:jar:2.9.1:compile
          \- (com.fasterxml.jackson.core:jackson-annotations:jar:2.9.0:compile - omitted for conflict with 2.9.1)

  • @@ -229,7 +226,6 @@

    com.fasterxml.j
  • org.laidu.learn:network:pom:1.0-SNAPSHOT
    \- org.laidu.learn:common-util:jar:1.0-SNAPSHOT:compile
       \- com.fasterxml.jackson.core:jackson-databind:jar:2.9.1:compile
          \- (com.fasterxml.jackson.core:jackson-annotations:jar:2.9.0:compile - omitted for conflict with 2.9.1)

  • org.laidu.learn:rules-engine:pom:1.0-SNAPSHOT
    \- org.laidu.learn:common-util:jar:1.0-SNAPSHOT:compile
       \- com.fasterxml.jackson.core:jackson-databind:jar:2.9.1:compile
          \- (com.fasterxml.jackson.core:jackson-annotations:jar:2.9.0:compile - omitted for conflict with 2.9.1)

  • org.laidu.learn:shiro:jar:1.0-SNAPSHOT
    \- org.laidu.learn:common-util:jar:1.0-SNAPSHOT:compile
       \- com.fasterxml.jackson.core:jackson-databind:jar:2.9.1:compile
          \- (com.fasterxml.jackson.core:jackson-annotations:jar:2.9.0:compile - omitted for conflict with 2.9.1)

  • -
  • org.laidu.learn:task-scheduler:pom:1.0-SNAPSHOT
    \- org.laidu.learn:common-util:jar:1.0-SNAPSHOT:compile
       \- com.fasterxml.jackson.core:jackson-databind:jar:2.9.1:compile
          \- (com.fasterxml.jackson.core:jackson-annotations:jar:2.9.0:compile - omitted for conflict with 2.9.1)

  • org.laidu.learn:test:pom:1.0-SNAPSHOT
    \- org.laidu.learn:common-util:jar:1.0-SNAPSHOT:compile
       \- com.fasterxml.jackson.core:jackson-databind:jar:2.9.1:compile
          \- (com.fasterxml.jackson.core:jackson-annotations:jar:2.9.0:compile - omitted for conflict with 2.9.1)

  • org.laidu.learn:thumbnailator-google:jar:1.0-SNAPSHOT
    \- org.laidu.learn:common-util:jar:1.0-SNAPSHOT:compile
       \- com.fasterxml.jackson.core:jackson-databind:jar:2.9.1:compile
          \- (com.fasterxml.jackson.core:jackson-annotations:jar:2.9.0:compile - omitted for conflict with 2.9.1)

  • org.laidu.learn:web:pom:1.0-SNAPSHOT
    \- org.laidu.learn:common-util:jar:1.0-SNAPSHOT:compile
       \- com.fasterxml.jackson.core:jackson-databind:jar:2.9.1:compile
          \- (com.fasterxml.jackson.core:jackson-annotations:jar:2.9.0:compile - omitted for conflict with 2.9.1)

  • @@ -253,7 +249,6 @@

    com.fasterxml.j
  • org.laidu.learn:compress:pom:1.0-SNAPSHOT
    \- org.laidu.learn:common-util:jar:1.0-SNAPSHOT:compile
       \- com.fasterxml.jackson.core:jackson-annotations:jar:2.9.1:compile

  • org.laidu.learn:drools:jar:1.0-SNAPSHOT
    \- org.laidu.learn:common-util:jar:1.0-SNAPSHOT:compile
       \- com.fasterxml.jackson.core:jackson-annotations:jar:2.9.1:compile

  • org.laidu.learn:dynamoDB:jar:1.0-SNAPSHOT
    \- org.laidu.learn:common-util:jar:1.0-SNAPSHOT:compile
       \- com.fasterxml.jackson.core:jackson-annotations:jar:2.9.1:compile

  • -
  • org.laidu.learn:elastic-job:jar:1.0-SNAPSHOT
    \- org.laidu.learn:common-util:jar:1.0-SNAPSHOT:compile
       \- com.fasterxml.jackson.core:jackson-annotations:jar:2.9.1:compile

  • org.laidu.learn:framework:pom:1.0-SNAPSHOT
    \- org.laidu.learn:common-util:jar:1.0-SNAPSHOT:compile
       \- com.fasterxml.jackson.core:jackson-annotations:jar:2.9.1:compile

  • org.laidu.learn:httpclient:jar:1.0-SNAPSHOT
    \- org.laidu.learn:common-util:jar:1.0-SNAPSHOT:compile
       \- com.fasterxml.jackson.core:jackson-annotations:jar:2.9.1:compile

  • org.laidu.learn:junit5:jar:1.0-SNAPSHOT
    \- org.laidu.learn:common-util:jar:1.0-SNAPSHOT:compile
       \- com.fasterxml.jackson.core:jackson-annotations:jar:2.9.1:compile

  • @@ -263,7 +258,6 @@

    com.fasterxml.j
  • org.laidu.learn:play:jar:1.0-SNAPSHOT
    \- org.laidu.learn:common-util:jar:1.0-SNAPSHOT:compile
       \- (com.fasterxml.jackson.core:jackson-annotations:jar:2.9.1:compile - omitted for conflict with 2.8.10)

  • org.laidu.learn:rules-engine:pom:1.0-SNAPSHOT
    \- org.laidu.learn:common-util:jar:1.0-SNAPSHOT:compile
       \- com.fasterxml.jackson.core:jackson-annotations:jar:2.9.1:compile

  • org.laidu.learn:shiro:jar:1.0-SNAPSHOT
    \- org.laidu.learn:common-util:jar:1.0-SNAPSHOT:compile
       \- com.fasterxml.jackson.core:jackson-annotations:jar:2.9.1:compile

  • -
  • org.laidu.learn:task-scheduler:pom:1.0-SNAPSHOT
    \- org.laidu.learn:common-util:jar:1.0-SNAPSHOT:compile
       \- com.fasterxml.jackson.core:jackson-annotations:jar:2.9.1:compile

  • org.laidu.learn:test:pom:1.0-SNAPSHOT
    \- org.laidu.learn:common-util:jar:1.0-SNAPSHOT:compile
       \- com.fasterxml.jackson.core:jackson-annotations:jar:2.9.1:compile

  • org.laidu.learn:thumbnailator-google:jar:1.0-SNAPSHOT
    \- org.laidu.learn:common-util:jar:1.0-SNAPSHOT:compile
       \- com.fasterxml.jackson.core:jackson-annotations:jar:2.9.1:compile

  • org.laidu.learn:web:pom:1.0-SNAPSHOT
    \- org.laidu.learn:common-util:jar:1.0-SNAPSHOT:compile
       \- com.fasterxml.jackson.core:jackson-annotations:jar:2.9.1:compile

  • @@ -304,7 +298,6 @@

    com.fasterxml.jackson.
  • org.laidu.learn:compress:pom:1.0-SNAPSHOT
    \- org.laidu.learn:common-util:jar:1.0-SNAPSHOT:compile
       \- de.ruedigermoeller:fst:jar:2.57:compile
          \- (com.fasterxml.jackson.core:jackson-core:jar:2.8.8:compile - omitted for conflict with 2.9.1)

  • org.laidu.learn:drools:jar:1.0-SNAPSHOT
    \- org.laidu.learn:common-util:jar:1.0-SNAPSHOT:compile
       \- de.ruedigermoeller:fst:jar:2.57:compile
          \- (com.fasterxml.jackson.core:jackson-core:jar:2.8.8:compile - omitted for conflict with 2.9.1)

  • org.laidu.learn:dynamoDB:jar:1.0-SNAPSHOT
    \- org.laidu.learn:common-util:jar:1.0-SNAPSHOT:compile
       \- de.ruedigermoeller:fst:jar:2.57:compile
          \- (com.fasterxml.jackson.core:jackson-core:jar:2.8.8:compile - omitted for conflict with 2.9.1)

  • -
  • org.laidu.learn:elastic-job:jar:1.0-SNAPSHOT
    \- org.laidu.learn:common-util:jar:1.0-SNAPSHOT:compile
       \- de.ruedigermoeller:fst:jar:2.57:compile
          \- (com.fasterxml.jackson.core:jackson-core:jar:2.8.8:compile - omitted for conflict with 2.9.1)

  • org.laidu.learn:framework:pom:1.0-SNAPSHOT
    \- org.laidu.learn:common-util:jar:1.0-SNAPSHOT:compile
       \- de.ruedigermoeller:fst:jar:2.57:compile
          \- (com.fasterxml.jackson.core:jackson-core:jar:2.8.8:compile - omitted for conflict with 2.9.1)

  • org.laidu.learn:httpclient:jar:1.0-SNAPSHOT
    \- org.laidu.learn:common-util:jar:1.0-SNAPSHOT:compile
       \- de.ruedigermoeller:fst:jar:2.57:compile
          \- (com.fasterxml.jackson.core:jackson-core:jar:2.8.8:compile - omitted for conflict with 2.9.1)

  • org.laidu.learn:junit5:jar:1.0-SNAPSHOT
    \- org.laidu.learn:common-util:jar:1.0-SNAPSHOT:compile
       \- de.ruedigermoeller:fst:jar:2.57:compile
          \- (com.fasterxml.jackson.core:jackson-core:jar:2.8.8:compile - omitted for conflict with 2.9.1)

  • @@ -314,7 +307,6 @@

    com.fasterxml.jackson.
  • org.laidu.learn:play:jar:1.0-SNAPSHOT
    \- org.laidu.learn:common-util:jar:1.0-SNAPSHOT:compile
       \- de.ruedigermoeller:fst:jar:2.57:compile
          \- (com.fasterxml.jackson.core:jackson-core:jar:2.8.8:compile - omitted for conflict with 2.8.10)

  • org.laidu.learn:rules-engine:pom:1.0-SNAPSHOT
    \- org.laidu.learn:common-util:jar:1.0-SNAPSHOT:compile
       \- de.ruedigermoeller:fst:jar:2.57:compile
          \- (com.fasterxml.jackson.core:jackson-core:jar:2.8.8:compile - omitted for conflict with 2.9.1)

  • org.laidu.learn:shiro:jar:1.0-SNAPSHOT
    \- org.laidu.learn:common-util:jar:1.0-SNAPSHOT:compile
       \- de.ruedigermoeller:fst:jar:2.57:compile
          \- (com.fasterxml.jackson.core:jackson-core:jar:2.8.8:compile - omitted for conflict with 2.9.1)

  • -
  • org.laidu.learn:task-scheduler:pom:1.0-SNAPSHOT
    \- org.laidu.learn:common-util:jar:1.0-SNAPSHOT:compile
       \- de.ruedigermoeller:fst:jar:2.57:compile
          \- (com.fasterxml.jackson.core:jackson-core:jar:2.8.8:compile - omitted for conflict with 2.9.1)

  • org.laidu.learn:test:pom:1.0-SNAPSHOT
    \- org.laidu.learn:common-util:jar:1.0-SNAPSHOT:compile
       \- de.ruedigermoeller:fst:jar:2.57:compile
          \- (com.fasterxml.jackson.core:jackson-core:jar:2.8.8:compile - omitted for conflict with 2.9.1)

  • org.laidu.learn:thumbnailator-google:jar:1.0-SNAPSHOT
    \- org.laidu.learn:common-util:jar:1.0-SNAPSHOT:compile
       \- de.ruedigermoeller:fst:jar:2.57:compile
          \- (com.fasterxml.jackson.core:jackson-core:jar:2.8.8:compile - omitted for conflict with 2.9.1)

  • org.laidu.learn:web:pom:1.0-SNAPSHOT
    \- org.laidu.learn:common-util:jar:1.0-SNAPSHOT:compile
       \- de.ruedigermoeller:fst:jar:2.57:compile
          \- (com.fasterxml.jackson.core:jackson-core:jar:2.8.8:compile - omitted for conflict with 2.9.1)

  • @@ -343,7 +335,6 @@

    com.fasterxml.jackson.
  • org.laidu.learn:compress:pom:1.0-SNAPSHOT
    \- org.laidu.learn:common-util:jar:1.0-SNAPSHOT:compile
       +- com.fasterxml.jackson.core:jackson-core:jar:2.9.1:compile
       \- com.fasterxml.jackson.core:jackson-databind:jar:2.9.1:compile
          \- (com.fasterxml.jackson.core:jackson-core:jar:2.9.1:compile - omitted for duplicate)

  • org.laidu.learn:drools:jar:1.0-SNAPSHOT
    \- org.laidu.learn:common-util:jar:1.0-SNAPSHOT:compile
       +- com.fasterxml.jackson.core:jackson-core:jar:2.9.1:compile
       \- com.fasterxml.jackson.core:jackson-databind:jar:2.9.1:compile
          \- (com.fasterxml.jackson.core:jackson-core:jar:2.9.1:compile - omitted for duplicate)

  • org.laidu.learn:dynamoDB:jar:1.0-SNAPSHOT
    \- org.laidu.learn:common-util:jar:1.0-SNAPSHOT:compile
       +- com.fasterxml.jackson.core:jackson-core:jar:2.9.1:compile
       \- com.fasterxml.jackson.core:jackson-databind:jar:2.9.1:compile
          \- (com.fasterxml.jackson.core:jackson-core:jar:2.9.1:compile - omitted for duplicate)

  • -
  • org.laidu.learn:elastic-job:jar:1.0-SNAPSHOT
    \- org.laidu.learn:common-util:jar:1.0-SNAPSHOT:compile
       +- com.fasterxml.jackson.core:jackson-core:jar:2.9.1:compile
       \- com.fasterxml.jackson.core:jackson-databind:jar:2.9.1:compile
          \- (com.fasterxml.jackson.core:jackson-core:jar:2.9.1:compile - omitted for duplicate)

  • org.laidu.learn:framework:pom:1.0-SNAPSHOT
    \- org.laidu.learn:common-util:jar:1.0-SNAPSHOT:compile
       +- com.fasterxml.jackson.core:jackson-core:jar:2.9.1:compile
       \- com.fasterxml.jackson.core:jackson-databind:jar:2.9.1:compile
          \- (com.fasterxml.jackson.core:jackson-core:jar:2.9.1:compile - omitted for duplicate)

  • org.laidu.learn:httpclient:jar:1.0-SNAPSHOT
    \- org.laidu.learn:common-util:jar:1.0-SNAPSHOT:compile
       +- com.fasterxml.jackson.core:jackson-core:jar:2.9.1:compile
       \- com.fasterxml.jackson.core:jackson-databind:jar:2.9.1:compile
          \- (com.fasterxml.jackson.core:jackson-core:jar:2.9.1:compile - omitted for duplicate)

  • org.laidu.learn:junit5:jar:1.0-SNAPSHOT
    \- org.laidu.learn:common-util:jar:1.0-SNAPSHOT:compile
       +- com.fasterxml.jackson.core:jackson-core:jar:2.9.1:compile
       \- com.fasterxml.jackson.core:jackson-databind:jar:2.9.1:compile
          \- (com.fasterxml.jackson.core:jackson-core:jar:2.9.1:compile - omitted for duplicate)

  • @@ -353,22 +344,11 @@

    com.fasterxml.jackson.
  • org.laidu.learn:play:jar:1.0-SNAPSHOT
    \- org.laidu.learn:common-util:jar:1.0-SNAPSHOT:compile
       \- (com.fasterxml.jackson.core:jackson-core:jar:2.9.1:compile - omitted for conflict with 2.8.10)

  • org.laidu.learn:rules-engine:pom:1.0-SNAPSHOT
    \- org.laidu.learn:common-util:jar:1.0-SNAPSHOT:compile
       +- com.fasterxml.jackson.core:jackson-core:jar:2.9.1:compile
       \- com.fasterxml.jackson.core:jackson-databind:jar:2.9.1:compile
          \- (com.fasterxml.jackson.core:jackson-core:jar:2.9.1:compile - omitted for duplicate)

  • org.laidu.learn:shiro:jar:1.0-SNAPSHOT
    \- org.laidu.learn:common-util:jar:1.0-SNAPSHOT:compile
       +- com.fasterxml.jackson.core:jackson-core:jar:2.9.1:compile
       \- com.fasterxml.jackson.core:jackson-databind:jar:2.9.1:compile
          \- (com.fasterxml.jackson.core:jackson-core:jar:2.9.1:compile - omitted for duplicate)

  • -
  • org.laidu.learn:task-scheduler:pom:1.0-SNAPSHOT
    \- org.laidu.learn:common-util:jar:1.0-SNAPSHOT:compile
       +- com.fasterxml.jackson.core:jackson-core:jar:2.9.1:compile
       \- com.fasterxml.jackson.core:jackson-databind:jar:2.9.1:compile
          \- (com.fasterxml.jackson.core:jackson-core:jar:2.9.1:compile - omitted for duplicate)

  • org.laidu.learn:test:pom:1.0-SNAPSHOT
    \- org.laidu.learn:common-util:jar:1.0-SNAPSHOT:compile
       +- com.fasterxml.jackson.core:jackson-core:jar:2.9.1:compile
       \- com.fasterxml.jackson.core:jackson-databind:jar:2.9.1:compile
          \- (com.fasterxml.jackson.core:jackson-core:jar:2.9.1:compile - omitted for duplicate)

  • org.laidu.learn:thumbnailator-google:jar:1.0-SNAPSHOT
    \- org.laidu.learn:common-util:jar:1.0-SNAPSHOT:compile
       +- com.fasterxml.jackson.core:jackson-core:jar:2.9.1:compile
       \- com.fasterxml.jackson.core:jackson-databind:jar:2.9.1:compile
          \- (com.fasterxml.jackson.core:jackson-core:jar:2.9.1:compile - omitted for duplicate)

  • org.laidu.learn:web:pom:1.0-SNAPSHOT
    \- org.laidu.learn:common-util:jar:1.0-SNAPSHOT:compile
       +- com.fasterxml.jackson.core:jackson-core:jar:2.9.1:compile
       \- com.fasterxml.jackson.core:jackson-databind:jar:2.9.1:compile
          \- (com.fasterxml.jackson.core:jackson-core:jar:2.9.1:compile - omitted for duplicate)

  • org.laidu.learn:webmagic-learn:jar:1.0-SNAPSHOT
    \- org.laidu.learn:common-util:jar:1.0-SNAPSHOT:compile
       +- com.fasterxml.jackson.core:jackson-core:jar:2.9.1:compile
       \- com.fasterxml.jackson.core:jackson-databind:jar:2.9.1:compile
          \- (com.fasterxml.jackson.core:jackson-core:jar:2.9.1:compile - omitted for duplicate)

  • -
  • org.laidu.learn:webmagic:pom:1.0-SNAPSHOT
    \- org.laidu.learn:common-util:jar:1.0-SNAPSHOT:compile
       +- com.fasterxml.jackson.core:jackson-core:jar:2.9.1:compile
       \- com.fasterxml.jackson.core:jackson-databind:jar:2.9.1:compile
          \- (com.fasterxml.jackson.core:jackson-core:jar:2.9.1:compile - omitted for duplicate)

  • - -2.9.4 - -
      -
    1. org.laidu.learn:elastic-job:jar:1.0-SNAPSHOT
      \- org.laidu.learn:spring-boot-app:jar:0.0.1-SNAPSHOT:compile
         \- io.micrometer:micrometer-registry-atlas:jar:1.0.3:compile
            \- com.netflix.spectator:spectator-reg-atlas:jar:0.63.0:compile
               +- (com.fasterxml.jackson.core:jackson-core:jar:2.9.4:compile - omitted for conflict with 2.9.1)
               \- com.fasterxml.jackson.dataformat:jackson-dataformat-smile:jar:2.9.4:compile
                  \- (com.fasterxml.jackson.core:jackson-core:jar:2.9.4:compile - omitted for duplicate)

    - -2.9.5 - -
      -
    1. org.laidu.learn:elastic-job:jar:1.0-SNAPSHOT
      \- org.laidu.learn:spring-boot-app:jar:0.0.1-SNAPSHOT:compile
         \- org.springframework.boot:spring-boot-starter-web:jar:2.0.1.RELEASE:compile
            \- org.springframework.boot:spring-boot-starter-json:jar:2.0.1.RELEASE:compile
               +- com.fasterxml.jackson.datatype:jackson-datatype-jdk8:jar:2.9.5:compile
               |  \- (com.fasterxml.jackson.core:jackson-core:jar:2.9.5:compile - omitted for conflict with 2.9.4)
               +- com.fasterxml.jackson.datatype:jackson-datatype-jsr310:jar:2.9.5:compile
               |  \- (com.fasterxml.jackson.core:jackson-core:jar:2.9.5:compile - omitted for conflict with 2.9.4)
               \- com.fasterxml.jackson.module:jackson-module-parameter-names:jar:2.9.5:compile
                  \- (com.fasterxml.jackson.core:jackson-core:jar:2.9.5:compile - omitted for conflict with 2.9.4)

    +
  • org.laidu.learn:webmagic:pom:1.0-SNAPSHOT
    \- org.laidu.learn:common-util:jar:1.0-SNAPSHOT:compile
       +- com.fasterxml.jackson.core:jackson-core:jar:2.9.1:compile
       \- com.fasterxml.jackson.core:jackson-databind:jar:2.9.1:compile
          \- (com.fasterxml.jackson.core:jackson-core:jar:2.9.1:compile - omitted for duplicate)

  • com.fasterxml.jackson.core:jackson-databind

    @@ -401,18 +381,7 @@

    com.fasterxml.jack

    - - - - - -
    1. org.laidu.learn:dynamoDB:jar:1.0-SNAPSHOT
      \- org.laidu.learn:common-util:jar:1.0-SNAPSHOT:compile
         \- com.fasterxml.jackson.core:jackson-databind:jar:2.9.1:compile

    2. -
    3. org.laidu.learn:elastic-job:jar:1.0-SNAPSHOT
      \- org.laidu.learn:common-util:jar:1.0-SNAPSHOT:compile
         \- com.fasterxml.jackson.core:jackson-databind:jar:2.9.1:compile

    4. -
    5. org.laidu.learn:play:jar:1.0-SNAPSHOT
      \- org.laidu.learn:common-util:jar:1.0-SNAPSHOT:compile
         \- (com.fasterxml.jackson.core:jackson-databind:jar:2.9.1:compile - omitted for conflict with 2.8.10)

    2.9.4 -
      -
    1. org.laidu.learn:elastic-job:jar:1.0-SNAPSHOT
      \- org.laidu.learn:spring-boot-app:jar:0.0.1-SNAPSHOT:compile
         \- io.micrometer:micrometer-registry-atlas:jar:1.0.3:compile
            \- com.netflix.spectator:spectator-reg-atlas:jar:0.63.0:compile
               \- (com.fasterxml.jackson.core:jackson-databind:jar:2.9.4:compile - omitted for conflict with 2.9.5)

    2.9.5 -
      -
    1. org.laidu.learn:elastic-job:jar:1.0-SNAPSHOT
      \- org.laidu.learn:spring-boot-app:jar:0.0.1-SNAPSHOT:compile
         +- org.springframework.boot:spring-boot-starter-actuator:jar:2.0.1.RELEASE:compile
         |  \- org.springframework.boot:spring-boot-actuator-autoconfigure:jar:2.0.1.RELEASE:compile
         |     \- (com.fasterxml.jackson.core:jackson-databind:jar:2.9.5:compile - omitted for conflict with 2.9.1)
         \- org.springframework.boot:spring-boot-starter-web:jar:2.0.1.RELEASE:compile
            \- org.springframework.boot:spring-boot-starter-json:jar:2.0.1.RELEASE:compile
               +- (com.fasterxml.jackson.core:jackson-databind:jar:2.9.5:compile - omitted for duplicate)
               +- com.fasterxml.jackson.datatype:jackson-datatype-jdk8:jar:2.9.5:compile
               |  \- (com.fasterxml.jackson.core:jackson-databind:jar:2.9.5:compile - omitted for duplicate)
               +- com.fasterxml.jackson.datatype:jackson-datatype-jsr310:jar:2.9.5:compile
               |  \- (com.fasterxml.jackson.core:jackson-databind:jar:2.9.5:compile - omitted for duplicate)
               \- com.fasterxml.jackson.module:jackson-module-parameter-names:jar:2.9.5:compile
                  \- (com.fasterxml.jackson.core:jackson-databind:jar:2.9.5:compile - omitted for duplicate)

    +
  • org.laidu.learn:play:jar:1.0-SNAPSHOT
    \- org.laidu.learn:common-util:jar:1.0-SNAPSHOT:compile
       \- (com.fasterxml.jackson.core:jackson-databind:jar:2.9.1:compile - omitted for conflict with 2.8.10)

  • com.fasterxml.jackson.datatype:jackson-datatype-jdk8

    @@ -465,57 +434,40 @@

    com.google.code.findbugs:jsr30
    1. org.laidu.learn:hadoop:jar:1.0-SNAPSHOT
      \- org.apache.hadoop:hadoop-common:jar:2.8.1:compile
         \- com.google.code.findbugs:jsr305:jar:3.0.0:compile

    -

    com.google.code.gson:gson

    +

    com.google.guava:guava

    [Error] - - - - -
    2.6.1 -
      -
    1. org.laidu.learn:elastic-job:jar:1.0-SNAPSHOT
      \- com.dangdang:elastic-job-lite-core:jar:2.1.5:compile
         \- com.dangdang:elastic-job-common-core:jar:2.1.5:compile
            \- (com.google.code.gson:gson:jar:2.6.1:compile - omitted for conflict with RELEASE)

    RELEASE -
      -
    1. org.laidu.learn:elastic-job:jar:1.0-SNAPSHOT
      \- org.laidu.learn:common-util:jar:1.0-SNAPSHOT:compile
         \- com.google.code.gson:gson:jar:RELEASE:compile

    -
    -

    com.google.guava:guava

    - - - - + + + +
    [Error] - - - + - + - +
  • org.laidu.learn:elastic-job:jar:1.0-SNAPSHOT
    \- com.dangdang:elastic-job-lite-core:jar:2.1.5:compile
       \- com.dangdang:elastic-job-common-core:jar:2.1.5:compile
          \- com.google.guava:guava:jar:18.0:compile

  • + - + - + + + + + + + + +
    11.0.2
    1. org.laidu.learn:hadoop:jar:1.0-SNAPSHOT
      +- org.apache.hadoop:hadoop-common:jar:2.8.1:compile
      |  \- com.google.guava:guava:jar:11.0.2:compile
      +- org.apache.hadoop:hadoop-client:jar:2.8.1:compile
      |  +- org.apache.hadoop:hadoop-hdfs:jar:2.8.1:compile
      |  |  \- (com.google.guava:guava:jar:11.0.2:compile - omitted for duplicate)
      |  +- org.apache.hadoop:hadoop-mapreduce-client-app:jar:2.8.1:compile
      |  |  \- org.apache.hadoop:hadoop-mapreduce-client-common:jar:2.8.1:compile
      |  |     +- org.apache.hadoop:hadoop-yarn-client:jar:2.8.1:compile
      |  |     |  \- (com.google.guava:guava:jar:11.0.2:compile - omitted for duplicate)
      |  |     \- org.apache.hadoop:hadoop-yarn-server-common:jar:2.8.1:compile
      |  |        \- (com.google.guava:guava:jar:11.0.2:compile - omitted for duplicate)
      |  \- org.apache.hadoop:hadoop-yarn-api:jar:2.8.1:compile
      |     \- (com.google.guava:guava:jar:11.0.2:compile - omitted for duplicate)
      \- org.apache.hadoop:hadoop-mapreduce-client-core:jar:2.8.1:compile
         \- org.apache.hadoop:hadoop-yarn-common:jar:2.8.1:compile
            \- (com.google.guava:guava:jar:11.0.2:compile - omitted for duplicate)

    16.0.1
      -
    1. org.laidu.learn:elastic-job:jar:1.0-SNAPSHOT
      \- com.dangdang:elastic-job-lite-core:jar:2.1.5:compile
         \- com.dangdang:elastic-job-common-core:jar:2.1.5:compile
            \- org.apache.curator:curator-client:jar:2.10.0:compile
               \- (com.google.guava:guava:jar:16.0.1:compile - omitted for conflict with 25.0-jre)

    2. +
    3. org.laidu.learn:elastic-job:jar:1.0-SNAPSHOT
      \- com.dangdang:elastic-job-lite-core:jar:2.1.5:compile
         \- com.dangdang:elastic-job-common-core:jar:2.1.5:compile
            \- org.apache.curator:curator-client:jar:2.10.0:compile
               \- (com.google.guava:guava:jar:16.0.1:compile - omitted for conflict with 18.0)

    4. org.laidu.learn:hadoop:jar:1.0-SNAPSHOT
      \- org.apache.hadoop:hadoop-common:jar:2.8.1:compile
         +- org.apache.hadoop:hadoop-auth:jar:2.8.1:compile
         |  \- org.apache.curator:curator-framework:jar:2.7.1:compile
         |     \- (com.google.guava:guava:jar:16.0.1:compile - omitted for conflict with 11.0.2)
         +- org.apache.curator:curator-client:jar:2.7.1:compile
         |  \- (com.google.guava:guava:jar:16.0.1:compile - omitted for conflict with 11.0.2)
         \- org.apache.curator:curator-recipes:jar:2.7.1:compile
            \- (com.google.guava:guava:jar:16.0.1:compile - omitted for conflict with 11.0.2)

    18.0
    1. org.laidu.learn.swagger:swagger:jar:0.0.1-SNAPSHOT
      \- io.springfox:springfox-swagger2:jar:2.7.0:compile
         +- io.springfox:springfox-spi:jar:2.7.0:compile
         |  \- io.springfox:springfox-core:jar:2.7.0:compile
         |     \- (com.google.guava:guava:jar:18.0:compile - omitted for conflict with 25.0-jre)
         +- io.springfox:springfox-swagger-common:jar:2.7.0:compile
         |  \- (com.google.guava:guava:jar:18.0:compile - omitted for conflict with 25.0-jre)
         +- io.springfox:springfox-spring-web:jar:2.7.0:compile
         |  \- (com.google.guava:guava:jar:18.0:compile - omitted for conflict with 25.0-jre)
         \- (com.google.guava:guava:jar:18.0:compile - omitted for conflict with 25.0-jre)

    2. -
    3. org.laidu.learn:elastic-job:jar:1.0-SNAPSHOT
      \- com.dangdang:elastic-job-lite-core:jar:2.1.5:compile
         \- com.dangdang:elastic-job-common-core:jar:2.1.5:compile
            \- (com.google.guava:guava:jar:18.0:compile - omitted for conflict with 25.0-jre)

    20.0
    1. org.laidu.learn.swagger:swagger:jar:0.0.1-SNAPSHOT
      \- io.springfox:springfox-swagger2:jar:2.7.0:compile
         \- io.springfox:springfox-spring-web:jar:2.7.0:compile
            \- org.reflections:reflections:jar:0.9.11:compile
               \- (com.google.guava:guava:jar:20.0:compile - omitted for conflict with 25.0-jre)

    22.0
    1. org.laidu.learn:play:jar:1.0-SNAPSHOT
      \- com.typesafe.play:play_2.11:jar:2.6.6:compile
         \- com.google.guava:guava:jar:22.0:compile

    25.0-jre
      @@ -524,16 +476,16 @@

      com.google.guava:guava

      com.squareup:javapoet

      - +
      [Error] - + - +
      1.10.0
      1. org.laidu.crawler:crawler-helper:jar:1.0-SNAPSHOT
        \- org.laidu.learn:common-util:jar:1.0-SNAPSHOT:compile
           \- (com.squareup:javapoet:jar:1.10.0:compile - omitted for conflict with 1.9.0)

      1.9.0
        @@ -541,16 +493,16 @@

        com.squareup:javapoet

        com.typesafe:config

        - + - - - - - - -
        [Error] - + - +
        1.2.0
        1. org.laidu.learn:play:jar:1.0-SNAPSHOT
          \- com.typesafe.play:play_2.11:jar:2.6.6:compile
             \- com.typesafe.play:play-streams_2.11:jar:2.6.6:compile
                \- com.typesafe.akka:akka-stream_2.11:jar:2.5.4:compile
                   \- com.typesafe:ssl-config-core_2.11:jar:0.2.1:compile
                      \- (com.typesafe:config:jar:1.2.0:compile - omitted for conflict with 1.3.1)

        1.3.1
          @@ -558,22 +510,22 @@

          com.typesafe:config

          commons-codec:commons-codec

          - +
          [Error] - + - + - + -
          1.10
          1. org.laidu.learn:apache-poi:jar:1.0-SNAPSHOT
            \- org.apache.poi:poi:jar:3.17:compile
               \- commons-codec:commons-codec:jar:1.10:compile

          2. org.laidu.learn:play:jar:1.0-SNAPSHOT
            \- com.typesafe.play:play_2.11:jar:2.6.6:compile
               \- commons-codec:commons-codec:jar:1.10:compile

          1.4
          1. org.laidu.learn:hadoop:jar:1.0-SNAPSHOT
            +- org.apache.hadoop:hadoop-common:jar:2.8.1:compile
            |  +- commons-codec:commons-codec:jar:1.4:compile
            |  +- net.java.dev.jets3t:jets3t:jar:0.9.0:compile
            |  |  \- (commons-codec:commons-codec:jar:1.4:compile - omitted for duplicate)
            |  \- org.apache.hadoop:hadoop-auth:jar:2.8.1:compile
            |     \- (commons-codec:commons-codec:jar:1.4:compile - omitted for duplicate)
            +- org.apache.hadoop:hadoop-client:jar:2.8.1:compile
            |  \- org.apache.hadoop:hadoop-hdfs:jar:2.8.1:compile
            |     \- (commons-codec:commons-codec:jar:1.4:compile - omitted for duplicate)
            \- org.apache.hadoop:hadoop-mapreduce-client-core:jar:2.8.1:compile
               \- org.apache.hadoop:hadoop-yarn-common:jar:2.8.1:compile
                  \- (commons-codec:commons-codec:jar:1.4:compile - omitted for duplicate)

          1.9
            @@ -583,16 +535,16 @@

            commons-codec:commons-codec

            commons-collections:commons-collections

            - + + + + + + + + +
            [Error] - + - +
            3.2.1
            1. org.laidu.learn:hadoop:jar:1.0-SNAPSHOT
              \- org.apache.hadoop:hadoop-common:jar:2.8.1:compile
                 \- commons-configuration:commons-configuration:jar:1.6:compile
                    \- (commons-collections:commons-collections:jar:3.2.1:compile - omitted for conflict with 3.2.2)

            3.2.2
              @@ -600,17 +552,17 @@

              commons-collections:co

              commons-io:commons-io

              - +
              [Error] - + - + + + + +
              1.3.2
              1. org.laidu.learn:crawler:jar:1.0-SNAPSHOT
                \- us.codecraft:webmagic-core:jar:0.7.3:compile
                   \- (commons-io:commons-io:jar:1.3.2:compile - omitted for conflict with 2.5)

              2. org.laidu.learn:webmagic-learn:jar:1.0-SNAPSHOT
                \- us.codecraft:webmagic-core:jar:0.7.3:compile
                   \- (commons-io:commons-io:jar:1.3.2:compile - omitted for conflict with 2.5)

              2.5
                @@ -619,16 +571,16 @@

                commons-io:commons-io

                commons-lang:commons-lang

                - + + + + + -
                [Error] - + - + + + + + + + + +
                2.4
                1. org.laidu.learn:hadoop:jar:1.0-SNAPSHOT
                  \- org.apache.hadoop:hadoop-common:jar:2.8.1:compile
                     \- commons-configuration:commons-configuration:jar:1.6:compile
                        \- (commons-lang:commons-lang:jar:2.4:compile - omitted for conflict with 2.6)

                2.6
                  @@ -636,32 +588,32 @@

                  commons-lang:commons-lang

                  commons-logging:commons-logging

                  - + -
                  [Error] - + - + - + - + - +
                  1.0.3
                  1. org.laidu.learn:hadoop:jar:1.0-SNAPSHOT
                    \- org.apache.hadoop:hadoop-common:jar:2.8.1:compile
                       \- commons-configuration:commons-configuration:jar:1.6:compile
                          \- commons-digester:commons-digester:jar:1.8:compile
                             \- commons-beanutils:commons-beanutils:jar:1.7.0:compile
                                \- (commons-logging:commons-logging:jar:1.0.3:compile - omitted for conflict with 1.1.3)

                  1.1
                  1. org.laidu.learn:hadoop:jar:1.0-SNAPSHOT
                    \- org.apache.hadoop:hadoop-common:jar:2.8.1:compile
                       \- commons-configuration:commons-configuration:jar:1.6:compile
                          \- commons-digester:commons-digester:jar:1.8:compile
                             \- (commons-logging:commons-logging:jar:1.1:compile - omitted for conflict with 1.1.3)

                  1.1.1
                  1. org.laidu.learn:hadoop:jar:1.0-SNAPSHOT
                    \- org.apache.hadoop:hadoop-common:jar:2.8.1:compile
                       +- net.java.dev.jets3t:jets3t:jar:0.9.0:compile
                       |  \- (commons-logging:commons-logging:jar:1.1.1:compile - omitted for conflict with 1.1.3)
                       \- commons-configuration:commons-configuration:jar:1.6:compile
                          +- (commons-logging:commons-logging:jar:1.1.1:compile - omitted for conflict with 1.1.3)
                          \- commons-beanutils:commons-beanutils-core:jar:1.8.0:compile
                             \- (commons-logging:commons-logging:jar:1.1.1:compile - omitted for conflict with 1.1.3)

                  1.1.3
                  1. org.laidu.learn:dynamoDB:jar:1.0-SNAPSHOT
                    \- com.amazonaws:aws-java-sdk-dynamodb:jar:1.11.297:compile
                       \- com.amazonaws:aws-java-sdk-core:jar:1.11.297:compile
                          \- (commons-logging:commons-logging:jar:1.1.3:compile - omitted for conflict with 1.2)

                  2. org.laidu.learn:hadoop:jar:1.0-SNAPSHOT
                    +- org.apache.hadoop:hadoop-common:jar:2.8.1:compile
                    |  \- commons-logging:commons-logging:jar:1.1.3:compile
                    +- org.apache.hadoop:hadoop-client:jar:2.8.1:compile
                    |  +- org.apache.hadoop:hadoop-hdfs:jar:2.8.1:compile
                    |  |  \- (commons-logging:commons-logging:jar:1.1.3:compile - omitted for duplicate)
                    |  +- org.apache.hadoop:hadoop-mapreduce-client-app:jar:2.8.1:compile
                    |  |  \- org.apache.hadoop:hadoop-mapreduce-client-common:jar:2.8.1:compile
                    |  |     +- org.apache.hadoop:hadoop-yarn-client:jar:2.8.1:compile
                    |  |     |  \- (commons-logging:commons-logging:jar:1.1.3:compile - omitted for duplicate)
                    |  |     \- org.apache.hadoop:hadoop-yarn-server-common:jar:2.8.1:compile
                    |  |        \- (commons-logging:commons-logging:jar:1.1.3:compile - omitted for duplicate)
                    |  \- org.apache.hadoop:hadoop-yarn-api:jar:2.8.1:compile
                    |     \- (commons-logging:commons-logging:jar:1.1.3:compile - omitted for duplicate)
                    \- org.apache.hadoop:hadoop-mapreduce-client-core:jar:2.8.1:compile
                       \- org.apache.hadoop:hadoop-yarn-common:jar:2.8.1:compile
                          \- (commons-logging:commons-logging:jar:1.1.3:compile - omitted for duplicate)

                  1.2
                    @@ -670,16 +622,16 @@

                    commons-logging:commons-loggin

                    io.netty:netty

                    - +
                    [Error] - + - +
                    3.6.2.Final
                    1. org.laidu.learn:hadoop:jar:1.0-SNAPSHOT
                      +- org.apache.hadoop:hadoop-mapreduce-client-core:jar:2.8.1:compile
                      |  \- io.netty:netty:jar:3.6.2.Final:compile
                      \- org.apache.hadoop:hadoop-mapreduce-client-jobclient:jar:2.8.1:provided
                         \- (io.netty:netty:jar:3.6.2.Final:provided - omitted for duplicate)

                    3.7.0.Final
                      @@ -687,16 +639,16 @@

                      io.netty:netty

                      io.netty:netty-handler

                      - +
                      [Error] - + - + +
                    1. org.laidu.learn:spring-mvc:jar:1.0-SNAPSHOT
                      \- org.springframework.boot:spring-boot-starter-test:jar:2.0.1.RELEASE:test
                         \- com.jayway.jsonpath:json-path:jar:2.4.0:test
                            \- net.minidev:json-smart:jar:2.3:test
                               \- net.minidev:accessors-smart:jar:1.2:test
                                  \- (org.ow2.asm:asm:jar:5.0.4:test - omitted for conflict with 6.0)

                    2. @@ -1392,72 +1349,53 @@

                      org.slf4j:slf4j-api

                    3. org.laidu.learn:hadoop:jar:1.0-SNAPSHOT
                      \- org.apache.hadoop:hadoop-common:jar:2.8.1:compile
                         \- org.apache.avro:avro:jar:1.7.4:compile
                            \- (org.slf4j:slf4j-api:jar:1.6.4:compile - omitted for conflict with 1.7.10)

                    4. org.laidu.learn:shiro:jar:1.0-SNAPSHOT
                      \- org.apache.shiro:shiro-core:jar:1.3.2:compile
                         \- org.slf4j:slf4j-api:jar:1.6.4:compile

                    5. - - - - - - - - - - + - + - + - +
                      4.1.13.Final
                      1. org.laidu.learn:async-http-client:jar:1.0-SNAPSHOT
                        \- org.asynchttpclient:async-http-client:jar:2.1.0-alpha24:compile
                           \- com.typesafe.netty:netty-reactive-streams:jar:2.0.0:compile
                              \- (io.netty:netty-handler:jar:4.1.13.Final:compile - omitted for conflict with 4.1.15.Final)

                      4.1.15.Final
                        @@ -704,16 +656,16 @@

                        io.netty:netty-handler

                        log4j:log4j

                        - +
                        [Error] - + - + +
                      1. org.laidu.learn:spring-webflux:jar:1.0-SNAPSHOT
                        \- org.junit.jupiter:junit-jupiter-api:jar:5.0.0:test

                      2. +
                      3. org.laidu.learn:spring:pom:1.0-SNAPSHOT
                        \- org.junit.jupiter:junit-jupiter-api:jar:5.0.0:test

                      4. +
                      5. org.laidu.learn:task-scheduler:pom:1.0-SNAPSHOT
                        \- org.junit.jupiter:junit-jupiter-api:jar:5.0.0:test

                      6. +
                      7. org.laidu.learn:spring-web:pom:1.0-SNAPSHOT
                        \- org.junit.jupiter:junit-jupiter-engine:jar:5.0.0:test
                           \- (org.junit.jupiter:junit-jupiter-api:jar:5.1.0:test - version managed from 5.0.0; omitted for conflict with 5.0.0)

                      8. +
                      9. org.laidu.learn:spring-webflux:jar:1.0-SNAPSHOT
                        \- org.junit.jupiter:junit-jupiter-engine:jar:5.0.0:test
                           \- (org.junit.jupiter:junit-jupiter-api:jar:5.1.0:test - version managed from 5.0.0; omitted for conflict with 5.0.0)

                      10. +
                      11. org.laidu.learn:task-scheduler:pom:1.0-SNAPSHOT
                        \- org.junit.jupiter:junit-jupiter-engine:jar:5.0.0:test
                           \- (org.junit.jupiter:junit-jupiter-api:jar:5.1.0:test - version managed from 5.0.0; omitted for conflict with 5.0.0)

                      12. 1.2.16
                        1. org.laidu.learn:hadoop:jar:1.0-SNAPSHOT
                          \- org.apache.hadoop:hadoop-common:jar:2.8.1:compile
                             \- org.apache.zookeeper:zookeeper:jar:3.4.6:compile
                                \- (log4j:log4j:jar:1.2.16:compile - omitted for conflict with 1.2.17)

                        1.2.17
                          @@ -721,27 +673,21 @@

                          log4j:log4j

                          org.apache.commons:commons-lang3

                          - +
                          [Error] - + - - -
                          3.1
                          1. org.laidu.learn:crawler:jar:1.0-SNAPSHOT
                            \- us.codecraft:webmagic-core:jar:0.7.3:compile
                               \- (org.apache.commons:commons-lang3:jar:3.1:compile - omitted for conflict with 3.6)

                          2. org.laidu.learn:webmagic-learn:jar:1.0-SNAPSHOT
                            \- us.codecraft:webmagic-core:jar:0.7.3:compile
                               \- (org.apache.commons:commons-lang3:jar:3.1:compile - omitted for conflict with 3.6)

                          3.4 -
                            -
                          1. org.laidu.learn:elastic-job:jar:1.0-SNAPSHOT
                            \- com.dangdang:elastic-job-lite-core:jar:2.1.5:compile
                               \- com.dangdang:elastic-job-common-core:jar:2.1.5:compile
                                  \- (org.apache.commons:commons-lang3:jar:3.4:compile - omitted for conflict with 3.6)

                          3.6
                          1. org.laidu.learn:crawler:jar:1.0-SNAPSHOT
                            \- org.laidu.learn:common-util:jar:1.0-SNAPSHOT:compile
                               \- org.apache.commons:commons-lang3:jar:3.6:compile

                          2. -
                          3. org.laidu.learn:elastic-job:jar:1.0-SNAPSHOT
                            \- org.laidu.learn:common-util:jar:1.0-SNAPSHOT:compile
                               \- org.apache.commons:commons-lang3:jar:3.6:compile

                          4. org.laidu.learn:webmagic-learn:jar:1.0-SNAPSHOT
                            \- org.laidu.learn:common-util:jar:1.0-SNAPSHOT:compile
                               \- org.apache.commons:commons-lang3:jar:3.6:compile

                          org.apache.httpcomponents:httpclient

                          @@ -807,7 +753,6 @@

                          org.apache.httpcomponents:h
                        1. org.laidu.learn:compress:pom:1.0-SNAPSHOT
                          \- org.laidu.learn:common-util:jar:1.0-SNAPSHOT:compile
                             \- org.apache.httpcomponents:httpclient:jar:4.5.3:compile
                                \- (org.apache.httpcomponents:httpcore:jar:4.4.6:compile - omitted for conflict with 4.4.8)

                        2. org.laidu.learn:drools:jar:1.0-SNAPSHOT
                          \- org.laidu.learn:common-util:jar:1.0-SNAPSHOT:compile
                             \- org.apache.httpcomponents:httpclient:jar:4.5.3:compile
                                \- (org.apache.httpcomponents:httpcore:jar:4.4.6:compile - omitted for conflict with 4.4.8)

                        3. org.laidu.learn:dynamoDB:jar:1.0-SNAPSHOT
                          \- org.laidu.learn:common-util:jar:1.0-SNAPSHOT:compile
                             \- org.apache.httpcomponents:httpclient:jar:4.5.3:compile
                                \- (org.apache.httpcomponents:httpcore:jar:4.4.6:compile - omitted for conflict with 4.4.8)

                        4. -
                        5. org.laidu.learn:elastic-job:jar:1.0-SNAPSHOT
                          \- org.laidu.learn:common-util:jar:1.0-SNAPSHOT:compile
                             \- org.apache.httpcomponents:httpclient:jar:4.5.3:compile
                                \- (org.apache.httpcomponents:httpcore:jar:4.4.6:compile - omitted for conflict with 4.4.8)

                        6. org.laidu.learn:framework:pom:1.0-SNAPSHOT
                          \- org.laidu.learn:common-util:jar:1.0-SNAPSHOT:compile
                             \- org.apache.httpcomponents:httpclient:jar:4.5.3:compile
                                \- (org.apache.httpcomponents:httpcore:jar:4.4.6:compile - omitted for conflict with 4.4.8)

                        7. org.laidu.learn:httpclient:jar:1.0-SNAPSHOT
                          \- org.laidu.learn:common-util:jar:1.0-SNAPSHOT:compile
                             \- org.apache.httpcomponents:httpclient:jar:4.5.3:compile
                                \- (org.apache.httpcomponents:httpcore:jar:4.4.6:compile - omitted for conflict with 4.4.8)

                        8. org.laidu.learn:junit5:jar:1.0-SNAPSHOT
                          \- org.laidu.learn:common-util:jar:1.0-SNAPSHOT:compile
                             \- org.apache.httpcomponents:httpclient:jar:4.5.3:compile
                                \- (org.apache.httpcomponents:httpcore:jar:4.4.6:compile - omitted for conflict with 4.4.8)

                        9. @@ -817,7 +762,6 @@

                          org.apache.httpcomponents:h
                        10. org.laidu.learn:play:jar:1.0-SNAPSHOT
                          \- org.laidu.learn:common-util:jar:1.0-SNAPSHOT:compile
                             \- org.apache.httpcomponents:httpclient:jar:4.5.3:compile
                                \- (org.apache.httpcomponents:httpcore:jar:4.4.6:compile - omitted for conflict with 4.4.8)

                        11. org.laidu.learn:rules-engine:pom:1.0-SNAPSHOT
                          \- org.laidu.learn:common-util:jar:1.0-SNAPSHOT:compile
                             \- org.apache.httpcomponents:httpclient:jar:4.5.3:compile
                                \- (org.apache.httpcomponents:httpcore:jar:4.4.6:compile - omitted for conflict with 4.4.8)

                        12. org.laidu.learn:shiro:jar:1.0-SNAPSHOT
                          \- org.laidu.learn:common-util:jar:1.0-SNAPSHOT:compile
                             \- org.apache.httpcomponents:httpclient:jar:4.5.3:compile
                                \- (org.apache.httpcomponents:httpcore:jar:4.4.6:compile - omitted for conflict with 4.4.8)

                        13. -
                        14. org.laidu.learn:task-scheduler:pom:1.0-SNAPSHOT
                          \- org.laidu.learn:common-util:jar:1.0-SNAPSHOT:compile
                             \- org.apache.httpcomponents:httpclient:jar:4.5.3:compile
                                \- (org.apache.httpcomponents:httpcore:jar:4.4.6:compile - omitted for conflict with 4.4.8)

                        15. org.laidu.learn:test:pom:1.0-SNAPSHOT
                          \- org.laidu.learn:common-util:jar:1.0-SNAPSHOT:compile
                             \- org.apache.httpcomponents:httpclient:jar:4.5.3:compile
                                \- (org.apache.httpcomponents:httpcore:jar:4.4.6:compile - omitted for conflict with 4.4.8)

                        16. org.laidu.learn:thumbnailator-google:jar:1.0-SNAPSHOT
                          \- org.laidu.learn:common-util:jar:1.0-SNAPSHOT:compile
                             \- org.apache.httpcomponents:httpclient:jar:4.5.3:compile
                                \- (org.apache.httpcomponents:httpcore:jar:4.4.6:compile - omitted for conflict with 4.4.8)

                        17. org.laidu.learn:web:pom:1.0-SNAPSHOT
                          \- org.laidu.learn:common-util:jar:1.0-SNAPSHOT:compile
                             \- org.apache.httpcomponents:httpclient:jar:4.5.3:compile
                                \- (org.apache.httpcomponents:httpcore:jar:4.4.6:compile - omitted for conflict with 4.4.8)

                        18. @@ -841,7 +785,6 @@

                          org.apache.httpcomponents:h
                        19. org.laidu.learn:compress:pom:1.0-SNAPSHOT
                          \- org.laidu.learn:common-util:jar:1.0-SNAPSHOT:compile
                             \- org.apache.httpcomponents:httpcore:jar:4.4.8:compile

                        20. org.laidu.learn:drools:jar:1.0-SNAPSHOT
                          \- org.laidu.learn:common-util:jar:1.0-SNAPSHOT:compile
                             \- org.apache.httpcomponents:httpcore:jar:4.4.8:compile

                        21. org.laidu.learn:dynamoDB:jar:1.0-SNAPSHOT
                          \- org.laidu.learn:common-util:jar:1.0-SNAPSHOT:compile
                             \- org.apache.httpcomponents:httpcore:jar:4.4.8:compile

                        22. -
                        23. org.laidu.learn:elastic-job:jar:1.0-SNAPSHOT
                          \- org.laidu.learn:common-util:jar:1.0-SNAPSHOT:compile
                             \- org.apache.httpcomponents:httpcore:jar:4.4.8:compile

                        24. org.laidu.learn:framework:pom:1.0-SNAPSHOT
                          \- org.laidu.learn:common-util:jar:1.0-SNAPSHOT:compile
                             \- org.apache.httpcomponents:httpcore:jar:4.4.8:compile

                        25. org.laidu.learn:httpclient:jar:1.0-SNAPSHOT
                          \- org.laidu.learn:common-util:jar:1.0-SNAPSHOT:compile
                             \- org.apache.httpcomponents:httpcore:jar:4.4.8:compile

                        26. org.laidu.learn:junit5:jar:1.0-SNAPSHOT
                          \- org.laidu.learn:common-util:jar:1.0-SNAPSHOT:compile
                             \- org.apache.httpcomponents:httpcore:jar:4.4.8:compile

                        27. @@ -851,7 +794,6 @@

                          org.apache.httpcomponents:h
                        28. org.laidu.learn:play:jar:1.0-SNAPSHOT
                          \- org.laidu.learn:common-util:jar:1.0-SNAPSHOT:compile
                             \- org.apache.httpcomponents:httpcore:jar:4.4.8:compile

                        29. org.laidu.learn:rules-engine:pom:1.0-SNAPSHOT
                          \- org.laidu.learn:common-util:jar:1.0-SNAPSHOT:compile
                             \- org.apache.httpcomponents:httpcore:jar:4.4.8:compile

                        30. org.laidu.learn:shiro:jar:1.0-SNAPSHOT
                          \- org.laidu.learn:common-util:jar:1.0-SNAPSHOT:compile
                             \- org.apache.httpcomponents:httpcore:jar:4.4.8:compile

                        31. -
                        32. org.laidu.learn:task-scheduler:pom:1.0-SNAPSHOT
                          \- org.laidu.learn:common-util:jar:1.0-SNAPSHOT:compile
                             \- org.apache.httpcomponents:httpcore:jar:4.4.8:compile

                        33. org.laidu.learn:test:pom:1.0-SNAPSHOT
                          \- org.laidu.learn:common-util:jar:1.0-SNAPSHOT:compile
                             \- org.apache.httpcomponents:httpcore:jar:4.4.8:compile

                        34. org.laidu.learn:thumbnailator-google:jar:1.0-SNAPSHOT
                          \- org.laidu.learn:common-util:jar:1.0-SNAPSHOT:compile
                             \- org.apache.httpcomponents:httpcore:jar:4.4.8:compile

                        35. org.laidu.learn:web:pom:1.0-SNAPSHOT
                          \- org.laidu.learn:common-util:jar:1.0-SNAPSHOT:compile
                             \- org.apache.httpcomponents:httpcore:jar:4.4.8:compile

                        36. @@ -992,7 +934,9 @@

                          org.junit.jupiter:junit-ju
                        37. org.laidu.learn.spring.cloud:eureka-server:jar:0.0.1-SNAPSHOT
                          \- org.junit.jupiter:junit-jupiter-api:jar:5.0.0:test

                        38. org.laidu.learn.spring.cloud:service-hello:jar:0.0.1-SNAPSHOT
                          \- org.junit.jupiter:junit-jupiter-api:jar:5.0.0:test

                        39. org.laidu.learn.swagger:swagger:jar:0.0.1-SNAPSHOT
                          \- org.junit.jupiter:junit-jupiter-api:jar:5.0.0:test

                        40. +
                        41. org.laidu.learn:elastic-job:jar:1.0-SNAPSHOT
                          \- org.junit.jupiter:junit-jupiter-api:jar:5.0.0:test

                        42. org.laidu.learn:spring-amqp:jar:1.0-SNAPSHOT
                          \- org.junit.jupiter:junit-jupiter-api:jar:5.0.0:test

                        43. +
                        44. org.laidu.learn:spring-aop:jar:1.0-SNAPSHOT
                          \- org.junit.jupiter:junit-jupiter-api:jar:5.0.0:test

                        45. org.laidu.learn:spring-boot-app:jar:0.0.1-SNAPSHOT
                          \- org.junit.jupiter:junit-jupiter-api:jar:5.0.0:test

                        46. org.laidu.learn:spring-boot-shiro:jar:1.0-SNAPSHOT
                          \- org.junit.jupiter:junit-jupiter-api:jar:5.0.0:test

                        47. org.laidu.learn:spring-boot:pom:1.0-SNAPSHOT
                          \- org.junit.jupiter:junit-jupiter-api:jar:5.0.0:test

                        48. @@ -1003,8 +947,11 @@

                          org.junit.jupiter:junit-ju
                        49. org.laidu.learn:spring-mybatis:jar:1.0-SNAPSHOT
                          \- org.junit.jupiter:junit-jupiter-api:jar:5.0.0:test

                        50. org.laidu.learn:spring-redis:jar:1.0-SNAPSHOT
                          \- org.junit.jupiter:junit-jupiter-api:jar:5.0.0:test

                        51. org.laidu.learn:spring-statemachine:jar:1.0-SNAPSHOT
                          \- org.junit.jupiter:junit-jupiter-api:jar:5.0.0:test

                        52. +
                        53. org.laidu.learn:spring-transaction:jar:1.0-SNAPSHOT
                          \- org.junit.jupiter:junit-jupiter-api:jar:5.0.0:test

                        54. org.laidu.learn:spring-web:pom:1.0-SNAPSHOT
                          \- org.junit.jupiter:junit-jupiter-api:jar:5.0.0:test

                        55. -
                        56. org.laidu.learn:spring:pom:1.0-SNAPSHOT
                          \- org.junit.jupiter:junit-jupiter-api:jar:5.0.0:test

                        5.1.0 @@ -1013,22 +960,27 @@

                        org.junit.jupiter:junit-ju
                      13. org.laidu.learn.spring.cloud:eureka-server:jar:0.0.1-SNAPSHOT
                        \- org.junit.jupiter:junit-jupiter-engine:jar:5.0.0:test
                           \- (org.junit.jupiter:junit-jupiter-api:jar:5.1.0:test - version managed from 5.0.0; omitted for conflict with 5.0.0)

                      14. org.laidu.learn.spring.cloud:service-hello:jar:0.0.1-SNAPSHOT
                        \- org.junit.jupiter:junit-jupiter-engine:jar:5.0.0:test
                           \- (org.junit.jupiter:junit-jupiter-api:jar:5.1.0:test - version managed from 5.0.0; omitted for conflict with 5.0.0)

                      15. org.laidu.learn.swagger:swagger:jar:0.0.1-SNAPSHOT
                        \- org.junit.jupiter:junit-jupiter-engine:jar:5.0.0:test
                           \- (org.junit.jupiter:junit-jupiter-api:jar:5.1.0:test - version managed from 5.0.0; omitted for conflict with 5.0.0)

                      16. +
                      17. org.laidu.learn:elastic-job:jar:1.0-SNAPSHOT
                        \- org.junit.jupiter:junit-jupiter-engine:jar:5.0.0:test
                           \- (org.junit.jupiter:junit-jupiter-api:jar:5.1.0:test - version managed from 5.0.0; omitted for conflict with 5.0.0)

                      18. org.laidu.learn:spring-boot-app:jar:0.0.1-SNAPSHOT
                        \- org.junit.jupiter:junit-jupiter-engine:jar:5.0.0:test
                           \- (org.junit.jupiter:junit-jupiter-api:jar:5.1.0:test - version managed from 5.0.0; omitted for conflict with 5.0.0)

                      19. org.laidu.learn:spring-boot-shiro:jar:1.0-SNAPSHOT
                        \- org.junit.jupiter:junit-jupiter-engine:jar:5.0.0:test
                           \- (org.junit.jupiter:junit-jupiter-api:jar:5.1.0:test - version managed from 5.0.0; omitted for conflict with 5.0.0)

                      20. org.laidu.learn:spring-boot:pom:1.0-SNAPSHOT
                        \- org.junit.jupiter:junit-jupiter-engine:jar:5.0.0:test
                           \- (org.junit.jupiter:junit-jupiter-api:jar:5.1.0:test - version managed from 5.0.0; omitted for conflict with 5.0.0)

                      21. org.laidu.learn:spring-cloud:pom:1.0-SNAPSHOT
                        \- org.junit.jupiter:junit-jupiter-engine:jar:5.0.0:test
                           \- (org.junit.jupiter:junit-jupiter-api:jar:5.1.0:test - version managed from 5.0.0; omitted for conflict with 5.0.0)

                      22. org.laidu.learn:spring-mvc:jar:1.0-SNAPSHOT
                        \- org.junit.jupiter:junit-jupiter-engine:jar:5.0.0:test
                           \- (org.junit.jupiter:junit-jupiter-api:jar:5.1.0:test - version managed from 5.0.0; omitted for conflict with 5.0.0)

                      23. -
                      24. org.laidu.learn:spring-web:pom:1.0-SNAPSHOT
                        \- org.junit.jupiter:junit-jupiter-engine:jar:5.0.0:test
                           \- (org.junit.jupiter:junit-jupiter-api:jar:5.1.0:test - version managed from 5.0.0; omitted for conflict with 5.0.0)

                      25. 5.1.1
                        1. org.laidu.learn:spring-amqp:jar:1.0-SNAPSHOT
                          \- org.junit.jupiter:junit-jupiter-engine:jar:5.0.0:test
                             \- (org.junit.jupiter:junit-jupiter-api:jar:5.1.1:test - version managed from 5.0.0; omitted for conflict with 5.0.0)

                        2. +
                        3. org.laidu.learn:spring-aop:jar:1.0-SNAPSHOT
                          \- org.junit.jupiter:junit-jupiter-engine:jar:5.0.0:test
                             \- (org.junit.jupiter:junit-jupiter-api:jar:5.1.1:test - version managed from 5.0.0; omitted for conflict with 5.0.0)

                        4. org.laidu.learn:spring-data:pom:1.0-SNAPSHOT
                          \- org.junit.jupiter:junit-jupiter-engine:jar:5.0.0:test
                             \- (org.junit.jupiter:junit-jupiter-api:jar:5.1.1:test - version managed from 5.0.0; omitted for conflict with 5.0.0)

                        5. org.laidu.learn:spring-hadoop:jar:1.0-SNAPSHOT
                          \- org.junit.jupiter:junit-jupiter-engine:jar:5.0.0:test
                             \- (org.junit.jupiter:junit-jupiter-api:jar:5.1.1:test - version managed from 5.0.0; omitted for conflict with 5.0.0)

                        6. org.laidu.learn:spring-mybatis:jar:1.0-SNAPSHOT
                          \- org.junit.jupiter:junit-jupiter-engine:jar:5.0.0:test
                             \- (org.junit.jupiter:junit-jupiter-api:jar:5.1.1:test - version managed from 5.0.0; omitted for conflict with 5.0.0)

                        7. org.laidu.learn:spring-redis:jar:1.0-SNAPSHOT
                          \- org.junit.jupiter:junit-jupiter-engine:jar:5.0.0:test
                             \- (org.junit.jupiter:junit-jupiter-api:jar:5.1.1:test - version managed from 5.0.0; omitted for conflict with 5.0.0)

                        8. org.laidu.learn:spring-statemachine:jar:1.0-SNAPSHOT
                          \- org.junit.jupiter:junit-jupiter-engine:jar:5.0.0:test
                             \- (org.junit.jupiter:junit-jupiter-api:jar:5.1.1:test - version managed from 5.0.0; omitted for conflict with 5.0.0)

                        9. +
                        10. org.laidu.learn:spring-transaction:jar:1.0-SNAPSHOT
                          \- org.junit.jupiter:junit-jupiter-engine:jar:5.0.0:test
                             \- (org.junit.jupiter:junit-jupiter-api:jar:5.1.1:test - version managed from 5.0.0; omitted for conflict with 5.0.0)

                        11. org.laidu.learn:spring:pom:1.0-SNAPSHOT
                          \- org.junit.jupiter:junit-jupiter-engine:jar:5.0.0:test
                             \- (org.junit.jupiter:junit-jupiter-api:jar:5.1.1:test - version managed from 5.0.0; omitted for conflict with 5.0.0)

                        org.junit.platform:junit-platform-engine

                        @@ -1054,8 +1006,6 @@

                        org.junit.platform:ju
                      26. org.laidu.learn:big-data:pom:1.0-SNAPSHOT
                        +- org.junit.jupiter:junit-jupiter-engine:jar:5.0.0:test
                        |  \- (org.junit.platform:junit-platform-engine:jar:1.0.0:test - omitted for conflict with 1.0.2)
                        \- org.junit.vintage:junit-vintage-engine:jar:4.12.0:test
                           \- (org.junit.platform:junit-platform-engine:jar:1.0.0:test - omitted for conflict with 1.0.2)

                      27. org.laidu.learn:book-learn:pom:1.0-SNAPSHOT
                        +- org.junit.jupiter:junit-jupiter-engine:jar:5.0.0:test
                        |  \- (org.junit.platform:junit-platform-engine:jar:1.0.0:test - omitted for conflict with 1.0.2)
                        \- org.junit.vintage:junit-vintage-engine:jar:4.12.0:test
                           \- (org.junit.platform:junit-platform-engine:jar:1.0.0:test - omitted for conflict with 1.0.2)

                      28. org.laidu.learn:code-practice:pom:1.0-SNAPSHOT
                        +- org.junit.jupiter:junit-jupiter-engine:jar:5.0.0:test
                        |  \- (org.junit.platform:junit-platform-engine:jar:1.0.0:test - omitted for conflict with 1.0.2)
                        \- org.junit.vintage:junit-vintage-engine:jar:4.12.0:test
                           \- (org.junit.platform:junit-platform-engine:jar:1.0.0:test - omitted for conflict with 1.0.2)

                      29. -
                      30. org.laidu.learn:common-amqp:jar:1.0-SNAPSHOT
                        +- org.junit.jupiter:junit-jupiter-engine:jar:5.0.0:test
                        |  \- (org.junit.platform:junit-platform-engine:jar:1.0.0:test - omitted for conflict with 1.0.2)
                        \- org.junit.vintage:junit-vintage-engine:jar:4.12.0:test
                           \- (org.junit.platform:junit-platform-engine:jar:1.0.0:test - omitted for conflict with 1.0.2)

                      31. -
                      32. org.laidu.learn:common-pool:jar:1.0-SNAPSHOT
                        +- org.junit.jupiter:junit-jupiter-engine:jar:5.0.0:test
                        |  \- (org.junit.platform:junit-platform-engine:jar:1.0.0:test - omitted for conflict with 1.0.2)
                        \- org.junit.vintage:junit-vintage-engine:jar:4.12.0:test
                           \- (org.junit.platform:junit-platform-engine:jar:1.0.0:test - omitted for conflict with 1.0.2)

                      33. org.laidu.learn:common-util:jar:1.0-SNAPSHOT
                        +- org.junit.jupiter:junit-jupiter-engine:jar:5.0.0:test
                        |  \- (org.junit.platform:junit-platform-engine:jar:1.0.0:test - omitted for conflict with 1.0.2)
                        \- org.junit.vintage:junit-vintage-engine:jar:4.12.0:test
                           \- (org.junit.platform:junit-platform-engine:jar:1.0.0:test - omitted for conflict with 1.0.2)

                      34. org.laidu.learn:common:pom:1.0-SNAPSHOT
                        +- org.junit.jupiter:junit-jupiter-engine:jar:5.0.0:test
                        |  \- (org.junit.platform:junit-platform-engine:jar:1.0.0:test - omitted for conflict with 1.0.2)
                        \- org.junit.vintage:junit-vintage-engine:jar:4.12.0:test
                           \- (org.junit.platform:junit-platform-engine:jar:1.0.0:test - omitted for conflict with 1.0.2)

                      35. org.laidu.learn:commons-cli:jar:1.0-SNAPSHOT
                        +- org.junit.jupiter:junit-jupiter-engine:jar:5.0.0:test
                        |  \- (org.junit.platform:junit-platform-engine:jar:1.0.0:test - omitted for conflict with 1.0.2)
                        \- org.junit.vintage:junit-vintage-engine:jar:4.12.0:test
                           \- (org.junit.platform:junit-platform-engine:jar:1.0.0:test - omitted for conflict with 1.0.2)

                      36. @@ -1095,6 +1045,7 @@

                        org.junit.platform:ju
                      37. org.laidu.learn:script:jar:1.0-SNAPSHOT
                        +- org.junit.jupiter:junit-jupiter-engine:jar:5.0.0:test
                        |  \- (org.junit.platform:junit-platform-engine:jar:1.0.0:test - omitted for conflict with 1.0.2)
                        \- org.junit.vintage:junit-vintage-engine:jar:4.12.0:test
                           \- (org.junit.platform:junit-platform-engine:jar:1.0.0:test - omitted for conflict with 1.0.2)

                      38. org.laidu.learn:shiro:jar:1.0-SNAPSHOT
                        +- org.junit.jupiter:junit-jupiter-engine:jar:5.0.0:test
                        |  \- (org.junit.platform:junit-platform-engine:jar:1.0.0:test - omitted for conflict with 1.0.2)
                        \- org.junit.vintage:junit-vintage-engine:jar:4.12.0:test
                           \- (org.junit.platform:junit-platform-engine:jar:1.0.0:test - omitted for conflict with 1.0.2)

                      39. org.laidu.learn:spring-amqp:jar:1.0-SNAPSHOT
                        +- org.junit.jupiter:junit-jupiter-engine:jar:5.0.0:test
                        |  \- (org.junit.platform:junit-platform-engine:jar:1.0.0:test - omitted for conflict with 1.0.2)
                        \- org.junit.vintage:junit-vintage-engine:jar:4.12.0:test
                           \- (org.junit.platform:junit-platform-engine:jar:1.0.0:test - omitted for conflict with 1.0.2)

                      40. +
                      41. org.laidu.learn:spring-aop:jar:1.0-SNAPSHOT
                        +- org.junit.jupiter:junit-jupiter-engine:jar:5.0.0:test
                        |  \- (org.junit.platform:junit-platform-engine:jar:1.0.0:test - omitted for conflict with 1.0.2)
                        \- org.junit.vintage:junit-vintage-engine:jar:4.12.0:test
                           \- (org.junit.platform:junit-platform-engine:jar:1.0.0:test - omitted for conflict with 1.0.2)

                      42. org.laidu.learn:spring-boot-app:jar:0.0.1-SNAPSHOT
                        +- org.junit.jupiter:junit-jupiter-engine:jar:5.0.0:test
                        |  \- (org.junit.platform:junit-platform-engine:jar:1.0.0:test - omitted for conflict with 1.0.2)
                        \- org.junit.vintage:junit-vintage-engine:jar:4.12.0:test
                           \- (org.junit.platform:junit-platform-engine:jar:1.0.0:test - omitted for conflict with 1.0.2)

                      43. org.laidu.learn:spring-boot-shiro:jar:1.0-SNAPSHOT
                        +- org.junit.jupiter:junit-jupiter-engine:jar:5.0.0:test
                        |  \- (org.junit.platform:junit-platform-engine:jar:1.0.0:test - omitted for conflict with 1.0.2)
                        \- org.junit.vintage:junit-vintage-engine:jar:4.12.0:test
                           \- (org.junit.platform:junit-platform-engine:jar:1.0.0:test - omitted for conflict with 1.0.2)

                      44. org.laidu.learn:spring-boot:pom:1.0-SNAPSHOT
                        +- org.junit.jupiter:junit-jupiter-engine:jar:5.0.0:test
                        |  \- (org.junit.platform:junit-platform-engine:jar:1.0.0:test - omitted for conflict with 1.0.2)
                        \- org.junit.vintage:junit-vintage-engine:jar:4.12.0:test
                           \- (org.junit.platform:junit-platform-engine:jar:1.0.0:test - omitted for conflict with 1.0.2)

                      45. @@ -1106,7 +1057,9 @@

                        org.junit.platform:ju
                      46. org.laidu.learn:spring-redis:jar:1.0-SNAPSHOT
                        +- org.junit.jupiter:junit-jupiter-engine:jar:5.0.0:test
                        |  \- (org.junit.platform:junit-platform-engine:jar:1.0.0:test - omitted for conflict with 1.0.2)
                        \- org.junit.vintage:junit-vintage-engine:jar:4.12.0:test
                           \- (org.junit.platform:junit-platform-engine:jar:1.0.0:test - omitted for conflict with 1.0.2)

                      47. org.laidu.learn:spring-statemachine:jar:1.0-SNAPSHOT
                        +- org.junit.jupiter:junit-jupiter-engine:jar:5.0.0:test
                        |  \- (org.junit.platform:junit-platform-engine:jar:1.0.0:test - omitted for conflict with 1.0.2)
                        \- org.junit.vintage:junit-vintage-engine:jar:4.12.0:test
                           \- (org.junit.platform:junit-platform-engine:jar:1.0.0:test - omitted for conflict with 1.0.2)

                      48. org.laidu.learn:spring-tool:jar:1.0-SNAPSHOT
                        +- org.junit.jupiter:junit-jupiter-engine:jar:5.0.0:test
                        |  \- (org.junit.platform:junit-platform-engine:jar:1.0.0:test - omitted for conflict with 1.0.2)
                        \- org.junit.vintage:junit-vintage-engine:jar:4.12.0:test
                           \- (org.junit.platform:junit-platform-engine:jar:1.0.0:test - omitted for conflict with 1.0.2)

                      49. +
                      50. org.laidu.learn:spring-transaction:jar:1.0-SNAPSHOT
                        +- org.junit.jupiter:junit-jupiter-engine:jar:5.0.0:test
                        |  \- (org.junit.platform:junit-platform-engine:jar:1.0.0:test - omitted for conflict with 1.0.2)
                        \- org.junit.vintage:junit-vintage-engine:jar:4.12.0:test
                           \- (org.junit.platform:junit-platform-engine:jar:1.0.0:test - omitted for conflict with 1.0.2)

                      51. org.laidu.learn:spring-web:pom:1.0-SNAPSHOT
                        +- org.junit.jupiter:junit-jupiter-engine:jar:5.0.0:test
                        |  \- (org.junit.platform:junit-platform-engine:jar:1.0.0:test - omitted for conflict with 1.0.2)
                        \- org.junit.vintage:junit-vintage-engine:jar:4.12.0:test
                           \- (org.junit.platform:junit-platform-engine:jar:1.0.0:test - omitted for conflict with 1.0.2)

                      52. +
                      53. org.laidu.learn:spring-webflux:jar:1.0-SNAPSHOT
                        +- org.junit.jupiter:junit-jupiter-engine:jar:5.0.0:test
                        |  \- (org.junit.platform:junit-platform-engine:jar:1.0.0:test - omitted for conflict with 1.0.2)
                        \- org.junit.vintage:junit-vintage-engine:jar:4.12.0:test
                           \- (org.junit.platform:junit-platform-engine:jar:1.0.0:test - omitted for conflict with 1.0.2)

                      54. org.laidu.learn:spring:pom:1.0-SNAPSHOT
                        +- org.junit.jupiter:junit-jupiter-engine:jar:5.0.0:test
                        |  \- (org.junit.platform:junit-platform-engine:jar:1.0.0:test - omitted for conflict with 1.0.2)
                        \- org.junit.vintage:junit-vintage-engine:jar:4.12.0:test
                           \- (org.junit.platform:junit-platform-engine:jar:1.0.0:test - omitted for conflict with 1.0.2)

                      55. org.laidu.learn:task-scheduler:pom:1.0-SNAPSHOT
                        +- org.junit.jupiter:junit-jupiter-engine:jar:5.0.0:test
                        |  \- (org.junit.platform:junit-platform-engine:jar:1.0.0:test - omitted for conflict with 1.0.2)
                        \- org.junit.vintage:junit-vintage-engine:jar:4.12.0:test
                           \- (org.junit.platform:junit-platform-engine:jar:1.0.0:test - omitted for conflict with 1.0.2)

                      56. org.laidu.learn:test:pom:1.0-SNAPSHOT
                        +- org.junit.jupiter:junit-jupiter-engine:jar:5.0.0:test
                        |  \- (org.junit.platform:junit-platform-engine:jar:1.0.0:test - omitted for conflict with 1.0.2)
                        \- org.junit.vintage:junit-vintage-engine:jar:4.12.0:test
                           \- (org.junit.platform:junit-platform-engine:jar:1.0.0:test - omitted for conflict with 1.0.2)

                      57. @@ -1132,8 +1085,6 @@

                        org.junit.platform:ju
                      58. org.laidu.learn:big-data:pom:1.0-SNAPSHOT
                        +- org.junit.platform:junit-platform-engine:jar:1.0.2:test
                        \- org.junit.platform:junit-platform-launcher:jar:1.0.2:test
                           \- (org.junit.platform:junit-platform-engine:jar:1.0.2:test - omitted for duplicate)

                      59. org.laidu.learn:book-learn:pom:1.0-SNAPSHOT
                        +- org.junit.platform:junit-platform-engine:jar:1.0.2:test
                        \- org.junit.platform:junit-platform-launcher:jar:1.0.2:test
                           \- (org.junit.platform:junit-platform-engine:jar:1.0.2:test - omitted for duplicate)

                      60. org.laidu.learn:code-practice:pom:1.0-SNAPSHOT
                        +- org.junit.platform:junit-platform-engine:jar:1.0.2:test
                        \- org.junit.platform:junit-platform-launcher:jar:1.0.2:test
                           \- (org.junit.platform:junit-platform-engine:jar:1.0.2:test - omitted for duplicate)

                      61. -
                      62. org.laidu.learn:common-amqp:jar:1.0-SNAPSHOT
                        +- org.junit.platform:junit-platform-engine:jar:1.0.2:test
                        \- org.junit.platform:junit-platform-launcher:jar:1.0.2:test
                           \- (org.junit.platform:junit-platform-engine:jar:1.0.2:test - omitted for duplicate)

                      63. -
                      64. org.laidu.learn:common-pool:jar:1.0-SNAPSHOT
                        +- org.junit.platform:junit-platform-engine:jar:1.0.2:test
                        \- org.junit.platform:junit-platform-launcher:jar:1.0.2:test
                           \- (org.junit.platform:junit-platform-engine:jar:1.0.2:test - omitted for duplicate)

                      65. org.laidu.learn:common-util:jar:1.0-SNAPSHOT
                        +- org.junit.platform:junit-platform-engine:jar:1.0.2:test
                        \- org.junit.platform:junit-platform-launcher:jar:1.0.2:test
                           \- (org.junit.platform:junit-platform-engine:jar:1.0.2:test - omitted for duplicate)

                      66. org.laidu.learn:common:pom:1.0-SNAPSHOT
                        +- org.junit.platform:junit-platform-engine:jar:1.0.2:test
                        \- org.junit.platform:junit-platform-launcher:jar:1.0.2:test
                           \- (org.junit.platform:junit-platform-engine:jar:1.0.2:test - omitted for duplicate)

                      67. org.laidu.learn:commons-cli:jar:1.0-SNAPSHOT
                        +- org.junit.platform:junit-platform-engine:jar:1.0.2:test
                        \- org.junit.platform:junit-platform-launcher:jar:1.0.2:test
                           \- (org.junit.platform:junit-platform-engine:jar:1.0.2:test - omitted for duplicate)

                      68. @@ -1173,6 +1124,7 @@

                        org.junit.platform:ju
                      69. org.laidu.learn:script:jar:1.0-SNAPSHOT
                        +- org.junit.platform:junit-platform-engine:jar:1.0.2:test
                        \- org.junit.platform:junit-platform-launcher:jar:1.0.2:test
                           \- (org.junit.platform:junit-platform-engine:jar:1.0.2:test - omitted for duplicate)

                      70. org.laidu.learn:shiro:jar:1.0-SNAPSHOT
                        +- org.junit.platform:junit-platform-engine:jar:1.0.2:test
                        \- org.junit.platform:junit-platform-launcher:jar:1.0.2:test
                           \- (org.junit.platform:junit-platform-engine:jar:1.0.2:test - omitted for duplicate)

                      71. org.laidu.learn:spring-amqp:jar:1.0-SNAPSHOT
                        +- org.junit.platform:junit-platform-engine:jar:1.0.2:test
                        \- org.junit.platform:junit-platform-launcher:jar:1.0.2:test
                           \- (org.junit.platform:junit-platform-engine:jar:1.0.2:test - omitted for duplicate)

                      72. +
                      73. org.laidu.learn:spring-aop:jar:1.0-SNAPSHOT
                        +- org.junit.platform:junit-platform-engine:jar:1.0.2:test
                        \- org.junit.platform:junit-platform-launcher:jar:1.0.2:test
                           \- (org.junit.platform:junit-platform-engine:jar:1.0.2:test - omitted for duplicate)

                      74. org.laidu.learn:spring-boot-app:jar:0.0.1-SNAPSHOT
                        +- org.junit.platform:junit-platform-engine:jar:1.0.2:test
                        \- org.junit.platform:junit-platform-launcher:jar:1.0.2:test
                           \- (org.junit.platform:junit-platform-engine:jar:1.0.2:test - omitted for duplicate)

                      75. org.laidu.learn:spring-boot-shiro:jar:1.0-SNAPSHOT
                        +- org.junit.platform:junit-platform-engine:jar:1.0.2:test
                        \- org.junit.platform:junit-platform-launcher:jar:1.0.2:test
                           \- (org.junit.platform:junit-platform-engine:jar:1.0.2:test - omitted for duplicate)

                      76. org.laidu.learn:spring-boot:pom:1.0-SNAPSHOT
                        +- org.junit.platform:junit-platform-engine:jar:1.0.2:test
                        \- org.junit.platform:junit-platform-launcher:jar:1.0.2:test
                           \- (org.junit.platform:junit-platform-engine:jar:1.0.2:test - omitted for duplicate)

                      77. @@ -1184,7 +1136,9 @@

                        org.junit.platform:ju
                      78. org.laidu.learn:spring-redis:jar:1.0-SNAPSHOT
                        +- org.junit.platform:junit-platform-engine:jar:1.0.2:test
                        \- org.junit.platform:junit-platform-launcher:jar:1.0.2:test
                           \- (org.junit.platform:junit-platform-engine:jar:1.0.2:test - omitted for duplicate)

                      79. org.laidu.learn:spring-statemachine:jar:1.0-SNAPSHOT
                        +- org.junit.platform:junit-platform-engine:jar:1.0.2:test
                        \- org.junit.platform:junit-platform-launcher:jar:1.0.2:test
                           \- (org.junit.platform:junit-platform-engine:jar:1.0.2:test - omitted for duplicate)

                      80. org.laidu.learn:spring-tool:jar:1.0-SNAPSHOT
                        +- org.junit.platform:junit-platform-engine:jar:1.0.2:test
                        \- org.junit.platform:junit-platform-launcher:jar:1.0.2:test
                           \- (org.junit.platform:junit-platform-engine:jar:1.0.2:test - omitted for duplicate)

                      81. +
                      82. org.laidu.learn:spring-transaction:jar:1.0-SNAPSHOT
                        +- org.junit.platform:junit-platform-engine:jar:1.0.2:test
                        \- org.junit.platform:junit-platform-launcher:jar:1.0.2:test
                           \- (org.junit.platform:junit-platform-engine:jar:1.0.2:test - omitted for duplicate)

                      83. org.laidu.learn:spring-web:pom:1.0-SNAPSHOT
                        +- org.junit.platform:junit-platform-engine:jar:1.0.2:test
                        \- org.junit.platform:junit-platform-launcher:jar:1.0.2:test
                           \- (org.junit.platform:junit-platform-engine:jar:1.0.2:test - omitted for duplicate)

                      84. +
                      85. org.laidu.learn:spring-webflux:jar:1.0-SNAPSHOT
                        +- org.junit.platform:junit-platform-engine:jar:1.0.2:test
                        \- org.junit.platform:junit-platform-launcher:jar:1.0.2:test
                           \- (org.junit.platform:junit-platform-engine:jar:1.0.2:test - omitted for duplicate)

                      86. org.laidu.learn:spring:pom:1.0-SNAPSHOT
                        +- org.junit.platform:junit-platform-engine:jar:1.0.2:test
                        \- org.junit.platform:junit-platform-launcher:jar:1.0.2:test
                           \- (org.junit.platform:junit-platform-engine:jar:1.0.2:test - omitted for duplicate)

                      87. org.laidu.learn:task-scheduler:pom:1.0-SNAPSHOT
                        +- org.junit.platform:junit-platform-engine:jar:1.0.2:test
                        \- org.junit.platform:junit-platform-launcher:jar:1.0.2:test
                           \- (org.junit.platform:junit-platform-engine:jar:1.0.2:test - omitted for duplicate)

                      88. org.laidu.learn:test:pom:1.0-SNAPSHOT
                        +- org.junit.platform:junit-platform-engine:jar:1.0.2:test
                        \- org.junit.platform:junit-platform-launcher:jar:1.0.2:test
                           \- (org.junit.platform:junit-platform-engine:jar:1.0.2:test - omitted for duplicate)

                      89. @@ -1222,7 +1176,7 @@

                        org.ow2.asm:asm

                      1. org.laidu.learn.spring.cloud:eureka-server:jar:0.0.1-SNAPSHOT
                        \- org.springframework.boot:spring-boot-starter-test:jar:2.0.1.RELEASE:test
                           \- com.jayway.jsonpath:json-path:jar:2.4.0:test
                              \- net.minidev:json-smart:jar:2.3:test
                                 \- net.minidev:accessors-smart:jar:1.2:test
                                    \- (org.ow2.asm:asm:jar:5.0.4:test - omitted for conflict with 6.0)

                      2. -
                      3. org.laidu.learn:spring-mvc:jar:1.0-SNAPSHOT
                        \- org.springframework.boot:spring-boot-starter-test:jar:2.0.2.RELEASE:test
                           \- com.jayway.jsonpath:json-path:jar:2.4.0:test
                              \- net.minidev:json-smart:jar:2.3:test
                                 \- net.minidev:accessors-smart:jar:1.2:test
                                    \- (org.ow2.asm:asm:jar:5.0.4:test - omitted for conflict with 6.0)

                      6.0 @@ -1264,11 +1218,13 @@

                      org.projectlombok:lombok

                    6. org.laidu.learn:rules-engine:pom:1.0-SNAPSHOT
                      \- org.projectlombok:lombok:jar:1.16.18:compile

                    7. org.laidu.learn:shiro:jar:1.0-SNAPSHOT
                      \- org.projectlombok:lombok:jar:1.16.18:compile

                    8. org.laidu.learn:spring-amqp:jar:1.0-SNAPSHOT
                      \- org.projectlombok:lombok:jar:1.16.18:compile

                    9. +
                    10. org.laidu.learn:spring-aop:jar:1.0-SNAPSHOT
                      \- org.projectlombok:lombok:jar:1.16.18:compile

                    11. org.laidu.learn:spring-data:pom:1.0-SNAPSHOT
                      \- org.projectlombok:lombok:jar:1.16.18:compile

                    12. org.laidu.learn:spring-hadoop:jar:1.0-SNAPSHOT
                      \- org.projectlombok:lombok:jar:1.16.18:compile

                    13. org.laidu.learn:spring-mybatis:jar:1.0-SNAPSHOT
                      \- org.projectlombok:lombok:jar:1.16.18:compile

                    14. org.laidu.learn:spring-redis:jar:1.0-SNAPSHOT
                      \- org.projectlombok:lombok:jar:1.16.18:compile

                    15. org.laidu.learn:spring-statemachine:jar:1.0-SNAPSHOT
                      \- org.projectlombok:lombok:jar:1.16.18:compile

                    16. +
                    17. org.laidu.learn:spring-transaction:jar:1.0-SNAPSHOT
                      \- org.projectlombok:lombok:jar:1.16.18:compile

                    18. org.laidu.learn:spring:pom:1.0-SNAPSHOT
                      \- org.projectlombok:lombok:jar:1.16.18:compile

                    19. org.laidu.learn:task-scheduler:pom:1.0-SNAPSHOT
                      \- org.projectlombok:lombok:jar:1.16.18:compile

                    20. org.laidu.learn:test:pom:1.0-SNAPSHOT
                      \- org.projectlombok:lombok:jar:1.16.18:compile

                    21. @@ -1304,11 +1260,13 @@

                      org.projectlombok:lombok

                    22. org.laidu.learn:rules-engine:pom:1.0-SNAPSHOT
                      \- org.laidu.learn:common-util:jar:1.0-SNAPSHOT:compile
                         \- (org.projectlombok:lombok:jar:1.16.20:compile - omitted for conflict with 1.16.18)

                    23. org.laidu.learn:shiro:jar:1.0-SNAPSHOT
                      \- org.laidu.learn:common-util:jar:1.0-SNAPSHOT:compile
                         \- (org.projectlombok:lombok:jar:1.16.20:compile - omitted for conflict with 1.16.18)

                    24. org.laidu.learn:spring-amqp:jar:1.0-SNAPSHOT
                      \- org.laidu.learn:common-util:jar:1.0-SNAPSHOT:compile
                         \- (org.projectlombok:lombok:jar:1.16.20:compile - omitted for conflict with 1.16.18)

                    25. +
                    26. org.laidu.learn:spring-aop:jar:1.0-SNAPSHOT
                      \- org.laidu.learn:common-util:jar:1.0-SNAPSHOT:compile
                         \- (org.projectlombok:lombok:jar:1.16.20:compile - omitted for conflict with 1.16.18)

                    27. org.laidu.learn:spring-data:pom:1.0-SNAPSHOT
                      \- org.laidu.learn:common-util:jar:1.0-SNAPSHOT:compile
                         \- (org.projectlombok:lombok:jar:1.16.20:compile - omitted for conflict with 1.16.18)

                    28. org.laidu.learn:spring-hadoop:jar:1.0-SNAPSHOT
                      \- org.laidu.learn:common-util:jar:1.0-SNAPSHOT:compile
                         \- (org.projectlombok:lombok:jar:1.16.20:compile - omitted for conflict with 1.16.18)

                    29. org.laidu.learn:spring-mybatis:jar:1.0-SNAPSHOT
                      \- org.laidu.learn:common-util:jar:1.0-SNAPSHOT:compile
                         \- (org.projectlombok:lombok:jar:1.16.20:compile - omitted for conflict with 1.16.18)

                    30. org.laidu.learn:spring-redis:jar:1.0-SNAPSHOT
                      \- org.laidu.learn:common-util:jar:1.0-SNAPSHOT:compile
                         \- (org.projectlombok:lombok:jar:1.16.20:compile - omitted for conflict with 1.16.18)

                    31. org.laidu.learn:spring-statemachine:jar:1.0-SNAPSHOT
                      \- org.laidu.learn:common-util:jar:1.0-SNAPSHOT:compile
                         \- (org.projectlombok:lombok:jar:1.16.20:compile - omitted for conflict with 1.16.18)

                    32. +
                    33. org.laidu.learn:spring-transaction:jar:1.0-SNAPSHOT
                      \- org.laidu.learn:common-util:jar:1.0-SNAPSHOT:compile
                         \- (org.projectlombok:lombok:jar:1.16.20:compile - omitted for conflict with 1.16.18)

                    34. org.laidu.learn:spring:pom:1.0-SNAPSHOT
                      \- org.laidu.learn:common-util:jar:1.0-SNAPSHOT:compile
                         \- (org.projectlombok:lombok:jar:1.16.20:compile - omitted for conflict with 1.16.18)

                    35. org.laidu.learn:task-scheduler:pom:1.0-SNAPSHOT
                      \- org.laidu.learn:common-util:jar:1.0-SNAPSHOT:compile
                         \- (org.projectlombok:lombok:jar:1.16.20:compile - omitted for conflict with 1.16.18)

                    36. org.laidu.learn:test:pom:1.0-SNAPSHOT
                      \- org.laidu.learn:common-util:jar:1.0-SNAPSHOT:compile
                         \- (org.projectlombok:lombok:jar:1.16.20:compile - omitted for conflict with 1.16.18)

                    37. @@ -1383,7 +1341,6 @@

                      org.slf4j:slf4j-api

                      1.6.1
                        -
                      1. org.laidu.learn:elastic-job:jar:1.0-SNAPSHOT
                        \- com.dangdang:elastic-job-lite-core:jar:2.1.5:compile
                           \- com.dangdang:elastic-job-common-core:jar:2.1.5:compile
                              \- org.apache.curator:curator-client:jar:2.10.0:compile
                                 \- org.apache.zookeeper:zookeeper:jar:3.4.6:compile
                                    \- (org.slf4j:slf4j-api:jar:1.6.1:compile - omitted for conflict with 1.7.25)

                      2. org.laidu.learn:hadoop:jar:1.0-SNAPSHOT
                        \- org.apache.hadoop:hadoop-common:jar:2.8.1:compile
                           \- org.apache.zookeeper:zookeeper:jar:3.4.6:compile
                              \- (org.slf4j:slf4j-api:jar:1.6.1:compile - omitted for conflict with 1.7.10)

                      1.6.4
                      1.6.6 -
                        -
                      1. org.laidu.learn:elastic-job:jar:1.0-SNAPSHOT
                        \- com.dangdang:elastic-job-lite-core:jar:2.1.5:compile
                           \- com.dangdang:elastic-job-common-core:jar:2.1.5:compile
                              \- org.quartz-scheduler:quartz:jar:2.2.1:compile
                                 \- (org.slf4j:slf4j-api:jar:1.6.6:compile - omitted for conflict with 1.7.25)

                      1.7.10
                      1. org.laidu.learn:hadoop:jar:1.0-SNAPSHOT
                        +- org.apache.hadoop:hadoop-common:jar:2.8.1:compile
                        |  +- org.slf4j:slf4j-api:jar:1.7.10:compile
                        |  \- org.apache.hadoop:hadoop-auth:jar:2.8.1:compile
                        |     \- (org.slf4j:slf4j-api:jar:1.7.10:compile - omitted for duplicate)
                        +- org.apache.hadoop:hadoop-client:jar:2.8.1:compile
                        |  \- org.apache.hadoop:hadoop-mapreduce-client-app:jar:2.8.1:compile
                        |     +- org.apache.hadoop:hadoop-mapreduce-client-common:jar:2.8.1:compile
                        |     |  \- (org.slf4j:slf4j-api:jar:1.7.10:compile - omitted for duplicate)
                        |     +- org.apache.hadoop:hadoop-mapreduce-client-shuffle:jar:2.8.1:compile
                        |     |  \- (org.slf4j:slf4j-api:jar:1.7.10:compile - omitted for duplicate)
                        |     \- (org.slf4j:slf4j-api:jar:1.7.10:compile - omitted for duplicate)
                        +- org.apache.hadoop:hadoop-mapreduce-client-core:jar:2.8.1:compile
                        |  +- org.apache.hadoop:hadoop-yarn-common:jar:2.8.1:compile
                        |  |  \- (org.slf4j:slf4j-api:jar:1.7.10:compile - omitted for duplicate)
                        |  +- (org.slf4j:slf4j-api:jar:1.7.10:compile - omitted for duplicate)
                        |  \- org.slf4j:slf4j-log4j12:jar:1.7.10:compile
                        |     \- (org.slf4j:slf4j-api:jar:1.7.10:compile - omitted for duplicate)
                        \- org.apache.hadoop:hadoop-mapreduce-client-jobclient:jar:2.8.1:provided
                           \- (org.slf4j:slf4j-api:jar:1.7.10:provided - omitted for duplicate)

                      1.7.21 -
                        -
                      1. org.laidu.learn:common-amqp:jar:1.0-SNAPSHOT
                        \- org.springframework.boot:spring-boot-starter-amqp:jar:1.5.9.RELEASE:compile
                           \- org.springframework.amqp:spring-rabbit:jar:1.7.4.RELEASE:compile
                              \- com.rabbitmq:amqp-client:jar:4.0.3:compile
                                 \- (org.slf4j:slf4j-api:jar:1.7.21:compile - omitted for conflict with 1.7.25)

                      1.7.22 -
                        -
                      1. org.laidu.learn:elastic-job:jar:1.0-SNAPSHOT
                        \- org.laidu.learn:spring-boot-app:jar:0.0.1-SNAPSHOT:compile
                           \- io.micrometer:micrometer-registry-graphite:jar:1.0.3:compile
                              \- io.dropwizard.metrics:metrics-graphite:jar:3.2.6:compile
                                 +- io.dropwizard.metrics:metrics-core:jar:3.2.6:compile
                                 |  \- (org.slf4j:slf4j-api:jar:1.7.22:compile - omitted for conflict with 1.7.25)
                                 \- (org.slf4j:slf4j-api:jar:1.7.22:compile - omitted for conflict with 1.7.25)

                      1.7.23
                      1. org.laidu.learn:play:jar:1.0-SNAPSHOT
                        \- com.typesafe.play:play_2.11:jar:2.6.6:compile
                           \- com.typesafe.akka:akka-slf4j_2.11:jar:2.5.4:compile
                              \- (org.slf4j:slf4j-api:jar:1.7.23:compile - omitted for conflict with 1.7.25)

                      1.7.25
                        -
                      1. org.laidu.learn:common-amqp:jar:1.0-SNAPSHOT
                        +- org.springframework.boot:spring-boot-starter-amqp:jar:1.5.9.RELEASE:compile
                        |  \- org.springframework.boot:spring-boot-starter:jar:1.5.9.RELEASE:compile
                        |     \- org.springframework.boot:spring-boot-starter-logging:jar:1.5.9.RELEASE:compile
                        |        +- org.slf4j:jcl-over-slf4j:jar:1.7.25:compile
                        |        |  \- (org.slf4j:slf4j-api:jar:1.7.25:compile - omitted for conflict with 1.7.22)
                        |        +- org.slf4j:jul-to-slf4j:jar:1.7.25:compile
                        |        |  \- (org.slf4j:slf4j-api:jar:1.7.25:compile - omitted for conflict with 1.7.22)
                        |        \- org.slf4j:log4j-over-slf4j:jar:1.7.25:compile
                        |           \- (org.slf4j:slf4j-api:jar:1.7.25:compile - omitted for conflict with 1.7.22)
                        \- ch.qos.logback:logback-classic:jar:1.2.3:compile
                           \- org.slf4j:slf4j-api:jar:1.7.25:compile

                      2. -
                      3. org.laidu.learn:elastic-job:jar:1.0-SNAPSHOT
                        +- org.laidu.learn:spring-boot-app:jar:0.0.1-SNAPSHOT:compile
                        |  +- io.micrometer:micrometer-registry-atlas:jar:1.0.3:compile
                        |  |  \- com.netflix.spectator:spectator-reg-atlas:jar:0.63.0:compile
                        |  |     +- (org.slf4j:slf4j-api:jar:1.7.25:compile - omitted for duplicate)
                        |  |     +- com.netflix.spectator:spectator-ext-sandbox:jar:0.63.0:compile
                        |  |     |  \- (org.slf4j:slf4j-api:jar:1.7.25:compile - omitted for duplicate)
                        |  |     \- com.netflix.spectator:spectator-api:jar:0.63.0:compile
                        |  |        \- (org.slf4j:slf4j-api:jar:1.7.25:compile - omitted for duplicate)
                        |  \- org.springframework.boot:spring-boot-starter:jar:2.0.1.RELEASE:compile
                        |     \- org.springframework.boot:spring-boot-starter-logging:jar:2.0.1.RELEASE:compile
                        |        +- org.apache.logging.log4j:log4j-to-slf4j:jar:2.10.0:compile
                        |        |  \- (org.slf4j:slf4j-api:jar:1.7.25:compile - omitted for duplicate)
                        |        \- org.slf4j:jul-to-slf4j:jar:1.7.25:compile
                        |           \- (org.slf4j:slf4j-api:jar:1.7.25:compile - omitted for duplicate)
                        \- ch.qos.logback:logback-classic:jar:1.2.3:compile
                           \- org.slf4j:slf4j-api:jar:1.7.25:compile

                      4. org.laidu.learn:hadoop:jar:1.0-SNAPSHOT
                        \- ch.qos.logback:logback-classic:jar:1.2.3:compile
                           \- (org.slf4j:slf4j-api:jar:1.7.25:compile - omitted for conflict with 1.7.10)

                      5. org.laidu.learn:local-cache:jar:1.0-SNAPSHOT
                        \- ch.qos.logback:logback-classic:jar:1.2.3:compile
                           \- (org.slf4j:slf4j-api:jar:1.7.25:compile - omitted for conflict with 1.7.7)

                      6. org.laidu.learn:play:jar:1.0-SNAPSHOT
                        +- com.typesafe.play:play_2.11:jar:2.6.6:compile
                        |  +- com.typesafe.play:play-netty-utils:jar:2.6.6:compile
                        |  |  \- (org.slf4j:slf4j-api:jar:1.7.25:compile - omitted for duplicate)
                        |  +- org.slf4j:slf4j-api:jar:1.7.25:compile
                        |  +- org.slf4j:jul-to-slf4j:jar:1.7.25:compile
                        |  |  \- (org.slf4j:slf4j-api:jar:1.7.25:compile - omitted for duplicate)
                        |  \- org.slf4j:jcl-over-slf4j:jar:1.7.25:compile
                        |     \- (org.slf4j:slf4j-api:jar:1.7.25:compile - omitted for duplicate)
                        \- ch.qos.logback:logback-classic:jar:1.2.3:compile
                           \- (org.slf4j:slf4j-api:jar:1.7.25:compile - omitted for duplicate)

                      7. org.laidu.learn:shiro:jar:1.0-SNAPSHOT
                        \- ch.qos.logback:logback-classic:jar:1.2.3:compile
                           \- (org.slf4j:slf4j-api:jar:1.7.25:compile - omitted for conflict with 1.6.4)

                      8. org.laidu.learn:webmagic-learn:jar:1.0-SNAPSHOT
                        +- us.codecraft:webmagic-core:jar:0.7.3:compile
                        |  \- com.jayway.jsonpath:json-path:jar:2.4.0:compile
                        |     \- (org.slf4j:slf4j-api:jar:1.7.25:compile - omitted for conflict with 1.7.6)
                        \- ch.qos.logback:logback-classic:jar:1.2.3:compile
                           \- (org.slf4j:slf4j-api:jar:1.7.25:compile - omitted for conflict with 1.7.6)

                      1.7.5
                      1. org.laidu.learn:hadoop:jar:1.0-SNAPSHOT
                        \- org.apache.hadoop:hadoop-common:jar:2.8.1:compile
                           \- org.apache.hadoop:hadoop-auth:jar:2.8.1:compile
                              \- org.apache.directory.server:apacheds-kerberos-codec:jar:2.0.0-M15:compile
                                 +- org.apache.directory.server:apacheds-i18n:jar:2.0.0-M15:compile
                                 |  \- (org.slf4j:slf4j-api:jar:1.7.5:compile - omitted for conflict with 1.7.10)
                                 +- org.apache.directory.api:api-asn1-api:jar:1.0.0-M20:compile
                                 |  \- (org.slf4j:slf4j-api:jar:1.7.5:compile - omitted for conflict with 1.7.10)
                                 +- org.apache.directory.api:api-util:jar:1.0.0-M20:compile
                                 |  \- (org.slf4j:slf4j-api:jar:1.7.5:compile - omitted for conflict with 1.7.10)
                                 \- (org.slf4j:slf4j-api:jar:1.7.5:compile - omitted for conflict with 1.7.10)

                      1.7.6
                        -
                      1. org.laidu.learn:elastic-job:jar:1.0-SNAPSHOT
                        \- com.dangdang:elastic-job-lite-core:jar:2.1.5:compile
                           \- com.dangdang:elastic-job-common-core:jar:2.1.5:compile
                              \- org.apache.curator:curator-client:jar:2.10.0:compile
                                 \- (org.slf4j:slf4j-api:jar:1.7.6:compile - omitted for conflict with 1.7.25)

                      2. org.laidu.learn:hadoop:jar:1.0-SNAPSHOT
                        \- org.apache.hadoop:hadoop-common:jar:2.8.1:compile
                           \- org.apache.curator:curator-client:jar:2.7.1:compile
                              \- (org.slf4j:slf4j-api:jar:1.7.6:compile - omitted for conflict with 1.7.10)

                      3. org.laidu.learn:webmagic-learn:jar:1.0-SNAPSHOT
                        \- us.codecraft:webmagic-core:jar:0.7.3:compile
                           +- org.slf4j:slf4j-api:jar:1.7.6:compile
                           \- org.slf4j:slf4j-log4j12:jar:1.7.6:compile
                              \- (org.slf4j:slf4j-api:jar:1.7.6:compile - omitted for duplicate)

                      1.7.7
                        -
                      1. org.laidu.learn:elastic-job:jar:1.0-SNAPSHOT
                        \- com.dangdang:elastic-job-lite-core:jar:2.1.5:compile
                           \- com.dangdang:elastic-job-common-core:jar:2.1.5:compile
                              \- (org.slf4j:slf4j-api:jar:1.7.7:compile - omitted for conflict with 1.7.25)

                      2. org.laidu.learn:local-cache:jar:1.0-SNAPSHOT
                        \- org.ehcache:ehcache:jar:3.4.0:compile
                           \- org.slf4j:slf4j-api:jar:1.7.7:compile

                      org.slf4j:slf4j-log4j12

                      - +
                      [Error] - + - +
                      1.6.1
                      1. org.laidu.learn:hadoop:jar:1.0-SNAPSHOT
                        \- org.apache.hadoop:hadoop-common:jar:2.8.1:compile
                           \- org.apache.zookeeper:zookeeper:jar:3.4.6:compile
                              \- (org.slf4j:slf4j-log4j12:jar:1.6.1:compile - omitted for conflict with 1.7.10)

                      1.7.10
                        @@ -1465,23 +1403,6 @@

                        org.slf4j:slf4j-log4j12

                        org.springframework.amqp:spring-rabbit

                        - - -
                        [Error] - - - - - - -
                        2.0.1.RELEASE -
                          -
                        1. org.laidu.learn:spring-amqp:jar:1.0-SNAPSHOT
                          \- org.springframework.amqp:spring-rabbit:jar:2.0.1.RELEASE:compile

                        2.0.3.RELEASE -
                          -
                        1. org.laidu.learn:spring-amqp:jar:1.0-SNAPSHOT
                          \- org.springframework.boot:spring-boot-starter-amqp:jar:2.0.2.RELEASE:compile
                             \- (org.springframework.amqp:spring-rabbit:jar:2.0.3.RELEASE:compile - omitted for conflict with 2.0.1.RELEASE)

                        -
                        -

                        org.springframework.boot:spring-boot-starter

                        - - - -
                        [Error] @@ -1490,228 +1411,29 @@

                        org.springframewo

                        2.0.1.RELEASE
                          -
                        1. org.laidu.learn.swagger:swagger:jar:0.0.1-SNAPSHOT
                          +- org.springframework.boot:spring-boot-starter-web-services:jar:2.0.1.RELEASE:compile
                          |  +- (org.springframework.boot:spring-boot-starter:jar:2.0.1.RELEASE:compile - omitted for conflict with 2.0.2.RELEASE)
                          |  \- org.springframework.boot:spring-boot-starter-web:jar:2.0.1.RELEASE:compile
                          |     +- (org.springframework.boot:spring-boot-starter:jar:2.0.1.RELEASE:compile - omitted for duplicate)
                          |     \- org.springframework.boot:spring-boot-starter-json:jar:2.0.1.RELEASE:compile
                          |        \- (org.springframework.boot:spring-boot-starter:jar:2.0.1.RELEASE:compile - omitted for duplicate)
                          \- org.springframework.boot:spring-boot-starter-test:jar:2.0.1.RELEASE:test
                             \- (org.springframework.boot:spring-boot-starter:jar:2.0.1.RELEASE:test - omitted for duplicate)

                        2.0.2.RELEASE -
                          -
                        1. org.laidu.learn.swagger:swagger:jar:0.0.1-SNAPSHOT
                          \- org.springframework.boot:spring-boot-starter:jar:2.0.2.RELEASE:compile

                      -
                      -

                      org.springframework:spring-aop

                      - - - -
                      [Error] - - - - - - - - - - - - -
                      4.3.11.RELEASE -
                        -
                      1. org.laidu.learn:common-amqp:jar:1.0-SNAPSHOT
                        \- org.springframework.boot:spring-boot-starter-amqp:jar:1.5.9.RELEASE:compile
                           \- org.springframework.amqp:spring-rabbit:jar:1.7.4.RELEASE:compile
                              \- org.springframework:spring-web:jar:4.3.11.RELEASE:compile
                                 \- (org.springframework:spring-aop:jar:4.3.11.RELEASE:compile - omitted for conflict with 4.3.13.RELEASE)

                      4.3.13.RELEASE -
                        -
                      1. org.laidu.learn:common-amqp:jar:1.0-SNAPSHOT
                        \- org.springframework.boot:spring-boot-starter-amqp:jar:1.5.9.RELEASE:compile
                           \- org.springframework:spring-messaging:jar:4.3.13.RELEASE:compile
                              \- org.springframework:spring-context:jar:4.3.13.RELEASE:compile
                                 \- org.springframework:spring-aop:jar:4.3.13.RELEASE:compile

                      5.0.4.RELEASE -
                        -
                      1. org.laidu.learn:elastic-job:jar:1.0-SNAPSHOT
                        \- org.laidu.learn:spring-boot-app:jar:0.0.1-SNAPSHOT:compile
                           \- org.springframework.boot:spring-boot-starter-web-services:jar:2.0.1.RELEASE:compile
                              \- org.springframework.ws:spring-ws-core:jar:3.0.1.RELEASE:compile
                                 \- (org.springframework:spring-aop:jar:5.0.4.RELEASE:compile - omitted for conflict with 5.0.5.RELEASE)

                      5.0.5.RELEASE -
                        -
                      1. org.laidu.learn:elastic-job:jar:1.0-SNAPSHOT
                        \- org.laidu.learn:spring-boot-app:jar:0.0.1-SNAPSHOT:compile
                           +- org.springframework.boot:spring-boot-starter-actuator:jar:2.0.1.RELEASE:compile
                           |  \- org.springframework.boot:spring-boot-actuator-autoconfigure:jar:2.0.1.RELEASE:compile
                           |     \- org.springframework:spring-context:jar:5.0.5.RELEASE:compile
                           |        \- (org.springframework:spring-aop:jar:5.0.5.RELEASE:compile - omitted for duplicate)
                           \- org.springframework.boot:spring-boot-starter-web:jar:2.0.1.RELEASE:compile
                              \- org.springframework:spring-webmvc:jar:5.0.5.RELEASE:compile
                                 \- org.springframework:spring-aop:jar:5.0.5.RELEASE:compile

                      -
                      -

                      org.springframework:spring-beans

                      - - - -
                      [Error] - - - - - - - - - - - - -
                      4.3.11.RELEASE -
                        -
                      1. org.laidu.learn:common-amqp:jar:1.0-SNAPSHOT
                        \- org.springframework.boot:spring-boot-starter-amqp:jar:1.5.9.RELEASE:compile
                           \- org.springframework.amqp:spring-rabbit:jar:1.7.4.RELEASE:compile
                              +- org.springframework:spring-web:jar:4.3.11.RELEASE:compile
                              |  \- (org.springframework:spring-beans:jar:4.3.11.RELEASE:compile - omitted for conflict with 4.3.13.RELEASE)
                              \- org.springframework:spring-tx:jar:4.3.11.RELEASE:compile
                                 \- (org.springframework:spring-beans:jar:4.3.11.RELEASE:compile - omitted for conflict with 4.3.13.RELEASE)

                      4.3.13.RELEASE -
                        -
                      1. org.laidu.learn:common-amqp:jar:1.0-SNAPSHOT
                        \- org.springframework.boot:spring-boot-starter-amqp:jar:1.5.9.RELEASE:compile
                           \- org.springframework:spring-messaging:jar:4.3.13.RELEASE:compile
                              +- org.springframework:spring-beans:jar:4.3.13.RELEASE:compile
                              \- org.springframework:spring-context:jar:4.3.13.RELEASE:compile
                                 +- org.springframework:spring-aop:jar:4.3.13.RELEASE:compile
                                 |  \- (org.springframework:spring-beans:jar:4.3.13.RELEASE:compile - omitted for duplicate)
                                 \- (org.springframework:spring-beans:jar:4.3.13.RELEASE:compile - omitted for duplicate)

                      5.0.4.RELEASE -
                        -
                      1. org.laidu.learn:elastic-job:jar:1.0-SNAPSHOT
                        \- org.laidu.learn:spring-boot-app:jar:0.0.1-SNAPSHOT:compile
                           \- org.springframework.boot:spring-boot-starter-web-services:jar:2.0.1.RELEASE:compile
                              \- org.springframework.ws:spring-ws-core:jar:3.0.1.RELEASE:compile
                                 +- org.springframework.ws:spring-xml:jar:3.0.1.RELEASE:compile
                                 |  \- (org.springframework:spring-beans:jar:5.0.4.RELEASE:compile - omitted for conflict with 5.0.5.RELEASE)
                                 \- (org.springframework:spring-beans:jar:5.0.4.RELEASE:compile - omitted for conflict with 5.0.5.RELEASE)

                      5.0.5.RELEASE -
                        -
                      1. org.laidu.learn:elastic-job:jar:1.0-SNAPSHOT
                        \- org.laidu.learn:spring-boot-app:jar:0.0.1-SNAPSHOT:compile
                           +- org.springframework.boot:spring-boot-starter-actuator:jar:2.0.1.RELEASE:compile
                           |  \- org.springframework.boot:spring-boot-actuator-autoconfigure:jar:2.0.1.RELEASE:compile
                           |     \- org.springframework:spring-context:jar:5.0.5.RELEASE:compile
                           |        \- (org.springframework:spring-beans:jar:5.0.5.RELEASE:compile - omitted for duplicate)
                           +- org.springframework.boot:spring-boot-starter-web:jar:2.0.1.RELEASE:compile
                           |  +- org.springframework:spring-web:jar:5.0.5.RELEASE:compile
                           |  |  \- org.springframework:spring-beans:jar:5.0.5.RELEASE:compile
                           |  \- org.springframework:spring-webmvc:jar:5.0.5.RELEASE:compile
                           |     +- org.springframework:spring-aop:jar:5.0.5.RELEASE:compile
                           |     |  \- (org.springframework:spring-beans:jar:5.0.5.RELEASE:compile - omitted for duplicate)
                           |     \- (org.springframework:spring-beans:jar:5.0.5.RELEASE:compile - omitted for duplicate)
                           \- org.springframework.boot:spring-boot-starter-web-services:jar:2.0.1.RELEASE:compile
                              \- org.springframework:spring-oxm:jar:5.0.5.RELEASE:compile
                                 \- (org.springframework:spring-beans:jar:5.0.5.RELEASE:compile - omitted for duplicate)

                      -
                      -

                      org.springframework:spring-context

                      - - - -
                      [Error] - - - - - - - - - - - - -
                      4.3.11.RELEASE -
                        -
                      1. org.laidu.learn:common-amqp:jar:1.0-SNAPSHOT
                        \- org.springframework.boot:spring-boot-starter-amqp:jar:1.5.9.RELEASE:compile
                           \- org.springframework.amqp:spring-rabbit:jar:1.7.4.RELEASE:compile
                              +- org.springframework:spring-web:jar:4.3.11.RELEASE:compile
                              |  \- (org.springframework:spring-context:jar:4.3.11.RELEASE:compile - omitted for conflict with 4.3.13.RELEASE)
                              \- (org.springframework:spring-context:jar:4.3.11.RELEASE:compile - omitted for conflict with 4.3.13.RELEASE)

                      4.3.13.RELEASE -
                        -
                      1. org.laidu.learn:common-amqp:jar:1.0-SNAPSHOT
                        \- org.springframework.boot:spring-boot-starter-amqp:jar:1.5.9.RELEASE:compile
                           +- org.springframework.boot:spring-boot-starter:jar:1.5.9.RELEASE:compile
                           |  \- org.springframework.boot:spring-boot:jar:1.5.9.RELEASE:compile
                           |     \- (org.springframework:spring-context:jar:4.3.13.RELEASE:compile - omitted for duplicate)
                           \- org.springframework:spring-messaging:jar:4.3.13.RELEASE:compile
                              \- org.springframework:spring-context:jar:4.3.13.RELEASE:compile

                      5.0.4.RELEASE -
                        -
                      1. org.laidu.learn:elastic-job:jar:1.0-SNAPSHOT
                        \- org.laidu.learn:spring-boot-app:jar:0.0.1-SNAPSHOT:compile
                           \- org.springframework.boot:spring-boot-starter-web-services:jar:2.0.1.RELEASE:compile
                              \- org.springframework.ws:spring-ws-core:jar:3.0.1.RELEASE:compile
                                 \- org.springframework.ws:spring-xml:jar:3.0.1.RELEASE:compile
                                    \- (org.springframework:spring-context:jar:5.0.4.RELEASE:compile - omitted for conflict with 5.0.5.RELEASE)

                      5.0.5.RELEASE -
                        -
                      1. org.laidu.learn:elastic-job:jar:1.0-SNAPSHOT
                        \- org.laidu.learn:spring-boot-app:jar:0.0.1-SNAPSHOT:compile
                           +- org.springframework.boot:spring-boot-starter-actuator:jar:2.0.1.RELEASE:compile
                           |  \- org.springframework.boot:spring-boot-actuator-autoconfigure:jar:2.0.1.RELEASE:compile
                           |     \- org.springframework:spring-context:jar:5.0.5.RELEASE:compile
                           +- org.springframework.boot:spring-boot-starter:jar:2.0.1.RELEASE:compile
                           |  \- org.springframework.boot:spring-boot:jar:2.0.1.RELEASE:compile
                           |     \- (org.springframework:spring-context:jar:5.0.5.RELEASE:compile - omitted for duplicate)
                           \- org.springframework.boot:spring-boot-starter-web:jar:2.0.1.RELEASE:compile
                              \- org.springframework:spring-webmvc:jar:5.0.5.RELEASE:compile
                                 \- (org.springframework:spring-context:jar:5.0.5.RELEASE:compile - omitted for duplicate)

                      -
                      -

                      org.springframework:spring-core

                      - - - -
                      [Error] - - - - - - - - - - - - - - - -
                      4.3.11.RELEASE -
                        -
                      1. org.laidu.learn:common-amqp:jar:1.0-SNAPSHOT
                        \- org.springframework.boot:spring-boot-starter-amqp:jar:1.5.9.RELEASE:compile
                           \- org.springframework.amqp:spring-rabbit:jar:1.7.4.RELEASE:compile
                              +- org.springframework:spring-web:jar:4.3.11.RELEASE:compile
                              |  \- (org.springframework:spring-core:jar:4.3.11.RELEASE:compile - omitted for conflict with 4.3.13.RELEASE)
                              +- org.springframework.amqp:spring-amqp:jar:1.7.4.RELEASE:compile
                              |  \- (org.springframework:spring-core:jar:4.3.11.RELEASE:compile - omitted for conflict with 4.3.13.RELEASE)
                              \- org.springframework:spring-tx:jar:4.3.11.RELEASE:compile
                                 \- (org.springframework:spring-core:jar:4.3.11.RELEASE:compile - omitted for conflict with 4.3.13.RELEASE)

                      4.3.13.RELEASE -
                        -
                      1. org.laidu.learn:common-amqp:jar:1.0-SNAPSHOT
                        \- org.springframework.boot:spring-boot-starter-amqp:jar:1.5.9.RELEASE:compile
                           +- org.springframework.boot:spring-boot-starter:jar:1.5.9.RELEASE:compile
                           |  +- org.springframework.boot:spring-boot:jar:1.5.9.RELEASE:compile
                           |  |  \- (org.springframework:spring-core:jar:4.3.13.RELEASE:compile - omitted for duplicate)
                           |  \- org.springframework:spring-core:jar:4.3.13.RELEASE:compile
                           \- org.springframework:spring-messaging:jar:4.3.13.RELEASE:compile
                              +- org.springframework:spring-beans:jar:4.3.13.RELEASE:compile
                              |  \- (org.springframework:spring-core:jar:4.3.13.RELEASE:compile - omitted for duplicate)
                              +- org.springframework:spring-context:jar:4.3.13.RELEASE:compile
                              |  +- org.springframework:spring-aop:jar:4.3.13.RELEASE:compile
                              |  |  \- (org.springframework:spring-core:jar:4.3.13.RELEASE:compile - omitted for duplicate)
                              |  +- (org.springframework:spring-core:jar:4.3.13.RELEASE:compile - omitted for duplicate)
                              |  \- org.springframework:spring-expression:jar:4.3.13.RELEASE:compile
                              |     \- (org.springframework:spring-core:jar:4.3.13.RELEASE:compile - omitted for duplicate)
                              \- (org.springframework:spring-core:jar:4.3.13.RELEASE:compile - omitted for duplicate)

                      4.3.3.RELEASE -
                        -
                      1. org.laidu.learn:common-amqp:jar:1.0-SNAPSHOT
                        \- org.springframework.boot:spring-boot-starter-amqp:jar:1.5.9.RELEASE:compile
                           \- org.springframework.amqp:spring-rabbit:jar:1.7.4.RELEASE:compile
                              \- org.springframework.retry:spring-retry:jar:1.2.0.RELEASE:compile
                                 \- (org.springframework:spring-core:jar:4.3.3.RELEASE:compile - omitted for conflict with 4.3.13.RELEASE)

                      5.0.4.RELEASE -
                        -
                      1. org.laidu.learn:elastic-job:jar:1.0-SNAPSHOT
                        \- org.laidu.learn:spring-boot-app:jar:0.0.1-SNAPSHOT:compile
                           \- org.springframework.boot:spring-boot-starter-web-services:jar:2.0.1.RELEASE:compile
                              \- org.springframework.ws:spring-ws-core:jar:3.0.1.RELEASE:compile
                                 +- org.springframework.ws:spring-xml:jar:3.0.1.RELEASE:compile
                                 |  \- (org.springframework:spring-core:jar:5.0.4.RELEASE:compile - omitted for conflict with 5.0.5.RELEASE)
                                 \- (org.springframework:spring-core:jar:5.0.4.RELEASE:compile - omitted for conflict with 5.0.5.RELEASE)

                      5.0.5.RELEASE -
                        -
                      1. org.laidu.learn:elastic-job:jar:1.0-SNAPSHOT
                        \- org.laidu.learn:spring-boot-app:jar:0.0.1-SNAPSHOT:compile
                           +- org.springframework.boot:spring-boot-starter-actuator:jar:2.0.1.RELEASE:compile
                           |  \- org.springframework.boot:spring-boot-actuator-autoconfigure:jar:2.0.1.RELEASE:compile
                           |     +- (org.springframework:spring-core:jar:5.0.5.RELEASE:compile - omitted for duplicate)
                           |     \- org.springframework:spring-context:jar:5.0.5.RELEASE:compile
                           |        \- (org.springframework:spring-core:jar:5.0.5.RELEASE:compile - omitted for duplicate)
                           +- org.springframework.boot:spring-boot-starter:jar:2.0.1.RELEASE:compile
                           |  +- org.springframework.boot:spring-boot:jar:2.0.1.RELEASE:compile
                           |  |  \- (org.springframework:spring-core:jar:5.0.5.RELEASE:compile - omitted for duplicate)
                           |  \- org.springframework:spring-core:jar:5.0.5.RELEASE:compile
                           +- org.springframework.boot:spring-boot-starter-web:jar:2.0.1.RELEASE:compile
                           |  +- org.springframework:spring-web:jar:5.0.5.RELEASE:compile
                           |  |  +- org.springframework:spring-beans:jar:5.0.5.RELEASE:compile
                           |  |  |  \- (org.springframework:spring-core:jar:5.0.5.RELEASE:compile - omitted for duplicate)
                           |  |  \- (org.springframework:spring-core:jar:5.0.5.RELEASE:compile - omitted for duplicate)
                           |  \- org.springframework:spring-webmvc:jar:5.0.5.RELEASE:compile
                           |     +- org.springframework:spring-aop:jar:5.0.5.RELEASE:compile
                           |     |  \- (org.springframework:spring-core:jar:5.0.5.RELEASE:compile - omitted for duplicate)
                           |     +- (org.springframework:spring-core:jar:5.0.5.RELEASE:compile - omitted for duplicate)
                           |     \- org.springframework:spring-expression:jar:5.0.5.RELEASE:compile
                           |        \- (org.springframework:spring-core:jar:5.0.5.RELEASE:compile - omitted for duplicate)
                           \- org.springframework.boot:spring-boot-starter-web-services:jar:2.0.1.RELEASE:compile
                              \- org.springframework:spring-oxm:jar:5.0.5.RELEASE:compile
                                 \- (org.springframework:spring-core:jar:5.0.5.RELEASE:compile - omitted for duplicate)

                      -
                      -

                      org.springframework:spring-messaging

                      - - - -
                      [Error] - - - - - - -
                      4.3.11.RELEASE -
                        -
                      1. org.laidu.learn:common-amqp:jar:1.0-SNAPSHOT
                        \- org.springframework.boot:spring-boot-starter-amqp:jar:1.5.9.RELEASE:compile
                           \- org.springframework.amqp:spring-rabbit:jar:1.7.4.RELEASE:compile
                              \- (org.springframework:spring-messaging:jar:4.3.11.RELEASE:compile - omitted for conflict with 4.3.13.RELEASE)

                      4.3.13.RELEASE -
                        -
                      1. org.laidu.learn:common-amqp:jar:1.0-SNAPSHOT
                        \- org.springframework.boot:spring-boot-starter-amqp:jar:1.5.9.RELEASE:compile
                           \- org.springframework:spring-messaging:jar:4.3.13.RELEASE:compile

                      -
                      -

                      org.springframework:spring-oxm

                      - - - -
                      [Error] - +
                    38. org.laidu.learn:spring-amqp:jar:1.0-SNAPSHOT
                      \- org.springframework.amqp:spring-rabbit:jar:2.0.1.RELEASE:compile

                    39. - - - - +
                      5.0.4.RELEASE -
                        -
                      1. org.laidu.learn:elastic-job:jar:1.0-SNAPSHOT
                        \- org.laidu.learn:spring-boot-app:jar:0.0.1-SNAPSHOT:compile
                           \- org.springframework.boot:spring-boot-starter-web-services:jar:2.0.1.RELEASE:compile
                              \- org.springframework.ws:spring-ws-core:jar:3.0.1.RELEASE:compile
                                 \- (org.springframework:spring-oxm:jar:5.0.4.RELEASE:compile - omitted for conflict with 5.0.5.RELEASE)

                      5.0.5.RELEASE2.0.3.RELEASE
                        -
                      1. org.laidu.learn:elastic-job:jar:1.0-SNAPSHOT
                        \- org.laidu.learn:spring-boot-app:jar:0.0.1-SNAPSHOT:compile
                           \- org.springframework.boot:spring-boot-starter-web-services:jar:2.0.1.RELEASE:compile
                              \- org.springframework:spring-oxm:jar:5.0.5.RELEASE:compile

                      +
                    40. org.laidu.learn:spring-amqp:jar:1.0-SNAPSHOT
                      \- org.springframework.boot:spring-boot-starter-amqp:jar:2.0.2.RELEASE:compile
                         \- (org.springframework.amqp:spring-rabbit:jar:2.0.3.RELEASE:compile - omitted for conflict with 2.0.1.RELEASE)

                    org.springframework:spring-test

                    - - -
                    [Error] - - - - - - -
                    5.0.5.RELEASE -
                      -
                    1. org.laidu.learn.spring.cloud:consumer-hello:jar:0.0.1-SNAPSHOT
                      \- org.springframework.boot:spring-boot-starter-test:jar:2.0.1.RELEASE:test
                         \- (org.springframework:spring-test:jar:5.0.5.RELEASE:test - omitted for conflict with 5.0.6.RELEASE)

                    2. -
                    3. org.laidu.learn.spring.cloud:eureka-server:jar:0.0.1-SNAPSHOT
                      \- org.springframework.boot:spring-boot-starter-test:jar:2.0.1.RELEASE:test
                         \- (org.springframework:spring-test:jar:5.0.5.RELEASE:test - omitted for conflict with 5.0.6.RELEASE)

                    4. -
                    5. org.laidu.learn.spring.cloud:service-hello:jar:0.0.1-SNAPSHOT
                      \- org.springframework.boot:spring-boot-starter-test:jar:2.0.1.RELEASE:test
                         \- (org.springframework:spring-test:jar:5.0.5.RELEASE:test - omitted for conflict with 5.0.6.RELEASE)

                    6. -
                    7. org.laidu.learn.swagger:swagger:jar:0.0.1-SNAPSHOT
                      \- org.springframework.boot:spring-boot-starter-test:jar:2.0.1.RELEASE:test
                         \- (org.springframework:spring-test:jar:5.0.5.RELEASE:test - omitted for conflict with 5.0.6.RELEASE)

                    8. -
                    9. org.laidu.learn:spring-boot-app:jar:0.0.1-SNAPSHOT
                      \- org.springframework.boot:spring-boot-starter-test:jar:2.0.1.RELEASE:test
                         \- (org.springframework:spring-test:jar:5.0.5.RELEASE:test - omitted for conflict with 5.0.6.RELEASE)

                    10. -
                    11. org.laidu.learn:spring-boot-shiro:jar:1.0-SNAPSHOT
                      \- org.springframework.boot:spring-boot-starter-test:jar:2.0.1.RELEASE:test
                         \- (org.springframework:spring-test:jar:5.0.5.RELEASE:test - omitted for conflict with 5.0.6.RELEASE)

                    12. -
                    13. org.laidu.learn:spring-boot:pom:1.0-SNAPSHOT
                      \- org.springframework.boot:spring-boot-starter-test:jar:2.0.1.RELEASE:test
                         \- (org.springframework:spring-test:jar:5.0.5.RELEASE:test - omitted for conflict with 5.0.6.RELEASE)

                    14. -
                    15. org.laidu.learn:spring-cloud:pom:1.0-SNAPSHOT
                      \- org.springframework.boot:spring-boot-starter-test:jar:2.0.1.RELEASE:test
                         \- (org.springframework:spring-test:jar:5.0.5.RELEASE:test - omitted for conflict with 5.0.6.RELEASE)

                    16. -
                    17. org.laidu.learn:spring-mvc:jar:1.0-SNAPSHOT
                      \- org.springframework.boot:spring-boot-starter-test:jar:2.0.2.RELEASE:test
                         \- (org.springframework:spring-test:jar:5.0.5.RELEASE:test - version managed from 5.0.6.RELEASE; omitted for conflict with 5.0.6.RELEASE)

                    18. -
                    19. org.laidu.learn:spring-web:pom:1.0-SNAPSHOT
                      \- org.springframework.boot:spring-boot-starter-test:jar:2.0.2.RELEASE:test
                         \- (org.springframework:spring-test:jar:5.0.5.RELEASE:test - version managed from 5.0.6.RELEASE; omitted for conflict with 5.0.6.RELEASE)

                    5.0.6.RELEASE -
                      -
                    1. org.laidu.learn.spring.cloud:consumer-hello:jar:0.0.1-SNAPSHOT
                      \- org.springframework:spring-test:jar:5.0.6.RELEASE:test

                    2. -
                    3. org.laidu.learn.spring.cloud:eureka-server:jar:0.0.1-SNAPSHOT
                      \- org.springframework:spring-test:jar:5.0.6.RELEASE:test

                    4. -
                    5. org.laidu.learn.spring.cloud:service-hello:jar:0.0.1-SNAPSHOT
                      \- org.springframework:spring-test:jar:5.0.6.RELEASE:test

                    6. -
                    7. org.laidu.learn.swagger:swagger:jar:0.0.1-SNAPSHOT
                      \- org.springframework:spring-test:jar:5.0.6.RELEASE:test

                    8. -
                    9. org.laidu.learn:spring-boot-app:jar:0.0.1-SNAPSHOT
                      \- org.springframework:spring-test:jar:5.0.6.RELEASE:test

                    10. -
                    11. org.laidu.learn:spring-boot-shiro:jar:1.0-SNAPSHOT
                      \- org.springframework:spring-test:jar:5.0.6.RELEASE:test

                    12. -
                    13. org.laidu.learn:spring-boot:pom:1.0-SNAPSHOT
                      \- org.springframework:spring-test:jar:5.0.6.RELEASE:test

                    14. -
                    15. org.laidu.learn:spring-cloud:pom:1.0-SNAPSHOT
                      \- org.springframework:spring-test:jar:5.0.6.RELEASE:test

                    16. -
                    17. org.laidu.learn:spring-mvc:jar:1.0-SNAPSHOT
                      \- org.springframework:spring-test:jar:5.0.6.RELEASE:test

                    18. -
                    19. org.laidu.learn:spring-web:pom:1.0-SNAPSHOT
                      \- org.springframework:spring-test:jar:5.0.6.RELEASE:test

                    -
                    -

                    org.springframework:spring-web

                    -
                    [Error] - - -
                    5.0.4.RELEASE -
                      -
                    1. org.laidu.learn:elastic-job:jar:1.0-SNAPSHOT
                      \- org.laidu.learn:spring-boot-app:jar:0.0.1-SNAPSHOT:compile
                         \- org.springframework.boot:spring-boot-starter-web-services:jar:2.0.1.RELEASE:compile
                            \- org.springframework.ws:spring-ws-core:jar:3.0.1.RELEASE:compile
                               \- (org.springframework:spring-web:jar:5.0.4.RELEASE:compile - omitted for conflict with 5.0.5.RELEASE)

                    5.0.5.RELEASE
                      -
                    1. org.laidu.learn:elastic-job:jar:1.0-SNAPSHOT
                      \- org.laidu.learn:spring-boot-app:jar:0.0.1-SNAPSHOT:compile
                         \- org.springframework.boot:spring-boot-starter-web:jar:2.0.1.RELEASE:compile
                            +- org.springframework.boot:spring-boot-starter-json:jar:2.0.1.RELEASE:compile
                            |  \- (org.springframework:spring-web:jar:5.0.5.RELEASE:compile - omitted for duplicate)
                            +- org.springframework:spring-web:jar:5.0.5.RELEASE:compile
                            \- org.springframework:spring-webmvc:jar:5.0.5.RELEASE:compile
                               \- (org.springframework:spring-web:jar:5.0.5.RELEASE:compile - omitted for duplicate)

                    -
                    -

                    org.springframework:spring-webmvc

                    - - - -
                    [Error] - +
                  1. org.laidu.learn:spring-boot-app:jar:0.0.1-SNAPSHOT
                    \- org.springframework.boot:spring-boot-starter-test:jar:2.0.1.RELEASE:test
                       \- (org.springframework:spring-test:jar:5.0.5.RELEASE:test - omitted for conflict with 5.0.6.RELEASE)

                  2. - - - - +
                    5.0.4.RELEASE -
                      -
                    1. org.laidu.learn:elastic-job:jar:1.0-SNAPSHOT
                      \- org.laidu.learn:spring-boot-app:jar:0.0.1-SNAPSHOT:compile
                         \- org.springframework.boot:spring-boot-starter-web-services:jar:2.0.1.RELEASE:compile
                            \- org.springframework.ws:spring-ws-core:jar:3.0.1.RELEASE:compile
                               \- (org.springframework:spring-webmvc:jar:5.0.4.RELEASE:compile - omitted for conflict with 5.0.5.RELEASE)

                    5.0.5.RELEASE5.0.6.RELEASE
                      -
                    1. org.laidu.learn:elastic-job:jar:1.0-SNAPSHOT
                      \- org.laidu.learn:spring-boot-app:jar:0.0.1-SNAPSHOT:compile
                         \- org.springframework.boot:spring-boot-starter-web:jar:2.0.1.RELEASE:compile
                            \- org.springframework:spring-webmvc:jar:5.0.5.RELEASE:compile

                    +
                  3. org.laidu.learn:spring-boot-app:jar:0.0.1-SNAPSHOT
                    \- org.springframework:spring-test:jar:5.0.6.RELEASE:compile

                  diff --git a/docs/dependency-info.html b/docs/dependency-info.html index 0d2b6335b..fce826e69 100644 --- a/docs/dependency-info.html +++ b/docs/dependency-info.html @@ -1,5 +1,5 @@ - + @@ -24,7 +24,7 @@
                  org.apache.maven.plugins maven-release-plugin2.3.2
                  +
                2.3.2
                org.apache.maven.pluginsmaven-scm-publish-plugin3.0.0
                org.apache.maven.pluginsmaven-site-plugin3.7.1
                diff --git a/docs/plugins.html b/docs/plugins.html index 27b20513b..208003eb4 100644 --- a/docs/plugins.html +++ b/docs/plugins.html @@ -1,5 +1,5 @@ - + @@ -24,7 +24,7 @@
                org.apache.maven.pluginsmaven-scm-publish-plugin3.0.0
                org.apache.maven.plugins maven-site-plugin3.7.1
                +
              3.7.1
              org.apache.maven.pluginsmaven-site-scm-publish-plugin3.0.0

              Project Report Plugins

              diff --git a/docs/problem.html b/docs/problem.html index 2b1cde6ba..9970370c1 100644 --- a/docs/problem.html +++ b/docs/problem.html @@ -1,5 +1,5 @@ - + @@ -24,7 +24,7 @@ -
              Homepagehttps://github.com/laidu/java-learn
              +
              https://laidu.github.io/java-learn

              Project Organization

              This project does not belong to an organization.

              diff --git a/docs/request.html b/docs/request.html index 892fe3bc6..6fb76a455 100644 --- a/docs/request.html +++ b/docs/request.html @@ -1,5 +1,5 @@ - + @@ -24,7 +24,7 @@

            Description: java语言基础学习

            -

            URL: https://github.com/laidu/java-learn/language-feature

            +

            URL: https://laidu.github.io/java-learn/language-feature

            Project Licenses: No licenses are defined for this project.

            2.3.2
            org.apache.maven.pluginsmaven-scm-publish-plugin3.0.0
            org.apache.maven.pluginsmaven-site-plugin3.7.1
            @@ -126,9 +100,7 @@

            Project Plugin Management


            diff --git a/docs/language-feature/plugins.html b/docs/language-feature/plugins.html index 8567dcb51..bcd812abf 100644 --- a/docs/language-feature/plugins.html +++ b/docs/language-feature/plugins.html @@ -1,5 +1,5 @@ - + @@ -11,92 +11,58 @@ - - + +
          Homepagehttps://github.com/laidu/java-learn/language-feature
          +
          https://laidu.github.io/java-learn/language-feature

          Project Organization

          This project does not belong to an organization.

          @@ -144,9 +110,7 @@

          Build Information

          - Copyright © 2018. - All rights reserved. -
          + Copyright © 2018.All rights reserved.

          diff --git a/docs/language-feature/regex.html b/docs/language-feature/regex.html index 323b4e20a..635d0245a 100644 --- a/docs/language-feature/regex.html +++ b/docs/language-feature/regex.html @@ -1,5 +1,5 @@ - + @@ -11,57 +11,45 @@ - - + +

        Description: 可用于实际项目中的小工具

        -

        URL: https://github.com/laidu/java-learn/production-component

        +

        URL: https://laidu.github.io/java-learn/production-component

        Project Licenses: No licenses are defined for this project.

        crawler-helper 爬虫小工具
        common-pool通用对象池服务
        crawler基于webmagic的爬虫框架
        common-amqp可用于实际项目中的小工具
        +
      基于webmagic的爬虫框架
      @@ -149,9 +95,7 @@

      Project Modules


      diff --git a/docs/production-component/integration.html b/docs/production-component/integration.html index 793870327..c158b6f28 100644 --- a/docs/production-component/integration.html +++ b/docs/production-component/integration.html @@ -1,5 +1,5 @@ - + @@ -11,113 +11,65 @@ - - + +
      基于webmagic的爬虫框架
      @@ -146,9 +92,7 @@

      Project Modules


      diff --git a/docs/production-component/plugin-management.html b/docs/production-component/plugin-management.html index 3d12cbb19..af6767dc0 100644 --- a/docs/production-component/plugin-management.html +++ b/docs/production-component/plugin-management.html @@ -1,5 +1,5 @@ - + @@ -11,113 +11,65 @@ - - + +
    2.3.2
    org.apache.maven.pluginsmaven-scm-publish-plugin3.0.0
    org.apache.maven.pluginsmaven-site-plugin3.7.1
    @@ -147,9 +107,7 @@

    Project Plugin Management


    diff --git a/docs/production-component/plugins.html b/docs/production-component/plugins.html index 6cf01890d..bdc2b8cde 100644 --- a/docs/production-component/plugins.html +++ b/docs/production-component/plugins.html @@ -1,5 +1,5 @@ - + @@ -11,113 +11,65 @@ - - + +
    3.7.1
    org.apache.maven.pluginsmaven-site-scm-publish-plugin3.0.0

    Project Report Plugins

    -

    There are no plugins reports defined in the Reporting part of this project.

    + + + + + + + + +
    GroupIdArtifactIdVersion
    org.apache.maven.pluginsmaven-project-info-reports-plugin2.9

    diff --git a/docs/production-component/project-info.html b/docs/production-component/project-info.html index c7af0f6a0..4bfcb7fd5 100644 --- a/docs/production-component/project-info.html +++ b/docs/production-component/project-info.html @@ -1,5 +1,5 @@ - + @@ -11,113 +11,65 @@ - - + +
    From daef1bb3778e9a5fbb1800757c9181c4afa5b194 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=9D=90=E7=AC=83=E5=A4=A7=E5=A4=A7?= Date: Thu, 28 Jun 2018 15:00:17 +0000 Subject: [PATCH 111/417] Creating site for common-util, 1.0-SNAPSHOT --- .../common-util/dependencies.html | 26 +++++++++---------- 1 file changed, 13 insertions(+), 13 deletions(-) diff --git a/docs/production-component/common-util/dependencies.html b/docs/production-component/common-util/dependencies.html index c81b4dea4..e63feb648 100644 --- a/docs/production-component/common-util/dependencies.html +++ b/docs/production-component/common-util/dependencies.html @@ -1220,12 +1220,12 @@

    Dependency Repository Location ch.qos.logback:logback-classic:jar:1.2.3 - -- +Found at http://maven.aliyun.com/nexus/content/repositories/central - ch.qos.logback:logback-core:jar:1.2.3 - -- +Found at http://maven.aliyun.com/nexus/content/repositories/central - com.alibaba:fastjson:jar:1.2.45 @@ -1255,7 +1255,7 @@

    Dependency Repository Location com.google.code.findbugs:jsr305:jar:1.3.9 - -- +Found at http://maven.aliyun.com/nexus/content/repositories/central - com.google.code.gson:gson:jar:2.8.5 @@ -1290,7 +1290,7 @@

    Dependency Repository Location commons-codec:commons-codec:jar:1.9 - -- +Found at http://maven.aliyun.com/nexus/content/repositories/central - commons-io:commons-io:jar:2.5 @@ -1300,7 +1300,7 @@

    Dependency Repository Location commons-logging:commons-logging:jar:1.2 - -- +Found at http://maven.aliyun.com/nexus/content/repositories/central - de.ruedigermoeller:fst:jar:2.57 @@ -1310,22 +1310,22 @@

    Dependency Repository Location junit:junit:jar:4.12 - -- +Found at http://maven.aliyun.com/nexus/content/repositories/central - org.apache.commons:commons-lang3:jar:3.6 - -- +Found at http://maven.aliyun.com/nexus/content/repositories/central - org.apache.httpcomponents:httpclient:jar:4.5.3 - -- +Found at http://maven.aliyun.com/nexus/content/repositories/central - org.apache.httpcomponents:httpcore:jar:4.4.8 - -- +Found at http://maven.aliyun.com/nexus/content/repositories/central - org.apiguardian:apiguardian-api:jar:1.0.0 @@ -1345,12 +1345,12 @@

    Dependency Repository Location org.hamcrest:hamcrest-core:jar:1.3 - -- +Found at http://maven.aliyun.com/nexus/content/repositories/central - org.javassist:javassist:jar:3.21.0-GA - -- +Found at http://maven.aliyun.com/nexus/content/repositories/central - org.jodd:jodd-bean:jar:3.9.1 @@ -1415,7 +1415,7 @@

    Dependency Repository Location org.slf4j:slf4j-api:jar:1.7.25 - -- +Found at http://maven.aliyun.com/nexus/content/repositories/central - Total @@ -1425,7 +1425,7 @@

    Dependency Repository Location 41 (compile: 31, test: 10) 0 -29 +41 0

    From b4f35fb7498d3dc772a87b4ad93fba4215354815 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=9D=90=E7=AC=83=E5=A4=A7=E5=A4=A7?= Date: Thu, 28 Jun 2018 15:02:48 +0000 Subject: [PATCH 112/417] Creating site for framework, 1.0-SNAPSHOT --- docs/framework/dependencies.html | 28 ++++++++++++++-------------- 1 file changed, 14 insertions(+), 14 deletions(-) diff --git a/docs/framework/dependencies.html b/docs/framework/dependencies.html index 57b290ddf..86bf908a4 100644 --- a/docs/framework/dependencies.html +++ b/docs/framework/dependencies.html @@ -1258,12 +1258,12 @@

    Dependency Repository Location ch.qos.logback:logback-classic:jar:1.2.3 - -- +Found at http://maven.aliyun.com/nexus/content/repositories/central - ch.qos.logback:logback-core:jar:1.2.3 - -- +Found at http://maven.aliyun.com/nexus/content/repositories/central - com.alibaba:fastjson:jar:1.2.45 @@ -1293,7 +1293,7 @@

    Dependency Repository Location com.google.code.findbugs:jsr305:jar:1.3.9 - -- +Found at http://maven.aliyun.com/nexus/content/repositories/central - com.google.code.gson:gson:jar:2.8.5 @@ -1328,7 +1328,7 @@

    Dependency Repository Location commons-codec:commons-codec:jar:1.9 - -- +Found at http://maven.aliyun.com/nexus/content/repositories/central - commons-io:commons-io:jar:2.5 @@ -1338,7 +1338,7 @@

    Dependency Repository Location commons-logging:commons-logging:jar:1.2 - -- +Found at http://maven.aliyun.com/nexus/content/repositories/central - de.ruedigermoeller:fst:jar:2.57 @@ -1348,22 +1348,22 @@

    Dependency Repository Location junit:junit:jar:4.12 - -- +Found at http://maven.aliyun.com/nexus/content/repositories/central - org.apache.commons:commons-lang3:jar:3.6 - -- +Found at http://maven.aliyun.com/nexus/content/repositories/central - org.apache.httpcomponents:httpclient:jar:4.5.3 - -- +Found at http://maven.aliyun.com/nexus/content/repositories/central - org.apache.httpcomponents:httpcore:jar:4.4.8 - -- +Found at http://maven.aliyun.com/nexus/content/repositories/central - org.apiguardian:apiguardian-api:jar:1.0.0 @@ -1383,12 +1383,12 @@

    Dependency Repository Location org.hamcrest:hamcrest-core:jar:1.3 - -- +Found at http://maven.aliyun.com/nexus/content/repositories/central - org.javassist:javassist:jar:3.21.0-GA - -- +Found at http://maven.aliyun.com/nexus/content/repositories/central - org.jodd:jodd-bean:jar:3.9.1 @@ -1453,12 +1453,12 @@

    Dependency Repository Location org.projectlombok:lombok:jar:1.16.18 - -- +Found at http://maven.aliyun.com/nexus/content/repositories/central - org.slf4j:slf4j-api:jar:1.7.25 - -- +Found at http://maven.aliyun.com/nexus/content/repositories/central - Total @@ -1468,7 +1468,7 @@

    Dependency Repository Location 42 (compile: 32, test: 10) 0 -28 +41 0 From b21e462f7aa29746d69165427a3d53cc76fa039e Mon Sep 17 00:00:00 2001 From: ztc Date: Fri, 29 Jun 2018 16:19:49 +0800 Subject: [PATCH 113/417] sync --- .../processor/MethodMonitorProcessor.java | 9 ++++++-- .../src/main/resources/slf4j.properties | 0 .../swagger/demo/config/SwaggerConfig.java | 16 ++++---------- .../learn/swagger/demo/config/WebConfig.java | 22 ++++++------------- .../demo/intercaptor/RequestInterceptor.java | 9 ++++---- .../src/main/resources/application.properties | 5 ++++- .../swagger/demo/SwaggerApplicationTests.java | 9 ++++++-- pom.xml | 3 +-- 8 files changed, 35 insertions(+), 38 deletions(-) delete mode 100644 framework/spring/spring-aop/src/main/resources/slf4j.properties diff --git a/framework/spring/spring-aop/src/main/java/org/laidu/learn/spring/aop/annotation/processor/MethodMonitorProcessor.java b/framework/spring/spring-aop/src/main/java/org/laidu/learn/spring/aop/annotation/processor/MethodMonitorProcessor.java index b65560002..05d88bd11 100644 --- a/framework/spring/spring-aop/src/main/java/org/laidu/learn/spring/aop/annotation/processor/MethodMonitorProcessor.java +++ b/framework/spring/spring-aop/src/main/java/org/laidu/learn/spring/aop/annotation/processor/MethodMonitorProcessor.java @@ -39,8 +39,13 @@ private void pointcut() { @Around("pointcut() && @annotation(monitor)") public Object logExecutionTime(ProceedingJoinPoint joinPoint, MethodMonitor monitor) throws Throwable { - MethodMonitor.LogPrintLogic logPrintLogic = context.getBean(monitor.logic()); - + MethodMonitor.LogPrintLogic logPrintLogic; + try { + logPrintLogic = context.getBean(monitor.logic()); + }catch (Exception ex){ + log.error("未找到日志打印逻辑: {}, 将使用默认逻辑打印日志!", monitor.logic()); + logPrintLogic = context.getBean(DefaultLogPrintLogic.class); + } return logPrintLogic.build(joinPoint); } diff --git a/framework/spring/spring-aop/src/main/resources/slf4j.properties b/framework/spring/spring-aop/src/main/resources/slf4j.properties deleted file mode 100644 index e69de29bb..000000000 diff --git a/framework/spring/swagger/src/main/java/org/laidu/learn/swagger/demo/config/SwaggerConfig.java b/framework/spring/swagger/src/main/java/org/laidu/learn/swagger/demo/config/SwaggerConfig.java index 34f6d797f..e9b030167 100644 --- a/framework/spring/swagger/src/main/java/org/laidu/learn/swagger/demo/config/SwaggerConfig.java +++ b/framework/spring/swagger/src/main/java/org/laidu/learn/swagger/demo/config/SwaggerConfig.java @@ -1,9 +1,8 @@ package org.laidu.learn.swagger.demo.config; +import org.springframework.boot.autoconfigure.condition.ConditionalOnBean; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; -import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry; -import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter; import springfox.documentation.builders.PathSelectors; import springfox.documentation.builders.RequestHandlerSelectors; import springfox.documentation.spi.DocumentationType; @@ -17,8 +16,10 @@ */ @Configuration @EnableSwagger2 -public class SwaggerConfig extends WebMvcConfigurerAdapter { +//@ConditionalOnExpression("'${spring.profiles.active}' == 'default' || '${spring.profiles.active}' == 'dev' || '${spring.profiles.active}' == 'test'") +public class SwaggerConfig { @Bean + @ConditionalOnBean(SwaggerConfig.class) public Docket api() { return new Docket(DocumentationType.SWAGGER_2) .select() @@ -27,13 +28,4 @@ public Docket api() { .build(); } - @Override - public void addResourceHandlers(ResourceHandlerRegistry registry) { - registry.addResourceHandler("swagger-ui.html") - .addResourceLocations("classpath:/META-INF/resources/"); - - registry.addResourceHandler("/webjars/**") - .addResourceLocations("classpath:/META-INF/resources/webjars/"); - } - } \ No newline at end of file diff --git a/framework/spring/swagger/src/main/java/org/laidu/learn/swagger/demo/config/WebConfig.java b/framework/spring/swagger/src/main/java/org/laidu/learn/swagger/demo/config/WebConfig.java index d26586c27..03b4fe839 100644 --- a/framework/spring/swagger/src/main/java/org/laidu/learn/swagger/demo/config/WebConfig.java +++ b/framework/spring/swagger/src/main/java/org/laidu/learn/swagger/demo/config/WebConfig.java @@ -1,27 +1,19 @@ package org.laidu.learn.swagger.demo.config; import lombok.extern.slf4j.Slf4j; -import org.laidu.learn.swagger.demo.intercaptor.RequestInterceptor; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.context.annotation.Configuration; -import org.springframework.web.servlet.config.annotation.InterceptorRegistry; -import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter; +import springfox.documentation.spring.web.SpringfoxWebMvcConfiguration; /** * web config *

    - * Created by tiancai.zang on 2017-12-13 18:39. + * Created by laidu + * on 2018-06-28 09:45. + * + * @author laidu */ +// TODO: 2018-06-28 09:45 web config @Slf4j -@Configuration -// : 2017/12/13 18/39 web config -public class WebConfig extends WebMvcConfigurerAdapter { +public class WebConfig extends SpringfoxWebMvcConfiguration { - @Autowired - RequestInterceptor requestInterceptor; - @Override - public void addInterceptors(InterceptorRegistry registry) { - registry.addInterceptor(requestInterceptor); - } } \ No newline at end of file diff --git a/framework/spring/swagger/src/main/java/org/laidu/learn/swagger/demo/intercaptor/RequestInterceptor.java b/framework/spring/swagger/src/main/java/org/laidu/learn/swagger/demo/intercaptor/RequestInterceptor.java index fd42a25be..25d3bc76b 100644 --- a/framework/spring/swagger/src/main/java/org/laidu/learn/swagger/demo/intercaptor/RequestInterceptor.java +++ b/framework/spring/swagger/src/main/java/org/laidu/learn/swagger/demo/intercaptor/RequestInterceptor.java @@ -4,8 +4,8 @@ import org.apache.commons.io.IOUtils; import org.springframework.stereotype.Component; import org.springframework.web.bind.ServletRequestUtils; +import org.springframework.web.servlet.HandlerInterceptor; import org.springframework.web.servlet.ModelAndView; -import org.springframework.web.servlet.handler.HandlerInterceptorAdapter; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; @@ -15,12 +15,13 @@ /** * RequestInterceptor *

    - * Created by tiancai.zang on 2017-12-13 18:36. + * + * @author tiancai.zang + * @date 2017-12-13 18:36 */ @Slf4j @Component -// : 2017/12/13 18/36 RequestInterceptor -public class RequestInterceptor extends HandlerInterceptorAdapter { +public class RequestInterceptor implements HandlerInterceptor { /** * This is not a good practice to use sysout. Always integrate any logger diff --git a/framework/spring/swagger/src/main/resources/application.properties b/framework/spring/swagger/src/main/resources/application.properties index b3b0a1897..7467cc18f 100644 --- a/framework/spring/swagger/src/main/resources/application.properties +++ b/framework/spring/swagger/src/main/resources/application.properties @@ -1,2 +1,5 @@ spring.jackson.property-naming-strategy=CAMEL_CASE_TO_LOWER_CASE_WITH_UNDERSCORES -server.address=0.0.0.0 \ No newline at end of file +server.address=0.0.0.0 + +spring.application.name=swagger-demo +spring.application.admin.enabled=true \ No newline at end of file diff --git a/framework/spring/swagger/src/test/java/org/laidu/learn/swagger/demo/SwaggerApplicationTests.java b/framework/spring/swagger/src/test/java/org/laidu/learn/swagger/demo/SwaggerApplicationTests.java index 6818873be..f401dacdb 100644 --- a/framework/spring/swagger/src/test/java/org/laidu/learn/swagger/demo/SwaggerApplicationTests.java +++ b/framework/spring/swagger/src/test/java/org/laidu/learn/swagger/demo/SwaggerApplicationTests.java @@ -1,16 +1,21 @@ package org.laidu.learn.swagger.demo; +import lombok.extern.slf4j.Slf4j; import org.junit.Test; import org.junit.runner.RunWith; -import org.springframework.boot.test.context.SpringBootTest; import org.springframework.test.context.junit4.SpringRunner; +import java.util.Optional; + +@Slf4j @RunWith(SpringRunner.class) -@SpringBootTest +//@SpringBootTest public class SwaggerApplicationTests { @Test public void contextLoads() { + + Optional.ofNullable(null).map(String::valueOf).orElse(""); } } diff --git a/pom.xml b/pom.xml index c2a7ef3e4..dbaf0e3b1 100644 --- a/pom.xml +++ b/pom.xml @@ -72,8 +72,7 @@ github - ${env.GITHUB_OAUTH_TOKEN} - + ${env.GITHUB_OAUTH_TOKEN} ${project.artifactId} 0.12 1.7 From 488fd0ce506875a43760d611c17184f5eaa7af33 Mon Sep 17 00:00:00 2001 From: ztc Date: Mon, 9 Jul 2018 19:13:51 +0800 Subject: [PATCH 114/417] =?UTF-8?q?=E5=AE=8C=E6=88=90=20@MethodMonitor?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/site/markdown/chain-responsibility.md | 20 ++++---- .../processor/MethodMonitorProcessor.java | 51 ++++++++++++++++--- .../learn/spring/aop/service/UserService.java | 3 ++ .../aop/service/impl/UserServiceImpl.java | 16 ++++-- .../processor/MethodMonitorProcessorTest.java | 4 ++ .../resources/application-template.properties | 2 +- .../swagger/demo/config/SwaggerConfig.java | 3 +- .../src/test/resources/www.baidu.com.har | 4 +- .../curl/crawler-request-example.xml | 8 +-- .../resources/xml/crawler-request-example.xml | 8 +-- 10 files changed, 88 insertions(+), 31 deletions(-) diff --git a/design-pattern/java-design-pattern-learn/src/site/markdown/chain-responsibility.md b/design-pattern/java-design-pattern-learn/src/site/markdown/chain-responsibility.md index 6ef84c5f3..e81fab87b 100644 --- a/design-pattern/java-design-pattern-learn/src/site/markdown/chain-responsibility.md +++ b/design-pattern/java-design-pattern-learn/src/site/markdown/chain-responsibility.md @@ -77,16 +77,16 @@ //责任链中的下一个元素 private AbstractLogger nextLogger; - public void logMessage(int level, String message) { + public void logMessage(int level, String exceptionStackTrace) { if (this.level == level) { - write(message); + write(exceptionStackTrace); } if (nextLogger != null) { - nextLogger.logMessage(level, message); + nextLogger.logMessage(level, exceptionStackTrace); } } - abstract protected void write(String message); + abstract protected void write(String exceptionStackTrace); } > ConcreteLoggerDebug: @@ -98,8 +98,8 @@ super(DEBUG); } @Override - protected void write(String message) { - log.debug("-*--*--*--*- {} -*--*--*--*--",message); + protected void write(String exceptionStackTrace) { + log.debug("-*--*--*--*- {} -*--*--*--*--",exceptionStackTrace); } } @@ -112,8 +112,8 @@ super(ERROR); } @Override - protected void write(String message) { - log.error("-*--*--*--*- {} -*--*--*--*--",message); + protected void write(String exceptionStackTrace) { + log.error("-*--*--*--*- {} -*--*--*--*--",exceptionStackTrace); } } @@ -126,8 +126,8 @@ super(INFO); } @Override - protected void write(String message) { - log.info("-*--*--*--*- {} -*--*--*--*--",message); + protected void write(String exceptionStackTrace) { + log.info("-*--*--*--*- {} -*--*--*--*--",exceptionStackTrace); } } diff --git a/framework/spring/spring-aop/src/main/java/org/laidu/learn/spring/aop/annotation/processor/MethodMonitorProcessor.java b/framework/spring/spring-aop/src/main/java/org/laidu/learn/spring/aop/annotation/processor/MethodMonitorProcessor.java index 05d88bd11..c917611b8 100644 --- a/framework/spring/spring-aop/src/main/java/org/laidu/learn/spring/aop/annotation/processor/MethodMonitorProcessor.java +++ b/framework/spring/spring-aop/src/main/java/org/laidu/learn/spring/aop/annotation/processor/MethodMonitorProcessor.java @@ -1,11 +1,14 @@ package org.laidu.learn.spring.aop.annotation.processor; +import com.alibaba.fastjson.JSON; +import jodd.exception.ExceptionUtil; import lombok.Data; import lombok.extern.slf4j.Slf4j; import org.aspectj.lang.ProceedingJoinPoint; import org.aspectj.lang.annotation.Around; import org.aspectj.lang.annotation.Aspect; import org.aspectj.lang.annotation.Pointcut; +import org.aspectj.lang.reflect.CodeSignature; import org.laidu.learn.spring.aop.annotation.MethodMonitor; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.ApplicationContext; @@ -14,6 +17,7 @@ import org.springframework.util.StopWatch; import java.io.Serializable; +import java.util.Optional; /** * 注解processor @@ -58,20 +62,44 @@ public Object build(ProceedingJoinPoint joinPoint) throws Throwable { Object proceed = null; MethodMonitorProcessor.MonitorBaseData data = new MethodMonitorProcessor.MonitorBaseData(); + CodeSignature codeSignature = (CodeSignature) joinPoint.getSignature(); + + + StringBuilder argsString = new StringBuilder(); + + for (int i = 0; i < codeSignature.getParameterNames().length; i++) { + + Object arg = joinPoint.getArgs()[i]; + argsString + .append(codeSignature.getParameterNames()[i]) + .append(" : ") + .append(arg.getClass().isPrimitive() ? String.valueOf(arg) : JSON.toJSONString(arg)) + .append("; "); + } + + data.setArgs(argsString.toString()); + watch.start(); try { proceed = joinPoint.proceed(); + + Optional.ofNullable(proceed) + .ifPresent(proceed1 -> data.setResult(proceed1.getClass().isPrimitive() ? String.valueOf(proceed1) : JSON.toJSONString(proceed1))); + data.setSuccess(true); data.setElapsedTime(watch.getTotalTimeMillis()); data.setMethodSignature(joinPoint.getSignature().toLongString()); } catch (Exception ex) { - + data.setExceptionClass(ex.getClass().getTypeName()); + data.setExceptionStackTrace(ExceptionUtil.exceptionStackTraceToString(ex)); throw ex; } finally { watch.stop(); log.warn("{} with args {} executed in {} ms", joinPoint.getSignature(), joinPoint.getArgs(), watch.getTotalTimeMillis()); + + log.info("data: {}", data); } return proceed; @@ -94,11 +122,6 @@ public static class MonitorBaseData implements Serializable { */ private long elapsedTime; - /** - * message - */ - private String message; - /** * 方法签名 */ @@ -109,6 +132,16 @@ public static class MonitorBaseData implements Serializable { */ private String methodKey; + /** + * 方法参数 + */ + private String args; + + /** + * 执行结果 + */ + private String result; + /** * 是否成功 * 1 成功、0 失败 @@ -120,6 +153,12 @@ public static class MonitorBaseData implements Serializable { */ private String exceptionClass; + /** + * exceptionStackTrace + */ + private String exceptionStackTrace; + + public void setSuccess(boolean success) { this.success = success ? 1 : 0; } diff --git a/framework/spring/spring-aop/src/main/java/org/laidu/learn/spring/aop/service/UserService.java b/framework/spring/spring-aop/src/main/java/org/laidu/learn/spring/aop/service/UserService.java index 2391bc0ae..d5dddc5e8 100644 --- a/framework/spring/spring-aop/src/main/java/org/laidu/learn/spring/aop/service/UserService.java +++ b/framework/spring/spring-aop/src/main/java/org/laidu/learn/spring/aop/service/UserService.java @@ -12,6 +12,9 @@ public interface UserService { * @param name */ void addUser(String name); + default void addUser(String name, int age){ + System.out.println(String.format("name: %s, age : %d", name, age)); + } /** * @param name diff --git a/framework/spring/spring-aop/src/main/java/org/laidu/learn/spring/aop/service/impl/UserServiceImpl.java b/framework/spring/spring-aop/src/main/java/org/laidu/learn/spring/aop/service/impl/UserServiceImpl.java index 1529d445d..ddec0afc7 100644 --- a/framework/spring/spring-aop/src/main/java/org/laidu/learn/spring/aop/service/impl/UserServiceImpl.java +++ b/framework/spring/spring-aop/src/main/java/org/laidu/learn/spring/aop/service/impl/UserServiceImpl.java @@ -4,7 +4,6 @@ import org.laidu.learn.spring.aop.annotation.MethodMonitor; import org.laidu.learn.spring.aop.service.UserService; import org.springframework.stereotype.Service; -import org.springframework.web.bind.annotation.GetMapping; /** * Created by tiancai.zang @@ -17,17 +16,27 @@ public class UserServiceImpl implements UserService { @Override - @MethodMonitor(logic = UserServiceLogLogic.class) +// @MethodMonitor(logic = UserServiceLogLogic.class) + @MethodMonitor public void addUser(String name) { log.info("addUser: {}", name); } + @Override + @MethodMonitor + public void addUser(String name, int age) { + log.info("name: {}, age : {}", name, age); + throw new NullPointerException(); + } + + @Override public void removeUser(String name) { log.info("removeUser: {}", name); } @Override + @MethodMonitor public String getUsername(String name) { log.info("getUsername: {}", name); return name; @@ -37,7 +46,8 @@ public String getUsername(String name) { public String getUsernameFromSelf(String name) { log.info("getUsernameFromSelf: {}", name); return getUsername(name); - }@GetMapping("/") + } + @MethodMonitor public String home(){ return "hello"; diff --git a/framework/spring/spring-aop/src/test/java/org/laidu/learn/spring/aop/annotation/processor/MethodMonitorProcessorTest.java b/framework/spring/spring-aop/src/test/java/org/laidu/learn/spring/aop/annotation/processor/MethodMonitorProcessorTest.java index 36ef49241..9d051c437 100644 --- a/framework/spring/spring-aop/src/test/java/org/laidu/learn/spring/aop/annotation/processor/MethodMonitorProcessorTest.java +++ b/framework/spring/spring-aop/src/test/java/org/laidu/learn/spring/aop/annotation/processor/MethodMonitorProcessorTest.java @@ -8,6 +8,8 @@ import org.springframework.boot.test.context.SpringBootTest; import org.springframework.test.context.junit.jupiter.SpringExtension; +import static org.junit.jupiter.api.Assertions.assertThrows; + @Slf4j @ExtendWith(SpringExtension.class) @SpringBootTest @@ -20,5 +22,7 @@ class MethodMonitorProcessorTest { void logExecutionTime() { userService.addUser("xiaoming"); + + assertThrows(NullPointerException.class, () -> userService.addUser("小明", 123)); } } \ No newline at end of file diff --git a/framework/spring/spring-boot/spring-boot-app/src/main/resources/application-template.properties b/framework/spring/spring-boot/spring-boot-app/src/main/resources/application-template.properties index 89e972605..716894fa4 100644 --- a/framework/spring/spring-boot/spring-boot-app/src/main/resources/application-template.properties +++ b/framework/spring/spring-boot/spring-boot-app/src/main/resources/application-template.properties @@ -291,7 +291,7 @@ spring.groovy.template.view-names= # White list of view names that can be resolv # SPRING HATEOAS (HateoasProperties) spring.hateoas.use-hal-as-default-json-media-type=true # Whether application/hal+json responses should be sent to requests that accept application/json. -# HTTP message conversion +# HTTP exceptionStackTrace conversion spring.http.converters.preferred-json-mapper= # Preferred JSON mapper to use for HTTP message conversion. By default, auto-detected according to the environment. # HTTP encoding (HttpEncodingProperties) diff --git a/framework/spring/swagger/src/main/java/org/laidu/learn/swagger/demo/config/SwaggerConfig.java b/framework/spring/swagger/src/main/java/org/laidu/learn/swagger/demo/config/SwaggerConfig.java index e9b030167..ed60bda33 100644 --- a/framework/spring/swagger/src/main/java/org/laidu/learn/swagger/demo/config/SwaggerConfig.java +++ b/framework/spring/swagger/src/main/java/org/laidu/learn/swagger/demo/config/SwaggerConfig.java @@ -1,6 +1,7 @@ package org.laidu.learn.swagger.demo.config; import org.springframework.boot.autoconfigure.condition.ConditionalOnBean; +import org.springframework.boot.autoconfigure.condition.ConditionalOnExpression; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import springfox.documentation.builders.PathSelectors; @@ -16,7 +17,7 @@ */ @Configuration @EnableSwagger2 -//@ConditionalOnExpression("'${spring.profiles.active}' == 'default' || '${spring.profiles.active}' == 'dev' || '${spring.profiles.active}' == 'test'") +@ConditionalOnExpression("'${spring.profiles.active}' == 'default' || '${spring.profiles.active}' == 'dev' || '${spring.profiles.active}' == 'test'") public class SwaggerConfig { @Bean @ConditionalOnBean(SwaggerConfig.class) diff --git a/production-component/common-util/src/test/resources/www.baidu.com.har b/production-component/common-util/src/test/resources/www.baidu.com.har index eb3a45bb6..b68e8d8d0 100644 --- a/production-component/common-util/src/test/resources/www.baidu.com.har +++ b/production-component/common-util/src/test/resources/www.baidu.com.har @@ -274,7 +274,7 @@ "size": 114831, "mimeType": "text/html", "compression": 0, - "text": "\n\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\t\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\t\r\n \r\n\t\t\t \r\n\t\r\n\t\t\t \r\n\t\r\n\t\t\t \r\n\t\r\n\t\t\t \r\n\t\t\t \r\n\r\n\t\r\n \r\n\t\t\t \r\n\t\r\n\t\t\t \r\n\t\r\n\t\t\t \r\n\t\r\n\t\t\t \r\n\t\t\t \r\n\r\n\r\n\r\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\r\n\n\n\n \n \n \n\t\n \n \n \n \n\t\n\t\n\t\n\t\n\t\n\t\n\t\n\t\n\t\n\t\n \n 百度一下,你就知道\n \r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\n \r\n\r\n\r\n\r\n\n \n\n\n\n\t\n

    \n \r\n\n\n \r\n\r\n\r\n\n\r\n\r\n\r\n\r\n\n \r\n\r\n
    \r\n\t
    \r\n\t\t
    \r\n\t\t\t
    \r\n\t\t\t
    \r\n\t\t\t\t\t

    手机百度

    \r\n\t\t\t
    \r\n\t\t
    \r\n\t
    \r\n
    \r\n\n
    \n
    \n
    \n
    \n \n \n \n \r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\n\n\n\n\r\n\r\n\r\n\n\r\n" + "text": "\n\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\t\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\t\r\n \r\n\t\t\t \r\n\t\r\n\t\t\t \r\n\t\r\n\t\t\t \r\n\t\r\n\t\t\t \r\n\t\t\t \r\n\r\n\t\r\n \r\n\t\t\t \r\n\t\r\n\t\t\t \r\n\t\r\n\t\t\t \r\n\t\r\n\t\t\t \r\n\t\t\t \r\n\r\n\r\n\r\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\r\n\n\n\n \n \n \n\t\n \n \n \n \n\t\n\t\n\t\n\t\n\t\n\t\n\t\n\t\n\t\n\t\n \n 百度一下,你就知道\n \r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\n \r\n\r\n\r\n\r\n\n \n\n\n\n\t\n
    \n \r\n\n\n \r\n\r\n\r\n\n\r\n\r\n\r\n\r\n\n \r\n\r\n
    \r\n\t
    \r\n\t\t
    \r\n\t\t\t
    \r\n\t\t\t
    \r\n\t\t\t\t\t

    手机百度

    \r\n\t\t\t
    \r\n\t\t
    \r\n\t
    \r\n
    \r\n\n
    \n
    \n
    \n
    \n \n \n \n \r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\n\n\n\n\r\n\r\n\r\n\n\r\n" }, "redirectURL": "", "headersSize": 627, @@ -1417,7 +1417,7 @@ "content": { "size": 254976, "mimeType": "application/javascript", - "text": "function addEV(t,e,n){window.attachEvent?t.attachEvent(\"on\"+e,n):window.addEventListener&&t.addEventListener(e,n,!1)}function _aMC(t){for(var e=t,n=-1;e=e.parentNode;)if(n=parseInt(e.getAttribute(\"id\")),n>0)return n}function al_c(t){for(;\"TABLE\"!=t.tagName;)t=t.parentNode;return t.getAttribute(\"id\")}function al_c2(t,e){for(;e--;)for(;\"TABLE\"!=(t=t.parentNode).tagName;);return t.getAttribute(\"id\")}function c(t){var e=t.p1;if(!(\"alop\"!=t.fm||\"rsv_xpath\"in t||e&&\"6677\"==G(e).getAttribute(\"srcid\")))return!0;\n!e||\"p5\"in t||(t.p5=e);var n=window.document.location.href,o=\"\",i=\"\",r=\"\",s=window[\"BD_PS_C\"+(new Date).getTime()]=new Image;for(v in t){switch(v){case\"title\":i=t[v].replace(/<[^<>]+>/g,\"\"),i&&i.length>100&&(i=i.substring(0,100)),i=encodeURIComponent(i);break;case\"mu\":case\"url\":i=escape(t[v]);break;default:i=t[v]}o+=\"&\"+v+\"=\"+i}if(!(\"mu\"in t))try{\"p2\"in t&&G(t.p1).getAttribute(\"mu\")&&\"pl\"!=t.fm&&(r=\"&mu=\"+escape(G(t.p1).getAttribute(\"mu\")))}catch(a){}if(window.bds&&bds.comm){var c=bds.comm.ubsurl+\"?q=\"+bds.comm.queryEnc+o+r+\"&rsv_sid=\"+bds.comm.sid+\"&cid=\"+bds.comm.cid+\"&qid=\"+bds.comm.queryId+\"&t=\"+(new Date).getTime();\nif(bds.comm.inter&&(c=c+\"&rsv_inter=\"+bds.comm.inter),bds.comm.seinfo&&bds.comm.seinfo.rsv_pstg&&(c=c+\"&rsv_pstg=\"+bds.comm.seinfo.rsv_pstg),bds.comm.cftime&&0!=bds.comm.cftime&&(c=c+\"&rsv_cftime=\"+bds.comm.cftime),c+=bds.comm.resultPage?\"&rsv_iorr=1\":\"&rsv_iorr=0\",bds.comm.tn&&(c=c+\"&rsv_tn=\"+bds.comm.tn),bds.comm.indexSid&&(c+=\"&rsv_isid=\"+bds.comm.indexSid),bds.comm.lastVoiceQuery&&(c+=\"&rsv_lavo=\"+encodeURIComponent(bds.comm.lastVoiceQuery)),Cookie.get(\"ispeed\")&&(c+=\"&rsv_ispeed=\"+Cookie.get(\"ispeed\")),/ssl_sample/.test(location.href)){var d=location.href.match(/ssl_sample=[^=&]+/i);\nc+=\"&rsv_\"+d[0]}if(/ssl_s=/.test(location.href)){var d=location.href.match(/ssl_s=[^=&]+/i);c+=\"&rsv_\"+d[0]}c+=\"&rsv_ssl=\"+(\"https:\"===location.protocol?1:0),c+=\"&path=\"+encodeURIComponent(n),c+=\"&rsv_did=\"+(bds.comm.did?bds.comm.did:\"\"),s.src=c}return!0}function TagQ(t,e){return e.getElementsByTagName(t)}function h(t){t.style.behavior=\"url(#default#homepage)\",t.setHomePage(bds.comm.domain);var e=window[\"BD_PS_C\"+(new Date).getTime()]=new Image;e.src=bds.comm.ubsurl+\"?fm=hp&tn=\"+bds.comm.tn+\"&t=\"+(new Date).getTime()\n}function setHeadUrl(t){var e=G(\"kw\").value;e=encodeURIComponent(e);var n=t.href;n=n.replace(new RegExp(\"(\"+t.getAttribute(\"wdfield\")+\"=)[^&]*\"),\"$1\"+e),t.href=n}function G(t){return document.getElementById(t)}function ns_c_pj(t,e){var n=encodeURIComponent(window.document.location.href),o=\"\",i=\"\",r=\"\",s=bds&&bds.comm&&bds.comm.did?bds.comm.did:\"\";wd=bds.comm.queryEnc,nsclickDomain=bds&&bds.util&&bds.util.domain?bds.util.domain.get(\"http://nsclick.baidu.com\"):\"http://nsclick.baidu.com\",img=window[\"BD_PS_C\"+(new Date).getTime()]=new Image,src=\"\";\nfor(v in t){switch(v){case\"title\":i=encodeURIComponent(t[v].replace(/<[^<>]+>/g,\"\"));break;case\"url\":i=encodeURIComponent(t[v]);break;default:i=t[v]}o+=v+\"=\"+i+\"&\"}if(r=\"&mu=\"+n,src=nsclickDomain+\"/v.gif?pid=201&\"+(e||\"\")+o+\"path=\"+n+\"&wd=\"+wd+\"&rsv_sid=\"+(bds.comm.ishome&&bds.comm.indexSid?bds.comm.indexSid:bds.comm.sid)+\"&rsv_did=\"+s+\"&t=\"+(new Date).getTime(),\"undefined\"!=typeof Cookie&&\"undefined\"!=typeof Cookie.get)Cookie.get(\"H_PS_SKIN\")&&\"0\"!=Cookie.get(\"H_PS_SKIN\")&&(src+=\"&rsv_skin=1\");else{var a=\"\";\ntry{a=parseInt(document.cookie.match(new RegExp(\"(^| )H_PS_SKIN=([^;]*)(;|$)\"))[2])}catch(c){}a&&\"0\"!=a&&(src+=\"&rsv_skin=1\")}return img.src=src,!0}function ns_c(t,e){return e===!0?ns_c_pj(t,\"pj=www&rsv_sample=1&\"):ns_c_pj(t,\"pj=www&\")}function escapeHTML(t){return t.replace(/&/g,\"&\").replace(//g,\">\").replace(/ /g,\" \").replace(/\"/g,\""\").replace(/'/g,\"'\")}function initPreload(t){function e(){Cookie.set(\"ISSW\",\"1\",null,null,new Date((new Date).getTime()+3e5))\n}function n(t,e){e=e||3,Cookie.set(\"ISWR\",t,null,null,new Date((new Date).getTime()+1e3*e))}function o(t){t&&\"string\"==typeof t&&(t=$.parseJSON(t)),t&&t.length&&$.each(t,function(t,e){if(0===e.indexOf(ne.protocol)){var n=new Image;n.src=e}})}function i(t){return $.trim(t).replace(/\\s+/g,\" \")}function r(t){if(\"string\"==typeof t){var e,n=0;for(e=0;e-1?(o=t.split(\"?\"),i=o[1]):i=t,e=i.indexOf(\"&\")>-1?i.split(\"&\"):new Array(i);\nfor(var s=0;s-1?e[s]:e[s]+\"=\",n=e[s].split(\"=\"),r[n[0]]=decodeURIComponent(n[1].replace(/\\+/g,\" \"))}catch(a){}return r}function a(t){function e(t){if(document.all)$(\"style[data-for='result']\").get(0).styleSheet.cssText+=t;else{var e=document.createElement(\"style\");e.type=\"text/css\",e.appendChild(document.createTextNode(t)),e.setAttribute(\"data-for\",\"result\"),document.getElementsByTagName(\"HEAD\")[0].appendChild(e)}}function n(){B.css({filter:\"progid:DXImageTransform.Microsoft.Alpha(Opacity=95)\",opacity:.95}),H||(e(\".slowmsg{z-index:301;background-color:#fff;border:1px solid #f0f0f0;position:fixed;_position:absolute;top:144px;left:212px;height:95px;width:360px;box-shadow:0 0 5px rgba(0,0,0,0.05)}.slowmsg .ball{width:40px;margin:41px auto 0;position:relative;}.slowmsg .b{left:20px;position:absolute;width:10px;height:10px;-moz-border-radius: 50%;-webkit-border-radius: 50%;border-radius: 50%;}\"),H=$('
    '),H.find(\".b\").each(function(t,e){var n=[[0,40],[20,20],[40,0]][t],o=[\"rgb(55,137,250)\",\"rgb(99,99,99)\",\"rgb(235,67,70)\"],i=0;\n$(e).css({\"background-color\":o[t]}),function r(){return F?($(e).animate({left:n[i%2]},{duration:800,easing:\"swing\",progress:function(n,r){r>=.5&&$(e).css({\"background-color\":o[(i+t)%3]})},complete:function(){r()}}),void i++):void setTimeout(r,400)}()})),H.appendTo(Ye),ns_c({pj_name:\"loading_msg\"})}function o(){var t,e=(new Date).getTime();Cookie.set(\"rsv_jmp_slow\",e),Cookie.set(\"WWW_ST\",e,null,null,new Date(e+3e4)),t=ne.href+(ne.href.indexOf(\"?\")>0?\"&\":\"?\")+\"rsv_jmp=slow\",ne.replace(t)}if(!V){var t=$.extend({top:93,\"z-index\":300},t),i=$(window).height();\nB||(B=$(\"
    \")),B.css({filter:\"progid:DXImageTransform.Microsoft.Alpha(Opacity=30)\",opacity:.3,position:\"absolute\",background:\"#fff\",\"z-index\":t[\"z-index\"],top:t.top+\"px\",left:\"0\"}),V=!0,B.width(Ye.width()),B.height(Math.max(i,Ye.height())-t.top),B.appendTo(Ye),$(window).scrollTop(),F=setTimeout(n,3e3),G=setTimeout(o,7e3),Q=function(){F&&(clearTimeout(F),F=setTimeout(n,3e3)),G&&(clearTimeout(G),G=setTimeout(o,7e3))}}}function d(){B&&V&&(V=!1,B.remove(),H&&H.remove(),F&&(clearTimeout(F),F=!1),W&&W.remove(),G&&(clearTimeout(G),G=!1))\n}function l(t,e,n){n||(n=0);var o=t.length;for(0>n&&(n=o+n);o>n;n++)if(t[n]===e)return n;return-1}function u(t,e,n){var o=e.find(\"script:not([src])\"),i=0,r=$.globalEval;$.globalEval=function(t){window.currentScriptElem=o[i],i++;try{r.apply($,arguments)}catch(e){window.console&&console.debug&&(console.debug(t),console.debug(e))}},\"insertBefore\"==n?e.insertBefore(t):t.append(e),window.currentScriptElem=void 0,$.globalEval=r}function m(t){try{t()}catch(e){window.console&&console.debug&&console.debug(e),J(e.toString())\n}}function p(t,e){function n(t){if(\"object\"==typeof t){var e={};for(a in t)t.hasOwnProperty(a)&&(e[a]=t[a])}else e=t;return e}if(!p.__init){p.__init=!0;var o=[\"wd\",\"pn\",\"nojc\",\"cl\",\"cq\",\"srcid\",\"gpc\",\"tfflag\",\"si\",\"sl_lang\",\"rsv_srlang\",\"rqlang\"],i=[\"wd\",\"cl\",\"ct\",\"tn\",\"rn\",\"ie\",\"f\",\"lm\",\"si\",\"gpc\",\"tfflag\",\"usm\",\"z\",\"ch\",\"sts\",\"vit\",\"dsp\",\"trh\",\"trb\",\"tre\",\"la\",\"lo\",\"st\",\"nojc\",\"haobd\",\"rtt\",\"bsst\",\"gvideo\",\"__eis\",\"__eist\",\"oq\",\"fenlei\",\"sid\",\"rsv_idx\",\"rsv_stat\",\"rsv_bp\",\"rqlang\"],r=[\"w\",\"word\"];\np.prototype.clone=function(t){var e=new p(n(this.params));if(\"object\"==typeof t)for(var o in t)t.hasOwnProperty(o)&&l(i,o)>=0&&e.p(o,t[o]);return e},p.prototype.h=function(t){this.header_params=this.header_params||{};for(var e in t)this.header_params[e]=t[e];return this},p.prototype.buildHeaders=function(t){t&&this.setHeader(t);var e={};for(var n in this.header_params)if(\"object\"==typeof this.header_params[n]){var o=[];for(var i in this.header_params[n]){var r=this.header_params[n][i];r instanceof Array&&(r=r.join(\"|\")),o.push(i+\"=\"+r)\n}e[n]=o.join(\"&\")}else e[n]=this.header_params[n];return e},p.prototype.buildSearchUrl=function(t){return ne.protocol+\"//\"+ne.host+ne.pathname+ne.search+\"#\"+this.buildQueryString(t)},p.prototype.buildSyncSearchUrl=function(t){return ne.protocol+\"//\"+ne.host+\"/s?\"+this.buildQueryString(t)},p.prototype.buildQueryString=function(t){var e=n(this.params);if(\"object\"==typeof t)for(var o in t)t.hasOwnProperty(o)&&(e[o]=t[o]);var i=\"\";e.wd=$.limitWd(e.wd);for(param in e)param&&e.hasOwnProperty(param)&&\"\"!==e[param]&&(i+=param+\"=\"+encodeURIComponent(e[param]).replace(/'/g,\"%27\")+\"&\");\nreturn i.substr(0,i.length-1)},p.prototype.equals=function(t){if(!t||!t.p)return!1;for(var e=0;e=0&&(t=\"wd\"),void 0===e?this.params[t]:(this.params[t]=e,this)},p.prototype.hashCode=function(){var t=[];if(!this.p(\"wd\"))return\"\";for(var e=0;e_.st&&_.net-_.st-w.cus_srv>0?_.net-_.st-w.cus_srv:1,w.cus_tti2=_.dom>_.st?_.dom-_.st:1,w.cus_frdom=_.dom-_.pt,w.cus_fs=_.fs>_.st?_.fs-_.st:w.cus_tti2,w.cus_frext=w.cus_fs-w.cus_tti2}function i(t){var e=\"\";for(var n in t)n&&t.hasOwnProperty(n)&&\"\"!==t[n]&&(e+=\"&\"+n+\"=\"+encodeURIComponent(t[n]));return e}function r(t){var t=[];for(var e in k)t.push(k[e]);\nvar n=T=$.when.apply($,t);T.always(function(){n===T&&m()})}function s(){var t=Array.apply(null,arguments);if(!(!t.length>0))for(var e=0;e.51&&.52>t;S=S||bds.comm.bfe_sample;var s=S&&t>.6&&.9>t;if(t>.51&&.52>t||e.test(bds.comm.sid)&&t>0&&.2>t||bds.comm.intrSid||s){e.test(bds.comm.sid)&&(r?n(\"issam\",2):n(\"issam\",1)),s&&(n(\"issam\",3),n(\"bfesam\",bds.comm.bfe_sample)),o(),h(C),g(C),n(\"srvInfo\",f()),n(\"sysv\",navigator.appMinorVersion),a(),x.fire();var c=\"//www.baidu.com/nocache/fesplg/s.gif?log_type=sp\",d=\"\";\nd+=i(v)+i(w);var l=c+d,u=new Image,m=\"_LOG_\"+(new Date).getTime();u.onload=function(){delete window[m]},window[m]=u,u.src=l}}function p(t){C=t,t.find(\"img\").one(\"load\",function(){var t=$(this).offset(),o=t.top,i=t.left,r=\"\";if(I>o&&o>0){e(\"fs\");var s=_.fs-_.dom;y.push(o+\"_\"+i+\"_\"+s),r=$(this).attr(\"data-src\")||/^http/.test($(this).attr(\"src\"))?$(this).attr(\"data-src\")||$(this).attr(\"src\"):\"base64\",n(\"ic_lis\",r)}})}function f(){var t,e,n=$.parseJSON(bds.comm.speedInfo),o=[];for(var i in n){if(t=n[i],e=t.ModuleId+\"_\"+t.TimeCost+\"_\"+t.TimeSelf+\"_\"+t.Idc,t.hasOwnProperty(\"SubProcess\"))for(var r in t.SubProcess)e+=\",\"+t.SubProcess[r].ProcessId+\"_\"+t.SubProcess[r].TimeCost+\"_\"+t.SubProcess[r].isHitCache+\"_\"+t.SubProcess[r].Idc;\no.push(e)}return encodeURIComponent(o.join(\"|\"))}function h(t){for(var e=0,o=t.find(\"img\"),i=t.find(\"#content_left\").find(\"img\"),r=0,s=0,a=0;as&&s>0&&e++;n(\"cus_ic\",o.length),n(\"cus_extic\",e),n(\"cus_extlic\",r),n(\"cus_icl\",i.length),n(\"cus_icr\",t.find(\"#content_right\").find(\"img\").length),n(\"img_info\",y.join(\",\")),n(\"psize\",t.html().length)}function g(t){var e={},o=[],i=t.find(\"#content_left,#con-ar\").children(\"*[tpl]\"),r=\"\";if(i.length>0)for(var s=0;s0&&n(\"tplp\",o.join(\"|\"))}function b(t){x.add(t)}var v={product_id:45,page_id:317,page_type:0},w={},_={st:0,pt:0,net:0,dom:0,fs:0},y=[],x=$.Callbacks(),k={},T=null,C=null,S=null,I=600;return l(),{trigger:d,mark:e,setParam:n,onSendlog:b,bindImgLoad:p,destroy:c,init:u}}function h(t,e){t&&(e=$.extend(t.log,e))}function g(){if(bds.comm.seinfo){bds.comm.seinfo.rsv_pre=encodeURIComponent(b()),bds.comm.seinfo.rsv_reh=reh_rec(),bds.comm.seinfo.rsv_scr=scr_rec();var t=null;if(bds&&bds.comm&&bds.comm.personalData)try{\"string\"==typeof bds.comm.personalData&&(bds.comm.personalData=$.parseJSON(bds.comm.personalData)),t=bds.comm.personalData?bds.comm.personalData.fullSkinName&&bds.comm.personalData.fullSkinName.value:null\n}catch(e){t=null}if(t&&(bds.comm.seinfo.rsv_skin=t),bds.comm.seinfo.rsv_psid=$.getCookie(\"BIDUPSID\"),bds.comm.seinfo.rsv_pstm=$.getCookie(\"PSTM\"),bds.comm.seinfo.rsv_idc=function(){var t=bds.comm.speedInfo||[];try{t=$.parseJSON(t)}catch(e){t=[]}for(var n=0,o=t.length;o>n;n++)if(9540==t[n].ModuleId)return t[n].Idc||\"\";return\"\"}(),c(bds.comm.seinfo),\"ON\"===bds.comm._se_click_track_flag){var n=new Image,o=\"//www.baidu.com/s?wd=\"+bds.comm.queryEnc+\"&qid=\"+bds.comm.queryId+\"<s=91\";n.src=o}}!function(){var t=Math.random(),e=function(){function t(){var t=[],o=[],i={};\nfor(var r in n)!function(e){var r=\"_SSL_LOG_\"+e+\"_\"+ +new Date,s=new Image,a=new Date;i[e]=$.Deferred(),o.push(i[e]),s.onload=function(){t.push(e+\"_success=\"+(new Date-a)),i[e].resolve(),delete window[r]},s.onerror=function(){t.push(e+\"_error=\"+(new Date-a)),i[e].resolve(),delete window[r]},s.src=n[e]}(r);var s=$.when.apply($,o);s.always(function(){var n=\"//www.baidu.com/nocache/fesplg/s.gif?log_type=hm&type=ssl&\",o=t.join(\"&\"),i=new Image,r=\"_HM_LOG_\"+(new Date).getTime();i.onload=function(){delete window[r]\n},window[r]=i,i.src=n+o+\"&_tt=\"+e})}var e=+new Date,n={gt1:\"https://gt1.baidu.com/nocache/imgdata/sp613.gif?t=\"+e,gt2:\"https://gt2.baidu.com/nocache/imgdata/sp613.gif?t=\"+e};setTimeout(t,1e3)};t>.1&&.11>t&&e()}()}function b(){return Le.length}function v(t){$(document).delegate(\"a\",\"mousedown\",function(){return function(){var e=$(this);w(e,t)}}())}function w(t,e){var n,o=e.prefix,i=t.attr(\"href\");if(o&&i&&0==i.indexOf(o)&&(i=i.substring(o.length)),!o&&i){var r=i.match(/^http:\\/\\/[^\\/]+/);if(!r)return;\no=r[0],i=i.replace(/^http:\\/\\/[^\\/]+/,\"\")}if(i&&(n=i.match(/^\\/*(link|baidu.php)\\?(.*)$/),n=i.match(e.regex)),!(n&&n[2]&&n[2].match(/&(wd|word)=/))){if(i&&n){e.convertTable&&e.convertTable[n[1]]&&(n[1]=e.convertTable[n[1]]);var s=ie.getLinkParams(i);s&&(\"https:\"===ne.protocol&&/Chrome|Safari/.test(navigator.userAgent)&&(o=o.replace(/^http:\\/\\/www\\.baidu\\.com/,\"https://www.baidu.com\")),i=o+\"/\"+n[1]+\"?\"+n[2]+\"&\"+s,t.attr(\"href\",o+\"/\"+n[1]+\"?\"+n[2]+\"&\"+s),t.click(function(){window.PDC_ASYNC.setLinkData(\"click_t\",(new Date).getTime()),window.PDC_ASYNC.setLinkData(\"linkpreload\",$(this).attr(\"linkpreload\"))\n}))}return i}}function _(t){if(!window.__disable_is2||$.trim(t)!=$.trim($e.val())){if(Ze||!bds.comm.supportis)return void(ke&&ke.html(\"\"));if(0!=pageState&&!window.__disable_kw_tip)if(ke||(ke=$('
    ').insertBefore($e),ke.parent().click(function(t){var e=$e.get(0);if(t.target===e)return!0;e.focus();var n=e.value.length;if(document.selection){var o=e.createTextRange();o.moveStart(\"character\",n),o.collapse(),o.select()\n}else\"number\"==typeof e.selectionStart&&\"number\"==typeof e.selectionEnd&&(e.selectionStart=e.selectionEnd=n);return!1}),ke.get(0).onselectstart=function(){return!1}),ke.text(t),\"\"!=t){var e=$e.textWidth();ke.css({\"margin-left\":e+10+\"px\",\"max-width\":ke.parent().width()-e-14+\"px\"}).text(t),window.__disable_is2&&ke.css(\"z-index\",1),ke.show()}else ke.hide()}}function y(){Ze=!1}function x(){Ze=!0,ze&&ze.real_wd&&$.trim($e.val())?(_(ze.real_wd),k(ze)):(_(\"\"),k())}function k(t){var e=i($e.val());t&&e==t.real_wd&&$(\"#super_se_tip\").remove()\n}function T(t,e){var n=(new Date).getTime();if(e.force||h(e,{utime:(new Date).getTime()-qe}),!e||!e.loaded)return!1;\"string\"==typeof e.html&&(e.html=$(e.html)),$(e).trigger(\"swap_begin\"),m(function(){e.pdc.mark(\"pt\"),$(window).trigger(\"swap_begin\",[e,t]);var n=Ge&&Ge.getData();n&&(setTimeout(function(){e.pdc.setParam(\"ispeed\",Ge.monitor(n))},3e3),e.pdc.setParam(\"upm\",n.join(\",\")))}),m(function(){e.base64.restart();try{if(!e.base64_loaded){var t=$.parseJSON(e.html.find(\"#img_list\").text());e.base64.loadImg(t.right,t.left)\n}}catch(n){}e.base64.end()});var o=[$(window).scrollLeft(),$(window).scrollTop()];Ae.hide(),oldEnv=Me,Me=t,He=ze,ze=e,bds.comm.cur_disp_query=t.p(\"wd\"),S(),bds&&bds.se&&bds.se.certification&&bds.se.certification.data&&(bds.se.certification.data=[]),0==pageState&&N(t),m(function(){he()}),bds.clearReady(),Ae.empty();var i=e.html;if(X.use_cache_repeatedly&&(i=i.clone()),m(function(){i.find(\"#head_style\").children().removeAttr(\"data-for\").appendTo(\"head\")}),m(function(){$.globalEval(i.find(\"#head_script\").html())\n}),bds.comm&&bds.comm.jsversion&&\"006\"!=bds.comm.jsversion){var r=Me.buildSyncSearchUrl({jmp:\"jsver\",_vr:Math.random()});return void ne.replace(r)}m(function(){i.find(\"#content_script script\").each(function(t,e){$.globalEval($(e).html())})}),m(function(){var t=i.find(\"#s_tab\");if(t.size()){var e=$(\"#s_tab\");e.size()?e.replaceWith(t):t.insertBefore(Ae)}});var s=!1;!function(){var t=i.find(\"#con-at\"),n=$(\"#con-at\"),o=n.children().children();if(o.size())if(t.children().size()){var r=t.children().children();\no.attr(\"cq\")!=r.attr(\"cq\")||o.attr(\"srcid\")!=r.attr(\"srcid\")||e.force&&oldEnv&&oldEnv.equals(Me)||!Me.p(\"cq\")||!Me.p(\"srcid\")||1==Me.p(\"_trf\")?(n.remove(),$(window).trigger(\"top_result_removed\"),u(Ae,t,\"insertBefore\")):s=!0}else n.remove(),$(window).trigger(\"top_result_removed\");else t.children().size()&&u(Ae,t,\"insertBefore\")}();var a=i.find(\"#container\");if(e.pdc.bindImgLoad(a),u(Ae,a),!$(\"#footer\").size()){var c=i.find(\"#footer\").children();u(Ae,c)}m(function(){var t=(new Date).getTime();i&&$.globalEval(i.find(\"#jsMerge\").html()),h(e,{jsmergetime:(new Date).getTime()-t})\n}),bds&&bds.comm&&bds.comm.templateName==bds.comm.resTemplateName?bds.comm.seinfo&&(bds.comm.seinfo.rsv_tpfail=0):bds.comm.seinfo&&(bds.comm.seinfo.rsv_tpfail=1),0!=pageState&&bds&&bds.util&&bds.util.setContainerWidth&&bds.util.setContainerWidth(),document.title=t.p(\"wd\")+\"_百度搜索\",Ae.show(),d(),h(e,{domtime:(new Date).getTime()-n}),h(e,{waittime:(new Date).getTime()-Te}),e.pdc.mark(\"dom\"),$(window).trigger(\"swap_dom_ready\",[e,t]),window.__lazy_foot_js?setTimeout(function(){C(t,e,n)},0):C(t,e,n),s?window.scrollTo(o[0],o[1]):window.scrollTo(0,0),$(window).trigger(\"scroll\"),swap_wait=!1\n}function C(t,e,n){var o;n||(n=0),e&&(o=e.html),m(function(){_e.get(0).f.value=8}),m(function(){var t=(new Date).getTime();e&&e.base64&&(e.base64.setDomLoad(\"left\"),e.base64.setDomLoad(\"right\")),h(e,{base64time:(new Date).getTime()-t})}),$(\"#search\").find(\"form\").submit(function(){var t=$e;$e=$(this).find(\"[name='wd']\");var e=R.call(this);return $e=t,e}),m(function(){var t=(new Date).getTime();bds.doReady(),h(e,{bdstime:(new Date).getTime()-t})}),m(function(){var t=(new Date).getTime();o&&$.globalEval(o.find(\"#ecomScript\").html()),h(e,{ecomtime:(new Date).getTime()-t})\n}),m(function(){var t=(new Date).getTime();bds.se.tools&&(Ie&&clearTimeout(Ie),Ie=setTimeout(function(){bds.se.tools()},600)),bds&&bds.se&&bds.se.certification&&bds.se.certification.build&&(Se&&clearTimeout(Se),Se=setTimeout(function(){$(\".certification\").size()>0&&bds.se.certification.build.init()},1e3)),bds&&bds.se&&bds.se.safeTip&&(Ce&&clearTimeout(Ce),Ce=setTimeout(function(){$(\".unsafe_ico_new\").size()>0&&bds.se.safeTip.init()},1200)),h(e,{tiptime:(new Date).getTime()-t})}),m(function(){var t=(new Date).getTime();\nwindow.initResultClickLog(),h(e,{clicktime:(new Date).getTime()-t})}),m(function(){h(e,{rtime:(new Date).getTime()-n,used:1}),bds.comm.seinfo&&e&&(bds.comm.seinfo.rsv_pstg=e.type)}),m(function(){$(window).trigger(\"swap_end\",[e,t]),O(),qe=(new Date).getTime(),e&&e.pdc&&(e.pdc.mark(\"js\"),e.pdc.trigger(\"swap_end\"))})}function S(){m(function(){$.each(bds.comm.tips,function(t,e){e&&e.destroy&&e.destroy()}),$(\"#c-tips-container\").empty(),bds.comm.tips=[]}),m(function(){window.app&&window.app.dispose&&window.app.dispose()\n}),m(function(){bds.comm.resolveUnloadHandler()}),bds&&bds.se&&bds.se.certification&&bds.se.certification.data&&(bds.se.certification.data=[]),bds&&bds.se&&bds.se.userAction&&bds.se.userAction.destroy()}function I(){De&&Re&&(clearTimeout(De),De=setTimeout(Re,Z))}function D(t,e,n){return function(e){var o=$.extend({},e);if(t&&!t.confirm){bds.comm.cur_query=t.real_wd,!bds.comm.supportis&&t&&(n=t.pstg||0),t.confirm=!0,De=!1,Re=null;var i={};i.is_referer=oe,i.is_xhr=\"1\";var r=new p(s(ie.getQueryString()),!0);\nt.env.equals(r)||t.env.clone({wd:t.prw}).equals(r)||ie.setUrl(t.env),oe=ne.protocol+\"//\"+ne.host+ne.pathname+ne.search,t.seq?t.seq++:t.seq=1,t.pdc&&(20!=n&&bds.comm.supportis&&t.pdc.mark(\"st\"),t.pdc&&t.pdc.setParam&&t.pdc.setParam(\"cus_pstg\",n),t.force&&t.pdc.setParam(\"f4s\",1),t.pdc.trigger(\"confirm\"),window.PRE_CONN.startTimer()),m(function(){$(window).trigger(\"confirm\",[t,n])});var a=\"/s?ie=utf-8&csq=\"+t.seq+\"&pstg=\"+n+(o.tipConfirm?\"&_cktip=1\":\"\")+\"&mod=2\"+(bds.comm.supportis?\"&isbd=1\":\"\")+\"&cqid=\"+t.qid+\"&istc=\"+((new Date).getTime()-t.startTime)+\"&ver=\"+bds.comm.baiduis_verify+\"&chk=\"+t.chk+\"&isid=\"+ve+\"&\"+t.env.buildQueryString()+(t.force?\"&f4s=1\":\"\")+(\"function\"==typeof Ke?\"&_ck=\"+Ke(t.env.p(\"wd\")):\"\");\nif(bds.comm.indexSid&&(/9998_/.test(bds.comm.indexSid)&&\"https:\"===ne.protocol&&(bds.comm.indexSid=bds.comm.indexSid.replace(\"9998\",\"8499\")),a+=\"&rsv_isid=\"+bds.comm.indexSid),t.no_predict&&(a+=\"&isnop=\"+(1>=fe?0:1)),t&&t.pstg&&(a+=\"&isctg=\"+t.pstg),fe=0,Ue&&Ue.getRsvStatus)try{a+=\"&rsv_stat=\"+Ue.getRsvStatus(t.env.p(\"wd\"))}catch(c){}if(Fe.done(function(){Ue.getStat(\"rsv_sug6\")&&(a+=\"&rsv_sug6=\"+Ue.getStat(\"rsv_sug6\"),bds.comm.seinfo&&(bds.comm.seinfo.rsv_sug6=Ue.getStat(\"rsv_sug6\"))),Ue.getStat(\"rsv_sug7\")&&(a+=\"&rsv_sug7=\"+Ue.getStat(\"rsv_sug7\")),Ue.getStat(\"rsv_sug9\")&&(a+=\"&rsv_sug9=\"+Ue.getStat(\"rsv_sug9\")),Ue.getStat(\"rsv_bp\")&&(a+=\"&rsv_bp=\"+Ue.getStat(\"rsv_bp\"))\n}),$.ajax({headers:i,url:a}).done(function(t){$('#form input[name=\"rqlang\"]').val(bds.comm.search_tool.actualResultLang||\"cn\"),$('#form input[name=\"rsv_bp\"]').val(1),$(t)}).fail(function(){}),bds.comm.seinfo){bds.comm.seinfo.rsv_prw=encodeURIComponent($e.val()),bds.comm.seinfo.rsv_pstg=n,bds.comm.seinfo.rsv_svoice=window.__supportvoice?\"1\":\"0\",t.cftime+=1,bds.comm.cftime=t.cftime+\"\";var d=t.env.p(\"rsv_bak\");d&&(bds.comm.seinfo.rsv_bak=d)}bds.comm.confirmQuery=bds.comm.query,bds.comm.confirmQid=bds.comm.qid,g(),ve=t.qid,Fe.done(function(){20==n?Ue.updateInitData():22==n||bds.comm.supportis||n>=0&&5>=n&&Ue.updateInitData(),Ue.clearStat()\n}),window.cfpromise.resolve()}}}function R(t){if(!ie.support())return!0;if(nn)return!1;if(nn=!0,$e.blur(),_(\"\"),$(this).attr(\"target\"))return!0;en=!0,tn=setTimeout(function(){en=!1},1e3);try{var e=$(\"#kw\").attr(\"placeholder\")||$(\".kw-placeholder\").text();if(!$.trim($e.val())&&!e)return ne.href=\"/\",!1;var n,o=new p,i=$(this).serializeArray();for(n=0;n0&&(n.pstg=e.pstg),n.force&&n.pdc.mark(\"st\"),n.base64=isbase64(n.pdc),Le.push(n.log),pe++,fe++,U(n)}}function L(){var t=[];return Ne&&(t=$.map(Ne.slice(0,2),function(t){return t.value})),t.join(\"\t\")}function j(t){e(),ne.replace(t.buildSyncSearchUrl())}function q(t,e){e?(ae=!0,rn&&(clearTimeout(rn),rn=!1),rn=setTimeout(function(){ae=ce\n},t)):(re=!0,on&&(clearTimeout(on),on=!1),on=setTimeout(function(){re=se},t))}function U(t){var e,s,a=t.env,c={};c.is_referer=ze&&ze.env?ze.env.buildSyncSearchUrl():Be.replace(/\\#.*$/,\"\"),$.extend(c,a.buildHeaders()),c.is_xhr=\"1\",window.bds&&bds.comm&&bds.comm.cur_query?a.p(\"bs\",bds.comm.cur_query):a.p(\"bs\",\"\"),window.bds&&bds.comm&&bds.comm.cur_disp_query&&(c.is_pbs=encodeURIComponent(bds.comm.cur_disp_query));var d=t.no_predict||!bds.comm.supportis?1:11,l=t.pstg;if(!(1==d&&1==l||11==d&&3==l||11==d&&6==l||1==d&&4==l)){var u=\"ie=utf-8\"+(bds.comm.newindex?\"&newi=1\":\"\")+(ge.sid?\"&sid=\"+encodeURIComponent(ge.sid):\"\")+(ge.tnp?\"&tnp=\"+encodeURIComponent(ge.tnp):\"\")+\"&mod=\"+(t.no_predict||!bds.comm.supportis?\"1\":\"11\")+(bds.comm.supportis?\"&isbd=1\":\"\")+\"&isid=\"+ve+\"&\"+a.buildQueryString()+\"&rsv_sid=\"+bds.comm.indexSid+\"&_ss=1&clist=\"+encodeURIComponent(ee.getCacheList())+\"&hsug=\"+encodeURIComponent(L())+(t.force?\"&f4s=1\":\"\")+\"&csor=\"+getCursortPosition($e.get(0));\nt.pstg&&(u+=\"&pstg=\"+t.pstg);var m=\"/s?\"+u;if(m+=\"&_cr1=\"+r(m),!t.no_predict)for(s=ee.find(function(t){return t.loaded||t.no_predict?void 0:!0}),e=0;e0))){if(t.force&&t.shouldShow){var p=!1,f=(new Date).getTime();if(s=ee.find(function(e){var n=a.equals(e.env);return e.loaded||e.no_predict||!n||e===t||(e.shouldShow=!1),!e.loaded&&e.no_predict&&e.force&&n&&e!==t&&(e.shouldShow=e.shouldShow||t.shouldShow,e.startTime&&f-e.startTime<2e3&&(p=!0),window.__sam_backup_request||(p=!0)),e.loaded||n?void e.pdc.mark(\"st\"):!0\n}),p)return;for(e=0;e\")>10)return void(t.force?(n(11),j(a)):ee.deleteCache(t));\nh(t,{ntime:(new Date).getTime()-t.startTime,res:1});var s,c=\"\",d=e.indexOf(c);if(-1!=d){s=$(e.substr(0,d)),t.html=e.substr(d+c.length),window.__dom_pre_parse&&\"1\"==s.find(\"#__need_parse_dom\").html()&&(t.html=$(t.html));try{var l=$.parseJSON(s.find(\"#img_list\").text());t.base64.loadImg(l.right,l.left),t.base64_loaded=!0}catch(u){}try{o(s.find(\"#limg_list\").text())}catch(u){}}else s=t.html=$(e);var m=parseInt(s.find(\"#__status\").eq(0).html()),p=parseInt(s.find(\"#__switchtime\").eq(0).html()),f=parseInt(s.find(\"#__redirect\").eq(0).html()),g={};\ntry{g=$.parseJSON(s.find(\"#__sugPreInfo:eq(0)\").html()||\"{}\")||{}}catch(u){}t.real_wd=s.find(\"#__real_wd\").eq(0).text(),t.real_wd_org=s.find(\"#__real_wd_org\").eq(0).text(),t.real_wd_nosynx=s.find(\"#__real_wd_nosynx\").eq(0).text(),t.env&&t.env.p(\"nojc\")&&t.real_wd_nosynx&&(t.real_wd=t.real_wd_nosynx);var b=!1;(a.p(\"wd\")==i($e.val())||t.force)&&t.shouldShow&&(b=!0),t.real_wd&&(t.prw=a.p(\"wd\"),a.p(\"wd\",t.real_wd));var v=s.find(\"#__queryId\").html(),w=s.find(\"#__querySign\").html();t.querySign=w,h(t,{stat:m?m:0}),bds.comm.isDebug&&$(\"#isDebugInfo\").html(s.find(\"#__isDebugInfo\").html()),v&&(t.qid=v);\nvar C=s.find(\"#__chk\").html();if(t.chk=C?C:0,!e||!v&&!p&&!f&&!m||!w&&t.force)return t.force?(a.p(\"__eis\",1),a.p(\"__eist\",e?e.length:0),a.p(\"real_wd\",t.real_wd),n(13),void j(a)):void ee.deleteCache(t);if(p>0&&q(1e3*p,!t.no_predict),-11==m){var S=ee.getCacheBySign(w);if(!S)return A({env:t.env.clone({wd:t.real_wd}),force:t.force,use_cache:!1,no_predict:!0}),void ee.deleteCache(t);S.force=t.force,y(),_(S.real_wd),k(S),ee.deleteCache(t),t=S,ze&&t.real_wd==ze.real_wd||(b=!0)}else{if(0>m){if(1==f&&t.force)return h(t,{redirect:1}),n(14),void j(a);\nif(x(),-12==m&&g&&g.wait_time>0){var I=t.env.clone();Qe=setTimeout(function(){A({env:I,force:!1,use_cache:!0,no_predict:!0,shouldShow:!1,pstg:6})},g.wait_time)}return void ee.deleteCache(t)}if(m>0)return void ee.deleteCache(t)}for(var D=ee.find(function(e){return!e.loaded&&e!==t&&e.no_predict&&a.equals(e.env)?(e.shouldShow&&(b=!0),e.force&&(t.force=!0,t.no_predict=!0),!0):void 0}),R=0;R\"}),g.parts(function(t,e){b(t,e,g)}),g.fail(function(e,o){t.force&&t.shouldShow&&\"abort\"!=o&&t.env&&(n(12),ne.replace(t.env.buildSyncSearchUrl()+\"&rsv_jmp=fail\")),ee.deleteCache(t)}),t.xhr=g,ee.addCache(t)}}}function O(){Le=[],pe=0,en=!1,clearTimeout(tn)}function E(){window.index_off&&window.index_off(),xe[0]!==ye[0]&&xe.val(\"\"),$e=ye,pageState=1,bds.comm.ishome=0,bds.comm.cur_query=bds.comm.query,Me=new p,ze={env:Me,real_wd:bds.comm.query,force:!0,confirm:!0},Fe.done(function(){return function(){Ee.start()\n}}()),$(window).trigger(\"index_off\"),bds.util.setContainerWidth(),m(function(){$(window).trigger(\"swap_dom_ready\")}),window.__lazy_foot_js?setTimeout(function(){C()},0):C()}function N(t){window.index_off&&window.index_off(),xe.get(0)!==ye.get(0)&&(xe.val(\"\"),ye.val(t.p(\"wd\"))),$e=ye,pageState=1,bds.comm.ishome=0,Fe.done(function(){Oe!==Ee&&(Oe.stop(),Ee.hide(),Ee.setKey(t.p(\"wd\")),Ee.start())}),bds.util.setContainerWidth(),$(window).trigger(\"index_off\",t)}function P(){an=!1,cn=!1,ln=[],clearTimeout(un),un=!1\n}function M(t){an||(an={x:t.pageX,y:t.pageY}),dn={x:t.pageX,y:t.pageY},cn||an.x==t.pageX||an.y==t.pageY||(cn=!0,ln=[an],z())}function z(){ln.push(dn);var t=ln.length;if(Math.pow(dn.x-an.x,2)+Math.pow(dn.y-an.y,2)>=Math.pow(me,2)||t*ue>=le){var e=Ue,n=bds.comm.supportis?1:2;if(n&&e&&e.data()&&e.data()[0]&&e.visible()){var o=(new p).clone({wd:e.data()[0].value});A({env:o,force:!1,no_predict:!0,use_cache:!0,shouldShow:!1,pstg:1}),n--}if(n&&e&&e.data()&&e.data()[1]&&e.visible()){var o=(new p).clone({wd:e.data()[1].value});\nA({env:o,force:!1,no_predict:!0,use_cache:!0,shouldShow:!1,pstg:1}),n--}if(!bds.comm.supportis&&n&&$.trim($e.val())&&(!ze||ze.env.p(\"wd\")!=$.trim($e.val()))){var o=(new p).clone({wd:$.trim($e.val())});A({env:o,force:!1,no_predict:!0,use_cache:!0,shouldShow:!1,pstg:1}),n--}}else un=setTimeout(function(){z()},ue)}document.write=document.writeln=function(){},bds&&bds.comm&&\"clearissw\"==bds.comm.query&&Cookie.clear(\"ISSW\"),function(){var t=$.Deferred();bds.comm.registerUnloadHandler=function(e){t.done(e)\n},bds.comm.resolveUnloadHandler=function(){t.resolve(),t=$.Deferred()}}(),window.b_rec=function(t){var e;if(t)e=navigator.userAgent;else try{e=window.external&&window.external.twGetRunPath?window.external.twGetRunPath():\"\"}catch(n){e=\"\"}return e=e.replace(/:/,\"~\").replace(/\\t/,\"`\")},window.scr_rec=function(){var t=\"\";try{t+=[document.body.clientWidth,document.body.clientHeight,window.screenTop,window.screenLeft,window.screen.height,window.screen.width].join(\"_\")}catch(e){}return t},window.reh_rec=function(){var t=[],e=[];\ntry{$(\"#content_left\").children(\".result,.result-op\").each(function(e,n){t.push($(n).height())})}catch(n){}try{$(\"#con-ar\").children(\".result,.result-op\").each(function(t,n){e.push($(n).height())})}catch(n){}return t.join(\"_\")+\"|\"+e.join(\"_\")},window.onerror=function(){window.console&&console.debug&&console.debug(arguments),bds.comm.jserror=Array.prototype.slice.call(arguments).join(\"\t\"),J(bds.comm.jserror)},window.hash=function(t,e){return t?t&&!e&&Me?Me.p(t):void(t&&e&&Me&&(Me.p(t,e),ne.href=Me.buildSearchUrl())):void 0\n};var B,H,F,W,G,Q,V=!1;!function(){var t=$.globalEval;$.globalEval=function(){var e=(new Date).getTime();try{t.apply($,arguments)}catch(n){}(new Date).getTime()-e>500}}(),bds.comm.isDebug&&($('').appendTo(\"head\"),$('
    ').appendTo(\"#wrapper\"),$(window).on(\"swap_end\",function(t,e){if(e){var n=$(\"#isDebugInfo\");\nn.size()||(n=$('
    ').appendTo(\"#debug\")),n.html(e.html.find(\"#__isDebugInfo\").html());var o=\"\";for(var i in e.log)e.log.hasOwnProperty(i)&&(o+=\"\");o+=\"
    \"+i+\"\"+encodeURIComponent(e.log[i])+\"
    \",$(\"#debug\").html(o)}}));var J=function(){var t;return function(e){bds.comm.isDebug&&alert(e),bds&&bds.comm&&bds.comm.js_error_monitor&&(t=new Image,t.src=bds.comm.js_error_monitor+\"?\"+$.param({url:ne.href,time:bds.comm.serverTime,explore:navigator.userAgent,info:e,info_type:1}))\n}}();window.setSugKey=function(t){$e&&t&&(Ee&&Ee.setKey?Ee.setKey(t):$e.val(t))},window.getCursortPosition=function(t){var e=0;try{if(document.selection){var n=document.selection.createRange();n.moveStart(\"character\",-t.value.length),e=n.text.length}else(t.selectionStart||\"0\"==t.selectionStart)&&(e=t.selectionStart)}catch(o){e=t.value.length}return e},bds.comm.flagTranslateResult&&($(\"#wrapper_wrapper\").delegate(\".result\",\"mouseenter\",function(){$(\".c-fanyi\",$(this)).show()}),$(\"#wrapper_wrapper\").delegate(\".result\",\"mouseleave\",function(){$(\".c-fanyi\",$(this)).hide()\n}),$(\"#wrapper_wrapper\").delegate(\".result .c-fanyi\",\"click\",function(){var t=$(this).closest(\".result\"),e=$(\"h3 a:first\",t),n=$(\".c-abstract:first\",t),o=$(\".c-fanyi-abstract\",t).val(0).html(),i=$(\".c-fanyi-title\",t).val(0).html();$(\".c-fanyi-abstract\",t).val(0).html(n.html()),$(\".c-fanyi-title\",t).val(0).html(e.html()),e.html(i),n.html(o)}));var X={use_cache_repeatedly:!0,index_form:\"#form\",kw:\"#kw\",result_form:\"#form\"};t&&$.extend(X,t);var K=15,Y=6e4,Z=window.__confirm_timeout?window.__confirm_timeout:1e4,te=bds.comm.supportis?4:10,ee=function(){function t(t){\"object\"==typeof t&&null!=t&&(t.xhr&&t.xhr.abort&&t.xhr.abort(),t.base64&&t.base64.destroy(),t.pdc&&t.pdc.destroy(),t.backspace_preload_timeout_id&&clearTimeout(t.backspace_preload_timeout_id),delete t.xhr,delete t.html)\n}var e=[];return{find:function(t){return $.grep(e,t)},getCacheList:function(){var t=$.map(e,function(t){return t&&(new Date).getTime()-t.startTime>Y?!1:t.querySign});return t=$.grep(t,function(t){return!!t}),t.join(\"\t\")},hasCache:function(t,n){function o(t){var o,i;return(i=t.p(\"wd\"))?($.grep(e,function(e){return n.loaded&&!e.loaded?!1:void(t.equals(e.real_wd?e.env.clone({wd:e.real_wd}):e.env)&&(o=e))}),o?o:null):!1}n||(n={});var i=o(t);return i&&(new Date).getTime()-i.startTime>Y&&(this.deleteCache(i),i=null),i\n},shouldShow:function(t){if(t.force)return!0;if(!t.shouldShow&&!t.force&&t.no_predict)return!1;var e=i($e.val());return!e||ze&&t.env.equals(ze.env)?!1:0==t.env.p(\"wd\").indexOf(e)?!0:0==t.real_wd.indexOf(e)?!0:!1},getCacheBySign:function(t){var n=!1;return $.each(e,function(e,o){n||!o.loaded||o.querySign!=t||o.env.p(\"pn\")&&0!=o.env.p(\"pn\")||(n=o)}),n},addCache:function(n){if(-1==l(e,n)&&!n.env.p(\"srcid\")&&!n.env.p(\"cq\"))for(e.unshift(n);e.length>K;)t(e.pop())},deleteCache:function(n){t(n),e=$.grep(e,function(t){return t!==n\n})},deleteCacheByEnv:function(){e=$.grep(e,function(e){var n=e.env.equals(e.env);return n&&t(e),!n})},clearCache:function(){e=$.grep(e,function(e,n){return n!==ze?(t(n),!1):!0}),e=[]}}}(),ne=document.location,oe=ne.protocol+\"//\"+ne.host+ne.pathname+ne.search,ie={onurlchange:function(){}};!function(){function t(){var t=ne.href.match(/#+(.*)$/);return t?t[1].replace(/\\+/g,\"%2B\"):\"\"}function n(){var t=ne.href.match(/\\?([^#]+)/);return t?t[1].replace(/\\?/g,\"&\"):\"\"}function o(t,e){var n=\"\";if(\"1\"===window._thirdLinkSpeed&&(n=\"&qid=\"+bds.comm.queryId),window._bdlksmp>0&&(n=\"&bdlksmp=\"+window._bdlksmp),\"1\"===window._eclipse&&/^\\/link\\?/.test(e))return\"wd=&eqid=\"+bds.comm.eqid+i([\"pn\",\"rn\",\"ie\"],t)+n;\nvar o=new p(s(t));return o.p(\"wd\")?o.buildQueryString().replace(/&rsv[^=]*=[^&]*/g,\"\").replace(/[^a-zA-Z0-9]url=/g,\"\")+n:void 0}function i(t,e){var n=\"\",o=s(e);for(var i in t)o.hasOwnProperty(i)&&(n+=\"&\"+encodeURIComponent(o[i]));return n}function r(t){var e=new p(s(ie.getQueryString()),!0);e.hashCode()?0==pageState&&N(e):0!=pageState?ne.replace(ne.pathname+ne.search.replace(/([?&])isidx=[^&*]&?/,\"$1\")):ne.search!=ne.search.replace(/([?&])isidx=[^&*]&?/,\"$1\")&&ne.replace(ne.pathname+ne.search.replace(/([?&])isidx=[^&*]&?/,\"$1\")),ie.onurlchange(e,t)\n}var a=\"onhashchange\"in window,c=\"onpopstate\"in window;window.__disable_popstate&&(c=!1);var l=ne.pathname.length>1?ne.pathname:\"/s\";(navigator.userAgent.match(/MSIE (6|7)/)||document.documentMode<8)&&(a=!1,c=!1),X.disable_popstate&&(c=!1),a||c||e();var u=function(){var e=\"\";return function(n,o){o&&(e=o.buildQueryString(),ne.hash=e),(n||e!=t())&&(r(n),e=t())}}();ie.setUrl=function(t){c?m(!1,t):a&&u(!1,t)};var m=function(){var t=n();return function(e,o){o&&(t=o.buildQueryString(),window.history.pushState(o,\"\",o.buildSyncSearchUrl())),e||t!=n()?(r(e),t=n()):d()\n}}();ie.getQueryString=function(){return c?n():/wd=/.test(t())?t():n()},ie.init=function(){c?!function(){var e=ne.href,n=!1;$(window).on(\"swap_begin\",function(){n=!0}),$(window).bind(\"popstate\",function(){(n||!e||e!=ne.href)&&m(),e=null}),$(window).bind(\"hashchange\",function(){var e=t();/wd=/.test(e)&&ne.replace(l+\"?\"+e)})}():a&&($(window).bind(\"hashchange\",function(){u()}),$(function(){u()}));var e=t();/wd=/.test(e)&&(c?(window.history.replaceState(null,\"\",l+\"?\"+e),m()):a?u():ne.replace(l+\"?\"+e))\n},ie.support=function(){return(c||a)&&1!=Cookie.get(\"ISSW\")&&!window.__disable_preload},ie.getLinkParams=function(e){if(!c){var i=t();return\"\"==i&&(i=n()),o(i,e)}if(\"https:\"===ne.protocol||\"1\"===window._eclipse){var r=n();return r||(r=t()),o(r,e)}return!1},ie.clickResultLink=function(t,e,n){return c?(window.history.pushState(null,\"\",new p(n,!0).buildSyncSearchUrl()),m(),!1):void t.attr(\"href\",e.buildSearchUrl(n)).attr(\"target\",\"_self\")},ie.submit=function(t,e){setTimeout(function(){c?(window.history.pushState(t,\"\",t.buildSyncSearchUrl()),m(e)):a?(ne.href=t.buildSearchUrl(),u(e)):ne.href=t.buildSyncSearchUrl()\n},0)},window.changeUrl=function(t){var e=new p(s(t));ie.submit(e,!0)}}(),ie.onurlchange=function(t,e){Fe.done(function(){Ue.setKey(t.p(\"wd\")),Ue.hide()}),Te=(new Date).getTime(),$e.val(t.p(\"wd\")),_(\"\");var n=!0;e&&ze&&ze.env&&ze.env.equals(t)&&(n=!1),A({env:t,force:!0,use_cache:n,no_predict:!0})};var re=X.disable?X.disable:!1;window.__disable_preload&&(re=!0);var se=re,ae=!1;window.__disable_predict&&(ae=!0);var ce=ae,de=bds.comm.switchAddMask?bds.comm.switchAddMask:!1;de||(de=window.__switch_add_mask?window.__switch_add_mask:!1),de=!0;\nvar le=(bds.comm.preloadMouseMoveDistance?bds.comm.preloadMouseMoveDistance:5,300),ue=50,me=80,pe=0,fe=0,he=function(){},ge=s(ne.search);ie.support()||(!function(){function t(){ne.hash&&ne.hash.match(/[^a-zA-Z0-9](wd|word)=/)&&ne.replace(\"//www.baidu.com/s?\"+ne.href.match(/#(.*)$/)[1])}ne.hash.match(/[^a-zA-Z0-9](wd|word)=/)?(ne.replace(\"//www.baidu.com/s?\"+ne.href.match(/#(.*)$/)[1]),function(){throw new Error(\"redirect to sync\")}()):(document.getElementById(\"wrapper\").style.display=\"block\",\"onhashchange\"in window?window.onhashchange=t:setInterval(t,200))\n}(),se=re=!0);for(var be=Cookie.get(\"BAIDUID\",\"nobdid\").split(\":\")[0],ve=be.substr(0,6)+be.substr(be.length-5,5)+parseInt(99999*Math.random());ve.length<16;)ve+=\"0\";ve=encodeURIComponent(ve);var we,_e,ye,xe,$e,ke;ye=xe=$e=$(X.kw);var Te,Ce,Se,Ie,De,Re,Ae=$(\"#wrapper_wrapper\"),Le=[];window.__async_strategy,we=$(X.index_form),\"_blank\"==we.attr(\"target\")&&(window.__disable_index_predict=!0,se=re=!0);var je=we.serializeArray();_e=$(X.result_form);var qe=(new Date).getTime();window.pageState=0;var Ue,Oe,Ee,Ne,Pe,Me=null,ze=null,Be=document.location.href,He=!1,Fe=$.ajax({dataType:\"script\",cache:!0,url:1===bds.comm.logFlagSug?\"https://ss1.bdstatic.com/5eN1bjq8AAUYm2zgoY3K/r/www/cache/static/protocol/https/sug/js/bdsug_async_sam_sug_a97d823.js\":1===bds.comm.samSugApi?\"https://ss1.bdstatic.com/5eN1bjq8AAUYm2zgoY3K/r/www/cache/static/protocol/https/sug/js/bdsug_async_sam_api_437177b.js\":\"https://ss1.bdstatic.com/5eN1bjq8AAUYm2zgoY3K/r/www/cache/static/protocol/https/sug/js/bdsug_async_467a84d.js\"}),We=\"focus\";\n!function(){window.PDC_ASYNC={setParam:function(t,e){ze&&ze.pdc&&ze.pdc.setParam(t,e)},setLinkData:function(e,n){t[e]=n},sendLinkLog:function(){var e=\"//www.baidu.com/nocache/fesplg/s.gif?log_type=linksp\",n=\"\";n+=\"&link_t=\"+((new Date).getTime()-t.click_t)+\"&query=\"+bds.comm.queryEnc+\"&qid=\"+bds.comm.queryId+\"&linkpreload=\"+t.linkpreload;var o=Math.random();if(.01>o){var i=new Image,r=\"LINK_IMG_\"+new Date;window[r]=i,i.onload=function(){delete window[r]},i.src=e+n}}};var t=(window.PDC_ASYNC.log={},{});\nwindow.bds&&(bds.pdc=window.PDC_ASYNC)}();var Ge=function(t){function e(){if(c=1,n(),1==c){var e=new Date,i=!1,r=function(){var n=new Date,l=n-e-t,u=o();0>l&&(l=0),u||i||(s[a]=l,a=(a+1)%20),i=u,1==c&&(e=n,d=setTimeout(r,t))};d=setTimeout(r,t)}}function n(){window.clearTimeout(d)}function o(){var t=[\"webkit\",\"moz\",\"ms\",\"o\"];if(\"hidden\"in document)return document.hidden;for(var e=0;e1e3||e>150?(c=a?parseInt(a):0,c>=s-o&&s>c&&(l=1,Cookie.set(\"ispeed\",2,document.domain,\"/\",d)),i>c&&(c=c+o>i?i:c+o,Cookie.set(\"ispeed_lsm\",c,document.domain,\"/\",d))):(a&&parseInt(a)>s&&(r=5),a&&parseInt(a)>=r&&(parseInt(a)<=s+r&&parseInt(a)>s&&(l=2,Cookie.set(\"ispeed\",1,document.domain,\"/\",d)),c=parseInt(a)-r,Cookie.set(\"ispeed_lsm\",c,document.domain,\"/\",d))),l}catch(p){}return 0}function r(){return Cookie.get(\"ispeed\")&&1==UPS.get(\"isSwitch\")&&2==parseInt(Cookie.get(\"ispeed\"))?!0:!1\n}var s=[],a=0,c=0,d=!1,t=t||250;return{start:e,stop:function(){window.clearTimeout(d),c=0},getData:function(){return s.slice(a).concat(s.slice(0,a))},isSlow:r,monitor:i}}();bds.comm.supportis&&1==UPS.get(\"isSwitch\")&&Ge.start();var Qe;Fe.done(function(){Ue=Oe=Ee=bds.se.sug({maxNum:10,withoutRich:bds.comm.supportis,withoutZhixin:!0,form:_e[0],ipt:$e[0],cbname:\"bdsugresultcb\",submission:R}),$e.keydown(function(t){var e=getCursortPosition(this);(9==t.keyCode||39==t.keyCode&&e==this.value.length)&&bds.comm.supportis&&ze&&ke.text()&&(t.preventDefault(),ze.real_wd!=this.value&&($e.val(ze.real_wd),Ue.check()),Ue.show(),_(\"\"),D(ze,He,22)({tipConfirm:!0}))\n}),Ue.on(\"start\",function(){We=\"focus\"}),$(window).on(\"blur\",function(){Ue.hide()}),$(document).on(\"click\",function(t){return 2==t.isTrigger||3==t.isTrigger?!1:void Ue.hide()});var t,e;Ue.on(\"inputChange\",function(n,o){if(!(window.__sam_his_nopredict&&window.bds&&bds.comm&&0==bds.comm.supportis)){if(t||(t=$e.val()),_(\"\"),P(),clearTimeout(Qe),clearTimeout(sn),0==pageState&&window.__disable_index_predict||re||ae||Ge.isSlow())return void Ue.setMaxNum(10);Ue.setMaxNum(te);var i=new p({pn:\"\",wd:o.value});\nif(bds&&bds.comm&&bds.comm.logFlagSug&&1===bds.comm.logFlagSug&&i.p(\"rsv_slog\",\"ipt_change\"),0==pageState&&bds.comm.supportis&&$.trim($e.val())){N(i);var r=$(\"
    请按“回车”键发起检索
    \").insertBefore(\"#head\");$(window).one(\"swap_begin\",function(){r.remove()})}if(Pe)return void(Pe=!1);if(window.__restart_confirm_timeout&&I(),We=\"input\",Te=(new Date).getTime(),e&&(clearTimeout(e),e=!1),\"\"==$.trim(o.value))return void x();if(Ne=o.checkStore(),!/^[a-zA-Z0-9~!@#$%^&*()_+=-]$/.test(o.value)){var s=$e.val(),a=o.imt.getLog();\na.length>0&&a[a.length-1].type.indexOf(\"link\")>-1&&i.p(\"_sglink\",\"1\");var c=o.imt.diffLog();c&&c.length>1&&(c=c.slice(-15).join(\".\"),i.h({is_params:{imes:encodeURIComponent(c)}})),!window.__disable_is2&&t.length>s.length&&0===t.indexOf(s)?e=setTimeout(function(){A({env:i,use_cache:!0,force:!1,pstg:5,shouldShow:bds.comm.supportis}),e=!1},250):A({env:i,use_cache:!0,force:!1,pstg:5,shouldShow:bds.comm.supportis})}t=s}}),Ue.on(\"selectSug\",function(t,e,n,o){if(_(\"\"),clearTimeout(Qe),!(0==pageState&&window.__disable_index_predict||re||ae||Ge.isSlow()))if(-1==n){ze&&Ue.setVisibleSug(ze.real_wd);\nvar i=new p({pn:\"\",wd:e.value});bds&&bds.comm&&bds.comm.logFlagSug&&1===bds.comm.logFlagSug&&i.p(\"rsv_slog\",\"sug_select\"),A({env:i,use_cache:!0,force:!1,shouldShow:bds.comm.supportis,pstg:3})}else{Ue.setVisibleSug(),_(\"\");var i=new p({pn:\"\",wd:o});bds&&bds.comm&&bds.comm.logFlagSug&&1===bds.comm.logFlagSug&&i.p(\"rsv_slog\",\"sug_select\");var r=e.stopRefresh?!1:bds.comm.supportis;A({env:i,force:!1,use_cache:!0,no_predict:!0,shouldShow:r,pstg:3})}}),Ue.on(\"render\",function(){ze&&Ue.setVisibleSug(ze.real_wd)\n}),Ue.on(\"dataReady\",function(t,e){var n=e&&e.queryValue&&e.dataCached&&e.dataCached[e.queryValue];if(n&&n.gl)for(var o in n.gl)if(1*n.gl[o]>0){var i=new p({pn:\"\",wd:n.s[o]});A({env:i,force:!1,use_cache:!0,no_predict:!0,shouldShow:!1,pstg:7})}}),0==pageState&&Ue.start()});var Ve,Je,Xe,Ke;!function(){var t,e=-1,n=0,o=-1,i=-1,s=-1,a=-1,c=0;Ve=function(e){if(e){s=e.pageX,a=e.pageY,t=e.target;var r=$(e.target);\"submit\"==r.attr(\"type\")&&(c=1);var d=r.offset();o=s-d.left,i=a-d.top,n=(new Date).getTime()\n}},Je=function(o){o&&o.target==t&&(e=(new Date).getTime()-n)},Ke=function(t){bds&&bds.comm&&bds.comm.query&&(t=bds.comm.query);var n=c+\".\"+e+\".\"+o+\".\"+i+\".\"+s+\".\"+a;return n=r(n+t)+\".\"+n},Xe=function(){e=-1,n=0,o=-1,i=-1,s=-1,a=-1,c=0},$(window).on(\"confirm\",function(){setTimeout(Xe,0)})}(),$(function(){$(\"#head\").delegate(\".index_tab_top>a,.index_tab_bottom>a,#u1>a,#u>a\",\"mousedown\",function(){return $(this).attr(\"name\")?ns_c({fm:\"behs\",tab:$(this).attr(\"name\"),query:\"\",un:encodeURIComponent(bds.comm.user||\"\")}):void 0\n})}),$(document).delegate(\"a\",\"mousedown\",function(){D(ze,He,22)()}),v({prefix:\"http://www.baidu.com\",regex:/^\\/*(link)\\?(.*)$/}),v({prefix:\"//www.baidu.com\",regex:/^\\/*(link)\\?(.*)$/}),v({prefix:\"http://www.baidu.com\",convertTable:{\"baidu.php\":\"baidu.php\",\"aladdin.php\":\"aladdin.php\",\"siva.php\":\"siva.php\",\"adrc.php\":\"adrc.php\",\"zhixin.php\":\"zhixin.php\"},regex:/^\\/*(baidu\\.php|aladdin\\.php|siva\\.php|adrc\\.php|zhixin\\.php)\\?(.*)$/}),\"www.baidu.com\"!=ne.host&&v({prefix:\"\",convertTable:{\"baidu.php\":\"baidu.php\",\"aladdin.php\":\"aladdin.php\",\"siva.php\":\"siva.php\",\"adrc.php\":\"adrc.php\",\"zhixin.php\":\"zhixin.php\"},regex:/^\\/*(baidu\\.php|aladdin\\.php|siva\\.php|adrc\\.php|zhixin\\.php)\\?(.*)$/}),v({prefix:\"http://bzclk.baidu.com\",regex:/^\\/*(adrc\\.php)\\?(.*)$/}),v({prefix:\"https://sp0.baidu.com/9q9JcDHa2gU2pMbgoY3K\",regex:/^\\/*(adrc\\.php)\\?(.*)$/}),\"https:\"==ne.protocol&&bds.comm.ishome&&!/Chrome/.test(navigator.userAgent)&&$(document).delegate(\"a\",\"mousedown\",function(){var t=$(this),e=t.attr(\"href\"),n={\"http://v.baidu.com\":\"/?fr=bd\"};\nn&&n.hasOwnProperty(e)&&t.attr(\"href\",e+n[e])}),$(document).delegate(\"a\",\"mousedown\",function(){var t=$(this),e=t.attr(\"href\"),n=new Image,o=\"//www.baidu.com/nocache/fesplg/s.gif?log_type=hm\",i=Math.random();if(.01>i&&!/www\\.baidu\\.com\\//.test(e)&&/^http/.test(e)){var r=o+\"&c_url=\"+encodeURIComponent(e),n=new Image,s=\"_LOG_\"+(new Date).getTime();n.onload=function(){delete window[s]},window[s]=n,n.src=r}}),ie.support()&&$(document).delegate(\"a\",\"click\",function(){var t=ne.protocol+\"//\"+ne.host;return function(){var e=$(this);\nif(!e.attr(\"target\")||\"_self\"==e.attr(\"target\")){var n=$.trim(e.attr(\"href\"));if(n&&0==n.indexOf(t)&&(n=n.substring(t.length)),n&&(matched=n.match(/^\\/*s\\?(.*)/)),n&&matched){var o=s(matched[0]);if(o.pn||(o.pn=\"\"),l([\"baidurt\",\"baiduwb\",\"baidufir\",\"SE_baiduxueshu_c1gjeupa\"],o.tn)<0){var i=e.parents(\"#con-at\");i.size()>0&&a({top:i.offset().top+i.height()});var r=ie.clickResultLink(e,Me,o)}return r}}}}()),$(document).delegate(\"a\",\"mousedown\",function(t){Ve(t)}),$(document).delegate(\"a\",\"mouseup\",function(t){Je(t)\n}),$(document).delegate(\"#su,#su1\",\"mouseup\",function(t){Je(t)}),$(document).delegate(\"#su,#su1\",\"mousedown\",function(t){Ve(t)}),!function(){var t;window._bdlkc>=1&&($(document).delegate(\".c-container\",\"mouseenter\",function(){return function(){var e=$(this),n=300;2==window._bdlkc&&(n=100),t=setTimeout(function(){var t=e.find(\".t>a\"),n=w(t,{prefix:\"http://www.baidu.com\",regex:/^\\/*(link)\\?(.*)$/}),o=e.attr(\"mu\")||e.find(\".f13 .g\").text(),i=/^(http[s]?:\\/\\/)?([^\\/]+)(.*)/,r=o.match(i);n&&n.match(ne.protocol)&&/www\\.baidu\\.com\\/link/.test(n)&&!/bdlkc=1/.test(n)&&(r[2]&&(o=\"http://\"+r[2],e.append('')),$.ajax({url:n+\"&bdlkc=1\",type:\"GET\",contentType:\"text/html\",success:function(){t.attr(\"linkpreload\",\"1\")\n}}),t.attr(\"href\",n+\"&bdlkc=1\"))},300)}}()),$(document).delegate(\".c-container\",\"mouseleave\",function(){return function(){clearTimeout(t)}}()))}();var Ye=$(\"body\");document.title,!function(t){var e;t.fn.textWidth=function(){e||(e=t('
    ').appendTo(\"body\").find(\"span\")),e.html(escapeHTML(t(this).val()));var n=e.width();return n}}(jQuery);\nvar Ze=!1;$(window).on(\"swap_dom_ready\",function(t,e){var n=\"\";!e||!e.real_wd||e.no_predict&&6!=e.pstg||(n=e.real_wd),_(n),k(e)}),$(window).on(\"swap_end\",function(t,e){e&&(window.cfpromise=new $.Deferred,De&&(clearTimeout(De),De=!1,Re=null),e.confirm=!1,e.force?D(e,He,20)():(Re=D(e,He,21),De=setTimeout(Re,Z)))}),$(window).on(\"indexOff\",function(t,e){Fe.done(function(){_(e.p(\"wd\"))})}),ie.support()&&\"_blank\"!=we.attr(\"target\")&&Fe.done(function(){Ue.setMaxNum(te)});var tn,en=!1,nn=!1;_e.mousedown(function(){nn=!1\n}).delegate(\"a,input\",\"focus\",function(){nn=!1});var on,rn,sn;$(window).on(\"swap_end\",function(t,e){e||(bds.comm.confirmQuery=bds.comm.query,bds.comm.confirmQid=bds.comm.qid,g()),sn=setTimeout(function(){0==$(\"#content_left,.result,.content_none\").length&&n(15,86400)},1e4)}),ie.init(),$(function(){var t=$(\"script\").last(),e=$(\"head\");he=function(){t.nextAll().not(\"[data-for]\").not(\"#passport-login-pop\").remove(),e.find(\"*\").not(\"[data-for]\").not(\"meta\").not(\"title\").not(\"script[async]\").not('link[href*=\"passport\"]').not('link[rel*=\"icon\"]').not('link[rel*=\"shortcut icon\"]').remove()\n}}),bds.comm.resultPage&&E(),Ye.delegate(\"#s_tab a\",\"mousedown\",function(){setHeadUrl(this)}).delegate(\"#s_tab a\",\"focusin\",function(){setHeadUrl(this)}),Ae.delegate(\"#page strong+a,#page a.n\",\"mouseover\",function(){A({env:new p(s($(this).attr(\"href\"))),force:!1,use_cache:!0,no_predict:!0,shouldShow:!1,pstg:4})});var an,cn,dn,ln,un;Fe.done(function(){$(document).mousemove(M)}),$(\"#u .back_org\").click(function(){var t=new Date;t.setTime((new Date).getTime()+110376e7),Cookie.set(\"ORIGIN\",2,document.domain,\"/\",t),Me?ne.replace(Me.buildSyncSearchUrl({_r:Math.random()})):ne.href=\"/\"\n}),$(window).scroll(function(){var t,e=$(\"#head\"),n=$(window),o=40,i=e.offset().top,r=function(){t&&(clearTimeout(t),t=!1),t=setTimeout(function(){var r=n.scrollTop();r>o+i?t=setTimeout(function(){e.addClass(\"s_down\"),Fe.done(function(){Ee.hide()})},0):o+i>=r&&(t=setTimeout(function(){e.removeClass(\"s_down\")},0))},50)};return r(),r}()),$e.bind(\"paste\",function(){if(!(window.__disable_index_predict&&0==pageState||re||ae)){var t=this,e=this.value;Pe=!0,setTimeout(function(){t.value&&t.value!=e&&A({env:(new p).clone({wd:$.trim(t.value)}),force:!1,use_cache:!0,no_predict:!0,shouldShow:bds.comm.supportis,pstg:2})\n},0)}})}function addEV(t,e,n){window.attachEvent?t.attachEvent(\"on\"+e,n):window.addEventListener&&t.addEventListener(e,n,!1)}function user_c(t){var e=\"\",n=\"\",o=\"\",i=\"\",r=encodeURIComponent(window.document.location.href),s=window[\"BD_PS_C\"+(new Date).getTime()]=new Image,a=bds&&bds.util&&bds.util.domain?bds.util.domain.get(\"http://nsclick.baidu.com\"):\"http://nsclick.baidu.com\";for(v in t){switch(v){case\"title\":o=encodeURIComponent(t[v].replace(/<[^<>]+>/g,\"\"));break;case\"url\":o=encodeURIComponent(t[v]);\nbreak;default:o=t[v]}e+=v+\"=\"+o+\"&\"}return i=\"&mu=\"+r,s.src=a+\"/v.gif?pid=201&pj=psuser&\"+e+\"path=\"+r+\"&wd=\"+n+\"&t=\"+(new Date).getTime(),!0}function initPassV3(){var t=bds.comm.passnew?3:2;bds.se.passv3=passport.pop.init({apiOpt:{loginType:1,product:\"mn\",u:window.document.location.href,safeFlag:0,qrcode:t,staticPage:location.protocol+\"//www.baidu.com/cache/user/html/v3Jump.html\"},cache:!1,tangram:!0,authsite:[\"qzone\",\"tsina\"],authsiteCfg:{act:\"implicit\",display:\"popup\",jumpUrl:location.protocol+\"//www.baidu.com/cache/user/html/xd.html\",onBindSuccess:function(t,e){var n=decodeURIComponent(e.passport_uname||e.displayname);\nreturn bds.se.login.success(n),!1}},onLoginSuccess:function(t){t.returnValue=!1;var e=t.rsp.data.userName||t.rsp.data.mail||t.rsp.data.phoneNumber;bds.se.login.success(e)},onSubmitStart:function(){},onSubmitedErr:function(){},onSystemErr:function(){},onShow:function(){},onHide:function(){bds.se.login.setSubpro(\"\"),bds.se.login.setMakeText(\"\")},onDestroy:function(){}})}function isp_hijack(t){var e,n,o,i=document.getElementById(\"wrapper\"),r=!1;bds.comm.query||(r=!0),1==t.stat&&(e=document.createElement(\"div\"),e.innerHTML='
    百度提示您:
    我们发现当前您可能受到异常广告弹窗的影响,通常这是受第三方恶意劫持导致。使用 防恶意广告专版杀毒软件,可有效改善您的上网体验,免受恶意广告的困扰。
    ',r?i.insertBefore(e,i.children[0]):(i.style.position=\"relative\",document.getElementById(\"u\").style.top=0,e.style.margin=\"-6px 0 8px 0\",document.body.insertBefore(e,i)),n=document.getElementById(\"isp-close-btn\"),o=n.parentNode.getElementsByTagName(\"a\")[0],n.onclick=function(){r?i.removeChild(e):(document.body.removeChild(e),i.style.position=\"\",document.getElementById(\"u\").style.top=\"4px\")\n},n.onmousedown=function(){ns_c({fm:\"behs\",tab:\"tj_notice\",cont:\"jcbro\",action:\"close\",area:\"topbar\"})},o.onmousedown=function(){ns_c({fm:\"behs\",tab:\"tj_notice\",cont:\"jcbro\",action:\"click\",area:\"topbar\"})},ns_c({fm:\"behs\",tab:\"tj_notice\",cont:\"jcbro\",action:\"show\",area:\"topbar\"}))}function isbase64(t){function e(){p={left:$.Deferred(),right:$.Deferred()}}function n(t,e){g++;var t=t||[],e=e||[];if(t=$.grep(t,function(t){return f.right.hasOwnProperty(t)?!1:(f.right[t]=!1,!0)}),e=$.grep(e,function(t){return f.left.hasOwnProperty(t)?!1:(f.left[t]=!1,!0)\n}),2==c.b64Exp&&e.length>0&&(h=!0,r(e,\"left\",\"reql\")),t.length>0)if(t.length>12){var n=Math.round(t.length/2),o=[],i=[];$.each(t,function(t,e){n>t?o.push(e):i.push(e)}),r(o,\"right\",\"reqr2\"),r(i,\"right\",\"reqr1\")}else r(t,\"right\",\"reqr\")}function o(t){for(var e=t,n=0;__callback_names.hasOwnProperty(t)||window[t];)t=e+\"_\"+n,n++;return __callback_names[t]=1,t}function i(t){if(\"string\"==typeof t){var e,n=0,o=0;for(e=0;e9?t:\"0\"+t};return(\"number\"==typeof t||\"string\"==typeof t)&&(t=new Date(t)),[t.getFullYear(),n(t.getMonth()+1),n(t.getDate())].join(e||\"\")}function baseChangeUrl(t){bds.comm.search_tool.st&&bds.comm.search_tool.et&&bds.comm.search_tool.stftype&&t.indexOf(\"&gpc=\")<0&&(t+=\"&gpc=\"+encodeURIComponent(\"stf=\"+bds.comm.search_tool.st+\",\"+bds.comm.search_tool.et+\"|stftype=\"+bds.comm.search_tool.stftype)),bds.comm.search_tool.si&&t.indexOf(\"&si=\")<0&&(t+=\"&si=\"+encodeURIComponent(bds.comm.search_tool.si)+\"&ct=2097152\"),bds.comm.search_tool.sl_lang&&t.indexOf(\"&sl_lang=\")<0&&(t+=\"&rsv_srlang=\"+encodeURIComponent(bds.comm.search_tool.sl_lang),t+=\"&sl_lang=\"+encodeURIComponent(bds.comm.search_tool.sl_lang),t+=\"&rsv_rq=\"+encodeURIComponent(bds.comm.search_tool.sl_lang)),changeUrl(t)\n}function langChangeUrl(t,e,n){ns_c({fm:\"advTool\",qid:bds.comm.qid,title:encodeURI(n),rsv_advTool_lang:e}),baseChangeUrl(\"wd=\"+encodeURIComponent($(\"#kw\").val())+\"&\"+t+\"=\"+encodeURIComponent(e)+\"&rsv_srlang=\"+encodeURIComponent(e)+\"&rsv_rq=\"+encodeURIComponent(e))}function advChangeUrl(t,e,n,o){if(-1!=e.indexOf(\"=\"))var i=1;else var i=0;ns_c({fm:\"advTool\",qid:bds.comm.qid,title:encodeURI(n),rsv_advTool_time:o,rsv_advTool_stet:e.substr(4).replace(\",\",\"_\")}),baseChangeUrl(\"wd=\"+encodeURIComponent($(\"#kw\").val())+\"&\"+t+\"=\"+encodeURIComponent(e)+\"&tfflag=\"+i)\n}function fileChangeUrl(t,e,n){ns_c({fm:\"advTool\",qid:bds.comm.qid,title:encodeURI(e),rsv_advTool_ft:n}),baseChangeUrl(\"wd=\"+encodeURIComponent(queryReplace(\"filetype\",t)))}function queryReplace(t,e){if(!t||\"filetype\"!=t&&\"site\"!=t)return o;var n=new RegExp(\"(\"+t+\"):[^\\\\s]*[ ]?\"),o=$(\"#kw\").val();return\" \"==e||null==e?o.replace(n,\"\"):o.match(n)?o.replace(n,\"$1:\"+e+\" \"):t+\":\"+e+\" \"+o}function extChangeUrl(t){t?(ns_c({fm:\"advTool\",qid:bds.comm.qid,title:encodeURI(\"精确匹配\"),rsv_advTool_ext:1}),baseChangeUrl('wd=\"'+encodeURIComponent($(\"#kw\").val())+'\"')):(ns_c({fm:\"advTool\",qid:bds.comm.qid,title:encodeURI(\"智能匹配\"),rsv_advTool_ext:0}),baseChangeUrl(\"wd=\"+encodeURIComponent($(\"#kw\").val().replace(/^\\\"(.*)\\\"$/,\"$1\"))))\n}!function(){function getUA(){var t,e={},n=navigator.userAgent.toLowerCase();return e.mac=navigator.platform.toUpperCase().indexOf(\"MAC\")>=0,(t=n.match(/rv:([\\d.]+)\\) like gecko/))?e.ie=t[1]:(t=n.match(/(msie\\s|trident.*rv:)([\\w.]+)/))?e.ie=t[2]:(t=n.match(/firefox\\/([\\d.]+)/))?e.firefox=t[1]:(t=n.match(/chrome\\/([\\d.]+)/))?e.chrome=t[1]:(t=n.match(/opera.([\\d.]+)/))?e.opera=t[1]:(t=n.match(/version\\/([\\d.]+).*safari/))?e.safari=t[1]:0,e}function getDefaultQueryHis(){try{return JSON.parse(localStorage.getItem(\"index_ls_default_query\"))\n}catch(t){return{}}}function detectPlaceholder(t){var e=\"[object OperaMini]\"===Object.prototype.toString.call(window.operamini);return t.ie?!1:\"placeholder\"in document.createElement(\"input\")&&!e}function createPlaceHolder(t,e,n){if(e)t.attr(\"placeholder\",n);else{var o=\"
    \"+n+\"
    \";t.before(o),$(\".kw-placeholder\").on(\"click\",function(e){t.focus(),e.target=t.get(0),t.trigger(e)}),$(document).ready(function(){$(\".kw-placeholder\").toggleClass(\"placeholders-hidden\",t.val().length>0)\n}),t.on(\"keydown keyup cut paste setValue input\",checkInputValue)}}function checkInputValue(){var t=$input.val();setTimeout(function(){var e=$input.val();(e!==t||e.length>0)&&$(\".kw-placeholder\").toggleClass(\"placeholders-hidden\",e.length>0)},0)}function removePlaceHolder(t,e){e?t.removeAttr(\"placeholder\"):$(\".kw-placeholder\").remove()}function testLocalStorage(){var t=\"test\";try{return localStorage.setItem(t,t),localStorage.removeItem(t),!0}catch(e){return!1}}function getShowCount(t,e){var n=0;return e&&e.query&&e.query===t&&e.count&&(n=e.count),n\n}function recordDefaultQuery(t,e){var n={query:t,time:(new Date).getTime(),count:1};e&&e.query&&t===e.query&&e.count&&(n.count=e.count+1),setTimeout(function(){try{localStorage.removeItem(\"index_ls_default_query\"),localStorage.setItem(\"index_ls_default_query\",JSON.stringify(n))}catch(t){return!1}},0)}function jsonPolyfill(){var json={parse:function(sJSON){return eval(\"(\"+sJSON+\")\")},stringify:function(){var t=Object.prototype.toString,e=Object.prototype.hasOwnProperty,n=Array.isArray||function(e){return\"[object Array]\"===t.call(e)\n},o={'\"':'\\\\\"',\"\\\\\":\"\\\\\\\\\",\"\\b\":\"\\\\b\",\"\\f\":\"\\\\f\",\"\\n\":\"\\\\n\",\"\\r\":\"\\\\r\",\"\t\":\"\\\\t\"},i=function(t){return o[t]||\"\\\\u\"+(t.charCodeAt(0)+65536).toString(16).substr(1)},r=/[\\\\\"\\u0000-\\u001F\\u2028\\u2029]/g;return function s(o){if(null==o)return\"null\";if(\"number\"==typeof o)return isFinite(o)?o.toString():\"null\";if(\"boolean\"==typeof o)return o.toString();if(\"object\"==typeof o){if(\"function\"==typeof o.toJSON)return s(o.toJSON());if(n(o)){for(var a=\"[\",c=0;c9&&(defaultQuery=\"\"),defaultQuery){var UA=getUA(),isPlaceHolderSupported=detectPlaceholder(UA);\ncreatePlaceHolder($input,isPlaceHolderSupported,defaultQuery,UA),isSupportLocalStorage&&recordDefaultQuery(defaultQuery,defaultQueryHis),$(window).one(\"index_off\",function(){removePlaceHolder($input,isPlaceHolderSupported),bds.comm.dpquery=\"\"})}}();var define,require,esl;!function(t){function e(t){m(t,M)||(z[t]=1)}function n(t,e){function n(t){0===t.indexOf(\".\")&&i.push(t)}var i=[];if(\"string\"==typeof t?n(t):A(t,function(t){n(t)}),i.length>0)throw new Error(\"[REQUIRE_FATAL]Relative ID is not allowed in global require: \"+i.join(\", \"));\nvar r=F.waitSeconds;return r&&t instanceof Array&&(U&&clearTimeout(U),U=setTimeout(o,1e3*r)),H(t,e)}function o(){function t(s,a){if(!r[s]&&!m(s,M)){r[s]=1;var c=O[s];c?(a||!m(s,P)||c.hang)&&(o[s]||(o[s]=1,e.push(s)),A(c.depMs,function(e){t(e.absId,e.hard)})):i[s]||(i[s]=1,n.push(s))}}var e=[],n=[],o={},i={},r={};for(var s in z)t(s,1);if(e.length||n.length)throw new Error(\"[MODULE_TIMEOUT]Hang(\"+(e.join(\", \")||\"none\")+\") Miss(\"+(n.join(\", \")||\"none\")+\")\")}function i(t){A(W,function(e){a(t,e.deps,e.factory)\n}),W.length=0}function r(t,e,n){if(null==n&&(null==e?(n=t,t=null):(n=e,e=null,t instanceof Array&&(e=t,t=null))),null!=n){var o=window.opera;if(!t&&document.attachEvent&&(!o||\"[object Opera]\"!==o.toString())){var i=j();t=i&&i.getAttribute(\"data-require-id\")}t?a(t,e,n):W[0]={deps:e,factory:n}}}function s(){var t=F.config[this.id];return t&&\"object\"==typeof t?t:{}}function a(t,e,n){O[t]||(O[t]={id:t,depsDec:e,deps:e||[\"require\",\"exports\",\"module\"],factoryDeps:[],factory:n,exports:{},config:s,state:E,require:k(t),depMs:[],depMkv:{},depRs:[],hang:0})\n}function c(t){var e=O[t];if(e&&!m(t,N)){var n=e.deps,o=e.factory,i=0;\"function\"==typeof o&&(i=Math.min(o.length,n.length),!e.depsDec&&o.toString().replace(/(\\/\\*([\\s\\S]*?)\\*\\/|([^:]|^)\\/\\/(.*)$)/gm,\"\").replace(/require\\(\\s*(['\"])([^'\"]+)\\1\\s*\\)/g,function(t,e,o){n.push(o)}));var r=[],s=[];A(n,function(n,o){var a,c,d=I(n),l=T(d.mod,t);l&&!B[l]?(d.res&&(c={id:n,mod:l,res:d.res},s.push(n),e.depRs.push(c)),a=e.depMkv[l],a||(a={id:d.mod,absId:l,hard:i>o},e.depMs.push(a),e.depMkv[l]=a,r.push(l))):a={absId:l},i>o&&e.factoryDeps.push(c||a)\n}),e.state=N,u(t),b(r),s.length&&e.require(s,function(){A(e.depRs,function(e){e.absId||(e.absId=T(e.id,t))}),d()})}}function d(){for(var t in z)c(t),l(t),p(t)}function l(t){function e(t){if(c(t),!m(t,N))return!1;if(m(t,P)||n[t])return!0;n[t]=1;var o=O[t],i=!0;return A(o.depMs,function(t){i=e(t.absId)&&i}),i&&A(o.depRs,function(t){return i=!!t.absId}),i&&!m(t,P)&&(o.state=P),n[t]=0,i}var n={};e(t)}function u(e){function n(){if(!o&&i.state===P){o=1;var n=1;if(A(i.factoryDeps,function(t){var e=t.absId;\nreturn B[e]?void 0:(p(e),n=m(e,M))}),n){try{var r=i.factory,s=\"function\"==typeof r?r.apply(t,f(i.factoryDeps,{require:i.require,exports:i.exports,module:i})):r;null!=s&&(i.exports=s),i.invokeFactory=null}catch(a){throw i.hang=1,a}g(e)}}}var o,i=O[e];i.invokeFactory=n}function m(t,e){return O[t]&&O[t].state>=e}function p(t){var e=O[t];e&&e.invokeFactory&&e.invokeFactory()}function f(t,e){var n=[];return A(t,function(t,o){\"object\"==typeof t&&(t=t.absId),n[o]=e[t]||O[t].exports}),n}function h(t,e){if(m(t,M))return void e();\nvar n=G[t];n||(n=G[t]=[]),n.push(e)}function g(t){var e=O[t];e.state=M,delete z[t];for(var n=G[t]||[],o=n.length;o--;)n[o]();n.length=0,G[t]=null}function b(e,n,o){function i(){if(\"function\"==typeof n&&!r){var o=1;A(e,function(t){return B[t]?void 0:o=!!m(t,M)}),o&&(r=1,n.apply(t,f(e,B)))}}var r=0;A(e,function(t){B[t]||m(t,M)||(h(t,i),(t.indexOf(\"!\")>0?w:v)(t,o))}),i()}function v(e){function n(){var t=K[e];q(t||e,o)}function o(){if(s){var n;\"function\"==typeof s.init&&(n=s.init.apply(t,f(a,B))),null==n&&s.exports&&(n=t,A(s.exports.split(\".\"),function(t){return n=n[t],!!n\n})),r(e,a,function(){return n||{}})}else i(e);d()}if(!Q[e]&&!O[e]){Q[e]=1;var s=F.shim[e];s instanceof Array&&(F.shim[e]=s={deps:s});var a=s&&(s.deps||[]);a?(A(a,function(t){F.shim[t]||(F.shim[t]={})}),H(a,n)):n()}}function w(t,e){function n(e){c.exports=e||!0,g(t)}function o(o){var i=e?O[e].require:H;o.load(a.res,i,n,s.call({id:t}))}if(!O[t]){var r=K[t];if(r)return void v(r);var a=I(t),c={id:t,state:N};O[t]=c,n.fromText=function(t,e){new Function(e)(),i(t)},o(H(a.mod))}}function _(t,e){var n=D(t,1,e);\nreturn n.sort(L),n}function y(){function t(t){K[C(t)]=n}F.baseUrl=F.baseUrl.replace(/\\/$/,\"\")+\"/\",V=_(F.paths),X=_(F.map,1),A(X,function(t){t.v=_(t.v)});var e=X[X.length-1];e&&\"*\"===e.k&&A(X,function(t){t!=e&&(t.v=t.v.concat(e.v))}),J=[],A(F.packages,function(t){var e=t;\"string\"==typeof t&&(e={name:t.split(\"/\")[0],location:t,main:\"main\"}),e.location=e.location||e.name,e.main=(e.main||\"main\").replace(/\\.js$/i,\"\"),e.reg=R(e.name),J.push(e)}),J.sort(L),Y=_(F.urlArgs,1),K={};for(var n in F.bundles)A(F.bundles[n],t)\n}function x(t,e,n){A(e,function(e){return e.reg.test(t)?(n(e.v,e.k,e),!1):void 0})}function $(t,e){var n=/(\\.[a-z0-9]+)$/i,o=/(\\?[^#]*)$/,i=\"\",r=t,s=\"\";o.test(t)&&(s=RegExp.$1,t=t.replace(o,\"\")),n.test(t)&&(i=RegExp.$1,r=t.replace(n,\"\")),null!=e&&(r=T(r,e));var a,c=r;return x(r,V,function(t,e){c=c.replace(e,t),a=1}),a||x(r,J,function(t,e,n){c=c.replace(n.name,n.location)}),/^([a-z]{2,10}:\\/)?\\//i.test(c)||(c=F.baseUrl+c),c+=i+s,x(r,Y,function(t){c+=(c.indexOf(\"?\")>0?\"&\":\"?\")+t}),c}function k(t){function n(n,i){if(\"string\"==typeof n){if(!o[n]){var r=T(n,t);\nif(p(r),!m(r,M))throw new Error('[MODULE_MISS]\"'+r+'\" is not exists!');o[n]=O[r].exports}return o[n]}if(n instanceof Array){var s=[],a=[];A(n,function(n,o){var i=I(n),r=T(i.mod,t),c=i.res,d=r;if(c){var l=r+\"!\"+c;0!==c.indexOf(\".\")&&K[l]?r=d=l:d=null}a[o]=d,e(r),s.push(r)}),b(s,function(){A(a,function(o,i){null==o&&(o=a[i]=T(n[i],t),e(o))}),b(a,i,t),d()},t),d()}}var o={};return n.toUrl=function(e){return $(e,t||\"\")},n}function T(t,e){if(!t)return\"\";e=e||\"\";var n=I(t);if(!n)return t;var o=n.res,i=S(n.mod,e);\nif(x(e,X,function(t){x(i,t,function(t,e){i=i.replace(e,t)})}),i=C(i),o){var r=m(i,M)&&H(i);o=r&&r.normalize?r.normalize(o,function(t){return T(t,e)}):T(o,e),i+=\"!\"+o}return i}function C(t){return A(J,function(e){var n=e.name;return n===t?(t=n+\"/\"+e.main,!1):void 0}),t}function S(t,e){if(0!==t.indexOf(\".\"))return t;for(var n=e.split(\"/\").slice(0,-1).concat(t.split(\"/\")),o=[],i=0;in&&e(t[n],n)!==!1;n++);}function L(t,e){var n=t.k||t.name,o=e.k||e.name;return\"*\"===o?-1:\"*\"===n?1:o.length-n.length}function j(){if(Z)return Z;if(te&&\"interactive\"===te.readyState)return te;\nfor(var t=document.getElementsByTagName(\"script\"),e=t.length;e--;){var n=t[e];if(\"interactive\"===n.readyState)return te=n,n}}function q(t,e){function n(){var t=o.readyState;(\"undefined\"==typeof t||/^(loaded|complete)$/.test(t))&&(o.onload=o.onreadystatechange=null,o=null,e())}var o=document.createElement(\"script\");o.setAttribute(\"data-require-id\",t),o.src=$(t+\".js\"),o.async=!0,o.readyState?o.onreadystatechange=n:o.onload=n,Z=o,ne?ee.insertBefore(o,ne):ee.appendChild(o),Z=null}var U,O={},E=1,N=2,P=3,M=4,z={},B={require:n,exports:1,module:1},H=k(),F={baseUrl:\"./\",paths:{},config:{},map:{},packages:[],shim:{},waitSeconds:0,bundles:{},urlArgs:{}};\nn.version=\"2.1.4\",n.loader=\"esl\",n.toUrl=H.toUrl;var W=[];r.amd={};var G={},Q={};n.config=function(t){if(t){for(var e in F){var n=t[e],o=F[e];if(n)if(\"urlArgs\"===e&&\"string\"==typeof n)F.urlArgs[\"*\"]=n;else if(o instanceof Array)o.push.apply(o,n);else if(\"object\"==typeof o)for(var i in n)o[i]=n[i];else F[e]=n}y()}},y();var V,J,X,K,Y,Z,te,ee=document.getElementsByTagName(\"head\")[0],ne=document.getElementsByTagName(\"base\")[0];ne&&(ee=ne.parentNode),define||(define=r,require||(require=n),esl=n);var oe;\n!function(){for(var t=document.getElementsByTagName(\"script\"),e=t.length;e--;){var n=t[e];if(oe=n.getAttribute(\"data-main\"))break}}(),oe&&setTimeout(function(){n([oe])},4)}(this);var bds=window.bds||{};bds.amd={keys:{},addPaths:function(t){\"object\"==typeof t&&(require.config({paths:t}),$.extend(bds.amd.keys,t))},exist:function(t){return t&&\"undefined\"!=typeof bds.amd.keys[t]?!0:!1}},function(){var t=bds.util&&bds.util.domain?bds.util.domain.get(\"http://s1.bdstatic.com\"):\"http://s1.bdstatic.com\",e=bds.util&&bds.util.domain?bds.util.domain.get(\"http://ecmb.bdimg.com\"):\"http://ecmb.bdimg.com\";\nrequire.config({baseUrl:t+\"/r/www/cache/biz\",packages:[{name:\"ecma\",location:e+\"/public01\"},{name:\"ecmb\",location:e+\"/public01\"}],paths:{aladdin:t+\"/r/www/aladdin\",ui:t+\"/r/www/cache/amd/ui\",\"ui/config\":t+\"/r/www/cache/amd/ui/Control\",\"ui/lib\":t+\"/r/www/cache/amd/ui/Control\",\"ui/Control\":t+\"/r/www/cache/amd/ui/Control\"},urlArgs:{\"ui/ImgZoomHover\":\"20141104\",\"ui/ImgZoomHover1\":\"20141104\",\"ui/ImgZoomHover2\":\"20141104\",\"ui/ImgZoomHover3\":\"20141104\"}})}(),bds.amd.addPaths({\"voice/js/voice\":\"https://ss1.bdstatic.com/5eN1bjq8AAUYm2zgoY3K/r/www/cache/static/protocol/https/voice/js/voice_1672ed3\",\"plugins/swfobject\":\"https://ss1.bdstatic.com/5eN1bjq8AAUYm2zgoY3K/r/www/cache/static/protocol/https/plugins/swfobject_0178953\",\"soutu/js/tu\":\"https://ss1.bdstatic.com/5eN1bjq8AAUYm2zgoY3K/r/www/cache/static/protocol/https/soutu/js/tu_329aca4\"}),bds&&bds.comm&&(bds.comm.did=function(){for(var t=\"\",e=0;32>e;e++)t+=Math.floor(16*Math.random()).toString(16);\nreturn t}(),bds.comm.isAsync=function(){var t=\"onhashchange\"in window,e=\"onpopstate\"in window;return(e||t)&&1!=Cookie.get(\"ISSW\")&&!window.__disable_preload}());try{window.MutationObserver=window.WebKitMutationObserver=window.MozMutationObserver=null}catch(e){}jQuery&&jQuery.extend({stringify:function(t){function e(t){return/[\"\\\\\\x00-\\x1f]/.test(t)&&(t=t.replace(/[\"\\\\\\x00-\\x1f]/g,function(t){var e=i[t];return e?e:(e=t.charCodeAt(),\"\\\\u00\"+Math.floor(e/16).toString(16)+(e%16).toString(16))})),'\"'+t+'\"'\n}function n(t){var e,n,o,i=[\"[\"],r=t.length;for(n=0;r>n;n++)switch(o=t[n],typeof o){case\"undefined\":case\"function\":case\"unknown\":break;default:e&&i.push(\",\"),i.push($.stringify(o)),e=1}return i.push(\"]\"),i.join(\"\")}if(\"JSON\"in window)return JSON.stringify(t);var o=typeof t;if(\"object\"!=o||null===t)return\"string\"==o&&(t='\"'+t+'\"'),String(t);var i={\"\\b\":\"\\\\b\",\"\t\":\"\\\\t\",\"\\n\":\"\\\\n\",\"\\f\":\"\\\\f\",\"\\r\":\"\\\\r\",'\"':'\\\\\"',\"\\\\\":\"\\\\\\\\\"};switch(typeof t){case\"undefined\":return\"undefined\";case\"number\":return isFinite(t)?String(t):\"null\";\ncase\"string\":return e(t);case\"boolean\":return String(t);default:if(null===t)return\"null\";if(\"[object Array]\"===Object.prototype.toString.call(t))return n(t);var r,s,a=[\"{\"],c=$.stringify;for(var d in t)if(Object.prototype.hasOwnProperty.call(t,d))switch(s=t[d],typeof s){case\"undefined\":case\"unknown\":case\"function\":break;default:r&&a.push(\",\"),r=1,a.push(c(d)+\":\"+c(s))}return a.push(\"}\"),a.join(\"\")}},format:function(t,e){t=String(t);var n=Array.prototype.slice.call(arguments,1),o=Object.prototype.toString;\nreturn n.length?(n=1==n.length&&null!==e&&/\\[object Array\\]|\\[object Object\\]/.test(o.call(e))?e:n,t.replace(/#\\{(.+?)\\}/g,function(t,e){var i=n[e];return\"[object Function]\"==o.call(i)&&(i=i(e)),\"undefined\"==typeof i?\"\":i})):t},subByte:function(t,e,n){var o=[],i=t.split(\"\");n=n||\"…\";for(var r=0,s=i.length;s>r;r++)i[r].charCodeAt(0)>255&&o.push(\"*\"),o.push(i[r]);return e&&e>0&&o.length>e?i=o.join(\"\").substring(0,e-1).replace(/\\*/g,\"\")+n:t},getByteLength:function(t){for(var e=[],n=t.split(\"\"),o=0,i=n.length;i>o;o++)n[o].charCodeAt(0)>255&&e.push(\"*\"),e.push(n[o]);\nreturn e.length},_isValidKey:function(t){return new RegExp('^[^\\\\x00-\\\\x20\\\\x7f\\\\(\\\\)<>@,;:\\\\\\\\\\\\\"\\\\[\\\\]\\\\?=\\\\{\\\\}\\\\/\\\\u0080-\\\\uffff]+$').test(t)},setCookie:function(t,e,n){if(e=encodeURIComponent(e),jQuery._isValidKey(t)){n=n||{};var o=n.expires;\"number\"==typeof n.expires&&(o=new Date,o.setTime(o.getTime()+n.expires)),document.cookie=t+\"=\"+e+(n.path?\"; path=\"+n.path:\"\")+(o?\"; expires=\"+o.toGMTString():\"\")+(n.domain?\"; domain=\"+n.domain:\"\")+(n.secure?\"; secure\":\"\")}},getCookie:function(t){var e=\"\";\nif(jQuery._isValidKey(t)){var n=new RegExp(\"(^| )\"+t+\"=([^;]*)(;|$)\"),o=n.exec(document.cookie);if(o&&(e=o[2]||null,\"string\"==typeof e))return e=decodeURIComponent(e)}return null},removeCookie:function(t,e){e=e||{},e.expires=new Date(0),jQuery.setCookie(t,\"\",e)},limitWd:function(t,e){if(\"\"===t)return\"\";t+=\"\";var n=t.split(\"\"),o=n.length,i=0,r=e||255;if(o<=parseInt(r/2))return t;for(var s=0;o>s;s++){if(i+=n[s].charCodeAt(0)>255?2:1,i===r)return n=t.substring(0,s+1);if(i>r)return n=t.substring(0,s)\n}return t}}),$(window).on(\"resize\",function(){\"pageState\"in window&&0!=pageState&&(bds.util.setContainerWidth(),bds.event.trigger(\"se.window_resize\"))}),bds.util.addStyle=function(t){if(isIE){var e=document.createStyleSheet();e.cssText=t}else{var n=document.createElement(\"style\");n.type=\"text/css\",n.appendChild(document.createTextNode(t)),document.getElementsByTagName(\"HEAD\")[0].appendChild(n)}},bds.util.getContentRightHeight=function(){return $(\"#content_right\").get(0)?$(\"#content_right\").get(0).offsetHeight:0\n},bds.util.getContentLeftHeight=function(){return $(\"#content_left\").get(0)?$(\"#content_left\").get(0).offsetHeight:0},window.A||(window.bds=window.bds||{},bds.util=bds.util||{},bds.util.getWinWidth=function(){return window.document.documentElement.clientWidth},bds.util.setContainerWidth=function(){var t=G(\"container\"),e=G(\"wrapper\"),n=function(t,e){e.className=e.className.replace(t,\"\")},o=function(t,e){e.className=(e.className+\" \"+t).replace(/^\\s+/g,\"\")},i=function(t,e){return t.test(e.className)\n};bds.util.getWinWidth()<1207?(t&&(n(/\\bcontainer_l\\b/g,t),i(/\\bcontainer_s\\b/,t)||o(\"container_s\",t)),e&&(n(/\\bwrapper_l\\b/g,e),i(/\\bwrapper_s\\b/,e)||o(\"wrapper_s\",e)),bds.comm.containerSize=\"s\"):(t&&(n(/\\bcontainer_s\\b/g,t),i(/\\bcontainer_l\\b/,t)||o(\"container_l\",t)),e&&(n(/\\bwrapper_s\\b/g,e),i(/\\bwrapper_l\\b/,e)||o(\"wrapper_l\",e)),bds.comm.containerSize=\"l\")},function(){var t=[],e=!1,n=function(t,e){try{t.call(e)}catch(n){}},o=function(){this.ids=[],this.has=!0,this.list=[],this.logs=[],this.loadTimes=[],this.groupData=[],this.mergeFns=[],this._currentContainer=null\n};window.A=bds.aladdin={},n(o,window.A),bds.ready=function(o){\"function\"==typeof o&&(e?n(o):t.push(o))},bds.doReady=function(){for(e=!0;t.length;)n(t.shift())},bds.clearReady=function(){e=!1,t=[]},A.__reset=o;var i=function(){var t=document.getElementsByTagName(\"script\");return function(){var e=t[t.length-1];window.currentScriptElem&&(e=window.currentScriptElem);for(var n=e;n;){if(n.className&&/(?:^|\\s)result(?:-op)?(?:$|\\s)/.test(n.className)&&(tplname=n.getAttribute(\"tpl\")))return n;n=n.parentNode\n}}}(),r=function(t,e,n){var o;if(t.initIndex?o=A.groupData[t.initIndex-1]:(o={container:t,data:{},handlers:[]},t.initIndex=A.groupData.length+1,A.groupData.push(o)),\"function\"==typeof e)o.handlers.push(e);else if(\"object\"==typeof e)for(var i in e)e.hasOwnProperty(i)&&(o.data[i]=e[i]);else o.data[e]=n};A.init=A.setup=function(t,e){if(void 0!==t&&null!==t){var n=A._currentContainer||i();n&&r(n,t,e)}},A.merge=function(t,e){A.mergeFns.push({tplName:t,fn:e})}}()),A.uiPrefix=\"//www.baidu.com/cache/aladdin/ui/\",function(){var t=window.bds.aladdin,e=[],n={},o=0,i=function(t,e){try{t.call(e)\n}catch(n){}},r=function(t){t.ajaxId=++o,n[t.ajaxId]=t},s=function(t){delete n[t.ajaxId]},a=function(t){return t.ajaxId?n.hasOwnProperty(t.ajaxId):!1},c=function(t){var e={};if(t)try{var n=new Function(\"return \"+t)();n&&(e=n)}catch(o){}return e},d=function(){for(var t,e,n=$(\".result-op\").get().concat($(\".result\").get()),o={},i=0;e=n[i];i++)(t=e.getAttribute(\"tpl\"))&&(o[t]?o[t].push(e):o[t]=[e]);return o},l=[],u=[];t.addDisposeHandler=function(t){u.push(t)},t.dispose=function(){for(;l.length;){var t=l.shift();\ni(t.fn,t.obj)}for(var e=u,n=0;n1)if(s)t(a.shift(),function(){a.length>0&&t(a,s)\n});else for(;a.length;)t(a.shift());else{if(r=a[0],\"jquery\"===r&&window.jQuery)return!i.ui.jquery&&(i.ui.jquery=window.jQuery),void(s&&s());var c=r.replace(/\\./g,\"/\"),d=r.replace(/^[\\s\\S]*\\./,\"\"),l=i.uiPrefix+c+\"/\"+d;0==c.search(\"style/\")?e(l+\".css\",s):(l+=\".js\",m.hasOwnProperty(r)?\"function\"==typeof m[r]?l=m[r](r,l):\"string\"==typeof m[r]&&(l=m[r]):m.hasOwnProperty(\"*\")&&(l=m[\"*\"](r,l)),s?o(l,s):n(l))}}function e(t,e){if(e=e||u,t in r)return void e();var n=c.createElement(\"link\");n.rel=\"stylesheet\",n.type=\"text/css\",n.href=t,n.setAttribute(\"data-for\",\"A.ui\"),d.appendChild(n),r[t]=1,e()\n}function n(t){return l?void o(t,u):void(t in r||(c.write(''),r[t]=1))}function o(t,e){if(e=e||u,t in r)return void e();if(t in s)return void a[t].push(e);s[t]=1;var n=a[t]=[e],o=c.createElement(\"script\");o.type=\"text/javascript\",o.charset=\"gb2312\",o.onload=o.onreadystatechange=function(){if(!this.readyState||\"loaded\"===this.readyState||\"complete\"===this.readyState){for(;n.length;)n.shift()();delete s[t],r[t]=1,o.onload=o.onreadystatechange=null\n}},o.src=t,o.setAttribute(\"data-for\",\"A.ui\"),d.insertBefore(o,d.firstChild)}var i=window.A,r={},s={},a={},c=document,d=c.getElementsByTagName(\"head\")[0],l=!1,u=(i.baidu,function(){}),m={\"*\":function(t,e){return e+\"?v=20170208\"},scrollbarv:function(t,e){return e+\"?v=20170208\"},likeshare4:function(t,e){return e+\"?v=20170208\"},mboxsingleton:function(t,e){return e+\"?v=20170208\"},sms:function(t,e){return e+\"?v=20170208\"},tab:function(t,e){return e+\"?v=20170208\"},tabs:function(t,e){return e+\"?v=20170208\"\n},musicplayer:function(t,e){return e+\"?v=20170208\"},slider:function(t,e){return e+\"?v=20170208\"},suggestion:function(t,e){return e+\"?v=20170208\"},tabs5:function(t,e){return e+\"?v=20170208\"},tabx:function(t,e){return e+\"?v=20170208\"},dropdown1:function(t,e){return e+\"?v=20170208\"},dropdown21:function(t,e){return e+\"?v=20170208\"},advert:function(t,e){return e+\"?v=20170208\"},advert2:function(t,e){return e+\"?v=20170208\"},honourCard:function(t,e){return e+\"?v=20170208\"},honourCard3:function(t,e){return e+\"?v=20170208\"\n},honourCard4:function(t,e){return e+\"?v=20170208\"},share:function(t,e){return e+\"?v=20170208\"},qHotCity:function(t,e){return e+\"?v=20170208\"},mapapi:function(t,e){return e+\"?v=20170208\"},qunarfilters:function(t,e){return e+\"?v=20170208\"},renderIframe3:function(t,e){return e+\"?v=20170208\"},share2:function(t,e){return e+\"?v=20170208\"},ALD_feedback:function(t,e){return e+\"?v=20170208\"},addtohome:function(t,e){return e+\"?v=20170208\"},addtohome2:function(t,e){return e+\"?v=20170208\"},gpsApi:function(t,e){return e+\"?v=20170208\"\n},simGps:function(t,e){return e+\"?v=20170208\"}};$(document).ready(function(){l=!0}),i.addDisposeHandler({obj:i,fn:function(){for(var t in a)if(a.hasOwnProperty(t))for(var e=a[t];e.length;)e.pop()}}),t.cache=r,i.uicss=function(t){e(i.uiPrefix+t)},i.uijs=function(t,e){o(i.uiPrefix+t,e)},i.uijsPathMap=function(t){$.extend(m,t)},i.use=t,i.ui=i.ui||{},i.addCssText=function(t){var e=\"opui-style-tag-id\",n=\"data-for\",o=\"A.ui\",i=document.getElementById(e);i||(i=document.createElement(\"style\"),i.setAttribute(\"type\",\"text/css\"),i.setAttribute(n,o),i.id=e,document.getElementsByTagName(\"head\")[0].appendChild(i));\ntry{var r=document.createTextNode(t);i.appendChild(r)}catch(s){i.styleSheet&&(i.styleSheet.cssText+=t)}},$(window).on(\"swap_end\",function(){var t=/MSIE\\s?6/.test(window.navigator.userAgent),e=function(t,e,n){$(t).each(function(t,o){var i=$(o),r=new Image,s=i.attr(\"src\");r.onload=function(){var t=e,o=n,s=this.width,a=this.height,c=s/a/(t/o);c>1?(s=s>t?t:\"auto\",a=\"auto\"):(a=a>o?o:\"auto\",s=\"auto\"),i.css({height:a,width:s}),r.onload=null,r=null},r.src=s})};t&&e(\"img.result-left-img\",98,121),$(\".c-feedback\").bind(\"click\",function(){var t=this;\ni.use(\"ALD_feedback\",function(){var e,n,o=\"right\",r=$(t);r.parents(\"#content_left\").length?(o=\"left\",n=r.parents(\".result-op\"),e=n.attr(\"srcid\")):r.parents(\"#content_right\").length&&(n=r.parents(\"#con-ar\"));var s={query:bds.comm.query,srcid:e,target:n,username:bds.comm.username,flag:o},a=i.ui.ALD_feedback(s);i.addDisposeHandler({obj:a,fn:a.dispose})})})})}(),$(window).on(\"swap_begin\",function(){A.dispose(),A.__reset(),A.__clearDispose()}),$(window).on(\"swap_dom_ready\",function(){bds.ready(A.__runAla),bds.doReady()\n}),bds.event=new function(){function t(t,e){if(\"function\"==typeof e||e instanceof Function){var n=i(t);r[n.name]=r[n.name]||[],r[n.name].push({prod:n.prod,callback:e})}}function e(t,e){for(var n=i(t),s=r[n.name]||[],a=0;ac;c++){var l=s[c];try{o(l.prod,n.prod)&&l.callback.call(this,a)}catch(u){}}}function o(t,e){return new RegExp(\"^\"+t.replace(/\\./g,\"\\\\.\").replace(/\\*/g,\".+\")+\"$\").test(e)\n}function i(t){var e=t.match(/(.+)\\.(.+)/);return e&&e[2]?{prod:e[1],name:e[2]}:{}}var r={};this.on=t,this.off=e,this.trigger=n,this.events=r},bds.se.link=function(){function t(t,e){var n=\"/s?\",o={tn:bds.comm.tn},i=\"wd=\"+encodeURIComponent(t);e&&(o=$.extend(o,e));for(var r in o)o.hasOwnProperty(r)&&(i+=\"&\"+r+\"=\"+encodeURIComponent(o[r]));return n+i}return{getSearchUrl:t}}(),!function(A){function clickDebug(){}function bindP5(){var item,index=(bds.comm.pageNum-1)*bds.comm.pageSize+1,leftItems=contentLeft&&contentLeft.children||[],rightItems=contentRight&&contentRight.children||[],topItems=contentTop&&contentTop.children||[],isResult=function(t){return 1==t.nodeType&&t.className&&/\\bresult(\\-op)?\\b/.test(t.className)\n},isFrame=function(t){return 1==t.nodeType&&t.className&&/\\bc\\-frame\\b/.test(t.className)},setClickData=function(wrap,data){var sData=wrap.getAttribute(\"data-click\")||\"{}\";try{var oData=eval(\"(\"+sData+\")\");sData=$.stringify($.extend(oData,data)),wrap.setAttribute(\"data-click\",sData)}catch(e){clickDebug(e)}},bindP5ClickData=function(t){for(var e=0,n=t.length;n>e;e++)if(item=t[e],isResult(item))setClickData(item,{p5:index++});else if(isFrame(item))try{for(var o=item.children[0].children,i=0,r=o.length;r>i;i++){var s=o[i];\nisResult(s)&&setClickData(s,{p5:index++})}}catch(a){clickDebug(a)}index=(bds.comm.pageNum-1)*bds.comm.pageSize+1};bindP5ClickData(leftItems),bindP5ClickData(rightItems),bindP5ClickData(topItems)}function getXPath(t,e,n){if(n=n||[],e=e||document,t===e)return n;if(t.parentNode!==e&&(n=getXPath(t.parentNode,e,n)),t.previousSibling){var o=1,i=t.previousSibling;do 1==i.nodeType&&i.nodeName==t.nodeName&&o++,i=i.previousSibling;while(i)}return 1==t.nodeType&&n.push(t.nodeName.toLowerCase()+(o>1?o:\"\")),n\n}function bindLogEvent(){$body=$(\"body\"),$body.on(\"mousedown\",function(t){var t=window.event||t,e=t.srcElement||t.target,n=$(e);try{for(var o,i,r=n;r.length&&!(r.hasClass(\"result\")||r.hasClass(\"result-op\")||r.hasClass(\"xpath-log\"));)r=r.parent();if(!r.length)return;r.hasClass(\"result-op\")?o=\"alop\":r.hasClass(\"result\")&&(o=\"as\"),i=r.get(0);var s=getXPath(e,i);check(s,e,i)&&log(s,e,i,o)}catch(t){clickDebug(t)}})}function getType(t,e,n){for(var o=e,i=LOG_CLASS,r=i.length,s=C_LOG_CLASS,a=s.length,c=t.join(\" \"),d=0;o!==n;){for(d=0;r>d;d++)if($(o).hasClass(\"OP_LOG_\"+i[d]))return i[d].toLowerCase();\nfor(d=0;a>d;d++)if($(o).hasClass(\"c-\"+s[d]))return s[d];o=o.parentNode}return/\\bh3\\d*\\b/.test(c)?\"title\":/\\ba\\d*\\b/.test(c)?/\\bimg\\d*\\b/.test(c)?\"img\":\"link\":/\\b(input|select|button|textarea|datalist)\\d*\\b/.test(c)?\"input\":/\\blabel\\d*\\b/.test(c)&&e.getElementsByTagName(\"input\").length>0?\"input\":\"\"}function check(t,e,n){return A.LOGTOOL?(A.LOGTOOL.call(e,t,e,n),!1):!0}function log(t,e,n,o){if(null==e.getAttribute(\"data-nolog\")){var i=getType(t,e,n);if(!i)return!1;if(\"title\"==i&&!/\\ba\\d*\\b/.test(t))return!1;\nvar r=\"http://nourl.ubs.baidu.com\",s=n.getAttribute(\"mu\")||r;if(s==r){var a=n.getElementsByTagName(\"h3\");if(a&&a[0]){var c=a[0].getElementsByTagName(\"a\");s=c&&c[0]?c[0].href:s}}var d,l=t.length,u=e,m=n.getAttribute(\"srcid\"),p=\"\",f=1==e.nodeType?e.tagName.toLowerCase():\"\";if(\"input\"==i)if(/input|textarea/.test(f))p=e.value,e.type&&\"password\"==e.type.toLowerCase()&&(p=\"\");else if(/select|datalist/.test(f)){if(e.children.length>0){var h=e.selectedIndex||0;p=e.children[h>-1?h:0].innerHTML}}else p=e.innerHTML||e.value||\"\";\nelse if(\"img\"==f&&(p=e.title),!p)for(;l>0;){if(l--,/^a\\d*\\b/.test(t[l])){if(d=u.href,p=u.innerHTML,null!=u.getAttribute(\"data-nolog\"))return;break}if(u.className&&/OP_LOG_/.test(u.className)){p=u.innerHTML;break}u=u.parentNode}p=$.trim(p),d&&\"#\"!==d.slice(-1)&&/^http/.test(d)||(d=s);var g={rsv_xpath:t.join(\"-\")+\"(\"+i+\")\",title:p,url:d,rsv_height:n.offsetHeight,rsv_width:n.offsetWidth,rsv_tpl:n.getAttribute(\"tpl\")},b={url:1,title:1};n.id&&n.id.match(/^\\d+$/)&&(g.p1=n.id),m&&(g.rsv_srcid=m);var v,w,_;\nu=e;do{if(null!=u.getAttribute(\"data-nolog\"))return;if(v=u.getAttribute(\"data-click\"))try{v=new Function(\"return \"+v)();for(w in v)\"fm\"==w&&null===v.fm&&(_=!0),v.hasOwnProperty(w)&&(\"undefined\"==typeof g[w]||b[w])&&(g[w]=v[w])}catch(y){clickDebug(y)}u=u.parentNode}while(u&&u!==n.parentNode);for(var x in g)null===g[x]&&delete g[x];if(\"title\"==i?\"mu\"in g&&delete g.mu:g.mu||(g.mu=s),_)\"fm\"in g&&delete g.fm;else if(\"input\"==i&&(g.fm=\"beha\",g.url=r),g.fm||(g.fm=o),!g.fm)return;window.c(g)}}var baidu=window.baidu,LOG_CLASS=[\"TITLE\",\"LINK\",\"IMG\",\"BTN\",\"INPUT\",\"OTHERS\"],C_LOG_CLASS=[\"btn\"],contentLeft,contentRight,contentTop;\nwindow.initResultClickLog=function(){if(contentLeft=$(\"#content_left\").get(0),contentRight=$(\"#con-ar\").get(0),contentTop=$(\"#con-at\").get(0),A.has){var t,e=$(\".result-op\").get();$.each(e,function(e,n){(t=n.getAttribute(\"srcid\"))&&A.ids.push([n.id,t])})}bindP5()},$(document).ready(function(){bindLogEvent()})}(window.bds.aladdin);for(ai in al_arr)al_arr[ai]();$(document).ready(function(){var t;$(document).on(\"click\",\".t>a,.op-se-listen-recommend\",function(e){e=window.event||e;var n=$(\"#wrapper_wrapper\"),o=$(this).closest(\".c-container\"),i=o.length?o.find(\".c-recommend\").eq(0):[],r=o.length?o.find(\".wnor-fanli-wrap\"):[];\n!e.ctrlKey&&(i.length&&\"none\"===i.css(\"display\")||r.length&&\"none\"===r.css(\"display\"))&&(t=setTimeout(function(){n.find(\".c-recommend\").hide(),i.show(),n.find(\".wnor-fanli-wrap\").hide(),r.show()},150))}),$(window).on(\"swap_begin\",function(){this.clearTimeout(t)})}),window.onunload=function(){},bds.se.openime=function(t){window.bdime?openIme.set(\"py\",!0):$.ajax({cache:!0,dataType:\"script\",url:\"https://ss1.bdstatic.com/5eN1bjq8AAUYm2zgoY3K/r/www/cache/static/protocol/https/plugins/ime_c5abb66.js\",success:function(){t&&openIme.set(\"py\",!0)\n}})},function(){/\\bbdime=[12]/.test(document.cookie)||$(window).one(\"swap_end\",function(){})}(),bds&&bds.comm&&!bds.comm.containerSize&&(bds.comm.containerSize=\"s\"),bds.util.setContainerWidth=function(){var t=$(\"#container\"),e=$(\"#wrapper\"),n=bds.util.getWinWidth(),o=bds.comm.containerSize;if(1217>n)t.removeClass(\"container_l container_xl\").addClass(\"container_s\"),e.removeClass(\"wrapper_l\").addClass(\"wrapper_s\"),bds.comm.containerSize=\"s\";else{if(!(n>=1217))return;t.removeClass(\"container_s container_xl\").addClass(\"container_l\"),e.removeClass(\"wrapper_s\").addClass(\"wrapper_l\"),bds.comm.containerSize=\"l\"\n}o!=bds.comm.containerSize&&$(window).trigger(\"container_resize\",bds.comm.containerSize)},bds.util.setFootStyle=function(){this.init(),this.bindEvent()},$.extend(bds.util.setFootStyle.prototype,{ie6:bds.comm.upn&&\"msie\"===bds.comm.upn.browser&&6==bds.comm.upn.ie,init:function(){var t=$(\"#foot\");if(t.addClass(\"foot_fixed_bottom\"),this.ie6){var e=$(window).height()+$(window).scrollTop()-t.outerHeight(!0);t.css(\"top\",e+\"px\")}},setFixedIe6:function(){var t=$(\"#foot\"),e=$(window).height()+$(window).scrollTop()-t.outerHeight(!0);\nt.css(\"top\",e+\"px\")},bindEvent:function(){var t=this;t.ie6&&$(window).on(\"resize.setFootStyle, scroll.setFootStyle\",function(){t.setFixedIe6()})}});var bds=bds||{};bds.se=bds.se||{},bds.se.tip=bds.se.tip||{},bds.comm.tipZIndex=220,bds.comm.tips=[],bds.se.tip=function(t){this.init=function(){this.op={target:t.target||{},mode:t.mode||\"over\",title:t.title||null,content:t.content||null,uncontrolled:t.uncontrolled?!0:!1,arrow:{has:1,offset:10,r:!1,c:!1},close:t.close||0,align:t.align||\"left\",offset:{x:10,y:20},arrowSize:16},t.arrow&&(this.op.arrow.has=0==t.arrow.has?0:1,this.op.arrow.offset=t.arrow.offset>=0?t.arrow.offset:10,this.op.arrow.r=t.arrow.r,this.op.arrow.c=t.arrow.c),t.offset&&(this.op.offset.x=t.offset.x||0==t.offset.x?t.offset.x:10,this.op.offset.y=t.offset.y||0==t.offset.y?t.offset.y:20),this.ext=t.ext||{},this.dom=$(\"
    \",{\"class\":\"c-tip-con\"}),this.visible=!1,this.rendered=!1,this.isAuto=\"auto\"===this.op.align?!0:!1,this.bindEvent()\n},this.render=function(){this.op.close&&this.enableCloseIcon(),this.op.title&&this.setTitle(this.op.title),this.op.content&&this.setContent(this.op.content),this.op.arrow.has&&this.enableArrow(),$(\"#c-tips-container\").append(this.dom)},this.bindEvent=function(){if(this.delay={overIcon:null,outIcon:null,overDom:null,outDom:null},\"over\"==this.op.mode){var t=this;$(t.op.target).on(\"mouseenter\",function(){window.clearTimeout(t.delay.outIcon),window.clearTimeout(t.delay.outDom),t.delay.overIcon=setTimeout(function(){t.show()\n},200)}),t.dom.on(\"mouseenter\",function(){window.clearTimeout(t.delay.outIcon),window.clearTimeout(t.delay.outDom),t.delay.overDom=setTimeout(function(){t.show()},200)}),$(t.op.target).on(\"mouseleave\",function(){window.clearTimeout(t.delay.overIcon),window.clearTimeout(t.delay.overDom),t.delay.outIcon=setTimeout(function(){t.hide()},200)}),t.dom.on(\"mouseleave\",function(){window.clearTimeout(t.delay.overIcon),window.clearTimeout(t.delay.overDom),t.delay.outIcon=setTimeout(function(){t.hide()},200)\n})}else if(\"none\"==this.op.mode){var t=this;t.show()}},this.enableArrow=function(){if(this.op.arrow.r)var t=$(\"
    \",{\"class\":\"c-tip-arrow\"}).html(\"\").appendTo(this.dom);else if(this.op.arrow.c)var t=$(\"
    \",{\"class\":\"c-tip-arrow\"}).html(\"\").appendTo(this.dom);else var t=$(\"
    \",{\"class\":\"c-tip-arrow\"}).html(\"\").appendTo(this.dom);this.arrow=t},this.enableCloseIcon=function(){var t=this,e=$(\"
    \",{\"class\":\"c-tip-close\"}).html(\"\").appendTo(this.dom).click(function(){t.hide()\n});this.close=e},this.setTitle=function(t){if(t.nodeType)var e=$(\"

    \",{\"class\":\"c-tip-title\"}).append(t).appendTo(this.dom);else var e=$(\"

    \",{\"class\":\"c-tip-title\"}).html(t).appendTo(this.dom);this.title=e},this.setContent=function(t){var e=$(\"
    \").html(t).appendTo(this.dom);this.content=e},this.setArrow=function(t){if(t&&t.offset>=0&&(this.op.arrow.offset=t.offset),this.op.arrow.has&&this.arrow)switch(this.op.align){case\"left\":this.arrow.css({left:this.op.arrow.offset+\"px\"});break;case\"right\":this.arrow.css({right:this.op.arrow.offset+16+\"px\"})\n}},this.setOffset=function(t){switch(t&&(this.op.offset.x=t.x||0==t.x?t.x:this.op.offset.x,this.op.offset.y=t.y||0==t.y?t.y:this.op.offset.y),this.op.align){case\"left\":var e=$(this.getTarget()).offset();this.getDom().css({top:e.top+this.op.offset.y+\"px\",left:e.left-this.op.offset.x+\"px\"});break;case\"right\":var e=$(this.getTarget()).offset();this.getDom().css({top:e.top+this.op.offset.y+\"px\",left:e.left+this.op.offset.x+$(this.getTarget()).width()-this.getDom().width()+\"px\"})}},this.autoOffset=function(){var t,e={w:this.dom.outerWidth(),h:this.dom.outerHeight()},n=$(this.getTarget()),o=n.offset(),i={w:n.outerWidth(),h:n.outerHeight()},r=$(window),s=r.scrollTop(),a={w:r.width(),h:r.height()},c={left:0,top:0},d={};\na.h+s-i.h-o.top>e.h?(c.top=i.h+o.top+this.op.arrowSize/2,this.arrow&&this.arrow.removeClass(\"c-tip-arrow-down\")):o.top-s>e.h?(c.top=o.top-e.h-this.op.arrowSize/2,this.arrow&&this.arrow.addClass(\"c-tip-arrow-down\")):(c.top=i.h+o.top+this.op.arrowSize/2,this.arrow&&this.arrow.removeClass(\"c-tip-arrow-down\")),t=o.left+i.w/2-this.op.arrow.offset-this.op.arrowSize/2,c.left=t,c.left>0&&c.left+e.w>a.w?(c.left=o.left+i.w/2-e.w+this.op.arrow.offset+this.op.arrowSize/2,d.right=this.op.arrow.offset+this.op.arrowSize,d.left=\"auto\",c.left<0&&(c.left=t,d.left=this.op.arrow.offset,d.right=\"auto\")):(d.left=this.op.arrow.offset,d.right=\"auto\"),this.dom.css(c),this.arrow&&this.arrow.css(d)\n},this.enable=function(){},this.disable=function(){},this.destroy=function(){},this.show=function(){this.visible||(this.onShow(),this.rendered||(bds.comm.tips.push(this),this.render(),this.rendered=!0),this.isAuto?this.autoOffset():(this.setOffset(),this.setArrow()),this.dom.css({\"z-index\":bds.comm.tipZIndex}),bds.comm.tipZIndex++,this.dom.css({display:\"block\"}),this.visible=!0)},this.hide=function(){this.visible&&(this.dom.css({display:\"none\"}),this.onHide(),this.visible=!1)},this.onShow=t.onShow||function(){},this.onHide=t.onHide||function(){},this.getTarget=function(){return this.op.target\n},this.getDom=function(){return this.dom},this.init()},bds.event.trigger(\"se.api_tip_ready\"),$(document).mousedown(function(t){t=t||window.event;for(var e=t.target||t.srcElement;e&&e.tagName&&e!=document.body&&\"html\"!=e.tagName.toLowerCase()&&\"c-tip-con\"!=e.className;)e=e.parentNode;e&&\"c-tip-con\"!=e.className&&$(bds.comm.tips).each(function(){this.op.uncontrolled||this.op.close&&this.hide()})});var sethfPos=sethfPos||0;!function(){function t(t){if(t){var e=t.parentNode;e&&(e.style.marginBottom=\"20px\",e.style.marginTop=\"2px\")\n}}var e=\"//www.baidu.com/\",n=-1!=navigator.userAgent.indexOf(\"MSIE\")&&!window.opera,o=(100*Math.random(),\"百度一下,你就知道\"),i=\"\";if(window.fa=function(t){try{window.sidebar?window.sidebar.addPanel(o,e,\"\"):window.opera&&window.print?(t.setAttribute(\"rel\",\"sidebar\"),t.setAttribute(\"href\",e),t.setAttribute(\"title\",o),t.click()):window.external.AddFavorite(e,o)}catch(n){}},n)try{var r=/se /gi.test(navigator.userAgent),s=/AppleWebKit/gi.test(navigator.userAgent)&&/theworld/gi.test(navigator.userAgent),a=/theworld/gi.test(navigator.userAgent),c=/360se/gi.test(navigator.userAgent),d=/360chrome/gi.test(navigator.userAgent),l=/greenbrowser/gi.test(navigator.userAgent),u=/qqbrowser/gi.test(navigator.userAgent),m=/tencenttraveler/gi.test(navigator.userAgent),p=/maxthon/gi.test(navigator.userAgent),f=/krbrowser/gi.test(navigator.userAgent),h=!1;\ntry{h=+external.twGetVersion(external.twGetSecurityID(window)).replace(/\\./g,\"\")>1013}catch(g){}if(r||h||s||a||c||d||l||u||m||p||f){var b=document.getElementById(sethfPos?\"set_f\":\"setf\");b&&sethfPos&&(t(b),i=\"favorites\")}else{var v=document.getElementById(sethfPos?\"set_f\":\"setf\");v&&sethfPos&&(t(v),i=\"home\"),v.setAttribute(\"onClick\",\"h(this)\"),v.setAttribute(\"onmousedown\",\"return ns_c({'fm':'behs','tab':'homepage','pos':0})\"),v.href=\"/\",v.target=\"_self\",v.id=\"seth\"}}catch(g){}else{var b=document.getElementById(sethfPos?\"set_f\":\"setf\");\nsethfPos&&(t(b),i=\"favorites\")}i&&sethfPos&&ns_c({fm:\"sethf_show\",tab:i})}(),bds.se.loginCallbackFunc=null,bds.se.login=function(){var t=\"\",e=!1,n=\"\",o=function(t){var e=t||bds.comm.user;e&&$(\"#lb\").replaceWith(''+escapeHTML(bds.comm.username)+'')},i=function(o){e?(bds.se.passv3.setSubpro(t),bds.se.passv3.setMakeText(n),bds.se.loginCallbackFunc=o||function(){window.document.location.reload(!0)},bds.se.passv3.show()):$.getScript(location.protocol+\"//passport.baidu.com/passApi/js/uni_login_wrapper.js?cdnversion=\"+(new Date).getTime(),function(){initPassV3(),e=!0,bds.se.passv3.setSubpro(t),bds.se.passv3.setMakeText(n),bds.se.loginCallbackFunc=o||function(){window.document.location.reload(!0)\n},bds.se.passv3.show()})},r=function(t){if(bds.comm){bds.comm.user=t,bds.comm.username=t,window.bdUser=t,bds.se.passv3.hide(),bds.se.loginCallbackFunc.call(window,1,t);for(var e=0;e\",{\"class\":\"c-tip-menu\"}),toolsList=$(\"
      \"),toolsFavo=$(\"
    • \"),toolsFavoLink=$(\"\").html(\"收藏\");toolsFavoLink.on(\"mousedown\",function(){bds.se.tool.favo(ops,item.getAttribute(\"id\")),ns_c({fm:\"tools\",tab:\"favo\"})}),toolsFavoLink.on(\"mouseover\",function(){$(this).css(\"background-color\",\"#ebebeb\")}),toolsFavoLink.on(\"mouseout\",function(){$(this).css(\"background-color\",\"#fff\")}),toolsFavo.append(toolsFavoLink),toolsList.append(toolsFavo);\nvar toolsShare=$(\"
    • \"),toolsShareLink=$(\"\").html(\"分享\");toolsShareLink.on(\"mousedown\",function(){bds.se.tool.share(ops,item),ns_c({fm:\"tools\",tab:\"share\"})}),toolsShareLink.on(\"mouseover\",function(){$(this).css(\"background-color\",\"#ebebeb\")}),toolsShareLink.on(\"mouseout\",function(){$(this).css(\"background-color\",\"#fff\")}),toolsShare.append(toolsShareLink),toolsList.append(toolsShare);var fromType;fromType=$(item).parent().find(\".c-pingjia a\").attr(\"data-from\")?$(item).parent().find(\".c-pingjia a\").attr(\"data-from\"):\"ps_pc\";\nvar toolsKoubei=$(\"
    • \").html(\"评价');toolsList.append(toolsKoubei);var officalLogo=$($(item).closest(\".c-container\").find(\"h3.t\").children()[1]),vLogo=$(item).parent().find(\".vstar\"),isOffical=0,vLevel=0;\nofficalLogo&&\"官网\"==officalLogo.html()&&(isOffical=1),vLogo&&vLogo.attr(\"hint-data\")&&(vLevel=$.parseJSON(vLogo.attr(\"hint-data\")).hint[0].vlevel);var toolsReport=$(\"
    • \").html(\"举报');\ntoolsList.append(toolsReport),toolsDom.append(toolsList);var tTip=new bds.se.tip({target:$(\".c-icon\",item)[0],mode:\"none\",align:\"left\",offset:{x:33},arrow:{has:1,offset:30},content:toolsDom,ext:{category:\"tools\"}});tTip.onShow=function(){ns_c({fm:\"tools\",tab:\"show\"})}},this.init()},bds.se.tool.share=function(t,e){this.op=t||{},this.init=function(t,e){$.getScript(bds.comm.host.share,function(){$(bds.comm.tips).each(function(){this.op.uncontrolled||this.hide()});var n=new bds.se.tip({target:$(\".c-icon\",e)[0],mode:\"none\",offset:{x:33},arrow:{has:0},close:1,content:'
      '}),o=$(\".c-tools-share\",n.dom.get(0))[0];\n__bdshare.render({boxEle:o,url:t.url,txt:t.title+\" -- 分享自百度搜索\"})})}(this.op,e)},bds.se.tool.favo=function(t,e){if(this.op=t||{},this.init=function(t,e){if(t){var n=document.createElement(\"script\"),o=bds.comm.host.bfe,i=bds.comm.host.favo;n.src=o+\"?url=\"+encodeURIComponent(t.url)+\"&jump=\"+encodeURIComponent(i+\"/myfavorite/set?irt=1&t=\"+encodeURIComponent(t.title)+\"&id=\"+encodeURIComponent(e)+\"&c=bds.se.tool.favo.succ\")+\"&key=url\",document.body.appendChild(n)}},bds.comm.user)this.init(this.op,e);else if(bds.se.login&&bds.se.login.open){var n=this;\nbds.se.login.open(function(t){1==t&&n.init(n.op,e)})}},bds.se.tool.favo.succ=function(json){if(json.suc){if(json.status)switch(json.status){case 302:bds.se.login&&bds.se.login.open&&bds.se.login.open(function(stat,user){1==stat&&bds.se.tool.favo(eval(\"(\"+$(\"#\"+json.id)[0].getAttribute(\"data-tools\")+\")\"),json.id)});break;case 5:var succContent='
      ';succContent+='

      收藏失败,请稍后再试

      ',succContent+=\"
      \"}}else if(json.status){var succContent='
      ';\nswitch(succContent+='

      已收藏至:

      ',succContent+=\"\",succContent+=\"
      \"}$(bds.comm.tips).each(function(){this.op.uncontrolled||this.hide()}),succContent&&new bds.se.tip({target:$(\".c-icon\",document.getElementById(json.id))[0],offset:{x:33},arrow:{has:0},mode:\"none\",arrow:{has:0},close:1,content:succContent})\n};var bds=bds||{};bds.se=bds.se||{},bds.se.tools=bds.se.tools||{},bds.se.tools=function(){var t=delayHideOnIcon=delayShowOnTip=delayHideOnTip={};$(\"#container\").delegate(\".c-tools\",\"mouseover\",function(){var e=this;window.clearTimeout(delayHideOnIcon),window.clearTimeout(delayHideOnTip),t=setTimeout(function(){var t=1;$(bds.comm.tips).each(function(){return this.getTarget()==$(\".c-icon\",e)[0]?(t=0,this.show(),!1):void 0}),t&&(tools=new bds.se.tool(e))},200)}).delegate(\".c-tools\",\"mouseout\",function(){window.clearTimeout(t),window.clearTimeout(delayShowOnTip);\nvar e=this;delayHideOnIcon=setTimeout(function(){$(bds.comm.tips).each(function(){return this.getTarget()==$(\".c-icon\",e)[0]?(this.hide(),!1):void 0})},200)}),$(\"#c-tips-container\").delegate(\".c-tip-con\",\"mouseover\",function(){var t=this;window.clearTimeout(delayHideOnIcon),window.clearTimeout(delayHideOnTip),delayShowOnTip=setTimeout(function(){$(bds.comm.tips).each(function(){return this.getDom().get(0)==t&&this.ext.category&&\"tools\"==this.ext.category?(this.show(),!1):void 0})},200)}).delegate(\".c-tip-con\",\"mouseout\",function(){window.clearTimeout(t),window.clearTimeout(delayShowOnTip);\nvar e=this;delayHideOnTip=setTimeout(function(){$(bds.comm.tips).each(function(){return this.getDom().get(0)==e&&this.ext.category&&\"tools\"==this.ext.category?(this.hide(),!1):void 0})},200)})};var bds=bds||{};bds.se=bds.se||{},bds.se.slide=function(t){var e,n,o,i,r,s=this,a={},d=[],l=0,u=null;this._default={target:$(\"#lg\"),src:\"\",width:270,height:129,offsetLeft:0,isPad:!1,isRetina:!1,frames:103,animations:[{isAutoPlay:!0,frame_start:1,frame_end:30,delay:0,duration:100,repeats:0,process_before:function(){},event_loop:0,process_after:function(){}},{trigger_type:\"click\",trigger_duration:100,trigger_frame:31,trigger_fn:function(){},frame_start:32,frame_end:103,process_before:function(){},process_after:function(){},delay:0,duration:100,repeats:1,event_loop:0}]},this.timer=[],this.otherTimer=[],this.op=$.extend({},s._default,t),this.init=function(){return s.op.src?(s.createDom(),void(bds.comm.ishome&&s.op.target.length&&s.initAnimate())):void s.createPlayer()\n},this.createPlayer=function(){var t=s.op.target.find(\"map\"),e=t.length?t.find(\"area\").eq(0):\"\",o=s.op.play;o&&(n=$('\").appendTo(s.op.target),e.length?(n.wrap(''),e.attr(\"title\")&&n.attr(\"title\",e.attr(\"title\"))):n.wrap('
      '),n.on(o.trigger_type,function(){return o.trigger_duration?s.timer.push(window.setTimeout(function(){o.trigger_fn.call(s.op)\n},o.trigger_duration)):o.trigger_fn.call(s.op),!1}))},this.createDom=function(){var t='
      ',l=s.op.offsetLeft+\"px 0\",u=s.op.target.find(\"map\"),m=u.length?u.find(\"area\").eq(0):\"\",p=m?\"pointer\":p,f=s.op.animations instanceof Array?s.op.animations:[s.op.animations],h=s.op.width,g=s.op.height;d=f,i=h,r=g,t=$.format(t,s.op.src,l,p,s.op.width,s.op.height,s.op.width/2),\"static\"===s.op.target.css(\"position\")&&s.op.target.css({position:\"relative\",width:\"100%\"}),s.op.target.append(t),e=o=s.op.target.find(\"div\").eq(0),s.op.play&&(n=$('\").insertAfter(e),o=n),s.op.isPad&&e.css(\"background-size\",s.op.width*s.op.frames/2+\"px \"+s.op.height+\"px\"),window.devicePixelRatio&&window.devicePixelRatio>1&&s.op.isRetina&&e.css(\"background-size\",s.op.width*s.op.frames+\"px \"+s.op.height+\"px\"),m.length?(e.wrap(''),m.attr(\"title\")&&e.attr(\"title\",m.attr(\"title\"))):e.on(\"mousedown\",function(){c({tab:\"logo_button_click\"})\n});for(var b=0,v=d.length;v>b;b++){var w=d[b],_=w.frame_start;l=-((_-1)*h)+\"px 0\",a[b]={\"background-position\":l,cursor:p}}},this.initAnimate=function(){function t(){e.show(),s.play()}if(!(l>=d.length)){var n=d[l],i=n.isAutoPlay,r=n.trigger_type,a=n.trigger_fn,c=n.trigger_duration,m=n.trigger_frame,p=$(\"#lg area\");p.length&&p.attr(\"onmousedown\")&&e.on(\"mousedown\",function(){return new Function(p.attr(\"onmousedown\"))()}),u=new Image,u.src=s.op.src,e.bind(\"first_animate\",function(){u.complete?t():u.onload=t\n}),i?e.trigger(\"first_animate\"):r&&(s.enablePointer(),o.show().on(r,function(){a&&(m&&s.toPos(m),a.call(s.op),c?s.timer.push(setTimeout(function(){e.trigger(\"first_animate\")},c)):e.trigger(\"first_animate\"))}))}},this.enablePointer=function(){bds.comm.upn&&\"msie\"===bds.comm.upn.browser&&\"6\"===bds.comm.upn.ie?alert(\"pointer\"):e.css(\"cursor\",\"pointer\")},this.disablePointer=function(){e.css(\"cursor\",\"default\")},this.play=function(){if(l>=d.length)return void s.dispose();var t=d[l],e=t.process_before;\ns.dispose(),e&&e.call(s),s.animation()},this.toPos=function(t){var n=-((t-1)*i)+\"px 0\";e.css(\"background-position\",n)},this.animation=function(){var t,n=d[l],r=n.duration,a=n.frame_start,c=n.frame_end,u=n.delay,m=n.repeats,p=n.process_after,f=n.trigger_type,h=a-1>0?a-1:0,g=n.event_loop||0,b=0;if(t=g?d[l]:l+1>=d.length?d[l]:d[l+1]){var v=t.trigger_type,w=t.trigger_fn,_=t.trigger_duration,y=t.trigger_frame;v&&(f&&o.off(f),l=c?(s.dispose(),b++,0!==m&&b>=m?(h=null,b=null,p&&p.call(s),l++,l0?a-1:0,s.timer.push(setTimeout(arguments.callee,r)))):s.timer.push(setTimeout(arguments.callee,r))},u))}()},this.dispose=function(t){t=t||s.timer;for(var e=0,n=t.length;n>e;e++)window.clearTimeout(t[e]);t.length=0},this.disposeOther=function(t){t=t||s.otherTimer;\nfor(var e=0,n=t.length;n>e;e++)window.clearTimeout(t[e]);t.length=0},this.clear=function(){s.dispose(),s.disposeOther(),o.off(\"click\").off(\"hover\")},this.reset=function(t){t=t||0,e.css(a[t])},this.init()};var bds=bds||{};bds.se=bds.se||{},bds.se.banner=function(t,e,n){this.init=function(){n=n||{},this.$dom_panel=$(t),this.hintText=e,this.hintIcon=n.iconClass||\"\",this.downUrl=n.downUrl||\"\",this.hintCookie=n.cookie||\"\",this.showNum=this.hintCookie&&$.getCookie(this.hintCookie)?Number($.getCookie(this.hintCookie)):0,this.nscTab=n.nscTab||\"\",this.ishome=bds.comm&&1==bds.comm.ishome?1:0,this.bannerType=n.bannerType||\"\",t&&e&&this.showNum<5&&!$(\".baiduapp_banner\")[0]&&!$(\".res_top_banner\")[0]&&!$(\".res_top_banner_for_win\")[0]&&this.show()\n},this.show=function(){this.render(),this.showNum+=1,$.setCookie(this.hintCookie,this.showNum,{expires:2592e6}),this.$dom_panel.prepend(this.bannerHtml),1!=this.ishome&&this.headFloat(),this.bindEvent(),ns_c({fm:\"behs\",tab:(1==this.ishome?\"tj_\":\"\")+\"baidu_\"+(this.nscTab?this.nscTab:\"topbanner\")+\"show\"})},this.render=function(){var t=[];t=t.concat(\"WIN\"!==this.bannerType?['
      ','',\"\"+this.hintText+\"\",this.downUrl?'立即体验':\"\",'',\"
      \"]:['
      ','',\"\"+this.hintText+\"\",this.downUrl?'立即体验':\"\",'',\"
      \"]),this.bannerHtml=t.join(\"\")\n},this.headFloat=function(){var t=$(\"#head\"),e=$(window),n=$(\".res_top_banner\");t.css(\"position\"),$(window).scroll(function(){var o=n.height()||0,i=e.scrollTop();o>=i?t.attr(\"style\",\"position:absolute;\"):t.attr(\"style\",\"top:0px;_top:\"+o+\"px;\")})},this.bindEvent=function(){if(\"WIN\"!==this.bannerType){var t=$(\".res_top_banner\"),e=this;$(\".res_top_banner_download\",t).on(\"mousedown\",function(){e.hintCookie&&$.setCookie(e.hintCookie,5,{expires:2592e6}),ns_c({fm:\"behs\",tab:(1==e.ishome?\"tj_\":\"\")+\"baidu_\"+(e.nscTab?e.nscTab:\"topbanner\")+\"down\"})\n}),$(\".res_top_banner_close\",t).on(\"mousedown\",function(){t.detach(),e.hintCookie&&$.setCookie(e.hintCookie,5,{expires:2592e6}),ns_c({fm:\"behs\",tab:(1==e.ishome?\"tj_\":\"\")+\"baidu_\"+(e.nscTab?e.nscTab:\"topbanner\")+\"close\"})}),$(window).on(\"swap_begin\",function(){t.detach()})}else{var t=$(\".res_top_banner_for_win\"),e=this;$(\".res_top_banner_download\",t).on(\"mousedown\",function(){e.hintCookie&&$.setCookie(e.hintCookie,5,{expires:2592e6}),ns_c({fm:\"behs\",tab:(1==e.ishome?\"tj_\":\"\")+\"baidu_\"+(e.nscTab?e.nscTab:\"topbanner\")+\"down\"})\n}),$(\".res_top_banner_close\",t).on(\"mousedown\",function(){t.detach(),e.hintCookie&&$.setCookie(e.hintCookie,5,{expires:2592e6}),ns_c({fm:\"behs\",tab:(1==e.ishome?\"tj_\":\"\")+\"baidu_\"+(e.nscTab?e.nscTab:\"topbanner\")+\"close\"})}),$(window).on(\"swap_begin\",function(){t.detach()})}},this.init()},function(){$(window).on(\"swap_end\",function(){var t=[\"union\",\"union2baidu\",\"union_cpro\",\"union_nosearch\",\"redbull\",\"hao123\"],e=bds.comm.upn,n=navigator.userAgent.toLowerCase().search(/msie [6-7]/);if(winFilter=/NT 6.1|NT 6.2|NT 6.3/i.test(navigator.userAgent),bds.comm.topHijack)for(var o=0;o0){var i=\"6\"==e.ie?\"您的浏览器采用的IE6内核已停止维护,推荐升级到更快更安全的百度浏览器!\":\"您的IE浏览器版本较低,即将停止更新维护,建议升级到更快、更安全的百度浏览器。\";bds.se.banner($(\"body\")[0],i,{downUrl:\"http://j.br.baidu.com/v1/t/ui/p/browser/tn/10105001/ch_dl_url\",cookie:\"H_PS_BBANNER\",nscTab:\"browser\"})}})}(),bds.se.safeTip=function(){function t(){var t=0,e=[\"bd\"],n=\"\",o=[];$(\".unsafe_ico_new\").each(function(e,i){o.push(i.getAttribute(\"data-id\")),n=i.getAttribute(\"data-tpl\");\nvar r=$(i).attr(\"data-href\"),s=$(i).attr(\"href\"),a=r?r:s;$(\"h3 a\",$(i).parents(\".result\")).attr(\"href\",a),t++}),t>0&&ns_c({tab:\"safetip\",num_unsafe:t,prd:e.join(\"|\"),hintId:o,hintTpl:n})}return{init:t}}();var bds=bds||{};bds.se=bds.se||{},bds.se.trust=bds.se.trust||{},bds.se.trust=function(){function t(){d=[],l=[],$(\".c-trust\").each(function(){var t=$(this),e=this.getAttribute(\"data_key\");0==t.parent(\".c-icons-inner\").length&&t.wrap(\"\"),-1==$.inArray(e,d)&&d.push(this.getAttribute(\"data_key\")),-1==$.inArray(this,l)&&l.push(this)\n}),$(\".c-trust-as\").each(function(){p=$.parseJSON($(this).attr(\"hint-data\")),p&&!$(this).attr(\"render\")&&(m=$(this),s(p,$(this).attr(\"hint-type\")),$(this).attr(\"render\",\"render\"))}),d.length<1||(f&&g0&&o(p.vstar.hint[0].vlevel,p.vstar.url),p.medical&&i(),p.aviation&&r())\n})}function o(t,e){var n=$(\"\",{\"class\":\"c-vline\"}),o=$(\"\",{\"class\":\"c-icon c-icon-v\"+t,target:\"_blank\",onclick:\"return false\",href:\"#\"});e&&o.attr({href:e,onclick:\"\"}),m.append(n),m.append(o),s(p.vstar,\"vstar\")}function i(){var t=$(\"\",{\"class\":\"c-vline\"}),e=$(\"\",{\"class\":\"c-icon c-icon-med\",target:\"_blank\",onclick:\"return false\",href:\"#\"});m.append(t),m.append(e),s(p.medical,\"medical\")}function r(){var t=$(\"\",{\"class\":\"c-vline\"}),e=$(\"\",{\"class\":\"c-icon c-icon-air\",target:\"_blank\",onclick:\"return false\",href:\"#\"});\nm.append(t),m.append(e),s(p.aviation,\"aviation\")}function s(t,e){var n=t.hint,o=\"over\",i=t.url,r=t.webIMUrl;if(t&&n){if(\"vstar\"==e||\"baozhang\"==e||\"baozhang-v\"==e||\"chengqi\"==e||\"baozhang-v-auth\"==e)var s=\"
        \";else var s=\"
          \";for(var c=0;c\":\">\",s+=a(n[c].txt),s+=\"\"):o=\"none\";\ns+=\"
        \";var d=!1,l=!1;\"baozhang-v\"==e||\"baozhang-v-auth\"==e?d=!0:\"chengqi\"==e&&(l=!0);var u=new bds.se.tip({target:m,mode:o,align:\"auto\",content:s,arrow:{has:1,offset:35,r:d,c:l},offset:{x:0,y:25}});u.onShow=function(){A.use(\"honourCard4\",function(){});var o=n[0].vlevel,a=n[0].unfixedInfo;ns_c({hintUrl:m.attr(\"data_key\"),hintTpl:e,hintId:o}),-1!=s.indexOf(\"ecard\")&&setTimeout(function(){A.use(\"honourCard4\",function(){var s=$(u.getDom()).find(\".c-trust-ecard4\"),c=0;\"baozhang\"==e&&(c=n[0].bzAppliCounts);\nvar d={compName:t.label,vLevel:o,centerPageUrl:i};a&&(d.unfixedInfo=a),r&&(d.webIMUrl=r),e&&(d.type=e),c&&(d.bzAppliCounts=c),t.brandName&&(d.brandName=t.brandName),t.brandLogo&&(d.brandLogo=t.brandLogo),t.brandScope&&(d.brandScope=t.brandScope),t.brandRelation&&(d.brandRelation=t.brandRelation),t.authBrandName&&(d.authBrandName=t.authBrandName),t.authBizScope&&(d.authBizScope=t.authBizScope),t.authBizType&&(d.authBizType=t.authBizType),A.ui.honourCard4(s,d)})},0),$(\"li\",this.dom).each(function(){$(\"a\",this).each(function(t){this.onmousedown=function(){ns_c({hintUrl:i,hintTpl:e,title:this.innerHTML,pos:t})\n}})})}}}function a(t){var e=t;return e=e.replace(//g,\">\").replace(/'/g,\"'\").replace(/\"/g,\""\"),e=e.replace(\"[/url]\",\"
        \").replace(/\\[url ([^\\s]*)\\]/,\"\"),e=e.replace(/\\[img ([^\\s]*)\\]/,\"\"),e=e.replace(/\\[ecard (-?[\\d]{0,3})\\]/,\"
        \")}var c=4,d=[],l=[];if(bds.util&&bds.util.domain&&bds.util.domain.get)var u=bds.util.domain.get(\"http://tag.baidu.com\");else var u=\"http://tag.baidu.com\";\nvar m=null,p=null,f=!1,h=null,g=0;return t(),{init:t,render:n}}();var __callback_names={};$(function(){bds.comm.user&&\"\"!=bds.comm.user&&setTimeout(function(){$.ajax({dataType:\"script\",cache:!0,url:(bds.su&&bds.su.urStatic?bds.su.urStatic:\"http://ss.bdimg.com\")+\"/static/message/js/mt_show_1.8.js\",success:function(){function t(){$(\"#imsg\")[0]&&$(\"#u\")[0]&&$(\"#user\")[0]&&(bds.se.message&&bds.se.message.init&&bds.se.message.init({button:$(\"#imsg\"),refer:$(\"#u\")}),$(\"#user\").on(\"mouseover\",function(){$(\"#s_mod_msg\").hide()\n})),$(\"#imsg1\")[0]&&$(\"#u1\")[0]&&$(\"#user1\")[0]&&(bds.se.message&&bds.se.message.init&&bds.se.message.init({button:$(\"#imsg1\"),refer:$(\"#u1\")}),$(\"#user1\").on(\"mouseover\",function(){$(\"#s_mod_msg\").hide()}))}function e(){bds.se.message&&bds.se.message.addStyle&&bds.se.message.addStyle()}bds.comm.loginAction.push(function(n){1==n&&(t(),e())}),bds.comm.newindex?$(window).on(\"index_off\",function(){setTimeout(function(){t(),e()},0)}):(t(),e()),$(window).on(\"swap_end\",e)}})},0)}),$(window).on(\"swap_end\",function(){var t='
        ',e=\"//www.baidu.com/cache/fpid/ielib_0108.js\",n=\"//www.baidu.com/cache/fpid/chromelib_0108.js\",o=document.title,i={flashDomId:\"_FP_userDataDiv\",comDomId:\"_FP_comDiv\",IEStoreDomId:\"_FP_userDataDiv\"},r=navigator.userAgent.toLowerCase(),s=!1;\n(r.indexOf(\"msie\")>=0||new RegExp(\"trident(.*)rv.(\\\\d+)\\\\.(\\\\d+)\").test(r))&&(s=!0);var a,c=!1,d=new RegExp(\"chrome/(\\\\d+)\"),l=r.match(d);if(l&&(c=!0,a=l[1]),!(c&&a>=39)){$(\"body\").append(t);var u=function(t){s&&window.setTimeout(function(){document.title=o},0),window._FPID_CACHE=t,$(\"#_FP_userDataDiv\").remove(),$(\"#_FP_comDiv\").remove();var e=bds.comm.qid,n=\"_WWW_BR_API_\"+(new Date).getTime(),i=window[n]=new Image;i.onload=function(){window[n]=null};var r=$.getCookie(\"BAIDUID\"),a=$.getCookie(\"BIDUPSID\"),c=bds&&bds.util&&bds.util.domain?bds.util.domain.get(\"http://eclick.baidu.com/ps_fp.htm?\"):\"http://eclick.baidu.com/ps_fp.htm?\",d=c+\"pid=ps&fp=\"+t.data.fp+\"&im=\"+t.data.im+\"&wf=\"+t.data.wf+\"&br=\"+t.data.br+\"&qid=\"+e+\"&bi=\"+r+\"&psid=\"+a;\ni.src=d};return window._FPID_CACHE?void(window._FPIDTimer=window.setTimeout(function(){u(window._FPID_CACHE)},2500)):void(window._FPIDTimer=window.setTimeout(function(){var t=\"\";t=s?e:n,$.ajax({url:t,cache:!0,dataType:\"script\",success:function(){fpLib.getFp(u,i)}})},2500))}}),$(window).on(\"swap_begin\",function(){window._FPIDTimer&&(window.clearTimeout(window._FPIDTimer),$(\"#_FP_userDataDiv\").remove(),$(\"#_FP_comDiv\").remove())});var bds=bds||{};bds.se=bds.se||{},bds.se.upn={regexp:/BD_UPN=([\\w|\\d]*)/,cookieset:[],write:function(t){document.cookie=\"BD_UPN=\"+t+\"; expires=\"+new Date((new Date).getTime()+864e6).toGMTString()\n},set:function(t){var e=this;try{$.isArray(t)&&(e.cookieset=e.cookieset.concat(t))}catch(n){}},run:function(){var t=this;try{for(var e=\"\",n=0;n0?o.match(/lbbrowser/gi):o.indexOf(\"maxthon\")>0?o.match(/maxthon\\/[\\d.]+/gi):o.indexOf(\"bidubrowser\")>0?o.match(/bidubrowser/gi):o.indexOf(\"baiduclient\")>0?o.match(/baiduclient/gi):o.indexOf(\"metasr\")>0?o.match(/metasr/gi):o.indexOf(\"qqbrowser\")>0?o.match(/qqbrowser/gi):!function(){if(navigator.mimeTypes.length>0){var t;\nfor(t in navigator.mimeTypes)if(\"application/vnd.chromium.remoting-viewer\"==navigator.mimeTypes[t].type)return!0}return!1}()&&\"track\"in document.createElement(\"track\")&&!(\"scoped\"in document.createElement(\"style\"))&&!(\"v8Locale\"in window)&&/Gecko\\)\\s+Chrome/.test(navigator.appVersion)&&\"track\"in document.createElement(\"track\")&&\"scoped\"in document.createElement(\"style\")&&\"v8Locale\"in window?\"qihu\":o.indexOf(\"msie\")>0?o.match(/msie [\\d.]+;/gi):window.document.documentMode?\"msie\":o.indexOf(\"edge\")>0?o.match(/edge\\/[\\d.]+/gi):o.indexOf(\"firefox\")>0?o.match(/firefox\\/[\\d.]+/gi):o.indexOf(\"opr\")>0?o.match(/opr\\/[\\d.]+/gi):o.indexOf(\"chrome\")>0?o.match(/chrome\\/[\\d.]+/gi):o.indexOf(\"safari\")>0&&o.indexOf(\"chrome\")<0?o.match(/safari\\/[\\d.]+/gi):\"\"\n}function e(){var t=\"Win32\"==navigator.platform||\"Windows\"==navigator.platform,e=\"Mac68K\"==navigator.platform||\"MacPPC\"==navigator.platform||\"Macintosh\"==navigator.platform||\"MacIntel\"==navigator.platform;if(e)return\"mac\";var n=\"X11\"==navigator.platform&&!t&&!e;if(n)return\"unix\";var o=String(navigator.platform).indexOf(\"Linux\")>-1;return o?\"linux\":t?\"windows\":\"other\"}var n=navigator.userAgent,o=n.toLowerCase();browser=(t()+\"\").replace(/[0-9.\\/|;|\\s]/gi,\"\"),browserversion=function(){return\"msie\"==browser?n.search(/MSIE [2-5]/)>0?\"ie5\":n.indexOf(\"MSIE 6\")>0?\"ie6\":n.indexOf(\"MSIE 7\")>0?\"ie7\":n.indexOf(\"MSIE 8\")>0?\"ie8\":n.indexOf(\"MSIE 9\")>0?\"ie9\":n.indexOf(\"MSIE 10\")>0?\"ie10\":\"11\"==window.document.documentMode?\"ie11\":\"other\":\"\"\n}(),browsertype=function(){return o.indexOf(\"msie\")>0||new RegExp(\"trident(.*)rv.(\\\\d+)\\\\.(\\\\d+)\").test(o)?\"ie\":o.indexOf(\"firefox\")>0?\"firefox\":o.indexOf(\"chrome\")>0?\"chrome\":o.indexOf(\"safari\")>0&&o.indexOf(\"chrome\")<0?\"safari\":\"other\"}(),os=e(),osversion=function(){return\"windows\"==os?n.indexOf(\"Windows NT 5.1\")>-1||n.indexOf(\"Windows XP\")>-1?\"xp\":(isWinVista=n.indexOf(\"Windows NT 6.0\")>-1||n.indexOf(\"Windows Vista\")>-1)?\"vista\":n.indexOf(\"Windows NT 6.1\")>-1||n.indexOf(\"Windows 7\")>-1?\"win7\":n.indexOf(\"Windows NT 6.2\")>-1||n.indexOf(\"Windows 8\")>-1?\"win8\":n.indexOf(\"Windows NT 6.3\")>-1||n.indexOf(\"Windows 8.1\")>-1?\"win8.1\":n.indexOf(\"Windows NT 10\")>-1?\"win10\":\"other\":void 0\n}();var i=function(t){var e=0;switch(t){case\"msie\":e=1;break;case\"chrome\":e=2;break;case\"firefox\":e=3;break;case\"safari\":e=4;break;case\"opr\":e=5;break;case\"lbbrowser\":e=6;break;case\"maxthon\":e=7;break;case\"bidubrowser\":e=8;break;case\"metasr\":e=9;break;case\"qqbrowser\":e=\"a\";break;case\"qihu\":e=\"b\";break;case\"baiduclient\":e=\"c\";break;case\"edge\":e=\"d\"}return e}(browser),r=function(t){var e=0;switch(t){case\"ie6\":e=1;break;case\"ie7\":e=2;break;case\"ie8\":e=3;break;case\"ie9\":e=4;break;case\"ie10\":e=5;break;\ncase\"ie11\":e=6;break;case\"other\":e=7;break;case\"ie5\":e=8}return e}(browserversion),s=function(t){var e=0;switch(t){case\"windows\":e=1;break;case\"mac\":e=2;break;case\"linux\":e=3;break;case\"unix\":e=4}return e}(os),a=function(t){var e=0;switch(t){case\"xp\":e=1;break;case\"vista\":e=2;break;case\"win7\":e=3;break;case\"win8\":e=4;break;case\"win8.1\":e=5;break;case\"other\":e=6;break;case\"win10\":e=7}return e}(osversion),c=function(t){var e=0;switch(t){case\"ie\":e=1;break;case\"firefox\":e=2;break;case\"chrome\":e=3;break;\ncase\"safari\":e=4}return e}(browsertype);return[{k:1,v:i},{k:2,v:r},{k:3,v:s},{k:4,v:a},{k:5,v:c}]}()),bds.se.upn.run(),bds.se.heightControl={check:function(){return $(\"#content_right\").height()>$(\"#content_left\").height()},cleanEC:function(){var t=$(\".ec_bdtg\"),e=$(\"#ec_im_container\").children(\"div\"),n=e.length,o=n-1;for(bds.se.heightControl.check()&&t&&t.length&&t.css(\"display\",\"none\");bds.se.heightControl.check()&&o>=0;){var i=e[o];$(i).css(\"display\",\"none\"),o--}},cleanRes:function(){var t=$(\"#content_right\").find(\".result-op\"),e=t.length,n=e-1;\nif(0==n){var o=$(t[0]).parent();$(\"#content_right\").height()+t.height()<$(\"#content_left\").height()&&o.css({position:\"static\"})}else for(;bds.se.heightControl.check()&&n>0;){var i=t[n];$(i).css(\"display\",\"none\"),n--}},init:function(){bds.se.heightControl.cleanEC(),bds.se.heightControl.cleanRes()}},!function(){function t(){this.start=null,this.mouse=[],this.mouseTime=null,this.mouseSpeed=500,this.key=[],this.scroll=[],this.scrollTime=null,this.scrollSpeed=500,this.debug=!1,this.dataStore={},this.t=null,this.cycle=null,this.MIN_SPEED=2e3,this.MAX_SPEED=1e4,this.curSpeed=5e3,this.stayTime=0,this.heartTime=[],this.heartT=null,this.MAX_LEN=2e3,this.storeLen=-1,this.MAX_SEND=100,this.hostEnum={SCLICK:0,NSCLICK:1,SESTAT:2},this.keyMap={new_input:2,new_disp:2,new_view:2,new_user:2,new_heart:2,flow_monitor:2},this.hostAddr=[bds&&bds.comm&&bds.comm.ubsurl?bds.comm.ubsurl+\"?\":\"\",(bds&&bds.util&&bds.util.domain?bds.util.domain.get(\"http://nsclick.baidu.com\"):\"http://nsclick.baidu.com\")+\"/v.gif?\",(bds&&bds.util&&bds.util.domain?bds.util.domain.get(\"http://sestat.baidu.com\"):\"http://sestat.baidu.com\")+\"/wb.gif?\"],this.commLog={},this.isFirst=!0,this.sendNum={},this.init()\n}t.prototype={setCommLog:function(t,e,n){if(!bds||!bds.comm)return!1;if(!(t in this.commLog)){var o={};e&&n?(o.log=e,o.len=n):(o.log=\"&q=\"+bds.comm.queryEnc+\"&qid=\"+bds.comm.qid+\"&rsv_did=\"+bds.comm.did+\"&rsv_tn=\"+bds.comm.tn+\"&rsv_sid=\"+bds.comm.sid,o.len=(o.log+\"&t=\"+(new Date).getTime()).length),this.commLog[t]=o}return!0},fb:function(){var t,e=this.heartTime.length;return t=0===e||1===e?3e3:this.heartTime[e-1]+this.heartTime[e-2],this.heartTime.push(t),t},sendHeart:function(t){var e=0===t?this.stayTime:(new Date).getTime()-this.start,n=bds&&bds.comm&&bds.comm.qid;\nif(n&&n in this.commLog&&n in this.sendNum){var o=[{stay_time:e,send_num:this.sendNum[n]}];this.send({type:t,fm:\"new_heart\",data:o},this.keyMap.new_heart)}},startHeart:function(){var t=this,e=t.fb();t.stayTime+=e,t.heartT=setTimeout(function(){t.sendHeart(0),t.startHeart()},e)},preInit:function(){this.start=(new Date).getTime(),this.mouse=[],null!==this.mouseTime&&clearTimeout(this.mouseTime),this.mouseTime=null,this.key=[],this.scroll=[],null!==this.scrollTime&&clearTimeout(this.scrollTime),this.scrollTime=null,this.cycle=null,null!==this.t&&clearTimeout(this.t),this.t=null,this.storeLen=-1;\nvar t=bds&&bds.comm&&bds.comm.qid?bds.comm.qid:\"\";t&&(this.setCommLog(t),this.sendNum[t]=0),bds&&bds.comm&&(1===bds.comm.logFlagSug||1===bds.comm.globalLogFlag)&&0===bds.comm.ishome&&(null!==this.heartT&&clearTimeout(this.heartT),this.heartT=null,this.stayTime=0,this.heartTime=[],this.startHeart())},collectPoint:function(t,e){function n(t,e){var n=[];if(\"mouse\"===t)n[0]=e.pageX,n[1]=e.pageY;else if(\"scroll\"===t){var o=$(window);n[0]=o.scrollLeft(),n[1]=o.scrollTop()}return n}var o=t+\"Time\",i=this[t+\"Speed\"],r=this;\nif(0===r[t].length){var s=n(t,e);if(s.length<2)return;return void r[t].push([(new Date).getTime()-r.start,s[0],s[1]])}null===r[o]&&(r[o]=setTimeout(function(){var i=n(t,e);return i.length<2?void(r[o]=null):(r[t].push([(new Date).getTime()-r.start,i[0],i[1]]),void(r[o]=null))},i))},singleInit:function(){var t=this;$(\"body\").on(\"mousemove\",function(e){t.collectPoint(\"mouse\",e)}).on(\"keydown\",function(e){t.key.push([(new Date).getTime()-t.start,e.keyCode])}),$(window).on(\"scroll\",function(e){t.collectPoint(\"scroll\",e)\n}),t.singleInit=function(){}},flushData:function(t){null!==this.t&&(clearTimeout(this.t),this.t=null),this.startSend(this.fetchData(t,!0),!0),this.startSend(this.fetchData(t,!0)),bds&&bds.comm&&(1===bds.comm.logFlagSug||1===bds.comm.globalLogFlag)&&(null!==this.heartT&&(clearTimeout(this.heartT),this.heartT=null),this.sendHeart(t))},init:function(){var t=this;t.preInit(),$(window).on(\"swap_begin\",function(){null!==t.t&&(clearTimeout(t.t),t.t=null),bds&&bds.comm&&0===bds.comm.ishome&&(1===bds.comm.logFlag||1===bds.comm.globalLogFlag)&&t.isFirst===!1&&t.sendHeart(1)\n}).on(\"unload\",function(){bds&&bds.comm&&0===bds.comm.ishome&&(1===bds.comm.logFlagSug||1===bds.comm.globalLogFlag)&&t.flushData(2)}).on(\"swap_end\",function(){t.preInit(),t.isFirst===!0&&(t.isFirst=!1),!t.hostAddr[0]&&bds&&bds.comm&&bds.comm.ubsurl&&(t.hostAddr[0]=bds.comm.ubsurl+\"?\")})},getData:function(t,e,n){if(null===this.start||0===t.length)return{startTime:this.start,record:[]};var o={startTime:this.start,record:[]},i=e,r=n;void 0===i?(i=0,r=t[t.length-1][0]):void 0!==i&&\"number\"==typeof i&&void 0===r?(i-=this.start,r=t[t.length-1][0]):void 0!==i&&\"number\"==typeof i&&void 0!==r&&\"number\"==typeof r?(i-=this.start,r-=this.start):(i=0,r=0);\nfor(var s in t)if(!(t[s][0]=r))break;return o},send:function(t,e,n){if(!t)return!1;if(this.debug,0===e&&!this.hostAddr[0]){if(!(bds&&bds.comm&&bds.comm.ubsurl))return!1;this.hostAddr[0]=bds.comm.ubsurl+\"?\"}var o=\"\",i=\"\",r=\"\";if(\"object\"==typeof t){for(var s in t)o=t[s],\"object\"==typeof o&&(o=$.stringify(o)),i+=s+\"=\"+encodeURIComponent(o)+\"&\";i=i.substring(0,i.length-1)}else\"string\"==typeof t&&(i=t);if(!n&&bds&&bds.comm&&bds.comm.qid&&(n=bds.comm.qid),!(n&&n in this.commLog))return!1;\nif(i+=this.commLog[n].log,i+=\"&t=\"+(new Date).getTime(),(\"number\"!=typeof e||0>e||e>=this.hostAddr.length)&&(e=0),r=this.hostAddr[e]+i,r.length>this.MAX_LEN)return!1;var a=window[\"BD_PS_C\"+(new Date).getTime()]=new Image;return a.src=this.hostAddr[e]+i,!0},sendNow:function(t,e,n){if(t&&\"string\"==typeof t&&t in this.keyMap&&e){var o=\"type=3&fm=\"+t+\"&data=\"+encodeURIComponent($.stringify([e]));n&&n.qid&&n.log&&n.len?(this.setCommLog(n.qid,n.log,n),this.send(o,this.keyMap[t],n.qid)):send(o,this.keyMap[t])\n}},pushData:function(t,e,n){var o=bds&&bds.comm&&bds.comm.qid?bds.comm.qid:\"\";if(!o)return!1;n&&n.qid&&n.log&&n.len?(this.setCommLog(n.qid,n.log,n.len),o=n.qid):this.setCommLog(o),o in this.dataStore||(this.dataStore[o]={});var i=this.dataStore[o];t in i||(i[t]=[[],[]]),n&&n.level===!0?i[t][0].push(encodeURIComponent($.stringify(e))):i[t][1].push(encodeURIComponent($.stringify(e)))},fetchData:function(t,e){function n(){for(var e,n=0,o=[],r=!1,d=this.commLog[l].len,m=this.hostAddr[a].length,p=m+(\"type=\"+t+\"&fm=\"+u+\"&data=\").length+d,f=p+6,h=f;0!==i.length&&n=this.MAX_LEN||h>=this.MAX_LEN)&&(o.length>=2&&(o.pop(),r=!0),s.push({qid:l,key:u,type:t,data:\"%5B\"+o.join(\"%2C\")+\"%5D\",host:a}),o=[],r&&(o[0]=e,r=!1),h=o.length>0?p+3+e.length+3:p+6),f=h;\no.length>0&&s.push({qid:l,key:u,type:t,data:\"%5B\"+o.join(\"%2C\")+\"%5D\",host:a})}var o,i,r=this.dataStore,s=[],a=0,c=!1,d=bds&&bds.comm&&bds.comm.qid?bds.comm.qid:\"\";if(!d)return[];for(var l in r){c=l!==d?!0:!1,o=r[l];for(var u in o)u in this.keyMap&&(a=this.keyMap[u],\"number\"==typeof a&&void 0!==this.hostAddr[a]&&(i=o[u][0].length>0?o[u][0]:o[u][1],n.call(this),(c===!0||e!==!0)&&0===i.length&&o[u][1].length>0&&(i=o[u][1],n.call(this)),c===!0&&delete this.dataStore[l]))}return s},startSend:function(t,e){var n,o,i=this,r=e===!0?0:100,s=setInterval(function(){return t.length<=0?void clearInterval(s):(n=t.shift(),void(n&&n.qid&&n.qid in i.commLog&&(o=\"type=\"+n.type+\"&fm=\"+n.key+\"&data=\"+n.data,i.send(o,n.host,n.qid),n.qid in i.sendNum&&(i.sendNum[n.qid]+=1))))\n},r)},startCycle:function(){var t=this;null===t.cycle&&(t.cycle=1),t.t=setTimeout(function(){var e=t.fetchData(0),n=e.length;-1===t.storeLen&&(t.storeLen=n),0!==t.storeLen&&n/t.storeLen>=2&&t.curSpeed>t.MIN_SPEED&&(t.curSpeed-=1e3),(0===n||t.storeLen/n>=2)&&t.curSpeed0&&new bds.util.setFootStyle,bds.comm.feedback=1,bds.comm.feedback?t()?$(document).delegate(\".feedback\",\"click\",function(){var t=this;$.getScript(\"https://ss1.bdstatic.com/5eN1bjq8AAUYm2zgoY3K/r/www/cache/static/protocol/https/plugins/feedback_67607cd.js\",function(){var e=t.getAttribute(\"data-feedbackid\")||1,n={product_id:18,entrance_id:e},o={username:bds.comm.username,query:bds.comm.query,fb_qid:bds.comm.qid};\nbds.qa.ShortCut.initRightBar(n,o)})}):$(\".feedback\").on(\"click\",function(){bds.se.ShortCut.initRightBar()}):$(document).delegate(\".feedback\",\"click\",function(){var t=this;$.getScript(\"https://ss1.bdstatic.com/5eN1bjq8AAUYm2zgoY3K/r/www/cache/static/protocol/https/plugins/feedback_67607cd.js\",function(){var e=t.getAttribute(\"data-feedbackid\")||1,n={product_id:18,entrance_id:e},o={username:bds.comm.username,query:bds.comm.query,fb_qid:bds.comm.qid};bds.qa.ShortCut.initRightBar(n,o)})});var e=$(\"#form\").find('input[type=\"hidden\"][name=rsv_t]');\ne.length?$(e).val(bds.comm.encTn):$(\"#form\").append(''),bds.comm.did=function(){for(var t=\"\",e=0;32>e;e++)t+=Math.floor(16*Math.random()).toString(16);return t}()}),!function(){$(window).one(\"swap_end\",function(){$(\"body\").on(\"mousedown\",\".se_common_hint a\",function(){var t=$(this),e=t.parents(\".se_common_hint\"),n=e.attr(\"data-id\")||\"\",o=e.attr(\"data-tpl\")||\"\",i=e.find(\"a\").index(t);ns_c_pj({hintId:n,hintTpl:o,title:t.html(),pos:i,qid:bds.comm.qid||\"\"},\"pj=hint&\")\n})})}(),$(function(){$(\"#u,#u1\").delegate(\".lb\",\"click\",function(){var t=$(this).attr(\"data-subpro\");t&&bds.se.login.setSubpro(t);try{bds.se.login.open()}catch(e){}})}),$.ajax({dataType:\"script\",cache:!0,url:\"https://ss1.bdstatic.com/5eN1bjq8AAUYm2zgoY3K/r/www/cache/static/protocol/https/home/js/nu_instant_search_08089ad.js\"}),window.PRE_CONN=function(){var t,e=function(t,e){var n=1*new Date;t=bds.util.domain&&bds.util.domain.get?bds.util.domain.get(t):t;var i=/^(http[s]?:\\/\\/)?([^\\/]+)(.*)/,r=t.match(i);if(r[2]&&!o[r[2]]){o.push(r[2]);\nvar s=new Image;s.src=t+\"?_t=\"+(e?e:n),s.onload=s.onerror=function(){s=null}}},n=0,o=[],i=function(){try{window.pageState&&0!=window.pageState&&1!=n||($(\"#kw1,#kw\").one(\"keydown\",function(){\"https:\"===location.protocol?(e(\"https://ss0.baidu.com/6ONWsjip0QIZ8tyhnq/ps_default.gif\"),e(\"https://ss1.baidu.com/6ONWsjip0QIZ8tyhnq/ps_default.gif\"),e(\"https://ss2.baidu.com/6ONWsjip0QIZ8tyhnq/ps_default.gif\"),e(\"https://ss3.baidu.com/6ONWsjip0QIZ8tyhnq/ps_default.gif\")):(e(\"http://b1.bdstatic.com/img/pc.gif\",parseInt(1e3*Math.random())),e(\"http://ecmb.bdimg.com/public03/pc.gif\"),$.each([\"i7\",\"i8\",\"i9\",\"t10\",\"t11\",\"t12\"],function(t,n){e(\"http://\"+n+\".baidu.com/ps_default.gif\")\n}))}),1==n&&$(\"#kw1,#kw\").one(\"focus\",function(){\"https:\"===location.protocol&&e(\"https://www.baidu.com/con?from=self\")}))}catch(t){}},r=function(){n=1,i(),a()},s=function(){a(),t=setTimeout(r,55e3)},a=function(){clearTimeout(t),n=0};return i(),{init:i,startTimer:s}}(),!function(){$.ajaxPrefilter(\"parts\",function(t,e,n){t.__partsCallback=[],t.__partsIndex=0,n.parts=function(e){t.__partsCallback.push(e)},t.parts&&n.parts(t.parts),t.converters[\"* parts\"]=function(t){return t}}),$.ajaxTransport(\"parts\",function(t){if(!t.crossDomain||support.cors){var e;\nreturn{send:function(n,o){var i,r=t.xhr();if(r.open(t.type,t.url,t.async,t.username,t.password),t.xhrFields)for(i in t.xhrFields)r[i]=t.xhrFields[i];t.mimeType&&r.overrideMimeType&&r.overrideMimeType(t.mimeType),t.crossDomain||n[\"X-Requested-With\"]||(n[\"X-Requested-With\"]=\"XMLHttpRequest\");for(i in n)void 0!==n[i]&&r.setRequestHeader(i,n[i]+\"\");r.send(t.hasContent&&t.data||null),e=function(n,i){var s,a,c;if(3!==r.readyState&&4!==r.readyState||i||!function(){var e=t.delimiter,n=\"\";try{n=r.responseText\n}catch(o){}if(\"\"!=n){var i,s,a=-1,c=0;if(e)for(;;){for(;c<=t.__partsIndex&&(i=-1==a?0:a+e.length,a=n.indexOf(e,i),-1!=a);c++);if(-1==a&&4!==r.readyState)return;for(s=0;s.2&&.201>i&&\"http:\"==location.protocol&&(t.url=n,t.headers=o,$.ajax({url:n,headers:o,success:e}))},o=function(e){if(\"string\"==typeof e&&\"object\"==typeof t.headers){if(t.headers.hasOwnProperty(\"content_syni\")&&12495!==e.length)return e;if(t.headers.hasOwnProperty(\"content_syns\")&&19295!==e.length)return e}return\"normal\"},i=function(t){$.ajax({url:\"//www.baidu.com/r/plog\",type:\"post\",data:{page_html:t}})};window.ctwin={sendRequest:n}}();var bds=bds||{};bds.se=bds.se||{},bds.se.speedTester=function(){function t(){}function e(t,e,i){i=i||19558,n(t,function(t){return function(e,n,i){o(t,n,i)\n}}(e),function(t){return function(){o(t)}}(e),i)}function n(e,n,o,i){n=n||t,o=o||t;var r=new Image;r.onload=function(){this.onload=this.onerror=null,i=this.fileSize||i;var t=new Date,e=t-s,o=i/e;n(this,e,o)},r.onerror=function(){this.onload=this.onerror=null,o(this)};var s=new Date;r.src=e}function o(t,e,n){var o=new Image;o.onload=o.onerror=function(){this.onload=this.onerror=null},o.src=t+(e?\"&t=\"+e+\"&v=\"+n:\"&t=-1&v=-1\")+\"&r=\"+Math.random()}return{start:e}}(),bds.se.speedMonitor=function(t){function e(){var t=d.pop();\nt&&n(t),a&&(c=window.setTimeout(e,s))}function n(t){var e=t.url,n=t.size||-1,o=[];o.push(\"id=\"+encodeURIComponent(t.id)),o.push(\"name=\"+encodeURIComponent(t.name)),o.push(\"url=\"+encodeURIComponent(t.url)),o.push(\"size=\"+encodeURIComponent(t.id));for(key in t.logData)o.push(key+\"=\"+encodeURIComponent(t.logData[key]));bds.se.speedTester.start(e,l+\"&\"+o.join(\"&\"),n)}function o(){return!0}var i=t.logPath||\"\",r=t.flag||\"default\",s=t.sleep||\"1000\",a=!1,c=null,d=[],l=i+\"?flag=\"+r;this.start=function(){this.stop(),a=!0,e()\n},this.stop=function(){a=!1,window.clearInterval(c)},this.addTask=function(t){o(t)&&d.push(t)},this.clear=function(){d=[]}},setTimeout(function(){var t=Math.random(),e=\"http://velocity.baidu.com/sp\";if(\"https:\"==location.protocol&&(e=\"https://sp0.baidu.com/6r1_czmhAB63otqbppnN2DJv/sp\"),.01>t){var n=document.createElement(\"script\");n.src=e,document.body.appendChild(n)}},1e3),!function(t){var t=t||{};t.se=t.se||{},t.se.QuickDelete=function(t,e){this.form=t,this.options=e,this._init()},t.se.QuickDelete.prototype={constructor:t.se.QuickDelete,_init:function(){this._create_elem(),this._bind_event()\n},_create_elem:function(){var t=this.form,e=this.options,n=e.top||0,o=e.right||0,i=$.trim(t.val())?\"block\":\"none\",r=\"quickdelete\",s=t.parent(),a=$('
        ').attr(\"id\",r).attr(\"title\",\"清空\").addClass(\"quickdelete\");s.addClass(\"quickdelete-wrap\").append(a),a.css({top:n+\"px\",right:o+\"px\",display:i}),e.wrapElem=s,e.elem=a},_show:function(){0===t.comm.ishome&&this.options.elem.show()},_hide:function(){this.options.elem.hide()},_bind_event:function(){var e=this.form,n=this.options.elem,o=this;\ne.on(\"focus\",function(){$.trim(e.val())?o._show():o._hide()}).on(\"keyup input propertychange\",function(){$.trim(e.val())?o._show():o._hide()}),n.on(\"click\",function(){var n=t.comm.supportis?2:0;return ns_c({input_clear:t.comm.ishome+n,delete_query:encodeURIComponent(e.val())}),e.val(\"\").focus(),o._hide(),!1}),$(window).on(\"swap_end index_off\",function(){$.trim(e.val())?o._show():o._hide()})}},new t.se.QuickDelete($(\"#kw\"),{top:0,right:0})}(bds),window.bds&&bds.comm&&bds.comm.ishome&&$(window).on(\"load\",function(){if(window.ctwin&&window.ctwin.sendRequest(\"//www.baidu.com/?tn=baidu\",{content_syni:1}),window.performance&&performance.timing){var t=function(){var t=n(\"navigation\"),e=n(\"domainLookup\"),o=n(\"connect\"),i=n(\"secureConnection\"),r=(n(\"redirect\"),n(\"request\")),s=n(\"responses\"),a={start:performance.timing.domLoading,end:performance.timing.domComplete},c=n(\"loadEvent\");\nreturn{navigation:o.start-t.start,dns:e.value,tcp:o.value,ssl:i.start>0?o.end-i.start:0,request:s.start-r.start,responses:s.value,dom:a.end-a.start,loadEvent:c.end-t.start}},e=Cookie.get(\"__bsi\"),n=function(t){var e=performance.timing,n=e[t+\"Start\"]?e[t+\"Start\"]:0,o=e[t+\"End\"]?e[t+\"End\"]:0;return{start:n,end:o,value:o-n>0?o-n:0}},o=function(){var n=[],o=t();for(var i in o)n.push(i+\"=\"+o[i]);n.push(\"protocol=\"+encodeURIComponent(location.protocol));var r=\"//www.baidu.com/nocache/fesplg/s.gif?log_type=hm&type=timing&\",s=\"\";\ns+=n.join(\"&\"),s+=\"&newindex=\"+(window.bds&&bds.comm?bds.comm.newindex:-1),e&&(s+=\"&bsi=\"+e);var a=r+s,c=new Image,d=\"_LOG_\"+(new Date).getTime();c.onload=function(){delete window[d]},window[d]=c,c.src=a},i=Math.random();/8498/.test(bds.comm.indexSid)&&.01>i&&setTimeout(o,500)}}),$(window).on(\"swap_end\",function(){bds.comm.search_tool&&(bds.comm.search_tool.init=!1)}),$(window).on(\"swap_begin\",function(){$(document).off(\"click.searchTool\")});var langfilterTip,timefilterTip,fileTypeTip,insideSearchTip;\n$(document).delegate(\".head_nums_cont_outer\",\"mousedown\",function(){if(\"undefined\"!=typeof bds.comm.search_tool){if(bds.comm.search_tool.init)return;bds.comm.search_tool.init=!0;var t=$(this),e=t.find(\".search_tool\").eq(0),n=t.find(\".search_tool_close\").eq(0),o=t.find(\".head_nums_cont_inner\").eq(0);e.on(\"click\",function(){o.animate({top:0},250),ns_c({fm:\"advTool\",qid:bds.comm.qid,title:encodeURI(\"搜索工具\"),rsv_advTool:0})}),n.on(\"click\",function(){o.animate({top:-42},250,function(){\"en\"==bds.comm.search_tool.sl_lang||bds.comm.search_tool.st||bds.comm.search_tool.et||bds.comm.search_tool.si||bds.comm.search_tool.ft||bds.comm.search_tool.exact?(ns_c({fm:\"advTool\",qid:bds.comm.qid,title:encodeURI(\"清除\"),rsv_advTool:2}),baseChangeUrl(\"wd=\"+encodeURIComponent($(\"#kw\").val().replace(/(filetype:[^\\s]* )|(site:[^\\s]*)/g,\"\").replace(/^\\\"+(.+)\\\"+$/,\"$1\"))+\"&sl_lang=cn&rsv_srlang=cn&rsv_rq=cn&ct=0&si=&tfflag=0&gpc=\"+encodeURIComponent(\"stf=\")),$(\"input[name='gpc'],input[name='si'],input[name='ct']\",\"form\").val(\"\")):ns_c({fm:\"advTool\",qid:bds.comm.qid,title:encodeURI(\"收起工具\"),rsv_advTool:1})\n})});var i=t.find(\".search_tool_la\").eq(0);if(i.length>0){var r=\"
          \";\"en\"==bds.comm.search_tool.sl_lang?(r+=\"
        • 所有网页
        • \",r+=\"
        • 英文网页
        • \"):\"cn\"==bds.comm.search_tool.sl_lang&&(r+=\"
        • 所有网页
        • \",r+=\"
        • 英文网页
        • \"),r+=\"
        \",langfilterTip=new bds.se.tip({target:i,mode:\"none\",content:$(r),arrow:{has:0,offset:0},offset:{x:15,y:21}}),langfilterTip.hide()\n}var s=t.find(\".search_tool_tf\").eq(0);if(s.length>0){var a=\"
          \";a+=bds.comm.search_tool.st||bds.comm.search_tool.et?\"
        • 时间不限
        • \":\"
        • 时间不限
        • \",a+=bds.comm.search_tool.st>=bds.comm.search_tool.thisDay&&\"1\"==bds.comm.search_tool.stftype?\"
        • 一天内
        • \":\"
        • 一天内
        • \",a+=bds.comm.search_tool.st>=bds.comm.search_tool.thisWeek&&bds.comm.search_tool.st一周内\":\"
        • 一周内
        • \",a+=bds.comm.search_tool.st>=bds.comm.search_tool.thisMonth&&bds.comm.search_tool.st一月内\":\"
        • 一月内
        • \",a+=bds.comm.search_tool.st>=bds.comm.search_tool.thisYear&&bds.comm.search_tool.st一年内\":\"
        • 一年内
        • \",a+=\"
        • \",a+=\"
          自定义\",a+=\"

          \":\"value='\"+formatDate(1e3*bds.comm.serverTime,\"-\")+\"' data-value='' class='c-tip-custom-input c-tip-custom-input-init'/>

          \",a+=\"

          \":\"value='\"+formatDate(1e3*bds.comm.serverTime,\"-\")+\"' data-value='' class='c-tip-custom-input c-tip-custom-input-init'/>

          \",a+=\"
          自定义时间错误!
          \",a+=\"确认\",a+=\"
        \",timefilterTip=new bds.se.tip({target:s,mode:\"none\",content:$(a),arrow:{has:0,offset:0},offset:{x:15,y:21},onShow:function(){$(this.getTarget()).width()>95&&$(\"ul\",this.getDom()).width($(this.getTarget()).width()+20),$(\".c-tip-custom-input\").on(\"click\",function(t){var e=this,n=null,o=new Date,i=$(e).parents(\".c-tip-custom\"),r=i.find(\"input[name='st']\"),s=i.find(\"input[name='et']\");\n$(e).attr(\"data-value\")&&o.setTime($(e).attr(\"data-value\")),$(e).parents(\".c-tip-custom\").find(\".c-tip-custom-input\").removeClass(\"c-tip-custom-input-focus\"),$(e).addClass(\"c-tip-custom-input-focus\"),0==$(\"#c-tip-custom-calenderCont\").length&&$(e).parents(\".c-tip-custom\").append(\"
        \"),$(\"#c-tip-custom-calenderCont\").html(\"\");var a={element:\"c-tip-custom-calenderCont\",date:formatDate(o),between:[$(e).attr(\"date-min\")-0,$(e).attr(\"date-max\")-0],onSelectDay:function(t){if(t+=\"\",\"st\"==e.name){var n=new Date(t.substr(0,4),t.substr(4,2)-1,t.substr(6,2),0,0,0);\ns.attr(\"date-min\",t)}else{var n=new Date(t.substr(0,4),t.substr(4,2)-1,t.substr(6,2),23,59,59);r.attr(\"date-max\",t)}$(e).val(formatDate(n,\"-\")),$(e).attr(\"data-value\",n.getTime()),$(\"#c-tip-custom-calenderCont\").hide(),$(e).removeClass(\"c-tip-custom-input-focus\").removeClass(\"c-tip-custom-input-init\")}};\"undefined\"==typeof WCal?$.getScript(\"https://ss1.bdstatic.com/5eN1bjq8AAUYm2zgoY3K/r/www/cache/static/protocol/https/plugins/new_wcal_3426010.js\",function(){n=new WCal(a),o&&n.setDay(formatDate(o),function(t){t.className+=\" op_mon_day_selected\"\n})}):(n=new WCal(a),o&&n.setDay(formatDate(o),function(t){t.className+=\" op_mon_day_selected\"})),$(\"#c-tip-custom-calenderCont\").css({top:$(this).position().top-2,left:$(this).position().left+$(this).width()+15,display:\"block\"}),t.stopPropagation()}),$(\".c-tip-custom-input\").on(\"focus\",function(){$(this).removeClass(\"c-tip-custom-input-init\")}),$(\".c-tip-custom-input\").on(\"blur\",function(){function t(t){var e,n=/^\\s*(\\d{4})-(\\d\\d)-(\\d\\d)\\s*$/,o=new Date(0/0),i=n.exec(t);return i&&(e=+i[2],o.setFullYear(i[1],e-1,i[3]),e!=o.getMonth()+1&&o.setTime(0/0)),o\n}var e=this,n=t($(e).val());n instanceof Date&&n.getTime()?($(e).attr(\"data-value\",n.getTime()),$(\".c-tip-timerfilter-custom-error\").hide()):\"\"==$(e).val()?($(e).attr(\"data-value\",\"0\"),$(\".c-tip-timerfilter-custom-error\").hide()):($(e).attr(\"data-value\",\"\"),$(\".c-tip-timerfilter-custom-error\").show())});try{$(\".c-tip-custom-submit\").off(\"click.searchTool\").on(\"click.searchTool\",function(t){var e=this,n=$(e).parents(\".c-tip-custom\"),o=parseInt($(\".c-tip-custom-input\",n)[0].getAttribute(\"data-value\")/1e3),i=parseInt($(\".c-tip-custom-input\",n)[1].getAttribute(\"data-value\")/1e3);\nreturn $(\"#c-tip-custom-calenderCont\").hide(),\"\"!=o&&o||(o=0),\"\"!=i&&i||!o||\"\"==o||(i=parseInt((new Date).setHours(23,59,58)/1e3)),i>bds.comm.serverTime&&(0>=o?(o=\"\",i=\"\"):i=parseInt((new Date).setHours(23,59,58)/1e3)),o>i||o>bds.comm.serverTime?($(\".c-tip-timerfilter-custom-error\").show(),void t.stopPropagation()):(0==o&&0==i&&(o=\"\",i=\"\"),$(\".c-tip-timerfilter-custom-error\").hide(),void advChangeUrl(\"gpc\",\"stf=\"+o+\",\"+i+\"|stftype=2\",\"自定义时间:\"+o+\"|\"+i,5))})}catch(t){}}}),timefilterTip.hide()}var c=t.find(\".search_tool_ft\").eq(0);\nif(c.length>0){var d=\"
        \";\nvar l=new bds.se.tip({target:c,mode:\"none\",content:$(d),arrow:{has:0,offset:0},offset:{x:15,y:21}});l.hide()}var u=t.find(\".search_tool_si\").eq(0);u.length>0&&(insideSearchTip=new bds.se.tip({target:u,mode:\"none\",content:$(\"
        • 确认
        • 无法识别,正确格式:baidu.com

        \"),arrow:{has:0,offset:0},offset:{x:15,y:21},onShow:function(){$(\".c-tip-si-input\").on(\"focus\",function(){$(this).addClass(\"c-tip-si-input-focus\")\n}),$(\".c-tip-si-input\").on(\"blur\",function(){$(this).removeClass(\"c-tip-si-input-focus\")});try{$(\".c-tip-timerfilter-si-submit\").off(\"click.searchTool\").on(\"click.searchTool\",function(t){var e=this,n=$(e).parents(\".c-tip-timerfilter-si\"),o=$(\"input\",n).val(),i=queryReplace(\"site\");if(\"\"==o)ns_c({fm:\"advTool\",qid:bds.comm.qid,title:encodeURI(\"站内检索:\"+o),rsv_advTool_si:encodeURI(o)}),baseChangeUrl(\"wd=\"+encodeURIComponent(i)+\"&si=&ct=0\");else{if(!o.match(/^[\\w\\-_]+(\\.[\\w\\-_]+)+$/))return $(\".c-tip-timerfilter-si-error\").show(),t.stopPropagation(),t.preventDefault(),!1;\n$(\".c-tip-timerfilter-si-error\").hide(),ns_c({fm:\"advTool\",qid:bds.comm.qid,title:encodeURI(\"站内检索:\"+o),rsv_advTool_si:encodeURI(o)}),baseChangeUrl(\"wd=\"+encodeURIComponent(i)+\"&si=\"+encodeURIComponent(o)+\"&ct=2097152\")}})}catch(t){}}}),insideSearchTip.hide());var m=!0;i.on(\"click\",function(t){m?(langfilterTip&&langfilterTip.show(),m=!1,timefilterTip&&timefilterTip.hide(),p=!0,l&&l.hide(),f=!0,insideSearchTip&&insideSearchTip.hide(),h=!0,ns_c({fm:\"advTool\",qid:bds.comm.qid,title:encodeURI(\"语言筛选浮层展现\"),rsv_advTool_tip:1}),$(document).on(\"click.searchTool\",function(t){0==$(t.target).parents(\".c-tip-langfilter\").length&&langfilterTip&&(langfilterTip.hide(),m=!0,$(document).off(\"click.searchTool\"))\n})):(langfilterTip&&langfilterTip.hide(),m=!0,$(document).off(\"click.searchTool\")),t.stopPropagation()});var p=!0;s.on(\"click\",function(t){p?(langfilterTip&&langfilterTip.hide(),m=!0,timefilterTip&&timefilterTip.show(),p=!1,l&&l.hide(),f=!0,insideSearchTip&&insideSearchTip.hide(),h=!0,ns_c({fm:\"advTool\",qid:bds.comm.qid,title:encodeURI(\"时间筛选浮层展现\"),rsv_advTool_tip:0}),$(document).on(\"click.searchTool\",function(t){0==$(t.target).parents(\".c-tips-container,#c-tip-custom-calenderCont\").length&&timefilterTip&&(timefilterTip.hide(),$(\"#c-tip-custom-calenderCont\").hide(),timefilterTip.getDom().find(\".c-tip-custom-input-focus\").removeClass(\"c-tip-custom-input-focus\"),p=!0,$(document).off(\"click.searchTool\"))\n})):(timefilterTip&&timefilterTip.hide(),p=!0,$(document).off(\"click.searchTool\")),t.stopPropagation()});var f=!0;c.on(\"click\",function(t){f?(langfilterTip&&langfilterTip.hide(),m=!0,timefilterTip&&timefilterTip.hide(),p=!0,l&&l.show(),f=!1,insideSearchTip&&insideSearchTip.hide(),h=!0,ns_c({fm:\"advTool\",qid:bds.comm.qid,title:encodeURI(\"网页格式浮层展现\"),rsv_advTool_tip:2}),$(document).on(\"click.searchTool\",function(t){0==$(t.target).parents(\".c-tip-timerfilter-ft\").length&&l&&(l.hide(),f=!0,$(document).off(\"click.searchTool\"))\n})):(l&&l.hide(),f=!0,$(document).off(\"click.searchTool\")),t.stopPropagation()});var h=!0;u.on(\"click\",function(t){h?(langfilterTip&&langfilterTip.hide(),m=!0,timefilterTip&&timefilterTip.hide(),p=!0,l&&l.hide(),f=!0,insideSearchTip&&insideSearchTip.show(),h=!1,ns_c({fm:\"advTool\",qid:bds.comm.qid,title:encodeURI(\"站内搜索浮层展现\"),rsv_advTool_tip:3}),$(document).on(\"click.searchTool\",function(t){0==$(t.target).parents(\".c-tip-timerfilter-si\").length&&insideSearchTip&&(insideSearchTip.hide(),h=!0,$(document).off(\"click.searchTool\"))\n})):(insideSearchTip&&insideSearchTip.hide(),h=!0,$(document).off(\"click.searchTool\")),t.stopPropagation()})}}),!function(){function t(){function t(t,e){var n={top:e.offset().top,left:e.offset().left},o={width:e.width(),height:e.height()},i=function(){var t=e.attr(\"data-click\");if(t)try{return $.parseJSON(t)}catch(n){}}()||{},r=t+(i.p5||\"\");return{id:r,pos:n,size:o,dataClick:i,dom:e}}var e={},n={},o=$(\"#wrapper\");return e.topResult=o.find(\"#con-at\").find(\".result-op\"),e.rightResult=o.find(\"#con-ar\").find(\".result-op\"),e.leftResult=o.find(\"#content_left\").find(\".result, .result-op\"),e.topResult.length&&(n.T=[],e.topResult.each(function(){n.T.push(t(\"T\",$(this)))\n})),e.rightResult.length&&(n.R=[],e.rightResult.each(function(){n.R.push(t(\"R\",$(this)))})),e.leftResult.length&&(n.L=[],e.leftResult.each(function(){n.L.push(t(\"L\",$(this)))})),n}bds.se.skeleton=function(){var e;return function(){return e||(e=t(),$(window).one(\"swap_begin\",function(){e=null})),e}}()}(),!function(){$(window).on(\"swap_end\",function(){var t=function(){var t=[],e=bds.se.skeleton(),n=e.L;return n?($.each(n,function(e,n){var o={};o.dom=n.dom,o.id=n.id,o.itime=0,o.time=0,t.push(o)}),t):null\n};bds.comm.orderplay=t()})}(),!function(){function t(){var t=this;t.display={},t.expand={},t.dom={},t.init()}bds.se.display=function(){new t},t.prototype={init:function(){var t=this;t.dom=bds.se.skeleton();var e=$(\"#wrapper\");t.dom.rsResult=e.find(\"#rs a\"),t.dom.hintResult=e.find(\".se_common_hint\"),t.rs=t.dom.rsResult.length||0,t.hint=t.dom.hintResult.length||0,t.display.base=t.getBase(),t.dom.L&&t.getResult(t.dom.L),t.dom.R&&t.getResult(t.dom.R),t.dom.T&&t.getResult(t.dom.T),t.rs&&(t.display.rs=t.getRS()),t.hint&&(t.display.hint=t.getHint()),t.send()\n},send:function(){var t=this;for(var e in t.display){var n={};n[e]=t.display[e],bds.log.send.sendPack(\"new_disp\",n)}for(var o in t.expand)if(o&&t.expand[o])for(var i in t.expand[o])if(i&&t.expand[o][i]&&t.expand[o][i].length)for(var r=t.expand[o][i],s=0;so;o++){var r=n[o].id,s=e.getResultDisplay(n[o]);e.expand[r]=s.expand,delete s.expand,e.display[r]=s\n}},getResultDisplay:function(t){function e(){var e=t.size;return{w:e.width||0,h:e.height||0}}function n(){var e=t.pos;return{t:e.top||0,l:e.left||0}}function o(){return d.rsv_bdr&&0!=d.rsv_bdr?d.rsv_bdr:c.hasClass(\".c-border\")||c.find(\".c-border\").length?5:0}function i(){function t(t){var e;return t&&(e=c.find(t)),e&&e.length?!0:!1}var e={};return t(\".favurl\")&&(e.fi=1),t(\".c-text-public.c-text-mult\")&&(e.gwi=1),t(\".icon-unsafe-icon\")&&(e.fxi=1),t(\".c-icon-v\")&&(e.vi=1),t(\".c-icon-med\")&&(e.yjji=1),t(\".c-icon-air\")&&(e.hxi=1),t(\".c-recommend\")&&(e.cr=1),e\n}function r(){var t=c.find(\"a\").not(\":hidden\").not(\"h3 a, .m\"),e=[],n=/^((https?:)?\\/\\/)?([\\da-z\\.-]+)\\.([a-z\\.]{2,6})([\\/\\w \\.-]*)*(:\\d+)*(\\/.*)*/,o=/^(\\/s\\?)/;return t.each(function(){var t=this.getAttribute(\"href\");if(t&&n.test(t)){var i=t&&t.match(/.*\\/link\\?url=([^&]*).*/);e.push(i&&i.length&&i.length>0&&i[1]?i[1]:t)}else t&&o.test(t)&&e.push(t)}),e.length?e:!1}function s(){var t=[],e=c.find(\"img\").not(\":hidden\").not(\"[data-nolog]\");return e.length?(e.each(function(){var e={w:this.width,h:this.height};\nt.push({size:e})}),t):!1}function a(){var t=[],e=c.find(\"object, video, audio\");return e.length?(e.each(function(){var e=$(this),n={};n.type=e.is(\"object\")&&e.attr(\"type\")&&e.attr(\"type\").indexOf(\"flash\")>=0?1:e.is(\"video\")?2:e.is(\"audio\")?3:0,n.size={w:e.width(),h:e.height()},t.push(n)}),t):!1}var c=t.dom,d=t.dataClick,l={};if(l.id=d.p5||\"\",l.srcid=d.rsv_srcid||c.attr(\"srcid\")||0,l.tpl=c.attr(\"tpl\")||\"\",l.mu=d.mu||c.attr(\"mu\")||\"\",l.fm=d.fm||\"as\",c.is(\":hidden\")&&(l.show=0),0==l.show)return l;l.size=e(),l.pos=n(),o()&&(l.bdr=o()),l.com=i();\nvar u=r(),m=s(),p=a();return(u||m||p)&&(l.expand={},u&&(l.link=u.length,l.expand.links=u),m&&(l.img=m.length,l.expand.imgs=m),p&&(l.app=p.length,l.expand.apps=p)),l}}}(),!function(){function t(){this.pageElementsList=[],this.scrollTime=null,this.scrollChange=!1,this.resizeTime=null,this.resizeChange=!1,this.scrollTop=$(document).scrollTop(),this.scrollLeft=$(document).scrollLeft(),this.windowHeight=$(window).height(),this.windowWidth=$(window).width()}t.prototype={init:function(){var t=bds.se.skeleton(),e=this;\n$.each([\"L\",\"R\",\"T\"],function(n,o){t[o]&&($.merge(e.pageElementsList,e.getDom(t[o])),e.bindEvent(t[o]))})},getDom:function(t){var e=[];return $.each(t,function(t,n){var o={};o.top=n.pos.top,o.height=n.size.height,o.id=n.id,o.visible=0,e.push(o)}),e},sendLog:function(t,e){bds.comm.globalLogFlag&&1==bds.comm.globalLogFlag&&bds.log.send.sendPack(t,e)},bindEvent:function(t){var e=this;$.each(t,function(t,n){var o=200,i=!1,r=null;n.dom.bind(\"mouseenter.useraction\",function(){null!==r&&clearTimeout(r),r=setTimeout(function(){e.sendLog(\"new_view\",{type:\"mouseIn\",id:n.id,t:(new Date).getTime()}),i=!0,r=null\n},o)}).bind(\"mouseleave.useraction\",function(){null!==r&&(clearTimeout(r),r=null),i&&(e.sendLog(\"new_view\",{type:\"mouseOut\",id:n.id,t:(new Date).getTime()}),i=!1)})})},destroy:function(){$(window).unbind(\".useraction\"),this.pageElementsList.splice(0,this.pageElementsList.length)},sight:function(){var t=this;$.each(this.pageElementsList,function(e,n){var o=t.scrollTopn.top;if(1!==n.visible||o){if(0===n.visible&&o){if(t.sendLog(\"new_view\",{type:\"sight\",resid:n.id,action:\"in\",t:(new Date).getTime()}),bds.comm.orderplay&&bds.comm.orderplay.length&&\"L\"==n.id.substr(0,1)&&bds.comm.pageSize){var i=(parseInt(n.id.substr(1))-1)%bds.comm.pageSize,r=bds.comm.orderplay[i];\nr&&!r.itime&&(r.itime=(new Date).getTime())}n.visible=1}}else{if(t.sendLog(\"new_view\",{type:\"sight\",resid:n.id,action:\"out\",t:(new Date).getTime()}),bds.comm.orderplay&&bds.comm.orderplay.length&&\"L\"==n.id.substr(0,1)&&bds.comm.pageSize){var i=(parseInt(n.id.substr(1))-1)%bds.comm.pageSize,r=bds.comm.orderplay[i];r&&(r.time+=(new Date).getTime()-r.itime,r.itime=(new Date).getTime())}n.visible=0}})},collectPoint:function(t){function e(){r[o]=setTimeout(function(){r.sendLog(\"new_view\",n(t)),r[i]=!1,r.sight(),r[i]?e():r[o]=null\n},1e3)}function n(t){if(\"resize\"===t){var e=$(window);return r.windowHeight=e.height(),r.windowWidth=e.width(),{type:\"resize\",t:(new Date).getTime(),height:r.windowHeight,width:r.windowWidth}}if(\"scroll\"===t){var n=$(document);return r.scrollTop=n.scrollTop(),r.scrollLeft=n.scrollLeft(),{type:\"scroll\",t:(new Date).getTime(),offsetX:r.scrollTop,offsetY:r.scrollLeft}}}var o=t+\"Time\",i=t+\"Change\",r=this;null===r[o]&&e()},collect:function(){this.init();var t=this;null!==this.resizeTime&&clearTimeout(this.resizeTime),this.resizeTime=null,null!==this.scrollTime&&clearTimeout(this.scrollTime),this.scrollTime=null,$(window).bind(\"focus.useraction\",function(){t.sendLog(\"new_view\",{type:\"focus\",t:(new Date).getTime()})\n}).bind(\"blur.useraction\",function(){t.sendLog(\"new_view\",{type:\"blur\",t:(new Date).getTime()})}).bind(\"resize.useraction\",function(e){t.resizeChange=!0,t.collectPoint(\"resize\",e)}).bind(\"scroll.useraction\",function(e){t.scrollChange=!0,t.collectPoint(\"scroll\",e)}),this.sight()},outInterface:function(){var t=this;return{collect:function(){t.collect()},destroy:function(){t.destroy()}}}},bds.se.userAction=(new t).outInterface()}(),bds.comm.recommends={},bds.comm.recommends.recommWidth=0,bds.se.recommend=function(t){var e=this;\ne.op=$.extend({},e._default,t),e.id=e.op.target.attr(\"id\"),e.init()},bds.se.recommend.prototype={constructor:bds.se.recommend,__init__:!1,currInstance:null,recommDom:null,arrowDom:null,cssDom:null,loadDom:null,global:{},_default:{target:\"\",arrowOffset_s:-54,arrowOffset_l:-151,container_s:276,container_l:368,startOpacity:.3,endOpacity:1},init:function(){var t=this;t.currInstance&&t.currInstance.id==t.id||(t.delay={overIcon:null,loader:null,overArrow:null},t.doWhat(function(){t.__init__||(bds.se.recommend.prototype.__init__=!0,t.createRecommDom()),t.createArrowDom(),t.delay.overArrow=setTimeout(function(){var e=t.op.arrowDom.find(\".rrecom-btn\");\n\"none\"==e.css(\"display\")&&e.show(),t.moveArrow(function(){e.addClass(\"rrecom-btn-hover\"),t.showRecommDom()})},100)}))},dispose:function(){bds.se.recommend.prototype.currInstance=null,bds.se.recommend.prototype.recommDom&&bds.se.recommend.prototype.recommDom.remove(),bds.se.recommend.prototype.cssDom&&bds.se.recommend.prototype.cssDom.remove(),bds.comm.recommends={},bds.se.recommend.prototype.__init__=!1,$(window).off(\"resize.recommend container_resize.recommend scroll.recommend\")},createArrowDom:function(){var t=this,e=t.op.target.find(\".rrecom-btn-parent\");\nif(e.length)t.op.arrowDom=e;else{var n=['','',\"\",\"\",\"\"].join(\"\");t.op.arrowDom=$(n),t.op.arrowDom.on(\"click\",\".rrecom-btn\",function(){t.hideRecommDom()}),t.op.target.css({position:\"relative\"}).append(t.op.arrowDom)}},resetArrow:function(){var t=this;t.op.arrowDom.css({right:t.op.arrowOffset_s}).removeClass(\"rrecom-btn-click rrecom-btn-moving\").find(\".rrecom-btn\").stop().hide().removeClass(\"rrecom-btn-hover\")\n},setArrowPos:function(){var t=this;t.currInstance&&(\"l\"===bds.comm.containerSize?t.currInstance.op.arrowDom.css(\"right\",t.op.arrowOffset_l):t.currInstance.op.arrowDom.css(\"right\",t.op.arrowOffset_s))},moveArrow:function(t){var e=this,n={opacity:e.op.endOpacity};n.right=\"l\"===bds.comm.containerSize?e.op.arrowOffset_l:e.op.arrowOffset_s,e.op.arrowDom.stop().addClass(\"rrecom-btn-moving rrecom-btn-click\").animate(n,0,function(){e.currInstance&&e.currInstance!==e&&e.currInstance.resetArrow(),t()})},log:function(t){var e={},n=this.op.target.attr(\"data-click\"),o=this.op.target.attr(\"srcid\"),i=this.op.target.attr(\"tpl\"),r=this.op.target.attr(\"mu\");\nif(o&&(e.rsv_srcid=o),i&&(e.rsv_tpl=i),r&&(e.mu=r),n&&$.extend(e,$.parseJSON(n)),e.p1&&!e.p5&&(e.p5=e.p1),e.p5&&!e.p1&&(e.p1=e.p5),!e.p1&&!e.p5)for(var s=$(\"#content_left\").get(0),a=s.children,d=1,l=0,u=a.length;u>l;l++)if(1==a[l].nodeType&&a[l].className&&/\\bresult(\\-op)?\\b/.test(a[l].className)){if(a[l]===this.op.target.get(0)){e.p1=d,e.p5=d;break}d++}e.fm=\"beha\";var m=this.op.target.find(\".t>a\").eq(0);return e.rsv_re_fcurl=m.length?m.attr(\"href\"):r,e.rsv_re_fcurl=e.rsv_re_fcurl||\"\",e.rsv_re_fcurl=encodeURIComponent(e.rsv_re_fcurl),c($.extend(e,t))\n},getLeftP:function(){var t=this.op.target.attr(\"data-click\");return t=$.parseJSON(t)||{},t.p1&&!t.p5&&(t.p5=t.p1),t.p5&&!t.p1&&(t.p1=t.p5),t.p5||t.p1||(t.p1=1,t.p5=1),{p1:t.p1,p5:t.p5}},s_log:function(){this.log({rsv_re_fc:2})},setCacheData:function(t){bds.comm.recommends[this.id]=t},getCacheData:function(){return bds.comm.recommends[this.id]},doWhat:function(t){var e=this.getCacheData();\"[NO DATA]\"!==e&&(e?t():this.getRemoteData(t))},getJsonp:function(t){var e=this.op.target.find(\".t>a\").eq(0),n=(e.length?e.attr(\"href\"):this.op.target.attr(\"mu\"))||\"\",o=n&&n.match(/.*url=([^&]*).*/),i=bds.comm.query;\nif(o&&o.length&&o.length>0&&o[1]){n=o[1];var r=\"http://lcr.open.baidu.com/link?url=\"+encodeURIComponent(n)+\"&query=\"+encodeURIComponent(i),s=window.bds&&bds.util&&bds.util.domain&&bds.util.domain.get(r);return $.ajax({url:s,dataType:\"jsonp\",jsonp:\"cb\",data:{data_name:t,ie:\"utf-8\",oe:\"utf-8\",format:\"json\",t:Date.parse(new Date)}})}},getRemoteData:function(t){var e=this,n=\"recommend_common_merger_online\";$.when(this.getJsonp(n)).then(function(n){n&&n.data&&n.data.length&&n.data[0]?(n.data[0].hintData&&e.asynClkRcmd(n.data[0].hintData),(n.data[0].extData||n.data[0].tplData)&&(e.setCacheData(n.data),t())):e.setCacheData(\"[NO DATA]\")\n},function(){})},asynClkRcmd:function(t){var e=this,t=t[0]||{},n=$(\"#wrapper_wrapper\");if(t&&t.linkInfo){var o=e.op.target.find(\".c-recommend\"),i=o.find(\"a\"),r=t.tip||\"为您推荐:\";if(t.defaultHide,i&&i.length&&(i.remove(),o.append(e.buildRcmdDom(t))),!o||!o.length){var s=$('
        '+r+\"
        \");n.find(\".c-recommend\").hide(),s.append(e.buildRcmdDom(t)),e.op.target.append(s)}}},buildRcmdDom:function(t){for(var e=this,n=\"\",o=t.linkInfo,i=0,r=o.length;r>i;i++){var s=o[i].txt,a=o[i].wd,c=o[i].sa,d=\"c-gap-left-large\";\n0==i&&(d=\"\");var l=\"wd=\"+a+\"&rsv_crq=\"+c+\"&bs=\"+bds.comm.query,u=e.buildURL(l);n+=\"\"+s+\"\"}return n},buildURL:function(t){var e=\"/s?\",n={tn:bds.comm.tn},o=$(\"#form\"),i=o.find(\"input[name=rsv_idx]\"),r=\"\";n.rsv_idx=i.length?i.val():\"\";for(var s in n)n.hasOwnProperty(s)&&n[s]&&(r+=s+\"=\"+encodeURIComponent(n[s])+\"&\");return e+r+t},renderTpl:function(t,e){var n=this;if(t&&e){var o={};return o.right_recommends_merge=function(t){function o(e,o){var i,r='
        #{1}
        ',s='
        ',a='
        ',c=\"
        \",d=\"\",l=(e.showrow,e.shownums),u={rsv_srcid:t.StdStg||0};\ne.list&&!e.list.length&&(e.list=[e.list]),d+=$.format(r,e.subtitle,e.subtitle,$.stringify(u)),d+='
        ';for(var m=n.op.target.find(\".t>a\").eq(0),p=m.length?m.attr(\"href\"):n.op.target.attr(\"mu\"),f=0,h=e.list.length;h>f;f++){i=e.list[f];var g={rsv_re_ename:i.name,rsv_re_uri:i.uri,rsv_re_fcpoi:o+\"-\"+(f+1),rsv_clk_url:p},b=n.buildURL(i.params+\"&euri=\"+(i.uri||\"\"));if(f==l)break;f%4===0&&(d+=s),bds.util&&bds.util.domain&&bds.util.domain.get&&(i.img=bds.util.domain.get(i.img)),d+=$.format(a,b,i.img,i.name,b,$.subByte(i.name,20),(f+1)%4===0?\" c-span-last rrecom-item-rowLast\":(f+1)%4===3?\" rrecom-item-s\":\"\",$.stringify(g),i.attrpic),d+=c,((f+1)%4===0||f==h-1)&&(d+=c)\n}return d+=c,d+=c}var t=t||e,i=\"\",r=12,s=0;t.card&&!t.card.length&&(t.card=[t.card]);for(var a=0,c=t.card.length;c>a;a++){var d=t.card[a];if(s+=parseInt(d.shownums||0),s>r)break;i+=o(d,a+1)}return i},o[t]?o[t]():void 0}},render:function(t){for(var e=\"\",n=0;n','
        ','
        ','','
        ',\"
        \",\"
        \"].join(\"\"),e=\"https://ss1.bdstatic.com/5eN1bjq8AAUYm2zgoY3K/r/www/cache/static/protocol/https/global/img/rrecom_icon_e34d796.png\",n=[\"\"].join(\"\");\nbds.se.recommend.prototype.recommDom=$(t),bds.se.recommend.prototype.cssDom=$(n),bds.se.recommend.prototype.loadDom=this.recommDom.find(\".rrecom-ajax-loading\"),this.setRecommSize(),$(\"body\").append(this.cssDom).append(this.recommDom.hide()),this.bindRecommEvent(),$(window).trigger(\"container_resize.recommend\",bds.comm.containerSize);var o=$(\"#foot\");\"static\"===o.css(\"position\")&&o.css({position:\"relative\",\"z-index\":104})},setRecommSize:function(){var t=$(\"#content_right\"),e=$(\"#wrapper_wrapper\"),n=$(\"body\"),o=$(window),i=t.offset(),r={w:n.width()},s={h:o.height()},a=o.scrollTop();\ne.prevAll().each(function(){var t;return\"div\"===this.nodeName.toLowerCase()?(t=parseInt($(this).css(\"margin-bottom\")),bds.se.recommend.prototype.global.topGap=isNaN(t)?0:t,!1):void 0}),bds.se.recommend.prototype.global.topDom=e,bds.se.recommend.prototype.global.headDom=$(\"#head\");var c={top:this.global.topDom.offset().top-this.global.topGap},d=this.global.headDom.offset().top-a+56;this.recommDom.height(s.h),bds.comm.recommends.recommWidth=r.w-i.left-2,this.recommDom.css({width:r.w-i.left-2,top:a<=c.top-d?c.top:d,position:a<=c.top-d?\"absolute\":\"fixed\",left:i.left})\n},setRecommPosition:function(){this.setRecommTop(),this.setRecommLeft()},setRecommTop:function(){var t=$(window).scrollTop(),e={top:this.global.topDom.offset().top-this.global.topGap},n=this.global.headDom.offset().top-t+56;this.recommDom.css({top:t<=e.top-n?e.top:n,position:t<=e.top-n?\"absolute\":\"fixed\"}).find(\".rrecom-container\").css({\"margin-top\":\"0px\"}),bds.se.recommend.prototype.global.originalTop=t0?t.recommDom.find(\".rrecom-content\").css(\"width\",t.op.container_s-17+\"px\"):t.recommDom.find(\".rrecom-content\").css(\"width\",t.op.container_l-17+\"px\"),bds.se.recommend.prototype.currInstance=t,t.render(t.getCacheData())\n},showLoading:function(){this.loadDom.show()},hideLoading:function(){this.loadDom.hide()}},$(window).one(\"swap_end\",function(){bds.comm.upn.ie&&6==bds.comm.upn.ie||$(document).on(\"click\",\"#content_left .result .t>a, #content_left .result-op .t>a, .op-se-listen-recommend\",function(t){if(!t.ctrlKey&&\"0\"==bds.comm.urlRecFlag){var e=$(this).closest(\".result, .result-op\");new bds.se.recommend({target:e})}})}),$(window).on(\"swap_begin\",function(){bds.se.recommend.prototype.currInstance&&bds.se.recommend.prototype.hideRecommDom(),bds.se.recommend.prototype.currInstance=null,bds.se.recommend.prototype.__init__=!1,bds.comm.recommends={}\n}),bds.se.asynAds=function(t){var e=t.dom||\"\",n=t.id||\"\",o=t.tnp||\"\",i=t.wd||\"\",r=t.cb&&\"function\"==typeof t.cb?t.cb:null;if(e&&o&&i&&n){c({fm:\"inlo\",rsv_ad:\"ad_asyn_start\"});for(var s=[\"wd\",\"tnp\",\"tn\",\"pn\",\"bs\",\"fenlei\",\"adext\"],a=\"ie=utf-8&oe=utf-8&dsp=pc\",d=0;de.time?-1:t.time\"+o.css+\"\",i+=o.html,i+=\"\"}}),o.html(i),$(document).scrollTop()o.position().top&&c({fm:\"inlo\",rsv_ad:\"ad_asyn_shake\"}),r&&r()}else c({fm:\"inlo\",rsv_ad:\"ad_asyn_net_error\"})},error:function(){c({fm:\"inlo\",rsv_ad:\"ad_asyn_net_error\"})}})}else c({fm:\"inlo\",rsv_ad:\"ad_asyn_param_error\"})\n},!function(){function t(){c=Math.random()}function e(){d=1e3*(new Date).getTime()+Math.round(1e3*Math.random())-149e13,c>=.005&&.0051>c&&(o(),i(),r(),s())}function n(){var t=Math.round(1e3*Math.random())%u.length,e=new Image,n=new Image,o=u[t];e.onload=function(){n.src=\"//www.baidu.com/nocache/fesplg/s.gif?lid=\"+d+\"&url=\"+encodeURIComponent(o)+\"&time=\"+((new Date).getTime()-i)+\"&suc=1&type=aboard&dev=pc&protocol=\"+encodeURIComponent(location.protocol)+\"&ran=\"+(new Date).getTime()},e.onerror=function(){n.src=\"//www.baidu.com/nocache/fesplg/s.gif?lid=\"+d+\"&url=\"+encodeURIComponent(o)+\"&time=&suc=0&type=aboard&dev=pc&protocol=\"+encodeURIComponent(location.protocol)+\"&ran=\"+(new Date).getTime()\n};var i=(new Date).getTime();e.src=o+\"?ran=\"+(new Date).getTime()}function o(){var t=new Image;t.onload=function(){a(\"cndtestsuc\")},t.onerror=function(){a(\"cndtesterr\")},t.src=\"//ss0.bdstatic.com/5bd1bjqh_Q23odCf/static/wiseindex/img/w_icon2.png?ran\"}function i(){var t=new Image;t.onload=function(){a(\"cndgsstestsuc\")},t.onerror=function(){a(\"cndgsstesterr\")},t.src=\"//gss0.bdstatic.com/5bd1bjqh_Q23odCf/static/wiseindex/img/w_icon2.png?ran\"}function r(){var t=new Image;t.onload=function(){a(\"cndidctestsuc\")\n},t.onerror=function(){a(\"cndidctesterr\")},t.src=\"//m.baidu.com/logo.gif\"}function s(){var t=new Image;t.onload=function(){a(\"cndss0bdtestsuc\")},t.onerror=function(){a(\"cndss0bdtesterr\")},t.src=\"//ss0.baidu.com/5bd1bjqh_Q23odCf/static/wiseindex/img/w_icon2.png?ran\"}function a(t,e){if(t){e=e||{},e.st=t,e.fm=\"inlo\";var n=\"&terminal=pc\";for(var o in e)n+=\"&\"+o+\"=\"+e[o];var i=new Image;i.src=bds.util.domain.get(l+n)}}var c,d=\"\",l=\"http://sestat.baidu.com/cm.gif?type=cdnmonitor\",u=[\"https://sptidchk.baidu.com/s.gif\",\"https://sptidcsfo.baidu.com/s.gif\",\"https://sptidcjp.baidu.com/s.gif\",\"https://sptidcsin.baidu.com/s.gif\"];\nlocation.protocol.indexOf(\"https\")>-1&&$(window).on(\"swap_dom_ready\",function(){t()}).on(\"swap_end\",function(){e()}),\"70\"==bds.comm.bfe_sample&&$(window).on(\"swap_end\",function(){d=1e3*(new Date).getTime()+Math.round(1e3*Math.random())-149e13,n()})}(),!function(){var t,e,n=bds&&bds.util&&bds.util.domain&&bds.util.domain.get(\"http://sensearch.baidu.com/sensearch/selecttext\");$(window).one(\"swap_end\",function(){bds.comm.upn&&bds.comm.upn.ie&&6==bds.comm.upn.ie||$(document).on(\"mousedown\",function(n){t&&0==$(n.target).closest(t.getDom()).length&&(t.getDom().hide(),e&&e.abort())\n}).on(\"mouseup\",function(o){var i,r,s,a,c;if(!t||!$(o.target).closest(t.getDom()).length)try{setTimeout(function(){if(window.getSelection){if(i=window.getSelection(),0==i.rangeCount)return;r=i.getRangeAt(0),s=r.getBoundingClientRect(),a=$.trim(i.toString()),c=$(\"#text\"==r.commonAncestorContainer.nodeName?r.commonAncestorContainer.parentNode:r.commonAncestorContainer)}else document.selection&&(i=document.selection.createRange(),r=i,s=r.getBoundingClientRect(),a=$.trim(i.text.toString()),c=$(r.parentElement()));\nif(a&&a.length>1&&c.closest(\"#content_left .result .c-abstract,#content_left .result .t\").length){e&&e.abort();var o=/[^(\\u4E00-\\u9FA5)]+/i;if(!o.test(a))return;e=$.ajax({url:n,dataType:\"jsonp\",jsonp:\"cb\",timeout:5e3,data:{q:a},success:function(e){var n=\"\";if(e&&e.data&&e.data.type&&e.data.to&&\"zh\"==e.data.to&&e.data.result&&e.data.result.length&&e.data.result!=a)if(1==e.data.type)for(var o=e.data.result,i=0,r=Math.min(o.length,2);r>i;i++)n+=(0==i?\"\":\"
        \")+(o[i].pre?o[i].pre+\" \":\"\"),n+=o[i].cont?$.subByte(o[i].cont,46*(1==r?2:1)+1):\"\";\nelse 2==e.data.type&&(n='译:'+e.data.result);if(n){t=t||new bds.se.tip({target:$(\"body\"),mode:\"none\",content:'
        ',align:\"left\",arrow:{has:1,offset:10}});var c=t.getDom();c.find(\".translateContent\").html('

        '+n+\"

        \"),c.css({top:s.bottom+$(window).scrollTop()+8,left:(s.left+s.right)/2+$(window).scrollLeft()-20}).show(),ns_c({rsv_trans_type:\"showresult\",rsv_trans_st:encodeURIComponent(a),rsv_qid:bds.comm.qid||\"\"})\n}}})}},0)}catch(o){}})}),$(window).on(\"swap_begin\",function(){t=null,e&&e.abort()})}(),!function(){function t(t){return t=i(t),t.attr(\"id\")||t.attr(\"data-click\")&&$.parseJSON(t.attr(\"data-click\")).rsv_srcid||t.attr(\"class\")||\"-1\"}function e(t){var e=i(t),n=e.clone();n.unbind(),n.children(\".fb-list-container\").remove(),n.children(\".fb-list-container-first\").remove(),n.children(\".fb-hint-tip\").remove(),n.removeAttr(\"style\"),n.css(\"margin\",\"0\"),t.append(n),t.append(\"
        \"),t.addClass(\"fb-list-container-hover\")\n}function n(t){t.empty(),t.removeClass(\"fb-list-container-hover\")}function o(){$(\".fb-hint-tip\").remove(),$(\".fb-list-container-first\").remove(),bds.se.ShortCut.ldialog&&bds.se.ShortCut.ldialog.destory(),bds.se.ShortCut.rdialog&&bds.se.ShortCut.rdialog.destory(),bds.se.ShortCut.ldialog=0,bds.se.ShortCut.rdialog=0,$(\".fb-mask\").remove(),$(\".fb-list-container\").remove()}function i(t){return t.closest(t.closest(\"#rs\").length?\"#rs\":t.closest(\"#con-ar\").length?\".result-op\":\"#content_left > div\")}function r(){var t=$(\"#content_left > div\");\nt.append(\"
        \"),$(\"#content_left > div\").css(\"overflow\",\"visible\"),$(\".leftBlock .fb-list-container\").remove(),$(\".hit_top_new .fb-list-container\").remove(),t.each(function(){$(this).find(\".fb-list-container\").css(\"width\",$(this).width()+20),$(this).find(\".fb-list-container\").css(\"height\",$(this).height()+10)}),$(\".c-container\").first().append(\"
        \"),$(\".c-container\").first().find(\".fb-list-container-first\").css(\"width\",$(\".c-container\").first().width()+20),$(\".c-container\").first().find(\".fb-list-container-first\").css(\"height\",$(\".c-container\").first().height()+10),$(\".c-container\").first().append('
        鼠标点击,可对单条结果进行反馈
        ');\nvar e=$(\"#rs\");e.append(\"
        \"),e.find(\".fb-list-container\").css(\"width\",e.width()+20),e.find(\".fb-list-container\").css(\"height\",e.height()+10);var n=$(\"#con-ar .result-op\");n.append(\"
        \"),n.each(function(){$(this).find(\".fb-list-container\").css(\"width\",$(this).width()+20),$(this).find(\".fb-list-container\").css(\"height\",$(this).height()+10)})}function s(t){var e=\"\";e=e+'',e=e+'
        '+t[0].value+'
        ';\nfor(var n=0;n\"+t[n].value+\"
        \";return e+=\"
        \"}function a(t,e){this.init=function(){var n=new Date;return this.title=t,this.query=decodeURIComponent(bds.comm.query),this.srcid=e&&e.attr(\"srcid\")||\"-1\",this.tpl=e&&e.attr(\"tpl\")||\"\",this.url=window.location.href||\"\",this.time=n.getFullYear()+\"/\"+(n.getMonth()+1)+\"/\"+n.getDate()+\" \"+n.getHours()+\":\"+n.getMinutes()+\":\"+n.getSeconds(),this.username=bds.comm.username||\"\",this.order=e&&e.attr(\"id\")||\"\",this.entry=\"1\",this.build(),this.bindEvent(),this.render(),this\n},this.build=function(){var t=\"\",e=[{key:\"27468\",value:\"申请删除提示词\"},{key:\"27464\",value:\"内容或图片陈旧\"},{key:\"27465\",value:\"变形、错乱、乱码等问题\"},{key:\"27469\",value:\"页面结果与搜索词无关\"},{key:\"27467\",value:\"其他问题及建议\"}],n=s(e),o='
        ',i=\"\",r=\"\";bds.se.ShortCut.uploadImg&&(i='
        包含屏幕截图
        ',r='
        ');\nvar a='
        ';t='
        ×

        搜索结果反馈

        '+n+o+i+r+a+'
        请填写描述反馈
        请留下您的联系方式
        邮箱格式不正确
        提交反馈
        ×

        非常感谢

        提交成功
        感谢您的宝贵意见
        ';\nvar c=document.createElement(\"div\");c.id=\"fb_baidu_right_dialog\",c.className=\"fb-feedback-right-dialog\",c.className=\"fb-feedback-right-dialog\",c.setAttribute(\"data-html2canvas-ignore\",\"true\"),c.innerHTML=t,this.dom=c},this.bindEvent=function(){var t=this;$(this.dom).find(\".fb-close\").on(\"click\",function(){o()}),$(this.dom).find(\"#fb_right_post_save\").on(\"click\",function(){$(t.dom).find(\".fb-textarea textarea\").val()?-1==[27468].indexOf(Number($(t.dom).find(\".fb-select-value\").val()))||$(t.dom).find(\".fb-email\").val()?$(t.dom).find(\".fb-email\").val()&&!/^(\\w)+(\\.\\w+)*@(\\w)+((\\.\\w{2,3}){1,3})$/.test($(t.dom).find(\".fb-email\").val())?($(t.dom).find(\".fb-hint-error-email\").css(\"display\",\"block\"),setTimeout(function(){$(t.dom).find(\".fb-hint-error-email\").css(\"opacity\",\"1\"),setTimeout(function(){$(t.dom).find(\".fb-hint-error-email\").removeAttr(\"style\")\n},1500)},50)):t.post():($(t.dom).find(\".fb-hint-no-email\").css(\"display\",\"block\"),setTimeout(function(){$(t.dom).find(\".fb-hint-no-email\").css(\"opacity\",\"1\"),setTimeout(function(){$(t.dom).find(\".fb-hint-no-email\").removeAttr(\"style\")},1500)},50)):($(t.dom).find(\".fb-hint-no-content\").css(\"display\",\"block\"),setTimeout(function(){$(t.dom).find(\".fb-hint-no-content\").css(\"opacity\",\"1\"),setTimeout(function(){$(t.dom).find(\".fb-hint-no-content\").removeAttr(\"style\")},1500)},50))}),$(this.dom).find(\".fb-cut-input\").on(\"click\",function(){$(t.dom).find(\".fb-cut-input\").hasClass(\"c-icon\")?($(t.dom).find(\".fb-cut-input\").removeClass(\"c-icon\"),$(t.dom).find(\".fb-cut-input\").removeClass(\"c-icon-success\"),$(t.dom).find(\".fb-canvas-block\").css(\"display\",\"none\")):($(t.dom).find(\".fb-cut-input\").addClass(\"c-icon\"),$(t.dom).find(\".fb-cut-input\").addClass(\"c-icon-success\"),$(t.dom).find(\".fb-canvas-block\").css(\"display\",\"block\"))\n}),$(this.dom).find(\".fb-type-selected\").on(\"click\",function(){\"block\"==$(t.dom).find(\".fb-type-container\").css(\"display\")?$(t.dom).find(\".fb-type-container\").hide():$(t.dom).find(\".fb-type-container\").show()}),$(this.dom).find(\".fb-type-item\").on(\"click\",function(e){$(t.dom).find(\".fb-type-container\").hide(),$(t.dom).find(\".fb-type-selected\").html($(e.currentTarget).text()+\"
        \"),$(t.dom).find(\".fb-select-value\").val($(e.currentTarget).attr(\"value\"))}),$(this.dom).find(\".fb-des-content\").on(\"click\",function(){$(\".c-container\").first().children(\".fb-hint-tip\").remove(),$(\".c-container\").first().children(\".fb-list-container-first\").remove()\n})},this.render=function(){$(\"body\").append(this.dom)},this.grayed=function(t){t?$(this.dom).css(\"visibility\",\"hidden\"):$(this.dom).removeAttr(\"style\")},this.destory=function(){$(this.dom).remove(),$(document).off(\"scroll.feedback\")},this.post=function(){this.content=$(this.dom).find(\".fb-des-content\").val(),this.type=$(this.dom).find(\".fb-select-value\").val(),this.email=$(this.dom).find(\".fb-email\").val(),data={product_type:26138,content:this.content,type:this.type,img_base64:bds.se.ShortCut.img_base64,email:this.email,query:this.query,srcid:this.srcid,tpl:this.tpl,url:this.url,time:this.time,username:this.username,order:this.order,entry:this.entry,platform:\"pc\"},bds.se.ShortCut.uploadImg?$.post(bds.se.ShortCut.domain,data).success(function(t){\"Success\"==jQuery.parseJSON(t).status||alert(decodeURIComponent(jQuery.parseJSON(t).errors))\n}).error(function(){alert(\"fail\")}):$.ajax({url:bds.se.ShortCut.domain,dataType:\"jsonp\",data:data,jsonp:\"cb1\"}).success(function(t){\"Success\"==t.status||alert(decodeURIComponent(jQuery.parseJSON(t).errors))}).error(function(){alert(\"fail\")}),$(this.dom).find(\".fb-modal \").remove(),$(this.dom).find(\".fb-mask\").remove(),$(this.dom).find(\".fb-success\").css(\"display\",\"block\"),setTimeout(function(){o()},1e3)},this.init()}function c(t,e){this.init=function(){var e=new Date;if(this.query=decodeURIComponent(bds.comm.query),this.srcid=t&&t.attr(\"srcid\")||\"-1\",this.tpl=t&&t.attr(\"tpl\")||\"\",this.url=window.location.href||\"\",this.time=e.getFullYear()+\"/\"+(e.getMonth()+1)+\"/\"+e.getDate()+\" \"+e.getHours()+\":\"+e.getMinutes()+\":\"+e.getSeconds(),this.username=bds.comm.username||\"\",t)if(t.closest(\"#con-ar\").length){this.order=\"con-ar\";\nvar n=[{key:\"27468\",value:\"申请删除提示词\"},{key:\"27464\",value:\"内容或图片陈旧\"},{key:\"27465\",value:\"变形、错乱、乱码等问题\"},{key:\"27469\",value:\"页面结果与搜索词无关\"},{key:\"27467\",value:\"其他问题及建议\"}];this.content_tips_div=s(n)}else if(t.attr(\"id\")&&\"rs\"==t.attr(\"id\")){this.order=\"rs\";var n=[{key:\"27468\",value:\"申请删除提示词\"}];this.content_tips_div=s(n)}else if(t.attr(\"tpl\")&&\"se_com_default\"!=t.attr(\"tpl\")){this.order=t.attr(\"id\")||\"-1\";var n=[{key:\"27464\",value:\"内容或图片陈旧\"},{key:\"27465\",value:\"变形、错乱、乱码等问题\"},{key:\"27466\",value:\"这条结果与搜索词无关\"},{key:\"27467\",value:\"其他问题及建议\"}];\nthis.content_tips_div=s(n)}else if(t.attr(\"tpl\")){this.order=t.attr(\"id\")||\"-1\";var n=[{key:\"27463\",value:\"申请删除或更新这条信息\"},{key:\"27464\",value:\"内容或图片陈旧\"},{key:\"27465\",value:\"变形、错乱、乱码等问题\"},{key:\"27466\",value:\"这条结果与搜索词无关\"},{key:\"27467\",value:\"其他问题及建议\"}];this.content_tips_div=s(n)}else{this.order=\"ec\";var n=[{key:\"27470\",value:\"推广信息侵权\"},{key:\"27471\",value:\"推广信息质量差\"},{key:\"27472\",value:\"推广信息与搜索词无关\"},{key:\"27473\",value:\"其他问题及产品建议\"}];this.content_tips_div=s(n)}return this.entry=\"2\",this.top=t.offset().top-4,this.left=t.closest(\"#content_right\").length?t.offset().left-390-23:t.offset().left+t.width()+30,this.build(),this.bindEvent(),this.render(),this\n},this.build=function(){var t=\"\",e='
        ',n='
        ';t='
        ×

        单条结果反馈

        '+this.content_tips_div+e+n+'
        请填写描述反馈
        请留下您的联系方式
        邮箱格式不正确
        提交反馈
        ×

        非常感谢

        提交成功
        感谢您的宝贵意见
        ';\nvar o=document.createElement(\"div\");o.id=\"fb_baidu_list_dialog\",o.className=\"fb-feedback-list-dialog\",o.setAttribute(\"data-html2canvas-ignore\",\"true\"),o.innerHTML=t,this.dom=o,$(this.dom).css(\"top\",this.top),$(this.dom).css(\"left\",this.left),\"con-ar\"==this.order&&$(this.dom).attr(\"class\",\"fb-feedback-list-dialog-left\")},this.bindEvent=function(){var t=this;$(this.dom).find(\".fb-close\").on(\"click\",function(){t.destory(),n($(\".fb-list-container\")),bds.se.ShortCut.key=0,bds.se.ShortCut.rdialog&&bds.se.ShortCut.rdialog.grayed(0),bds.se.ShortCut.rdialog||o()\n}),$(this.dom).find(\"#fb_list_post_save\").on(\"click\",function(){$(t.dom).find(\".fb-textarea textarea\").val()?-1==[27468,27463].indexOf(Number($(t.dom).find(\".fb-select-value\").val()))||$(t.dom).find(\".fb-email\").val()?$(t.dom).find(\".fb-email\").val()&&!/^(\\w)+(\\.\\w+)*@(\\w)+((\\.\\w{2,3}){1,3})$/.test($(t.dom).find(\".fb-email\").val())?($(t.dom).find(\".fb-hint-error-email\").css(\"display\",\"block\"),setTimeout(function(){$(t.dom).find(\".fb-hint-error-email\").css(\"opacity\",\"1\"),setTimeout(function(){$(t.dom).find(\".fb-hint-error-email\").removeAttr(\"style\")\n},1500)},50)):t.post():($(t.dom).find(\".fb-hint-no-email\").css(\"display\",\"block\"),setTimeout(function(){$(t.dom).find(\".fb-hint-no-email\").css(\"opacity\",\"1\"),setTimeout(function(){$(t.dom).find(\".fb-hint-no-email\").removeAttr(\"style\")},1500)},50)):($(t.dom).find(\".fb-hint-no-content\").css(\"display\",\"block\"),setTimeout(function(){$(t.dom).find(\".fb-hint-no-content\").css(\"opacity\",\"1\"),setTimeout(function(){$(t.dom).find(\".fb-hint-no-content\").removeAttr(\"style\")},1500)},50))}),$(this.dom).find(\".fb-type-selected\").on(\"click\",function(){\"block\"==$(t.dom).find(\".fb-type-container\").css(\"display\")?$(t.dom).find(\".fb-type-container\").hide():$(t.dom).find(\".fb-type-container\").show()\n}),$(this.dom).find(\".fb-type-item\").on(\"click\",function(e){$(t.dom).find(\".fb-type-container\").hide(),$(t.dom).find(\".fb-type-selected\").html($(e.currentTarget).text()+\"
        \"),$(t.dom).find(\".fb-select-value\").val($(e.currentTarget).attr(\"value\"))})},this.render=function(){$(\"body\").append(this.dom)},this.destory=function(){$(this.dom).remove()},this.post=function(){var t=this;this.content=$(this.dom).find(\".fb-des-content\").val(),this.type=$(this.dom).find(\".fb-select-value\").val(),this.email=$(this.dom).find(\".fb-email\").val(),bds.se.ShortCut.get_Snapshot_list(-bds.se.ShortCut.curListDom.offset().left,-bds.se.ShortCut.curListDom.offset().top,bds.se.ShortCut.curListDom.width()+20,bds.se.ShortCut.curListDom.height()+12,function(){data={product_type:26138,content:t.content,type:t.type,img_base64:bds.se.ShortCut.img_base64_list,email:t.email,query:t.query,srcid:t.srcid,tpl:t.tpl,url:t.url,time:t.time,username:t.username,order:t.order,entry:t.entry,platform:\"pc\"},e&&(data.ala=1),bds.se.ShortCut.uploadImg?$.post(bds.se.ShortCut.domain,data).success(function(t){\"Success\"==jQuery.parseJSON(t).status||alert(decodeURIComponent(jQuery.parseJSON(t).errors))\n}).error(function(){alert(\"fail\")}):$.ajax({url:bds.se.ShortCut.domain,dataType:\"jsonp\",data:data,jsonp:\"cb1\"}).success(function(t){\"Success\"==t.status||alert(decodeURIComponent(t.errors))}).error(function(){alert(\"fail\")})}),$(this.dom).find(\".fb-modal \").remove(),$(this.dom).find(\".fb-mask\").remove(),$(this.dom).find(\".fb-success\").css(\"display\",\"block\"),setTimeout(function(){o()},1e3)},this.init()}bds&&bds.se&&(bds.se.ShortCut={base_url_path:\"http://f3.baidu.com\",up_file:!1,is_feedbacking:!1,product_id:0,entrance_id:0,send_img:!1,img_data:\"\",onlyUpFile:!1,pro_data:\"\",scrollTop:0,ldiaInf:{},rdiaInf:{},canvas_block_height:0,key:0,domain:bds.util.domain.get(\"api.open.baidu.com\")+\"/pae/common/api/feedback\",img_base64:\"\",img_base64_list:\"\",initRightBar:function(){this.html2canvas(),this._getCss(),this._identifyCanvas()&&this._identifyCors()?(bds.se.ShortCut.uploadImg=!0,this.get_Snapshot()):bds.se.ShortCut.uploadImg=!1\n},_getCss:function(){bds.util.addStyle(\"#content_left > div,#rs,#con-ar .result-op{position: relative;}\")},_identifyCanvas:function(){try{var t=document.createElement(\"canvas\").getContext(\"2d\");return t=null,!0}catch(e){return!1}},_identifyCors:function(){var t=new XMLHttpRequest;return\"withCredentials\"in t},init_ala:function(t){this.html2canvas(),bds.se.ShortCut.uploadImg=this._identifyCanvas()&&this._identifyCors()?!0:!1,$(\"#container\").append(\"
        \"),t.append(\"
        \"),t.find(\".fb-list-container\").css(\"width\",t.width()+20),t.find(\".fb-list-container\").css(\"height\",t.height()+10),e(t.find(\".fb-list-container\")),bds.se.ShortCut.ldialog=new c(t,1),bds.se.ShortCut.curListDom=t.find(\".fb-list-container\"),$(\".fb-mask\").on(\"click\",function(){o(),bds.se.ShortCut.ldialog&&bds.se.ShortCut.ldialog.destory()\n})},init_shade:function(){$(\"#container\").append(\"
        \"),r(),$(\".fb-list-container\").hover(function(t){i($(t.currentTarget)),$(t.currentTarget).children().length||e($(t.currentTarget))},function(e){t($(e.currentTarget))!=bds.se.ShortCut.key&&n($(e.currentTarget))}),$(\".fb-list-container\").on(\"click\",function(o){$(\".c-container\").first().children(\".fb-hint-tip\").remove(),$(\".c-container\").first().children(\".fb-list-container-first\").remove(),bds.se.ShortCut.ldialog&&bds.se.ShortCut.ldialog.destory(),n($(\".fb-list-container\")),t($(o.currentTarget))==bds.se.ShortCut.key?(bds.se.ShortCut.key=0,bds.se.ShortCut.rdialog&&bds.se.ShortCut.rdialog.grayed(0)):(bds.se.ShortCut.key=t($(o.currentTarget)),bds.se.ShortCut.curListDom=$(o.currentTarget),bds.se.ShortCut.ldialog=new c(i($(o.currentTarget))),bds.se.ShortCut.rdialog&&bds.se.ShortCut.rdialog.grayed(1),e($(o.currentTarget)))\n}),$(\".fb-mask\").on(\"click\",function(){bds.se.ShortCut.ldialog&&bds.se.ShortCut.ldialog.destory(),bds.se.ShortCut.key=0,bds.se.ShortCut.rdialog&&bds.se.ShortCut.rdialog.grayed(0),n($(\".fb-list-container\"))})},get_Snapshot:function(){$(window).scrollTop(0);var t=this;bds.se.ShortCut.rdialog=new a,t.init_shade(),$(\".fb-canvas-block\").addClass(\"c-loading\"),html2canvas(document.body,{proxy:bds.util.domain.get(\"f3.baidu.com\")+\"/getProxyImage.php\",onrendered:function(e){$(\".fb-canvas-block\").removeClass(\"c-loading\");\nvar n=document.createElement(\"canvas\");n.width=e.width,n.height=$(\"body\").height();var o=n.getContext(\"2d\");o.drawImage(e,0,0),bds.se.ShortCut.img_base64=n.toDataURL(\"image/png\"),$(\".fb-canvas-block img\").attr(\"src\",n.toDataURL(\"image/png\")),setTimeout(function(){t.canvas_block_height=$(\".fb-canvas-block img\").height()},50),$(document).on(\"scroll.feedback\",function(){var e=$(window).scrollTop(),n=$(document).height(),o=$(window).height();scrollPercent=e/(n-o),$(\".fb-canvas-block img\").css(\"top\",-(t.canvas_block_height-172)*scrollPercent)\n})}})},get_Snapshot_list:function(t,e,n,o,i){html2canvas(document.body,{proxy:bds.util.domain.get(\"f3.baidu.com\")+\"/getProxyImage.php\",onrendered:function(r){var s=document.createElement(\"canvas\");s.width=n,s.height=o;var a=s.getContext(\"2d\");a.drawImage(r,t,e),bds.se.ShortCut.img_base64_list=s.toDataURL(\"image/png\"),i()}})},html2canvas:function(){!function(t,e,n){\"use strict\";function o(e){d.logging&&t.console&&t.console.log&&t.console.log(e)}function i(t,e,n,o,i,r){var s,a,c,l,u=d.Util.getCSS(e,t,i);\nif(1===u.length&&(l=u[0],u=[],u[0]=l,u[1]=l),-1!==u[0].toString().indexOf(\"%\"))c=parseFloat(u[0])/100,a=n.width*c,\"backgroundSize\"!==t&&(a-=(r||o).width*c);else if(\"backgroundSize\"===t)if(\"auto\"===u[0])a=o.width;else if(u[0].match(/contain|cover/)){var m=d.Util.resizeBounds(o.width,o.height,n.width,n.height,u[0]);a=m.width,s=m.height}else a=parseInt(u[0],10);else a=parseInt(u[0],10);return\"auto\"===u[1]?s=a/o.width*o.height:-1!==u[1].toString().indexOf(\"%\")?(c=parseFloat(u[1])/100,s=n.height*c,\"backgroundSize\"!==t&&(s-=(r||o).height*c)):s=parseInt(u[1],10),[a,s]\n}function r(t,e){var n=[];return{storage:n,width:t,height:e,clip:function(){n.push({type:\"function\",name:\"clip\",arguments:arguments})},translate:function(){n.push({type:\"function\",name:\"translate\",arguments:arguments})},fill:function(){n.push({type:\"function\",name:\"fill\",arguments:arguments})},save:function(){n.push({type:\"function\",name:\"save\",arguments:arguments})},restore:function(){n.push({type:\"function\",name:\"restore\",arguments:arguments})},fillRect:function(){n.push({type:\"function\",name:\"fillRect\",arguments:arguments})\n},createPattern:function(){n.push({type:\"function\",name:\"createPattern\",arguments:arguments})},drawShape:function(){var t=[];return n.push({type:\"function\",name:\"drawShape\",arguments:t}),{moveTo:function(){t.push({name:\"moveTo\",arguments:arguments})},lineTo:function(){t.push({name:\"lineTo\",arguments:arguments})},arcTo:function(){t.push({name:\"arcTo\",arguments:arguments})},bezierCurveTo:function(){t.push({name:\"bezierCurveTo\",arguments:arguments})},quadraticCurveTo:function(){t.push({name:\"quadraticCurveTo\",arguments:arguments})\n}}},drawImage:function(){n.push({type:\"function\",name:\"drawImage\",arguments:arguments})},fillText:function(){n.push({type:\"function\",name:\"fillText\",arguments:arguments})},setVariable:function(t,e){n.push({type:\"variable\",name:t,arguments:e})}}}function s(t){return{zindex:t,children:[]}}var a,c,d={};d.Util={},d.Util.trimText=function(t){return function(e){return t?t.apply(e):((e||\"\")+\"\").replace(/^\\s+|\\s+$/g,\"\")}}(String.prototype.trim),d.Util.parseBackgroundImage=function(t){var e,n,o,i,r,s,a,c,d=\" \\r\\n\t\",l=[],u=0,m=0,p=function(){e&&('\"'===n.substr(0,1)&&(n=n.substr(1,n.length-2)),n&&c.push(n),\"-\"===e.substr(0,1)&&(i=e.indexOf(\"-\",1)+1)>0&&(o=e.substr(0,i),e=e.substr(i)),l.push({prefix:o,method:e.toLowerCase(),value:r,args:c})),c=[],e=o=n=r=\"\"\n};p();for(var f=0,h=t.length;h>f;f++)if(s=t[f],!(0===u&&d.indexOf(s)>-1)){switch(s){case'\"':a?a===s&&(a=null):a=s;break;case\"(\":if(a)break;if(0===u){u=1,r+=s;continue}m++;break;case\")\":if(a)break;if(1===u){if(0===m){u=0,r+=s,p();continue}m--}break;case\",\":if(a)break;if(0===u){p();continue}if(1===u&&0===m&&!e.match(/^url$/i)){c.push(n),n=\"\",r+=s;continue}}r+=s,0===u?e+=s:n+=s}return p(),l},d.Util.Bounds=function(t){var e,n={};return t.getBoundingClientRect?(e=t.getBoundingClientRect(),n.top=e.top,n.bottom=e.bottom||e.top+e.height,n.left=e.left,n.width=e.width||e.right-e.left,n.height=e.height||e.bottom-e.top,n):void 0\n},d.Util.getCSS=function(t,o,i){function r(e,n){var o,i=t.runtimeStyle&&t.runtimeStyle[e],r=t.style;return!/^-?[0-9]+\\.?[0-9]*(?:px)?$/i.test(n)&&/^-?\\d/.test(n)&&(o=r.left,i&&(t.runtimeStyle.left=t.currentStyle.left),r.left=\"fontSize\"===e?\"1em\":n||0,n=r.pixelLeft+\"px\",r.left=o,i&&(t.runtimeStyle.left=i)),/^(thin|medium|thick)$/i.test(n)?n:Math.round(parseFloat(n))+\"px\"}var s,l=o.match(/^background(Size|Position)$/);if(a!==t&&(c=e.defaultView.getComputedStyle(t,null)),s=c[o],l){if(s=(s||\"\").split(\",\"),s=s[i||0]||s[0]||\"auto\",s=d.Util.trimText(s).split(\" \"),\"backgroundSize\"!==o||s[0]&&!s[0].match(/cover|contain|auto/)){if(s[0]=-1===s[0].indexOf(\"%\")?r(o+\"X\",s[0]):s[0],s[1]===n){if(\"backgroundSize\"===o)return s[1]=\"auto\",s;\ns[1]=s[0]}s[1]=-1===s[1].indexOf(\"%\")?r(o+\"Y\",s[1]):s[1]}}else if(/border(Top|Bottom)(Left|Right)Radius/.test(o)){var u=s.split(\" \");u.length<=1&&(u[1]=u[0]),u[0]=parseInt(u[0],10),u[1]=parseInt(u[1],10),s=u}return s},d.Util.resizeBounds=function(t,e,n,o,i){var r,s,a=n/o,c=t/e;return i&&\"auto\"!==i?c>a^\"contain\"===i?(s=o,r=o*c):(r=n,s=n/c):(r=n,s=o),{width:r,height:s}},d.Util.BackgroundPosition=function(t,e,n,o,r){var s=i(\"backgroundPosition\",t,e,n,o,r);return{left:s[0],top:s[1]}},d.Util.BackgroundSize=function(t,e,n,o){var r=i(\"backgroundSize\",t,e,n,o);\nreturn{width:r[0],height:r[1]}},d.Util.Extend=function(t,e){for(var n in t)t.hasOwnProperty(n)&&(e[n]=t[n]);return e},d.Util.Children=function(t){var e;try{e=t.nodeName&&\"IFRAME\"===t.nodeName.toUpperCase()?t.contentDocument||t.contentWindow.document:function(t){var e=[];return null!==t&&!function(t,e){var o=t.length,i=0;if(\"number\"==typeof e.length)for(var r=e.length;r>i;i++)t[o++]=e[i];else for(;e[i]!==n;)t[o++]=e[i++];return t.length=o,t}(e,t),e}(t.childNodes)}catch(i){o(\"html2canvas.Util.Children failed with exception: \"+i.message),e=[]\n}return e},d.Util.Font=function(){var t={};return function(e,o,i){if(t[e+\"-\"+o]!==n)return t[e+\"-\"+o];var r,s,a,c=i.createElement(\"div\"),d=i.createElement(\"img\"),l=i.createElement(\"span\"),u=\"Hidden Text\";return c.style.visibility=\"hidden\",c.style.fontFamily=e,c.style.fontSize=o,c.style.margin=0,c.style.padding=0,i.body.appendChild(c),d.src=\"data:image/gif;base64,R0lGODlhAQABAIABAP///wAAACwAAAAAAQABAAACAkQBADs=\",d.width=1,d.height=1,d.style.margin=0,d.style.padding=0,d.style.verticalAlign=\"baseline\",l.style.fontFamily=e,l.style.fontSize=o,l.style.margin=0,l.style.padding=0,l.appendChild(i.createTextNode(u)),c.appendChild(l),c.appendChild(d),r=d.offsetTop-l.offsetTop+1,c.removeChild(l),c.appendChild(i.createTextNode(u)),c.style.lineHeight=\"normal\",d.style.verticalAlign=\"super\",s=d.offsetTop-c.offsetTop+1,a={baseline:r,lineWidth:1,middle:s},t[e+\"-\"+o]=a,i.body.removeChild(c),a\n}}(),function(){d.Generate={};var t=[/^(-webkit-linear-gradient)\\(([a-z\\s]+)([\\w\\d\\.\\s,%\\(\\)]+)\\)$/,/^(-o-linear-gradient)\\(([a-z\\s]+)([\\w\\d\\.\\s,%\\(\\)]+)\\)$/,/^(-webkit-gradient)\\((linear|radial),\\s((?:\\d{1,3}%?)\\s(?:\\d{1,3}%?),\\s(?:\\d{1,3}%?)\\s(?:\\d{1,3}%?))([\\w\\d\\.\\s,%\\(\\)\\-]+)\\)$/,/^(-moz-linear-gradient)\\(((?:\\d{1,3}%?)\\s(?:\\d{1,3}%?))([\\w\\d\\.\\s,%\\(\\)]+)\\)$/,/^(-webkit-radial-gradient)\\(((?:\\d{1,3}%?)\\s(?:\\d{1,3}%?)),\\s(\\w+)\\s([a-z\\-]+)([\\w\\d\\.\\s,%\\(\\)]+)\\)$/,/^(-moz-radial-gradient)\\(((?:\\d{1,3}%?)\\s(?:\\d{1,3}%?)),\\s(\\w+)\\s?([a-z\\-]*)([\\w\\d\\.\\s,%\\(\\)]+)\\)$/,/^(-o-radial-gradient)\\(((?:\\d{1,3}%?)\\s(?:\\d{1,3}%?)),\\s(\\w+)\\s([a-z\\-]+)([\\w\\d\\.\\s,%\\(\\)]+)\\)$/];\nd.Generate.parseGradient=function(e,n){var o,i,r,s,a,c,d,l,u,m,p,f,h=t.length;for(i=0;h>i&&!(r=e.match(t[i]));i+=1);if(r)switch(r[1]){case\"-webkit-linear-gradient\":case\"-o-linear-gradient\":if(o={type:\"linear\",x0:null,y0:null,x1:null,y1:null,colorStops:[]},a=r[2].match(/\\w+/g))for(c=a.length,i=0;c>i;i+=1)switch(a[i]){case\"top\":o.y0=0,o.y1=n.height;break;case\"right\":o.x0=n.width,o.x1=0;break;case\"bottom\":o.y0=n.height,o.y1=0;break;case\"left\":o.x0=0,o.x1=n.width}if(null===o.x0&&null===o.x1&&(o.x0=o.x1=n.width/2),null===o.y0&&null===o.y1&&(o.y0=o.y1=n.height/2),a=r[3].match(/((?:rgb|rgba)\\(\\d{1,3},\\s\\d{1,3},\\s\\d{1,3}(?:,\\s[0-9\\.]+)?\\)(?:\\s\\d{1,3}(?:%|px))?)+/g))for(c=a.length,d=1/Math.max(c-1,1),i=0;c>i;i+=1)l=a[i].match(/((?:rgb|rgba)\\(\\d{1,3},\\s\\d{1,3},\\s\\d{1,3}(?:,\\s[0-9\\.]+)?\\))\\s*(\\d{1,3})?(%|px)?/),l[2]?(s=parseFloat(l[2]),s/=\"%\"===l[3]?100:n.width):s=i*d,o.colorStops.push({color:l[1],stop:s});\nbreak;case\"-webkit-gradient\":if(o={type:\"radial\"===r[2]?\"circle\":r[2],x0:0,y0:0,x1:0,y1:0,colorStops:[]},a=r[3].match(/(\\d{1,3})%?\\s(\\d{1,3})%?,\\s(\\d{1,3})%?\\s(\\d{1,3})%?/),a&&(o.x0=a[1]*n.width/100,o.y0=a[2]*n.height/100,o.x1=a[3]*n.width/100,o.y1=a[4]*n.height/100),a=r[4].match(/((?:from|to|color-stop)\\((?:[0-9\\.]+,\\s)?(?:rgb|rgba)\\(\\d{1,3},\\s\\d{1,3},\\s\\d{1,3}(?:,\\s[0-9\\.]+)?\\)\\))+/g))for(c=a.length,i=0;c>i;i+=1)l=a[i].match(/(from|to|color-stop)\\(([0-9\\.]+)?(?:,\\s)?((?:rgb|rgba)\\(\\d{1,3},\\s\\d{1,3},\\s\\d{1,3}(?:,\\s[0-9\\.]+)?\\))\\)/),s=parseFloat(l[2]),\"from\"===l[1]&&(s=0),\"to\"===l[1]&&(s=1),o.colorStops.push({color:l[3],stop:s});\nbreak;case\"-moz-linear-gradient\":if(o={type:\"linear\",x0:0,y0:0,x1:0,y1:0,colorStops:[]},a=r[2].match(/(\\d{1,3})%?\\s(\\d{1,3})%?/),a&&(o.x0=a[1]*n.width/100,o.y0=a[2]*n.height/100,o.x1=n.width-o.x0,o.y1=n.height-o.y0),a=r[3].match(/((?:rgb|rgba)\\(\\d{1,3},\\s\\d{1,3},\\s\\d{1,3}(?:,\\s[0-9\\.]+)?\\)(?:\\s\\d{1,3}%)?)+/g))for(c=a.length,d=1/Math.max(c-1,1),i=0;c>i;i+=1)l=a[i].match(/((?:rgb|rgba)\\(\\d{1,3},\\s\\d{1,3},\\s\\d{1,3}(?:,\\s[0-9\\.]+)?\\))\\s*(\\d{1,3})?(%)?/),l[2]?(s=parseFloat(l[2]),l[3]&&(s/=100)):s=i*d,o.colorStops.push({color:l[1],stop:s});\nbreak;case\"-webkit-radial-gradient\":case\"-moz-radial-gradient\":case\"-o-radial-gradient\":if(o={type:\"circle\",x0:0,y0:0,x1:n.width,y1:n.height,cx:0,cy:0,rx:0,ry:0,colorStops:[]},a=r[2].match(/(\\d{1,3})%?\\s(\\d{1,3})%?/),a&&(o.cx=a[1]*n.width/100,o.cy=a[2]*n.height/100),a=r[3].match(/\\w+/),l=r[4].match(/[a-z\\-]*/),a&&l)switch(l[0]){case\"farthest-corner\":case\"cover\":case\"\":u=Math.sqrt(Math.pow(o.cx,2)+Math.pow(o.cy,2)),m=Math.sqrt(Math.pow(o.cx,2)+Math.pow(o.y1-o.cy,2)),p=Math.sqrt(Math.pow(o.x1-o.cx,2)+Math.pow(o.y1-o.cy,2)),f=Math.sqrt(Math.pow(o.x1-o.cx,2)+Math.pow(o.cy,2)),o.rx=o.ry=Math.max(u,m,p,f);\nbreak;case\"closest-corner\":u=Math.sqrt(Math.pow(o.cx,2)+Math.pow(o.cy,2)),m=Math.sqrt(Math.pow(o.cx,2)+Math.pow(o.y1-o.cy,2)),p=Math.sqrt(Math.pow(o.x1-o.cx,2)+Math.pow(o.y1-o.cy,2)),f=Math.sqrt(Math.pow(o.x1-o.cx,2)+Math.pow(o.cy,2)),o.rx=o.ry=Math.min(u,m,p,f);break;case\"farthest-side\":\"circle\"===a[0]?o.rx=o.ry=Math.max(o.cx,o.cy,o.x1-o.cx,o.y1-o.cy):(o.type=a[0],o.rx=Math.max(o.cx,o.x1-o.cx),o.ry=Math.max(o.cy,o.y1-o.cy));break;case\"closest-side\":case\"contain\":\"circle\"===a[0]?o.rx=o.ry=Math.min(o.cx,o.cy,o.x1-o.cx,o.y1-o.cy):(o.type=a[0],o.rx=Math.min(o.cx,o.x1-o.cx),o.ry=Math.min(o.cy,o.y1-o.cy))\n}if(a=r[5].match(/((?:rgb|rgba)\\(\\d{1,3},\\s\\d{1,3},\\s\\d{1,3}(?:,\\s[0-9\\.]+)?\\)(?:\\s\\d{1,3}(?:%|px))?)+/g))for(c=a.length,d=1/Math.max(c-1,1),i=0;c>i;i+=1)l=a[i].match(/((?:rgb|rgba)\\(\\d{1,3},\\s\\d{1,3},\\s\\d{1,3}(?:,\\s[0-9\\.]+)?\\))\\s*(\\d{1,3})?(%|px)?/),l[2]?(s=parseFloat(l[2]),s/=\"%\"===l[3]?100:n.width):s=i*d,o.colorStops.push({color:l[1],stop:s})}return o},d.Generate.Gradient=function(t,n){if(0!==n.width&&0!==n.height){var i,r,s,a,c=e.createElement(\"canvas\"),l=c.getContext(\"2d\");if(c.width=n.width,c.height=n.height,i=d.Generate.parseGradient(t,n))if(\"linear\"===i.type){for(r=l.createLinearGradient(i.x0,i.y0,i.x1,i.y1),s=0,a=i.colorStops.length;a>s;s+=1)try{r.addColorStop(i.colorStops[s].stop,i.colorStops[s].color)\n}catch(u){o([\"failed to add color stop: \",u,\"; tried to add: \",i.colorStops[s],\"; stop: \",s,\"; in: \",t])}l.fillStyle=r,l.fillRect(0,0,n.width,n.height)}else if(\"circle\"===i.type){for(r=l.createRadialGradient(i.cx,i.cy,0,i.cx,i.cy,i.rx),s=0,a=i.colorStops.length;a>s;s+=1)try{r.addColorStop(i.colorStops[s].stop,i.colorStops[s].color)}catch(u){o([\"failed to add color stop: \",u,\"; tried to add: \",i.colorStops[s],\"; stop: \",s,\"; in: \",t])}l.fillStyle=r,l.fillRect(0,0,n.width,n.height)}else if(\"ellipse\"===i.type){var m=e.createElement(\"canvas\"),p=m.getContext(\"2d\"),f=Math.max(i.rx,i.ry),h=2*f;\nfor(m.width=m.height=h,r=p.createRadialGradient(i.rx,i.ry,0,i.rx,i.ry,f),s=0,a=i.colorStops.length;a>s;s+=1)try{r.addColorStop(i.colorStops[s].stop,i.colorStops[s].color)}catch(u){o([\"failed to add color stop: \",u,\"; tried to add: \",i.colorStops[s],\"; stop: \",s,\"; in: \",t])}p.fillStyle=r,p.fillRect(0,0,h,h),l.fillStyle=i.colorStops[s-1].color,l.fillRect(0,0,c.width,c.height),l.drawImage(m,i.cx-i.rx,i.cy-i.ry,2*i.rx,2*i.ry)}return c}},d.Generate.ListAlpha=function(t){var e,n=\"\";do e=t%26,n=String.fromCharCode(e+64)+n,t/=26;\nwhile(26*t>26);return n},d.Generate.ListRoman=function(t){var e,n=[\"M\",\"CM\",\"D\",\"CD\",\"C\",\"XC\",\"L\",\"XL\",\"X\",\"IX\",\"V\",\"IV\",\"I\"],o=[1e3,900,500,400,100,90,50,40,10,9,5,4,1],i=\"\",r=n.length;if(0>=t||t>=4e3)return t;for(e=0;r>e;e+=1)for(;t>=o[e];)t-=o[e],i+=n[e];return i}}(),d.Parse=function(i,a){function c(){return Math.max(Math.max(ae.body.scrollWidth,ae.documentElement.scrollWidth),Math.max(ae.body.offsetWidth,ae.documentElement.offsetWidth),Math.max(ae.body.clientWidth,ae.documentElement.clientWidth))\n}function l(){return Math.max(Math.max(ae.body.scrollHeight,ae.documentElement.scrollHeight),Math.max(ae.body.offsetHeight,ae.documentElement.offsetHeight),Math.max(ae.body.clientHeight,ae.documentElement.clientHeight))}function u(t,e){var n=parseInt(ue(t,e),10);return isNaN(n)?0:n}function m(t,e,n,o,i,r){\"transparent\"!==r&&(t.setVariable(\"fillStyle\",r),t.fillRect(e,n,o,i),se+=1)}function p(t,e){switch(e){case\"lowercase\":return t.toLowerCase();case\"capitalize\":return t.replace(/(^|\\s|:|-|\\(|\\))([a-z])/g,function(t,e,n){return t.length>0?e+n.toUpperCase():void 0\n});case\"uppercase\":return t.toUpperCase();default:return t}}function f(t){return/^(normal|none|0px)$/.test(t)}function h(t,e,n,o){null!==t&&d.Util.trimText(t).length>0&&(o.fillText(t,e,n),se+=1)}function g(t,e,n,o){var i=!1,r=ue(e,\"fontWeight\"),s=ue(e,\"fontFamily\"),a=ue(e,\"fontSize\");switch(parseInt(r,10)){case 401:r=\"bold\";break;case 400:r=\"normal\"}return t.setVariable(\"fillStyle\",o),t.setVariable(\"font\",[ue(e,\"fontStyle\"),ue(e,\"fontVariant\"),r,a,s].join(\" \")),t.setVariable(\"textAlign\",i?\"right\":\"left\"),\"none\"!==n?d.Util.Font(s,a,ae):void 0\n}function b(t,e,n,o,i){switch(e){case\"underline\":m(t,n.left,Math.round(n.top+o.baseline+o.lineWidth),n.width,1,i);break;case\"overline\":m(t,n.left,Math.round(n.top),n.width,1,i);break;case\"line-through\":m(t,n.left,Math.ceil(n.top+o.middle+o.lineWidth),n.width,1,i)}}function v(t,e,n,o){var i;if(ce.rangeBounds)(\"none\"!==n||0!==d.Util.trimText(e).length)&&(i=w(e,t.node,t.textOffset)),t.textOffset+=e.length;else if(t.node&&\"string\"==typeof t.node.nodeValue){var r=o?t.node.splitText(e.length):null;i=_(t.node),t.node=r\n}return i}function w(t,e,n){var o=ae.createRange();return o.setStart(e,n),o.setEnd(e,n+t.length),o.getBoundingClientRect()}function _(t){var e=t.parentNode,n=ae.createElement(\"wrapper\"),o=t.cloneNode(!0);n.appendChild(t.cloneNode(!0)),e.replaceChild(n,t);var i=d.Util.Bounds(n);return e.replaceChild(o,n),i}function y(t,e,n){var o,i,r=n.ctx,s=ue(t,\"color\"),c=ue(t,\"textDecoration\"),l=ue(t,\"textAlign\"),u={node:e,textOffset:0};d.Util.trimText(e.nodeValue).length>0&&(e.nodeValue=p(e.nodeValue,ue(t,\"textTransform\")),l=l.replace([\"-webkit-auto\"],[\"auto\"]),i=e.nodeValue.split(!a.letterRendering&&/^(left|right|justify|auto)$/.test(l)&&f(ue(t,\"letterSpacing\"))?/(\\b| )/:\"\"),o=g(r,t,c,s),a.chinese&&i.forEach(function(t,e){/.*[\\u4E00-\\u9FA5].*$/.test(t)&&(t=t.split(\"\"),t.unshift(e,1),i.splice.apply(i,t))\n}),i.forEach(function(t,e){var n=v(u,t,c,e0||e[1]>0?(t.push([\"line\",o[0].start.x,o[0].start.y]),o[0].curveTo(t),o[1].curveTo(t)):t.push([\"line\",r,s]),(n[0]>0||n[1]>0)&&t.push([\"line\",i[0].start.x,i[0].start.y])}function q(t,e,n,o,i,r,s){var a=[];return e[0]>0||e[1]>0?(a.push([\"line\",o[1].start.x,o[1].start.y]),o[1].curveTo(a)):a.push([\"line\",t.c1[0],t.c1[1]]),n[0]>0||n[1]>0?(a.push([\"line\",r[0].start.x,r[0].start.y]),r[0].curveTo(a),a.push([\"line\",s[0].end.x,s[0].end.y]),s[0].curveToReversed(a)):(a.push([\"line\",t.c2[0],t.c2[1]]),a.push([\"line\",t.c3[0],t.c3[1]])),e[0]>0||e[1]>0?(a.push([\"line\",i[1].end.x,i[1].end.y]),i[1].curveToReversed(a)):a.push([\"line\",t.c4[0],t.c4[1]]),a\n}function U(t,e,n){var o=t.left,i=t.top,r=t.width,s=t.height,a=e[0][0],c=e[0][1],d=e[1][0],l=e[1][1],u=e[2][0],m=e[2][1],p=e[3][0],f=e[3][1],h=r-d,g=s-u,b=r-m,v=s-f;return{topLeftOuter:fe(o,i,a,c).topLeft.subdivide(.5),topLeftInner:fe(o+n[3].width,i+n[0].width,Math.max(0,a-n[3].width),Math.max(0,c-n[0].width)).topLeft.subdivide(.5),topRightOuter:fe(o+h,i,d,l).topRight.subdivide(.5),topRightInner:fe(o+Math.min(h,r+n[3].width),i+n[0].width,h>r+n[3].width?0:d-n[3].width,l-n[0].width).topRight.subdivide(.5),bottomRightOuter:fe(o+b,i+g,m,u).bottomRight.subdivide(.5),bottomRightInner:fe(o+Math.min(b,r+n[3].width),i+Math.min(g,s+n[0].width),Math.max(0,m-n[1].width),Math.max(0,u-n[2].width)).bottomRight.subdivide(.5),bottomLeftOuter:fe(o,i+v,p,f).bottomLeft.subdivide(.5),bottomLeftInner:fe(o+n[3].width,i+v,Math.max(0,p-n[3].width),Math.max(0,f-n[2].width)).bottomLeft.subdivide(.5)}\n}function O(t,e,n,o,i){var r=ue(t,\"backgroundClip\"),s=[];switch(r){case\"content-box\":case\"padding-box\":j(s,o[0],o[1],e.topLeftInner,e.topRightInner,i.left+n[3].width,i.top+n[0].width),j(s,o[1],o[2],e.topRightInner,e.bottomRightInner,i.left+i.width-n[1].width,i.top+n[0].width),j(s,o[2],o[3],e.bottomRightInner,e.bottomLeftInner,i.left+i.width-n[1].width,i.top+i.height-n[2].width),j(s,o[3],o[0],e.bottomLeftInner,e.topLeftInner,i.left+n[3].width,i.top+i.height-n[2].width);break;default:j(s,o[0],o[1],e.topLeftOuter,e.topRightOuter,i.left,i.top),j(s,o[1],o[2],e.topRightOuter,e.bottomRightOuter,i.left+i.width,i.top),j(s,o[2],o[3],e.bottomRightOuter,e.bottomLeftOuter,i.left+i.width,i.top+i.height),j(s,o[3],o[0],e.bottomLeftOuter,e.topLeftOuter,i.left,i.top+i.height)\n}return s}function E(t,e,n){var o,i,r,s,a,c,d=e.left,l=e.top,u=e.width,m=e.height,p=A(t),f=U(e,p,n),h={clip:O(t,f,n,p,e),borders:[]};for(o=0;4>o;o++)if(n[o].width>0){switch(i=d,r=l,s=u,a=m-n[2].width,o){case 0:a=n[0].width,c=q({c1:[i,r],c2:[i+s,r],c3:[i+s-n[1].width,r+a],c4:[i+n[3].width,r+a]},p[0],p[1],f.topLeftOuter,f.topLeftInner,f.topRightOuter,f.topRightInner);break;case 1:i=d+u-n[1].width,s=n[1].width,c=q({c1:[i+s,r],c2:[i+s,r+a+n[2].width],c3:[i,r+a],c4:[i,r+n[0].width]},p[1],p[2],f.topRightOuter,f.topRightInner,f.bottomRightOuter,f.bottomRightInner);\nbreak;case 2:r=r+m-n[2].width,a=n[2].width,c=q({c1:[i+s,r+a],c2:[i,r+a],c3:[i+n[3].width,r],c4:[i+s-n[2].width,r]},p[2],p[3],f.bottomRightOuter,f.bottomRightInner,f.bottomLeftOuter,f.bottomLeftInner);break;case 3:s=n[3].width,c=q({c1:[i,r+a+n[2].width],c2:[i,r],c3:[i+s,r+n[0].width],c4:[i+s,r+a]},p[3],p[0],f.bottomLeftOuter,f.bottomLeftInner,f.topLeftOuter,f.topLeftInner)}h.borders.push({args:c,color:n[o].color})}return h}function N(t,e){var n=t.drawShape();return e.forEach(function(t,e){n[0===e?\"moveTo\":t[0]+\"To\"].apply(null,t.slice(1))\n}),n}function P(t,e,n){\"transparent\"!==n&&(t.setVariable(\"fillStyle\",n),N(t,e),t.fill(),se+=1)}function M(t,e,n){var i,r,s=ae.createElement(\"valuewrap\"),a=[\"lineHeight\",\"textAlign\",\"fontFamily\",\"color\",\"fontSize\",\"paddingLeft\",\"paddingTop\",\"width\",\"height\",\"border\",\"borderLeftWidth\",\"borderTopWidth\"];a.forEach(function(e){try{s.style[e]=ue(t,e)}catch(n){o(\"html2canvas: Parse: Exception caught in renderFormValue: \"+n.message)}}),s.style.borderColor=\"black\",s.style.borderStyle=\"solid\",s.style.display=\"block\",s.style.position=\"absolute\",(/^(submit|reset|button|text|password)$/.test(t.type)||\"SELECT\"===t.nodeName)&&(s.style.lineHeight=ue(t,\"height\")),s.style.top=e.top+\"px\",s.style.left=e.left+\"px\",i=\"SELECT\"===t.nodeName?(t.options[t.selectedIndex]||0).text:t.value,i||(i=t.placeholder),r=ae.createTextNode(i),s.appendChild(r),le.appendChild(s),y(t,r,n),le.removeChild(s)\n}function z(t){t.drawImage.apply(t,Array.prototype.slice.call(arguments,1)),se+=1}function B(n,i){var r=t.getComputedStyle(n,i);if(r&&r.content&&\"none\"!==r.content&&\"-moz-alt-content\"!==r.content){var s=r.content+\"\",a=s.substr(0,1);a===s.substr(s.length-1)&&a.match(/'|\"/)&&(s=s.substr(1,s.length-2));var c=\"url\"===s.substr(0,3),l=e.createElement(c?\"img\":\"span\");return l.className=me+\"-before \"+me+\"-after\",Object.keys(r).filter(H).forEach(function(t){try{l.style[t]=r[t]}catch(e){o([\"Tried to assign readonly property \",t,\"Error:\",e])\n}}),c?l.src=d.Util.parseBackgroundImage(s)[0].args[0]:l.innerHTML=s,l}}function H(e){return isNaN(t.parseInt(e,10))}function F(t,e){var n=B(t,\":before\"),o=B(t,\":after\");(n||o)&&(n&&(t.className+=\" \"+me+\"-before\",t.parentNode.insertBefore(n,t),ne(n,e,!0),t.parentNode.removeChild(n),t.className=t.className.replace(me+\"-before\",\"\").trim()),o&&(t.className+=\" \"+me+\"-after\",t.appendChild(o),ne(o,e,!0),t.removeChild(o),t.className=t.className.replace(me+\"-after\",\"\").trim()))}function W(t,e,n,o){var i=Math.round(o.left+n.left),r=Math.round(o.top+n.top);\nt.createPattern(e),t.translate(i,r),t.fill(),t.translate(-i,-r)}function G(t,e,n,o,i,r,s,a){var c=[];c.push([\"line\",Math.round(i),Math.round(r)]),c.push([\"line\",Math.round(i+s),Math.round(r)]),c.push([\"line\",Math.round(i+s),Math.round(a+r)]),c.push([\"line\",Math.round(i),Math.round(a+r)]),N(t,c),t.save(),t.clip(),W(t,e,n,o),t.restore()}function Q(t,e,n){m(t,e.left,e.top,e.width,e.height,n)}function V(t,e,n,o,i){var r=d.Util.BackgroundSize(t,e,o,i),s=d.Util.BackgroundPosition(t,e,o,i,r),a=ue(t,\"backgroundRepeat\").split(\",\").map(function(t){return t.trim()\n});switch(o=X(o,r),a=a[i]||a[0]){case\"repeat-x\":G(n,o,s,e,e.left,e.top+s.top,99999,o.height);break;case\"repeat-y\":G(n,o,s,e,e.left+s.left,e.top,o.width,99999);break;case\"no-repeat\":G(n,o,s,e,e.left+s.left,e.top+s.top,o.width,o.height);break;default:W(n,o,s,{top:e.top,left:e.left,width:o.width,height:o.height})}}function J(t,e,n){for(var i,r=ue(t,\"backgroundImage\"),s=d.Util.parseBackgroundImage(r),a=s.length;a--;)if(r=s[a],r.args&&0!==r.args.length){var c=\"url\"===r.method?r.args[0]:r.value;i=C(c),i?V(t,e,n,i,a):o(\"html2canvas: Error loading background:\",r)\n}}function X(t,e){if(t.width===e.width&&t.height===e.height)return t;var n,o=ae.createElement(\"canvas\");return o.width=e.width,o.height=e.height,n=o.getContext(\"2d\"),z(n,t,0,0,t.width,t.height,0,0,e.width,e.height),o}function K(t,e,n){var o=ue(e,\"opacity\")*(n?n.opacity:1);return t.setVariable(\"globalAlpha\",o),o}function Y(t,e,n){var o=r(e?n.width:c(),e?n.height:l()),i={ctx:o,zIndex:I(ue(t,\"zIndex\"),e?e.zIndex:null),opacity:K(o,t,e),cssPosition:ue(t,\"position\"),borders:R(t),clip:e&&e.clip?d.Util.Extend({},e.clip):null};\nreturn a.useOverflow===!0&&/(hidden|scroll|auto)/.test(ue(t,\"overflow\"))===!0&&/(BODY)/i.test(t.nodeName)===!1&&(i.clip=i.clip?S(i.clip,n):n),i.zIndex.children.push(i),i}function Z(t,e,n){var o={left:e.left+t[3].width,top:e.top+t[0].width,width:e.width-(t[1].width+t[3].width),height:e.height-(t[0].width+t[2].width)};return n&&(o=S(o,n)),o}function te(t,e,n){var i,r=d.Util.Bounds(t),s=de.test(t.nodeName)?\"#efefef\":ue(t,\"backgroundColor\"),a=Y(t,e,r),c=a.borders,l=a.ctx,u=Z(c,r,a.clip),m=E(t,r,c);switch(N(l,m.clip),l.save(),l.clip(),u.height>0&&u.width>0&&(Q(l,r,s),J(t,u,l)),l.restore(),m.borders.forEach(function(t){P(l,t.args,t.color)\n}),n||F(t,a),t.nodeName){case\"IMG\":(i=C(t.getAttribute(\"src\")))?D(l,t,i,r,c):o(\"html2canvas: Error loading :\"+t.getAttribute(\"src\"));break;case\"INPUT\":/^(text|url|email|submit|button|reset)$/.test(t.type)&&(t.value||t.placeholder).length>0&&M(t,r,a);break;case\"TEXTAREA\":(t.value||t.placeholder||\"\").length>0&&M(t,r,a);break;case\"SELECT\":(t.options||t.placeholder||\"\").length>0&&M(t,r,a);break;case\"LI\":T(t,a,u);break;case\"CANVAS\":D(l,t,t,r,c)}return a}function ee(t){return\"none\"!==ue(t,\"display\")&&\"hidden\"!==ue(t,\"visibility\")&&!t.hasAttribute(\"data-html2canvas-ignore\")\n}function ne(t,e,n){ee(t)&&(e=te(t,e,n)||e,de.test(t.nodeName)||d.Util.Children(t).forEach(function(o){1===o.nodeType?ne(o,e,n):3===o.nodeType&&y(t,o,e)}))}function oe(t,e){function n(t){var e,o,i,r,a,c=d.Util.Children(t),l=c.length;for(a=0;l>a;a+=1)if(r=c[a],3===r.nodeType)s+=r.nodeValue.replace(//g,\">\");else if(1===r.nodeType&&!/^(script|meta|title)$/.test(r.nodeName.toLowerCase())){if(s+=\"<\"+r.nodeName.toLowerCase(),r.hasAttributes())for(e=r.attributes,i=e.length,o=0;i>o;o+=1)s+=\" \"+e[o].name+'=\"'+e[o].value+'\"';\ns+=\">\",n(r),s+=\"\"}}var o=new Image,i=c(),r=l(),s=\"\";n(t),o.src=[\"data:image/svg+xml,\",\"\",\"\",\"\",s.replace(/\\#/g,\"%23\"),\"\",\"\",\"\"].join(\"\"),o.onload=function(){e.svgRender=o}}function ie(){var t=te(re,null);return ce.svgRendering&&oe(e.documentElement,t),Array.prototype.slice.call(re.children,0).forEach(function(e){ne(e,t)\n}),t.backgroundColor=ue(e.documentElement,\"backgroundColor\"),le.removeChild(pe),t}bds.se.ShortCut.scrollTop=t.pageYOffset||e.documentElement.scrollTop||e.body.scrollTop,t.scroll(0,0);var re=a.elements===n?e.body:a.elements[0],se=0,ae=re.ownerDocument,ce=d.Util.Support(a,ae),de=new RegExp(\"(\"+a.ignoreElements+\")\"),le=ae.body,ue=d.Util.getCSS,me=\"___html2canvas___pseudoelement\",pe=ae.createElement(\"style\");pe.innerHTML=\".\"+me+'-before:before { content: \"\" !important; display: none !important; }.'+me+'-after:after { content: \"\" !important; display: none !important; }',le.appendChild(pe),i=i||{};\nvar fe=function(t){return function(e,n,o,i){var r=o*t,s=i*t,a=e+o,c=n+i;return{topLeft:L({x:e,y:c},{x:e,y:c-s},{x:a-r,y:n},{x:a,y:n}),topRight:L({x:e,y:n},{x:e+r,y:n},{x:a,y:c-s},{x:a,y:c}),bottomRight:L({x:a,y:n},{x:a,y:n+s},{x:e+r,y:c},{x:e,y:c}),bottomLeft:L({x:a,y:c},{x:a-r,y:c},{x:e,y:n+s},{x:e,y:n})}}}(4*((Math.sqrt(2)-1)/3));return ie()},d.Preload=function(i){function r(t){C.href=t,C.href=C.href;var e=C.protocol+C.host;return e===g}function s(){o(\"html2canvas: start: images: \"+_.numLoaded+\" / \"+_.numTotal+\" (failed: \"+_.numFailed+\")\"),!_.firstRun&&_.numLoaded>=_.numTotal&&(o(\"Finished loading images: # \"+_.numTotal+\" (failed: \"+_.numFailed+\")\"),\"function\"==typeof i.complete&&i.complete(_))\n}function a(e,o,r){var a,c,d=i.proxy;C.href=e,e=C.href,a=\"html2canvas_\"+y++,r.callbackname=a,d+=d.indexOf(\"?\")>-1?\"&\":\"?\",d+=\"url=\"+encodeURIComponent(e)+\"&callback=\"+a,c=$.createElement(\"script\"),t[a]=function(e){\"error:\"===e.substring(0,6)?(r.succeeded=!1,_.numLoaded++,_.numFailed++,s()):(h(o,r),o.src=e),t[a]=n;try{delete t[a]}catch(i){}c.parentNode.removeChild(c),c=null,delete r.script,delete r.callbackname},c.setAttribute(\"type\",\"text/javascript\"),c.setAttribute(\"src\",d),r.script=c,t.document.body.appendChild(c)\n}function c(e,n){var o=t.getComputedStyle(e,n),i=o.content;\"url\"===i.substr(0,3)&&b.loadImage(d.Util.parseBackgroundImage(i)[0].args[0]),p(o.backgroundImage,e)}function l(t){c(t,\":before\"),c(t,\":after\")}function u(t,e){var o=d.Generate.Gradient(t,e);o!==n&&(_[t]={img:o,succeeded:!0},_.numTotal++,_.numLoaded++,s())}function m(t){return t&&t.method&&t.args&&t.args.length>0}function p(t,e){var o;d.Util.parseBackgroundImage(t).filter(m).forEach(function(t){\"url\"===t.method?b.loadImage(t.args[0]):t.method.match(/\\-?gradient$/)&&(o===n&&(o=d.Util.Bounds(e)),u(t.value,o))\n})}function f(t){var e=!1;try{d.Util.Children(t).forEach(function(t){f(t)})}catch(i){}try{e=t.nodeType}catch(r){e=!1,o(\"html2canvas: failed to access some element's nodeType - Exception: \"+r.message)}if(1===e||e===n){l(t);try{p(d.Util.getCSS(t,\"backgroundImage\"),t)}catch(i){o(\"html2canvas: failed to get background-image - Exception: \"+i.message)}p(t)}}function h(e,o){e.onload=function(){o.timer!==n&&t.clearTimeout(o.timer),_.numLoaded++,o.succeeded=!0,e.onerror=e.onload=null,s()},e.onerror=function(){if(\"anonymous\"===e.crossOrigin&&(t.clearTimeout(o.timer),i.proxy)){var n=e.src;\nreturn e=new Image,o.img=e,e.src=n,void a(e.src,e,o)}_.numLoaded++,_.numFailed++,o.succeeded=!1,e.onerror=e.onload=null,s()}}var g,b,v,w,_={numLoaded:0,numFailed:0,numTotal:0,cleanupDone:!1},y=0,x=i.elements[0]||e.body,$=x.ownerDocument,k=$.images,T=k.length,C=$.createElement(\"a\"),S=function(t){return t.crossOrigin!==n}(new Image);for(C.href=t.location.href,g=C.protocol+C.host,b={loadImage:function(e){var o,s;e&&_[e]===n&&(o=new Image,e.match(/data:image\\/.*;base64,/i)?(o.src=e.replace(/url\\(['\"]{0,}|['\"]{0,}\\)$/gi,\"\"),s=_[e]={img:o},_.numTotal++,h(o,s)):r(e)||i.allowTaint===!0?(s=_[e]={img:o},_.numTotal++,h(o,s),o.src=e):S&&!i.allowTaint&&i.useCORS?(o.crossOrigin=\"anonymous\",s=_[e]={img:o},_.numTotal++,h(o,s),o.src=e,o.customComplete=function(){this.img.complete?this.img.onerror():this.timer=t.setTimeout(this.img.customComplete,100)\n}.bind(s),o.customComplete()):i.proxy&&(s=_[e]={img:o},_.numTotal++,a(e,o,s)))},cleanupDOM:function(r){var a,c;if(!_.cleanupDone){o(r&&\"string\"==typeof r?\"html2canvas: Cleanup because: \"+r:\"html2canvas: Cleanup after timeout: \"+i.timeout+\" ms.\");for(c in _)if(_.hasOwnProperty(c)&&(a=_[c],\"object\"==typeof a&&a.callbackname&&a.succeeded===n)){t[a.callbackname]=n;try{delete t[a.callbackname]}catch(d){}a.script&&a.script.parentNode&&(a.script.setAttribute(\"src\",\"about:blank\"),a.script.parentNode.removeChild(a.script)),_.numLoaded++,_.numFailed++,o(\"html2canvas: Cleaned up failed img: '\"+c+\"' Steps: \"+_.numLoaded+\" / \"+_.numTotal)\n}t.stop!==n?t.stop():e.execCommand!==n&&e.execCommand(\"Stop\",!1),e.close!==n&&e.close(),_.cleanupDone=!0,r&&\"string\"==typeof r||s()}},renderingDone:function(){w&&t.clearTimeout(w)}},i.timeout>0&&(w=t.setTimeout(b.cleanupDOM,i.timeout)),o(\"html2canvas: Preload starts: finding background-images\"),_.firstRun=!0,f(x),o(\"html2canvas: Preload: Finding images\"),v=0;T>v;v+=1)b.loadImage(k[v].getAttribute(\"src\"));return _.firstRun=!1,o(\"html2canvas: Preload: Done.\"),_.numTotal===_.numLoaded&&s(),b},d.Renderer=function(t,o){function i(t){var e=[],n=function(t){var o=[],i=[];\nt.children.forEach(function(t){t.children&&t.children.length>0?(o.push(t),i.push(t.zindex)):e.push(t)}),i.sort(function(t,e){return t-e}),i.forEach(function(t){var e;o.some(function(n,o){return e=o,n.zindex===t}),n(o.splice(e,1)[0])})};return t&&t.zIndex&&n(t.zIndex),e}function r(t){var e;if(\"string\"==typeof o.renderer&&d.Renderer[t]!==n)e=d.Renderer[t](o);else{if(\"function\"!=typeof t)throw new Error(\"Unknown renderer\");e=t(o)}if(\"function\"!=typeof e)throw new Error(\"Invalid renderer defined\");return e\n}return r(o.renderer)(t,o,e,i(t),d)},d.Util.Support=function(t,e){function i(){var t=new Image,i=e.createElement(\"canvas\"),r=i.getContext===n?!1:i.getContext(\"2d\");if(r===!1)return!1;i.width=i.height=10,t.src=[\"data:image/svg+xml,\",\"\",\"\",\"
        \",\"sup\",\"
        \",\"
        \",\"
        \"].join(\"\");try{r.drawImage(t,0,0),i.toDataURL()\n}catch(s){return!1}return o(\"html2canvas: Parse: SVG powered rendering available\"),!0}function r(){var t,n,o,i,r=!1;return e.createRange&&(t=e.createRange(),t.getBoundingClientRect&&(n=e.createElement(\"boundtest\"),n.style.height=\"123px\",n.style.display=\"block\",e.body.appendChild(n),t.selectNode(n),o=t.getBoundingClientRect(),i=o.height,123===i&&(r=!0),e.body.removeChild(n))),r}return{rangeBounds:r(),svgRendering:t.svgRendering&&i()}},t.html2canvas=function(e,n){e=e.length?e:[e];var i,r,s={logging:!1,elements:e,background:\"#fff\",proxy:null,timeout:0,useCORS:!1,allowTaint:!1,svgRendering:!1,ignoreElements:\"IFRAME|OBJECT|PARAM\",useOverflow:!0,letterRendering:!1,chinese:!1,width:null,height:null,taintTest:!0,renderer:\"Canvas\"};\nreturn s=d.Util.Extend(n,s),d.logging=s.logging,s.complete=function(t){(\"function\"!=typeof s.onpreloaded||s.onpreloaded(t)!==!1)&&(i=d.Parse(t,s),(\"function\"!=typeof s.onparsed||s.onparsed(i)!==!1)&&(r=d.Renderer(i,s),\"function\"==typeof s.onrendered&&s.onrendered(r)))},t.setTimeout(function(){d.Preload(s)},0),{render:function(t,e){return d.Renderer(t,d.Util.Extend(e,s))},parse:function(t,e){return d.Parse(t,d.Util.Extend(e,s))},preload:function(t){return d.Preload(d.Util.Extend(t,s))},log:o}},t.html2canvas.log=o,t.html2canvas.Renderer={Canvas:n},d.Renderer.Canvas=function(t){function i(t,e){t.beginPath(),e.forEach(function(e){t[e.name].apply(t,e.arguments)\n}),t.closePath()}function r(t){if(-1===d.indexOf(t.arguments[0].src)){u.drawImage(t.arguments[0],0,0);try{u.getImageData(0,0,1,1)}catch(e){return l=c.createElement(\"canvas\"),u=l.getContext(\"2d\"),!1}d.push(t.arguments[0].src)}return!0}function s(t){return\"transparent\"===t||\"rgba(0, 0, 0, 0)\"===t}function a(e,n){switch(n.type){case\"variable\":e[n.name]=n.arguments;break;case\"function\":if(\"createPattern\"===n.name){if(n.arguments[0].width>0&&n.arguments[0].height>0)try{e.fillStyle=e.createPattern(n.arguments[0],\"repeat\")\n}catch(s){o(\"html2canvas: Renderer: Error creating pattern\",s.message)}}else\"drawShape\"===n.name?i(e,n.arguments):\"drawImage\"===n.name?n.arguments[8]>0&&n.arguments[7]>0&&(!t.taintTest||t.taintTest&&r(n))&&e.drawImage.apply(e,n.arguments):e[n.name].apply(e,n.arguments)}}t=t||{};var c=e,d=[],l=e.createElement(\"canvas\"),u=l.getContext(\"2d\"),m=t.canvas||c.createElement(\"canvas\");return function(t,e,i,r,c){var d,l,u,p,f,h,g=m.getContext(\"2d\");if(m.width=m.style.width=e.width||t.ctx.width,m.height=m.style.height=e.height||t.ctx.height,h=g.fillStyle,g.fillStyle=s(t.backgroundColor)&&e.background!==n?e.background:t.backgroundColor,g.fillRect(0,0,m.width,m.height),g.fillStyle=h,e.svgRendering&&t.svgRender!==n)g.drawImage(t.svgRender,0,0);\nelse for(l=0,u=r.length;u>l;l+=1)d=r.splice(0,1)[0],d.canvasPosition=d.canvasPosition||{},g.textBaseline=\"bottom\",d.clip&&(g.save(),g.beginPath(),g.rect(d.clip.left,d.clip.top,d.clip.width,d.clip.height),g.clip()),d.ctx.storage&&d.ctx.storage.forEach(a.bind(null,g)),d.clip&&g.restore();return o(\"html2canvas: Renderer: Canvas renderer done - returning canvas obj\"),u=e.elements.length,1===u&&\"object\"==typeof e.elements[0]&&\"BODY\"!==e.elements[0].nodeName?(f=c.Util.Bounds(e.elements[0]),p=i.createElement(\"canvas\"),p.width=f.width,p.height=f.height,g=p.getContext(\"2d\"),g.drawImage(m,f.left,f.top,f.width,f.height,0,0,f.width,f.height),m=null,p):m\n}}}(window,document)}})}(),$(window).on(\"swap_begin\",function(){bds&&bds.se&&void 0!==bds.se.displayTime&&null!==bds.se.displayTime&&(clearTimeout(bds.se.displayTime),bds.se.displayTime=null)}).on(\"confirm\",function(){bds&&bds.comm&&bds.comm.globalLogFlag&&1==bds.comm.globalLogFlag&&(1==bds.comm.logFlagNoNetwork||1==bds.comm.logFlagNoIntegration||(bds.se.displayTime=setTimeout(function(){bds&&bds.se&&bds.se.display(),bds.se.displayTime=null},5e3))),bds&&bds.se.userAction.collect()}).on(\"swap_end\",function(t,e){!e&&bds&&bds.comm&&bds.comm.globalLogFlag&&1==bds.comm.globalLogFlag&&(1==bds.comm.logFlagNoNetwork||1==bds.comm.logFlagNoIntegration||(bds.se.displayTime=setTimeout(function(){bds&&bds.se&&bds.se.display(),bds.se.displayTime=null\n},5e3))),!e&&bds&&bds.se.userAction.collect(),bds.log.send.sendNow(\"flow_monitor\",{},{qid:bds.comm.qid,log:{},len:1})}),$(window).on(\"swap_end\",function(){bds.comm.__rdNum&&bds.comm.__rdNum>9e3&&setTimeout(function(){$.ajax({dataType:\"script\",cache:!0,url:\"https://ss1.bdstatic.com/5eN1bjq8AAUYm2zgoY3K/r/www/cache/static/protocol/https/plugins/clean_7973b0f.js\",success:function(){bds.se.cleanCookie.init()}})},0)}),!function(){var t=navigator.userAgent,e=t.match(/MSIE\\s*(\\d+)/),n=e&&e[1]&&+e[1]<=9;n||require([\"plugins/swfobject\",\"soutu/js/tu\"],function(t,e){if(/^\\/imgsearch/.test(location.pathname)){var n=$(\"#content_left\").find(\".result-op\"),o=[];\nn.each(function(){var t=$(this),e=t.attr(\"tpl\");\"tu_relate_site\"===e&&(e+=\"@\"+t.find(\".op-tu-relate-site-result\").length),o.push(e)}),e.log({rsv_imageshow:o.join(\":\")}),$(\"#page\").hide(),$(\"#wrapper\").outerHeight()<$(document).outerHeight()&&$(\"#foot\").addClass(\"foot_fixed_bottom\")}})}(),!function(){function t(t){var e=[\"voice_beha=1\"],n=window.bds&&bds.util&&bds.util.domain?bds.util.domain.get(\"http://nsclick.baidu.com\"):\"http://nsclick.baidu.com\";for(var o in t)t.hasOwnProperty(o)&&e.push(o+\"=\"+t[o]);\nvar i=window[\"nsIMG\"+ +new Date]=new Image;return i.src=n+\"/v.gif?pid=201&\"+e.join(\"&\"),!0}(location.href.match(/voice=1/)||navigator.userAgent.match(/mac os x/i))&&require([\"plugins/swfobject\",\"voice/js/voice\"],function(e,n){if(n.log=t,n&&n.support()){n.addStyle(),window.__supportvoice=!0;var o=$(\"#form .ipt_rec\");o.css(\"display\",\"block\"),o.click(function(){var t=n.init({url:bds.util.domain.get(\"http://vse.baidu.com\")+\"/echo.fcgi\"});t.done(function(t){t.openUI(),t.onfinish(function(t){var e=t.content.item[0],n=t&&t.result?t.result.corpus_no:\"\";\nchangeUrl(\"wd=\"+encodeURIComponent(e)+\"&rsv_voice=1&hsug_mtype=2&rsv_vcorpus=\"+encodeURIComponent(n)),bds.comm.lastVoiceQuery=e}),n.log({q:\"resolve\"})}).fail(function(){n.log({q:\"reject\"}),alert(\"不能获得麦克风的权限\")}),n.log({q:\"start\"})})}})}();" + "text": "function addEV(t,e,n){window.attachEvent?t.attachEvent(\"on\"+e,n):window.addEventListener&&t.addEventListener(e,n,!1)}function _aMC(t){for(var e=t,n=-1;e=e.parentNode;)if(n=parseInt(e.getAttribute(\"id\")),n>0)return n}function al_c(t){for(;\"TABLE\"!=t.tagName;)t=t.parentNode;return t.getAttribute(\"id\")}function al_c2(t,e){for(;e--;)for(;\"TABLE\"!=(t=t.parentNode).tagName;);return t.getAttribute(\"id\")}function c(t){var e=t.p1;if(!(\"alop\"!=t.fm||\"rsv_xpath\"in t||e&&\"6677\"==G(e).getAttribute(\"srcid\")))return!0;\n!e||\"p5\"in t||(t.p5=e);var n=window.document.location.href,o=\"\",i=\"\",r=\"\",s=window[\"BD_PS_C\"+(new Date).getTime()]=new Image;for(v in t){switch(v){case\"title\":i=t[v].replace(/<[^<>]+>/g,\"\"),i&&i.length>100&&(i=i.substring(0,100)),i=encodeURIComponent(i);break;case\"mu\":case\"url\":i=escape(t[v]);break;default:i=t[v]}o+=\"&\"+v+\"=\"+i}if(!(\"mu\"in t))try{\"p2\"in t&&G(t.p1).getAttribute(\"mu\")&&\"pl\"!=t.fm&&(r=\"&mu=\"+escape(G(t.p1).getAttribute(\"mu\")))}catch(a){}if(window.bds&&bds.comm){var c=bds.comm.ubsurl+\"?q=\"+bds.comm.queryEnc+o+r+\"&rsv_sid=\"+bds.comm.sid+\"&cid=\"+bds.comm.cid+\"&qid=\"+bds.comm.queryId+\"&t=\"+(new Date).getTime();\nif(bds.comm.inter&&(c=c+\"&rsv_inter=\"+bds.comm.inter),bds.comm.seinfo&&bds.comm.seinfo.rsv_pstg&&(c=c+\"&rsv_pstg=\"+bds.comm.seinfo.rsv_pstg),bds.comm.cftime&&0!=bds.comm.cftime&&(c=c+\"&rsv_cftime=\"+bds.comm.cftime),c+=bds.comm.resultPage?\"&rsv_iorr=1\":\"&rsv_iorr=0\",bds.comm.tn&&(c=c+\"&rsv_tn=\"+bds.comm.tn),bds.comm.indexSid&&(c+=\"&rsv_isid=\"+bds.comm.indexSid),bds.comm.lastVoiceQuery&&(c+=\"&rsv_lavo=\"+encodeURIComponent(bds.comm.lastVoiceQuery)),Cookie.get(\"ispeed\")&&(c+=\"&rsv_ispeed=\"+Cookie.get(\"ispeed\")),/ssl_sample/.test(location.href)){var d=location.href.match(/ssl_sample=[^=&]+/i);\nc+=\"&rsv_\"+d[0]}if(/ssl_s=/.test(location.href)){var d=location.href.match(/ssl_s=[^=&]+/i);c+=\"&rsv_\"+d[0]}c+=\"&rsv_ssl=\"+(\"https:\"===location.protocol?1:0),c+=\"&path=\"+encodeURIComponent(n),c+=\"&rsv_did=\"+(bds.comm.did?bds.comm.did:\"\"),s.src=c}return!0}function TagQ(t,e){return e.getElementsByTagName(t)}function h(t){t.style.behavior=\"url(#default#homepage)\",t.setHomePage(bds.comm.domain);var e=window[\"BD_PS_C\"+(new Date).getTime()]=new Image;e.src=bds.comm.ubsurl+\"?fm=hp&tn=\"+bds.comm.tn+\"&t=\"+(new Date).getTime()\n}function setHeadUrl(t){var e=G(\"kw\").value;e=encodeURIComponent(e);var n=t.href;n=n.replace(new RegExp(\"(\"+t.getAttribute(\"wdfield\")+\"=)[^&]*\"),\"$1\"+e),t.href=n}function G(t){return document.getElementById(t)}function ns_c_pj(t,e){var n=encodeURIComponent(window.document.location.href),o=\"\",i=\"\",r=\"\",s=bds&&bds.comm&&bds.comm.did?bds.comm.did:\"\";wd=bds.comm.queryEnc,nsclickDomain=bds&&bds.util&&bds.util.domain?bds.util.domain.get(\"http://nsclick.baidu.com\"):\"http://nsclick.baidu.com\",img=window[\"BD_PS_C\"+(new Date).getTime()]=new Image,src=\"\";\nfor(v in t){switch(v){case\"title\":i=encodeURIComponent(t[v].replace(/<[^<>]+>/g,\"\"));break;case\"url\":i=encodeURIComponent(t[v]);break;default:i=t[v]}o+=v+\"=\"+i+\"&\"}if(r=\"&mu=\"+n,src=nsclickDomain+\"/v.gif?pid=201&\"+(e||\"\")+o+\"path=\"+n+\"&wd=\"+wd+\"&rsv_sid=\"+(bds.comm.ishome&&bds.comm.indexSid?bds.comm.indexSid:bds.comm.sid)+\"&rsv_did=\"+s+\"&t=\"+(new Date).getTime(),\"undefined\"!=typeof Cookie&&\"undefined\"!=typeof Cookie.get)Cookie.get(\"H_PS_SKIN\")&&\"0\"!=Cookie.get(\"H_PS_SKIN\")&&(src+=\"&rsv_skin=1\");else{var a=\"\";\ntry{a=parseInt(document.cookie.match(new RegExp(\"(^| )H_PS_SKIN=([^;]*)(;|$)\"))[2])}catch(c){}a&&\"0\"!=a&&(src+=\"&rsv_skin=1\")}return img.src=src,!0}function ns_c(t,e){return e===!0?ns_c_pj(t,\"pj=www&rsv_sample=1&\"):ns_c_pj(t,\"pj=www&\")}function escapeHTML(t){return t.replace(/&/g,\"&\").replace(//g,\">\").replace(/ /g,\" \").replace(/\"/g,\""\").replace(/'/g,\"'\")}function initPreload(t){function e(){Cookie.set(\"ISSW\",\"1\",null,null,new Date((new Date).getTime()+3e5))\n}function n(t,e){e=e||3,Cookie.set(\"ISWR\",t,null,null,new Date((new Date).getTime()+1e3*e))}function o(t){t&&\"string\"==typeof t&&(t=$.parseJSON(t)),t&&t.length&&$.each(t,function(t,e){if(0===e.indexOf(ne.protocol)){var n=new Image;n.src=e}})}function i(t){return $.trim(t).replace(/\\s+/g,\" \")}function r(t){if(\"string\"==typeof t){var e,n=0;for(e=0;e-1?(o=t.split(\"?\"),i=o[1]):i=t,e=i.indexOf(\"&\")>-1?i.split(\"&\"):new Array(i);\nfor(var s=0;s-1?e[s]:e[s]+\"=\",n=e[s].split(\"=\"),r[n[0]]=decodeURIComponent(n[1].replace(/\\+/g,\" \"))}catch(a){}return r}function a(t){function e(t){if(document.all)$(\"style[data-for='result']\").get(0).styleSheet.cssText+=t;else{var e=document.createElement(\"style\");e.type=\"text/css\",e.appendChild(document.createTextNode(t)),e.setAttribute(\"data-for\",\"result\"),document.getElementsByTagName(\"HEAD\")[0].appendChild(e)}}function n(){B.css({filter:\"progid:DXImageTransform.Microsoft.Alpha(Opacity=95)\",opacity:.95}),H||(e(\".slowmsg{z-index:301;background-color:#fff;border:1px solid #f0f0f0;position:fixed;_position:absolute;top:144px;left:212px;height:95px;width:360px;box-shadow:0 0 5px rgba(0,0,0,0.05)}.slowmsg .ball{width:40px;margin:41px auto 0;position:relative;}.slowmsg .b{left:20px;position:absolute;width:10px;height:10px;-moz-border-radius: 50%;-webkit-border-radius: 50%;border-radius: 50%;}\"),H=$('
        '),H.find(\".b\").each(function(t,e){var n=[[0,40],[20,20],[40,0]][t],o=[\"rgb(55,137,250)\",\"rgb(99,99,99)\",\"rgb(235,67,70)\"],i=0;\n$(e).css({\"background-color\":o[t]}),function r(){return F?($(e).animate({left:n[i%2]},{duration:800,easing:\"swing\",progress:function(n,r){r>=.5&&$(e).css({\"background-color\":o[(i+t)%3]})},complete:function(){r()}}),void i++):void setTimeout(r,400)}()})),H.appendTo(Ye),ns_c({pj_name:\"loading_msg\"})}function o(){var t,e=(new Date).getTime();Cookie.set(\"rsv_jmp_slow\",e),Cookie.set(\"WWW_ST\",e,null,null,new Date(e+3e4)),t=ne.href+(ne.href.indexOf(\"?\")>0?\"&\":\"?\")+\"rsv_jmp=slow\",ne.replace(t)}if(!V){var t=$.extend({top:93,\"z-index\":300},t),i=$(window).height();\nB||(B=$(\"
        \")),B.css({filter:\"progid:DXImageTransform.Microsoft.Alpha(Opacity=30)\",opacity:.3,position:\"absolute\",background:\"#fff\",\"z-index\":t[\"z-index\"],top:t.top+\"px\",left:\"0\"}),V=!0,B.width(Ye.width()),B.height(Math.max(i,Ye.height())-t.top),B.appendTo(Ye),$(window).scrollTop(),F=setTimeout(n,3e3),G=setTimeout(o,7e3),Q=function(){F&&(clearTimeout(F),F=setTimeout(n,3e3)),G&&(clearTimeout(G),G=setTimeout(o,7e3))}}}function d(){B&&V&&(V=!1,B.remove(),H&&H.remove(),F&&(clearTimeout(F),F=!1),W&&W.remove(),G&&(clearTimeout(G),G=!1))\n}function l(t,e,n){n||(n=0);var o=t.length;for(0>n&&(n=o+n);o>n;n++)if(t[n]===e)return n;return-1}function u(t,e,n){var o=e.find(\"script:not([src])\"),i=0,r=$.globalEval;$.globalEval=function(t){window.currentScriptElem=o[i],i++;try{r.apply($,arguments)}catch(e){window.console&&console.debug&&(console.debug(t),console.debug(e))}},\"insertBefore\"==n?e.insertBefore(t):t.append(e),window.currentScriptElem=void 0,$.globalEval=r}function m(t){try{t()}catch(e){window.console&&console.debug&&console.debug(e),J(e.toString())\n}}function p(t,e){function n(t){if(\"object\"==typeof t){var e={};for(a in t)t.hasOwnProperty(a)&&(e[a]=t[a])}else e=t;return e}if(!p.__init){p.__init=!0;var o=[\"wd\",\"pn\",\"nojc\",\"cl\",\"cq\",\"srcid\",\"gpc\",\"tfflag\",\"si\",\"sl_lang\",\"rsv_srlang\",\"rqlang\"],i=[\"wd\",\"cl\",\"ct\",\"tn\",\"rn\",\"ie\",\"f\",\"lm\",\"si\",\"gpc\",\"tfflag\",\"usm\",\"z\",\"ch\",\"sts\",\"vit\",\"dsp\",\"trh\",\"trb\",\"tre\",\"la\",\"lo\",\"st\",\"nojc\",\"haobd\",\"rtt\",\"bsst\",\"gvideo\",\"__eis\",\"__eist\",\"oq\",\"fenlei\",\"sid\",\"rsv_idx\",\"rsv_stat\",\"rsv_bp\",\"rqlang\"],r=[\"w\",\"word\"];\np.prototype.clone=function(t){var e=new p(n(this.params));if(\"object\"==typeof t)for(var o in t)t.hasOwnProperty(o)&&l(i,o)>=0&&e.p(o,t[o]);return e},p.prototype.h=function(t){this.header_params=this.header_params||{};for(var e in t)this.header_params[e]=t[e];return this},p.prototype.buildHeaders=function(t){t&&this.setHeader(t);var e={};for(var n in this.header_params)if(\"object\"==typeof this.header_params[n]){var o=[];for(var i in this.header_params[n]){var r=this.header_params[n][i];r instanceof Array&&(r=r.join(\"|\")),o.push(i+\"=\"+r)\n}e[n]=o.join(\"&\")}else e[n]=this.header_params[n];return e},p.prototype.buildSearchUrl=function(t){return ne.protocol+\"//\"+ne.host+ne.pathname+ne.search+\"#\"+this.buildQueryString(t)},p.prototype.buildSyncSearchUrl=function(t){return ne.protocol+\"//\"+ne.host+\"/s?\"+this.buildQueryString(t)},p.prototype.buildQueryString=function(t){var e=n(this.params);if(\"object\"==typeof t)for(var o in t)t.hasOwnProperty(o)&&(e[o]=t[o]);var i=\"\";e.wd=$.limitWd(e.wd);for(param in e)param&&e.hasOwnProperty(param)&&\"\"!==e[param]&&(i+=param+\"=\"+encodeURIComponent(e[param]).replace(/'/g,\"%27\")+\"&\");\nreturn i.substr(0,i.length-1)},p.prototype.equals=function(t){if(!t||!t.p)return!1;for(var e=0;e=0&&(t=\"wd\"),void 0===e?this.params[t]:(this.params[t]=e,this)},p.prototype.hashCode=function(){var t=[];if(!this.p(\"wd\"))return\"\";for(var e=0;e_.st&&_.net-_.st-w.cus_srv>0?_.net-_.st-w.cus_srv:1,w.cus_tti2=_.dom>_.st?_.dom-_.st:1,w.cus_frdom=_.dom-_.pt,w.cus_fs=_.fs>_.st?_.fs-_.st:w.cus_tti2,w.cus_frext=w.cus_fs-w.cus_tti2}function i(t){var e=\"\";for(var n in t)n&&t.hasOwnProperty(n)&&\"\"!==t[n]&&(e+=\"&\"+n+\"=\"+encodeURIComponent(t[n]));return e}function r(t){var t=[];for(var e in k)t.push(k[e]);\nvar n=T=$.when.apply($,t);T.always(function(){n===T&&m()})}function s(){var t=Array.apply(null,arguments);if(!(!t.length>0))for(var e=0;e.51&&.52>t;S=S||bds.comm.bfe_sample;var s=S&&t>.6&&.9>t;if(t>.51&&.52>t||e.test(bds.comm.sid)&&t>0&&.2>t||bds.comm.intrSid||s){e.test(bds.comm.sid)&&(r?n(\"issam\",2):n(\"issam\",1)),s&&(n(\"issam\",3),n(\"bfesam\",bds.comm.bfe_sample)),o(),h(C),g(C),n(\"srvInfo\",f()),n(\"sysv\",navigator.appMinorVersion),a(),x.fire();var c=\"//www.baidu.com/nocache/fesplg/s.gif?log_type=sp\",d=\"\";\nd+=i(v)+i(w);var l=c+d,u=new Image,m=\"_LOG_\"+(new Date).getTime();u.onload=function(){delete window[m]},window[m]=u,u.src=l}}function p(t){C=t,t.find(\"img\").one(\"load\",function(){var t=$(this).offset(),o=t.top,i=t.left,r=\"\";if(I>o&&o>0){e(\"fs\");var s=_.fs-_.dom;y.push(o+\"_\"+i+\"_\"+s),r=$(this).attr(\"data-src\")||/^http/.test($(this).attr(\"src\"))?$(this).attr(\"data-src\")||$(this).attr(\"src\"):\"base64\",n(\"ic_lis\",r)}})}function f(){var t,e,n=$.parseJSON(bds.comm.speedInfo),o=[];for(var i in n){if(t=n[i],e=t.ModuleId+\"_\"+t.TimeCost+\"_\"+t.TimeSelf+\"_\"+t.Idc,t.hasOwnProperty(\"SubProcess\"))for(var r in t.SubProcess)e+=\",\"+t.SubProcess[r].ProcessId+\"_\"+t.SubProcess[r].TimeCost+\"_\"+t.SubProcess[r].isHitCache+\"_\"+t.SubProcess[r].Idc;\no.push(e)}return encodeURIComponent(o.join(\"|\"))}function h(t){for(var e=0,o=t.find(\"img\"),i=t.find(\"#content_left\").find(\"img\"),r=0,s=0,a=0;as&&s>0&&e++;n(\"cus_ic\",o.length),n(\"cus_extic\",e),n(\"cus_extlic\",r),n(\"cus_icl\",i.length),n(\"cus_icr\",t.find(\"#content_right\").find(\"img\").length),n(\"img_info\",y.join(\",\")),n(\"psize\",t.html().length)}function g(t){var e={},o=[],i=t.find(\"#content_left,#con-ar\").children(\"*[tpl]\"),r=\"\";if(i.length>0)for(var s=0;s0&&n(\"tplp\",o.join(\"|\"))}function b(t){x.add(t)}var v={product_id:45,page_id:317,page_type:0},w={},_={st:0,pt:0,net:0,dom:0,fs:0},y=[],x=$.Callbacks(),k={},T=null,C=null,S=null,I=600;return l(),{trigger:d,mark:e,setParam:n,onSendlog:b,bindImgLoad:p,destroy:c,init:u}}function h(t,e){t&&(e=$.extend(t.log,e))}function g(){if(bds.comm.seinfo){bds.comm.seinfo.rsv_pre=encodeURIComponent(b()),bds.comm.seinfo.rsv_reh=reh_rec(),bds.comm.seinfo.rsv_scr=scr_rec();var t=null;if(bds&&bds.comm&&bds.comm.personalData)try{\"string\"==typeof bds.comm.personalData&&(bds.comm.personalData=$.parseJSON(bds.comm.personalData)),t=bds.comm.personalData?bds.comm.personalData.fullSkinName&&bds.comm.personalData.fullSkinName.value:null\n}catch(e){t=null}if(t&&(bds.comm.seinfo.rsv_skin=t),bds.comm.seinfo.rsv_psid=$.getCookie(\"BIDUPSID\"),bds.comm.seinfo.rsv_pstm=$.getCookie(\"PSTM\"),bds.comm.seinfo.rsv_idc=function(){var t=bds.comm.speedInfo||[];try{t=$.parseJSON(t)}catch(e){t=[]}for(var n=0,o=t.length;o>n;n++)if(9540==t[n].ModuleId)return t[n].Idc||\"\";return\"\"}(),c(bds.comm.seinfo),\"ON\"===bds.comm._se_click_track_flag){var n=new Image,o=\"//www.baidu.com/s?wd=\"+bds.comm.queryEnc+\"&qid=\"+bds.comm.queryId+\"<s=91\";n.src=o}}!function(){var t=Math.random(),e=function(){function t(){var t=[],o=[],i={};\nfor(var r in n)!function(e){var r=\"_SSL_LOG_\"+e+\"_\"+ +new Date,s=new Image,a=new Date;i[e]=$.Deferred(),o.push(i[e]),s.onload=function(){t.push(e+\"_success=\"+(new Date-a)),i[e].resolve(),delete window[r]},s.onerror=function(){t.push(e+\"_error=\"+(new Date-a)),i[e].resolve(),delete window[r]},s.src=n[e]}(r);var s=$.when.apply($,o);s.always(function(){var n=\"//www.baidu.com/nocache/fesplg/s.gif?log_type=hm&type=ssl&\",o=t.join(\"&\"),i=new Image,r=\"_HM_LOG_\"+(new Date).getTime();i.onload=function(){delete window[r]\n},window[r]=i,i.src=n+o+\"&_tt=\"+e})}var e=+new Date,n={gt1:\"https://gt1.baidu.com/nocache/imgdata/sp613.gif?t=\"+e,gt2:\"https://gt2.baidu.com/nocache/imgdata/sp613.gif?t=\"+e};setTimeout(t,1e3)};t>.1&&.11>t&&e()}()}function b(){return Le.length}function v(t){$(document).delegate(\"a\",\"mousedown\",function(){return function(){var e=$(this);w(e,t)}}())}function w(t,e){var n,o=e.prefix,i=t.attr(\"href\");if(o&&i&&0==i.indexOf(o)&&(i=i.substring(o.length)),!o&&i){var r=i.match(/^http:\\/\\/[^\\/]+/);if(!r)return;\no=r[0],i=i.replace(/^http:\\/\\/[^\\/]+/,\"\")}if(i&&(n=i.match(/^\\/*(link|baidu.php)\\?(.*)$/),n=i.match(e.regex)),!(n&&n[2]&&n[2].match(/&(wd|word)=/))){if(i&&n){e.convertTable&&e.convertTable[n[1]]&&(n[1]=e.convertTable[n[1]]);var s=ie.getLinkParams(i);s&&(\"https:\"===ne.protocol&&/Chrome|Safari/.test(navigator.userAgent)&&(o=o.replace(/^http:\\/\\/www\\.baidu\\.com/,\"https://www.baidu.com\")),i=o+\"/\"+n[1]+\"?\"+n[2]+\"&\"+s,t.attr(\"href\",o+\"/\"+n[1]+\"?\"+n[2]+\"&\"+s),t.click(function(){window.PDC_ASYNC.setLinkData(\"click_t\",(new Date).getTime()),window.PDC_ASYNC.setLinkData(\"linkpreload\",$(this).attr(\"linkpreload\"))\n}))}return i}}function _(t){if(!window.__disable_is2||$.trim(t)!=$.trim($e.val())){if(Ze||!bds.comm.supportis)return void(ke&&ke.html(\"\"));if(0!=pageState&&!window.__disable_kw_tip)if(ke||(ke=$('
        ').insertBefore($e),ke.parent().click(function(t){var e=$e.get(0);if(t.target===e)return!0;e.focus();var n=e.value.length;if(document.selection){var o=e.createTextRange();o.moveStart(\"character\",n),o.collapse(),o.select()\n}else\"number\"==typeof e.selectionStart&&\"number\"==typeof e.selectionEnd&&(e.selectionStart=e.selectionEnd=n);return!1}),ke.get(0).onselectstart=function(){return!1}),ke.text(t),\"\"!=t){var e=$e.textWidth();ke.css({\"margin-left\":e+10+\"px\",\"max-width\":ke.parent().width()-e-14+\"px\"}).text(t),window.__disable_is2&&ke.css(\"z-index\",1),ke.show()}else ke.hide()}}function y(){Ze=!1}function x(){Ze=!0,ze&&ze.real_wd&&$.trim($e.val())?(_(ze.real_wd),k(ze)):(_(\"\"),k())}function k(t){var e=i($e.val());t&&e==t.real_wd&&$(\"#super_se_tip\").remove()\n}function T(t,e){var n=(new Date).getTime();if(e.force||h(e,{utime:(new Date).getTime()-qe}),!e||!e.loaded)return!1;\"string\"==typeof e.html&&(e.html=$(e.html)),$(e).trigger(\"swap_begin\"),m(function(){e.pdc.mark(\"pt\"),$(window).trigger(\"swap_begin\",[e,t]);var n=Ge&&Ge.getData();n&&(setTimeout(function(){e.pdc.setParam(\"ispeed\",Ge.monitor(n))},3e3),e.pdc.setParam(\"upm\",n.join(\",\")))}),m(function(){e.base64.restart();try{if(!e.base64_loaded){var t=$.parseJSON(e.html.find(\"#img_list\").text());e.base64.loadImg(t.right,t.left)\n}}catch(n){}e.base64.end()});var o=[$(window).scrollLeft(),$(window).scrollTop()];Ae.hide(),oldEnv=Me,Me=t,He=ze,ze=e,bds.comm.cur_disp_query=t.p(\"wd\"),S(),bds&&bds.se&&bds.se.certification&&bds.se.certification.data&&(bds.se.certification.data=[]),0==pageState&&N(t),m(function(){he()}),bds.clearReady(),Ae.empty();var i=e.html;if(X.use_cache_repeatedly&&(i=i.clone()),m(function(){i.find(\"#head_style\").children().removeAttr(\"data-for\").appendTo(\"head\")}),m(function(){$.globalEval(i.find(\"#head_script\").html())\n}),bds.comm&&bds.comm.jsversion&&\"006\"!=bds.comm.jsversion){var r=Me.buildSyncSearchUrl({jmp:\"jsver\",_vr:Math.random()});return void ne.replace(r)}m(function(){i.find(\"#content_script script\").each(function(t,e){$.globalEval($(e).html())})}),m(function(){var t=i.find(\"#s_tab\");if(t.size()){var e=$(\"#s_tab\");e.size()?e.replaceWith(t):t.insertBefore(Ae)}});var s=!1;!function(){var t=i.find(\"#con-at\"),n=$(\"#con-at\"),o=n.children().children();if(o.size())if(t.children().size()){var r=t.children().children();\no.attr(\"cq\")!=r.attr(\"cq\")||o.attr(\"srcid\")!=r.attr(\"srcid\")||e.force&&oldEnv&&oldEnv.equals(Me)||!Me.p(\"cq\")||!Me.p(\"srcid\")||1==Me.p(\"_trf\")?(n.remove(),$(window).trigger(\"top_result_removed\"),u(Ae,t,\"insertBefore\")):s=!0}else n.remove(),$(window).trigger(\"top_result_removed\");else t.children().size()&&u(Ae,t,\"insertBefore\")}();var a=i.find(\"#container\");if(e.pdc.bindImgLoad(a),u(Ae,a),!$(\"#footer\").size()){var c=i.find(\"#footer\").children();u(Ae,c)}m(function(){var t=(new Date).getTime();i&&$.globalEval(i.find(\"#jsMerge\").html()),h(e,{jsmergetime:(new Date).getTime()-t})\n}),bds&&bds.comm&&bds.comm.templateName==bds.comm.resTemplateName?bds.comm.seinfo&&(bds.comm.seinfo.rsv_tpfail=0):bds.comm.seinfo&&(bds.comm.seinfo.rsv_tpfail=1),0!=pageState&&bds&&bds.util&&bds.util.setContainerWidth&&bds.util.setContainerWidth(),document.title=t.p(\"wd\")+\"_百度搜索\",Ae.show(),d(),h(e,{domtime:(new Date).getTime()-n}),h(e,{waittime:(new Date).getTime()-Te}),e.pdc.mark(\"dom\"),$(window).trigger(\"swap_dom_ready\",[e,t]),window.__lazy_foot_js?setTimeout(function(){C(t,e,n)},0):C(t,e,n),s?window.scrollTo(o[0],o[1]):window.scrollTo(0,0),$(window).trigger(\"scroll\"),swap_wait=!1\n}function C(t,e,n){var o;n||(n=0),e&&(o=e.html),m(function(){_e.get(0).f.value=8}),m(function(){var t=(new Date).getTime();e&&e.base64&&(e.base64.setDomLoad(\"left\"),e.base64.setDomLoad(\"right\")),h(e,{base64time:(new Date).getTime()-t})}),$(\"#search\").find(\"form\").submit(function(){var t=$e;$e=$(this).find(\"[name='wd']\");var e=R.call(this);return $e=t,e}),m(function(){var t=(new Date).getTime();bds.doReady(),h(e,{bdstime:(new Date).getTime()-t})}),m(function(){var t=(new Date).getTime();o&&$.globalEval(o.find(\"#ecomScript\").html()),h(e,{ecomtime:(new Date).getTime()-t})\n}),m(function(){var t=(new Date).getTime();bds.se.tools&&(Ie&&clearTimeout(Ie),Ie=setTimeout(function(){bds.se.tools()},600)),bds&&bds.se&&bds.se.certification&&bds.se.certification.build&&(Se&&clearTimeout(Se),Se=setTimeout(function(){$(\".certification\").size()>0&&bds.se.certification.build.init()},1e3)),bds&&bds.se&&bds.se.safeTip&&(Ce&&clearTimeout(Ce),Ce=setTimeout(function(){$(\".unsafe_ico_new\").size()>0&&bds.se.safeTip.init()},1200)),h(e,{tiptime:(new Date).getTime()-t})}),m(function(){var t=(new Date).getTime();\nwindow.initResultClickLog(),h(e,{clicktime:(new Date).getTime()-t})}),m(function(){h(e,{rtime:(new Date).getTime()-n,used:1}),bds.comm.seinfo&&e&&(bds.comm.seinfo.rsv_pstg=e.type)}),m(function(){$(window).trigger(\"swap_end\",[e,t]),O(),qe=(new Date).getTime(),e&&e.pdc&&(e.pdc.mark(\"js\"),e.pdc.trigger(\"swap_end\"))})}function S(){m(function(){$.each(bds.comm.tips,function(t,e){e&&e.destroy&&e.destroy()}),$(\"#c-tips-container\").empty(),bds.comm.tips=[]}),m(function(){window.app&&window.app.dispose&&window.app.dispose()\n}),m(function(){bds.comm.resolveUnloadHandler()}),bds&&bds.se&&bds.se.certification&&bds.se.certification.data&&(bds.se.certification.data=[]),bds&&bds.se&&bds.se.userAction&&bds.se.userAction.destroy()}function I(){De&&Re&&(clearTimeout(De),De=setTimeout(Re,Z))}function D(t,e,n){return function(e){var o=$.extend({},e);if(t&&!t.confirm){bds.comm.cur_query=t.real_wd,!bds.comm.supportis&&t&&(n=t.pstg||0),t.confirm=!0,De=!1,Re=null;var i={};i.is_referer=oe,i.is_xhr=\"1\";var r=new p(s(ie.getQueryString()),!0);\nt.env.equals(r)||t.env.clone({wd:t.prw}).equals(r)||ie.setUrl(t.env),oe=ne.protocol+\"//\"+ne.host+ne.pathname+ne.search,t.seq?t.seq++:t.seq=1,t.pdc&&(20!=n&&bds.comm.supportis&&t.pdc.mark(\"st\"),t.pdc&&t.pdc.setParam&&t.pdc.setParam(\"cus_pstg\",n),t.force&&t.pdc.setParam(\"f4s\",1),t.pdc.trigger(\"confirm\"),window.PRE_CONN.startTimer()),m(function(){$(window).trigger(\"confirm\",[t,n])});var a=\"/s?ie=utf-8&csq=\"+t.seq+\"&pstg=\"+n+(o.tipConfirm?\"&_cktip=1\":\"\")+\"&mod=2\"+(bds.comm.supportis?\"&isbd=1\":\"\")+\"&cqid=\"+t.qid+\"&istc=\"+((new Date).getTime()-t.startTime)+\"&ver=\"+bds.comm.baiduis_verify+\"&chk=\"+t.chk+\"&isid=\"+ve+\"&\"+t.env.buildQueryString()+(t.force?\"&f4s=1\":\"\")+(\"function\"==typeof Ke?\"&_ck=\"+Ke(t.env.p(\"wd\")):\"\");\nif(bds.comm.indexSid&&(/9998_/.test(bds.comm.indexSid)&&\"https:\"===ne.protocol&&(bds.comm.indexSid=bds.comm.indexSid.replace(\"9998\",\"8499\")),a+=\"&rsv_isid=\"+bds.comm.indexSid),t.no_predict&&(a+=\"&isnop=\"+(1>=fe?0:1)),t&&t.pstg&&(a+=\"&isctg=\"+t.pstg),fe=0,Ue&&Ue.getRsvStatus)try{a+=\"&rsv_stat=\"+Ue.getRsvStatus(t.env.p(\"wd\"))}catch(c){}if(Fe.done(function(){Ue.getStat(\"rsv_sug6\")&&(a+=\"&rsv_sug6=\"+Ue.getStat(\"rsv_sug6\"),bds.comm.seinfo&&(bds.comm.seinfo.rsv_sug6=Ue.getStat(\"rsv_sug6\"))),Ue.getStat(\"rsv_sug7\")&&(a+=\"&rsv_sug7=\"+Ue.getStat(\"rsv_sug7\")),Ue.getStat(\"rsv_sug9\")&&(a+=\"&rsv_sug9=\"+Ue.getStat(\"rsv_sug9\")),Ue.getStat(\"rsv_bp\")&&(a+=\"&rsv_bp=\"+Ue.getStat(\"rsv_bp\"))\n}),$.ajax({headers:i,url:a}).done(function(t){$('#form input[name=\"rqlang\"]').val(bds.comm.search_tool.actualResultLang||\"cn\"),$('#form input[name=\"rsv_bp\"]').val(1),$(t)}).fail(function(){}),bds.comm.seinfo){bds.comm.seinfo.rsv_prw=encodeURIComponent($e.val()),bds.comm.seinfo.rsv_pstg=n,bds.comm.seinfo.rsv_svoice=window.__supportvoice?\"1\":\"0\",t.cftime+=1,bds.comm.cftime=t.cftime+\"\";var d=t.env.p(\"rsv_bak\");d&&(bds.comm.seinfo.rsv_bak=d)}bds.comm.confirmQuery=bds.comm.query,bds.comm.confirmQid=bds.comm.qid,g(),ve=t.qid,Fe.done(function(){20==n?Ue.updateInitData():22==n||bds.comm.supportis||n>=0&&5>=n&&Ue.updateInitData(),Ue.clearStat()\n}),window.cfpromise.resolve()}}}function R(t){if(!ie.support())return!0;if(nn)return!1;if(nn=!0,$e.blur(),_(\"\"),$(this).attr(\"target\"))return!0;en=!0,tn=setTimeout(function(){en=!1},1e3);try{var e=$(\"#kw\").attr(\"placeholder\")||$(\".kw-placeholder\").text();if(!$.trim($e.val())&&!e)return ne.href=\"/\",!1;var n,o=new p,i=$(this).serializeArray();for(n=0;n0&&(n.pstg=e.pstg),n.force&&n.pdc.mark(\"st\"),n.base64=isbase64(n.pdc),Le.push(n.log),pe++,fe++,U(n)}}function L(){var t=[];return Ne&&(t=$.map(Ne.slice(0,2),function(t){return t.value})),t.join(\"\t\")}function j(t){e(),ne.replace(t.buildSyncSearchUrl())}function q(t,e){e?(ae=!0,rn&&(clearTimeout(rn),rn=!1),rn=setTimeout(function(){ae=ce\n},t)):(re=!0,on&&(clearTimeout(on),on=!1),on=setTimeout(function(){re=se},t))}function U(t){var e,s,a=t.env,c={};c.is_referer=ze&&ze.env?ze.env.buildSyncSearchUrl():Be.replace(/\\#.*$/,\"\"),$.extend(c,a.buildHeaders()),c.is_xhr=\"1\",window.bds&&bds.comm&&bds.comm.cur_query?a.p(\"bs\",bds.comm.cur_query):a.p(\"bs\",\"\"),window.bds&&bds.comm&&bds.comm.cur_disp_query&&(c.is_pbs=encodeURIComponent(bds.comm.cur_disp_query));var d=t.no_predict||!bds.comm.supportis?1:11,l=t.pstg;if(!(1==d&&1==l||11==d&&3==l||11==d&&6==l||1==d&&4==l)){var u=\"ie=utf-8\"+(bds.comm.newindex?\"&newi=1\":\"\")+(ge.sid?\"&sid=\"+encodeURIComponent(ge.sid):\"\")+(ge.tnp?\"&tnp=\"+encodeURIComponent(ge.tnp):\"\")+\"&mod=\"+(t.no_predict||!bds.comm.supportis?\"1\":\"11\")+(bds.comm.supportis?\"&isbd=1\":\"\")+\"&isid=\"+ve+\"&\"+a.buildQueryString()+\"&rsv_sid=\"+bds.comm.indexSid+\"&_ss=1&clist=\"+encodeURIComponent(ee.getCacheList())+\"&hsug=\"+encodeURIComponent(L())+(t.force?\"&f4s=1\":\"\")+\"&csor=\"+getCursortPosition($e.get(0));\nt.pstg&&(u+=\"&pstg=\"+t.pstg);var m=\"/s?\"+u;if(m+=\"&_cr1=\"+r(m),!t.no_predict)for(s=ee.find(function(t){return t.loaded||t.no_predict?void 0:!0}),e=0;e0))){if(t.force&&t.shouldShow){var p=!1,f=(new Date).getTime();if(s=ee.find(function(e){var n=a.equals(e.env);return e.loaded||e.no_predict||!n||e===t||(e.shouldShow=!1),!e.loaded&&e.no_predict&&e.force&&n&&e!==t&&(e.shouldShow=e.shouldShow||t.shouldShow,e.startTime&&f-e.startTime<2e3&&(p=!0),window.__sam_backup_request||(p=!0)),e.loaded||n?void e.pdc.mark(\"st\"):!0\n}),p)return;for(e=0;e\")>10)return void(t.force?(n(11),j(a)):ee.deleteCache(t));\nh(t,{ntime:(new Date).getTime()-t.startTime,res:1});var s,c=\"\",d=e.indexOf(c);if(-1!=d){s=$(e.substr(0,d)),t.html=e.substr(d+c.length),window.__dom_pre_parse&&\"1\"==s.find(\"#__need_parse_dom\").html()&&(t.html=$(t.html));try{var l=$.parseJSON(s.find(\"#img_list\").text());t.base64.loadImg(l.right,l.left),t.base64_loaded=!0}catch(u){}try{o(s.find(\"#limg_list\").text())}catch(u){}}else s=t.html=$(e);var m=parseInt(s.find(\"#__status\").eq(0).html()),p=parseInt(s.find(\"#__switchtime\").eq(0).html()),f=parseInt(s.find(\"#__redirect\").eq(0).html()),g={};\ntry{g=$.parseJSON(s.find(\"#__sugPreInfo:eq(0)\").html()||\"{}\")||{}}catch(u){}t.real_wd=s.find(\"#__real_wd\").eq(0).text(),t.real_wd_org=s.find(\"#__real_wd_org\").eq(0).text(),t.real_wd_nosynx=s.find(\"#__real_wd_nosynx\").eq(0).text(),t.env&&t.env.p(\"nojc\")&&t.real_wd_nosynx&&(t.real_wd=t.real_wd_nosynx);var b=!1;(a.p(\"wd\")==i($e.val())||t.force)&&t.shouldShow&&(b=!0),t.real_wd&&(t.prw=a.p(\"wd\"),a.p(\"wd\",t.real_wd));var v=s.find(\"#__queryId\").html(),w=s.find(\"#__querySign\").html();t.querySign=w,h(t,{stat:m?m:0}),bds.comm.isDebug&&$(\"#isDebugInfo\").html(s.find(\"#__isDebugInfo\").html()),v&&(t.qid=v);\nvar C=s.find(\"#__chk\").html();if(t.chk=C?C:0,!e||!v&&!p&&!f&&!m||!w&&t.force)return t.force?(a.p(\"__eis\",1),a.p(\"__eist\",e?e.length:0),a.p(\"real_wd\",t.real_wd),n(13),void j(a)):void ee.deleteCache(t);if(p>0&&q(1e3*p,!t.no_predict),-11==m){var S=ee.getCacheBySign(w);if(!S)return A({env:t.env.clone({wd:t.real_wd}),force:t.force,use_cache:!1,no_predict:!0}),void ee.deleteCache(t);S.force=t.force,y(),_(S.real_wd),k(S),ee.deleteCache(t),t=S,ze&&t.real_wd==ze.real_wd||(b=!0)}else{if(0>m){if(1==f&&t.force)return h(t,{redirect:1}),n(14),void j(a);\nif(x(),-12==m&&g&&g.wait_time>0){var I=t.env.clone();Qe=setTimeout(function(){A({env:I,force:!1,use_cache:!0,no_predict:!0,shouldShow:!1,pstg:6})},g.wait_time)}return void ee.deleteCache(t)}if(m>0)return void ee.deleteCache(t)}for(var D=ee.find(function(e){return!e.loaded&&e!==t&&e.no_predict&&a.equals(e.env)?(e.shouldShow&&(b=!0),e.force&&(t.force=!0,t.no_predict=!0),!0):void 0}),R=0;R\"}),g.parts(function(t,e){b(t,e,g)}),g.fail(function(e,o){t.force&&t.shouldShow&&\"abort\"!=o&&t.env&&(n(12),ne.replace(t.env.buildSyncSearchUrl()+\"&rsv_jmp=fail\")),ee.deleteCache(t)}),t.xhr=g,ee.addCache(t)}}}function O(){Le=[],pe=0,en=!1,clearTimeout(tn)}function E(){window.index_off&&window.index_off(),xe[0]!==ye[0]&&xe.val(\"\"),$e=ye,pageState=1,bds.comm.ishome=0,bds.comm.cur_query=bds.comm.query,Me=new p,ze={env:Me,real_wd:bds.comm.query,force:!0,confirm:!0},Fe.done(function(){return function(){Ee.start()\n}}()),$(window).trigger(\"index_off\"),bds.util.setContainerWidth(),m(function(){$(window).trigger(\"swap_dom_ready\")}),window.__lazy_foot_js?setTimeout(function(){C()},0):C()}function N(t){window.index_off&&window.index_off(),xe.get(0)!==ye.get(0)&&(xe.val(\"\"),ye.val(t.p(\"wd\"))),$e=ye,pageState=1,bds.comm.ishome=0,Fe.done(function(){Oe!==Ee&&(Oe.stop(),Ee.hide(),Ee.setKey(t.p(\"wd\")),Ee.start())}),bds.util.setContainerWidth(),$(window).trigger(\"index_off\",t)}function P(){an=!1,cn=!1,ln=[],clearTimeout(un),un=!1\n}function M(t){an||(an={x:t.pageX,y:t.pageY}),dn={x:t.pageX,y:t.pageY},cn||an.x==t.pageX||an.y==t.pageY||(cn=!0,ln=[an],z())}function z(){ln.push(dn);var t=ln.length;if(Math.pow(dn.x-an.x,2)+Math.pow(dn.y-an.y,2)>=Math.pow(me,2)||t*ue>=le){var e=Ue,n=bds.comm.supportis?1:2;if(n&&e&&e.data()&&e.data()[0]&&e.visible()){var o=(new p).clone({wd:e.data()[0].value});A({env:o,force:!1,no_predict:!0,use_cache:!0,shouldShow:!1,pstg:1}),n--}if(n&&e&&e.data()&&e.data()[1]&&e.visible()){var o=(new p).clone({wd:e.data()[1].value});\nA({env:o,force:!1,no_predict:!0,use_cache:!0,shouldShow:!1,pstg:1}),n--}if(!bds.comm.supportis&&n&&$.trim($e.val())&&(!ze||ze.env.p(\"wd\")!=$.trim($e.val()))){var o=(new p).clone({wd:$.trim($e.val())});A({env:o,force:!1,no_predict:!0,use_cache:!0,shouldShow:!1,pstg:1}),n--}}else un=setTimeout(function(){z()},ue)}document.write=document.writeln=function(){},bds&&bds.comm&&\"clearissw\"==bds.comm.query&&Cookie.clear(\"ISSW\"),function(){var t=$.Deferred();bds.comm.registerUnloadHandler=function(e){t.done(e)\n},bds.comm.resolveUnloadHandler=function(){t.resolve(),t=$.Deferred()}}(),window.b_rec=function(t){var e;if(t)e=navigator.userAgent;else try{e=window.external&&window.external.twGetRunPath?window.external.twGetRunPath():\"\"}catch(n){e=\"\"}return e=e.replace(/:/,\"~\").replace(/\\t/,\"`\")},window.scr_rec=function(){var t=\"\";try{t+=[document.body.clientWidth,document.body.clientHeight,window.screenTop,window.screenLeft,window.screen.height,window.screen.width].join(\"_\")}catch(e){}return t},window.reh_rec=function(){var t=[],e=[];\ntry{$(\"#content_left\").children(\".result,.result-op\").each(function(e,n){t.push($(n).height())})}catch(n){}try{$(\"#con-ar\").children(\".result,.result-op\").each(function(t,n){e.push($(n).height())})}catch(n){}return t.join(\"_\")+\"|\"+e.join(\"_\")},window.onerror=function(){window.console&&console.debug&&console.debug(arguments),bds.comm.jserror=Array.prototype.slice.call(arguments).join(\"\t\"),J(bds.comm.jserror)},window.hash=function(t,e){return t?t&&!e&&Me?Me.p(t):void(t&&e&&Me&&(Me.p(t,e),ne.href=Me.buildSearchUrl())):void 0\n};var B,H,F,W,G,Q,V=!1;!function(){var t=$.globalEval;$.globalEval=function(){var e=(new Date).getTime();try{t.apply($,arguments)}catch(n){}(new Date).getTime()-e>500}}(),bds.comm.isDebug&&($('').appendTo(\"head\"),$('
        ').appendTo(\"#wrapper\"),$(window).on(\"swap_end\",function(t,e){if(e){var n=$(\"#isDebugInfo\");\nn.size()||(n=$('
        ').appendTo(\"#debug\")),n.html(e.html.find(\"#__isDebugInfo\").html());var o=\"\";for(var i in e.log)e.log.hasOwnProperty(i)&&(o+=\"\");o+=\"
        \"+i+\"\"+encodeURIComponent(e.log[i])+\"
        \",$(\"#debug\").html(o)}}));var J=function(){var t;return function(e){bds.comm.isDebug&&alert(e),bds&&bds.comm&&bds.comm.js_error_monitor&&(t=new Image,t.src=bds.comm.js_error_monitor+\"?\"+$.param({url:ne.href,time:bds.comm.serverTime,explore:navigator.userAgent,info:e,info_type:1}))\n}}();window.setSugKey=function(t){$e&&t&&(Ee&&Ee.setKey?Ee.setKey(t):$e.val(t))},window.getCursortPosition=function(t){var e=0;try{if(document.selection){var n=document.selection.createRange();n.moveStart(\"character\",-t.value.length),e=n.text.length}else(t.selectionStart||\"0\"==t.selectionStart)&&(e=t.selectionStart)}catch(o){e=t.value.length}return e},bds.comm.flagTranslateResult&&($(\"#wrapper_wrapper\").delegate(\".result\",\"mouseenter\",function(){$(\".c-fanyi\",$(this)).show()}),$(\"#wrapper_wrapper\").delegate(\".result\",\"mouseleave\",function(){$(\".c-fanyi\",$(this)).hide()\n}),$(\"#wrapper_wrapper\").delegate(\".result .c-fanyi\",\"click\",function(){var t=$(this).closest(\".result\"),e=$(\"h3 a:first\",t),n=$(\".c-abstract:first\",t),o=$(\".c-fanyi-abstract\",t).val(0).html(),i=$(\".c-fanyi-title\",t).val(0).html();$(\".c-fanyi-abstract\",t).val(0).html(n.html()),$(\".c-fanyi-title\",t).val(0).html(e.html()),e.html(i),n.html(o)}));var X={use_cache_repeatedly:!0,index_form:\"#form\",kw:\"#kw\",result_form:\"#form\"};t&&$.extend(X,t);var K=15,Y=6e4,Z=window.__confirm_timeout?window.__confirm_timeout:1e4,te=bds.comm.supportis?4:10,ee=function(){function t(t){\"object\"==typeof t&&null!=t&&(t.xhr&&t.xhr.abort&&t.xhr.abort(),t.base64&&t.base64.destroy(),t.pdc&&t.pdc.destroy(),t.backspace_preload_timeout_id&&clearTimeout(t.backspace_preload_timeout_id),delete t.xhr,delete t.html)\n}var e=[];return{find:function(t){return $.grep(e,t)},getCacheList:function(){var t=$.map(e,function(t){return t&&(new Date).getTime()-t.startTime>Y?!1:t.querySign});return t=$.grep(t,function(t){return!!t}),t.join(\"\t\")},hasCache:function(t,n){function o(t){var o,i;return(i=t.p(\"wd\"))?($.grep(e,function(e){return n.loaded&&!e.loaded?!1:void(t.equals(e.real_wd?e.env.clone({wd:e.real_wd}):e.env)&&(o=e))}),o?o:null):!1}n||(n={});var i=o(t);return i&&(new Date).getTime()-i.startTime>Y&&(this.deleteCache(i),i=null),i\n},shouldShow:function(t){if(t.force)return!0;if(!t.shouldShow&&!t.force&&t.no_predict)return!1;var e=i($e.val());return!e||ze&&t.env.equals(ze.env)?!1:0==t.env.p(\"wd\").indexOf(e)?!0:0==t.real_wd.indexOf(e)?!0:!1},getCacheBySign:function(t){var n=!1;return $.each(e,function(e,o){n||!o.loaded||o.querySign!=t||o.env.p(\"pn\")&&0!=o.env.p(\"pn\")||(n=o)}),n},addCache:function(n){if(-1==l(e,n)&&!n.env.p(\"srcid\")&&!n.env.p(\"cq\"))for(e.unshift(n);e.length>K;)t(e.pop())},deleteCache:function(n){t(n),e=$.grep(e,function(t){return t!==n\n})},deleteCacheByEnv:function(){e=$.grep(e,function(e){var n=e.env.equals(e.env);return n&&t(e),!n})},clearCache:function(){e=$.grep(e,function(e,n){return n!==ze?(t(n),!1):!0}),e=[]}}}(),ne=document.location,oe=ne.protocol+\"//\"+ne.host+ne.pathname+ne.search,ie={onurlchange:function(){}};!function(){function t(){var t=ne.href.match(/#+(.*)$/);return t?t[1].replace(/\\+/g,\"%2B\"):\"\"}function n(){var t=ne.href.match(/\\?([^#]+)/);return t?t[1].replace(/\\?/g,\"&\"):\"\"}function o(t,e){var n=\"\";if(\"1\"===window._thirdLinkSpeed&&(n=\"&qid=\"+bds.comm.queryId),window._bdlksmp>0&&(n=\"&bdlksmp=\"+window._bdlksmp),\"1\"===window._eclipse&&/^\\/link\\?/.test(e))return\"wd=&eqid=\"+bds.comm.eqid+i([\"pn\",\"rn\",\"ie\"],t)+n;\nvar o=new p(s(t));return o.p(\"wd\")?o.buildQueryString().replace(/&rsv[^=]*=[^&]*/g,\"\").replace(/[^a-zA-Z0-9]url=/g,\"\")+n:void 0}function i(t,e){var n=\"\",o=s(e);for(var i in t)o.hasOwnProperty(i)&&(n+=\"&\"+encodeURIComponent(o[i]));return n}function r(t){var e=new p(s(ie.getQueryString()),!0);e.hashCode()?0==pageState&&N(e):0!=pageState?ne.replace(ne.pathname+ne.search.replace(/([?&])isidx=[^&*]&?/,\"$1\")):ne.search!=ne.search.replace(/([?&])isidx=[^&*]&?/,\"$1\")&&ne.replace(ne.pathname+ne.search.replace(/([?&])isidx=[^&*]&?/,\"$1\")),ie.onurlchange(e,t)\n}var a=\"onhashchange\"in window,c=\"onpopstate\"in window;window.__disable_popstate&&(c=!1);var l=ne.pathname.length>1?ne.pathname:\"/s\";(navigator.userAgent.match(/MSIE (6|7)/)||document.documentMode<8)&&(a=!1,c=!1),X.disable_popstate&&(c=!1),a||c||e();var u=function(){var e=\"\";return function(n,o){o&&(e=o.buildQueryString(),ne.hash=e),(n||e!=t())&&(r(n),e=t())}}();ie.setUrl=function(t){c?m(!1,t):a&&u(!1,t)};var m=function(){var t=n();return function(e,o){o&&(t=o.buildQueryString(),window.history.pushState(o,\"\",o.buildSyncSearchUrl())),e||t!=n()?(r(e),t=n()):d()\n}}();ie.getQueryString=function(){return c?n():/wd=/.test(t())?t():n()},ie.init=function(){c?!function(){var e=ne.href,n=!1;$(window).on(\"swap_begin\",function(){n=!0}),$(window).bind(\"popstate\",function(){(n||!e||e!=ne.href)&&m(),e=null}),$(window).bind(\"hashchange\",function(){var e=t();/wd=/.test(e)&&ne.replace(l+\"?\"+e)})}():a&&($(window).bind(\"hashchange\",function(){u()}),$(function(){u()}));var e=t();/wd=/.test(e)&&(c?(window.history.replaceState(null,\"\",l+\"?\"+e),m()):a?u():ne.replace(l+\"?\"+e))\n},ie.support=function(){return(c||a)&&1!=Cookie.get(\"ISSW\")&&!window.__disable_preload},ie.getLinkParams=function(e){if(!c){var i=t();return\"\"==i&&(i=n()),o(i,e)}if(\"https:\"===ne.protocol||\"1\"===window._eclipse){var r=n();return r||(r=t()),o(r,e)}return!1},ie.clickResultLink=function(t,e,n){return c?(window.history.pushState(null,\"\",new p(n,!0).buildSyncSearchUrl()),m(),!1):void t.attr(\"href\",e.buildSearchUrl(n)).attr(\"target\",\"_self\")},ie.submit=function(t,e){setTimeout(function(){c?(window.history.pushState(t,\"\",t.buildSyncSearchUrl()),m(e)):a?(ne.href=t.buildSearchUrl(),u(e)):ne.href=t.buildSyncSearchUrl()\n},0)},window.changeUrl=function(t){var e=new p(s(t));ie.submit(e,!0)}}(),ie.onurlchange=function(t,e){Fe.done(function(){Ue.setKey(t.p(\"wd\")),Ue.hide()}),Te=(new Date).getTime(),$e.val(t.p(\"wd\")),_(\"\");var n=!0;e&&ze&&ze.env&&ze.env.equals(t)&&(n=!1),A({env:t,force:!0,use_cache:n,no_predict:!0})};var re=X.disable?X.disable:!1;window.__disable_preload&&(re=!0);var se=re,ae=!1;window.__disable_predict&&(ae=!0);var ce=ae,de=bds.comm.switchAddMask?bds.comm.switchAddMask:!1;de||(de=window.__switch_add_mask?window.__switch_add_mask:!1),de=!0;\nvar le=(bds.comm.preloadMouseMoveDistance?bds.comm.preloadMouseMoveDistance:5,300),ue=50,me=80,pe=0,fe=0,he=function(){},ge=s(ne.search);ie.support()||(!function(){function t(){ne.hash&&ne.hash.match(/[^a-zA-Z0-9](wd|word)=/)&&ne.replace(\"//www.baidu.com/s?\"+ne.href.match(/#(.*)$/)[1])}ne.hash.match(/[^a-zA-Z0-9](wd|word)=/)?(ne.replace(\"//www.baidu.com/s?\"+ne.href.match(/#(.*)$/)[1]),function(){throw new Error(\"redirect to sync\")}()):(document.getElementById(\"wrapper\").style.display=\"block\",\"onhashchange\"in window?window.onhashchange=t:setInterval(t,200))\n}(),se=re=!0);for(var be=Cookie.get(\"BAIDUID\",\"nobdid\").split(\":\")[0],ve=be.substr(0,6)+be.substr(be.length-5,5)+parseInt(99999*Math.random());ve.length<16;)ve+=\"0\";ve=encodeURIComponent(ve);var we,_e,ye,xe,$e,ke;ye=xe=$e=$(X.kw);var Te,Ce,Se,Ie,De,Re,Ae=$(\"#wrapper_wrapper\"),Le=[];window.__async_strategy,we=$(X.index_form),\"_blank\"==we.attr(\"target\")&&(window.__disable_index_predict=!0,se=re=!0);var je=we.serializeArray();_e=$(X.result_form);var qe=(new Date).getTime();window.pageState=0;var Ue,Oe,Ee,Ne,Pe,Me=null,ze=null,Be=document.location.href,He=!1,Fe=$.ajax({dataType:\"script\",cache:!0,url:1===bds.comm.logFlagSug?\"https://ss1.bdstatic.com/5eN1bjq8AAUYm2zgoY3K/r/www/cache/static/protocol/https/sug/js/bdsug_async_sam_sug_a97d823.js\":1===bds.comm.samSugApi?\"https://ss1.bdstatic.com/5eN1bjq8AAUYm2zgoY3K/r/www/cache/static/protocol/https/sug/js/bdsug_async_sam_api_437177b.js\":\"https://ss1.bdstatic.com/5eN1bjq8AAUYm2zgoY3K/r/www/cache/static/protocol/https/sug/js/bdsug_async_467a84d.js\"}),We=\"focus\";\n!function(){window.PDC_ASYNC={setParam:function(t,e){ze&&ze.pdc&&ze.pdc.setParam(t,e)},setLinkData:function(e,n){t[e]=n},sendLinkLog:function(){var e=\"//www.baidu.com/nocache/fesplg/s.gif?log_type=linksp\",n=\"\";n+=\"&link_t=\"+((new Date).getTime()-t.click_t)+\"&query=\"+bds.comm.queryEnc+\"&qid=\"+bds.comm.queryId+\"&linkpreload=\"+t.linkpreload;var o=Math.random();if(.01>o){var i=new Image,r=\"LINK_IMG_\"+new Date;window[r]=i,i.onload=function(){delete window[r]},i.src=e+n}}};var t=(window.PDC_ASYNC.log={},{});\nwindow.bds&&(bds.pdc=window.PDC_ASYNC)}();var Ge=function(t){function e(){if(c=1,n(),1==c){var e=new Date,i=!1,r=function(){var n=new Date,l=n-e-t,u=o();0>l&&(l=0),u||i||(s[a]=l,a=(a+1)%20),i=u,1==c&&(e=n,d=setTimeout(r,t))};d=setTimeout(r,t)}}function n(){window.clearTimeout(d)}function o(){var t=[\"webkit\",\"moz\",\"ms\",\"o\"];if(\"hidden\"in document)return document.hidden;for(var e=0;e1e3||e>150?(c=a?parseInt(a):0,c>=s-o&&s>c&&(l=1,Cookie.set(\"ispeed\",2,document.domain,\"/\",d)),i>c&&(c=c+o>i?i:c+o,Cookie.set(\"ispeed_lsm\",c,document.domain,\"/\",d))):(a&&parseInt(a)>s&&(r=5),a&&parseInt(a)>=r&&(parseInt(a)<=s+r&&parseInt(a)>s&&(l=2,Cookie.set(\"ispeed\",1,document.domain,\"/\",d)),c=parseInt(a)-r,Cookie.set(\"ispeed_lsm\",c,document.domain,\"/\",d))),l}catch(p){}return 0}function r(){return Cookie.get(\"ispeed\")&&1==UPS.get(\"isSwitch\")&&2==parseInt(Cookie.get(\"ispeed\"))?!0:!1\n}var s=[],a=0,c=0,d=!1,t=t||250;return{start:e,stop:function(){window.clearTimeout(d),c=0},getData:function(){return s.slice(a).concat(s.slice(0,a))},isSlow:r,monitor:i}}();bds.comm.supportis&&1==UPS.get(\"isSwitch\")&&Ge.start();var Qe;Fe.done(function(){Ue=Oe=Ee=bds.se.sug({maxNum:10,withoutRich:bds.comm.supportis,withoutZhixin:!0,form:_e[0],ipt:$e[0],cbname:\"bdsugresultcb\",submission:R}),$e.keydown(function(t){var e=getCursortPosition(this);(9==t.keyCode||39==t.keyCode&&e==this.value.length)&&bds.comm.supportis&&ze&&ke.text()&&(t.preventDefault(),ze.real_wd!=this.value&&($e.val(ze.real_wd),Ue.check()),Ue.show(),_(\"\"),D(ze,He,22)({tipConfirm:!0}))\n}),Ue.on(\"start\",function(){We=\"focus\"}),$(window).on(\"blur\",function(){Ue.hide()}),$(document).on(\"click\",function(t){return 2==t.isTrigger||3==t.isTrigger?!1:void Ue.hide()});var t,e;Ue.on(\"inputChange\",function(n,o){if(!(window.__sam_his_nopredict&&window.bds&&bds.comm&&0==bds.comm.supportis)){if(t||(t=$e.val()),_(\"\"),P(),clearTimeout(Qe),clearTimeout(sn),0==pageState&&window.__disable_index_predict||re||ae||Ge.isSlow())return void Ue.setMaxNum(10);Ue.setMaxNum(te);var i=new p({pn:\"\",wd:o.value});\nif(bds&&bds.comm&&bds.comm.logFlagSug&&1===bds.comm.logFlagSug&&i.p(\"rsv_slog\",\"ipt_change\"),0==pageState&&bds.comm.supportis&&$.trim($e.val())){N(i);var r=$(\"
        请按“回车”键发起检索
        \").insertBefore(\"#head\");$(window).one(\"swap_begin\",function(){r.remove()})}if(Pe)return void(Pe=!1);if(window.__restart_confirm_timeout&&I(),We=\"input\",Te=(new Date).getTime(),e&&(clearTimeout(e),e=!1),\"\"==$.trim(o.value))return void x();if(Ne=o.checkStore(),!/^[a-zA-Z0-9~!@#$%^&*()_+=-]$/.test(o.value)){var s=$e.val(),a=o.imt.getLog();\na.length>0&&a[a.length-1].type.indexOf(\"link\")>-1&&i.p(\"_sglink\",\"1\");var c=o.imt.diffLog();c&&c.length>1&&(c=c.slice(-15).join(\".\"),i.h({is_params:{imes:encodeURIComponent(c)}})),!window.__disable_is2&&t.length>s.length&&0===t.indexOf(s)?e=setTimeout(function(){A({env:i,use_cache:!0,force:!1,pstg:5,shouldShow:bds.comm.supportis}),e=!1},250):A({env:i,use_cache:!0,force:!1,pstg:5,shouldShow:bds.comm.supportis})}t=s}}),Ue.on(\"selectSug\",function(t,e,n,o){if(_(\"\"),clearTimeout(Qe),!(0==pageState&&window.__disable_index_predict||re||ae||Ge.isSlow()))if(-1==n){ze&&Ue.setVisibleSug(ze.real_wd);\nvar i=new p({pn:\"\",wd:e.value});bds&&bds.comm&&bds.comm.logFlagSug&&1===bds.comm.logFlagSug&&i.p(\"rsv_slog\",\"sug_select\"),A({env:i,use_cache:!0,force:!1,shouldShow:bds.comm.supportis,pstg:3})}else{Ue.setVisibleSug(),_(\"\");var i=new p({pn:\"\",wd:o});bds&&bds.comm&&bds.comm.logFlagSug&&1===bds.comm.logFlagSug&&i.p(\"rsv_slog\",\"sug_select\");var r=e.stopRefresh?!1:bds.comm.supportis;A({env:i,force:!1,use_cache:!0,no_predict:!0,shouldShow:r,pstg:3})}}),Ue.on(\"render\",function(){ze&&Ue.setVisibleSug(ze.real_wd)\n}),Ue.on(\"dataReady\",function(t,e){var n=e&&e.queryValue&&e.dataCached&&e.dataCached[e.queryValue];if(n&&n.gl)for(var o in n.gl)if(1*n.gl[o]>0){var i=new p({pn:\"\",wd:n.s[o]});A({env:i,force:!1,use_cache:!0,no_predict:!0,shouldShow:!1,pstg:7})}}),0==pageState&&Ue.start()});var Ve,Je,Xe,Ke;!function(){var t,e=-1,n=0,o=-1,i=-1,s=-1,a=-1,c=0;Ve=function(e){if(e){s=e.pageX,a=e.pageY,t=e.target;var r=$(e.target);\"submit\"==r.attr(\"type\")&&(c=1);var d=r.offset();o=s-d.left,i=a-d.top,n=(new Date).getTime()\n}},Je=function(o){o&&o.target==t&&(e=(new Date).getTime()-n)},Ke=function(t){bds&&bds.comm&&bds.comm.query&&(t=bds.comm.query);var n=c+\".\"+e+\".\"+o+\".\"+i+\".\"+s+\".\"+a;return n=r(n+t)+\".\"+n},Xe=function(){e=-1,n=0,o=-1,i=-1,s=-1,a=-1,c=0},$(window).on(\"confirm\",function(){setTimeout(Xe,0)})}(),$(function(){$(\"#head\").delegate(\".index_tab_top>a,.index_tab_bottom>a,#u1>a,#u>a\",\"mousedown\",function(){return $(this).attr(\"name\")?ns_c({fm:\"behs\",tab:$(this).attr(\"name\"),query:\"\",un:encodeURIComponent(bds.comm.user||\"\")}):void 0\n})}),$(document).delegate(\"a\",\"mousedown\",function(){D(ze,He,22)()}),v({prefix:\"http://www.baidu.com\",regex:/^\\/*(link)\\?(.*)$/}),v({prefix:\"//www.baidu.com\",regex:/^\\/*(link)\\?(.*)$/}),v({prefix:\"http://www.baidu.com\",convertTable:{\"baidu.php\":\"baidu.php\",\"aladdin.php\":\"aladdin.php\",\"siva.php\":\"siva.php\",\"adrc.php\":\"adrc.php\",\"zhixin.php\":\"zhixin.php\"},regex:/^\\/*(baidu\\.php|aladdin\\.php|siva\\.php|adrc\\.php|zhixin\\.php)\\?(.*)$/}),\"www.baidu.com\"!=ne.host&&v({prefix:\"\",convertTable:{\"baidu.php\":\"baidu.php\",\"aladdin.php\":\"aladdin.php\",\"siva.php\":\"siva.php\",\"adrc.php\":\"adrc.php\",\"zhixin.php\":\"zhixin.php\"},regex:/^\\/*(baidu\\.php|aladdin\\.php|siva\\.php|adrc\\.php|zhixin\\.php)\\?(.*)$/}),v({prefix:\"http://bzclk.baidu.com\",regex:/^\\/*(adrc\\.php)\\?(.*)$/}),v({prefix:\"https://sp0.baidu.com/9q9JcDHa2gU2pMbgoY3K\",regex:/^\\/*(adrc\\.php)\\?(.*)$/}),\"https:\"==ne.protocol&&bds.comm.ishome&&!/Chrome/.test(navigator.userAgent)&&$(document).delegate(\"a\",\"mousedown\",function(){var t=$(this),e=t.attr(\"href\"),n={\"http://v.baidu.com\":\"/?fr=bd\"};\nn&&n.hasOwnProperty(e)&&t.attr(\"href\",e+n[e])}),$(document).delegate(\"a\",\"mousedown\",function(){var t=$(this),e=t.attr(\"href\"),n=new Image,o=\"//www.baidu.com/nocache/fesplg/s.gif?log_type=hm\",i=Math.random();if(.01>i&&!/www\\.baidu\\.com\\//.test(e)&&/^http/.test(e)){var r=o+\"&c_url=\"+encodeURIComponent(e),n=new Image,s=\"_LOG_\"+(new Date).getTime();n.onload=function(){delete window[s]},window[s]=n,n.src=r}}),ie.support()&&$(document).delegate(\"a\",\"click\",function(){var t=ne.protocol+\"//\"+ne.host;return function(){var e=$(this);\nif(!e.attr(\"target\")||\"_self\"==e.attr(\"target\")){var n=$.trim(e.attr(\"href\"));if(n&&0==n.indexOf(t)&&(n=n.substring(t.length)),n&&(matched=n.match(/^\\/*s\\?(.*)/)),n&&matched){var o=s(matched[0]);if(o.pn||(o.pn=\"\"),l([\"baidurt\",\"baiduwb\",\"baidufir\",\"SE_baiduxueshu_c1gjeupa\"],o.tn)<0){var i=e.parents(\"#con-at\");i.size()>0&&a({top:i.offset().top+i.height()});var r=ie.clickResultLink(e,Me,o)}return r}}}}()),$(document).delegate(\"a\",\"mousedown\",function(t){Ve(t)}),$(document).delegate(\"a\",\"mouseup\",function(t){Je(t)\n}),$(document).delegate(\"#su,#su1\",\"mouseup\",function(t){Je(t)}),$(document).delegate(\"#su,#su1\",\"mousedown\",function(t){Ve(t)}),!function(){var t;window._bdlkc>=1&&($(document).delegate(\".c-container\",\"mouseenter\",function(){return function(){var e=$(this),n=300;2==window._bdlkc&&(n=100),t=setTimeout(function(){var t=e.find(\".t>a\"),n=w(t,{prefix:\"http://www.baidu.com\",regex:/^\\/*(link)\\?(.*)$/}),o=e.attr(\"mu\")||e.find(\".f13 .g\").text(),i=/^(http[s]?:\\/\\/)?([^\\/]+)(.*)/,r=o.match(i);n&&n.match(ne.protocol)&&/www\\.baidu\\.com\\/link/.test(n)&&!/bdlkc=1/.test(n)&&(r[2]&&(o=\"http://\"+r[2],e.append('')),$.ajax({url:n+\"&bdlkc=1\",type:\"GET\",contentType:\"text/html\",success:function(){t.attr(\"linkpreload\",\"1\")\n}}),t.attr(\"href\",n+\"&bdlkc=1\"))},300)}}()),$(document).delegate(\".c-container\",\"mouseleave\",function(){return function(){clearTimeout(t)}}()))}();var Ye=$(\"body\");document.title,!function(t){var e;t.fn.textWidth=function(){e||(e=t('
        ').appendTo(\"body\").find(\"span\")),e.html(escapeHTML(t(this).val()));var n=e.width();return n}}(jQuery);\nvar Ze=!1;$(window).on(\"swap_dom_ready\",function(t,e){var n=\"\";!e||!e.real_wd||e.no_predict&&6!=e.pstg||(n=e.real_wd),_(n),k(e)}),$(window).on(\"swap_end\",function(t,e){e&&(window.cfpromise=new $.Deferred,De&&(clearTimeout(De),De=!1,Re=null),e.confirm=!1,e.force?D(e,He,20)():(Re=D(e,He,21),De=setTimeout(Re,Z)))}),$(window).on(\"indexOff\",function(t,e){Fe.done(function(){_(e.p(\"wd\"))})}),ie.support()&&\"_blank\"!=we.attr(\"target\")&&Fe.done(function(){Ue.setMaxNum(te)});var tn,en=!1,nn=!1;_e.mousedown(function(){nn=!1\n}).delegate(\"a,input\",\"focus\",function(){nn=!1});var on,rn,sn;$(window).on(\"swap_end\",function(t,e){e||(bds.comm.confirmQuery=bds.comm.query,bds.comm.confirmQid=bds.comm.qid,g()),sn=setTimeout(function(){0==$(\"#content_left,.result,.content_none\").length&&n(15,86400)},1e4)}),ie.init(),$(function(){var t=$(\"script\").last(),e=$(\"head\");he=function(){t.nextAll().not(\"[data-for]\").not(\"#passport-login-pop\").remove(),e.find(\"*\").not(\"[data-for]\").not(\"meta\").not(\"title\").not(\"script[async]\").not('link[href*=\"passport\"]').not('link[rel*=\"icon\"]').not('link[rel*=\"shortcut icon\"]').remove()\n}}),bds.comm.resultPage&&E(),Ye.delegate(\"#s_tab a\",\"mousedown\",function(){setHeadUrl(this)}).delegate(\"#s_tab a\",\"focusin\",function(){setHeadUrl(this)}),Ae.delegate(\"#page strong+a,#page a.n\",\"mouseover\",function(){A({env:new p(s($(this).attr(\"href\"))),force:!1,use_cache:!0,no_predict:!0,shouldShow:!1,pstg:4})});var an,cn,dn,ln,un;Fe.done(function(){$(document).mousemove(M)}),$(\"#u .back_org\").click(function(){var t=new Date;t.setTime((new Date).getTime()+110376e7),Cookie.set(\"ORIGIN\",2,document.domain,\"/\",t),Me?ne.replace(Me.buildSyncSearchUrl({_r:Math.random()})):ne.href=\"/\"\n}),$(window).scroll(function(){var t,e=$(\"#head\"),n=$(window),o=40,i=e.offset().top,r=function(){t&&(clearTimeout(t),t=!1),t=setTimeout(function(){var r=n.scrollTop();r>o+i?t=setTimeout(function(){e.addClass(\"s_down\"),Fe.done(function(){Ee.hide()})},0):o+i>=r&&(t=setTimeout(function(){e.removeClass(\"s_down\")},0))},50)};return r(),r}()),$e.bind(\"paste\",function(){if(!(window.__disable_index_predict&&0==pageState||re||ae)){var t=this,e=this.value;Pe=!0,setTimeout(function(){t.value&&t.value!=e&&A({env:(new p).clone({wd:$.trim(t.value)}),force:!1,use_cache:!0,no_predict:!0,shouldShow:bds.comm.supportis,pstg:2})\n},0)}})}function addEV(t,e,n){window.attachEvent?t.attachEvent(\"on\"+e,n):window.addEventListener&&t.addEventListener(e,n,!1)}function user_c(t){var e=\"\",n=\"\",o=\"\",i=\"\",r=encodeURIComponent(window.document.location.href),s=window[\"BD_PS_C\"+(new Date).getTime()]=new Image,a=bds&&bds.util&&bds.util.domain?bds.util.domain.get(\"http://nsclick.baidu.com\"):\"http://nsclick.baidu.com\";for(v in t){switch(v){case\"title\":o=encodeURIComponent(t[v].replace(/<[^<>]+>/g,\"\"));break;case\"url\":o=encodeURIComponent(t[v]);\nbreak;default:o=t[v]}e+=v+\"=\"+o+\"&\"}return i=\"&mu=\"+r,s.src=a+\"/v.gif?pid=201&pj=psuser&\"+e+\"path=\"+r+\"&wd=\"+n+\"&t=\"+(new Date).getTime(),!0}function initPassV3(){var t=bds.comm.passnew?3:2;bds.se.passv3=passport.pop.init({apiOpt:{loginType:1,product:\"mn\",u:window.document.location.href,safeFlag:0,qrcode:t,staticPage:location.protocol+\"//www.baidu.com/cache/user/html/v3Jump.html\"},cache:!1,tangram:!0,authsite:[\"qzone\",\"tsina\"],authsiteCfg:{act:\"implicit\",display:\"popup\",jumpUrl:location.protocol+\"//www.baidu.com/cache/user/html/xd.html\",onBindSuccess:function(t,e){var n=decodeURIComponent(e.passport_uname||e.displayname);\nreturn bds.se.login.success(n),!1}},onLoginSuccess:function(t){t.returnValue=!1;var e=t.rsp.data.userName||t.rsp.data.mail||t.rsp.data.phoneNumber;bds.se.login.success(e)},onSubmitStart:function(){},onSubmitedErr:function(){},onSystemErr:function(){},onShow:function(){},onHide:function(){bds.se.login.setSubpro(\"\"),bds.se.login.setMakeText(\"\")},onDestroy:function(){}})}function isp_hijack(t){var e,n,o,i=document.getElementById(\"wrapper\"),r=!1;bds.comm.query||(r=!0),1==t.stat&&(e=document.createElement(\"div\"),e.innerHTML='
        百度提示您:
        我们发现当前您可能受到异常广告弹窗的影响,通常这是受第三方恶意劫持导致。使用 防恶意广告专版杀毒软件,可有效改善您的上网体验,免受恶意广告的困扰。
        ',r?i.insertBefore(e,i.children[0]):(i.style.position=\"relative\",document.getElementById(\"u\").style.top=0,e.style.margin=\"-6px 0 8px 0\",document.body.insertBefore(e,i)),n=document.getElementById(\"isp-close-btn\"),o=n.parentNode.getElementsByTagName(\"a\")[0],n.onclick=function(){r?i.removeChild(e):(document.body.removeChild(e),i.style.position=\"\",document.getElementById(\"u\").style.top=\"4px\")\n},n.onmousedown=function(){ns_c({fm:\"behs\",tab:\"tj_notice\",cont:\"jcbro\",action:\"close\",area:\"topbar\"})},o.onmousedown=function(){ns_c({fm:\"behs\",tab:\"tj_notice\",cont:\"jcbro\",action:\"click\",area:\"topbar\"})},ns_c({fm:\"behs\",tab:\"tj_notice\",cont:\"jcbro\",action:\"show\",area:\"topbar\"}))}function isbase64(t){function e(){p={left:$.Deferred(),right:$.Deferred()}}function n(t,e){g++;var t=t||[],e=e||[];if(t=$.grep(t,function(t){return f.right.hasOwnProperty(t)?!1:(f.right[t]=!1,!0)}),e=$.grep(e,function(t){return f.left.hasOwnProperty(t)?!1:(f.left[t]=!1,!0)\n}),2==c.b64Exp&&e.length>0&&(h=!0,r(e,\"left\",\"reql\")),t.length>0)if(t.length>12){var n=Math.round(t.length/2),o=[],i=[];$.each(t,function(t,e){n>t?o.push(e):i.push(e)}),r(o,\"right\",\"reqr2\"),r(i,\"right\",\"reqr1\")}else r(t,\"right\",\"reqr\")}function o(t){for(var e=t,n=0;__callback_names.hasOwnProperty(t)||window[t];)t=e+\"_\"+n,n++;return __callback_names[t]=1,t}function i(t){if(\"string\"==typeof t){var e,n=0,o=0;for(e=0;e9?t:\"0\"+t};return(\"number\"==typeof t||\"string\"==typeof t)&&(t=new Date(t)),[t.getFullYear(),n(t.getMonth()+1),n(t.getDate())].join(e||\"\")}function baseChangeUrl(t){bds.comm.search_tool.st&&bds.comm.search_tool.et&&bds.comm.search_tool.stftype&&t.indexOf(\"&gpc=\")<0&&(t+=\"&gpc=\"+encodeURIComponent(\"stf=\"+bds.comm.search_tool.st+\",\"+bds.comm.search_tool.et+\"|stftype=\"+bds.comm.search_tool.stftype)),bds.comm.search_tool.si&&t.indexOf(\"&si=\")<0&&(t+=\"&si=\"+encodeURIComponent(bds.comm.search_tool.si)+\"&ct=2097152\"),bds.comm.search_tool.sl_lang&&t.indexOf(\"&sl_lang=\")<0&&(t+=\"&rsv_srlang=\"+encodeURIComponent(bds.comm.search_tool.sl_lang),t+=\"&sl_lang=\"+encodeURIComponent(bds.comm.search_tool.sl_lang),t+=\"&rsv_rq=\"+encodeURIComponent(bds.comm.search_tool.sl_lang)),changeUrl(t)\n}function langChangeUrl(t,e,n){ns_c({fm:\"advTool\",qid:bds.comm.qid,title:encodeURI(n),rsv_advTool_lang:e}),baseChangeUrl(\"wd=\"+encodeURIComponent($(\"#kw\").val())+\"&\"+t+\"=\"+encodeURIComponent(e)+\"&rsv_srlang=\"+encodeURIComponent(e)+\"&rsv_rq=\"+encodeURIComponent(e))}function advChangeUrl(t,e,n,o){if(-1!=e.indexOf(\"=\"))var i=1;else var i=0;ns_c({fm:\"advTool\",qid:bds.comm.qid,title:encodeURI(n),rsv_advTool_time:o,rsv_advTool_stet:e.substr(4).replace(\",\",\"_\")}),baseChangeUrl(\"wd=\"+encodeURIComponent($(\"#kw\").val())+\"&\"+t+\"=\"+encodeURIComponent(e)+\"&tfflag=\"+i)\n}function fileChangeUrl(t,e,n){ns_c({fm:\"advTool\",qid:bds.comm.qid,title:encodeURI(e),rsv_advTool_ft:n}),baseChangeUrl(\"wd=\"+encodeURIComponent(queryReplace(\"filetype\",t)))}function queryReplace(t,e){if(!t||\"filetype\"!=t&&\"site\"!=t)return o;var n=new RegExp(\"(\"+t+\"):[^\\\\s]*[ ]?\"),o=$(\"#kw\").val();return\" \"==e||null==e?o.replace(n,\"\"):o.match(n)?o.replace(n,\"$1:\"+e+\" \"):t+\":\"+e+\" \"+o}function extChangeUrl(t){t?(ns_c({fm:\"advTool\",qid:bds.comm.qid,title:encodeURI(\"精确匹配\"),rsv_advTool_ext:1}),baseChangeUrl('wd=\"'+encodeURIComponent($(\"#kw\").val())+'\"')):(ns_c({fm:\"advTool\",qid:bds.comm.qid,title:encodeURI(\"智能匹配\"),rsv_advTool_ext:0}),baseChangeUrl(\"wd=\"+encodeURIComponent($(\"#kw\").val().replace(/^\\\"(.*)\\\"$/,\"$1\"))))\n}!function(){function getUA(){var t,e={},n=navigator.userAgent.toLowerCase();return e.mac=navigator.platform.toUpperCase().indexOf(\"MAC\")>=0,(t=n.match(/rv:([\\d.]+)\\) like gecko/))?e.ie=t[1]:(t=n.match(/(msie\\s|trident.*rv:)([\\w.]+)/))?e.ie=t[2]:(t=n.match(/firefox\\/([\\d.]+)/))?e.firefox=t[1]:(t=n.match(/chrome\\/([\\d.]+)/))?e.chrome=t[1]:(t=n.match(/opera.([\\d.]+)/))?e.opera=t[1]:(t=n.match(/version\\/([\\d.]+).*safari/))?e.safari=t[1]:0,e}function getDefaultQueryHis(){try{return JSON.parse(localStorage.getItem(\"index_ls_default_query\"))\n}catch(t){return{}}}function detectPlaceholder(t){var e=\"[object OperaMini]\"===Object.prototype.toString.call(window.operamini);return t.ie?!1:\"placeholder\"in document.createElement(\"input\")&&!e}function createPlaceHolder(t,e,n){if(e)t.attr(\"placeholder\",n);else{var o=\"
        \"+n+\"
        \";t.before(o),$(\".kw-placeholder\").on(\"click\",function(e){t.focus(),e.target=t.get(0),t.trigger(e)}),$(document).ready(function(){$(\".kw-placeholder\").toggleClass(\"placeholders-hidden\",t.val().length>0)\n}),t.on(\"keydown keyup cut paste setValue input\",checkInputValue)}}function checkInputValue(){var t=$input.val();setTimeout(function(){var e=$input.val();(e!==t||e.length>0)&&$(\".kw-placeholder\").toggleClass(\"placeholders-hidden\",e.length>0)},0)}function removePlaceHolder(t,e){e?t.removeAttr(\"placeholder\"):$(\".kw-placeholder\").remove()}function testLocalStorage(){var t=\"test\";try{return localStorage.setItem(t,t),localStorage.removeItem(t),!0}catch(e){return!1}}function getShowCount(t,e){var n=0;return e&&e.query&&e.query===t&&e.count&&(n=e.count),n\n}function recordDefaultQuery(t,e){var n={query:t,time:(new Date).getTime(),count:1};e&&e.query&&t===e.query&&e.count&&(n.count=e.count+1),setTimeout(function(){try{localStorage.removeItem(\"index_ls_default_query\"),localStorage.setItem(\"index_ls_default_query\",JSON.stringify(n))}catch(t){return!1}},0)}function jsonPolyfill(){var json={parse:function(sJSON){return eval(\"(\"+sJSON+\")\")},stringify:function(){var t=Object.prototype.toString,e=Object.prototype.hasOwnProperty,n=Array.isArray||function(e){return\"[object Array]\"===t.call(e)\n},o={'\"':'\\\\\"',\"\\\\\":\"\\\\\\\\\",\"\\b\":\"\\\\b\",\"\\f\":\"\\\\f\",\"\\n\":\"\\\\n\",\"\\r\":\"\\\\r\",\"\t\":\"\\\\t\"},i=function(t){return o[t]||\"\\\\u\"+(t.charCodeAt(0)+65536).toString(16).substr(1)},r=/[\\\\\"\\u0000-\\u001F\\u2028\\u2029]/g;return function s(o){if(null==o)return\"null\";if(\"number\"==typeof o)return isFinite(o)?o.toString():\"null\";if(\"boolean\"==typeof o)return o.toString();if(\"object\"==typeof o){if(\"function\"==typeof o.toJSON)return s(o.toJSON());if(n(o)){for(var a=\"[\",c=0;c9&&(defaultQuery=\"\"),defaultQuery){var UA=getUA(),isPlaceHolderSupported=detectPlaceholder(UA);\ncreatePlaceHolder($input,isPlaceHolderSupported,defaultQuery,UA),isSupportLocalStorage&&recordDefaultQuery(defaultQuery,defaultQueryHis),$(window).one(\"index_off\",function(){removePlaceHolder($input,isPlaceHolderSupported),bds.comm.dpquery=\"\"})}}();var define,require,esl;!function(t){function e(t){m(t,M)||(z[t]=1)}function n(t,e){function n(t){0===t.indexOf(\".\")&&i.push(t)}var i=[];if(\"string\"==typeof t?n(t):A(t,function(t){n(t)}),i.length>0)throw new Error(\"[REQUIRE_FATAL]Relative ID is not allowed in global require: \"+i.join(\", \"));\nvar r=F.waitSeconds;return r&&t instanceof Array&&(U&&clearTimeout(U),U=setTimeout(o,1e3*r)),H(t,e)}function o(){function t(s,a){if(!r[s]&&!m(s,M)){r[s]=1;var c=O[s];c?(a||!m(s,P)||c.hang)&&(o[s]||(o[s]=1,e.push(s)),A(c.depMs,function(e){t(e.absId,e.hard)})):i[s]||(i[s]=1,n.push(s))}}var e=[],n=[],o={},i={},r={};for(var s in z)t(s,1);if(e.length||n.length)throw new Error(\"[MODULE_TIMEOUT]Hang(\"+(e.join(\", \")||\"none\")+\") Miss(\"+(n.join(\", \")||\"none\")+\")\")}function i(t){A(W,function(e){a(t,e.deps,e.factory)\n}),W.length=0}function r(t,e,n){if(null==n&&(null==e?(n=t,t=null):(n=e,e=null,t instanceof Array&&(e=t,t=null))),null!=n){var o=window.opera;if(!t&&document.attachEvent&&(!o||\"[object Opera]\"!==o.toString())){var i=j();t=i&&i.getAttribute(\"data-require-id\")}t?a(t,e,n):W[0]={deps:e,factory:n}}}function s(){var t=F.config[this.id];return t&&\"object\"==typeof t?t:{}}function a(t,e,n){O[t]||(O[t]={id:t,depsDec:e,deps:e||[\"require\",\"exports\",\"module\"],factoryDeps:[],factory:n,exports:{},config:s,state:E,require:k(t),depMs:[],depMkv:{},depRs:[],hang:0})\n}function c(t){var e=O[t];if(e&&!m(t,N)){var n=e.deps,o=e.factory,i=0;\"function\"==typeof o&&(i=Math.min(o.length,n.length),!e.depsDec&&o.toString().replace(/(\\/\\*([\\s\\S]*?)\\*\\/|([^:]|^)\\/\\/(.*)$)/gm,\"\").replace(/require\\(\\s*(['\"])([^'\"]+)\\1\\s*\\)/g,function(t,e,o){n.push(o)}));var r=[],s=[];A(n,function(n,o){var a,c,d=I(n),l=T(d.mod,t);l&&!B[l]?(d.res&&(c={id:n,mod:l,res:d.res},s.push(n),e.depRs.push(c)),a=e.depMkv[l],a||(a={id:d.mod,absId:l,hard:i>o},e.depMs.push(a),e.depMkv[l]=a,r.push(l))):a={absId:l},i>o&&e.factoryDeps.push(c||a)\n}),e.state=N,u(t),b(r),s.length&&e.require(s,function(){A(e.depRs,function(e){e.absId||(e.absId=T(e.id,t))}),d()})}}function d(){for(var t in z)c(t),l(t),p(t)}function l(t){function e(t){if(c(t),!m(t,N))return!1;if(m(t,P)||n[t])return!0;n[t]=1;var o=O[t],i=!0;return A(o.depMs,function(t){i=e(t.absId)&&i}),i&&A(o.depRs,function(t){return i=!!t.absId}),i&&!m(t,P)&&(o.state=P),n[t]=0,i}var n={};e(t)}function u(e){function n(){if(!o&&i.state===P){o=1;var n=1;if(A(i.factoryDeps,function(t){var e=t.absId;\nreturn B[e]?void 0:(p(e),n=m(e,M))}),n){try{var r=i.factory,s=\"function\"==typeof r?r.apply(t,f(i.factoryDeps,{require:i.require,exports:i.exports,module:i})):r;null!=s&&(i.exports=s),i.invokeFactory=null}catch(a){throw i.hang=1,a}g(e)}}}var o,i=O[e];i.invokeFactory=n}function m(t,e){return O[t]&&O[t].state>=e}function p(t){var e=O[t];e&&e.invokeFactory&&e.invokeFactory()}function f(t,e){var n=[];return A(t,function(t,o){\"object\"==typeof t&&(t=t.absId),n[o]=e[t]||O[t].exports}),n}function h(t,e){if(m(t,M))return void e();\nvar n=G[t];n||(n=G[t]=[]),n.push(e)}function g(t){var e=O[t];e.state=M,delete z[t];for(var n=G[t]||[],o=n.length;o--;)n[o]();n.length=0,G[t]=null}function b(e,n,o){function i(){if(\"function\"==typeof n&&!r){var o=1;A(e,function(t){return B[t]?void 0:o=!!m(t,M)}),o&&(r=1,n.apply(t,f(e,B)))}}var r=0;A(e,function(t){B[t]||m(t,M)||(h(t,i),(t.indexOf(\"!\")>0?w:v)(t,o))}),i()}function v(e){function n(){var t=K[e];q(t||e,o)}function o(){if(s){var n;\"function\"==typeof s.init&&(n=s.init.apply(t,f(a,B))),null==n&&s.exports&&(n=t,A(s.exports.split(\".\"),function(t){return n=n[t],!!n\n})),r(e,a,function(){return n||{}})}else i(e);d()}if(!Q[e]&&!O[e]){Q[e]=1;var s=F.shim[e];s instanceof Array&&(F.shim[e]=s={deps:s});var a=s&&(s.deps||[]);a?(A(a,function(t){F.shim[t]||(F.shim[t]={})}),H(a,n)):n()}}function w(t,e){function n(e){c.exports=e||!0,g(t)}function o(o){var i=e?O[e].require:H;o.load(a.res,i,n,s.call({id:t}))}if(!O[t]){var r=K[t];if(r)return void v(r);var a=I(t),c={id:t,state:N};O[t]=c,n.fromText=function(t,e){new Function(e)(),i(t)},o(H(a.mod))}}function _(t,e){var n=D(t,1,e);\nreturn n.sort(L),n}function y(){function t(t){K[C(t)]=n}F.baseUrl=F.baseUrl.replace(/\\/$/,\"\")+\"/\",V=_(F.paths),X=_(F.map,1),A(X,function(t){t.v=_(t.v)});var e=X[X.length-1];e&&\"*\"===e.k&&A(X,function(t){t!=e&&(t.v=t.v.concat(e.v))}),J=[],A(F.packages,function(t){var e=t;\"string\"==typeof t&&(e={name:t.split(\"/\")[0],location:t,main:\"main\"}),e.location=e.location||e.name,e.main=(e.main||\"main\").replace(/\\.js$/i,\"\"),e.reg=R(e.name),J.push(e)}),J.sort(L),Y=_(F.urlArgs,1),K={};for(var n in F.bundles)A(F.bundles[n],t)\n}function x(t,e,n){A(e,function(e){return e.reg.test(t)?(n(e.v,e.k,e),!1):void 0})}function $(t,e){var n=/(\\.[a-z0-9]+)$/i,o=/(\\?[^#]*)$/,i=\"\",r=t,s=\"\";o.test(t)&&(s=RegExp.$1,t=t.replace(o,\"\")),n.test(t)&&(i=RegExp.$1,r=t.replace(n,\"\")),null!=e&&(r=T(r,e));var a,c=r;return x(r,V,function(t,e){c=c.replace(e,t),a=1}),a||x(r,J,function(t,e,n){c=c.replace(n.name,n.location)}),/^([a-z]{2,10}:\\/)?\\//i.test(c)||(c=F.baseUrl+c),c+=i+s,x(r,Y,function(t){c+=(c.indexOf(\"?\")>0?\"&\":\"?\")+t}),c}function k(t){function n(n,i){if(\"string\"==typeof n){if(!o[n]){var r=T(n,t);\nif(p(r),!m(r,M))throw new Error('[MODULE_MISS]\"'+r+'\" is not exists!');o[n]=O[r].exports}return o[n]}if(n instanceof Array){var s=[],a=[];A(n,function(n,o){var i=I(n),r=T(i.mod,t),c=i.res,d=r;if(c){var l=r+\"!\"+c;0!==c.indexOf(\".\")&&K[l]?r=d=l:d=null}a[o]=d,e(r),s.push(r)}),b(s,function(){A(a,function(o,i){null==o&&(o=a[i]=T(n[i],t),e(o))}),b(a,i,t),d()},t),d()}}var o={};return n.toUrl=function(e){return $(e,t||\"\")},n}function T(t,e){if(!t)return\"\";e=e||\"\";var n=I(t);if(!n)return t;var o=n.res,i=S(n.mod,e);\nif(x(e,X,function(t){x(i,t,function(t,e){i=i.replace(e,t)})}),i=C(i),o){var r=m(i,M)&&H(i);o=r&&r.normalize?r.normalize(o,function(t){return T(t,e)}):T(o,e),i+=\"!\"+o}return i}function C(t){return A(J,function(e){var n=e.name;return n===t?(t=n+\"/\"+e.main,!1):void 0}),t}function S(t,e){if(0!==t.indexOf(\".\"))return t;for(var n=e.split(\"/\").slice(0,-1).concat(t.split(\"/\")),o=[],i=0;in&&e(t[n],n)!==!1;n++);}function L(t,e){var n=t.k||t.name,o=e.k||e.name;return\"*\"===o?-1:\"*\"===n?1:o.length-n.length}function j(){if(Z)return Z;if(te&&\"interactive\"===te.readyState)return te;\nfor(var t=document.getElementsByTagName(\"script\"),e=t.length;e--;){var n=t[e];if(\"interactive\"===n.readyState)return te=n,n}}function q(t,e){function n(){var t=o.readyState;(\"undefined\"==typeof t||/^(loaded|complete)$/.test(t))&&(o.onload=o.onreadystatechange=null,o=null,e())}var o=document.createElement(\"script\");o.setAttribute(\"data-require-id\",t),o.src=$(t+\".js\"),o.async=!0,o.readyState?o.onreadystatechange=n:o.onload=n,Z=o,ne?ee.insertBefore(o,ne):ee.appendChild(o),Z=null}var U,O={},E=1,N=2,P=3,M=4,z={},B={require:n,exports:1,module:1},H=k(),F={baseUrl:\"./\",paths:{},config:{},map:{},packages:[],shim:{},waitSeconds:0,bundles:{},urlArgs:{}};\nn.version=\"2.1.4\",n.loader=\"esl\",n.toUrl=H.toUrl;var W=[];r.amd={};var G={},Q={};n.config=function(t){if(t){for(var e in F){var n=t[e],o=F[e];if(n)if(\"urlArgs\"===e&&\"string\"==typeof n)F.urlArgs[\"*\"]=n;else if(o instanceof Array)o.push.apply(o,n);else if(\"object\"==typeof o)for(var i in n)o[i]=n[i];else F[e]=n}y()}},y();var V,J,X,K,Y,Z,te,ee=document.getElementsByTagName(\"head\")[0],ne=document.getElementsByTagName(\"base\")[0];ne&&(ee=ne.parentNode),define||(define=r,require||(require=n),esl=n);var oe;\n!function(){for(var t=document.getElementsByTagName(\"script\"),e=t.length;e--;){var n=t[e];if(oe=n.getAttribute(\"data-main\"))break}}(),oe&&setTimeout(function(){n([oe])},4)}(this);var bds=window.bds||{};bds.amd={keys:{},addPaths:function(t){\"object\"==typeof t&&(require.config({paths:t}),$.extend(bds.amd.keys,t))},exist:function(t){return t&&\"undefined\"!=typeof bds.amd.keys[t]?!0:!1}},function(){var t=bds.util&&bds.util.domain?bds.util.domain.get(\"http://s1.bdstatic.com\"):\"http://s1.bdstatic.com\",e=bds.util&&bds.util.domain?bds.util.domain.get(\"http://ecmb.bdimg.com\"):\"http://ecmb.bdimg.com\";\nrequire.config({baseUrl:t+\"/r/www/cache/biz\",packages:[{name:\"ecma\",location:e+\"/public01\"},{name:\"ecmb\",location:e+\"/public01\"}],paths:{aladdin:t+\"/r/www/aladdin\",ui:t+\"/r/www/cache/amd/ui\",\"ui/config\":t+\"/r/www/cache/amd/ui/Control\",\"ui/lib\":t+\"/r/www/cache/amd/ui/Control\",\"ui/Control\":t+\"/r/www/cache/amd/ui/Control\"},urlArgs:{\"ui/ImgZoomHover\":\"20141104\",\"ui/ImgZoomHover1\":\"20141104\",\"ui/ImgZoomHover2\":\"20141104\",\"ui/ImgZoomHover3\":\"20141104\"}})}(),bds.amd.addPaths({\"voice/js/voice\":\"https://ss1.bdstatic.com/5eN1bjq8AAUYm2zgoY3K/r/www/cache/static/protocol/https/voice/js/voice_1672ed3\",\"plugins/swfobject\":\"https://ss1.bdstatic.com/5eN1bjq8AAUYm2zgoY3K/r/www/cache/static/protocol/https/plugins/swfobject_0178953\",\"soutu/js/tu\":\"https://ss1.bdstatic.com/5eN1bjq8AAUYm2zgoY3K/r/www/cache/static/protocol/https/soutu/js/tu_329aca4\"}),bds&&bds.comm&&(bds.comm.did=function(){for(var t=\"\",e=0;32>e;e++)t+=Math.floor(16*Math.random()).toString(16);\nreturn t}(),bds.comm.isAsync=function(){var t=\"onhashchange\"in window,e=\"onpopstate\"in window;return(e||t)&&1!=Cookie.get(\"ISSW\")&&!window.__disable_preload}());try{window.MutationObserver=window.WebKitMutationObserver=window.MozMutationObserver=null}catch(e){}jQuery&&jQuery.extend({stringify:function(t){function e(t){return/[\"\\\\\\x00-\\x1f]/.test(t)&&(t=t.replace(/[\"\\\\\\x00-\\x1f]/g,function(t){var e=i[t];return e?e:(e=t.charCodeAt(),\"\\\\u00\"+Math.floor(e/16).toString(16)+(e%16).toString(16))})),'\"'+t+'\"'\n}function n(t){var e,n,o,i=[\"[\"],r=t.length;for(n=0;r>n;n++)switch(o=t[n],typeof o){case\"undefined\":case\"function\":case\"unknown\":break;default:e&&i.push(\",\"),i.push($.stringify(o)),e=1}return i.push(\"]\"),i.join(\"\")}if(\"JSON\"in window)return JSON.stringify(t);var o=typeof t;if(\"object\"!=o||null===t)return\"string\"==o&&(t='\"'+t+'\"'),String(t);var i={\"\\b\":\"\\\\b\",\"\t\":\"\\\\t\",\"\\n\":\"\\\\n\",\"\\f\":\"\\\\f\",\"\\r\":\"\\\\r\",'\"':'\\\\\"',\"\\\\\":\"\\\\\\\\\"};switch(typeof t){case\"undefined\":return\"undefined\";case\"number\":return isFinite(t)?String(t):\"null\";\ncase\"string\":return e(t);case\"boolean\":return String(t);default:if(null===t)return\"null\";if(\"[object Array]\"===Object.prototype.toString.call(t))return n(t);var r,s,a=[\"{\"],c=$.stringify;for(var d in t)if(Object.prototype.hasOwnProperty.call(t,d))switch(s=t[d],typeof s){case\"undefined\":case\"unknown\":case\"function\":break;default:r&&a.push(\",\"),r=1,a.push(c(d)+\":\"+c(s))}return a.push(\"}\"),a.join(\"\")}},format:function(t,e){t=String(t);var n=Array.prototype.slice.call(arguments,1),o=Object.prototype.toString;\nreturn n.length?(n=1==n.length&&null!==e&&/\\[object Array\\]|\\[object Object\\]/.test(o.call(e))?e:n,t.replace(/#\\{(.+?)\\}/g,function(t,e){var i=n[e];return\"[object Function]\"==o.call(i)&&(i=i(e)),\"undefined\"==typeof i?\"\":i})):t},subByte:function(t,e,n){var o=[],i=t.split(\"\");n=n||\"…\";for(var r=0,s=i.length;s>r;r++)i[r].charCodeAt(0)>255&&o.push(\"*\"),o.push(i[r]);return e&&e>0&&o.length>e?i=o.join(\"\").substring(0,e-1).replace(/\\*/g,\"\")+n:t},getByteLength:function(t){for(var e=[],n=t.split(\"\"),o=0,i=n.length;i>o;o++)n[o].charCodeAt(0)>255&&e.push(\"*\"),e.push(n[o]);\nreturn e.length},_isValidKey:function(t){return new RegExp('^[^\\\\x00-\\\\x20\\\\x7f\\\\(\\\\)<>@,;:\\\\\\\\\\\\\"\\\\[\\\\]\\\\?=\\\\{\\\\}\\\\/\\\\u0080-\\\\uffff]+$').test(t)},setCookie:function(t,e,n){if(e=encodeURIComponent(e),jQuery._isValidKey(t)){n=n||{};var o=n.expires;\"number\"==typeof n.expires&&(o=new Date,o.setTime(o.getTime()+n.expires)),document.cookie=t+\"=\"+e+(n.path?\"; path=\"+n.path:\"\")+(o?\"; expires=\"+o.toGMTString():\"\")+(n.domain?\"; domain=\"+n.domain:\"\")+(n.secure?\"; secure\":\"\")}},getCookie:function(t){var e=\"\";\nif(jQuery._isValidKey(t)){var n=new RegExp(\"(^| )\"+t+\"=([^;]*)(;|$)\"),o=n.exec(document.cookie);if(o&&(e=o[2]||null,\"string\"==typeof e))return e=decodeURIComponent(e)}return null},removeCookie:function(t,e){e=e||{},e.expires=new Date(0),jQuery.setCookie(t,\"\",e)},limitWd:function(t,e){if(\"\"===t)return\"\";t+=\"\";var n=t.split(\"\"),o=n.length,i=0,r=e||255;if(o<=parseInt(r/2))return t;for(var s=0;o>s;s++){if(i+=n[s].charCodeAt(0)>255?2:1,i===r)return n=t.substring(0,s+1);if(i>r)return n=t.substring(0,s)\n}return t}}),$(window).on(\"resize\",function(){\"pageState\"in window&&0!=pageState&&(bds.util.setContainerWidth(),bds.event.trigger(\"se.window_resize\"))}),bds.util.addStyle=function(t){if(isIE){var e=document.createStyleSheet();e.cssText=t}else{var n=document.createElement(\"style\");n.type=\"text/css\",n.appendChild(document.createTextNode(t)),document.getElementsByTagName(\"HEAD\")[0].appendChild(n)}},bds.util.getContentRightHeight=function(){return $(\"#content_right\").get(0)?$(\"#content_right\").get(0).offsetHeight:0\n},bds.util.getContentLeftHeight=function(){return $(\"#content_left\").get(0)?$(\"#content_left\").get(0).offsetHeight:0},window.A||(window.bds=window.bds||{},bds.util=bds.util||{},bds.util.getWinWidth=function(){return window.document.documentElement.clientWidth},bds.util.setContainerWidth=function(){var t=G(\"container\"),e=G(\"wrapper\"),n=function(t,e){e.className=e.className.replace(t,\"\")},o=function(t,e){e.className=(e.className+\" \"+t).replace(/^\\s+/g,\"\")},i=function(t,e){return t.test(e.className)\n};bds.util.getWinWidth()<1207?(t&&(n(/\\bcontainer_l\\b/g,t),i(/\\bcontainer_s\\b/,t)||o(\"container_s\",t)),e&&(n(/\\bwrapper_l\\b/g,e),i(/\\bwrapper_s\\b/,e)||o(\"wrapper_s\",e)),bds.comm.containerSize=\"s\"):(t&&(n(/\\bcontainer_s\\b/g,t),i(/\\bcontainer_l\\b/,t)||o(\"container_l\",t)),e&&(n(/\\bwrapper_s\\b/g,e),i(/\\bwrapper_l\\b/,e)||o(\"wrapper_l\",e)),bds.comm.containerSize=\"l\")},function(){var t=[],e=!1,n=function(t,e){try{t.call(e)}catch(n){}},o=function(){this.ids=[],this.has=!0,this.list=[],this.logs=[],this.loadTimes=[],this.groupData=[],this.mergeFns=[],this._currentContainer=null\n};window.A=bds.aladdin={},n(o,window.A),bds.ready=function(o){\"function\"==typeof o&&(e?n(o):t.push(o))},bds.doReady=function(){for(e=!0;t.length;)n(t.shift())},bds.clearReady=function(){e=!1,t=[]},A.__reset=o;var i=function(){var t=document.getElementsByTagName(\"script\");return function(){var e=t[t.length-1];window.currentScriptElem&&(e=window.currentScriptElem);for(var n=e;n;){if(n.className&&/(?:^|\\s)result(?:-op)?(?:$|\\s)/.test(n.className)&&(tplname=n.getAttribute(\"tpl\")))return n;n=n.parentNode\n}}}(),r=function(t,e,n){var o;if(t.initIndex?o=A.groupData[t.initIndex-1]:(o={container:t,data:{},handlers:[]},t.initIndex=A.groupData.length+1,A.groupData.push(o)),\"function\"==typeof e)o.handlers.push(e);else if(\"object\"==typeof e)for(var i in e)e.hasOwnProperty(i)&&(o.data[i]=e[i]);else o.data[e]=n};A.init=A.setup=function(t,e){if(void 0!==t&&null!==t){var n=A._currentContainer||i();n&&r(n,t,e)}},A.merge=function(t,e){A.mergeFns.push({tplName:t,fn:e})}}()),A.uiPrefix=\"//www.baidu.com/cache/aladdin/ui/\",function(){var t=window.bds.aladdin,e=[],n={},o=0,i=function(t,e){try{t.call(e)\n}catch(n){}},r=function(t){t.ajaxId=++o,n[t.ajaxId]=t},s=function(t){delete n[t.ajaxId]},a=function(t){return t.ajaxId?n.hasOwnProperty(t.ajaxId):!1},c=function(t){var e={};if(t)try{var n=new Function(\"return \"+t)();n&&(e=n)}catch(o){}return e},d=function(){for(var t,e,n=$(\".result-op\").get().concat($(\".result\").get()),o={},i=0;e=n[i];i++)(t=e.getAttribute(\"tpl\"))&&(o[t]?o[t].push(e):o[t]=[e]);return o},l=[],u=[];t.addDisposeHandler=function(t){u.push(t)},t.dispose=function(){for(;l.length;){var t=l.shift();\ni(t.fn,t.obj)}for(var e=u,n=0;n1)if(s)t(a.shift(),function(){a.length>0&&t(a,s)\n});else for(;a.length;)t(a.shift());else{if(r=a[0],\"jquery\"===r&&window.jQuery)return!i.ui.jquery&&(i.ui.jquery=window.jQuery),void(s&&s());var c=r.replace(/\\./g,\"/\"),d=r.replace(/^[\\s\\S]*\\./,\"\"),l=i.uiPrefix+c+\"/\"+d;0==c.search(\"style/\")?e(l+\".css\",s):(l+=\".js\",m.hasOwnProperty(r)?\"function\"==typeof m[r]?l=m[r](r,l):\"string\"==typeof m[r]&&(l=m[r]):m.hasOwnProperty(\"*\")&&(l=m[\"*\"](r,l)),s?o(l,s):n(l))}}function e(t,e){if(e=e||u,t in r)return void e();var n=c.createElement(\"link\");n.rel=\"stylesheet\",n.type=\"text/css\",n.href=t,n.setAttribute(\"data-for\",\"A.ui\"),d.appendChild(n),r[t]=1,e()\n}function n(t){return l?void o(t,u):void(t in r||(c.write(''),r[t]=1))}function o(t,e){if(e=e||u,t in r)return void e();if(t in s)return void a[t].push(e);s[t]=1;var n=a[t]=[e],o=c.createElement(\"script\");o.type=\"text/javascript\",o.charset=\"gb2312\",o.onload=o.onreadystatechange=function(){if(!this.readyState||\"loaded\"===this.readyState||\"complete\"===this.readyState){for(;n.length;)n.shift()();delete s[t],r[t]=1,o.onload=o.onreadystatechange=null\n}},o.src=t,o.setAttribute(\"data-for\",\"A.ui\"),d.insertBefore(o,d.firstChild)}var i=window.A,r={},s={},a={},c=document,d=c.getElementsByTagName(\"head\")[0],l=!1,u=(i.baidu,function(){}),m={\"*\":function(t,e){return e+\"?v=20170208\"},scrollbarv:function(t,e){return e+\"?v=20170208\"},likeshare4:function(t,e){return e+\"?v=20170208\"},mboxsingleton:function(t,e){return e+\"?v=20170208\"},sms:function(t,e){return e+\"?v=20170208\"},tab:function(t,e){return e+\"?v=20170208\"},tabs:function(t,e){return e+\"?v=20170208\"\n},musicplayer:function(t,e){return e+\"?v=20170208\"},slider:function(t,e){return e+\"?v=20170208\"},suggestion:function(t,e){return e+\"?v=20170208\"},tabs5:function(t,e){return e+\"?v=20170208\"},tabx:function(t,e){return e+\"?v=20170208\"},dropdown1:function(t,e){return e+\"?v=20170208\"},dropdown21:function(t,e){return e+\"?v=20170208\"},advert:function(t,e){return e+\"?v=20170208\"},advert2:function(t,e){return e+\"?v=20170208\"},honourCard:function(t,e){return e+\"?v=20170208\"},honourCard3:function(t,e){return e+\"?v=20170208\"\n},honourCard4:function(t,e){return e+\"?v=20170208\"},share:function(t,e){return e+\"?v=20170208\"},qHotCity:function(t,e){return e+\"?v=20170208\"},mapapi:function(t,e){return e+\"?v=20170208\"},qunarfilters:function(t,e){return e+\"?v=20170208\"},renderIframe3:function(t,e){return e+\"?v=20170208\"},share2:function(t,e){return e+\"?v=20170208\"},ALD_feedback:function(t,e){return e+\"?v=20170208\"},addtohome:function(t,e){return e+\"?v=20170208\"},addtohome2:function(t,e){return e+\"?v=20170208\"},gpsApi:function(t,e){return e+\"?v=20170208\"\n},simGps:function(t,e){return e+\"?v=20170208\"}};$(document).ready(function(){l=!0}),i.addDisposeHandler({obj:i,fn:function(){for(var t in a)if(a.hasOwnProperty(t))for(var e=a[t];e.length;)e.pop()}}),t.cache=r,i.uicss=function(t){e(i.uiPrefix+t)},i.uijs=function(t,e){o(i.uiPrefix+t,e)},i.uijsPathMap=function(t){$.extend(m,t)},i.use=t,i.ui=i.ui||{},i.addCssText=function(t){var e=\"opui-style-tag-id\",n=\"data-for\",o=\"A.ui\",i=document.getElementById(e);i||(i=document.createElement(\"style\"),i.setAttribute(\"type\",\"text/css\"),i.setAttribute(n,o),i.id=e,document.getElementsByTagName(\"head\")[0].appendChild(i));\ntry{var r=document.createTextNode(t);i.appendChild(r)}catch(s){i.styleSheet&&(i.styleSheet.cssText+=t)}},$(window).on(\"swap_end\",function(){var t=/MSIE\\s?6/.test(window.navigator.userAgent),e=function(t,e,n){$(t).each(function(t,o){var i=$(o),r=new Image,s=i.attr(\"src\");r.onload=function(){var t=e,o=n,s=this.width,a=this.height,c=s/a/(t/o);c>1?(s=s>t?t:\"auto\",a=\"auto\"):(a=a>o?o:\"auto\",s=\"auto\"),i.css({height:a,width:s}),r.onload=null,r=null},r.src=s})};t&&e(\"img.result-left-img\",98,121),$(\".c-feedback\").bind(\"click\",function(){var t=this;\ni.use(\"ALD_feedback\",function(){var e,n,o=\"right\",r=$(t);r.parents(\"#content_left\").length?(o=\"left\",n=r.parents(\".result-op\"),e=n.attr(\"srcid\")):r.parents(\"#content_right\").length&&(n=r.parents(\"#con-ar\"));var s={query:bds.comm.query,srcid:e,target:n,username:bds.comm.username,flag:o},a=i.ui.ALD_feedback(s);i.addDisposeHandler({obj:a,fn:a.dispose})})})})}(),$(window).on(\"swap_begin\",function(){A.dispose(),A.__reset(),A.__clearDispose()}),$(window).on(\"swap_dom_ready\",function(){bds.ready(A.__runAla),bds.doReady()\n}),bds.event=new function(){function t(t,e){if(\"function\"==typeof e||e instanceof Function){var n=i(t);r[n.name]=r[n.name]||[],r[n.name].push({prod:n.prod,callback:e})}}function e(t,e){for(var n=i(t),s=r[n.name]||[],a=0;ac;c++){var l=s[c];try{o(l.prod,n.prod)&&l.callback.call(this,a)}catch(u){}}}function o(t,e){return new RegExp(\"^\"+t.replace(/\\./g,\"\\\\.\").replace(/\\*/g,\".+\")+\"$\").test(e)\n}function i(t){var e=t.match(/(.+)\\.(.+)/);return e&&e[2]?{prod:e[1],name:e[2]}:{}}var r={};this.on=t,this.off=e,this.trigger=n,this.events=r},bds.se.link=function(){function t(t,e){var n=\"/s?\",o={tn:bds.comm.tn},i=\"wd=\"+encodeURIComponent(t);e&&(o=$.extend(o,e));for(var r in o)o.hasOwnProperty(r)&&(i+=\"&\"+r+\"=\"+encodeURIComponent(o[r]));return n+i}return{getSearchUrl:t}}(),!function(A){function clickDebug(){}function bindP5(){var item,index=(bds.comm.pageNum-1)*bds.comm.pageSize+1,leftItems=contentLeft&&contentLeft.children||[],rightItems=contentRight&&contentRight.children||[],topItems=contentTop&&contentTop.children||[],isResult=function(t){return 1==t.nodeType&&t.className&&/\\bresult(\\-op)?\\b/.test(t.className)\n},isFrame=function(t){return 1==t.nodeType&&t.className&&/\\bc\\-frame\\b/.test(t.className)},setClickData=function(wrap,data){var sData=wrap.getAttribute(\"data-click\")||\"{}\";try{var oData=eval(\"(\"+sData+\")\");sData=$.stringify($.extend(oData,data)),wrap.setAttribute(\"data-click\",sData)}catch(e){clickDebug(e)}},bindP5ClickData=function(t){for(var e=0,n=t.length;n>e;e++)if(item=t[e],isResult(item))setClickData(item,{p5:index++});else if(isFrame(item))try{for(var o=item.children[0].children,i=0,r=o.length;r>i;i++){var s=o[i];\nisResult(s)&&setClickData(s,{p5:index++})}}catch(a){clickDebug(a)}index=(bds.comm.pageNum-1)*bds.comm.pageSize+1};bindP5ClickData(leftItems),bindP5ClickData(rightItems),bindP5ClickData(topItems)}function getXPath(t,e,n){if(n=n||[],e=e||document,t===e)return n;if(t.parentNode!==e&&(n=getXPath(t.parentNode,e,n)),t.previousSibling){var o=1,i=t.previousSibling;do 1==i.nodeType&&i.nodeName==t.nodeName&&o++,i=i.previousSibling;while(i)}return 1==t.nodeType&&n.push(t.nodeName.toLowerCase()+(o>1?o:\"\")),n\n}function bindLogEvent(){$body=$(\"body\"),$body.on(\"mousedown\",function(t){var t=window.event||t,e=t.srcElement||t.target,n=$(e);try{for(var o,i,r=n;r.length&&!(r.hasClass(\"result\")||r.hasClass(\"result-op\")||r.hasClass(\"xpath-log\"));)r=r.parent();if(!r.length)return;r.hasClass(\"result-op\")?o=\"alop\":r.hasClass(\"result\")&&(o=\"as\"),i=r.get(0);var s=getXPath(e,i);check(s,e,i)&&log(s,e,i,o)}catch(t){clickDebug(t)}})}function getType(t,e,n){for(var o=e,i=LOG_CLASS,r=i.length,s=C_LOG_CLASS,a=s.length,c=t.join(\" \"),d=0;o!==n;){for(d=0;r>d;d++)if($(o).hasClass(\"OP_LOG_\"+i[d]))return i[d].toLowerCase();\nfor(d=0;a>d;d++)if($(o).hasClass(\"c-\"+s[d]))return s[d];o=o.parentNode}return/\\bh3\\d*\\b/.test(c)?\"title\":/\\ba\\d*\\b/.test(c)?/\\bimg\\d*\\b/.test(c)?\"img\":\"link\":/\\b(input|select|button|textarea|datalist)\\d*\\b/.test(c)?\"input\":/\\blabel\\d*\\b/.test(c)&&e.getElementsByTagName(\"input\").length>0?\"input\":\"\"}function check(t,e,n){return A.LOGTOOL?(A.LOGTOOL.call(e,t,e,n),!1):!0}function log(t,e,n,o){if(null==e.getAttribute(\"data-nolog\")){var i=getType(t,e,n);if(!i)return!1;if(\"title\"==i&&!/\\ba\\d*\\b/.test(t))return!1;\nvar r=\"http://nourl.ubs.baidu.com\",s=n.getAttribute(\"mu\")||r;if(s==r){var a=n.getElementsByTagName(\"h3\");if(a&&a[0]){var c=a[0].getElementsByTagName(\"a\");s=c&&c[0]?c[0].href:s}}var d,l=t.length,u=e,m=n.getAttribute(\"srcid\"),p=\"\",f=1==e.nodeType?e.tagName.toLowerCase():\"\";if(\"input\"==i)if(/input|textarea/.test(f))p=e.value,e.type&&\"password\"==e.type.toLowerCase()&&(p=\"\");else if(/select|datalist/.test(f)){if(e.children.length>0){var h=e.selectedIndex||0;p=e.children[h>-1?h:0].innerHTML}}else p=e.innerHTML||e.value||\"\";\nelse if(\"img\"==f&&(p=e.title),!p)for(;l>0;){if(l--,/^a\\d*\\b/.test(t[l])){if(d=u.href,p=u.innerHTML,null!=u.getAttribute(\"data-nolog\"))return;break}if(u.className&&/OP_LOG_/.test(u.className)){p=u.innerHTML;break}u=u.parentNode}p=$.trim(p),d&&\"#\"!==d.slice(-1)&&/^http/.test(d)||(d=s);var g={rsv_xpath:t.join(\"-\")+\"(\"+i+\")\",title:p,url:d,rsv_height:n.offsetHeight,rsv_width:n.offsetWidth,rsv_tpl:n.getAttribute(\"tpl\")},b={url:1,title:1};n.id&&n.id.match(/^\\d+$/)&&(g.p1=n.id),m&&(g.rsv_srcid=m);var v,w,_;\nu=e;do{if(null!=u.getAttribute(\"data-nolog\"))return;if(v=u.getAttribute(\"data-click\"))try{v=new Function(\"return \"+v)();for(w in v)\"fm\"==w&&null===v.fm&&(_=!0),v.hasOwnProperty(w)&&(\"undefined\"==typeof g[w]||b[w])&&(g[w]=v[w])}catch(y){clickDebug(y)}u=u.parentNode}while(u&&u!==n.parentNode);for(var x in g)null===g[x]&&delete g[x];if(\"title\"==i?\"mu\"in g&&delete g.mu:g.mu||(g.mu=s),_)\"fm\"in g&&delete g.fm;else if(\"input\"==i&&(g.fm=\"beha\",g.url=r),g.fm||(g.fm=o),!g.fm)return;window.c(g)}}var baidu=window.baidu,LOG_CLASS=[\"TITLE\",\"LINK\",\"IMG\",\"BTN\",\"INPUT\",\"OTHERS\"],C_LOG_CLASS=[\"btn\"],contentLeft,contentRight,contentTop;\nwindow.initResultClickLog=function(){if(contentLeft=$(\"#content_left\").get(0),contentRight=$(\"#con-ar\").get(0),contentTop=$(\"#con-at\").get(0),A.has){var t,e=$(\".result-op\").get();$.each(e,function(e,n){(t=n.getAttribute(\"srcid\"))&&A.ids.push([n.id,t])})}bindP5()},$(document).ready(function(){bindLogEvent()})}(window.bds.aladdin);for(ai in al_arr)al_arr[ai]();$(document).ready(function(){var t;$(document).on(\"click\",\".t>a,.op-se-listen-recommend\",function(e){e=window.event||e;var n=$(\"#wrapper_wrapper\"),o=$(this).closest(\".c-container\"),i=o.length?o.find(\".c-recommend\").eq(0):[],r=o.length?o.find(\".wnor-fanli-wrap\"):[];\n!e.ctrlKey&&(i.length&&\"none\"===i.css(\"display\")||r.length&&\"none\"===r.css(\"display\"))&&(t=setTimeout(function(){n.find(\".c-recommend\").hide(),i.show(),n.find(\".wnor-fanli-wrap\").hide(),r.show()},150))}),$(window).on(\"swap_begin\",function(){this.clearTimeout(t)})}),window.onunload=function(){},bds.se.openime=function(t){window.bdime?openIme.set(\"py\",!0):$.ajax({cache:!0,dataType:\"script\",url:\"https://ss1.bdstatic.com/5eN1bjq8AAUYm2zgoY3K/r/www/cache/static/protocol/https/plugins/ime_c5abb66.js\",success:function(){t&&openIme.set(\"py\",!0)\n}})},function(){/\\bbdime=[12]/.test(document.cookie)||$(window).one(\"swap_end\",function(){})}(),bds&&bds.comm&&!bds.comm.containerSize&&(bds.comm.containerSize=\"s\"),bds.util.setContainerWidth=function(){var t=$(\"#container\"),e=$(\"#wrapper\"),n=bds.util.getWinWidth(),o=bds.comm.containerSize;if(1217>n)t.removeClass(\"container_l container_xl\").addClass(\"container_s\"),e.removeClass(\"wrapper_l\").addClass(\"wrapper_s\"),bds.comm.containerSize=\"s\";else{if(!(n>=1217))return;t.removeClass(\"container_s container_xl\").addClass(\"container_l\"),e.removeClass(\"wrapper_s\").addClass(\"wrapper_l\"),bds.comm.containerSize=\"l\"\n}o!=bds.comm.containerSize&&$(window).trigger(\"container_resize\",bds.comm.containerSize)},bds.util.setFootStyle=function(){this.init(),this.bindEvent()},$.extend(bds.util.setFootStyle.prototype,{ie6:bds.comm.upn&&\"msie\"===bds.comm.upn.browser&&6==bds.comm.upn.ie,init:function(){var t=$(\"#foot\");if(t.addClass(\"foot_fixed_bottom\"),this.ie6){var e=$(window).height()+$(window).scrollTop()-t.outerHeight(!0);t.css(\"top\",e+\"px\")}},setFixedIe6:function(){var t=$(\"#foot\"),e=$(window).height()+$(window).scrollTop()-t.outerHeight(!0);\nt.css(\"top\",e+\"px\")},bindEvent:function(){var t=this;t.ie6&&$(window).on(\"resize.setFootStyle, scroll.setFootStyle\",function(){t.setFixedIe6()})}});var bds=bds||{};bds.se=bds.se||{},bds.se.tip=bds.se.tip||{},bds.comm.tipZIndex=220,bds.comm.tips=[],bds.se.tip=function(t){this.init=function(){this.op={target:t.target||{},mode:t.mode||\"over\",title:t.title||null,content:t.content||null,uncontrolled:t.uncontrolled?!0:!1,arrow:{has:1,offset:10,r:!1,c:!1},close:t.close||0,align:t.align||\"left\",offset:{x:10,y:20},arrowSize:16},t.arrow&&(this.op.arrow.has=0==t.arrow.has?0:1,this.op.arrow.offset=t.arrow.offset>=0?t.arrow.offset:10,this.op.arrow.r=t.arrow.r,this.op.arrow.c=t.arrow.c),t.offset&&(this.op.offset.x=t.offset.x||0==t.offset.x?t.offset.x:10,this.op.offset.y=t.offset.y||0==t.offset.y?t.offset.y:20),this.ext=t.ext||{},this.dom=$(\"
        \",{\"class\":\"c-tip-con\"}),this.visible=!1,this.rendered=!1,this.isAuto=\"auto\"===this.op.align?!0:!1,this.bindEvent()\n},this.render=function(){this.op.close&&this.enableCloseIcon(),this.op.title&&this.setTitle(this.op.title),this.op.content&&this.setContent(this.op.content),this.op.arrow.has&&this.enableArrow(),$(\"#c-tips-container\").append(this.dom)},this.bindEvent=function(){if(this.delay={overIcon:null,outIcon:null,overDom:null,outDom:null},\"over\"==this.op.mode){var t=this;$(t.op.target).on(\"mouseenter\",function(){window.clearTimeout(t.delay.outIcon),window.clearTimeout(t.delay.outDom),t.delay.overIcon=setTimeout(function(){t.show()\n},200)}),t.dom.on(\"mouseenter\",function(){window.clearTimeout(t.delay.outIcon),window.clearTimeout(t.delay.outDom),t.delay.overDom=setTimeout(function(){t.show()},200)}),$(t.op.target).on(\"mouseleave\",function(){window.clearTimeout(t.delay.overIcon),window.clearTimeout(t.delay.overDom),t.delay.outIcon=setTimeout(function(){t.hide()},200)}),t.dom.on(\"mouseleave\",function(){window.clearTimeout(t.delay.overIcon),window.clearTimeout(t.delay.overDom),t.delay.outIcon=setTimeout(function(){t.hide()},200)\n})}else if(\"none\"==this.op.mode){var t=this;t.show()}},this.enableArrow=function(){if(this.op.arrow.r)var t=$(\"
        \",{\"class\":\"c-tip-arrow\"}).html(\"\").appendTo(this.dom);else if(this.op.arrow.c)var t=$(\"
        \",{\"class\":\"c-tip-arrow\"}).html(\"\").appendTo(this.dom);else var t=$(\"
        \",{\"class\":\"c-tip-arrow\"}).html(\"\").appendTo(this.dom);this.arrow=t},this.enableCloseIcon=function(){var t=this,e=$(\"
        \",{\"class\":\"c-tip-close\"}).html(\"\").appendTo(this.dom).click(function(){t.hide()\n});this.close=e},this.setTitle=function(t){if(t.nodeType)var e=$(\"

        \",{\"class\":\"c-tip-title\"}).append(t).appendTo(this.dom);else var e=$(\"

        \",{\"class\":\"c-tip-title\"}).html(t).appendTo(this.dom);this.title=e},this.setContent=function(t){var e=$(\"
        \").html(t).appendTo(this.dom);this.content=e},this.setArrow=function(t){if(t&&t.offset>=0&&(this.op.arrow.offset=t.offset),this.op.arrow.has&&this.arrow)switch(this.op.align){case\"left\":this.arrow.css({left:this.op.arrow.offset+\"px\"});break;case\"right\":this.arrow.css({right:this.op.arrow.offset+16+\"px\"})\n}},this.setOffset=function(t){switch(t&&(this.op.offset.x=t.x||0==t.x?t.x:this.op.offset.x,this.op.offset.y=t.y||0==t.y?t.y:this.op.offset.y),this.op.align){case\"left\":var e=$(this.getTarget()).offset();this.getDom().css({top:e.top+this.op.offset.y+\"px\",left:e.left-this.op.offset.x+\"px\"});break;case\"right\":var e=$(this.getTarget()).offset();this.getDom().css({top:e.top+this.op.offset.y+\"px\",left:e.left+this.op.offset.x+$(this.getTarget()).width()-this.getDom().width()+\"px\"})}},this.autoOffset=function(){var t,e={w:this.dom.outerWidth(),h:this.dom.outerHeight()},n=$(this.getTarget()),o=n.offset(),i={w:n.outerWidth(),h:n.outerHeight()},r=$(window),s=r.scrollTop(),a={w:r.width(),h:r.height()},c={left:0,top:0},d={};\na.h+s-i.h-o.top>e.h?(c.top=i.h+o.top+this.op.arrowSize/2,this.arrow&&this.arrow.removeClass(\"c-tip-arrow-down\")):o.top-s>e.h?(c.top=o.top-e.h-this.op.arrowSize/2,this.arrow&&this.arrow.addClass(\"c-tip-arrow-down\")):(c.top=i.h+o.top+this.op.arrowSize/2,this.arrow&&this.arrow.removeClass(\"c-tip-arrow-down\")),t=o.left+i.w/2-this.op.arrow.offset-this.op.arrowSize/2,c.left=t,c.left>0&&c.left+e.w>a.w?(c.left=o.left+i.w/2-e.w+this.op.arrow.offset+this.op.arrowSize/2,d.right=this.op.arrow.offset+this.op.arrowSize,d.left=\"auto\",c.left<0&&(c.left=t,d.left=this.op.arrow.offset,d.right=\"auto\")):(d.left=this.op.arrow.offset,d.right=\"auto\"),this.dom.css(c),this.arrow&&this.arrow.css(d)\n},this.enable=function(){},this.disable=function(){},this.destroy=function(){},this.show=function(){this.visible||(this.onShow(),this.rendered||(bds.comm.tips.push(this),this.render(),this.rendered=!0),this.isAuto?this.autoOffset():(this.setOffset(),this.setArrow()),this.dom.css({\"z-index\":bds.comm.tipZIndex}),bds.comm.tipZIndex++,this.dom.css({display:\"block\"}),this.visible=!0)},this.hide=function(){this.visible&&(this.dom.css({display:\"none\"}),this.onHide(),this.visible=!1)},this.onShow=t.onShow||function(){},this.onHide=t.onHide||function(){},this.getTarget=function(){return this.op.target\n},this.getDom=function(){return this.dom},this.init()},bds.event.trigger(\"se.api_tip_ready\"),$(document).mousedown(function(t){t=t||window.event;for(var e=t.target||t.srcElement;e&&e.tagName&&e!=document.body&&\"html\"!=e.tagName.toLowerCase()&&\"c-tip-con\"!=e.className;)e=e.parentNode;e&&\"c-tip-con\"!=e.className&&$(bds.comm.tips).each(function(){this.op.uncontrolled||this.op.close&&this.hide()})});var sethfPos=sethfPos||0;!function(){function t(t){if(t){var e=t.parentNode;e&&(e.style.marginBottom=\"20px\",e.style.marginTop=\"2px\")\n}}var e=\"//www.baidu.com/\",n=-1!=navigator.userAgent.indexOf(\"MSIE\")&&!window.opera,o=(100*Math.random(),\"百度一下,你就知道\"),i=\"\";if(window.fa=function(t){try{window.sidebar?window.sidebar.addPanel(o,e,\"\"):window.opera&&window.print?(t.setAttribute(\"rel\",\"sidebar\"),t.setAttribute(\"href\",e),t.setAttribute(\"title\",o),t.click()):window.external.AddFavorite(e,o)}catch(n){}},n)try{var r=/se /gi.test(navigator.userAgent),s=/AppleWebKit/gi.test(navigator.userAgent)&&/theworld/gi.test(navigator.userAgent),a=/theworld/gi.test(navigator.userAgent),c=/360se/gi.test(navigator.userAgent),d=/360chrome/gi.test(navigator.userAgent),l=/greenbrowser/gi.test(navigator.userAgent),u=/qqbrowser/gi.test(navigator.userAgent),m=/tencenttraveler/gi.test(navigator.userAgent),p=/maxthon/gi.test(navigator.userAgent),f=/krbrowser/gi.test(navigator.userAgent),h=!1;\ntry{h=+external.twGetVersion(external.twGetSecurityID(window)).replace(/\\./g,\"\")>1013}catch(g){}if(r||h||s||a||c||d||l||u||m||p||f){var b=document.getElementById(sethfPos?\"set_f\":\"setf\");b&&sethfPos&&(t(b),i=\"favorites\")}else{var v=document.getElementById(sethfPos?\"set_f\":\"setf\");v&&sethfPos&&(t(v),i=\"home\"),v.setAttribute(\"onClick\",\"h(this)\"),v.setAttribute(\"onmousedown\",\"return ns_c({'fm':'behs','tab':'homepage','pos':0})\"),v.href=\"/\",v.target=\"_self\",v.id=\"seth\"}}catch(g){}else{var b=document.getElementById(sethfPos?\"set_f\":\"setf\");\nsethfPos&&(t(b),i=\"favorites\")}i&&sethfPos&&ns_c({fm:\"sethf_show\",tab:i})}(),bds.se.loginCallbackFunc=null,bds.se.login=function(){var t=\"\",e=!1,n=\"\",o=function(t){var e=t||bds.comm.user;e&&$(\"#lb\").replaceWith(''+escapeHTML(bds.comm.username)+'')},i=function(o){e?(bds.se.passv3.setSubpro(t),bds.se.passv3.setMakeText(n),bds.se.loginCallbackFunc=o||function(){window.document.location.reload(!0)},bds.se.passv3.show()):$.getScript(location.protocol+\"//passport.baidu.com/passApi/js/uni_login_wrapper.js?cdnversion=\"+(new Date).getTime(),function(){initPassV3(),e=!0,bds.se.passv3.setSubpro(t),bds.se.passv3.setMakeText(n),bds.se.loginCallbackFunc=o||function(){window.document.location.reload(!0)\n},bds.se.passv3.show()})},r=function(t){if(bds.comm){bds.comm.user=t,bds.comm.username=t,window.bdUser=t,bds.se.passv3.hide(),bds.se.loginCallbackFunc.call(window,1,t);for(var e=0;e\",{\"class\":\"c-tip-menu\"}),toolsList=$(\"
          \"),toolsFavo=$(\"
        • \"),toolsFavoLink=$(\"\").html(\"收藏\");toolsFavoLink.on(\"mousedown\",function(){bds.se.tool.favo(ops,item.getAttribute(\"id\")),ns_c({fm:\"tools\",tab:\"favo\"})}),toolsFavoLink.on(\"mouseover\",function(){$(this).css(\"background-color\",\"#ebebeb\")}),toolsFavoLink.on(\"mouseout\",function(){$(this).css(\"background-color\",\"#fff\")}),toolsFavo.append(toolsFavoLink),toolsList.append(toolsFavo);\nvar toolsShare=$(\"
        • \"),toolsShareLink=$(\"\").html(\"分享\");toolsShareLink.on(\"mousedown\",function(){bds.se.tool.share(ops,item),ns_c({fm:\"tools\",tab:\"share\"})}),toolsShareLink.on(\"mouseover\",function(){$(this).css(\"background-color\",\"#ebebeb\")}),toolsShareLink.on(\"mouseout\",function(){$(this).css(\"background-color\",\"#fff\")}),toolsShare.append(toolsShareLink),toolsList.append(toolsShare);var fromType;fromType=$(item).parent().find(\".c-pingjia a\").attr(\"data-from\")?$(item).parent().find(\".c-pingjia a\").attr(\"data-from\"):\"ps_pc\";\nvar toolsKoubei=$(\"
        • \").html(\"评价');toolsList.append(toolsKoubei);var officalLogo=$($(item).closest(\".c-container\").find(\"h3.t\").children()[1]),vLogo=$(item).parent().find(\".vstar\"),isOffical=0,vLevel=0;\nofficalLogo&&\"官网\"==officalLogo.html()&&(isOffical=1),vLogo&&vLogo.attr(\"hint-data\")&&(vLevel=$.parseJSON(vLogo.attr(\"hint-data\")).hint[0].vlevel);var toolsReport=$(\"
        • \").html(\"举报');\ntoolsList.append(toolsReport),toolsDom.append(toolsList);var tTip=new bds.se.tip({target:$(\".c-icon\",item)[0],mode:\"none\",align:\"left\",offset:{x:33},arrow:{has:1,offset:30},content:toolsDom,ext:{category:\"tools\"}});tTip.onShow=function(){ns_c({fm:\"tools\",tab:\"show\"})}},this.init()},bds.se.tool.share=function(t,e){this.op=t||{},this.init=function(t,e){$.getScript(bds.comm.host.share,function(){$(bds.comm.tips).each(function(){this.op.uncontrolled||this.hide()});var n=new bds.se.tip({target:$(\".c-icon\",e)[0],mode:\"none\",offset:{x:33},arrow:{has:0},close:1,content:'
          '}),o=$(\".c-tools-share\",n.dom.get(0))[0];\n__bdshare.render({boxEle:o,url:t.url,txt:t.title+\" -- 分享自百度搜索\"})})}(this.op,e)},bds.se.tool.favo=function(t,e){if(this.op=t||{},this.init=function(t,e){if(t){var n=document.createElement(\"script\"),o=bds.comm.host.bfe,i=bds.comm.host.favo;n.src=o+\"?url=\"+encodeURIComponent(t.url)+\"&jump=\"+encodeURIComponent(i+\"/myfavorite/set?irt=1&t=\"+encodeURIComponent(t.title)+\"&id=\"+encodeURIComponent(e)+\"&c=bds.se.tool.favo.succ\")+\"&key=url\",document.body.appendChild(n)}},bds.comm.user)this.init(this.op,e);else if(bds.se.login&&bds.se.login.open){var n=this;\nbds.se.login.open(function(t){1==t&&n.init(n.op,e)})}},bds.se.tool.favo.succ=function(json){if(json.suc){if(json.status)switch(json.status){case 302:bds.se.login&&bds.se.login.open&&bds.se.login.open(function(stat,user){1==stat&&bds.se.tool.favo(eval(\"(\"+$(\"#\"+json.id)[0].getAttribute(\"data-tools\")+\")\"),json.id)});break;case 5:var succContent='
          ';succContent+='

          收藏失败,请稍后再试

          ',succContent+=\"
          \"}}else if(json.status){var succContent='
          ';\nswitch(succContent+='

          已收藏至:

          ',succContent+=\"\",succContent+=\"
          \"}$(bds.comm.tips).each(function(){this.op.uncontrolled||this.hide()}),succContent&&new bds.se.tip({target:$(\".c-icon\",document.getElementById(json.id))[0],offset:{x:33},arrow:{has:0},mode:\"none\",arrow:{has:0},close:1,content:succContent})\n};var bds=bds||{};bds.se=bds.se||{},bds.se.tools=bds.se.tools||{},bds.se.tools=function(){var t=delayHideOnIcon=delayShowOnTip=delayHideOnTip={};$(\"#container\").delegate(\".c-tools\",\"mouseover\",function(){var e=this;window.clearTimeout(delayHideOnIcon),window.clearTimeout(delayHideOnTip),t=setTimeout(function(){var t=1;$(bds.comm.tips).each(function(){return this.getTarget()==$(\".c-icon\",e)[0]?(t=0,this.show(),!1):void 0}),t&&(tools=new bds.se.tool(e))},200)}).delegate(\".c-tools\",\"mouseout\",function(){window.clearTimeout(t),window.clearTimeout(delayShowOnTip);\nvar e=this;delayHideOnIcon=setTimeout(function(){$(bds.comm.tips).each(function(){return this.getTarget()==$(\".c-icon\",e)[0]?(this.hide(),!1):void 0})},200)}),$(\"#c-tips-container\").delegate(\".c-tip-con\",\"mouseover\",function(){var t=this;window.clearTimeout(delayHideOnIcon),window.clearTimeout(delayHideOnTip),delayShowOnTip=setTimeout(function(){$(bds.comm.tips).each(function(){return this.getDom().get(0)==t&&this.ext.category&&\"tools\"==this.ext.category?(this.show(),!1):void 0})},200)}).delegate(\".c-tip-con\",\"mouseout\",function(){window.clearTimeout(t),window.clearTimeout(delayShowOnTip);\nvar e=this;delayHideOnTip=setTimeout(function(){$(bds.comm.tips).each(function(){return this.getDom().get(0)==e&&this.ext.category&&\"tools\"==this.ext.category?(this.hide(),!1):void 0})},200)})};var bds=bds||{};bds.se=bds.se||{},bds.se.slide=function(t){var e,n,o,i,r,s=this,a={},d=[],l=0,u=null;this._default={target:$(\"#lg\"),src:\"\",width:270,height:129,offsetLeft:0,isPad:!1,isRetina:!1,frames:103,animations:[{isAutoPlay:!0,frame_start:1,frame_end:30,delay:0,duration:100,repeats:0,process_before:function(){},event_loop:0,process_after:function(){}},{trigger_type:\"click\",trigger_duration:100,trigger_frame:31,trigger_fn:function(){},frame_start:32,frame_end:103,process_before:function(){},process_after:function(){},delay:0,duration:100,repeats:1,event_loop:0}]},this.timer=[],this.otherTimer=[],this.op=$.extend({},s._default,t),this.init=function(){return s.op.src?(s.createDom(),void(bds.comm.ishome&&s.op.target.length&&s.initAnimate())):void s.createPlayer()\n},this.createPlayer=function(){var t=s.op.target.find(\"map\"),e=t.length?t.find(\"area\").eq(0):\"\",o=s.op.play;o&&(n=$('\").appendTo(s.op.target),e.length?(n.wrap(''),e.attr(\"title\")&&n.attr(\"title\",e.attr(\"title\"))):n.wrap('
          '),n.on(o.trigger_type,function(){return o.trigger_duration?s.timer.push(window.setTimeout(function(){o.trigger_fn.call(s.op)\n},o.trigger_duration)):o.trigger_fn.call(s.op),!1}))},this.createDom=function(){var t='
          ',l=s.op.offsetLeft+\"px 0\",u=s.op.target.find(\"map\"),m=u.length?u.find(\"area\").eq(0):\"\",p=m?\"pointer\":p,f=s.op.animations instanceof Array?s.op.animations:[s.op.animations],h=s.op.width,g=s.op.height;d=f,i=h,r=g,t=$.format(t,s.op.src,l,p,s.op.width,s.op.height,s.op.width/2),\"static\"===s.op.target.css(\"position\")&&s.op.target.css({position:\"relative\",width:\"100%\"}),s.op.target.append(t),e=o=s.op.target.find(\"div\").eq(0),s.op.play&&(n=$('\").insertAfter(e),o=n),s.op.isPad&&e.css(\"background-size\",s.op.width*s.op.frames/2+\"px \"+s.op.height+\"px\"),window.devicePixelRatio&&window.devicePixelRatio>1&&s.op.isRetina&&e.css(\"background-size\",s.op.width*s.op.frames+\"px \"+s.op.height+\"px\"),m.length?(e.wrap(''),m.attr(\"title\")&&e.attr(\"title\",m.attr(\"title\"))):e.on(\"mousedown\",function(){c({tab:\"logo_button_click\"})\n});for(var b=0,v=d.length;v>b;b++){var w=d[b],_=w.frame_start;l=-((_-1)*h)+\"px 0\",a[b]={\"background-position\":l,cursor:p}}},this.initAnimate=function(){function t(){e.show(),s.play()}if(!(l>=d.length)){var n=d[l],i=n.isAutoPlay,r=n.trigger_type,a=n.trigger_fn,c=n.trigger_duration,m=n.trigger_frame,p=$(\"#lg area\");p.length&&p.attr(\"onmousedown\")&&e.on(\"mousedown\",function(){return new Function(p.attr(\"onmousedown\"))()}),u=new Image,u.src=s.op.src,e.bind(\"first_animate\",function(){u.complete?t():u.onload=t\n}),i?e.trigger(\"first_animate\"):r&&(s.enablePointer(),o.show().on(r,function(){a&&(m&&s.toPos(m),a.call(s.op),c?s.timer.push(setTimeout(function(){e.trigger(\"first_animate\")},c)):e.trigger(\"first_animate\"))}))}},this.enablePointer=function(){bds.comm.upn&&\"msie\"===bds.comm.upn.browser&&\"6\"===bds.comm.upn.ie?alert(\"pointer\"):e.css(\"cursor\",\"pointer\")},this.disablePointer=function(){e.css(\"cursor\",\"default\")},this.play=function(){if(l>=d.length)return void s.dispose();var t=d[l],e=t.process_before;\ns.dispose(),e&&e.call(s),s.animation()},this.toPos=function(t){var n=-((t-1)*i)+\"px 0\";e.css(\"background-position\",n)},this.animation=function(){var t,n=d[l],r=n.duration,a=n.frame_start,c=n.frame_end,u=n.delay,m=n.repeats,p=n.process_after,f=n.trigger_type,h=a-1>0?a-1:0,g=n.event_loop||0,b=0;if(t=g?d[l]:l+1>=d.length?d[l]:d[l+1]){var v=t.trigger_type,w=t.trigger_fn,_=t.trigger_duration,y=t.trigger_frame;v&&(f&&o.off(f),l=c?(s.dispose(),b++,0!==m&&b>=m?(h=null,b=null,p&&p.call(s),l++,l0?a-1:0,s.timer.push(setTimeout(arguments.callee,r)))):s.timer.push(setTimeout(arguments.callee,r))},u))}()},this.dispose=function(t){t=t||s.timer;for(var e=0,n=t.length;n>e;e++)window.clearTimeout(t[e]);t.length=0},this.disposeOther=function(t){t=t||s.otherTimer;\nfor(var e=0,n=t.length;n>e;e++)window.clearTimeout(t[e]);t.length=0},this.clear=function(){s.dispose(),s.disposeOther(),o.off(\"click\").off(\"hover\")},this.reset=function(t){t=t||0,e.css(a[t])},this.init()};var bds=bds||{};bds.se=bds.se||{},bds.se.banner=function(t,e,n){this.init=function(){n=n||{},this.$dom_panel=$(t),this.hintText=e,this.hintIcon=n.iconClass||\"\",this.downUrl=n.downUrl||\"\",this.hintCookie=n.cookie||\"\",this.showNum=this.hintCookie&&$.getCookie(this.hintCookie)?Number($.getCookie(this.hintCookie)):0,this.nscTab=n.nscTab||\"\",this.ishome=bds.comm&&1==bds.comm.ishome?1:0,this.bannerType=n.bannerType||\"\",t&&e&&this.showNum<5&&!$(\".baiduapp_banner\")[0]&&!$(\".res_top_banner\")[0]&&!$(\".res_top_banner_for_win\")[0]&&this.show()\n},this.show=function(){this.render(),this.showNum+=1,$.setCookie(this.hintCookie,this.showNum,{expires:2592e6}),this.$dom_panel.prepend(this.bannerHtml),1!=this.ishome&&this.headFloat(),this.bindEvent(),ns_c({fm:\"behs\",tab:(1==this.ishome?\"tj_\":\"\")+\"baidu_\"+(this.nscTab?this.nscTab:\"topbanner\")+\"show\"})},this.render=function(){var t=[];t=t.concat(\"WIN\"!==this.bannerType?['
          ','',\"\"+this.hintText+\"\",this.downUrl?'立即体验':\"\",'',\"
          \"]:['
          ','',\"\"+this.hintText+\"\",this.downUrl?'立即体验':\"\",'',\"
          \"]),this.bannerHtml=t.join(\"\")\n},this.headFloat=function(){var t=$(\"#head\"),e=$(window),n=$(\".res_top_banner\");t.css(\"position\"),$(window).scroll(function(){var o=n.height()||0,i=e.scrollTop();o>=i?t.attr(\"style\",\"position:absolute;\"):t.attr(\"style\",\"top:0px;_top:\"+o+\"px;\")})},this.bindEvent=function(){if(\"WIN\"!==this.bannerType){var t=$(\".res_top_banner\"),e=this;$(\".res_top_banner_download\",t).on(\"mousedown\",function(){e.hintCookie&&$.setCookie(e.hintCookie,5,{expires:2592e6}),ns_c({fm:\"behs\",tab:(1==e.ishome?\"tj_\":\"\")+\"baidu_\"+(e.nscTab?e.nscTab:\"topbanner\")+\"down\"})\n}),$(\".res_top_banner_close\",t).on(\"mousedown\",function(){t.detach(),e.hintCookie&&$.setCookie(e.hintCookie,5,{expires:2592e6}),ns_c({fm:\"behs\",tab:(1==e.ishome?\"tj_\":\"\")+\"baidu_\"+(e.nscTab?e.nscTab:\"topbanner\")+\"close\"})}),$(window).on(\"swap_begin\",function(){t.detach()})}else{var t=$(\".res_top_banner_for_win\"),e=this;$(\".res_top_banner_download\",t).on(\"mousedown\",function(){e.hintCookie&&$.setCookie(e.hintCookie,5,{expires:2592e6}),ns_c({fm:\"behs\",tab:(1==e.ishome?\"tj_\":\"\")+\"baidu_\"+(e.nscTab?e.nscTab:\"topbanner\")+\"down\"})\n}),$(\".res_top_banner_close\",t).on(\"mousedown\",function(){t.detach(),e.hintCookie&&$.setCookie(e.hintCookie,5,{expires:2592e6}),ns_c({fm:\"behs\",tab:(1==e.ishome?\"tj_\":\"\")+\"baidu_\"+(e.nscTab?e.nscTab:\"topbanner\")+\"close\"})}),$(window).on(\"swap_begin\",function(){t.detach()})}},this.init()},function(){$(window).on(\"swap_end\",function(){var t=[\"union\",\"union2baidu\",\"union_cpro\",\"union_nosearch\",\"redbull\",\"hao123\"],e=bds.comm.upn,n=navigator.userAgent.toLowerCase().search(/msie [6-7]/);if(winFilter=/NT 6.1|NT 6.2|NT 6.3/i.test(navigator.userAgent),bds.comm.topHijack)for(var o=0;o0){var i=\"6\"==e.ie?\"您的浏览器采用的IE6内核已停止维护,推荐升级到更快更安全的百度浏览器!\":\"您的IE浏览器版本较低,即将停止更新维护,建议升级到更快、更安全的百度浏览器。\";bds.se.banner($(\"body\")[0],i,{downUrl:\"http://j.br.baidu.com/v1/t/ui/p/browser/tn/10105001/ch_dl_url\",cookie:\"H_PS_BBANNER\",nscTab:\"browser\"})}})}(),bds.se.safeTip=function(){function t(){var t=0,e=[\"bd\"],n=\"\",o=[];$(\".unsafe_ico_new\").each(function(e,i){o.push(i.getAttribute(\"data-id\")),n=i.getAttribute(\"data-tpl\");\nvar r=$(i).attr(\"data-href\"),s=$(i).attr(\"href\"),a=r?r:s;$(\"h3 a\",$(i).parents(\".result\")).attr(\"href\",a),t++}),t>0&&ns_c({tab:\"safetip\",num_unsafe:t,prd:e.join(\"|\"),hintId:o,hintTpl:n})}return{init:t}}();var bds=bds||{};bds.se=bds.se||{},bds.se.trust=bds.se.trust||{},bds.se.trust=function(){function t(){d=[],l=[],$(\".c-trust\").each(function(){var t=$(this),e=this.getAttribute(\"data_key\");0==t.parent(\".c-icons-inner\").length&&t.wrap(\"\"),-1==$.inArray(e,d)&&d.push(this.getAttribute(\"data_key\")),-1==$.inArray(this,l)&&l.push(this)\n}),$(\".c-trust-as\").each(function(){p=$.parseJSON($(this).attr(\"hint-data\")),p&&!$(this).attr(\"render\")&&(m=$(this),s(p,$(this).attr(\"hint-type\")),$(this).attr(\"render\",\"render\"))}),d.length<1||(f&&g0&&o(p.vstar.hint[0].vlevel,p.vstar.url),p.medical&&i(),p.aviation&&r())\n})}function o(t,e){var n=$(\"\",{\"class\":\"c-vline\"}),o=$(\"\",{\"class\":\"c-icon c-icon-v\"+t,target:\"_blank\",onclick:\"return false\",href:\"#\"});e&&o.attr({href:e,onclick:\"\"}),m.append(n),m.append(o),s(p.vstar,\"vstar\")}function i(){var t=$(\"\",{\"class\":\"c-vline\"}),e=$(\"\",{\"class\":\"c-icon c-icon-med\",target:\"_blank\",onclick:\"return false\",href:\"#\"});m.append(t),m.append(e),s(p.medical,\"medical\")}function r(){var t=$(\"\",{\"class\":\"c-vline\"}),e=$(\"\",{\"class\":\"c-icon c-icon-air\",target:\"_blank\",onclick:\"return false\",href:\"#\"});\nm.append(t),m.append(e),s(p.aviation,\"aviation\")}function s(t,e){var n=t.hint,o=\"over\",i=t.url,r=t.webIMUrl;if(t&&n){if(\"vstar\"==e||\"baozhang\"==e||\"baozhang-v\"==e||\"chengqi\"==e||\"baozhang-v-auth\"==e)var s=\"
            \";else var s=\"
              \";for(var c=0;c\":\">\",s+=a(n[c].txt),s+=\"\"):o=\"none\";\ns+=\"
            \";var d=!1,l=!1;\"baozhang-v\"==e||\"baozhang-v-auth\"==e?d=!0:\"chengqi\"==e&&(l=!0);var u=new bds.se.tip({target:m,mode:o,align:\"auto\",content:s,arrow:{has:1,offset:35,r:d,c:l},offset:{x:0,y:25}});u.onShow=function(){A.use(\"honourCard4\",function(){});var o=n[0].vlevel,a=n[0].unfixedInfo;ns_c({hintUrl:m.attr(\"data_key\"),hintTpl:e,hintId:o}),-1!=s.indexOf(\"ecard\")&&setTimeout(function(){A.use(\"honourCard4\",function(){var s=$(u.getDom()).find(\".c-trust-ecard4\"),c=0;\"baozhang\"==e&&(c=n[0].bzAppliCounts);\nvar d={compName:t.label,vLevel:o,centerPageUrl:i};a&&(d.unfixedInfo=a),r&&(d.webIMUrl=r),e&&(d.type=e),c&&(d.bzAppliCounts=c),t.brandName&&(d.brandName=t.brandName),t.brandLogo&&(d.brandLogo=t.brandLogo),t.brandScope&&(d.brandScope=t.brandScope),t.brandRelation&&(d.brandRelation=t.brandRelation),t.authBrandName&&(d.authBrandName=t.authBrandName),t.authBizScope&&(d.authBizScope=t.authBizScope),t.authBizType&&(d.authBizType=t.authBizType),A.ui.honourCard4(s,d)})},0),$(\"li\",this.dom).each(function(){$(\"a\",this).each(function(t){this.onmousedown=function(){ns_c({hintUrl:i,hintTpl:e,title:this.innerHTML,pos:t})\n}})})}}}function a(t){var e=t;return e=e.replace(//g,\">\").replace(/'/g,\"'\").replace(/\"/g,\""\"),e=e.replace(\"[/url]\",\"
            \").replace(/\\[url ([^\\s]*)\\]/,\"\"),e=e.replace(/\\[img ([^\\s]*)\\]/,\"\"),e=e.replace(/\\[ecard (-?[\\d]{0,3})\\]/,\"
            \")}var c=4,d=[],l=[];if(bds.util&&bds.util.domain&&bds.util.domain.get)var u=bds.util.domain.get(\"http://tag.baidu.com\");else var u=\"http://tag.baidu.com\";\nvar m=null,p=null,f=!1,h=null,g=0;return t(),{init:t,render:n}}();var __callback_names={};$(function(){bds.comm.user&&\"\"!=bds.comm.user&&setTimeout(function(){$.ajax({dataType:\"script\",cache:!0,url:(bds.su&&bds.su.urStatic?bds.su.urStatic:\"http://ss.bdimg.com\")+\"/static/exceptionStackTrace/js/mt_show_1.8.js\",success:function(){function t(){$(\"#imsg\")[0]&&$(\"#u\")[0]&&$(\"#user\")[0]&&(bds.se.exceptionStackTrace&&bds.se.exceptionStackTrace.init&&bds.se.exceptionStackTrace.init({button:$(\"#imsg\"),refer:$(\"#u\")}),$(\"#user\").on(\"mouseover\",function(){$(\"#s_mod_msg\").hide()\n})),$(\"#imsg1\")[0]&&$(\"#u1\")[0]&&$(\"#user1\")[0]&&(bds.se.exceptionStackTrace&&bds.se.exceptionStackTrace.init&&bds.se.exceptionStackTrace.init({button:$(\"#imsg1\"),refer:$(\"#u1\")}),$(\"#user1\").on(\"mouseover\",function(){$(\"#s_mod_msg\").hide()}))}function e(){bds.se.exceptionStackTrace&&bds.se.exceptionStackTrace.addStyle&&bds.se.exceptionStackTrace.addStyle()}bds.comm.loginAction.push(function(n){1==n&&(t(),e())}),bds.comm.newindex?$(window).on(\"index_off\",function(){setTimeout(function(){t(),e()},0)}):(t(),e()),$(window).on(\"swap_end\",e)}})},0)}),$(window).on(\"swap_end\",function(){var t='
            ',e=\"//www.baidu.com/cache/fpid/ielib_0108.js\",n=\"//www.baidu.com/cache/fpid/chromelib_0108.js\",o=document.title,i={flashDomId:\"_FP_userDataDiv\",comDomId:\"_FP_comDiv\",IEStoreDomId:\"_FP_userDataDiv\"},r=navigator.userAgent.toLowerCase(),s=!1;\n(r.indexOf(\"msie\")>=0||new RegExp(\"trident(.*)rv.(\\\\d+)\\\\.(\\\\d+)\").test(r))&&(s=!0);var a,c=!1,d=new RegExp(\"chrome/(\\\\d+)\"),l=r.match(d);if(l&&(c=!0,a=l[1]),!(c&&a>=39)){$(\"body\").append(t);var u=function(t){s&&window.setTimeout(function(){document.title=o},0),window._FPID_CACHE=t,$(\"#_FP_userDataDiv\").remove(),$(\"#_FP_comDiv\").remove();var e=bds.comm.qid,n=\"_WWW_BR_API_\"+(new Date).getTime(),i=window[n]=new Image;i.onload=function(){window[n]=null};var r=$.getCookie(\"BAIDUID\"),a=$.getCookie(\"BIDUPSID\"),c=bds&&bds.util&&bds.util.domain?bds.util.domain.get(\"http://eclick.baidu.com/ps_fp.htm?\"):\"http://eclick.baidu.com/ps_fp.htm?\",d=c+\"pid=ps&fp=\"+t.data.fp+\"&im=\"+t.data.im+\"&wf=\"+t.data.wf+\"&br=\"+t.data.br+\"&qid=\"+e+\"&bi=\"+r+\"&psid=\"+a;\ni.src=d};return window._FPID_CACHE?void(window._FPIDTimer=window.setTimeout(function(){u(window._FPID_CACHE)},2500)):void(window._FPIDTimer=window.setTimeout(function(){var t=\"\";t=s?e:n,$.ajax({url:t,cache:!0,dataType:\"script\",success:function(){fpLib.getFp(u,i)}})},2500))}}),$(window).on(\"swap_begin\",function(){window._FPIDTimer&&(window.clearTimeout(window._FPIDTimer),$(\"#_FP_userDataDiv\").remove(),$(\"#_FP_comDiv\").remove())});var bds=bds||{};bds.se=bds.se||{},bds.se.upn={regexp:/BD_UPN=([\\w|\\d]*)/,cookieset:[],write:function(t){document.cookie=\"BD_UPN=\"+t+\"; expires=\"+new Date((new Date).getTime()+864e6).toGMTString()\n},set:function(t){var e=this;try{$.isArray(t)&&(e.cookieset=e.cookieset.concat(t))}catch(n){}},run:function(){var t=this;try{for(var e=\"\",n=0;n0?o.match(/lbbrowser/gi):o.indexOf(\"maxthon\")>0?o.match(/maxthon\\/[\\d.]+/gi):o.indexOf(\"bidubrowser\")>0?o.match(/bidubrowser/gi):o.indexOf(\"baiduclient\")>0?o.match(/baiduclient/gi):o.indexOf(\"metasr\")>0?o.match(/metasr/gi):o.indexOf(\"qqbrowser\")>0?o.match(/qqbrowser/gi):!function(){if(navigator.mimeTypes.length>0){var t;\nfor(t in navigator.mimeTypes)if(\"application/vnd.chromium.remoting-viewer\"==navigator.mimeTypes[t].type)return!0}return!1}()&&\"track\"in document.createElement(\"track\")&&!(\"scoped\"in document.createElement(\"style\"))&&!(\"v8Locale\"in window)&&/Gecko\\)\\s+Chrome/.test(navigator.appVersion)&&\"track\"in document.createElement(\"track\")&&\"scoped\"in document.createElement(\"style\")&&\"v8Locale\"in window?\"qihu\":o.indexOf(\"msie\")>0?o.match(/msie [\\d.]+;/gi):window.document.documentMode?\"msie\":o.indexOf(\"edge\")>0?o.match(/edge\\/[\\d.]+/gi):o.indexOf(\"firefox\")>0?o.match(/firefox\\/[\\d.]+/gi):o.indexOf(\"opr\")>0?o.match(/opr\\/[\\d.]+/gi):o.indexOf(\"chrome\")>0?o.match(/chrome\\/[\\d.]+/gi):o.indexOf(\"safari\")>0&&o.indexOf(\"chrome\")<0?o.match(/safari\\/[\\d.]+/gi):\"\"\n}function e(){var t=\"Win32\"==navigator.platform||\"Windows\"==navigator.platform,e=\"Mac68K\"==navigator.platform||\"MacPPC\"==navigator.platform||\"Macintosh\"==navigator.platform||\"MacIntel\"==navigator.platform;if(e)return\"mac\";var n=\"X11\"==navigator.platform&&!t&&!e;if(n)return\"unix\";var o=String(navigator.platform).indexOf(\"Linux\")>-1;return o?\"linux\":t?\"windows\":\"other\"}var n=navigator.userAgent,o=n.toLowerCase();browser=(t()+\"\").replace(/[0-9.\\/|;|\\s]/gi,\"\"),browserversion=function(){return\"msie\"==browser?n.search(/MSIE [2-5]/)>0?\"ie5\":n.indexOf(\"MSIE 6\")>0?\"ie6\":n.indexOf(\"MSIE 7\")>0?\"ie7\":n.indexOf(\"MSIE 8\")>0?\"ie8\":n.indexOf(\"MSIE 9\")>0?\"ie9\":n.indexOf(\"MSIE 10\")>0?\"ie10\":\"11\"==window.document.documentMode?\"ie11\":\"other\":\"\"\n}(),browsertype=function(){return o.indexOf(\"msie\")>0||new RegExp(\"trident(.*)rv.(\\\\d+)\\\\.(\\\\d+)\").test(o)?\"ie\":o.indexOf(\"firefox\")>0?\"firefox\":o.indexOf(\"chrome\")>0?\"chrome\":o.indexOf(\"safari\")>0&&o.indexOf(\"chrome\")<0?\"safari\":\"other\"}(),os=e(),osversion=function(){return\"windows\"==os?n.indexOf(\"Windows NT 5.1\")>-1||n.indexOf(\"Windows XP\")>-1?\"xp\":(isWinVista=n.indexOf(\"Windows NT 6.0\")>-1||n.indexOf(\"Windows Vista\")>-1)?\"vista\":n.indexOf(\"Windows NT 6.1\")>-1||n.indexOf(\"Windows 7\")>-1?\"win7\":n.indexOf(\"Windows NT 6.2\")>-1||n.indexOf(\"Windows 8\")>-1?\"win8\":n.indexOf(\"Windows NT 6.3\")>-1||n.indexOf(\"Windows 8.1\")>-1?\"win8.1\":n.indexOf(\"Windows NT 10\")>-1?\"win10\":\"other\":void 0\n}();var i=function(t){var e=0;switch(t){case\"msie\":e=1;break;case\"chrome\":e=2;break;case\"firefox\":e=3;break;case\"safari\":e=4;break;case\"opr\":e=5;break;case\"lbbrowser\":e=6;break;case\"maxthon\":e=7;break;case\"bidubrowser\":e=8;break;case\"metasr\":e=9;break;case\"qqbrowser\":e=\"a\";break;case\"qihu\":e=\"b\";break;case\"baiduclient\":e=\"c\";break;case\"edge\":e=\"d\"}return e}(browser),r=function(t){var e=0;switch(t){case\"ie6\":e=1;break;case\"ie7\":e=2;break;case\"ie8\":e=3;break;case\"ie9\":e=4;break;case\"ie10\":e=5;break;\ncase\"ie11\":e=6;break;case\"other\":e=7;break;case\"ie5\":e=8}return e}(browserversion),s=function(t){var e=0;switch(t){case\"windows\":e=1;break;case\"mac\":e=2;break;case\"linux\":e=3;break;case\"unix\":e=4}return e}(os),a=function(t){var e=0;switch(t){case\"xp\":e=1;break;case\"vista\":e=2;break;case\"win7\":e=3;break;case\"win8\":e=4;break;case\"win8.1\":e=5;break;case\"other\":e=6;break;case\"win10\":e=7}return e}(osversion),c=function(t){var e=0;switch(t){case\"ie\":e=1;break;case\"firefox\":e=2;break;case\"chrome\":e=3;break;\ncase\"safari\":e=4}return e}(browsertype);return[{k:1,v:i},{k:2,v:r},{k:3,v:s},{k:4,v:a},{k:5,v:c}]}()),bds.se.upn.run(),bds.se.heightControl={check:function(){return $(\"#content_right\").height()>$(\"#content_left\").height()},cleanEC:function(){var t=$(\".ec_bdtg\"),e=$(\"#ec_im_container\").children(\"div\"),n=e.length,o=n-1;for(bds.se.heightControl.check()&&t&&t.length&&t.css(\"display\",\"none\");bds.se.heightControl.check()&&o>=0;){var i=e[o];$(i).css(\"display\",\"none\"),o--}},cleanRes:function(){var t=$(\"#content_right\").find(\".result-op\"),e=t.length,n=e-1;\nif(0==n){var o=$(t[0]).parent();$(\"#content_right\").height()+t.height()<$(\"#content_left\").height()&&o.css({position:\"static\"})}else for(;bds.se.heightControl.check()&&n>0;){var i=t[n];$(i).css(\"display\",\"none\"),n--}},init:function(){bds.se.heightControl.cleanEC(),bds.se.heightControl.cleanRes()}},!function(){function t(){this.start=null,this.mouse=[],this.mouseTime=null,this.mouseSpeed=500,this.key=[],this.scroll=[],this.scrollTime=null,this.scrollSpeed=500,this.debug=!1,this.dataStore={},this.t=null,this.cycle=null,this.MIN_SPEED=2e3,this.MAX_SPEED=1e4,this.curSpeed=5e3,this.stayTime=0,this.heartTime=[],this.heartT=null,this.MAX_LEN=2e3,this.storeLen=-1,this.MAX_SEND=100,this.hostEnum={SCLICK:0,NSCLICK:1,SESTAT:2},this.keyMap={new_input:2,new_disp:2,new_view:2,new_user:2,new_heart:2,flow_monitor:2},this.hostAddr=[bds&&bds.comm&&bds.comm.ubsurl?bds.comm.ubsurl+\"?\":\"\",(bds&&bds.util&&bds.util.domain?bds.util.domain.get(\"http://nsclick.baidu.com\"):\"http://nsclick.baidu.com\")+\"/v.gif?\",(bds&&bds.util&&bds.util.domain?bds.util.domain.get(\"http://sestat.baidu.com\"):\"http://sestat.baidu.com\")+\"/wb.gif?\"],this.commLog={},this.isFirst=!0,this.sendNum={},this.init()\n}t.prototype={setCommLog:function(t,e,n){if(!bds||!bds.comm)return!1;if(!(t in this.commLog)){var o={};e&&n?(o.log=e,o.len=n):(o.log=\"&q=\"+bds.comm.queryEnc+\"&qid=\"+bds.comm.qid+\"&rsv_did=\"+bds.comm.did+\"&rsv_tn=\"+bds.comm.tn+\"&rsv_sid=\"+bds.comm.sid,o.len=(o.log+\"&t=\"+(new Date).getTime()).length),this.commLog[t]=o}return!0},fb:function(){var t,e=this.heartTime.length;return t=0===e||1===e?3e3:this.heartTime[e-1]+this.heartTime[e-2],this.heartTime.push(t),t},sendHeart:function(t){var e=0===t?this.stayTime:(new Date).getTime()-this.start,n=bds&&bds.comm&&bds.comm.qid;\nif(n&&n in this.commLog&&n in this.sendNum){var o=[{stay_time:e,send_num:this.sendNum[n]}];this.send({type:t,fm:\"new_heart\",data:o},this.keyMap.new_heart)}},startHeart:function(){var t=this,e=t.fb();t.stayTime+=e,t.heartT=setTimeout(function(){t.sendHeart(0),t.startHeart()},e)},preInit:function(){this.start=(new Date).getTime(),this.mouse=[],null!==this.mouseTime&&clearTimeout(this.mouseTime),this.mouseTime=null,this.key=[],this.scroll=[],null!==this.scrollTime&&clearTimeout(this.scrollTime),this.scrollTime=null,this.cycle=null,null!==this.t&&clearTimeout(this.t),this.t=null,this.storeLen=-1;\nvar t=bds&&bds.comm&&bds.comm.qid?bds.comm.qid:\"\";t&&(this.setCommLog(t),this.sendNum[t]=0),bds&&bds.comm&&(1===bds.comm.logFlagSug||1===bds.comm.globalLogFlag)&&0===bds.comm.ishome&&(null!==this.heartT&&clearTimeout(this.heartT),this.heartT=null,this.stayTime=0,this.heartTime=[],this.startHeart())},collectPoint:function(t,e){function n(t,e){var n=[];if(\"mouse\"===t)n[0]=e.pageX,n[1]=e.pageY;else if(\"scroll\"===t){var o=$(window);n[0]=o.scrollLeft(),n[1]=o.scrollTop()}return n}var o=t+\"Time\",i=this[t+\"Speed\"],r=this;\nif(0===r[t].length){var s=n(t,e);if(s.length<2)return;return void r[t].push([(new Date).getTime()-r.start,s[0],s[1]])}null===r[o]&&(r[o]=setTimeout(function(){var i=n(t,e);return i.length<2?void(r[o]=null):(r[t].push([(new Date).getTime()-r.start,i[0],i[1]]),void(r[o]=null))},i))},singleInit:function(){var t=this;$(\"body\").on(\"mousemove\",function(e){t.collectPoint(\"mouse\",e)}).on(\"keydown\",function(e){t.key.push([(new Date).getTime()-t.start,e.keyCode])}),$(window).on(\"scroll\",function(e){t.collectPoint(\"scroll\",e)\n}),t.singleInit=function(){}},flushData:function(t){null!==this.t&&(clearTimeout(this.t),this.t=null),this.startSend(this.fetchData(t,!0),!0),this.startSend(this.fetchData(t,!0)),bds&&bds.comm&&(1===bds.comm.logFlagSug||1===bds.comm.globalLogFlag)&&(null!==this.heartT&&(clearTimeout(this.heartT),this.heartT=null),this.sendHeart(t))},init:function(){var t=this;t.preInit(),$(window).on(\"swap_begin\",function(){null!==t.t&&(clearTimeout(t.t),t.t=null),bds&&bds.comm&&0===bds.comm.ishome&&(1===bds.comm.logFlag||1===bds.comm.globalLogFlag)&&t.isFirst===!1&&t.sendHeart(1)\n}).on(\"unload\",function(){bds&&bds.comm&&0===bds.comm.ishome&&(1===bds.comm.logFlagSug||1===bds.comm.globalLogFlag)&&t.flushData(2)}).on(\"swap_end\",function(){t.preInit(),t.isFirst===!0&&(t.isFirst=!1),!t.hostAddr[0]&&bds&&bds.comm&&bds.comm.ubsurl&&(t.hostAddr[0]=bds.comm.ubsurl+\"?\")})},getData:function(t,e,n){if(null===this.start||0===t.length)return{startTime:this.start,record:[]};var o={startTime:this.start,record:[]},i=e,r=n;void 0===i?(i=0,r=t[t.length-1][0]):void 0!==i&&\"number\"==typeof i&&void 0===r?(i-=this.start,r=t[t.length-1][0]):void 0!==i&&\"number\"==typeof i&&void 0!==r&&\"number\"==typeof r?(i-=this.start,r-=this.start):(i=0,r=0);\nfor(var s in t)if(!(t[s][0]=r))break;return o},send:function(t,e,n){if(!t)return!1;if(this.debug,0===e&&!this.hostAddr[0]){if(!(bds&&bds.comm&&bds.comm.ubsurl))return!1;this.hostAddr[0]=bds.comm.ubsurl+\"?\"}var o=\"\",i=\"\",r=\"\";if(\"object\"==typeof t){for(var s in t)o=t[s],\"object\"==typeof o&&(o=$.stringify(o)),i+=s+\"=\"+encodeURIComponent(o)+\"&\";i=i.substring(0,i.length-1)}else\"string\"==typeof t&&(i=t);if(!n&&bds&&bds.comm&&bds.comm.qid&&(n=bds.comm.qid),!(n&&n in this.commLog))return!1;\nif(i+=this.commLog[n].log,i+=\"&t=\"+(new Date).getTime(),(\"number\"!=typeof e||0>e||e>=this.hostAddr.length)&&(e=0),r=this.hostAddr[e]+i,r.length>this.MAX_LEN)return!1;var a=window[\"BD_PS_C\"+(new Date).getTime()]=new Image;return a.src=this.hostAddr[e]+i,!0},sendNow:function(t,e,n){if(t&&\"string\"==typeof t&&t in this.keyMap&&e){var o=\"type=3&fm=\"+t+\"&data=\"+encodeURIComponent($.stringify([e]));n&&n.qid&&n.log&&n.len?(this.setCommLog(n.qid,n.log,n),this.send(o,this.keyMap[t],n.qid)):send(o,this.keyMap[t])\n}},pushData:function(t,e,n){var o=bds&&bds.comm&&bds.comm.qid?bds.comm.qid:\"\";if(!o)return!1;n&&n.qid&&n.log&&n.len?(this.setCommLog(n.qid,n.log,n.len),o=n.qid):this.setCommLog(o),o in this.dataStore||(this.dataStore[o]={});var i=this.dataStore[o];t in i||(i[t]=[[],[]]),n&&n.level===!0?i[t][0].push(encodeURIComponent($.stringify(e))):i[t][1].push(encodeURIComponent($.stringify(e)))},fetchData:function(t,e){function n(){for(var e,n=0,o=[],r=!1,d=this.commLog[l].len,m=this.hostAddr[a].length,p=m+(\"type=\"+t+\"&fm=\"+u+\"&data=\").length+d,f=p+6,h=f;0!==i.length&&n=this.MAX_LEN||h>=this.MAX_LEN)&&(o.length>=2&&(o.pop(),r=!0),s.push({qid:l,key:u,type:t,data:\"%5B\"+o.join(\"%2C\")+\"%5D\",host:a}),o=[],r&&(o[0]=e,r=!1),h=o.length>0?p+3+e.length+3:p+6),f=h;\no.length>0&&s.push({qid:l,key:u,type:t,data:\"%5B\"+o.join(\"%2C\")+\"%5D\",host:a})}var o,i,r=this.dataStore,s=[],a=0,c=!1,d=bds&&bds.comm&&bds.comm.qid?bds.comm.qid:\"\";if(!d)return[];for(var l in r){c=l!==d?!0:!1,o=r[l];for(var u in o)u in this.keyMap&&(a=this.keyMap[u],\"number\"==typeof a&&void 0!==this.hostAddr[a]&&(i=o[u][0].length>0?o[u][0]:o[u][1],n.call(this),(c===!0||e!==!0)&&0===i.length&&o[u][1].length>0&&(i=o[u][1],n.call(this)),c===!0&&delete this.dataStore[l]))}return s},startSend:function(t,e){var n,o,i=this,r=e===!0?0:100,s=setInterval(function(){return t.length<=0?void clearInterval(s):(n=t.shift(),void(n&&n.qid&&n.qid in i.commLog&&(o=\"type=\"+n.type+\"&fm=\"+n.key+\"&data=\"+n.data,i.send(o,n.host,n.qid),n.qid in i.sendNum&&(i.sendNum[n.qid]+=1))))\n},r)},startCycle:function(){var t=this;null===t.cycle&&(t.cycle=1),t.t=setTimeout(function(){var e=t.fetchData(0),n=e.length;-1===t.storeLen&&(t.storeLen=n),0!==t.storeLen&&n/t.storeLen>=2&&t.curSpeed>t.MIN_SPEED&&(t.curSpeed-=1e3),(0===n||t.storeLen/n>=2)&&t.curSpeed0&&new bds.util.setFootStyle,bds.comm.feedback=1,bds.comm.feedback?t()?$(document).delegate(\".feedback\",\"click\",function(){var t=this;$.getScript(\"https://ss1.bdstatic.com/5eN1bjq8AAUYm2zgoY3K/r/www/cache/static/protocol/https/plugins/feedback_67607cd.js\",function(){var e=t.getAttribute(\"data-feedbackid\")||1,n={product_id:18,entrance_id:e},o={username:bds.comm.username,query:bds.comm.query,fb_qid:bds.comm.qid};\nbds.qa.ShortCut.initRightBar(n,o)})}):$(\".feedback\").on(\"click\",function(){bds.se.ShortCut.initRightBar()}):$(document).delegate(\".feedback\",\"click\",function(){var t=this;$.getScript(\"https://ss1.bdstatic.com/5eN1bjq8AAUYm2zgoY3K/r/www/cache/static/protocol/https/plugins/feedback_67607cd.js\",function(){var e=t.getAttribute(\"data-feedbackid\")||1,n={product_id:18,entrance_id:e},o={username:bds.comm.username,query:bds.comm.query,fb_qid:bds.comm.qid};bds.qa.ShortCut.initRightBar(n,o)})});var e=$(\"#form\").find('input[type=\"hidden\"][name=rsv_t]');\ne.length?$(e).val(bds.comm.encTn):$(\"#form\").append(''),bds.comm.did=function(){for(var t=\"\",e=0;32>e;e++)t+=Math.floor(16*Math.random()).toString(16);return t}()}),!function(){$(window).one(\"swap_end\",function(){$(\"body\").on(\"mousedown\",\".se_common_hint a\",function(){var t=$(this),e=t.parents(\".se_common_hint\"),n=e.attr(\"data-id\")||\"\",o=e.attr(\"data-tpl\")||\"\",i=e.find(\"a\").index(t);ns_c_pj({hintId:n,hintTpl:o,title:t.html(),pos:i,qid:bds.comm.qid||\"\"},\"pj=hint&\")\n})})}(),$(function(){$(\"#u,#u1\").delegate(\".lb\",\"click\",function(){var t=$(this).attr(\"data-subpro\");t&&bds.se.login.setSubpro(t);try{bds.se.login.open()}catch(e){}})}),$.ajax({dataType:\"script\",cache:!0,url:\"https://ss1.bdstatic.com/5eN1bjq8AAUYm2zgoY3K/r/www/cache/static/protocol/https/home/js/nu_instant_search_08089ad.js\"}),window.PRE_CONN=function(){var t,e=function(t,e){var n=1*new Date;t=bds.util.domain&&bds.util.domain.get?bds.util.domain.get(t):t;var i=/^(http[s]?:\\/\\/)?([^\\/]+)(.*)/,r=t.match(i);if(r[2]&&!o[r[2]]){o.push(r[2]);\nvar s=new Image;s.src=t+\"?_t=\"+(e?e:n),s.onload=s.onerror=function(){s=null}}},n=0,o=[],i=function(){try{window.pageState&&0!=window.pageState&&1!=n||($(\"#kw1,#kw\").one(\"keydown\",function(){\"https:\"===location.protocol?(e(\"https://ss0.baidu.com/6ONWsjip0QIZ8tyhnq/ps_default.gif\"),e(\"https://ss1.baidu.com/6ONWsjip0QIZ8tyhnq/ps_default.gif\"),e(\"https://ss2.baidu.com/6ONWsjip0QIZ8tyhnq/ps_default.gif\"),e(\"https://ss3.baidu.com/6ONWsjip0QIZ8tyhnq/ps_default.gif\")):(e(\"http://b1.bdstatic.com/img/pc.gif\",parseInt(1e3*Math.random())),e(\"http://ecmb.bdimg.com/public03/pc.gif\"),$.each([\"i7\",\"i8\",\"i9\",\"t10\",\"t11\",\"t12\"],function(t,n){e(\"http://\"+n+\".baidu.com/ps_default.gif\")\n}))}),1==n&&$(\"#kw1,#kw\").one(\"focus\",function(){\"https:\"===location.protocol&&e(\"https://www.baidu.com/con?from=self\")}))}catch(t){}},r=function(){n=1,i(),a()},s=function(){a(),t=setTimeout(r,55e3)},a=function(){clearTimeout(t),n=0};return i(),{init:i,startTimer:s}}(),!function(){$.ajaxPrefilter(\"parts\",function(t,e,n){t.__partsCallback=[],t.__partsIndex=0,n.parts=function(e){t.__partsCallback.push(e)},t.parts&&n.parts(t.parts),t.converters[\"* parts\"]=function(t){return t}}),$.ajaxTransport(\"parts\",function(t){if(!t.crossDomain||support.cors){var e;\nreturn{send:function(n,o){var i,r=t.xhr();if(r.open(t.type,t.url,t.async,t.username,t.password),t.xhrFields)for(i in t.xhrFields)r[i]=t.xhrFields[i];t.mimeType&&r.overrideMimeType&&r.overrideMimeType(t.mimeType),t.crossDomain||n[\"X-Requested-With\"]||(n[\"X-Requested-With\"]=\"XMLHttpRequest\");for(i in n)void 0!==n[i]&&r.setRequestHeader(i,n[i]+\"\");r.send(t.hasContent&&t.data||null),e=function(n,i){var s,a,c;if(3!==r.readyState&&4!==r.readyState||i||!function(){var e=t.delimiter,n=\"\";try{n=r.responseText\n}catch(o){}if(\"\"!=n){var i,s,a=-1,c=0;if(e)for(;;){for(;c<=t.__partsIndex&&(i=-1==a?0:a+e.length,a=n.indexOf(e,i),-1!=a);c++);if(-1==a&&4!==r.readyState)return;for(s=0;s.2&&.201>i&&\"http:\"==location.protocol&&(t.url=n,t.headers=o,$.ajax({url:n,headers:o,success:e}))},o=function(e){if(\"string\"==typeof e&&\"object\"==typeof t.headers){if(t.headers.hasOwnProperty(\"content_syni\")&&12495!==e.length)return e;if(t.headers.hasOwnProperty(\"content_syns\")&&19295!==e.length)return e}return\"normal\"},i=function(t){$.ajax({url:\"//www.baidu.com/r/plog\",type:\"post\",data:{page_html:t}})};window.ctwin={sendRequest:n}}();var bds=bds||{};bds.se=bds.se||{},bds.se.speedTester=function(){function t(){}function e(t,e,i){i=i||19558,n(t,function(t){return function(e,n,i){o(t,n,i)\n}}(e),function(t){return function(){o(t)}}(e),i)}function n(e,n,o,i){n=n||t,o=o||t;var r=new Image;r.onload=function(){this.onload=this.onerror=null,i=this.fileSize||i;var t=new Date,e=t-s,o=i/e;n(this,e,o)},r.onerror=function(){this.onload=this.onerror=null,o(this)};var s=new Date;r.src=e}function o(t,e,n){var o=new Image;o.onload=o.onerror=function(){this.onload=this.onerror=null},o.src=t+(e?\"&t=\"+e+\"&v=\"+n:\"&t=-1&v=-1\")+\"&r=\"+Math.random()}return{start:e}}(),bds.se.speedMonitor=function(t){function e(){var t=d.pop();\nt&&n(t),a&&(c=window.setTimeout(e,s))}function n(t){var e=t.url,n=t.size||-1,o=[];o.push(\"id=\"+encodeURIComponent(t.id)),o.push(\"name=\"+encodeURIComponent(t.name)),o.push(\"url=\"+encodeURIComponent(t.url)),o.push(\"size=\"+encodeURIComponent(t.id));for(key in t.logData)o.push(key+\"=\"+encodeURIComponent(t.logData[key]));bds.se.speedTester.start(e,l+\"&\"+o.join(\"&\"),n)}function o(){return!0}var i=t.logPath||\"\",r=t.flag||\"default\",s=t.sleep||\"1000\",a=!1,c=null,d=[],l=i+\"?flag=\"+r;this.start=function(){this.stop(),a=!0,e()\n},this.stop=function(){a=!1,window.clearInterval(c)},this.addTask=function(t){o(t)&&d.push(t)},this.clear=function(){d=[]}},setTimeout(function(){var t=Math.random(),e=\"http://velocity.baidu.com/sp\";if(\"https:\"==location.protocol&&(e=\"https://sp0.baidu.com/6r1_czmhAB63otqbppnN2DJv/sp\"),.01>t){var n=document.createElement(\"script\");n.src=e,document.body.appendChild(n)}},1e3),!function(t){var t=t||{};t.se=t.se||{},t.se.QuickDelete=function(t,e){this.form=t,this.options=e,this._init()},t.se.QuickDelete.prototype={constructor:t.se.QuickDelete,_init:function(){this._create_elem(),this._bind_event()\n},_create_elem:function(){var t=this.form,e=this.options,n=e.top||0,o=e.right||0,i=$.trim(t.val())?\"block\":\"none\",r=\"quickdelete\",s=t.parent(),a=$('
            ').attr(\"id\",r).attr(\"title\",\"清空\").addClass(\"quickdelete\");s.addClass(\"quickdelete-wrap\").append(a),a.css({top:n+\"px\",right:o+\"px\",display:i}),e.wrapElem=s,e.elem=a},_show:function(){0===t.comm.ishome&&this.options.elem.show()},_hide:function(){this.options.elem.hide()},_bind_event:function(){var e=this.form,n=this.options.elem,o=this;\ne.on(\"focus\",function(){$.trim(e.val())?o._show():o._hide()}).on(\"keyup input propertychange\",function(){$.trim(e.val())?o._show():o._hide()}),n.on(\"click\",function(){var n=t.comm.supportis?2:0;return ns_c({input_clear:t.comm.ishome+n,delete_query:encodeURIComponent(e.val())}),e.val(\"\").focus(),o._hide(),!1}),$(window).on(\"swap_end index_off\",function(){$.trim(e.val())?o._show():o._hide()})}},new t.se.QuickDelete($(\"#kw\"),{top:0,right:0})}(bds),window.bds&&bds.comm&&bds.comm.ishome&&$(window).on(\"load\",function(){if(window.ctwin&&window.ctwin.sendRequest(\"//www.baidu.com/?tn=baidu\",{content_syni:1}),window.performance&&performance.timing){var t=function(){var t=n(\"navigation\"),e=n(\"domainLookup\"),o=n(\"connect\"),i=n(\"secureConnection\"),r=(n(\"redirect\"),n(\"request\")),s=n(\"responses\"),a={start:performance.timing.domLoading,end:performance.timing.domComplete},c=n(\"loadEvent\");\nreturn{navigation:o.start-t.start,dns:e.value,tcp:o.value,ssl:i.start>0?o.end-i.start:0,request:s.start-r.start,responses:s.value,dom:a.end-a.start,loadEvent:c.end-t.start}},e=Cookie.get(\"__bsi\"),n=function(t){var e=performance.timing,n=e[t+\"Start\"]?e[t+\"Start\"]:0,o=e[t+\"End\"]?e[t+\"End\"]:0;return{start:n,end:o,value:o-n>0?o-n:0}},o=function(){var n=[],o=t();for(var i in o)n.push(i+\"=\"+o[i]);n.push(\"protocol=\"+encodeURIComponent(location.protocol));var r=\"//www.baidu.com/nocache/fesplg/s.gif?log_type=hm&type=timing&\",s=\"\";\ns+=n.join(\"&\"),s+=\"&newindex=\"+(window.bds&&bds.comm?bds.comm.newindex:-1),e&&(s+=\"&bsi=\"+e);var a=r+s,c=new Image,d=\"_LOG_\"+(new Date).getTime();c.onload=function(){delete window[d]},window[d]=c,c.src=a},i=Math.random();/8498/.test(bds.comm.indexSid)&&.01>i&&setTimeout(o,500)}}),$(window).on(\"swap_end\",function(){bds.comm.search_tool&&(bds.comm.search_tool.init=!1)}),$(window).on(\"swap_begin\",function(){$(document).off(\"click.searchTool\")});var langfilterTip,timefilterTip,fileTypeTip,insideSearchTip;\n$(document).delegate(\".head_nums_cont_outer\",\"mousedown\",function(){if(\"undefined\"!=typeof bds.comm.search_tool){if(bds.comm.search_tool.init)return;bds.comm.search_tool.init=!0;var t=$(this),e=t.find(\".search_tool\").eq(0),n=t.find(\".search_tool_close\").eq(0),o=t.find(\".head_nums_cont_inner\").eq(0);e.on(\"click\",function(){o.animate({top:0},250),ns_c({fm:\"advTool\",qid:bds.comm.qid,title:encodeURI(\"搜索工具\"),rsv_advTool:0})}),n.on(\"click\",function(){o.animate({top:-42},250,function(){\"en\"==bds.comm.search_tool.sl_lang||bds.comm.search_tool.st||bds.comm.search_tool.et||bds.comm.search_tool.si||bds.comm.search_tool.ft||bds.comm.search_tool.exact?(ns_c({fm:\"advTool\",qid:bds.comm.qid,title:encodeURI(\"清除\"),rsv_advTool:2}),baseChangeUrl(\"wd=\"+encodeURIComponent($(\"#kw\").val().replace(/(filetype:[^\\s]* )|(site:[^\\s]*)/g,\"\").replace(/^\\\"+(.+)\\\"+$/,\"$1\"))+\"&sl_lang=cn&rsv_srlang=cn&rsv_rq=cn&ct=0&si=&tfflag=0&gpc=\"+encodeURIComponent(\"stf=\")),$(\"input[name='gpc'],input[name='si'],input[name='ct']\",\"form\").val(\"\")):ns_c({fm:\"advTool\",qid:bds.comm.qid,title:encodeURI(\"收起工具\"),rsv_advTool:1})\n})});var i=t.find(\".search_tool_la\").eq(0);if(i.length>0){var r=\"
              \";\"en\"==bds.comm.search_tool.sl_lang?(r+=\"
            • 所有网页
            • \",r+=\"
            • 英文网页
            • \"):\"cn\"==bds.comm.search_tool.sl_lang&&(r+=\"
            • 所有网页
            • \",r+=\"
            • 英文网页
            • \"),r+=\"
            \",langfilterTip=new bds.se.tip({target:i,mode:\"none\",content:$(r),arrow:{has:0,offset:0},offset:{x:15,y:21}}),langfilterTip.hide()\n}var s=t.find(\".search_tool_tf\").eq(0);if(s.length>0){var a=\"
              \";a+=bds.comm.search_tool.st||bds.comm.search_tool.et?\"
            • 时间不限
            • \":\"
            • 时间不限
            • \",a+=bds.comm.search_tool.st>=bds.comm.search_tool.thisDay&&\"1\"==bds.comm.search_tool.stftype?\"
            • 一天内
            • \":\"
            • 一天内
            • \",a+=bds.comm.search_tool.st>=bds.comm.search_tool.thisWeek&&bds.comm.search_tool.st一周内\":\"
            • 一周内
            • \",a+=bds.comm.search_tool.st>=bds.comm.search_tool.thisMonth&&bds.comm.search_tool.st一月内\":\"
            • 一月内
            • \",a+=bds.comm.search_tool.st>=bds.comm.search_tool.thisYear&&bds.comm.search_tool.st一年内\":\"
            • 一年内
            • \",a+=\"
            • \",a+=\"
              自定义\",a+=\"

              \":\"value='\"+formatDate(1e3*bds.comm.serverTime,\"-\")+\"' data-value='' class='c-tip-custom-input c-tip-custom-input-init'/>

              \",a+=\"

              \":\"value='\"+formatDate(1e3*bds.comm.serverTime,\"-\")+\"' data-value='' class='c-tip-custom-input c-tip-custom-input-init'/>

              \",a+=\"
              自定义时间错误!
              \",a+=\"确认\",a+=\"
            \",timefilterTip=new bds.se.tip({target:s,mode:\"none\",content:$(a),arrow:{has:0,offset:0},offset:{x:15,y:21},onShow:function(){$(this.getTarget()).width()>95&&$(\"ul\",this.getDom()).width($(this.getTarget()).width()+20),$(\".c-tip-custom-input\").on(\"click\",function(t){var e=this,n=null,o=new Date,i=$(e).parents(\".c-tip-custom\"),r=i.find(\"input[name='st']\"),s=i.find(\"input[name='et']\");\n$(e).attr(\"data-value\")&&o.setTime($(e).attr(\"data-value\")),$(e).parents(\".c-tip-custom\").find(\".c-tip-custom-input\").removeClass(\"c-tip-custom-input-focus\"),$(e).addClass(\"c-tip-custom-input-focus\"),0==$(\"#c-tip-custom-calenderCont\").length&&$(e).parents(\".c-tip-custom\").append(\"
            \"),$(\"#c-tip-custom-calenderCont\").html(\"\");var a={element:\"c-tip-custom-calenderCont\",date:formatDate(o),between:[$(e).attr(\"date-min\")-0,$(e).attr(\"date-max\")-0],onSelectDay:function(t){if(t+=\"\",\"st\"==e.name){var n=new Date(t.substr(0,4),t.substr(4,2)-1,t.substr(6,2),0,0,0);\ns.attr(\"date-min\",t)}else{var n=new Date(t.substr(0,4),t.substr(4,2)-1,t.substr(6,2),23,59,59);r.attr(\"date-max\",t)}$(e).val(formatDate(n,\"-\")),$(e).attr(\"data-value\",n.getTime()),$(\"#c-tip-custom-calenderCont\").hide(),$(e).removeClass(\"c-tip-custom-input-focus\").removeClass(\"c-tip-custom-input-init\")}};\"undefined\"==typeof WCal?$.getScript(\"https://ss1.bdstatic.com/5eN1bjq8AAUYm2zgoY3K/r/www/cache/static/protocol/https/plugins/new_wcal_3426010.js\",function(){n=new WCal(a),o&&n.setDay(formatDate(o),function(t){t.className+=\" op_mon_day_selected\"\n})}):(n=new WCal(a),o&&n.setDay(formatDate(o),function(t){t.className+=\" op_mon_day_selected\"})),$(\"#c-tip-custom-calenderCont\").css({top:$(this).position().top-2,left:$(this).position().left+$(this).width()+15,display:\"block\"}),t.stopPropagation()}),$(\".c-tip-custom-input\").on(\"focus\",function(){$(this).removeClass(\"c-tip-custom-input-init\")}),$(\".c-tip-custom-input\").on(\"blur\",function(){function t(t){var e,n=/^\\s*(\\d{4})-(\\d\\d)-(\\d\\d)\\s*$/,o=new Date(0/0),i=n.exec(t);return i&&(e=+i[2],o.setFullYear(i[1],e-1,i[3]),e!=o.getMonth()+1&&o.setTime(0/0)),o\n}var e=this,n=t($(e).val());n instanceof Date&&n.getTime()?($(e).attr(\"data-value\",n.getTime()),$(\".c-tip-timerfilter-custom-error\").hide()):\"\"==$(e).val()?($(e).attr(\"data-value\",\"0\"),$(\".c-tip-timerfilter-custom-error\").hide()):($(e).attr(\"data-value\",\"\"),$(\".c-tip-timerfilter-custom-error\").show())});try{$(\".c-tip-custom-submit\").off(\"click.searchTool\").on(\"click.searchTool\",function(t){var e=this,n=$(e).parents(\".c-tip-custom\"),o=parseInt($(\".c-tip-custom-input\",n)[0].getAttribute(\"data-value\")/1e3),i=parseInt($(\".c-tip-custom-input\",n)[1].getAttribute(\"data-value\")/1e3);\nreturn $(\"#c-tip-custom-calenderCont\").hide(),\"\"!=o&&o||(o=0),\"\"!=i&&i||!o||\"\"==o||(i=parseInt((new Date).setHours(23,59,58)/1e3)),i>bds.comm.serverTime&&(0>=o?(o=\"\",i=\"\"):i=parseInt((new Date).setHours(23,59,58)/1e3)),o>i||o>bds.comm.serverTime?($(\".c-tip-timerfilter-custom-error\").show(),void t.stopPropagation()):(0==o&&0==i&&(o=\"\",i=\"\"),$(\".c-tip-timerfilter-custom-error\").hide(),void advChangeUrl(\"gpc\",\"stf=\"+o+\",\"+i+\"|stftype=2\",\"自定义时间:\"+o+\"|\"+i,5))})}catch(t){}}}),timefilterTip.hide()}var c=t.find(\".search_tool_ft\").eq(0);\nif(c.length>0){var d=\"
            \";\nvar l=new bds.se.tip({target:c,mode:\"none\",content:$(d),arrow:{has:0,offset:0},offset:{x:15,y:21}});l.hide()}var u=t.find(\".search_tool_si\").eq(0);u.length>0&&(insideSearchTip=new bds.se.tip({target:u,mode:\"none\",content:$(\"
            • 确认
            • 无法识别,正确格式:baidu.com

            \"),arrow:{has:0,offset:0},offset:{x:15,y:21},onShow:function(){$(\".c-tip-si-input\").on(\"focus\",function(){$(this).addClass(\"c-tip-si-input-focus\")\n}),$(\".c-tip-si-input\").on(\"blur\",function(){$(this).removeClass(\"c-tip-si-input-focus\")});try{$(\".c-tip-timerfilter-si-submit\").off(\"click.searchTool\").on(\"click.searchTool\",function(t){var e=this,n=$(e).parents(\".c-tip-timerfilter-si\"),o=$(\"input\",n).val(),i=queryReplace(\"site\");if(\"\"==o)ns_c({fm:\"advTool\",qid:bds.comm.qid,title:encodeURI(\"站内检索:\"+o),rsv_advTool_si:encodeURI(o)}),baseChangeUrl(\"wd=\"+encodeURIComponent(i)+\"&si=&ct=0\");else{if(!o.match(/^[\\w\\-_]+(\\.[\\w\\-_]+)+$/))return $(\".c-tip-timerfilter-si-error\").show(),t.stopPropagation(),t.preventDefault(),!1;\n$(\".c-tip-timerfilter-si-error\").hide(),ns_c({fm:\"advTool\",qid:bds.comm.qid,title:encodeURI(\"站内检索:\"+o),rsv_advTool_si:encodeURI(o)}),baseChangeUrl(\"wd=\"+encodeURIComponent(i)+\"&si=\"+encodeURIComponent(o)+\"&ct=2097152\")}})}catch(t){}}}),insideSearchTip.hide());var m=!0;i.on(\"click\",function(t){m?(langfilterTip&&langfilterTip.show(),m=!1,timefilterTip&&timefilterTip.hide(),p=!0,l&&l.hide(),f=!0,insideSearchTip&&insideSearchTip.hide(),h=!0,ns_c({fm:\"advTool\",qid:bds.comm.qid,title:encodeURI(\"语言筛选浮层展现\"),rsv_advTool_tip:1}),$(document).on(\"click.searchTool\",function(t){0==$(t.target).parents(\".c-tip-langfilter\").length&&langfilterTip&&(langfilterTip.hide(),m=!0,$(document).off(\"click.searchTool\"))\n})):(langfilterTip&&langfilterTip.hide(),m=!0,$(document).off(\"click.searchTool\")),t.stopPropagation()});var p=!0;s.on(\"click\",function(t){p?(langfilterTip&&langfilterTip.hide(),m=!0,timefilterTip&&timefilterTip.show(),p=!1,l&&l.hide(),f=!0,insideSearchTip&&insideSearchTip.hide(),h=!0,ns_c({fm:\"advTool\",qid:bds.comm.qid,title:encodeURI(\"时间筛选浮层展现\"),rsv_advTool_tip:0}),$(document).on(\"click.searchTool\",function(t){0==$(t.target).parents(\".c-tips-container,#c-tip-custom-calenderCont\").length&&timefilterTip&&(timefilterTip.hide(),$(\"#c-tip-custom-calenderCont\").hide(),timefilterTip.getDom().find(\".c-tip-custom-input-focus\").removeClass(\"c-tip-custom-input-focus\"),p=!0,$(document).off(\"click.searchTool\"))\n})):(timefilterTip&&timefilterTip.hide(),p=!0,$(document).off(\"click.searchTool\")),t.stopPropagation()});var f=!0;c.on(\"click\",function(t){f?(langfilterTip&&langfilterTip.hide(),m=!0,timefilterTip&&timefilterTip.hide(),p=!0,l&&l.show(),f=!1,insideSearchTip&&insideSearchTip.hide(),h=!0,ns_c({fm:\"advTool\",qid:bds.comm.qid,title:encodeURI(\"网页格式浮层展现\"),rsv_advTool_tip:2}),$(document).on(\"click.searchTool\",function(t){0==$(t.target).parents(\".c-tip-timerfilter-ft\").length&&l&&(l.hide(),f=!0,$(document).off(\"click.searchTool\"))\n})):(l&&l.hide(),f=!0,$(document).off(\"click.searchTool\")),t.stopPropagation()});var h=!0;u.on(\"click\",function(t){h?(langfilterTip&&langfilterTip.hide(),m=!0,timefilterTip&&timefilterTip.hide(),p=!0,l&&l.hide(),f=!0,insideSearchTip&&insideSearchTip.show(),h=!1,ns_c({fm:\"advTool\",qid:bds.comm.qid,title:encodeURI(\"站内搜索浮层展现\"),rsv_advTool_tip:3}),$(document).on(\"click.searchTool\",function(t){0==$(t.target).parents(\".c-tip-timerfilter-si\").length&&insideSearchTip&&(insideSearchTip.hide(),h=!0,$(document).off(\"click.searchTool\"))\n})):(insideSearchTip&&insideSearchTip.hide(),h=!0,$(document).off(\"click.searchTool\")),t.stopPropagation()})}}),!function(){function t(){function t(t,e){var n={top:e.offset().top,left:e.offset().left},o={width:e.width(),height:e.height()},i=function(){var t=e.attr(\"data-click\");if(t)try{return $.parseJSON(t)}catch(n){}}()||{},r=t+(i.p5||\"\");return{id:r,pos:n,size:o,dataClick:i,dom:e}}var e={},n={},o=$(\"#wrapper\");return e.topResult=o.find(\"#con-at\").find(\".result-op\"),e.rightResult=o.find(\"#con-ar\").find(\".result-op\"),e.leftResult=o.find(\"#content_left\").find(\".result, .result-op\"),e.topResult.length&&(n.T=[],e.topResult.each(function(){n.T.push(t(\"T\",$(this)))\n})),e.rightResult.length&&(n.R=[],e.rightResult.each(function(){n.R.push(t(\"R\",$(this)))})),e.leftResult.length&&(n.L=[],e.leftResult.each(function(){n.L.push(t(\"L\",$(this)))})),n}bds.se.skeleton=function(){var e;return function(){return e||(e=t(),$(window).one(\"swap_begin\",function(){e=null})),e}}()}(),!function(){$(window).on(\"swap_end\",function(){var t=function(){var t=[],e=bds.se.skeleton(),n=e.L;return n?($.each(n,function(e,n){var o={};o.dom=n.dom,o.id=n.id,o.itime=0,o.time=0,t.push(o)}),t):null\n};bds.comm.orderplay=t()})}(),!function(){function t(){var t=this;t.display={},t.expand={},t.dom={},t.init()}bds.se.display=function(){new t},t.prototype={init:function(){var t=this;t.dom=bds.se.skeleton();var e=$(\"#wrapper\");t.dom.rsResult=e.find(\"#rs a\"),t.dom.hintResult=e.find(\".se_common_hint\"),t.rs=t.dom.rsResult.length||0,t.hint=t.dom.hintResult.length||0,t.display.base=t.getBase(),t.dom.L&&t.getResult(t.dom.L),t.dom.R&&t.getResult(t.dom.R),t.dom.T&&t.getResult(t.dom.T),t.rs&&(t.display.rs=t.getRS()),t.hint&&(t.display.hint=t.getHint()),t.send()\n},send:function(){var t=this;for(var e in t.display){var n={};n[e]=t.display[e],bds.log.send.sendPack(\"new_disp\",n)}for(var o in t.expand)if(o&&t.expand[o])for(var i in t.expand[o])if(i&&t.expand[o][i]&&t.expand[o][i].length)for(var r=t.expand[o][i],s=0;so;o++){var r=n[o].id,s=e.getResultDisplay(n[o]);e.expand[r]=s.expand,delete s.expand,e.display[r]=s\n}},getResultDisplay:function(t){function e(){var e=t.size;return{w:e.width||0,h:e.height||0}}function n(){var e=t.pos;return{t:e.top||0,l:e.left||0}}function o(){return d.rsv_bdr&&0!=d.rsv_bdr?d.rsv_bdr:c.hasClass(\".c-border\")||c.find(\".c-border\").length?5:0}function i(){function t(t){var e;return t&&(e=c.find(t)),e&&e.length?!0:!1}var e={};return t(\".favurl\")&&(e.fi=1),t(\".c-text-public.c-text-mult\")&&(e.gwi=1),t(\".icon-unsafe-icon\")&&(e.fxi=1),t(\".c-icon-v\")&&(e.vi=1),t(\".c-icon-med\")&&(e.yjji=1),t(\".c-icon-air\")&&(e.hxi=1),t(\".c-recommend\")&&(e.cr=1),e\n}function r(){var t=c.find(\"a\").not(\":hidden\").not(\"h3 a, .m\"),e=[],n=/^((https?:)?\\/\\/)?([\\da-z\\.-]+)\\.([a-z\\.]{2,6})([\\/\\w \\.-]*)*(:\\d+)*(\\/.*)*/,o=/^(\\/s\\?)/;return t.each(function(){var t=this.getAttribute(\"href\");if(t&&n.test(t)){var i=t&&t.match(/.*\\/link\\?url=([^&]*).*/);e.push(i&&i.length&&i.length>0&&i[1]?i[1]:t)}else t&&o.test(t)&&e.push(t)}),e.length?e:!1}function s(){var t=[],e=c.find(\"img\").not(\":hidden\").not(\"[data-nolog]\");return e.length?(e.each(function(){var e={w:this.width,h:this.height};\nt.push({size:e})}),t):!1}function a(){var t=[],e=c.find(\"object, video, audio\");return e.length?(e.each(function(){var e=$(this),n={};n.type=e.is(\"object\")&&e.attr(\"type\")&&e.attr(\"type\").indexOf(\"flash\")>=0?1:e.is(\"video\")?2:e.is(\"audio\")?3:0,n.size={w:e.width(),h:e.height()},t.push(n)}),t):!1}var c=t.dom,d=t.dataClick,l={};if(l.id=d.p5||\"\",l.srcid=d.rsv_srcid||c.attr(\"srcid\")||0,l.tpl=c.attr(\"tpl\")||\"\",l.mu=d.mu||c.attr(\"mu\")||\"\",l.fm=d.fm||\"as\",c.is(\":hidden\")&&(l.show=0),0==l.show)return l;l.size=e(),l.pos=n(),o()&&(l.bdr=o()),l.com=i();\nvar u=r(),m=s(),p=a();return(u||m||p)&&(l.expand={},u&&(l.link=u.length,l.expand.links=u),m&&(l.img=m.length,l.expand.imgs=m),p&&(l.app=p.length,l.expand.apps=p)),l}}}(),!function(){function t(){this.pageElementsList=[],this.scrollTime=null,this.scrollChange=!1,this.resizeTime=null,this.resizeChange=!1,this.scrollTop=$(document).scrollTop(),this.scrollLeft=$(document).scrollLeft(),this.windowHeight=$(window).height(),this.windowWidth=$(window).width()}t.prototype={init:function(){var t=bds.se.skeleton(),e=this;\n$.each([\"L\",\"R\",\"T\"],function(n,o){t[o]&&($.merge(e.pageElementsList,e.getDom(t[o])),e.bindEvent(t[o]))})},getDom:function(t){var e=[];return $.each(t,function(t,n){var o={};o.top=n.pos.top,o.height=n.size.height,o.id=n.id,o.visible=0,e.push(o)}),e},sendLog:function(t,e){bds.comm.globalLogFlag&&1==bds.comm.globalLogFlag&&bds.log.send.sendPack(t,e)},bindEvent:function(t){var e=this;$.each(t,function(t,n){var o=200,i=!1,r=null;n.dom.bind(\"mouseenter.useraction\",function(){null!==r&&clearTimeout(r),r=setTimeout(function(){e.sendLog(\"new_view\",{type:\"mouseIn\",id:n.id,t:(new Date).getTime()}),i=!0,r=null\n},o)}).bind(\"mouseleave.useraction\",function(){null!==r&&(clearTimeout(r),r=null),i&&(e.sendLog(\"new_view\",{type:\"mouseOut\",id:n.id,t:(new Date).getTime()}),i=!1)})})},destroy:function(){$(window).unbind(\".useraction\"),this.pageElementsList.splice(0,this.pageElementsList.length)},sight:function(){var t=this;$.each(this.pageElementsList,function(e,n){var o=t.scrollTopn.top;if(1!==n.visible||o){if(0===n.visible&&o){if(t.sendLog(\"new_view\",{type:\"sight\",resid:n.id,action:\"in\",t:(new Date).getTime()}),bds.comm.orderplay&&bds.comm.orderplay.length&&\"L\"==n.id.substr(0,1)&&bds.comm.pageSize){var i=(parseInt(n.id.substr(1))-1)%bds.comm.pageSize,r=bds.comm.orderplay[i];\nr&&!r.itime&&(r.itime=(new Date).getTime())}n.visible=1}}else{if(t.sendLog(\"new_view\",{type:\"sight\",resid:n.id,action:\"out\",t:(new Date).getTime()}),bds.comm.orderplay&&bds.comm.orderplay.length&&\"L\"==n.id.substr(0,1)&&bds.comm.pageSize){var i=(parseInt(n.id.substr(1))-1)%bds.comm.pageSize,r=bds.comm.orderplay[i];r&&(r.time+=(new Date).getTime()-r.itime,r.itime=(new Date).getTime())}n.visible=0}})},collectPoint:function(t){function e(){r[o]=setTimeout(function(){r.sendLog(\"new_view\",n(t)),r[i]=!1,r.sight(),r[i]?e():r[o]=null\n},1e3)}function n(t){if(\"resize\"===t){var e=$(window);return r.windowHeight=e.height(),r.windowWidth=e.width(),{type:\"resize\",t:(new Date).getTime(),height:r.windowHeight,width:r.windowWidth}}if(\"scroll\"===t){var n=$(document);return r.scrollTop=n.scrollTop(),r.scrollLeft=n.scrollLeft(),{type:\"scroll\",t:(new Date).getTime(),offsetX:r.scrollTop,offsetY:r.scrollLeft}}}var o=t+\"Time\",i=t+\"Change\",r=this;null===r[o]&&e()},collect:function(){this.init();var t=this;null!==this.resizeTime&&clearTimeout(this.resizeTime),this.resizeTime=null,null!==this.scrollTime&&clearTimeout(this.scrollTime),this.scrollTime=null,$(window).bind(\"focus.useraction\",function(){t.sendLog(\"new_view\",{type:\"focus\",t:(new Date).getTime()})\n}).bind(\"blur.useraction\",function(){t.sendLog(\"new_view\",{type:\"blur\",t:(new Date).getTime()})}).bind(\"resize.useraction\",function(e){t.resizeChange=!0,t.collectPoint(\"resize\",e)}).bind(\"scroll.useraction\",function(e){t.scrollChange=!0,t.collectPoint(\"scroll\",e)}),this.sight()},outInterface:function(){var t=this;return{collect:function(){t.collect()},destroy:function(){t.destroy()}}}},bds.se.userAction=(new t).outInterface()}(),bds.comm.recommends={},bds.comm.recommends.recommWidth=0,bds.se.recommend=function(t){var e=this;\ne.op=$.extend({},e._default,t),e.id=e.op.target.attr(\"id\"),e.init()},bds.se.recommend.prototype={constructor:bds.se.recommend,__init__:!1,currInstance:null,recommDom:null,arrowDom:null,cssDom:null,loadDom:null,global:{},_default:{target:\"\",arrowOffset_s:-54,arrowOffset_l:-151,container_s:276,container_l:368,startOpacity:.3,endOpacity:1},init:function(){var t=this;t.currInstance&&t.currInstance.id==t.id||(t.delay={overIcon:null,loader:null,overArrow:null},t.doWhat(function(){t.__init__||(bds.se.recommend.prototype.__init__=!0,t.createRecommDom()),t.createArrowDom(),t.delay.overArrow=setTimeout(function(){var e=t.op.arrowDom.find(\".rrecom-btn\");\n\"none\"==e.css(\"display\")&&e.show(),t.moveArrow(function(){e.addClass(\"rrecom-btn-hover\"),t.showRecommDom()})},100)}))},dispose:function(){bds.se.recommend.prototype.currInstance=null,bds.se.recommend.prototype.recommDom&&bds.se.recommend.prototype.recommDom.remove(),bds.se.recommend.prototype.cssDom&&bds.se.recommend.prototype.cssDom.remove(),bds.comm.recommends={},bds.se.recommend.prototype.__init__=!1,$(window).off(\"resize.recommend container_resize.recommend scroll.recommend\")},createArrowDom:function(){var t=this,e=t.op.target.find(\".rrecom-btn-parent\");\nif(e.length)t.op.arrowDom=e;else{var n=['','',\"\",\"\",\"\"].join(\"\");t.op.arrowDom=$(n),t.op.arrowDom.on(\"click\",\".rrecom-btn\",function(){t.hideRecommDom()}),t.op.target.css({position:\"relative\"}).append(t.op.arrowDom)}},resetArrow:function(){var t=this;t.op.arrowDom.css({right:t.op.arrowOffset_s}).removeClass(\"rrecom-btn-click rrecom-btn-moving\").find(\".rrecom-btn\").stop().hide().removeClass(\"rrecom-btn-hover\")\n},setArrowPos:function(){var t=this;t.currInstance&&(\"l\"===bds.comm.containerSize?t.currInstance.op.arrowDom.css(\"right\",t.op.arrowOffset_l):t.currInstance.op.arrowDom.css(\"right\",t.op.arrowOffset_s))},moveArrow:function(t){var e=this,n={opacity:e.op.endOpacity};n.right=\"l\"===bds.comm.containerSize?e.op.arrowOffset_l:e.op.arrowOffset_s,e.op.arrowDom.stop().addClass(\"rrecom-btn-moving rrecom-btn-click\").animate(n,0,function(){e.currInstance&&e.currInstance!==e&&e.currInstance.resetArrow(),t()})},log:function(t){var e={},n=this.op.target.attr(\"data-click\"),o=this.op.target.attr(\"srcid\"),i=this.op.target.attr(\"tpl\"),r=this.op.target.attr(\"mu\");\nif(o&&(e.rsv_srcid=o),i&&(e.rsv_tpl=i),r&&(e.mu=r),n&&$.extend(e,$.parseJSON(n)),e.p1&&!e.p5&&(e.p5=e.p1),e.p5&&!e.p1&&(e.p1=e.p5),!e.p1&&!e.p5)for(var s=$(\"#content_left\").get(0),a=s.children,d=1,l=0,u=a.length;u>l;l++)if(1==a[l].nodeType&&a[l].className&&/\\bresult(\\-op)?\\b/.test(a[l].className)){if(a[l]===this.op.target.get(0)){e.p1=d,e.p5=d;break}d++}e.fm=\"beha\";var m=this.op.target.find(\".t>a\").eq(0);return e.rsv_re_fcurl=m.length?m.attr(\"href\"):r,e.rsv_re_fcurl=e.rsv_re_fcurl||\"\",e.rsv_re_fcurl=encodeURIComponent(e.rsv_re_fcurl),c($.extend(e,t))\n},getLeftP:function(){var t=this.op.target.attr(\"data-click\");return t=$.parseJSON(t)||{},t.p1&&!t.p5&&(t.p5=t.p1),t.p5&&!t.p1&&(t.p1=t.p5),t.p5||t.p1||(t.p1=1,t.p5=1),{p1:t.p1,p5:t.p5}},s_log:function(){this.log({rsv_re_fc:2})},setCacheData:function(t){bds.comm.recommends[this.id]=t},getCacheData:function(){return bds.comm.recommends[this.id]},doWhat:function(t){var e=this.getCacheData();\"[NO DATA]\"!==e&&(e?t():this.getRemoteData(t))},getJsonp:function(t){var e=this.op.target.find(\".t>a\").eq(0),n=(e.length?e.attr(\"href\"):this.op.target.attr(\"mu\"))||\"\",o=n&&n.match(/.*url=([^&]*).*/),i=bds.comm.query;\nif(o&&o.length&&o.length>0&&o[1]){n=o[1];var r=\"http://lcr.open.baidu.com/link?url=\"+encodeURIComponent(n)+\"&query=\"+encodeURIComponent(i),s=window.bds&&bds.util&&bds.util.domain&&bds.util.domain.get(r);return $.ajax({url:s,dataType:\"jsonp\",jsonp:\"cb\",data:{data_name:t,ie:\"utf-8\",oe:\"utf-8\",format:\"json\",t:Date.parse(new Date)}})}},getRemoteData:function(t){var e=this,n=\"recommend_common_merger_online\";$.when(this.getJsonp(n)).then(function(n){n&&n.data&&n.data.length&&n.data[0]?(n.data[0].hintData&&e.asynClkRcmd(n.data[0].hintData),(n.data[0].extData||n.data[0].tplData)&&(e.setCacheData(n.data),t())):e.setCacheData(\"[NO DATA]\")\n},function(){})},asynClkRcmd:function(t){var e=this,t=t[0]||{},n=$(\"#wrapper_wrapper\");if(t&&t.linkInfo){var o=e.op.target.find(\".c-recommend\"),i=o.find(\"a\"),r=t.tip||\"为您推荐:\";if(t.defaultHide,i&&i.length&&(i.remove(),o.append(e.buildRcmdDom(t))),!o||!o.length){var s=$('
            '+r+\"
            \");n.find(\".c-recommend\").hide(),s.append(e.buildRcmdDom(t)),e.op.target.append(s)}}},buildRcmdDom:function(t){for(var e=this,n=\"\",o=t.linkInfo,i=0,r=o.length;r>i;i++){var s=o[i].txt,a=o[i].wd,c=o[i].sa,d=\"c-gap-left-large\";\n0==i&&(d=\"\");var l=\"wd=\"+a+\"&rsv_crq=\"+c+\"&bs=\"+bds.comm.query,u=e.buildURL(l);n+=\"\"+s+\"\"}return n},buildURL:function(t){var e=\"/s?\",n={tn:bds.comm.tn},o=$(\"#form\"),i=o.find(\"input[name=rsv_idx]\"),r=\"\";n.rsv_idx=i.length?i.val():\"\";for(var s in n)n.hasOwnProperty(s)&&n[s]&&(r+=s+\"=\"+encodeURIComponent(n[s])+\"&\");return e+r+t},renderTpl:function(t,e){var n=this;if(t&&e){var o={};return o.right_recommends_merge=function(t){function o(e,o){var i,r='
            #{1}
            ',s='
            ',a='
            ',c=\"
            \",d=\"\",l=(e.showrow,e.shownums),u={rsv_srcid:t.StdStg||0};\ne.list&&!e.list.length&&(e.list=[e.list]),d+=$.format(r,e.subtitle,e.subtitle,$.stringify(u)),d+='
            ';for(var m=n.op.target.find(\".t>a\").eq(0),p=m.length?m.attr(\"href\"):n.op.target.attr(\"mu\"),f=0,h=e.list.length;h>f;f++){i=e.list[f];var g={rsv_re_ename:i.name,rsv_re_uri:i.uri,rsv_re_fcpoi:o+\"-\"+(f+1),rsv_clk_url:p},b=n.buildURL(i.params+\"&euri=\"+(i.uri||\"\"));if(f==l)break;f%4===0&&(d+=s),bds.util&&bds.util.domain&&bds.util.domain.get&&(i.img=bds.util.domain.get(i.img)),d+=$.format(a,b,i.img,i.name,b,$.subByte(i.name,20),(f+1)%4===0?\" c-span-last rrecom-item-rowLast\":(f+1)%4===3?\" rrecom-item-s\":\"\",$.stringify(g),i.attrpic),d+=c,((f+1)%4===0||f==h-1)&&(d+=c)\n}return d+=c,d+=c}var t=t||e,i=\"\",r=12,s=0;t.card&&!t.card.length&&(t.card=[t.card]);for(var a=0,c=t.card.length;c>a;a++){var d=t.card[a];if(s+=parseInt(d.shownums||0),s>r)break;i+=o(d,a+1)}return i},o[t]?o[t]():void 0}},render:function(t){for(var e=\"\",n=0;n','
            ','
            ','','
            ',\"
            \",\"
            \"].join(\"\"),e=\"https://ss1.bdstatic.com/5eN1bjq8AAUYm2zgoY3K/r/www/cache/static/protocol/https/global/img/rrecom_icon_e34d796.png\",n=[\"\"].join(\"\");\nbds.se.recommend.prototype.recommDom=$(t),bds.se.recommend.prototype.cssDom=$(n),bds.se.recommend.prototype.loadDom=this.recommDom.find(\".rrecom-ajax-loading\"),this.setRecommSize(),$(\"body\").append(this.cssDom).append(this.recommDom.hide()),this.bindRecommEvent(),$(window).trigger(\"container_resize.recommend\",bds.comm.containerSize);var o=$(\"#foot\");\"static\"===o.css(\"position\")&&o.css({position:\"relative\",\"z-index\":104})},setRecommSize:function(){var t=$(\"#content_right\"),e=$(\"#wrapper_wrapper\"),n=$(\"body\"),o=$(window),i=t.offset(),r={w:n.width()},s={h:o.height()},a=o.scrollTop();\ne.prevAll().each(function(){var t;return\"div\"===this.nodeName.toLowerCase()?(t=parseInt($(this).css(\"margin-bottom\")),bds.se.recommend.prototype.global.topGap=isNaN(t)?0:t,!1):void 0}),bds.se.recommend.prototype.global.topDom=e,bds.se.recommend.prototype.global.headDom=$(\"#head\");var c={top:this.global.topDom.offset().top-this.global.topGap},d=this.global.headDom.offset().top-a+56;this.recommDom.height(s.h),bds.comm.recommends.recommWidth=r.w-i.left-2,this.recommDom.css({width:r.w-i.left-2,top:a<=c.top-d?c.top:d,position:a<=c.top-d?\"absolute\":\"fixed\",left:i.left})\n},setRecommPosition:function(){this.setRecommTop(),this.setRecommLeft()},setRecommTop:function(){var t=$(window).scrollTop(),e={top:this.global.topDom.offset().top-this.global.topGap},n=this.global.headDom.offset().top-t+56;this.recommDom.css({top:t<=e.top-n?e.top:n,position:t<=e.top-n?\"absolute\":\"fixed\"}).find(\".rrecom-container\").css({\"margin-top\":\"0px\"}),bds.se.recommend.prototype.global.originalTop=t0?t.recommDom.find(\".rrecom-content\").css(\"width\",t.op.container_s-17+\"px\"):t.recommDom.find(\".rrecom-content\").css(\"width\",t.op.container_l-17+\"px\"),bds.se.recommend.prototype.currInstance=t,t.render(t.getCacheData())\n},showLoading:function(){this.loadDom.show()},hideLoading:function(){this.loadDom.hide()}},$(window).one(\"swap_end\",function(){bds.comm.upn.ie&&6==bds.comm.upn.ie||$(document).on(\"click\",\"#content_left .result .t>a, #content_left .result-op .t>a, .op-se-listen-recommend\",function(t){if(!t.ctrlKey&&\"0\"==bds.comm.urlRecFlag){var e=$(this).closest(\".result, .result-op\");new bds.se.recommend({target:e})}})}),$(window).on(\"swap_begin\",function(){bds.se.recommend.prototype.currInstance&&bds.se.recommend.prototype.hideRecommDom(),bds.se.recommend.prototype.currInstance=null,bds.se.recommend.prototype.__init__=!1,bds.comm.recommends={}\n}),bds.se.asynAds=function(t){var e=t.dom||\"\",n=t.id||\"\",o=t.tnp||\"\",i=t.wd||\"\",r=t.cb&&\"function\"==typeof t.cb?t.cb:null;if(e&&o&&i&&n){c({fm:\"inlo\",rsv_ad:\"ad_asyn_start\"});for(var s=[\"wd\",\"tnp\",\"tn\",\"pn\",\"bs\",\"fenlei\",\"adext\"],a=\"ie=utf-8&oe=utf-8&dsp=pc\",d=0;de.time?-1:t.time\"+o.css+\"\",i+=o.html,i+=\"\"}}),o.html(i),$(document).scrollTop()o.position().top&&c({fm:\"inlo\",rsv_ad:\"ad_asyn_shake\"}),r&&r()}else c({fm:\"inlo\",rsv_ad:\"ad_asyn_net_error\"})},error:function(){c({fm:\"inlo\",rsv_ad:\"ad_asyn_net_error\"})}})}else c({fm:\"inlo\",rsv_ad:\"ad_asyn_param_error\"})\n},!function(){function t(){c=Math.random()}function e(){d=1e3*(new Date).getTime()+Math.round(1e3*Math.random())-149e13,c>=.005&&.0051>c&&(o(),i(),r(),s())}function n(){var t=Math.round(1e3*Math.random())%u.length,e=new Image,n=new Image,o=u[t];e.onload=function(){n.src=\"//www.baidu.com/nocache/fesplg/s.gif?lid=\"+d+\"&url=\"+encodeURIComponent(o)+\"&time=\"+((new Date).getTime()-i)+\"&suc=1&type=aboard&dev=pc&protocol=\"+encodeURIComponent(location.protocol)+\"&ran=\"+(new Date).getTime()},e.onerror=function(){n.src=\"//www.baidu.com/nocache/fesplg/s.gif?lid=\"+d+\"&url=\"+encodeURIComponent(o)+\"&time=&suc=0&type=aboard&dev=pc&protocol=\"+encodeURIComponent(location.protocol)+\"&ran=\"+(new Date).getTime()\n};var i=(new Date).getTime();e.src=o+\"?ran=\"+(new Date).getTime()}function o(){var t=new Image;t.onload=function(){a(\"cndtestsuc\")},t.onerror=function(){a(\"cndtesterr\")},t.src=\"//ss0.bdstatic.com/5bd1bjqh_Q23odCf/static/wiseindex/img/w_icon2.png?ran\"}function i(){var t=new Image;t.onload=function(){a(\"cndgsstestsuc\")},t.onerror=function(){a(\"cndgsstesterr\")},t.src=\"//gss0.bdstatic.com/5bd1bjqh_Q23odCf/static/wiseindex/img/w_icon2.png?ran\"}function r(){var t=new Image;t.onload=function(){a(\"cndidctestsuc\")\n},t.onerror=function(){a(\"cndidctesterr\")},t.src=\"//m.baidu.com/logo.gif\"}function s(){var t=new Image;t.onload=function(){a(\"cndss0bdtestsuc\")},t.onerror=function(){a(\"cndss0bdtesterr\")},t.src=\"//ss0.baidu.com/5bd1bjqh_Q23odCf/static/wiseindex/img/w_icon2.png?ran\"}function a(t,e){if(t){e=e||{},e.st=t,e.fm=\"inlo\";var n=\"&terminal=pc\";for(var o in e)n+=\"&\"+o+\"=\"+e[o];var i=new Image;i.src=bds.util.domain.get(l+n)}}var c,d=\"\",l=\"http://sestat.baidu.com/cm.gif?type=cdnmonitor\",u=[\"https://sptidchk.baidu.com/s.gif\",\"https://sptidcsfo.baidu.com/s.gif\",\"https://sptidcjp.baidu.com/s.gif\",\"https://sptidcsin.baidu.com/s.gif\"];\nlocation.protocol.indexOf(\"https\")>-1&&$(window).on(\"swap_dom_ready\",function(){t()}).on(\"swap_end\",function(){e()}),\"70\"==bds.comm.bfe_sample&&$(window).on(\"swap_end\",function(){d=1e3*(new Date).getTime()+Math.round(1e3*Math.random())-149e13,n()})}(),!function(){var t,e,n=bds&&bds.util&&bds.util.domain&&bds.util.domain.get(\"http://sensearch.baidu.com/sensearch/selecttext\");$(window).one(\"swap_end\",function(){bds.comm.upn&&bds.comm.upn.ie&&6==bds.comm.upn.ie||$(document).on(\"mousedown\",function(n){t&&0==$(n.target).closest(t.getDom()).length&&(t.getDom().hide(),e&&e.abort())\n}).on(\"mouseup\",function(o){var i,r,s,a,c;if(!t||!$(o.target).closest(t.getDom()).length)try{setTimeout(function(){if(window.getSelection){if(i=window.getSelection(),0==i.rangeCount)return;r=i.getRangeAt(0),s=r.getBoundingClientRect(),a=$.trim(i.toString()),c=$(\"#text\"==r.commonAncestorContainer.nodeName?r.commonAncestorContainer.parentNode:r.commonAncestorContainer)}else document.selection&&(i=document.selection.createRange(),r=i,s=r.getBoundingClientRect(),a=$.trim(i.text.toString()),c=$(r.parentElement()));\nif(a&&a.length>1&&c.closest(\"#content_left .result .c-abstract,#content_left .result .t\").length){e&&e.abort();var o=/[^(\\u4E00-\\u9FA5)]+/i;if(!o.test(a))return;e=$.ajax({url:n,dataType:\"jsonp\",jsonp:\"cb\",timeout:5e3,data:{q:a},success:function(e){var n=\"\";if(e&&e.data&&e.data.type&&e.data.to&&\"zh\"==e.data.to&&e.data.result&&e.data.result.length&&e.data.result!=a)if(1==e.data.type)for(var o=e.data.result,i=0,r=Math.min(o.length,2);r>i;i++)n+=(0==i?\"\":\"
            \")+(o[i].pre?o[i].pre+\" \":\"\"),n+=o[i].cont?$.subByte(o[i].cont,46*(1==r?2:1)+1):\"\";\nelse 2==e.data.type&&(n='译:'+e.data.result);if(n){t=t||new bds.se.tip({target:$(\"body\"),mode:\"none\",content:'
            ',align:\"left\",arrow:{has:1,offset:10}});var c=t.getDom();c.find(\".translateContent\").html('

            '+n+\"

            \"),c.css({top:s.bottom+$(window).scrollTop()+8,left:(s.left+s.right)/2+$(window).scrollLeft()-20}).show(),ns_c({rsv_trans_type:\"showresult\",rsv_trans_st:encodeURIComponent(a),rsv_qid:bds.comm.qid||\"\"})\n}}})}},0)}catch(o){}})}),$(window).on(\"swap_begin\",function(){t=null,e&&e.abort()})}(),!function(){function t(t){return t=i(t),t.attr(\"id\")||t.attr(\"data-click\")&&$.parseJSON(t.attr(\"data-click\")).rsv_srcid||t.attr(\"class\")||\"-1\"}function e(t){var e=i(t),n=e.clone();n.unbind(),n.children(\".fb-list-container\").remove(),n.children(\".fb-list-container-first\").remove(),n.children(\".fb-hint-tip\").remove(),n.removeAttr(\"style\"),n.css(\"margin\",\"0\"),t.append(n),t.append(\"
            \"),t.addClass(\"fb-list-container-hover\")\n}function n(t){t.empty(),t.removeClass(\"fb-list-container-hover\")}function o(){$(\".fb-hint-tip\").remove(),$(\".fb-list-container-first\").remove(),bds.se.ShortCut.ldialog&&bds.se.ShortCut.ldialog.destory(),bds.se.ShortCut.rdialog&&bds.se.ShortCut.rdialog.destory(),bds.se.ShortCut.ldialog=0,bds.se.ShortCut.rdialog=0,$(\".fb-mask\").remove(),$(\".fb-list-container\").remove()}function i(t){return t.closest(t.closest(\"#rs\").length?\"#rs\":t.closest(\"#con-ar\").length?\".result-op\":\"#content_left > div\")}function r(){var t=$(\"#content_left > div\");\nt.append(\"
            \"),$(\"#content_left > div\").css(\"overflow\",\"visible\"),$(\".leftBlock .fb-list-container\").remove(),$(\".hit_top_new .fb-list-container\").remove(),t.each(function(){$(this).find(\".fb-list-container\").css(\"width\",$(this).width()+20),$(this).find(\".fb-list-container\").css(\"height\",$(this).height()+10)}),$(\".c-container\").first().append(\"
            \"),$(\".c-container\").first().find(\".fb-list-container-first\").css(\"width\",$(\".c-container\").first().width()+20),$(\".c-container\").first().find(\".fb-list-container-first\").css(\"height\",$(\".c-container\").first().height()+10),$(\".c-container\").first().append('
            鼠标点击,可对单条结果进行反馈
            ');\nvar e=$(\"#rs\");e.append(\"
            \"),e.find(\".fb-list-container\").css(\"width\",e.width()+20),e.find(\".fb-list-container\").css(\"height\",e.height()+10);var n=$(\"#con-ar .result-op\");n.append(\"
            \"),n.each(function(){$(this).find(\".fb-list-container\").css(\"width\",$(this).width()+20),$(this).find(\".fb-list-container\").css(\"height\",$(this).height()+10)})}function s(t){var e=\"\";e=e+'',e=e+'
            '+t[0].value+'
            ';\nfor(var n=0;n\"+t[n].value+\"
            \";return e+=\"
            \"}function a(t,e){this.init=function(){var n=new Date;return this.title=t,this.query=decodeURIComponent(bds.comm.query),this.srcid=e&&e.attr(\"srcid\")||\"-1\",this.tpl=e&&e.attr(\"tpl\")||\"\",this.url=window.location.href||\"\",this.time=n.getFullYear()+\"/\"+(n.getMonth()+1)+\"/\"+n.getDate()+\" \"+n.getHours()+\":\"+n.getMinutes()+\":\"+n.getSeconds(),this.username=bds.comm.username||\"\",this.order=e&&e.attr(\"id\")||\"\",this.entry=\"1\",this.build(),this.bindEvent(),this.render(),this\n},this.build=function(){var t=\"\",e=[{key:\"27468\",value:\"申请删除提示词\"},{key:\"27464\",value:\"内容或图片陈旧\"},{key:\"27465\",value:\"变形、错乱、乱码等问题\"},{key:\"27469\",value:\"页面结果与搜索词无关\"},{key:\"27467\",value:\"其他问题及建议\"}],n=s(e),o='
            ',i=\"\",r=\"\";bds.se.ShortCut.uploadImg&&(i='
            包含屏幕截图
            ',r='
            ');\nvar a='
            ';t='
            ×

            搜索结果反馈

            '+n+o+i+r+a+'
            请填写描述反馈
            请留下您的联系方式
            邮箱格式不正确
            提交反馈
            ×

            非常感谢

            提交成功
            感谢您的宝贵意见
            ';\nvar c=document.createElement(\"div\");c.id=\"fb_baidu_right_dialog\",c.className=\"fb-feedback-right-dialog\",c.className=\"fb-feedback-right-dialog\",c.setAttribute(\"data-html2canvas-ignore\",\"true\"),c.innerHTML=t,this.dom=c},this.bindEvent=function(){var t=this;$(this.dom).find(\".fb-close\").on(\"click\",function(){o()}),$(this.dom).find(\"#fb_right_post_save\").on(\"click\",function(){$(t.dom).find(\".fb-textarea textarea\").val()?-1==[27468].indexOf(Number($(t.dom).find(\".fb-select-value\").val()))||$(t.dom).find(\".fb-email\").val()?$(t.dom).find(\".fb-email\").val()&&!/^(\\w)+(\\.\\w+)*@(\\w)+((\\.\\w{2,3}){1,3})$/.test($(t.dom).find(\".fb-email\").val())?($(t.dom).find(\".fb-hint-error-email\").css(\"display\",\"block\"),setTimeout(function(){$(t.dom).find(\".fb-hint-error-email\").css(\"opacity\",\"1\"),setTimeout(function(){$(t.dom).find(\".fb-hint-error-email\").removeAttr(\"style\")\n},1500)},50)):t.post():($(t.dom).find(\".fb-hint-no-email\").css(\"display\",\"block\"),setTimeout(function(){$(t.dom).find(\".fb-hint-no-email\").css(\"opacity\",\"1\"),setTimeout(function(){$(t.dom).find(\".fb-hint-no-email\").removeAttr(\"style\")},1500)},50)):($(t.dom).find(\".fb-hint-no-content\").css(\"display\",\"block\"),setTimeout(function(){$(t.dom).find(\".fb-hint-no-content\").css(\"opacity\",\"1\"),setTimeout(function(){$(t.dom).find(\".fb-hint-no-content\").removeAttr(\"style\")},1500)},50))}),$(this.dom).find(\".fb-cut-input\").on(\"click\",function(){$(t.dom).find(\".fb-cut-input\").hasClass(\"c-icon\")?($(t.dom).find(\".fb-cut-input\").removeClass(\"c-icon\"),$(t.dom).find(\".fb-cut-input\").removeClass(\"c-icon-success\"),$(t.dom).find(\".fb-canvas-block\").css(\"display\",\"none\")):($(t.dom).find(\".fb-cut-input\").addClass(\"c-icon\"),$(t.dom).find(\".fb-cut-input\").addClass(\"c-icon-success\"),$(t.dom).find(\".fb-canvas-block\").css(\"display\",\"block\"))\n}),$(this.dom).find(\".fb-type-selected\").on(\"click\",function(){\"block\"==$(t.dom).find(\".fb-type-container\").css(\"display\")?$(t.dom).find(\".fb-type-container\").hide():$(t.dom).find(\".fb-type-container\").show()}),$(this.dom).find(\".fb-type-item\").on(\"click\",function(e){$(t.dom).find(\".fb-type-container\").hide(),$(t.dom).find(\".fb-type-selected\").html($(e.currentTarget).text()+\"
            \"),$(t.dom).find(\".fb-select-value\").val($(e.currentTarget).attr(\"value\"))}),$(this.dom).find(\".fb-des-content\").on(\"click\",function(){$(\".c-container\").first().children(\".fb-hint-tip\").remove(),$(\".c-container\").first().children(\".fb-list-container-first\").remove()\n})},this.render=function(){$(\"body\").append(this.dom)},this.grayed=function(t){t?$(this.dom).css(\"visibility\",\"hidden\"):$(this.dom).removeAttr(\"style\")},this.destory=function(){$(this.dom).remove(),$(document).off(\"scroll.feedback\")},this.post=function(){this.content=$(this.dom).find(\".fb-des-content\").val(),this.type=$(this.dom).find(\".fb-select-value\").val(),this.email=$(this.dom).find(\".fb-email\").val(),data={product_type:26138,content:this.content,type:this.type,img_base64:bds.se.ShortCut.img_base64,email:this.email,query:this.query,srcid:this.srcid,tpl:this.tpl,url:this.url,time:this.time,username:this.username,order:this.order,entry:this.entry,platform:\"pc\"},bds.se.ShortCut.uploadImg?$.post(bds.se.ShortCut.domain,data).success(function(t){\"Success\"==jQuery.parseJSON(t).status||alert(decodeURIComponent(jQuery.parseJSON(t).errors))\n}).error(function(){alert(\"fail\")}):$.ajax({url:bds.se.ShortCut.domain,dataType:\"jsonp\",data:data,jsonp:\"cb1\"}).success(function(t){\"Success\"==t.status||alert(decodeURIComponent(jQuery.parseJSON(t).errors))}).error(function(){alert(\"fail\")}),$(this.dom).find(\".fb-modal \").remove(),$(this.dom).find(\".fb-mask\").remove(),$(this.dom).find(\".fb-success\").css(\"display\",\"block\"),setTimeout(function(){o()},1e3)},this.init()}function c(t,e){this.init=function(){var e=new Date;if(this.query=decodeURIComponent(bds.comm.query),this.srcid=t&&t.attr(\"srcid\")||\"-1\",this.tpl=t&&t.attr(\"tpl\")||\"\",this.url=window.location.href||\"\",this.time=e.getFullYear()+\"/\"+(e.getMonth()+1)+\"/\"+e.getDate()+\" \"+e.getHours()+\":\"+e.getMinutes()+\":\"+e.getSeconds(),this.username=bds.comm.username||\"\",t)if(t.closest(\"#con-ar\").length){this.order=\"con-ar\";\nvar n=[{key:\"27468\",value:\"申请删除提示词\"},{key:\"27464\",value:\"内容或图片陈旧\"},{key:\"27465\",value:\"变形、错乱、乱码等问题\"},{key:\"27469\",value:\"页面结果与搜索词无关\"},{key:\"27467\",value:\"其他问题及建议\"}];this.content_tips_div=s(n)}else if(t.attr(\"id\")&&\"rs\"==t.attr(\"id\")){this.order=\"rs\";var n=[{key:\"27468\",value:\"申请删除提示词\"}];this.content_tips_div=s(n)}else if(t.attr(\"tpl\")&&\"se_com_default\"!=t.attr(\"tpl\")){this.order=t.attr(\"id\")||\"-1\";var n=[{key:\"27464\",value:\"内容或图片陈旧\"},{key:\"27465\",value:\"变形、错乱、乱码等问题\"},{key:\"27466\",value:\"这条结果与搜索词无关\"},{key:\"27467\",value:\"其他问题及建议\"}];\nthis.content_tips_div=s(n)}else if(t.attr(\"tpl\")){this.order=t.attr(\"id\")||\"-1\";var n=[{key:\"27463\",value:\"申请删除或更新这条信息\"},{key:\"27464\",value:\"内容或图片陈旧\"},{key:\"27465\",value:\"变形、错乱、乱码等问题\"},{key:\"27466\",value:\"这条结果与搜索词无关\"},{key:\"27467\",value:\"其他问题及建议\"}];this.content_tips_div=s(n)}else{this.order=\"ec\";var n=[{key:\"27470\",value:\"推广信息侵权\"},{key:\"27471\",value:\"推广信息质量差\"},{key:\"27472\",value:\"推广信息与搜索词无关\"},{key:\"27473\",value:\"其他问题及产品建议\"}];this.content_tips_div=s(n)}return this.entry=\"2\",this.top=t.offset().top-4,this.left=t.closest(\"#content_right\").length?t.offset().left-390-23:t.offset().left+t.width()+30,this.build(),this.bindEvent(),this.render(),this\n},this.build=function(){var t=\"\",e='
            ',n='
            ';t='
            ×

            单条结果反馈

            '+this.content_tips_div+e+n+'
            请填写描述反馈
            请留下您的联系方式
            邮箱格式不正确
            提交反馈
            ×

            非常感谢

            提交成功
            感谢您的宝贵意见
            ';\nvar o=document.createElement(\"div\");o.id=\"fb_baidu_list_dialog\",o.className=\"fb-feedback-list-dialog\",o.setAttribute(\"data-html2canvas-ignore\",\"true\"),o.innerHTML=t,this.dom=o,$(this.dom).css(\"top\",this.top),$(this.dom).css(\"left\",this.left),\"con-ar\"==this.order&&$(this.dom).attr(\"class\",\"fb-feedback-list-dialog-left\")},this.bindEvent=function(){var t=this;$(this.dom).find(\".fb-close\").on(\"click\",function(){t.destory(),n($(\".fb-list-container\")),bds.se.ShortCut.key=0,bds.se.ShortCut.rdialog&&bds.se.ShortCut.rdialog.grayed(0),bds.se.ShortCut.rdialog||o()\n}),$(this.dom).find(\"#fb_list_post_save\").on(\"click\",function(){$(t.dom).find(\".fb-textarea textarea\").val()?-1==[27468,27463].indexOf(Number($(t.dom).find(\".fb-select-value\").val()))||$(t.dom).find(\".fb-email\").val()?$(t.dom).find(\".fb-email\").val()&&!/^(\\w)+(\\.\\w+)*@(\\w)+((\\.\\w{2,3}){1,3})$/.test($(t.dom).find(\".fb-email\").val())?($(t.dom).find(\".fb-hint-error-email\").css(\"display\",\"block\"),setTimeout(function(){$(t.dom).find(\".fb-hint-error-email\").css(\"opacity\",\"1\"),setTimeout(function(){$(t.dom).find(\".fb-hint-error-email\").removeAttr(\"style\")\n},1500)},50)):t.post():($(t.dom).find(\".fb-hint-no-email\").css(\"display\",\"block\"),setTimeout(function(){$(t.dom).find(\".fb-hint-no-email\").css(\"opacity\",\"1\"),setTimeout(function(){$(t.dom).find(\".fb-hint-no-email\").removeAttr(\"style\")},1500)},50)):($(t.dom).find(\".fb-hint-no-content\").css(\"display\",\"block\"),setTimeout(function(){$(t.dom).find(\".fb-hint-no-content\").css(\"opacity\",\"1\"),setTimeout(function(){$(t.dom).find(\".fb-hint-no-content\").removeAttr(\"style\")},1500)},50))}),$(this.dom).find(\".fb-type-selected\").on(\"click\",function(){\"block\"==$(t.dom).find(\".fb-type-container\").css(\"display\")?$(t.dom).find(\".fb-type-container\").hide():$(t.dom).find(\".fb-type-container\").show()\n}),$(this.dom).find(\".fb-type-item\").on(\"click\",function(e){$(t.dom).find(\".fb-type-container\").hide(),$(t.dom).find(\".fb-type-selected\").html($(e.currentTarget).text()+\"
            \"),$(t.dom).find(\".fb-select-value\").val($(e.currentTarget).attr(\"value\"))})},this.render=function(){$(\"body\").append(this.dom)},this.destory=function(){$(this.dom).remove()},this.post=function(){var t=this;this.content=$(this.dom).find(\".fb-des-content\").val(),this.type=$(this.dom).find(\".fb-select-value\").val(),this.email=$(this.dom).find(\".fb-email\").val(),bds.se.ShortCut.get_Snapshot_list(-bds.se.ShortCut.curListDom.offset().left,-bds.se.ShortCut.curListDom.offset().top,bds.se.ShortCut.curListDom.width()+20,bds.se.ShortCut.curListDom.height()+12,function(){data={product_type:26138,content:t.content,type:t.type,img_base64:bds.se.ShortCut.img_base64_list,email:t.email,query:t.query,srcid:t.srcid,tpl:t.tpl,url:t.url,time:t.time,username:t.username,order:t.order,entry:t.entry,platform:\"pc\"},e&&(data.ala=1),bds.se.ShortCut.uploadImg?$.post(bds.se.ShortCut.domain,data).success(function(t){\"Success\"==jQuery.parseJSON(t).status||alert(decodeURIComponent(jQuery.parseJSON(t).errors))\n}).error(function(){alert(\"fail\")}):$.ajax({url:bds.se.ShortCut.domain,dataType:\"jsonp\",data:data,jsonp:\"cb1\"}).success(function(t){\"Success\"==t.status||alert(decodeURIComponent(t.errors))}).error(function(){alert(\"fail\")})}),$(this.dom).find(\".fb-modal \").remove(),$(this.dom).find(\".fb-mask\").remove(),$(this.dom).find(\".fb-success\").css(\"display\",\"block\"),setTimeout(function(){o()},1e3)},this.init()}bds&&bds.se&&(bds.se.ShortCut={base_url_path:\"http://f3.baidu.com\",up_file:!1,is_feedbacking:!1,product_id:0,entrance_id:0,send_img:!1,img_data:\"\",onlyUpFile:!1,pro_data:\"\",scrollTop:0,ldiaInf:{},rdiaInf:{},canvas_block_height:0,key:0,domain:bds.util.domain.get(\"api.open.baidu.com\")+\"/pae/common/api/feedback\",img_base64:\"\",img_base64_list:\"\",initRightBar:function(){this.html2canvas(),this._getCss(),this._identifyCanvas()&&this._identifyCors()?(bds.se.ShortCut.uploadImg=!0,this.get_Snapshot()):bds.se.ShortCut.uploadImg=!1\n},_getCss:function(){bds.util.addStyle(\"#content_left > div,#rs,#con-ar .result-op{position: relative;}\")},_identifyCanvas:function(){try{var t=document.createElement(\"canvas\").getContext(\"2d\");return t=null,!0}catch(e){return!1}},_identifyCors:function(){var t=new XMLHttpRequest;return\"withCredentials\"in t},init_ala:function(t){this.html2canvas(),bds.se.ShortCut.uploadImg=this._identifyCanvas()&&this._identifyCors()?!0:!1,$(\"#container\").append(\"
            \"),t.append(\"
            \"),t.find(\".fb-list-container\").css(\"width\",t.width()+20),t.find(\".fb-list-container\").css(\"height\",t.height()+10),e(t.find(\".fb-list-container\")),bds.se.ShortCut.ldialog=new c(t,1),bds.se.ShortCut.curListDom=t.find(\".fb-list-container\"),$(\".fb-mask\").on(\"click\",function(){o(),bds.se.ShortCut.ldialog&&bds.se.ShortCut.ldialog.destory()\n})},init_shade:function(){$(\"#container\").append(\"
            \"),r(),$(\".fb-list-container\").hover(function(t){i($(t.currentTarget)),$(t.currentTarget).children().length||e($(t.currentTarget))},function(e){t($(e.currentTarget))!=bds.se.ShortCut.key&&n($(e.currentTarget))}),$(\".fb-list-container\").on(\"click\",function(o){$(\".c-container\").first().children(\".fb-hint-tip\").remove(),$(\".c-container\").first().children(\".fb-list-container-first\").remove(),bds.se.ShortCut.ldialog&&bds.se.ShortCut.ldialog.destory(),n($(\".fb-list-container\")),t($(o.currentTarget))==bds.se.ShortCut.key?(bds.se.ShortCut.key=0,bds.se.ShortCut.rdialog&&bds.se.ShortCut.rdialog.grayed(0)):(bds.se.ShortCut.key=t($(o.currentTarget)),bds.se.ShortCut.curListDom=$(o.currentTarget),bds.se.ShortCut.ldialog=new c(i($(o.currentTarget))),bds.se.ShortCut.rdialog&&bds.se.ShortCut.rdialog.grayed(1),e($(o.currentTarget)))\n}),$(\".fb-mask\").on(\"click\",function(){bds.se.ShortCut.ldialog&&bds.se.ShortCut.ldialog.destory(),bds.se.ShortCut.key=0,bds.se.ShortCut.rdialog&&bds.se.ShortCut.rdialog.grayed(0),n($(\".fb-list-container\"))})},get_Snapshot:function(){$(window).scrollTop(0);var t=this;bds.se.ShortCut.rdialog=new a,t.init_shade(),$(\".fb-canvas-block\").addClass(\"c-loading\"),html2canvas(document.body,{proxy:bds.util.domain.get(\"f3.baidu.com\")+\"/getProxyImage.php\",onrendered:function(e){$(\".fb-canvas-block\").removeClass(\"c-loading\");\nvar n=document.createElement(\"canvas\");n.width=e.width,n.height=$(\"body\").height();var o=n.getContext(\"2d\");o.drawImage(e,0,0),bds.se.ShortCut.img_base64=n.toDataURL(\"image/png\"),$(\".fb-canvas-block img\").attr(\"src\",n.toDataURL(\"image/png\")),setTimeout(function(){t.canvas_block_height=$(\".fb-canvas-block img\").height()},50),$(document).on(\"scroll.feedback\",function(){var e=$(window).scrollTop(),n=$(document).height(),o=$(window).height();scrollPercent=e/(n-o),$(\".fb-canvas-block img\").css(\"top\",-(t.canvas_block_height-172)*scrollPercent)\n})}})},get_Snapshot_list:function(t,e,n,o,i){html2canvas(document.body,{proxy:bds.util.domain.get(\"f3.baidu.com\")+\"/getProxyImage.php\",onrendered:function(r){var s=document.createElement(\"canvas\");s.width=n,s.height=o;var a=s.getContext(\"2d\");a.drawImage(r,t,e),bds.se.ShortCut.img_base64_list=s.toDataURL(\"image/png\"),i()}})},html2canvas:function(){!function(t,e,n){\"use strict\";function o(e){d.logging&&t.console&&t.console.log&&t.console.log(e)}function i(t,e,n,o,i,r){var s,a,c,l,u=d.Util.getCSS(e,t,i);\nif(1===u.length&&(l=u[0],u=[],u[0]=l,u[1]=l),-1!==u[0].toString().indexOf(\"%\"))c=parseFloat(u[0])/100,a=n.width*c,\"backgroundSize\"!==t&&(a-=(r||o).width*c);else if(\"backgroundSize\"===t)if(\"auto\"===u[0])a=o.width;else if(u[0].match(/contain|cover/)){var m=d.Util.resizeBounds(o.width,o.height,n.width,n.height,u[0]);a=m.width,s=m.height}else a=parseInt(u[0],10);else a=parseInt(u[0],10);return\"auto\"===u[1]?s=a/o.width*o.height:-1!==u[1].toString().indexOf(\"%\")?(c=parseFloat(u[1])/100,s=n.height*c,\"backgroundSize\"!==t&&(s-=(r||o).height*c)):s=parseInt(u[1],10),[a,s]\n}function r(t,e){var n=[];return{storage:n,width:t,height:e,clip:function(){n.push({type:\"function\",name:\"clip\",arguments:arguments})},translate:function(){n.push({type:\"function\",name:\"translate\",arguments:arguments})},fill:function(){n.push({type:\"function\",name:\"fill\",arguments:arguments})},save:function(){n.push({type:\"function\",name:\"save\",arguments:arguments})},restore:function(){n.push({type:\"function\",name:\"restore\",arguments:arguments})},fillRect:function(){n.push({type:\"function\",name:\"fillRect\",arguments:arguments})\n},createPattern:function(){n.push({type:\"function\",name:\"createPattern\",arguments:arguments})},drawShape:function(){var t=[];return n.push({type:\"function\",name:\"drawShape\",arguments:t}),{moveTo:function(){t.push({name:\"moveTo\",arguments:arguments})},lineTo:function(){t.push({name:\"lineTo\",arguments:arguments})},arcTo:function(){t.push({name:\"arcTo\",arguments:arguments})},bezierCurveTo:function(){t.push({name:\"bezierCurveTo\",arguments:arguments})},quadraticCurveTo:function(){t.push({name:\"quadraticCurveTo\",arguments:arguments})\n}}},drawImage:function(){n.push({type:\"function\",name:\"drawImage\",arguments:arguments})},fillText:function(){n.push({type:\"function\",name:\"fillText\",arguments:arguments})},setVariable:function(t,e){n.push({type:\"variable\",name:t,arguments:e})}}}function s(t){return{zindex:t,children:[]}}var a,c,d={};d.Util={},d.Util.trimText=function(t){return function(e){return t?t.apply(e):((e||\"\")+\"\").replace(/^\\s+|\\s+$/g,\"\")}}(String.prototype.trim),d.Util.parseBackgroundImage=function(t){var e,n,o,i,r,s,a,c,d=\" \\r\\n\t\",l=[],u=0,m=0,p=function(){e&&('\"'===n.substr(0,1)&&(n=n.substr(1,n.length-2)),n&&c.push(n),\"-\"===e.substr(0,1)&&(i=e.indexOf(\"-\",1)+1)>0&&(o=e.substr(0,i),e=e.substr(i)),l.push({prefix:o,method:e.toLowerCase(),value:r,args:c})),c=[],e=o=n=r=\"\"\n};p();for(var f=0,h=t.length;h>f;f++)if(s=t[f],!(0===u&&d.indexOf(s)>-1)){switch(s){case'\"':a?a===s&&(a=null):a=s;break;case\"(\":if(a)break;if(0===u){u=1,r+=s;continue}m++;break;case\")\":if(a)break;if(1===u){if(0===m){u=0,r+=s,p();continue}m--}break;case\",\":if(a)break;if(0===u){p();continue}if(1===u&&0===m&&!e.match(/^url$/i)){c.push(n),n=\"\",r+=s;continue}}r+=s,0===u?e+=s:n+=s}return p(),l},d.Util.Bounds=function(t){var e,n={};return t.getBoundingClientRect?(e=t.getBoundingClientRect(),n.top=e.top,n.bottom=e.bottom||e.top+e.height,n.left=e.left,n.width=e.width||e.right-e.left,n.height=e.height||e.bottom-e.top,n):void 0\n},d.Util.getCSS=function(t,o,i){function r(e,n){var o,i=t.runtimeStyle&&t.runtimeStyle[e],r=t.style;return!/^-?[0-9]+\\.?[0-9]*(?:px)?$/i.test(n)&&/^-?\\d/.test(n)&&(o=r.left,i&&(t.runtimeStyle.left=t.currentStyle.left),r.left=\"fontSize\"===e?\"1em\":n||0,n=r.pixelLeft+\"px\",r.left=o,i&&(t.runtimeStyle.left=i)),/^(thin|medium|thick)$/i.test(n)?n:Math.round(parseFloat(n))+\"px\"}var s,l=o.match(/^background(Size|Position)$/);if(a!==t&&(c=e.defaultView.getComputedStyle(t,null)),s=c[o],l){if(s=(s||\"\").split(\",\"),s=s[i||0]||s[0]||\"auto\",s=d.Util.trimText(s).split(\" \"),\"backgroundSize\"!==o||s[0]&&!s[0].match(/cover|contain|auto/)){if(s[0]=-1===s[0].indexOf(\"%\")?r(o+\"X\",s[0]):s[0],s[1]===n){if(\"backgroundSize\"===o)return s[1]=\"auto\",s;\ns[1]=s[0]}s[1]=-1===s[1].indexOf(\"%\")?r(o+\"Y\",s[1]):s[1]}}else if(/border(Top|Bottom)(Left|Right)Radius/.test(o)){var u=s.split(\" \");u.length<=1&&(u[1]=u[0]),u[0]=parseInt(u[0],10),u[1]=parseInt(u[1],10),s=u}return s},d.Util.resizeBounds=function(t,e,n,o,i){var r,s,a=n/o,c=t/e;return i&&\"auto\"!==i?c>a^\"contain\"===i?(s=o,r=o*c):(r=n,s=n/c):(r=n,s=o),{width:r,height:s}},d.Util.BackgroundPosition=function(t,e,n,o,r){var s=i(\"backgroundPosition\",t,e,n,o,r);return{left:s[0],top:s[1]}},d.Util.BackgroundSize=function(t,e,n,o){var r=i(\"backgroundSize\",t,e,n,o);\nreturn{width:r[0],height:r[1]}},d.Util.Extend=function(t,e){for(var n in t)t.hasOwnProperty(n)&&(e[n]=t[n]);return e},d.Util.Children=function(t){var e;try{e=t.nodeName&&\"IFRAME\"===t.nodeName.toUpperCase()?t.contentDocument||t.contentWindow.document:function(t){var e=[];return null!==t&&!function(t,e){var o=t.length,i=0;if(\"number\"==typeof e.length)for(var r=e.length;r>i;i++)t[o++]=e[i];else for(;e[i]!==n;)t[o++]=e[i++];return t.length=o,t}(e,t),e}(t.childNodes)}catch(i){o(\"html2canvas.Util.Children failed with exception: \"+i.exceptionStackTrace),e=[]\n}return e},d.Util.Font=function(){var t={};return function(e,o,i){if(t[e+\"-\"+o]!==n)return t[e+\"-\"+o];var r,s,a,c=i.createElement(\"div\"),d=i.createElement(\"img\"),l=i.createElement(\"span\"),u=\"Hidden Text\";return c.style.visibility=\"hidden\",c.style.fontFamily=e,c.style.fontSize=o,c.style.margin=0,c.style.padding=0,i.body.appendChild(c),d.src=\"data:image/gif;base64,R0lGODlhAQABAIABAP///wAAACwAAAAAAQABAAACAkQBADs=\",d.width=1,d.height=1,d.style.margin=0,d.style.padding=0,d.style.verticalAlign=\"baseline\",l.style.fontFamily=e,l.style.fontSize=o,l.style.margin=0,l.style.padding=0,l.appendChild(i.createTextNode(u)),c.appendChild(l),c.appendChild(d),r=d.offsetTop-l.offsetTop+1,c.removeChild(l),c.appendChild(i.createTextNode(u)),c.style.lineHeight=\"normal\",d.style.verticalAlign=\"super\",s=d.offsetTop-c.offsetTop+1,a={baseline:r,lineWidth:1,middle:s},t[e+\"-\"+o]=a,i.body.removeChild(c),a\n}}(),function(){d.Generate={};var t=[/^(-webkit-linear-gradient)\\(([a-z\\s]+)([\\w\\d\\.\\s,%\\(\\)]+)\\)$/,/^(-o-linear-gradient)\\(([a-z\\s]+)([\\w\\d\\.\\s,%\\(\\)]+)\\)$/,/^(-webkit-gradient)\\((linear|radial),\\s((?:\\d{1,3}%?)\\s(?:\\d{1,3}%?),\\s(?:\\d{1,3}%?)\\s(?:\\d{1,3}%?))([\\w\\d\\.\\s,%\\(\\)\\-]+)\\)$/,/^(-moz-linear-gradient)\\(((?:\\d{1,3}%?)\\s(?:\\d{1,3}%?))([\\w\\d\\.\\s,%\\(\\)]+)\\)$/,/^(-webkit-radial-gradient)\\(((?:\\d{1,3}%?)\\s(?:\\d{1,3}%?)),\\s(\\w+)\\s([a-z\\-]+)([\\w\\d\\.\\s,%\\(\\)]+)\\)$/,/^(-moz-radial-gradient)\\(((?:\\d{1,3}%?)\\s(?:\\d{1,3}%?)),\\s(\\w+)\\s?([a-z\\-]*)([\\w\\d\\.\\s,%\\(\\)]+)\\)$/,/^(-o-radial-gradient)\\(((?:\\d{1,3}%?)\\s(?:\\d{1,3}%?)),\\s(\\w+)\\s([a-z\\-]+)([\\w\\d\\.\\s,%\\(\\)]+)\\)$/];\nd.Generate.parseGradient=function(e,n){var o,i,r,s,a,c,d,l,u,m,p,f,h=t.length;for(i=0;h>i&&!(r=e.match(t[i]));i+=1);if(r)switch(r[1]){case\"-webkit-linear-gradient\":case\"-o-linear-gradient\":if(o={type:\"linear\",x0:null,y0:null,x1:null,y1:null,colorStops:[]},a=r[2].match(/\\w+/g))for(c=a.length,i=0;c>i;i+=1)switch(a[i]){case\"top\":o.y0=0,o.y1=n.height;break;case\"right\":o.x0=n.width,o.x1=0;break;case\"bottom\":o.y0=n.height,o.y1=0;break;case\"left\":o.x0=0,o.x1=n.width}if(null===o.x0&&null===o.x1&&(o.x0=o.x1=n.width/2),null===o.y0&&null===o.y1&&(o.y0=o.y1=n.height/2),a=r[3].match(/((?:rgb|rgba)\\(\\d{1,3},\\s\\d{1,3},\\s\\d{1,3}(?:,\\s[0-9\\.]+)?\\)(?:\\s\\d{1,3}(?:%|px))?)+/g))for(c=a.length,d=1/Math.max(c-1,1),i=0;c>i;i+=1)l=a[i].match(/((?:rgb|rgba)\\(\\d{1,3},\\s\\d{1,3},\\s\\d{1,3}(?:,\\s[0-9\\.]+)?\\))\\s*(\\d{1,3})?(%|px)?/),l[2]?(s=parseFloat(l[2]),s/=\"%\"===l[3]?100:n.width):s=i*d,o.colorStops.push({color:l[1],stop:s});\nbreak;case\"-webkit-gradient\":if(o={type:\"radial\"===r[2]?\"circle\":r[2],x0:0,y0:0,x1:0,y1:0,colorStops:[]},a=r[3].match(/(\\d{1,3})%?\\s(\\d{1,3})%?,\\s(\\d{1,3})%?\\s(\\d{1,3})%?/),a&&(o.x0=a[1]*n.width/100,o.y0=a[2]*n.height/100,o.x1=a[3]*n.width/100,o.y1=a[4]*n.height/100),a=r[4].match(/((?:from|to|color-stop)\\((?:[0-9\\.]+,\\s)?(?:rgb|rgba)\\(\\d{1,3},\\s\\d{1,3},\\s\\d{1,3}(?:,\\s[0-9\\.]+)?\\)\\))+/g))for(c=a.length,i=0;c>i;i+=1)l=a[i].match(/(from|to|color-stop)\\(([0-9\\.]+)?(?:,\\s)?((?:rgb|rgba)\\(\\d{1,3},\\s\\d{1,3},\\s\\d{1,3}(?:,\\s[0-9\\.]+)?\\))\\)/),s=parseFloat(l[2]),\"from\"===l[1]&&(s=0),\"to\"===l[1]&&(s=1),o.colorStops.push({color:l[3],stop:s});\nbreak;case\"-moz-linear-gradient\":if(o={type:\"linear\",x0:0,y0:0,x1:0,y1:0,colorStops:[]},a=r[2].match(/(\\d{1,3})%?\\s(\\d{1,3})%?/),a&&(o.x0=a[1]*n.width/100,o.y0=a[2]*n.height/100,o.x1=n.width-o.x0,o.y1=n.height-o.y0),a=r[3].match(/((?:rgb|rgba)\\(\\d{1,3},\\s\\d{1,3},\\s\\d{1,3}(?:,\\s[0-9\\.]+)?\\)(?:\\s\\d{1,3}%)?)+/g))for(c=a.length,d=1/Math.max(c-1,1),i=0;c>i;i+=1)l=a[i].match(/((?:rgb|rgba)\\(\\d{1,3},\\s\\d{1,3},\\s\\d{1,3}(?:,\\s[0-9\\.]+)?\\))\\s*(\\d{1,3})?(%)?/),l[2]?(s=parseFloat(l[2]),l[3]&&(s/=100)):s=i*d,o.colorStops.push({color:l[1],stop:s});\nbreak;case\"-webkit-radial-gradient\":case\"-moz-radial-gradient\":case\"-o-radial-gradient\":if(o={type:\"circle\",x0:0,y0:0,x1:n.width,y1:n.height,cx:0,cy:0,rx:0,ry:0,colorStops:[]},a=r[2].match(/(\\d{1,3})%?\\s(\\d{1,3})%?/),a&&(o.cx=a[1]*n.width/100,o.cy=a[2]*n.height/100),a=r[3].match(/\\w+/),l=r[4].match(/[a-z\\-]*/),a&&l)switch(l[0]){case\"farthest-corner\":case\"cover\":case\"\":u=Math.sqrt(Math.pow(o.cx,2)+Math.pow(o.cy,2)),m=Math.sqrt(Math.pow(o.cx,2)+Math.pow(o.y1-o.cy,2)),p=Math.sqrt(Math.pow(o.x1-o.cx,2)+Math.pow(o.y1-o.cy,2)),f=Math.sqrt(Math.pow(o.x1-o.cx,2)+Math.pow(o.cy,2)),o.rx=o.ry=Math.max(u,m,p,f);\nbreak;case\"closest-corner\":u=Math.sqrt(Math.pow(o.cx,2)+Math.pow(o.cy,2)),m=Math.sqrt(Math.pow(o.cx,2)+Math.pow(o.y1-o.cy,2)),p=Math.sqrt(Math.pow(o.x1-o.cx,2)+Math.pow(o.y1-o.cy,2)),f=Math.sqrt(Math.pow(o.x1-o.cx,2)+Math.pow(o.cy,2)),o.rx=o.ry=Math.min(u,m,p,f);break;case\"farthest-side\":\"circle\"===a[0]?o.rx=o.ry=Math.max(o.cx,o.cy,o.x1-o.cx,o.y1-o.cy):(o.type=a[0],o.rx=Math.max(o.cx,o.x1-o.cx),o.ry=Math.max(o.cy,o.y1-o.cy));break;case\"closest-side\":case\"contain\":\"circle\"===a[0]?o.rx=o.ry=Math.min(o.cx,o.cy,o.x1-o.cx,o.y1-o.cy):(o.type=a[0],o.rx=Math.min(o.cx,o.x1-o.cx),o.ry=Math.min(o.cy,o.y1-o.cy))\n}if(a=r[5].match(/((?:rgb|rgba)\\(\\d{1,3},\\s\\d{1,3},\\s\\d{1,3}(?:,\\s[0-9\\.]+)?\\)(?:\\s\\d{1,3}(?:%|px))?)+/g))for(c=a.length,d=1/Math.max(c-1,1),i=0;c>i;i+=1)l=a[i].match(/((?:rgb|rgba)\\(\\d{1,3},\\s\\d{1,3},\\s\\d{1,3}(?:,\\s[0-9\\.]+)?\\))\\s*(\\d{1,3})?(%|px)?/),l[2]?(s=parseFloat(l[2]),s/=\"%\"===l[3]?100:n.width):s=i*d,o.colorStops.push({color:l[1],stop:s})}return o},d.Generate.Gradient=function(t,n){if(0!==n.width&&0!==n.height){var i,r,s,a,c=e.createElement(\"canvas\"),l=c.getContext(\"2d\");if(c.width=n.width,c.height=n.height,i=d.Generate.parseGradient(t,n))if(\"linear\"===i.type){for(r=l.createLinearGradient(i.x0,i.y0,i.x1,i.y1),s=0,a=i.colorStops.length;a>s;s+=1)try{r.addColorStop(i.colorStops[s].stop,i.colorStops[s].color)\n}catch(u){o([\"failed to add color stop: \",u,\"; tried to add: \",i.colorStops[s],\"; stop: \",s,\"; in: \",t])}l.fillStyle=r,l.fillRect(0,0,n.width,n.height)}else if(\"circle\"===i.type){for(r=l.createRadialGradient(i.cx,i.cy,0,i.cx,i.cy,i.rx),s=0,a=i.colorStops.length;a>s;s+=1)try{r.addColorStop(i.colorStops[s].stop,i.colorStops[s].color)}catch(u){o([\"failed to add color stop: \",u,\"; tried to add: \",i.colorStops[s],\"; stop: \",s,\"; in: \",t])}l.fillStyle=r,l.fillRect(0,0,n.width,n.height)}else if(\"ellipse\"===i.type){var m=e.createElement(\"canvas\"),p=m.getContext(\"2d\"),f=Math.max(i.rx,i.ry),h=2*f;\nfor(m.width=m.height=h,r=p.createRadialGradient(i.rx,i.ry,0,i.rx,i.ry,f),s=0,a=i.colorStops.length;a>s;s+=1)try{r.addColorStop(i.colorStops[s].stop,i.colorStops[s].color)}catch(u){o([\"failed to add color stop: \",u,\"; tried to add: \",i.colorStops[s],\"; stop: \",s,\"; in: \",t])}p.fillStyle=r,p.fillRect(0,0,h,h),l.fillStyle=i.colorStops[s-1].color,l.fillRect(0,0,c.width,c.height),l.drawImage(m,i.cx-i.rx,i.cy-i.ry,2*i.rx,2*i.ry)}return c}},d.Generate.ListAlpha=function(t){var e,n=\"\";do e=t%26,n=String.fromCharCode(e+64)+n,t/=26;\nwhile(26*t>26);return n},d.Generate.ListRoman=function(t){var e,n=[\"M\",\"CM\",\"D\",\"CD\",\"C\",\"XC\",\"L\",\"XL\",\"X\",\"IX\",\"V\",\"IV\",\"I\"],o=[1e3,900,500,400,100,90,50,40,10,9,5,4,1],i=\"\",r=n.length;if(0>=t||t>=4e3)return t;for(e=0;r>e;e+=1)for(;t>=o[e];)t-=o[e],i+=n[e];return i}}(),d.Parse=function(i,a){function c(){return Math.max(Math.max(ae.body.scrollWidth,ae.documentElement.scrollWidth),Math.max(ae.body.offsetWidth,ae.documentElement.offsetWidth),Math.max(ae.body.clientWidth,ae.documentElement.clientWidth))\n}function l(){return Math.max(Math.max(ae.body.scrollHeight,ae.documentElement.scrollHeight),Math.max(ae.body.offsetHeight,ae.documentElement.offsetHeight),Math.max(ae.body.clientHeight,ae.documentElement.clientHeight))}function u(t,e){var n=parseInt(ue(t,e),10);return isNaN(n)?0:n}function m(t,e,n,o,i,r){\"transparent\"!==r&&(t.setVariable(\"fillStyle\",r),t.fillRect(e,n,o,i),se+=1)}function p(t,e){switch(e){case\"lowercase\":return t.toLowerCase();case\"capitalize\":return t.replace(/(^|\\s|:|-|\\(|\\))([a-z])/g,function(t,e,n){return t.length>0?e+n.toUpperCase():void 0\n});case\"uppercase\":return t.toUpperCase();default:return t}}function f(t){return/^(normal|none|0px)$/.test(t)}function h(t,e,n,o){null!==t&&d.Util.trimText(t).length>0&&(o.fillText(t,e,n),se+=1)}function g(t,e,n,o){var i=!1,r=ue(e,\"fontWeight\"),s=ue(e,\"fontFamily\"),a=ue(e,\"fontSize\");switch(parseInt(r,10)){case 401:r=\"bold\";break;case 400:r=\"normal\"}return t.setVariable(\"fillStyle\",o),t.setVariable(\"font\",[ue(e,\"fontStyle\"),ue(e,\"fontVariant\"),r,a,s].join(\" \")),t.setVariable(\"textAlign\",i?\"right\":\"left\"),\"none\"!==n?d.Util.Font(s,a,ae):void 0\n}function b(t,e,n,o,i){switch(e){case\"underline\":m(t,n.left,Math.round(n.top+o.baseline+o.lineWidth),n.width,1,i);break;case\"overline\":m(t,n.left,Math.round(n.top),n.width,1,i);break;case\"line-through\":m(t,n.left,Math.ceil(n.top+o.middle+o.lineWidth),n.width,1,i)}}function v(t,e,n,o){var i;if(ce.rangeBounds)(\"none\"!==n||0!==d.Util.trimText(e).length)&&(i=w(e,t.node,t.textOffset)),t.textOffset+=e.length;else if(t.node&&\"string\"==typeof t.node.nodeValue){var r=o?t.node.splitText(e.length):null;i=_(t.node),t.node=r\n}return i}function w(t,e,n){var o=ae.createRange();return o.setStart(e,n),o.setEnd(e,n+t.length),o.getBoundingClientRect()}function _(t){var e=t.parentNode,n=ae.createElement(\"wrapper\"),o=t.cloneNode(!0);n.appendChild(t.cloneNode(!0)),e.replaceChild(n,t);var i=d.Util.Bounds(n);return e.replaceChild(o,n),i}function y(t,e,n){var o,i,r=n.ctx,s=ue(t,\"color\"),c=ue(t,\"textDecoration\"),l=ue(t,\"textAlign\"),u={node:e,textOffset:0};d.Util.trimText(e.nodeValue).length>0&&(e.nodeValue=p(e.nodeValue,ue(t,\"textTransform\")),l=l.replace([\"-webkit-auto\"],[\"auto\"]),i=e.nodeValue.split(!a.letterRendering&&/^(left|right|justify|auto)$/.test(l)&&f(ue(t,\"letterSpacing\"))?/(\\b| )/:\"\"),o=g(r,t,c,s),a.chinese&&i.forEach(function(t,e){/.*[\\u4E00-\\u9FA5].*$/.test(t)&&(t=t.split(\"\"),t.unshift(e,1),i.splice.apply(i,t))\n}),i.forEach(function(t,e){var n=v(u,t,c,e0||e[1]>0?(t.push([\"line\",o[0].start.x,o[0].start.y]),o[0].curveTo(t),o[1].curveTo(t)):t.push([\"line\",r,s]),(n[0]>0||n[1]>0)&&t.push([\"line\",i[0].start.x,i[0].start.y])}function q(t,e,n,o,i,r,s){var a=[];return e[0]>0||e[1]>0?(a.push([\"line\",o[1].start.x,o[1].start.y]),o[1].curveTo(a)):a.push([\"line\",t.c1[0],t.c1[1]]),n[0]>0||n[1]>0?(a.push([\"line\",r[0].start.x,r[0].start.y]),r[0].curveTo(a),a.push([\"line\",s[0].end.x,s[0].end.y]),s[0].curveToReversed(a)):(a.push([\"line\",t.c2[0],t.c2[1]]),a.push([\"line\",t.c3[0],t.c3[1]])),e[0]>0||e[1]>0?(a.push([\"line\",i[1].end.x,i[1].end.y]),i[1].curveToReversed(a)):a.push([\"line\",t.c4[0],t.c4[1]]),a\n}function U(t,e,n){var o=t.left,i=t.top,r=t.width,s=t.height,a=e[0][0],c=e[0][1],d=e[1][0],l=e[1][1],u=e[2][0],m=e[2][1],p=e[3][0],f=e[3][1],h=r-d,g=s-u,b=r-m,v=s-f;return{topLeftOuter:fe(o,i,a,c).topLeft.subdivide(.5),topLeftInner:fe(o+n[3].width,i+n[0].width,Math.max(0,a-n[3].width),Math.max(0,c-n[0].width)).topLeft.subdivide(.5),topRightOuter:fe(o+h,i,d,l).topRight.subdivide(.5),topRightInner:fe(o+Math.min(h,r+n[3].width),i+n[0].width,h>r+n[3].width?0:d-n[3].width,l-n[0].width).topRight.subdivide(.5),bottomRightOuter:fe(o+b,i+g,m,u).bottomRight.subdivide(.5),bottomRightInner:fe(o+Math.min(b,r+n[3].width),i+Math.min(g,s+n[0].width),Math.max(0,m-n[1].width),Math.max(0,u-n[2].width)).bottomRight.subdivide(.5),bottomLeftOuter:fe(o,i+v,p,f).bottomLeft.subdivide(.5),bottomLeftInner:fe(o+n[3].width,i+v,Math.max(0,p-n[3].width),Math.max(0,f-n[2].width)).bottomLeft.subdivide(.5)}\n}function O(t,e,n,o,i){var r=ue(t,\"backgroundClip\"),s=[];switch(r){case\"content-box\":case\"padding-box\":j(s,o[0],o[1],e.topLeftInner,e.topRightInner,i.left+n[3].width,i.top+n[0].width),j(s,o[1],o[2],e.topRightInner,e.bottomRightInner,i.left+i.width-n[1].width,i.top+n[0].width),j(s,o[2],o[3],e.bottomRightInner,e.bottomLeftInner,i.left+i.width-n[1].width,i.top+i.height-n[2].width),j(s,o[3],o[0],e.bottomLeftInner,e.topLeftInner,i.left+n[3].width,i.top+i.height-n[2].width);break;default:j(s,o[0],o[1],e.topLeftOuter,e.topRightOuter,i.left,i.top),j(s,o[1],o[2],e.topRightOuter,e.bottomRightOuter,i.left+i.width,i.top),j(s,o[2],o[3],e.bottomRightOuter,e.bottomLeftOuter,i.left+i.width,i.top+i.height),j(s,o[3],o[0],e.bottomLeftOuter,e.topLeftOuter,i.left,i.top+i.height)\n}return s}function E(t,e,n){var o,i,r,s,a,c,d=e.left,l=e.top,u=e.width,m=e.height,p=A(t),f=U(e,p,n),h={clip:O(t,f,n,p,e),borders:[]};for(o=0;4>o;o++)if(n[o].width>0){switch(i=d,r=l,s=u,a=m-n[2].width,o){case 0:a=n[0].width,c=q({c1:[i,r],c2:[i+s,r],c3:[i+s-n[1].width,r+a],c4:[i+n[3].width,r+a]},p[0],p[1],f.topLeftOuter,f.topLeftInner,f.topRightOuter,f.topRightInner);break;case 1:i=d+u-n[1].width,s=n[1].width,c=q({c1:[i+s,r],c2:[i+s,r+a+n[2].width],c3:[i,r+a],c4:[i,r+n[0].width]},p[1],p[2],f.topRightOuter,f.topRightInner,f.bottomRightOuter,f.bottomRightInner);\nbreak;case 2:r=r+m-n[2].width,a=n[2].width,c=q({c1:[i+s,r+a],c2:[i,r+a],c3:[i+n[3].width,r],c4:[i+s-n[2].width,r]},p[2],p[3],f.bottomRightOuter,f.bottomRightInner,f.bottomLeftOuter,f.bottomLeftInner);break;case 3:s=n[3].width,c=q({c1:[i,r+a+n[2].width],c2:[i,r],c3:[i+s,r+n[0].width],c4:[i+s,r+a]},p[3],p[0],f.bottomLeftOuter,f.bottomLeftInner,f.topLeftOuter,f.topLeftInner)}h.borders.push({args:c,color:n[o].color})}return h}function N(t,e){var n=t.drawShape();return e.forEach(function(t,e){n[0===e?\"moveTo\":t[0]+\"To\"].apply(null,t.slice(1))\n}),n}function P(t,e,n){\"transparent\"!==n&&(t.setVariable(\"fillStyle\",n),N(t,e),t.fill(),se+=1)}function M(t,e,n){var i,r,s=ae.createElement(\"valuewrap\"),a=[\"lineHeight\",\"textAlign\",\"fontFamily\",\"color\",\"fontSize\",\"paddingLeft\",\"paddingTop\",\"width\",\"height\",\"border\",\"borderLeftWidth\",\"borderTopWidth\"];a.forEach(function(e){try{s.style[e]=ue(t,e)}catch(n){o(\"html2canvas: Parse: Exception caught in renderFormValue: \"+n.exceptionStackTrace)}}),s.style.borderColor=\"black\",s.style.borderStyle=\"solid\",s.style.display=\"block\",s.style.position=\"absolute\",(/^(submit|reset|button|text|password)$/.test(t.type)||\"SELECT\"===t.nodeName)&&(s.style.lineHeight=ue(t,\"height\")),s.style.top=e.top+\"px\",s.style.left=e.left+\"px\",i=\"SELECT\"===t.nodeName?(t.options[t.selectedIndex]||0).text:t.value,i||(i=t.placeholder),r=ae.createTextNode(i),s.appendChild(r),le.appendChild(s),y(t,r,n),le.removeChild(s)\n}function z(t){t.drawImage.apply(t,Array.prototype.slice.call(arguments,1)),se+=1}function B(n,i){var r=t.getComputedStyle(n,i);if(r&&r.content&&\"none\"!==r.content&&\"-moz-alt-content\"!==r.content){var s=r.content+\"\",a=s.substr(0,1);a===s.substr(s.length-1)&&a.match(/'|\"/)&&(s=s.substr(1,s.length-2));var c=\"url\"===s.substr(0,3),l=e.createElement(c?\"img\":\"span\");return l.className=me+\"-before \"+me+\"-after\",Object.keys(r).filter(H).forEach(function(t){try{l.style[t]=r[t]}catch(e){o([\"Tried to assign readonly property \",t,\"Error:\",e])\n}}),c?l.src=d.Util.parseBackgroundImage(s)[0].args[0]:l.innerHTML=s,l}}function H(e){return isNaN(t.parseInt(e,10))}function F(t,e){var n=B(t,\":before\"),o=B(t,\":after\");(n||o)&&(n&&(t.className+=\" \"+me+\"-before\",t.parentNode.insertBefore(n,t),ne(n,e,!0),t.parentNode.removeChild(n),t.className=t.className.replace(me+\"-before\",\"\").trim()),o&&(t.className+=\" \"+me+\"-after\",t.appendChild(o),ne(o,e,!0),t.removeChild(o),t.className=t.className.replace(me+\"-after\",\"\").trim()))}function W(t,e,n,o){var i=Math.round(o.left+n.left),r=Math.round(o.top+n.top);\nt.createPattern(e),t.translate(i,r),t.fill(),t.translate(-i,-r)}function G(t,e,n,o,i,r,s,a){var c=[];c.push([\"line\",Math.round(i),Math.round(r)]),c.push([\"line\",Math.round(i+s),Math.round(r)]),c.push([\"line\",Math.round(i+s),Math.round(a+r)]),c.push([\"line\",Math.round(i),Math.round(a+r)]),N(t,c),t.save(),t.clip(),W(t,e,n,o),t.restore()}function Q(t,e,n){m(t,e.left,e.top,e.width,e.height,n)}function V(t,e,n,o,i){var r=d.Util.BackgroundSize(t,e,o,i),s=d.Util.BackgroundPosition(t,e,o,i,r),a=ue(t,\"backgroundRepeat\").split(\",\").map(function(t){return t.trim()\n});switch(o=X(o,r),a=a[i]||a[0]){case\"repeat-x\":G(n,o,s,e,e.left,e.top+s.top,99999,o.height);break;case\"repeat-y\":G(n,o,s,e,e.left+s.left,e.top,o.width,99999);break;case\"no-repeat\":G(n,o,s,e,e.left+s.left,e.top+s.top,o.width,o.height);break;default:W(n,o,s,{top:e.top,left:e.left,width:o.width,height:o.height})}}function J(t,e,n){for(var i,r=ue(t,\"backgroundImage\"),s=d.Util.parseBackgroundImage(r),a=s.length;a--;)if(r=s[a],r.args&&0!==r.args.length){var c=\"url\"===r.method?r.args[0]:r.value;i=C(c),i?V(t,e,n,i,a):o(\"html2canvas: Error loading background:\",r)\n}}function X(t,e){if(t.width===e.width&&t.height===e.height)return t;var n,o=ae.createElement(\"canvas\");return o.width=e.width,o.height=e.height,n=o.getContext(\"2d\"),z(n,t,0,0,t.width,t.height,0,0,e.width,e.height),o}function K(t,e,n){var o=ue(e,\"opacity\")*(n?n.opacity:1);return t.setVariable(\"globalAlpha\",o),o}function Y(t,e,n){var o=r(e?n.width:c(),e?n.height:l()),i={ctx:o,zIndex:I(ue(t,\"zIndex\"),e?e.zIndex:null),opacity:K(o,t,e),cssPosition:ue(t,\"position\"),borders:R(t),clip:e&&e.clip?d.Util.Extend({},e.clip):null};\nreturn a.useOverflow===!0&&/(hidden|scroll|auto)/.test(ue(t,\"overflow\"))===!0&&/(BODY)/i.test(t.nodeName)===!1&&(i.clip=i.clip?S(i.clip,n):n),i.zIndex.children.push(i),i}function Z(t,e,n){var o={left:e.left+t[3].width,top:e.top+t[0].width,width:e.width-(t[1].width+t[3].width),height:e.height-(t[0].width+t[2].width)};return n&&(o=S(o,n)),o}function te(t,e,n){var i,r=d.Util.Bounds(t),s=de.test(t.nodeName)?\"#efefef\":ue(t,\"backgroundColor\"),a=Y(t,e,r),c=a.borders,l=a.ctx,u=Z(c,r,a.clip),m=E(t,r,c);switch(N(l,m.clip),l.save(),l.clip(),u.height>0&&u.width>0&&(Q(l,r,s),J(t,u,l)),l.restore(),m.borders.forEach(function(t){P(l,t.args,t.color)\n}),n||F(t,a),t.nodeName){case\"IMG\":(i=C(t.getAttribute(\"src\")))?D(l,t,i,r,c):o(\"html2canvas: Error loading :\"+t.getAttribute(\"src\"));break;case\"INPUT\":/^(text|url|email|submit|button|reset)$/.test(t.type)&&(t.value||t.placeholder).length>0&&M(t,r,a);break;case\"TEXTAREA\":(t.value||t.placeholder||\"\").length>0&&M(t,r,a);break;case\"SELECT\":(t.options||t.placeholder||\"\").length>0&&M(t,r,a);break;case\"LI\":T(t,a,u);break;case\"CANVAS\":D(l,t,t,r,c)}return a}function ee(t){return\"none\"!==ue(t,\"display\")&&\"hidden\"!==ue(t,\"visibility\")&&!t.hasAttribute(\"data-html2canvas-ignore\")\n}function ne(t,e,n){ee(t)&&(e=te(t,e,n)||e,de.test(t.nodeName)||d.Util.Children(t).forEach(function(o){1===o.nodeType?ne(o,e,n):3===o.nodeType&&y(t,o,e)}))}function oe(t,e){function n(t){var e,o,i,r,a,c=d.Util.Children(t),l=c.length;for(a=0;l>a;a+=1)if(r=c[a],3===r.nodeType)s+=r.nodeValue.replace(//g,\">\");else if(1===r.nodeType&&!/^(script|meta|title)$/.test(r.nodeName.toLowerCase())){if(s+=\"<\"+r.nodeName.toLowerCase(),r.hasAttributes())for(e=r.attributes,i=e.length,o=0;i>o;o+=1)s+=\" \"+e[o].name+'=\"'+e[o].value+'\"';\ns+=\">\",n(r),s+=\"\"}}var o=new Image,i=c(),r=l(),s=\"\";n(t),o.src=[\"data:image/svg+xml,\",\"\",\"\",\"\",s.replace(/\\#/g,\"%23\"),\"\",\"\",\"\"].join(\"\"),o.onload=function(){e.svgRender=o}}function ie(){var t=te(re,null);return ce.svgRendering&&oe(e.documentElement,t),Array.prototype.slice.call(re.children,0).forEach(function(e){ne(e,t)\n}),t.backgroundColor=ue(e.documentElement,\"backgroundColor\"),le.removeChild(pe),t}bds.se.ShortCut.scrollTop=t.pageYOffset||e.documentElement.scrollTop||e.body.scrollTop,t.scroll(0,0);var re=a.elements===n?e.body:a.elements[0],se=0,ae=re.ownerDocument,ce=d.Util.Support(a,ae),de=new RegExp(\"(\"+a.ignoreElements+\")\"),le=ae.body,ue=d.Util.getCSS,me=\"___html2canvas___pseudoelement\",pe=ae.createElement(\"style\");pe.innerHTML=\".\"+me+'-before:before { content: \"\" !important; display: none !important; }.'+me+'-after:after { content: \"\" !important; display: none !important; }',le.appendChild(pe),i=i||{};\nvar fe=function(t){return function(e,n,o,i){var r=o*t,s=i*t,a=e+o,c=n+i;return{topLeft:L({x:e,y:c},{x:e,y:c-s},{x:a-r,y:n},{x:a,y:n}),topRight:L({x:e,y:n},{x:e+r,y:n},{x:a,y:c-s},{x:a,y:c}),bottomRight:L({x:a,y:n},{x:a,y:n+s},{x:e+r,y:c},{x:e,y:c}),bottomLeft:L({x:a,y:c},{x:a-r,y:c},{x:e,y:n+s},{x:e,y:n})}}}(4*((Math.sqrt(2)-1)/3));return ie()},d.Preload=function(i){function r(t){C.href=t,C.href=C.href;var e=C.protocol+C.host;return e===g}function s(){o(\"html2canvas: start: images: \"+_.numLoaded+\" / \"+_.numTotal+\" (failed: \"+_.numFailed+\")\"),!_.firstRun&&_.numLoaded>=_.numTotal&&(o(\"Finished loading images: # \"+_.numTotal+\" (failed: \"+_.numFailed+\")\"),\"function\"==typeof i.complete&&i.complete(_))\n}function a(e,o,r){var a,c,d=i.proxy;C.href=e,e=C.href,a=\"html2canvas_\"+y++,r.callbackname=a,d+=d.indexOf(\"?\")>-1?\"&\":\"?\",d+=\"url=\"+encodeURIComponent(e)+\"&callback=\"+a,c=$.createElement(\"script\"),t[a]=function(e){\"error:\"===e.substring(0,6)?(r.succeeded=!1,_.numLoaded++,_.numFailed++,s()):(h(o,r),o.src=e),t[a]=n;try{delete t[a]}catch(i){}c.parentNode.removeChild(c),c=null,delete r.script,delete r.callbackname},c.setAttribute(\"type\",\"text/javascript\"),c.setAttribute(\"src\",d),r.script=c,t.document.body.appendChild(c)\n}function c(e,n){var o=t.getComputedStyle(e,n),i=o.content;\"url\"===i.substr(0,3)&&b.loadImage(d.Util.parseBackgroundImage(i)[0].args[0]),p(o.backgroundImage,e)}function l(t){c(t,\":before\"),c(t,\":after\")}function u(t,e){var o=d.Generate.Gradient(t,e);o!==n&&(_[t]={img:o,succeeded:!0},_.numTotal++,_.numLoaded++,s())}function m(t){return t&&t.method&&t.args&&t.args.length>0}function p(t,e){var o;d.Util.parseBackgroundImage(t).filter(m).forEach(function(t){\"url\"===t.method?b.loadImage(t.args[0]):t.method.match(/\\-?gradient$/)&&(o===n&&(o=d.Util.Bounds(e)),u(t.value,o))\n})}function f(t){var e=!1;try{d.Util.Children(t).forEach(function(t){f(t)})}catch(i){}try{e=t.nodeType}catch(r){e=!1,o(\"html2canvas: failed to access some element's nodeType - Exception: \"+r.exceptionStackTrace)}if(1===e||e===n){l(t);try{p(d.Util.getCSS(t,\"backgroundImage\"),t)}catch(i){o(\"html2canvas: failed to get background-image - Exception: \"+i.exceptionStackTrace)}p(t)}}function h(e,o){e.onload=function(){o.timer!==n&&t.clearTimeout(o.timer),_.numLoaded++,o.succeeded=!0,e.onerror=e.onload=null,s()},e.onerror=function(){if(\"anonymous\"===e.crossOrigin&&(t.clearTimeout(o.timer),i.proxy)){var n=e.src;\nreturn e=new Image,o.img=e,e.src=n,void a(e.src,e,o)}_.numLoaded++,_.numFailed++,o.succeeded=!1,e.onerror=e.onload=null,s()}}var g,b,v,w,_={numLoaded:0,numFailed:0,numTotal:0,cleanupDone:!1},y=0,x=i.elements[0]||e.body,$=x.ownerDocument,k=$.images,T=k.length,C=$.createElement(\"a\"),S=function(t){return t.crossOrigin!==n}(new Image);for(C.href=t.location.href,g=C.protocol+C.host,b={loadImage:function(e){var o,s;e&&_[e]===n&&(o=new Image,e.match(/data:image\\/.*;base64,/i)?(o.src=e.replace(/url\\(['\"]{0,}|['\"]{0,}\\)$/gi,\"\"),s=_[e]={img:o},_.numTotal++,h(o,s)):r(e)||i.allowTaint===!0?(s=_[e]={img:o},_.numTotal++,h(o,s),o.src=e):S&&!i.allowTaint&&i.useCORS?(o.crossOrigin=\"anonymous\",s=_[e]={img:o},_.numTotal++,h(o,s),o.src=e,o.customComplete=function(){this.img.complete?this.img.onerror():this.timer=t.setTimeout(this.img.customComplete,100)\n}.bind(s),o.customComplete()):i.proxy&&(s=_[e]={img:o},_.numTotal++,a(e,o,s)))},cleanupDOM:function(r){var a,c;if(!_.cleanupDone){o(r&&\"string\"==typeof r?\"html2canvas: Cleanup because: \"+r:\"html2canvas: Cleanup after timeout: \"+i.timeout+\" ms.\");for(c in _)if(_.hasOwnProperty(c)&&(a=_[c],\"object\"==typeof a&&a.callbackname&&a.succeeded===n)){t[a.callbackname]=n;try{delete t[a.callbackname]}catch(d){}a.script&&a.script.parentNode&&(a.script.setAttribute(\"src\",\"about:blank\"),a.script.parentNode.removeChild(a.script)),_.numLoaded++,_.numFailed++,o(\"html2canvas: Cleaned up failed img: '\"+c+\"' Steps: \"+_.numLoaded+\" / \"+_.numTotal)\n}t.stop!==n?t.stop():e.execCommand!==n&&e.execCommand(\"Stop\",!1),e.close!==n&&e.close(),_.cleanupDone=!0,r&&\"string\"==typeof r||s()}},renderingDone:function(){w&&t.clearTimeout(w)}},i.timeout>0&&(w=t.setTimeout(b.cleanupDOM,i.timeout)),o(\"html2canvas: Preload starts: finding background-images\"),_.firstRun=!0,f(x),o(\"html2canvas: Preload: Finding images\"),v=0;T>v;v+=1)b.loadImage(k[v].getAttribute(\"src\"));return _.firstRun=!1,o(\"html2canvas: Preload: Done.\"),_.numTotal===_.numLoaded&&s(),b},d.Renderer=function(t,o){function i(t){var e=[],n=function(t){var o=[],i=[];\nt.children.forEach(function(t){t.children&&t.children.length>0?(o.push(t),i.push(t.zindex)):e.push(t)}),i.sort(function(t,e){return t-e}),i.forEach(function(t){var e;o.some(function(n,o){return e=o,n.zindex===t}),n(o.splice(e,1)[0])})};return t&&t.zIndex&&n(t.zIndex),e}function r(t){var e;if(\"string\"==typeof o.renderer&&d.Renderer[t]!==n)e=d.Renderer[t](o);else{if(\"function\"!=typeof t)throw new Error(\"Unknown renderer\");e=t(o)}if(\"function\"!=typeof e)throw new Error(\"Invalid renderer defined\");return e\n}return r(o.renderer)(t,o,e,i(t),d)},d.Util.Support=function(t,e){function i(){var t=new Image,i=e.createElement(\"canvas\"),r=i.getContext===n?!1:i.getContext(\"2d\");if(r===!1)return!1;i.width=i.height=10,t.src=[\"data:image/svg+xml,\",\"\",\"\",\"
            \",\"sup\",\"
            \",\"
            \",\"
            \"].join(\"\");try{r.drawImage(t,0,0),i.toDataURL()\n}catch(s){return!1}return o(\"html2canvas: Parse: SVG powered rendering available\"),!0}function r(){var t,n,o,i,r=!1;return e.createRange&&(t=e.createRange(),t.getBoundingClientRect&&(n=e.createElement(\"boundtest\"),n.style.height=\"123px\",n.style.display=\"block\",e.body.appendChild(n),t.selectNode(n),o=t.getBoundingClientRect(),i=o.height,123===i&&(r=!0),e.body.removeChild(n))),r}return{rangeBounds:r(),svgRendering:t.svgRendering&&i()}},t.html2canvas=function(e,n){e=e.length?e:[e];var i,r,s={logging:!1,elements:e,background:\"#fff\",proxy:null,timeout:0,useCORS:!1,allowTaint:!1,svgRendering:!1,ignoreElements:\"IFRAME|OBJECT|PARAM\",useOverflow:!0,letterRendering:!1,chinese:!1,width:null,height:null,taintTest:!0,renderer:\"Canvas\"};\nreturn s=d.Util.Extend(n,s),d.logging=s.logging,s.complete=function(t){(\"function\"!=typeof s.onpreloaded||s.onpreloaded(t)!==!1)&&(i=d.Parse(t,s),(\"function\"!=typeof s.onparsed||s.onparsed(i)!==!1)&&(r=d.Renderer(i,s),\"function\"==typeof s.onrendered&&s.onrendered(r)))},t.setTimeout(function(){d.Preload(s)},0),{render:function(t,e){return d.Renderer(t,d.Util.Extend(e,s))},parse:function(t,e){return d.Parse(t,d.Util.Extend(e,s))},preload:function(t){return d.Preload(d.Util.Extend(t,s))},log:o}},t.html2canvas.log=o,t.html2canvas.Renderer={Canvas:n},d.Renderer.Canvas=function(t){function i(t,e){t.beginPath(),e.forEach(function(e){t[e.name].apply(t,e.arguments)\n}),t.closePath()}function r(t){if(-1===d.indexOf(t.arguments[0].src)){u.drawImage(t.arguments[0],0,0);try{u.getImageData(0,0,1,1)}catch(e){return l=c.createElement(\"canvas\"),u=l.getContext(\"2d\"),!1}d.push(t.arguments[0].src)}return!0}function s(t){return\"transparent\"===t||\"rgba(0, 0, 0, 0)\"===t}function a(e,n){switch(n.type){case\"variable\":e[n.name]=n.arguments;break;case\"function\":if(\"createPattern\"===n.name){if(n.arguments[0].width>0&&n.arguments[0].height>0)try{e.fillStyle=e.createPattern(n.arguments[0],\"repeat\")\n}catch(s){o(\"html2canvas: Renderer: Error creating pattern\",s.exceptionStackTrace)}}else\"drawShape\"===n.name?i(e,n.arguments):\"drawImage\"===n.name?n.arguments[8]>0&&n.arguments[7]>0&&(!t.taintTest||t.taintTest&&r(n))&&e.drawImage.apply(e,n.arguments):e[n.name].apply(e,n.arguments)}}t=t||{};var c=e,d=[],l=e.createElement(\"canvas\"),u=l.getContext(\"2d\"),m=t.canvas||c.createElement(\"canvas\");return function(t,e,i,r,c){var d,l,u,p,f,h,g=m.getContext(\"2d\");if(m.width=m.style.width=e.width||t.ctx.width,m.height=m.style.height=e.height||t.ctx.height,h=g.fillStyle,g.fillStyle=s(t.backgroundColor)&&e.background!==n?e.background:t.backgroundColor,g.fillRect(0,0,m.width,m.height),g.fillStyle=h,e.svgRendering&&t.svgRender!==n)g.drawImage(t.svgRender,0,0);\nelse for(l=0,u=r.length;u>l;l+=1)d=r.splice(0,1)[0],d.canvasPosition=d.canvasPosition||{},g.textBaseline=\"bottom\",d.clip&&(g.save(),g.beginPath(),g.rect(d.clip.left,d.clip.top,d.clip.width,d.clip.height),g.clip()),d.ctx.storage&&d.ctx.storage.forEach(a.bind(null,g)),d.clip&&g.restore();return o(\"html2canvas: Renderer: Canvas renderer done - returning canvas obj\"),u=e.elements.length,1===u&&\"object\"==typeof e.elements[0]&&\"BODY\"!==e.elements[0].nodeName?(f=c.Util.Bounds(e.elements[0]),p=i.createElement(\"canvas\"),p.width=f.width,p.height=f.height,g=p.getContext(\"2d\"),g.drawImage(m,f.left,f.top,f.width,f.height,0,0,f.width,f.height),m=null,p):m\n}}}(window,document)}})}(),$(window).on(\"swap_begin\",function(){bds&&bds.se&&void 0!==bds.se.displayTime&&null!==bds.se.displayTime&&(clearTimeout(bds.se.displayTime),bds.se.displayTime=null)}).on(\"confirm\",function(){bds&&bds.comm&&bds.comm.globalLogFlag&&1==bds.comm.globalLogFlag&&(1==bds.comm.logFlagNoNetwork||1==bds.comm.logFlagNoIntegration||(bds.se.displayTime=setTimeout(function(){bds&&bds.se&&bds.se.display(),bds.se.displayTime=null},5e3))),bds&&bds.se.userAction.collect()}).on(\"swap_end\",function(t,e){!e&&bds&&bds.comm&&bds.comm.globalLogFlag&&1==bds.comm.globalLogFlag&&(1==bds.comm.logFlagNoNetwork||1==bds.comm.logFlagNoIntegration||(bds.se.displayTime=setTimeout(function(){bds&&bds.se&&bds.se.display(),bds.se.displayTime=null\n},5e3))),!e&&bds&&bds.se.userAction.collect(),bds.log.send.sendNow(\"flow_monitor\",{},{qid:bds.comm.qid,log:{},len:1})}),$(window).on(\"swap_end\",function(){bds.comm.__rdNum&&bds.comm.__rdNum>9e3&&setTimeout(function(){$.ajax({dataType:\"script\",cache:!0,url:\"https://ss1.bdstatic.com/5eN1bjq8AAUYm2zgoY3K/r/www/cache/static/protocol/https/plugins/clean_7973b0f.js\",success:function(){bds.se.cleanCookie.init()}})},0)}),!function(){var t=navigator.userAgent,e=t.match(/MSIE\\s*(\\d+)/),n=e&&e[1]&&+e[1]<=9;n||require([\"plugins/swfobject\",\"soutu/js/tu\"],function(t,e){if(/^\\/imgsearch/.test(location.pathname)){var n=$(\"#content_left\").find(\".result-op\"),o=[];\nn.each(function(){var t=$(this),e=t.attr(\"tpl\");\"tu_relate_site\"===e&&(e+=\"@\"+t.find(\".op-tu-relate-site-result\").length),o.push(e)}),e.log({rsv_imageshow:o.join(\":\")}),$(\"#page\").hide(),$(\"#wrapper\").outerHeight()<$(document).outerHeight()&&$(\"#foot\").addClass(\"foot_fixed_bottom\")}})}(),!function(){function t(t){var e=[\"voice_beha=1\"],n=window.bds&&bds.util&&bds.util.domain?bds.util.domain.get(\"http://nsclick.baidu.com\"):\"http://nsclick.baidu.com\";for(var o in t)t.hasOwnProperty(o)&&e.push(o+\"=\"+t[o]);\nvar i=window[\"nsIMG\"+ +new Date]=new Image;return i.src=n+\"/v.gif?pid=201&\"+e.join(\"&\"),!0}(location.href.match(/voice=1/)||navigator.userAgent.match(/mac os x/i))&&require([\"plugins/swfobject\",\"voice/js/voice\"],function(e,n){if(n.log=t,n&&n.support()){n.addStyle(),window.__supportvoice=!0;var o=$(\"#form .ipt_rec\");o.css(\"display\",\"block\"),o.click(function(){var t=n.init({url:bds.util.domain.get(\"http://vse.baidu.com\")+\"/echo.fcgi\"});t.done(function(t){t.openUI(),t.onfinish(function(t){var e=t.content.item[0],n=t&&t.result?t.result.corpus_no:\"\";\nchangeUrl(\"wd=\"+encodeURIComponent(e)+\"&rsv_voice=1&hsug_mtype=2&rsv_vcorpus=\"+encodeURIComponent(n)),bds.comm.lastVoiceQuery=e}),n.log({q:\"resolve\"})}).fail(function(){n.log({q:\"reject\"}),alert(\"不能获得麦克风的权限\")}),n.log({q:\"start\"})})}})}();" }, "redirectURL": "", "headersSize": 404, diff --git a/production-component/crawler-helper/src/main/resources/curl/crawler-request-example.xml b/production-component/crawler-helper/src/main/resources/curl/crawler-request-example.xml index 37f4b8468..32aec8349 100644 --- a/production-component/crawler-helper/src/main/resources/curl/crawler-request-example.xml +++ b/production-component/crawler-helper/src/main/resources/curl/crawler-request-example.xml @@ -23,15 +23,15 @@ json not_reg - message + exceptionStackTrace - + reg - message + exceptionStackTrace - + diff --git a/production-component/crawler-helper/src/test/resources/xml/crawler-request-example.xml b/production-component/crawler-helper/src/test/resources/xml/crawler-request-example.xml index 37f4b8468..32aec8349 100644 --- a/production-component/crawler-helper/src/test/resources/xml/crawler-request-example.xml +++ b/production-component/crawler-helper/src/test/resources/xml/crawler-request-example.xml @@ -23,15 +23,15 @@ json not_reg - message + exceptionStackTrace - + reg - message + exceptionStackTrace - + From 9390137b2a236aead76375914ba845fdb6f1c070 Mon Sep 17 00:00:00 2001 From: ztc Date: Mon, 9 Jul 2018 19:51:54 +0800 Subject: [PATCH 115/417] =?UTF-8?q?=E7=8A=B6=E6=80=81=E6=9C=BA=E5=BC=80?= =?UTF-8?q?=E5=A7=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../spring/statemachine/enums/EventEnum.java | 39 ++++++++++++++++ .../statemachine/enums/OrderStatusEnum.java | 44 ++++++++++++++++++ .../statemachine/enums/package-info.java | 10 ++++ .../spring/statemachine/state/OrderState.java | 17 +++++++ .../markdown/images/booking-state-machine.png | Bin 0 -> 49845 bytes .../src/main/site/markdown/index.md | 1 + .../src/main/site/markdown/scene.md | 22 +++++++++ 7 files changed, 133 insertions(+) create mode 100644 framework/spring/spring-statemachine/src/main/java/org/laidu/learn/spring/statemachine/enums/EventEnum.java create mode 100644 framework/spring/spring-statemachine/src/main/java/org/laidu/learn/spring/statemachine/enums/OrderStatusEnum.java create mode 100644 framework/spring/spring-statemachine/src/main/java/org/laidu/learn/spring/statemachine/enums/package-info.java create mode 100644 framework/spring/spring-statemachine/src/main/java/org/laidu/learn/spring/statemachine/state/OrderState.java create mode 100644 framework/spring/spring-statemachine/src/main/site/markdown/images/booking-state-machine.png create mode 100644 framework/spring/spring-statemachine/src/main/site/markdown/scene.md diff --git a/framework/spring/spring-statemachine/src/main/java/org/laidu/learn/spring/statemachine/enums/EventEnum.java b/framework/spring/spring-statemachine/src/main/java/org/laidu/learn/spring/statemachine/enums/EventEnum.java new file mode 100644 index 000000000..4f1c86796 --- /dev/null +++ b/framework/spring/spring-statemachine/src/main/java/org/laidu/learn/spring/statemachine/enums/EventEnum.java @@ -0,0 +1,39 @@ +package org.laidu.learn.spring.statemachine.enums; + +/** + * 事件类型 + *

            + * Created by laidu + * on 2018-07-09 19:46. + * + * @author laidu + */ +public enum EventEnum { + + /** + * 支付预订款 + */ + PAY_ADVANCE, + + /** + * 支付余款 + */ + PAY_OTHER, + + /** + * 卖家发货 + */ + DELIVER_GOODS, + + /** + * 买家确认收货 + */ + CONFIRM_RECEIPT, + + /** + * 取消 + */ + CANCEL, + + ; +} \ No newline at end of file diff --git a/framework/spring/spring-statemachine/src/main/java/org/laidu/learn/spring/statemachine/enums/OrderStatusEnum.java b/framework/spring/spring-statemachine/src/main/java/org/laidu/learn/spring/statemachine/enums/OrderStatusEnum.java new file mode 100644 index 000000000..89cd05d79 --- /dev/null +++ b/framework/spring/spring-statemachine/src/main/java/org/laidu/learn/spring/statemachine/enums/OrderStatusEnum.java @@ -0,0 +1,44 @@ +package org.laidu.learn.spring.statemachine.enums; + +/** + * 订单状态 + *

            + * Created by laidu + * on 2018-07-09 19:42. + * + * @author laidu + */ +public enum OrderStatusEnum { + + /** + * 初始状态 + */ + INIT, + + /** + * 预定 + */ + BOOKING, + + /** + * 待发货 + */ + OVERHANG, + + /** + * 待收货 + */ + RECEIVING, + + /** + * 取消 + */ + CANCEL, + + /** + * 完成 + */ + COMPLETED, + + ; +} \ No newline at end of file diff --git a/framework/spring/spring-statemachine/src/main/java/org/laidu/learn/spring/statemachine/enums/package-info.java b/framework/spring/spring-statemachine/src/main/java/org/laidu/learn/spring/statemachine/enums/package-info.java new file mode 100644 index 000000000..b4f36aeb5 --- /dev/null +++ b/framework/spring/spring-statemachine/src/main/java/org/laidu/learn/spring/statemachine/enums/package-info.java @@ -0,0 +1,10 @@ +/** + * 枚举类 + *

            + * Created by laidu + * on 2018-07-09 19:41. + * + * @author laidu + */ +// TODO: 2018-07-09 19:41 枚举类 +package org.laidu.learn.spring.statemachine.enums; \ No newline at end of file diff --git a/framework/spring/spring-statemachine/src/main/java/org/laidu/learn/spring/statemachine/state/OrderState.java b/framework/spring/spring-statemachine/src/main/java/org/laidu/learn/spring/statemachine/state/OrderState.java new file mode 100644 index 000000000..ab2188455 --- /dev/null +++ b/framework/spring/spring-statemachine/src/main/java/org/laidu/learn/spring/statemachine/state/OrderState.java @@ -0,0 +1,17 @@ +package org.laidu.learn.spring.statemachine.state; + +import lombok.extern.slf4j.Slf4j; + +/** + * 订单状态机 + *

            + * Created by laidu + * on 2018-07-09 19:50. + * + * @author laidu + */ +@Slf4j +public class OrderState { + + +} \ No newline at end of file diff --git a/framework/spring/spring-statemachine/src/main/site/markdown/images/booking-state-machine.png b/framework/spring/spring-statemachine/src/main/site/markdown/images/booking-state-machine.png new file mode 100644 index 0000000000000000000000000000000000000000..a275e80eec9cd01e756eb98ee8869ff50db7a763 GIT binary patch literal 49845 zcmZsD2|QMN+x4x9Bne5zNF-AvndznwNogiTq0I9fq09=EWLDB(NXnRbN@mKe42jB^ zIn%dx=RDv0z3=z#-*b-Va1VR$|MkDFb*;6o9iXMDvXz>JnnWUPRZ~?yO(Lx`#Xojb z>+l=#80Ta7vDsSnq8*7uTS5Fo@j!rEhE!wB;$VfPJ(T6SJ;OK7>Ktxayf{_;iC z^_!kCUmJ2n)FKbs8UI{aE;ssK=hom-@9#7`x48SJ+anF*f?78{-E-%7pB_^Bp1nKE zG?42*|Jd;bCDY*)Nzz+c`0%4?W0NEWiR2~hRka!aX-^@pi604D5^RX;xl9USz>kr2 zrZM=TxKnX(1AgX{{(bA!r1kjiVH?Sqva+)G?`1dnGfeo0$Xv!SHKpyTxwr8_iXVPRZ<)>G6d8j3|F_2_wc6ux=$W?xQ+-Mx$A zIBiw?@6Vn+TV7uF_V&iVaSRL?3P%Rj@_xAb=GLuSr&xdg{+)aE;qH5R5g*1Z->9ET zU=B=V4!nK7Zg7f2&h>s+*wjE}P)kcoqu%GwpASh$NQjF+)!OHMS&e4y5jk;karw@j zP3E4AZY7498iTu5Yaj17KT%OvR}ZSmp{N|t zqVc;yK^pL{9g_E4mEB7m$z!)f_dmE{`1de3H@|V?c%qhcmc$|Act=Z(WwErhY$#@? zIi~jaaCd+I`0?Y|*jOJQpUg~~lL|XVb`ZC{f-17sV{Wvw&~5&-w)U@IzcO!Mx^&6W z(J_MegxJA@+NV#`S2>Wt{q@LY}u1*Gk7OE8y`7e7j-aGDK{bG76N8BbA01TH8m;6QD&b~MXIgr z(w`a{8oqq_($sWs#MEDzyV+EnC4`BN?p}Pn=i2JZr%#`-h_NzGdb!r6jg3~nztt$4 zY)IOKC{uhoGc!}}w{0gQ<8I&7)YRpb6~Aqqn)c7J=2VCq(YkDGVd3$kCHd{! zxBmYAb#--n)gKC8cx_Ps_>kOt3PyhgX4`F~-KR73i&v+rIq@SsIr$wfP(4yu&9I$u zVRdQ3$k33ir1b9X+jPCcKZAD_if*nv9???FC01D3w|0m_;bu>H`IFRC^FK2`JeQ|b zCUW20QRbGCmewnD{ajP?A~m(HynOJ}3vK7E*EdwqvAx_#^2aACDJm+SJNNMA%b(d6 z-J@e;0h+!CuU#9uckfg~O*IghkzaF>C!+a5v4!NGCy z;>ACI{xml?7iO4IcXW4GS5(lji2G}%xVgBTJ%64dma1o?KGs^;3;+Y9UF8dzG!MMe$}4ee!KqncqMG6?xoQ&ZpIAc9lOs4BQM<)o9X z=|we_L@mu&=|dJ>Z^Ogs6%-UCqEFa!d-0vVc(F55{lS9=GHW`gBLfSRokg+R4Hb=> zE9koGgoK22axClX>mBUvX|`_NK~}WMxw-P^)2A~B4`y91aCA8E-hy+vv*cB-x^+;g z)wYNlb0?R^pxTcgecu{?=wZ6bbVBs%c*3Ld{)NTGix)09ySN}jHDsh5zHVu$mv8^# z_U)sJiloTel}i`(mpV%_AKk07e$GVN%{bf`fAZwX^V-@n)_sccvFgg_&dp8sm*2Q? zY*Z3!ijAXfte17FK;XJP4@Qhrnzm!JPvG6^*Vh`(<^*D zA~;a?^{eNHdtBIq`F6v!%@-9<9zo{qd-3kwEVdt2VnV|1UAuNA4f=1{wJWMV`tTm# zh8U^VuCC+uY)yNJ<#0Z(p>g#9^Y`!H_o#&ONC!EW7DXTpy3LPokKH&!MO;H10yB^f z36xvfU-I|Nj55{bBKN3~-3cmx&uO~9+%Hl@|Awh)M^_hp>`}H5PK6@<;+rD+MXAr9 z@0Q*&B2Vm~o}MBPRxWXiF7YHEe-S=DK3^?EL+<7yit~TZn3s!-f=m3`M@HhWqqVoH z_?wAOpFE|lJ>96V_MxT*86qjmo;tdoY31?*ah4OBn!*YSoW>`@bcyR&a9)}dB2!hT zM?HMl7G-w}x!EG65SedfINq}>?P==|+H`R<7S(ZD3D;h?k+F8`!-=cr!MsuI8D%U$okW{t}f?=gw&5TKe0f{HaD*d-Zj|Y z&$Vx9wq2i7&Xva*pYU1We7e2y3UVzEeNA;WpODa4?RgY8tKR&*0s`Hwcc(Uv3Vf`u zuk@%_6#t+vquZ2RPNhXtiT`zQ@MX(R$+m5}M# zU+osfIyMWez5|*}5!ia&X_iil?dP@V8vUry@0ZM-chAep$mXx}vqh#B z-RT2->7+eZ-8D35f+{a%8E=iKd4F@o^~R0;A;(z7u73FHxyH`KPHy1FVVD(Y<+xP|(*_v%W% z7mqi}T?u7TNJQ<>CQ3>>Nw%$9w|aVd3P-AQhrKSfa*>TQ@NP^w8IMxk_UY5Uef!-1 z%)CHJu(7dejFW3^Ytt)oUrbhyd@V*Fz{tjy`r<_Z-KAXXE60v)a=i4ZriOnHag>*q zQoO?7P_#}eD_7(@{Nm>3ewv(IURIWE+3N~a@cp~7t~`slrdqp-N#sV7y^@j9pu*bn zG!hUlcVJ-PWW0Rlh15HD?o?G(J$uHRnt?(;=dJ|&CF3|+B9VE$^%-))nRDk}zItUO z^BCFI+srXe*5wV>uBWFbQOQqQO6p4a7K6vp(F!suv)^hMN(Yg?Q4XYIzhv(g6ciK| zZut0dKQHewZS8{x54P6V3t=Jl@4rzU${s0vS=wemx$)!xdGNkHv4z=Ryn5w^3NnoZ zs^F=otJ`w~byfUs^`LE@TrvH-{CwBRzEW)C;_b0q}?YI}Ov zbaD+!y-~brm=BQLq^-WlBEP%1xU66A^Zfbq(b3VyhHUSm&8T<@>_C3oIAonC`zRbE z0=$Zfif-L1?JM<}ot=Gg=4Db+5^llVaO%Y@RD++teqnR9m#1w*%q~p!uPruuUcGkB zX|%%zD+IWp7QuTZZb@EA6&zoC-H(v*SFL z=612Lgt8oZ>BqTs#Vw6Dl+WjuKaq5o&m*kKY;W)zJZT6eH{M8@PC|`mPF9^0R01ZgX{&l^a>-4FJgS zW(P;dn=>QLNJl{MF)=atZr6o?1e@d1MD6gUbH&R782IAkJp$!Ex3oMyWYz}2gPkRl zw<+~WpM1FP(W6JLttU|`QlCDpFgSqS)zaFUNkPZL!h#KPoHt@{V8GqOgPn~H;fml3 zEX;iS_RMQ~AobEgEU=OvZLFk?w=#E4O--6kjxaW+nAmA`^Hy1BOE#Lv$! zC6(7(;ACW_n`L~WK)@Y~UgWWKhn781&cWImnD&H)MH=>TPo5p{`iCJ~#A2qEmooQ@ zmoFRQxNSFDN+k z`*%xI6KeAPhYy*mczIYNYhz_y#DXdVgM%wV&4YGq{^P>5o9Cd0z@|#Ao~59Pp1dq< z*0#2D=!BS=B@HX6xGI?s-C%TlJBOqVs66qFbtx2x1PNpR18LiDAF^xr4pD9n6a^~v z(i0XFv+d5dzzt}9b|NS^c(gw`>#J|bHf!_^_|Qa4)q%I!+1NrXT;G2FJZ{hQ7Xgmc zqgS}gsSrx{=SNDs8_T0H=X=!p!$jJC@aB$D#kdGfeIJ>#+@eSpWqdsV|8FhK|@S`09=M1s} z*VSwcVer!PZyZKv#>LOC2GHD*X{4|`>9a3K9z8UGw#=jQp-|yaGf{1;Unkp_T z8YSl@@h`GX*hx)IeOyf~?7;&$m*3y;?xXJ=`1xNnHED@Ox#Jz#Mt!pv5z(rus`nl| zz@EvV3Vpc#icc|_jBPlFeLjWKd@Pr!zkLa&G5PR1Y6+ zZ*R{@PY)eYPSQSqe!dmt0233^cASip=H<(=Bg&-1#75uxNaH&~T8ga!_iX*Tb^f8# z`s+8*NZNf5e))2LtfrHbQ}uW2@!2oMo)hEaaS;(ul9FsuqW*SsRDDF@qrclYoN>8e z4z0J(rmghlGK!nFvdnZ_75^9+IlxSF_;3!2a1z7j^Ll!5Aas06o0^;Rtoyx-isYLE zNDbJ=yQf0YG$XquYK5}PJWEJWw2yHd`SIhZippJP(WLC`w$|2z^73&b%4PIBcMkXW zpVHAWGdE{rXHQE>Q9(bbfE})yUA+3|*Ik9xlJtsQlGeMMZHlO6On?0N(b>`hQ2!g< zLXh(f-Yc(AL;-W-vcY(>NAOiJGY!jJYoryxlN`1^loY;138S{RDd_it!9gslKP2P$KF zYOp$9&JFB|;*)03Cg^$sLfbato^0Q~9T}X8i#x;VL+Cn%F0(wO!oNl>^)ero%n#0 z9v&-IA*|cUwUHv#ci!!hJ~bZ|9j$WosGP?iRPraCot>Z&koBXb9bP_p@+35rw)w}Z z3NRJQ0Z_N4r7-yeXdc9GTie4CUBypCgt(xno;!Q?nz{KhLK!V6CmIJR1nN4`pZ0pHF%ElxOeW zYsSWg>Tln@V`pdQI~hkqX}ly!gkm_LCdfB#-*xNPS1zX4TkZ){1&wv=N!rCMUOqm` z?$5Qrcy)C>$l2KSfGarsXm%Nznm*6SILSLW9nTC3Z+`qTg5k&!ia9=?(h|L-(=TZM z9%uHS9T;yTl@Z*k+8c{*35jSq*O`%xTbSr#kB(^kJ-~k9>SpG@dh+evE6Pl>$!Dss zbbYFq1}`f!Gm3acNr~b=EaItC+m|B9i3WGk)9L8wumTw2KuoOOmP6B7{pXsEjp*HK zvjPWzUQk3bl9Dv+(u_LX&BNgop~T{dqG^az@JxUD^sPxFM^cvmCt#!MyPUhCNAG5^e+B| z7w#zj{Cj|j@ZPH{99e4c-gB+!pVd!KA4l~I2?_B|0XvJ}L4tev_rO~^)|&@-dzU$V z^-xJZJth5Z%b#@%7bz6Q%sb!Qt~c)P>H-3a9uYL$Aalvgz+m@9q`yEHR0Puo--=rZa77#aJ+;Ox6$wK_br{@>5 zj1iqAFICV9`obuUe=Ucl7Y^P*N)QqF7HyM!SFm9f#G88}#o5@t@L|=3v$1*ly6pbu4 z0VDNBx1Ynqe9kZ4yb;^CkBaN6p<#GTOfVh7>9N?gkG`83RC!K=6}x=77w^s-2-+z! z_p$#EiEb-4qj6lOL^l2Vx4XOhnKNh7K_B*&P@t*sZ32pT_3Bl;tP3|E-|*O&9B>&r z9+5qt+uI8Y3ikMZxcd9qiD>FATfo5U7rDEPc8H!o-wx*DM{9~zcXnESephE_USnuH zi6o3DYGS`|{+ILS$lBg_X6Mb!UZJgZc9!%j->zZ&#=KJuRDqqH-RNbs-oZgZ0>Z** zu%4HW@jM*P$ho&peh_GAW8Y-=TBspQ|7^} z^Z`74e0~n~U0s*>_)>r!<>Rd^ELK+LzXB+7aGg1Q`V9yRBEott4Gj9wjXfnumcgnJ z@K8wStAgEaX*v<%;TukRE)MO)XW&$itE*#GLYYO^4Nt7|lHUYK(R(COD_u8l;O9@4 z?c0wepWaxDC=<-RS>4iN3!btg>L|(uE)FXYFXJ?xb@s)J7s)9p`nlGLFJAn>Z@sIk z`mI%YS|X$4&=Fb{ue6o+x9Q(pOdfluDkdg|GiLCzOFbjZRfmgLpoLqSIx;RTg} zIJkF@PAm!(C5}fC5fS(AzqK7Yo?22?mNYh=5E*&?)Tw4fS5Y>Z!0XLvfou8Bo~ zUWosU_}J~c;c_d0;K%#?+RrplnoAz`6nlCOR0M#z!={ZFzaCy#xbpJsD>^bNFu)>c z*adfI(w_qzgBuc-psYlKh6D6O{V=|I6{|JY^-f(yC8gJJXDBSc-x0(VN<9$vXV}ghtOv%gf;e_B!=#dUkdT z(DwK5i-XM@eVK%CLazoffM7RYhof$O`uv&87hKapF)?}u2J8)V!)$D9x|c3Nr0R`r z+)P^7iPD=NP;U%bWf?^R$O89;z~4n4ZouY9BWKTkZvS%j?Agj8TZF|1w}%}sJIo~< z=fY}-fP*Wlt3@v7+gJE+2fGH4jokk?P_gYleE5JILL}?zK~d)5j~~(7U(_d##(wLM zwYB_=A3ucc(YbU9ae>mJapDAmYV_N;r>G*oeib&i4TwN@fC^ECKu(*D`^v+gWH25H=L3@|xY*5VD`-x(uXoC?~;4@~iEd{yA zvp(m|ZrqSAu55Vq@+E!M4H?CS`QWhB_^mXAyulUKuO&q4of@*HwAg&Tt&Ub$a2?5? zCZOhOpsgFC5&$Nt$FT8;ar3=|y72I<_2kFdYN|XVCQ2kUw_H&*{}D@<%x$n2hljr} zcRdEVKQ=zD`Il1JV8l-)W5@Ta@|)Wo!+lJz3?;XV4MY&`M_Ac9Nnw_$Dt^ z$R0)qn7?|=vr7c^e^3I5w`{ChbRc2=)aW3-<2;kCRq87e-C1Z}(Qt1xvH{Hsuij8-x zyWd`CxLd9B=4wq-q7wQt(ukmGOrIU%$z=^xJoe0hZQfURBw~Sxn$ZPr3$Z9rdj{Z2 zuaw`p;%S&AH-7@+^Wx&-nf*Ihec4I7`H{nY=?12pv7>>kMD*V86B1e(J&VL_WMl;0 zjrulsM`DG+U4BOD_{QqFBS2cODFvC-Un^X?aN$vOw2q$M>fBg2QHK7zXdE=hz>u1o zyMS8AGpZ2X{U0v?J-@j4eT_SwcSx%A3p=}0Z1Q?=$M|@8(Z0MMYv6ux{1A2t4z#L= z4kc^ti@k^~b*cLB>cOZwFtstB*e8f#919E15PwCDs_Nq8y1{?8$B!|vJ#}z$LLHWD zwtN175Liz5Yr4^~!D;-L>X_N3YL zt(TV<+9fo4DbJpLA07q)GhKFj%gviNBlu48O7D^HFrP!~z2LqYxI-W~B;;@S(3-}0 zkX>E>ATw;CrlupGJ9iEmfT7!sdIa5v52h%%_R?~)va&KVZs>k^d3o_?Z=?6&W)oiu zahncENX!vZ+7?nmbb`&CEq1*W0?yG07Yi3T|_w=%i3T(9@82)4t}JCry`mt6Q?Zz2R2pZMmzRU23#1bh6`h)zf?Ofn zoS0wN)%B+(SsmL4?I2bV3iZX;2BoOl{tch6;j_LLIEj!=!N~)u^GMT@5|#`uWm-j4 z)FHwtY1y3DRtq7j{h9scRw_l7kB^UuamNjXeDF^j98@kVLe>Mll$?>li9%>)b<&>uN@h;Z-GG2y;-*cg6u|QkL;^Ht&Vtmz6(~`y zKuiZE!i`%;qHL0M3jl69d9o2wz^Nz4F28rSDeoQy3Wlf;hf(bCm+U zfFP5=?%iJX#%l|McSA!%m8&U8;C)Q2yx0?k`1zx-Q-LDgI{P~_uq#qDV;@5SP*V$t zkLQf8=ap_=>$A->YfF9c{5eb=my2)85qmfn>gg0%?(=Dv9>m8_jEsQ9Ymh$_$Qq>q z79+Ue7i+qQarS-&c$E+HI=7INYDkh-1SG~n=d zc0XolXyPnFd-fQu{F#;IxH}?A#bpn6@o$fuj7{SxYlL2DKymQCIWpA$BawHto2&o- z8hK!7sJz{GnkWrm-1gSiJ;V((X_DM~0ljJ)A9%^71J?DF!UY*b2l@7|CoS)}}WQqR*zTWdEjo72WVO)&#^yont zn<+^o|4rhW0iU|MT))@t^3~GPx)&Tw(`-|58$TrIN23m!T+-1wnhh?vD*oml|= z$G(GlgW$s5Elwh6@Z(P_DwH?*T(Pv2xBaGyZhGga43Wp2CgM!9FPuI5&i+SBU7ZH? zZGwkGA`3JwAd!-AovIyIuN>HATOdnxW>DUlO0!4o|0ErS2P5#${DfzJ*+!UjyhBjv zH?{_PMCV?EoC;&f>hr|Ju$UMPdnVDLkr8}@!_dbafEipC-qnM#3Z5J?FQmXJ!*qjc zN_|~tfj%dGxB=ZPMU+fH&p2-ZH!M` z++N$*IME{VNR}gGuv4zJwG|ylB-#{iUz{Gg5Wdx{TX0TL7W1n=iiu(Ky>~DFJNP2` zWf7*J*^4KT0)WM3ayxxAQws9(Hp8Nk|M0;BhXW33z^Ur$>W$@|Ri8dFa?OA~ZD2fn z_%JGt16Bl}(mbaR6%6I#9~}-9S3{oNFqupSK%UZ|A>E^UUCn<5#tEn&e%q?ASzz@$ zo{u;g&N~j|^?!OxG0<#BkaeAjtB|d%XD|c2)i)zc3r7m8ClNwJr zRQ|}wcF+}Tov$EAK`iXbcMuTfOi4pIGBGv=c>^1?*Bf@>Q|U-rkjz_?zJm9#qO5ASs?kTpjq=gwS!Z1d#+>igJD;PIecUJw#bt zZmLd>rWUR|3kkJUJRaBW9f^eN(xtA}*6EKA1TGBLef)Uo z-Hitc31~#%4D(Jw-dF-d>$ckb`m50EuLrvTn>-eO58)0XiBmBZd9LYA!WuV#DE#u? z#fK0P!hx64!>_mzbq7w#aKuc9kyM4>1?7d;C zs0(N!+>jVibY9;E#fXJ)bZ|I(>Qt#H2T9TP2yQl3o{H=JxDJby?Nz9UQ2)UKWM9So zh3x^2dkc~n+z?Fpxw%jTp7&B1fPBQa+?9(HH3H3f?CjYc6a;TaX1;09#I##DlhE0(nP?V6 zz}^u}GycGy!Bh~s32wBcloY>rr*FM}{rayb;MJo?%s5FTV8{Xh7a$4PWgK<$?SE7R zFvuwc2$;qIh9T%~xVfbDb(nY01vs3b4|oe#$RiIHQWJ$~jNwzbuV8xsT?0QF441X* z&<6uk(fXAS+1k8+9Z@|9Ld>E&dkmPFiirgt5s!m>BEwrcC?eJLr~jZF^-3UipV zhq&*(u(0Ok#p$%v)SD}_=TVPF_v@Fwa+l})6*=;i7GRbV^qCi};vkP6ECArZpr3a$ z*dlZRU~jCQhQNiy)7sko=9)V47Z}9in=6ylyM=@hGD6I&cQjMBu}My5J;rX!&JjAM zqT=bugKKW->~w)*i+l%my^M*MhsR)E9@aXwCP~VzEQ}l+YP9u@_TyPMHWr;JzN2j{TJ8|L;&EfU+2GIhn5J$oMw#V5$-T7 z9I7QuwT!!Vy+}@WfYk=QR=Da@_=srz4&p?>Iw9d&B3#i5oY_B%UJU3;ZrL>UeIOjb z^}sq+Rh!(pnwq>qo&zH3D+wdx+JecoEvW7OoNS2N+a|~#1wy5)yc{G#2py8&H&EYb z>%r<;SO_`xpR6{k3XOai85tcF0G56}X~SrK5XBblgjWU_1Lk8!x1W7|lPLT^ z>RY#lplahLfO$f3Fj`9Bp;rSqLMBFjK%2fZhI?$Y`M&k=rK6S$uQ-5jDQnE4`fEe= zsv`&dPiyH^W8ILgC-xa+mMvShfWTZ^9#-i6K-l-TYzac3Hxy?M17s=ZN$Il5yLXh8 z4PbM+t1WcWT@(H5O8u9*N%JQl)xLet6B0;V;*fv0vP$gZ=XV(N7s%e`xAi@r7$lse z9ya0EiN7}#yoWu1r)f+QHhcfCU$ui%;)f17jdfkKu;?8-i@d`Xc34x*w>KBJ=RlGV zIv&aq(sg}98?=H~5O_wU_nnm#*wt|M{}^PZg~lJ$lVZGWHyPq+*6^QHGc z2t41eOa)?KBNx?cC+8&=$p~*oD5{jiVC9mE1OV|W-c{JPC3CT=?gb}`~lh) zYE?D0+js7S*L*`b0+U>DW({ZjZ!QOeKyebOgnfCu*LFiPy)85y=mrLDbvX<@-$ zHt)Cy>gv$gSiNE9v0!G1)`oxkWhwfI8pffy*PV}!=2gc1a{rE?fR6x1W3WtN9(9i& zv*_!8g%Sud4Gk!~V*bVjhDk48Tt~h_rw^nGAYL_fv$J8OSD|rWJz=LA=dmq_9zD&t zj|prKm>W3xfYi8y5>r#%SCJ{RKAQ;W0A8ME6Yj8(h{(yAUCR6-B8~O+ zA*BXLlDfIpNA&gMVZHDwT89rHOlx$Yad+?c0fe`Xackk6SO3%svqEU6C4OC_Dw4)y7~F# zS)6dcZC+el96bF%nOxG0qy#IxeVcS_gJC94oT~T$d@mWgd18Ws=CH6Kcrc}KbeRL9*1xD-ehdG?1*#Km`zd%~dfB29P{x#Wmdxs;^fE?^3eAw|3ZmqzQMt zF8VOy))pie;1?0$(r4xY$Am7uH3d(Hg1v=F&_5&u7B61neC~SdcTC-4PkEP_$tC^4 z6X9Uqo9_Uo9C*?bY&)FxA;+etr?axNd8IGyd09=MZI2bVS*PK^? zx`2igx|Xe--F7nSK6p8B49dgnNM37{I4S6bfAdw6kGl^v)3mfPXdd`p)D0Z)L>+(9 z3_A-B$jh7S=Ah@L>I3JR2Y_P+69#O#Sz{wgr*~C=4}<_pt{Hg!x3fRh<~{LP9BXnu zLl1stsB^79?4@IGLO%yN1HujFIDgyRcA#fuRfuuGt>yvXlYD&2fm8ZR1WAgrM+Pg7 zK;kF+-=px!_xpF`Cfm3kqEZZzSDYsaw0iKM9f(SV0QxZ;Y+_gak+)#t(R1>!&g+4^ z52Vh-$Y|gx#!NH17lTYjM$_fn6rd6Hy%8dj=;%#jBndNqc#K>_BYvy(;uAC%z#QgVFFCY(y7|0WTobO`A3WY2rZN*%41@z##K`kRO`<9uQC_MMiBrJmlI$ zf`WovWc9k!Kuu}H$##~OUI7(}507PI<0O%&Hh}QZsg6R0{*Dm~K0YUSD^5N8dEsQy zFh1@t1s)D>>S!rQUsPu|X7qfQ;J^e`rLWJqq^+-CJa(o3%X}7B90pA=XX16elIM*i z1`W8xuYRCQJ;p8Oq>GbFO-X5Y990yKtTi|Q&y>E7&Jr-RMD%5R==t*~{6TWh)6*d; zVK58wGI5+gU(ErkZD!)DzLJs=D8V!P-wi4i4J=wHiW2mQ=O)_EbBq#xk-5E}Zi$SV z3OUl}^m0A}>kgqA<2UXSwy8X;>$Z?c>^@xct}nB*nYf^7Y1-2fmQ^la5Pku)n8hPg zhGbz{gxmMq(9m|WxkU8HZU_l*Si4cP@Db+p5%oVKQVqhf&c7Bo0#FtR|C^iH_@Uvo zK4?V=6JBx+Ys25a^D>W)sS{R8o55q2BWa!Z@!70eJd?VM?rYY@ix%K3EN>)k)49YG*~Ov6kaA_(q)%rSLj2nag;(~Iu% zYoMkSsVXZfVDjwx@`YoqhkFC`O0S|P6B3$0tLDKMiID>E2=Gc7sDW#Xjb$hA6BRuL z4H3?z=wEQrL4L1A0uBr$xGNeOcX@CrXd#1?GPvu{r z%E{SioP~gCZ2{3o2sHrTu&~jQ0jm+MNlVm|>xt<>50$SLF&&!WUfA1UpOcaXOs;`L zNAHOJ4xPZs!C}W}I0wcU$%)Rcu7+|(__o7VUuLGKF$8fDYtuJ|&x5y1%5}z6Sy>rE za0YQ$bsBl=12n>!BO>wdB+8L7F4YuzTbnj(}%QX=!=Mt&VD0T)q1A z)~zETnh-ay10=3py()o;9wa8%HwY)h8x-J#X3a+jN_%@RtEl+ZT+M#_Ru_|W@87#) z{se;uIAu^@=GU(up{lH|_PcY3dYz!&duO=UgP4TC+N9sPbIjV>y4$Fdegms5Q^7%W z60SM&y^^Rf`53anR00H%%}lE>m!NW_oPI&Y1;Y|>J=lONB2qFkU~63<#3K;m(>}Jf zWka(^^PM#$%dt(zKlXbJT+Zk@He|q%5K(hgK3@Og#TSW*qV^+NT<*tDF&{7>k)J0e zdH=I*Jo0Uj^?fc}X6W zZLzzW`9Wl(zkF@(T}^?uwrvW_CH>ams9!-fC&~95`DMxV6K6M zl$6#7DANlP!xdn_QOSCGdppe~{K`uoW+1g;N5U+yvM{wLzOk{kHX2r9$Jrksq+(-Y zFsoYHZ;hK$0IL{YRp>lL?ufs{40{JsCq5*ol91_0ROhk%q9rUIBXF?o@i%lNN-zhM zmt%JG`I#FU8g*#j2qA5p74RTMBP#syumK8W8P`jD{CS(1DLU5z zJyF842V}!h?l4V|eb^fKa2if|UC^PJIHK8vb!WdS<^re&b5>-}7VXSlQ*%cQk&jgV z8LvEodcF2L{R9FZ{yty2pi26lkzGtoZP~`4gMhmhMnj-i7rgh^fDe(+b8f!`dENJ{ zBmGFo{LZo%vmEzevPpRIL>tQrpUa%;Arfgu9^3t9=b>(-NN)8OnUdS@NM7eRk4$k^lAVzQO_fFjJwwL{c**5Ikr+stBe z@=Dg-BZJBoj?(`WwGAk0NPl!>>p_J-IW}e2HPKyd!Y^M}LBmtDryKa2u`uQ9Mr{`3 z{p!Zj8?-RozBtXkKfBQ;{(WsCJxUzepPYzbLMb8)%UNhUU*AKh7U{x5(38xc?`yA+ zG-=rPNQ#?#0N@|p6D&U4Z_orR#6jF%LTMPPjcklMnDWYOJY0TNZvJVm`fj_Npn?rz zP6hwlsA-ZIr?mYCH2EOzcRCWE1ET;M3eeKHZ3NhO!wi}9?`W&Pr?KRjZf%fv&z(Xj zJ~4E#_3hfnr+oH5UVvS@IzC;;H2#v};3z*(h3~y@nv{1$K)-;=0Tz{ao$-f>5i_cP z3;wXlYpGAjy8eHW0R`?Cnj|_h(5Eux_MI07edTZ;tu_+(QLX{~Ii@eS0I{H-N4}Dd z)kKF)D&Z7wh%1|u?ANl;f%`|93LE(zksS#?w%o>$X?5$zDEdK1a7HMt@Ww&hWp+4O zQdI>aZFqS2ATtedn+Xs20IB;&YI-`aw14is$jF?W92KGpFrYCfS;L-22|9yHICVuI zA*@K%Tj;jac>hMyj98PTO;d)xf-j8rJDQJF_}{+0@xgHmQ&R|=7<$D=pTsM?#%#(G zyBbkVn2Ca~LWE!m18{yxVwWQZvehBM!37O={%-*G+$)xlc8NSDG%;A&q1%RPdLc>~ zskc}#e%>*bPjCWb7@{*{JTrgPMkjhh(> z{T6%_kQg!rL<_$Cn}{5$BpO-?ml36P=(HKyushp08;rBihLQi?Sd0j>VI95v{3ywo zHljBkLD8kfrI2!-*c)Kx9W*}#;{E#ri6!+~4`i*St-U9r1}!fvvY7wfw|h5<&}WW5 zQrbjn+M+mE;fGN^@(3^u7FY!Vfp*zkLPkt1ocM?)Z7>VB4q+(oI9B=v^b&4gz?gn7 z36f$9`UA>Q8^^j&pX>oBx|7+xvIaE|Hq z>sNA~u}NB!EKg97RQH+2EC7LOV&pL~DhgA3>};>0`~3UshHen~Q5u@yRMge~Ie}gO zn3*oK#OP_*i%maOi=ZQ8pW-f&8)t+JSLNWzT!gj(;DNEPGTv)ShVglq|9NhN;&)B& z>y_35Z7nSTjM|{uQ6{N^xwcorx#T(7cLY>ANNJF0N6*mwQ=cpu%M&m4lw5CUKp)rz zIsNThdq{r7EHk8c;&~VYo6KSkJk{mf$|1|l>Su*SPJ|qUeXj( zW~TLHprhM8U^j-fvB1Ln9MXK$kgpD(@fA~3LI!7M{xCdE7*9xFu|E!5KhI_b(+MO; zPSip`8nlR#yp+B0vF0&OrZJZf8I*WIo}&-2CzQ7N2?ln+ry>fl5a{LbXn-*$jDKOi z-nR)x`#v%k$?K61aZXwmCr)f_KEe~8l9B=nJi1;F{I`pX6md;`uZU|Zkc7u12bBZX z8Q7f(qSew5PZ|(1jmhPTs6q3lE4*_&b%X=PWT{{r%fp{|Jd>NX5bz*Y_tOP8;-#=j!|PbW0nXDU`_zf=rkmA@zCU z-4RGo-mNimXuKUkrGlTspf&&zB0hh#J`quDk+hQG>OW+h^Ma2?uZMS1z8Wr}r zr9Xdu0hff10dw6rASR&yK7_wKr21=7;lrDqnLyBUa#a{-$y^knjjGHB5xI!cj?o){ z%FQ%1vbNv+0lyxZ{Dmq-#KS$NHVjKnftcC3V+V2b(V*u+K}MyDr9wE^3{W@N3|Io) z7O$-q1O%wTi4wk79f0?UJvT{FAEd#_j!b35Jb~AOgJUFZxPvNx&(0Qt_a!de0~5Tm zS3;n0g^uhl3`tELMTv#g3~d9Xvzzc56PNx6vv1B2X^v8r-aA~T$Q_1(1T+8|++ooB zFj0vn7n3ifkszGV=I%k?FdyG)47s6nqdvkI1Of+5|6kUr5wsB>@GCO8eEhb-UaCek zHb7ysGc)MUnMCy1I62{oAt`>vc$7&;^Cjl1XP;vd$R4sHrokY;q5D~0o^FJ|sqD9o zG_wO?{S0S8=e<^a8&mt1K%Q8kGg?|0p}m!r1r$Wgl_l#$fKAl(E62HH9~4Notkv2w7pa|7u>d{E)8s1Z_O zDIC%2$B#?0(f*yVV2^KvSa)1iwd7$iyG&bUrfLyo0zeRB3BYuwCMGKO z!lq=TWnp`lDlW;}ETn+1Wh4Uh29Se*#HD6$l%*5Nr5zx|7{5ZDt?tYsGt zW=6rcHe#QjaFH4&B{;5WBbg`VoNm_Z3eUrAPq;U;IuS51+2~}OM*lcpoJV3(k{J3F5FgoF@Q4_6*ZzSU4#3L@z7xa^b|eySK1ew{$^dW@ER8B| zlW!;xgUt|rvj4Jgj%_|Q#iw?$ zvIj*}!7Ro)=A4E>iquZQ3zHcB!|WdJg^Z{uG0-k>E_LK$hRn!QNn ztfxlN1L#Dyz+}1i;M;)!a$>4(o-G(9#3R^1L`oO5zTtYpRhJAChrKk(x_o#Vi+~}+ zDuV-bWSAh{VN4EUjkq|EGz<5?Ls}a*Z1^@j3_(@_a9BaX6Q2jVYjS!z8pA2gyNb6S zqb&=GiP7yYwnbV(!d*A*<%rQsh>QKm7wG3;0!B=sbL+t<2dLHNW>U!!cn;8sA{Bfv zH~^wh7?Fx9h!I$SrS|1u=&OY*~z?S_14rW68dD0$U3ew6S3A7xM|Ey7;{FQUKVB)L${-_(4 zCo+aPr=1(!8s2}+*!AP{()&iK3_J|M9KN?hht75+QZyZfq7D>?LV?hM#nwXorLoDy>GoZc=N6~DpNO3AA;PD8m4jT^!`_I2yFt>w*WFx9MlCr}C+B-Hp zVah}NVrO96s;TXQ?Hatna9z|Mq^nU9MISY2{P}rsWzs~)mYbV9Q$fK5=^XDmuBk~2 zk`Iqu!CQdp;29D2KEK<#vPPYU{yNAXXI6TXlcFdv|L{U!gXK5b)ia^puK>2cqiW1%VKZ%mq#H zORmimmEhDxVfp}ZxHr+^>s-8uhn`7FO9MUQNf1}6XV;FL7rKi_O@T;cXpc=W2@4Mg z0TGH*MTQCBH)Zd;nId{dzo)IQLiAQC}dK=g+g=F7hQF2dHu&8_i~=pY;n zVDVAu(amE1vMh89SMI%#%N>vTgEMyyK8=}G5G~uu=xU%& zQ6(aozkMt~tFsagx2c4E12l`9uV|NZtsw zU}nS23xxZnJ4YPmyW*Q3@RL|I!Eb0|)+L%abTF&(D%}x-M9}6w-176OcI}xD zRu(bFbKVf-Yk2CHr-r!deWSn-Fib_aR~{_&Nq7%6u!c-ihM0+mYhFsAQpuV;cie6=6DEZ z3K{5&$o=@OwgoASVfnIUHw0h*q`+>+0id(+f&Kipk?s1It;~W^yTIY%kskC4m3dpa z&cHYKqh)WyLsTR@dFCQGxtlNX4a}H7$Y$%n7@8OXpz#BQ1ykRxpIBzZ_er^D3e$EX;dJ-5%0?&@- zZjUe8@kwreRPhCFn9HpZEg&n2`6P5gv6^4AEm)`KAfx40cbegP;nD&mM_-l+BNM%& zWLf{%SRu+6{I_`K!wQ7EvOlv_0StI41c0EMv!t69q@vnSpJot|REc;{(zb2eVkQwZ zXsipY-^zRZVP9*1q94KJwHXog&8a$mtDI8+T%}aY4z#yZ~gvY z&KR{x71KwU+MAyKB`5bb4enG7D}&+2Ea)OAP2?cDm&)Wb%j((?eUaq(xGr|IZr%OPf^lid`D161J ztx|4clioDWGE!1e2bDnPEHJ!u+P`mKu66&qzwQTir)vRnpp39Mgi~5j5HjrXeV$4) zEfpBb4~HWp>m?-{9x4QEA(!mx<@`J?4UNF6CBfm2AvH~{d())f=;2}r~9)IjHrw_0J7;+-NWSiZSs!= zE!g1*pAdNj^B^dx(EK!b0lSb$pc-Gten&`F$7&KG{`xf@0H{cHB361wx}+PdWFD~Z z_})uN;bY|34Vww(>fE4-fhWF*K4o={`#|Bfq21E48Cv!X z{M=xs2`@F;LA2DEpFmxDlbN}hiVDo&{LBn`8q^L{A0XGXFAW931N zPJLZnSz;RdiOLokre^Qr2#_IgmQ%#%pXbp;D#+grM+Tn6a_JI_!sn)@3-501Ae-V& z#Jt)MK-S#Tvs_U830)EvPI4ZT<^b`?zq26zAcdJr6#Rvx#>n*89cf=y0W(1Tk9WP> zl7GXERadaCrbeyfmVeS;1`Ts1+#?J*Z;7YN^{(_<>7G7ama-?O`w@&bn>HbWzu+;H z<>eT1vh`GK#=_)ae4c?J0?ZPyJ~q_AUJB1f+3SMdqFEPGC$iBM!4%%Z8P7)xvk}f} zW(H#amzL?`;fbH`L?dC2d-SL-Mk-=SX;uQ&lb4qlbViT(_smiqLSE29XR!Gn%DA5g98g zLX!ru-K$8m05a<%)ZxkOFKge)V91gaGP z0J-K({_b>+HG|qmkK$Q^=p{qArdmaT18MCFI2XkMcbugTb{yT^-880e^YhZui5eOv zlP6a#4L(X)2hw9MpHa16x!+WB(t%i)J$$$`eOim^=kyOl`== zMVAmq(CNqLpf=-2jM%sLv1f+*`WFII@4Zt0iL^tkdGujHBIH_nY2i7yx~tHv!cT*~ zoZ_$gsS}Sp5-j%i>=`z4Z_9tl;8lml2MlE5QE-j=jV-QNT zhyZHTrC+2+t>ou*d4n+Mz0`0YL=oSif0SCJ@`B%UnOln3`@L zDKw{Rm(C;wV-LE0dUi^2jNAg>?k&Z~SYw&3<181RQ?oP@h0XdV()fkyk(ci5!_U|F z0g5Mze*OGX4dbrzJu#WaEqoyL-Cxh&hEs$I%M{3Mp4q+6r~PcMFr81I)Wsz+HnxoH z7rGqHNTgxk&L=+j{CQ)LlA^3T`+@pOBPeQ?j>K%*G}$t-?){ruK^(;2q4t!Y2%Y)x z-xDYP`eXGA`VR5^!gQ`4o;coWJB+)A=Sal(b7DIoh(r$`rs==O>;z{SE2(SWEvV$E zE*{^%--{y8!uU`2S;b(br!QVi6;t#yG(@R&iLISGe}4Odc1a5h+5skN*M^!{920mp z=O#eAd0yK0H6f*2-OWX3i3S*$m|l)oz!Q}4G9WD^#c;yZlXLk~?_YY?sTwMkH7SD# zTD(SL&CK~E31SC5G+mMvT6>G=cP ziMQj4hWRC^gc@ga$AtfBjmH3K`^Q{FX1Wi--4M_M-vVd?g6Jas zu;t70zB_;Y^0HNH$jsJuy=ZlgKcDnXB<=W3I6ZHTbM{}<@XbE6>BEKtum~^k8A#~~ zVn8CTvx7vFGKES*PT_c!afX_iX2AsS<{X!$x?RNLEQ2mReb{2P>xh z>v_~L>~o@_h-?m!jFN($D<^ctCL#uVU(utORLJ+^zk|a}0Rm@OSWFWOSYXk`l_PsO zV}?L>`Qz0-OQCB6A*=6oM7cDmF@WItBd;ndF2+`-!J*ek?YyD4`dy3j66qfEGQmSm zKLYNE~mT&bPE;#2iwx7qLlE*~1bt3Lik`YB)*&Mscb$;!sur{mAwXNWu>+eG(l zvQ@DNbJhyIa}(Nljnp^*=~dHY0=M-&G)w2&?K?&{Jqke)Amj72`wY48 zZv8A6>pl7eHIWExVuSH5qE9t^`^N8KFGw2&YP@E(a_G00oPumrQkmn3Uz@Ugev-Rh zI(?e%%dXS0$*2rzigxic8$w>hAxww_pP{@X@fdZjUw&2SfG7pqC>|-m#In*9opGqB?Zat(xrWmR#ln5 zCKqHojEmWwqINCgL~F>@<1k=gR1-KVWtMyFG1I2!z>BJz??_=bRv~*P2^lX?0$!fS zFJE3fX;OS$OIif~%eDaBd0Wy-`MgPCndZ=uVMmv;aM`?M)9Q-be5plA686uiBm6cQ zkDADy=wNF)29^%l9=yR>I+2@HWn;{#ftOzM87nzWne=-948Zku&dwlFo3KNf;4jwf z+PgPyKEG)DbK5GXk-@zzD=XuU=j6O4U;fJwxG4+ibkwk6Jw~jW)nwfL@$XC5XZBIi zov&DPgStm3jgecLMQfQM-086iOEA~ESEH12jqAyc8b@Cg6e#}*vN6$#T-twZ<=(=6nws%v z&b<0`HhW&BfAf*uPu&*`s8sA%;yClo1CkRYeMRV|7L0YH7sc9O9e&cy(c1C{TV}LA#ztYLPKfXr<8ctaja?&fXC46+vol0NDP( zVK{u9LL625^l66gP}OOESXdafj3B7lv}uII2^0+yPYT>vPC;D!9DoIIaQJj#S%*<_ni{j=>HS~;(w?ASJ~7- zQMdOpQadP6(B}xEH~VdUH4%qhx9?SZ?m5s6v3BenQ4Twrb$aWd7j1;>QL$hic_{NX zvo?umB_*y(Z=SBTF>z~#piO;QeDmfcQnuGojpsAXXBV~};QnDtlEC%+kfT>uN&FWa zZdAiJ16PNJidh**yrFpp1qY{I6)#UIVn5$prgW3^@~G!Go*^vd3Etm{pa0-00f&up zm3Aci9VdijbSNrelq49K$|&^dp{Dld?St-$iV!4!fQkc)6-OICwQ0wFiu1bR(eb30 zs9Yw-T=&W?E?4k0^)pCSdp8UoR=`9$WEBs0fQ5yLX;NZ(MKnyq*Sr_GEsw6k9iZ2M3s5OCnwxIPir)EMz>MM96{S&39G|#oDp;eCE z+TA~v$05j|KO-A&Y@Rri^jzY^4b4{1+9xHUw23O5{`DDjIO2XrovYyX5WHqA5LCr3 zE=Hg>Zp?gy$$X}&-yqL9WodqkKU+LDk2Xs5GFi$a&arRwDOh1HT3nE@S*&I>-qk(D z%LGSfXxm}NS7^xT%!nG=1ySuyUfXZ*-!1Ww*2c~*|U0ujU`0}S``g|wM z2~?~t(}(<^2DBNhDx?!>X$vhZ6!pb7W-oHaJ_q9FHSh4liy}L>|9NnHjp&+2VD?WN zY9w)@;pKyok%3p17$NJc19X5BSC_FEI*>#XfFV6t9<6I(96?D5{q=W9bm!`I%{u^i zh1lsO$S-?Oo%UL#8fs}Bt6LyYD>D5&WEUyk&CA=K zeGi-TA)aAL}M5G*Jp+r%*#gV}EoZXYQZsznM&gbchm`>*m%2~;sZHj}rfQvYE@#ZiS=lXU@2 zo)k+6j-DrEBzheA^aSW)z1i9RWtS-80~rA5YC{37up^-Jp)y#HY*M|KZkfmVW!dHVA<$>-2_MP(=!X&(Q#rk zJf)aq{{TE>Y1w4jq_Q4~Sn!VlL0W+PHaPy`pT3Cbv6x5oN>)h^q3Yx*HV&oHLewS5 z2Uo311AvF>fqb*1#2VKdkUa1g`!&PDbA%xX>(=3|Hdyr|8Ih^q5`6bcdD^7_dI&7i zor~RJJPuvdBX>kk0)ENy*309IqoO9+@#a`19DmaA=GVe5b)2~y=4KPx8lR4^o+`1# zge&(!`Lw*wd?88=$~TpmWCAPRvDRk;agv12i@@yTO+Z-OBI|c|uBdZpm#3d5`)5=5 z$`x1uv!ab?r;{#~>=V~IQ|_2YbBvex6k9Hok9V0>b~Ca7MkH&0+SeCI%ipr7xu+8G zBVb7$zgTm~kn`a09Qx_lmtxnoz_pg+k!l}rA0%dZQ3jK3Y>d!2$Hm=v_DtXxgREm# z#uLX&o}!phGp-&U`e-2Q$&9e-%qb=}kcb7gkp4S=dMMsrUdX9)$;|KHU&Cq1iBbFN z@ZA8r2gwh>z>;leWk#5$-F|Q;bZN{PlZ)1oo%)=-YoE++#3*)m$ODSWGC<-@ zZZg&78h(DQJR+n3mj<>7e)7h~*AW4C?m66)gSDi@2LzK{$vNP>dHw$0lxQ?z=Pp|0 zN2<%MPAU4K)y|l72=9q57E7=0=o_|+jFTv|@Iu;Fxze~NP8pB)Wc;f+-0tkCf*Ln3 z;*9O$ODVCRmf~g>wgtoH&z^x%_7QzuT?egHpp!@ zLap~Ses9{otk;);?`W6f-ODOPqj6)$vuI3%=>JkC!BJZ6=y>PR(()Z$G=mz>^tU;! zuGFQ=rVq~t(B-FN6d!-{=gY}hEM305u9=- zrYtQzx<1y{(UhJ^x0N+n^cd1S$M&=Oa~yAqBhq;Ku?N7 zP;X+gKtmlzH1n)#oX&mm_5gPTGE_I>Tuj~kabe!kNS+Rz8sM~kLC6;bg$+timY%M* z_J*UscuxdY*?&e5Y>A)X^x&vU(>;iNG$Z@)3+jsY4h}(!grPPY+}x}$I!x!9b+4al zZM~^1i9Tyy)mbIXR3|d*)Oq!#Lu_6@eX2EN$fMaS0G0W}?hkS;?s2U5R9H{Sg%5G+ zc->P&qU^+89Vx0E9ji%*qd8mXH`*r!s912r@%h#a%2*s2R_*0pNd^5u@=e5)20A%i zx&(ID7OX80R2bk9<8#o7@Iivn&t)QAET-oC{QVn%)#cTt>5xOFO{)fi5V~NE54SC} z8vFvR1Qy||Yi{I`*bP8=P?{{^2ch;49x@~_AOLhcbc-2h7S{$+2-^j5C3AnsmH08B zyuwV6^*l7kYuZ6AnLPn01mit-yKcdWLs+~kU(|LsJt3zYDvcK~>103J4phJAw=e#> zgquu6rDMux2N-)l{$x;H5Y=5L^8Lq;#qNGIAcW4@`ckMoxUYHAT?gT%j2~=wt$FF$ zs$V~UqNtwFcm-!>MJ(hz$==v`md*$bjT>ao(Bw-?TOgXP8{JzIVjbTEN*|jw*@}T0 zhYVfq`P%RtZM7>n@MHe?2iUdmDY`L;qEEY~_cK z9$}{Rp|bKbftlxw{c=7wSrlrR@VET>HppcK`r?w^SU$39!D}<>1)E~?Q&n$3dD#eK zk-aeT#P}5$84rjNFG&Aq(-#MUDDP!d5}4i5Bm%qiUETe;Tl&@OkJ_GQi#~WDr+I1R z1Jwyn%o|uj*+%BXv)2=L@7wo0Y58qB)10TERvWr44$6nW{;x%>FAwFfevb4V5ir76 zitslSgV>p|7R2$$93CAt`c2qHWxFdh)DnBn)Ku7)704g4>`$fZk`^gVRZEn^rNKXz z;KWmV^4@Lqk@K7a@83_?+RLvu!RHaI23UN;Y#9O*MH+lsiqmnKY3Iw&!X@=w%gN0> z`gd*uWtPq9cRK3e+%PCGKb^L#SE_wZr}&&FPX!wt_a=|)2DXYj7fn-;lN*5}SyNMW zOOy=_bS9k1{_ZKyRFG%srKLA#N((WOh6stsrQZWvTP_FxNYRYSRZ3abYw|-YT)ap( z;ZZG2v@XI+@lRvUWTFPDe!5~DpqT$Pn8!D-`&v85{N{W`eBYfte(5B~&eHMN(DCle z`?}UDKHuPoKL%DqZzPB=F~&fWlig|H)k)+nY$0@~fDxFN1&yD5)=?-sZuGyoND&U; zWMC*>SSm120#s|s`7*6UYIW*cYG!8Xko#O;Iv})6c$@|8X!n&}_13MmGCgQ{hWquy zblNmsEiHTWezZf*E%j>xxn*-b{ z^zYC^E!@TppUfMK8|Ou5m?DwGCMVn`y#Iv#ar8|1Ghw^kon4^?kb3F$Sw>&{=@Vf- z>Qh&j-PZHx3o8vyGjiiKNCXq;oP?IxE2vVP@!`?{Y?Maw#Ioa-r*hc+%H1Fq_> zQVs8>rna>zw=>#)6gaq+zm=Y$B}`H%y*j>s|0yt?QNOeFUbl9BoZ{zlO~GhQc;9|; zg3GzR{l@xIqfZef-X&MPU!rG6i=uW(xoS>mvx~fe+`k6dC6lV4umM~P4XneX20`C= zv}%)|-V-7NAq*<`YJ2JNAJ zFc9<e_=&iFQL2!n!O{G!f%)cxBr2HLCK*yl!9`*xt?vm}VKFMIJA2*8k|y@E^(`{@|wL z<#i>g>X%?R0tKARhG31+TQm(7Jv}F+X18{KJmTfPxoZH`G97|V8#e-!Zab|`9Vos0 zjTuzwx(qo^ihu1z7sqVOyadc7-W-U zY4c;Gba)7mG;CN#p26D3pL{*^z36VIymjM+RWIHP-3#{p+__K5*ZF*2=#=o;m;hf1 z_Z&K0VuLh3xYB33b!RA+0&$OnQnK^RJlB8>1^^I2w{vah1 z#gmeZF);WE5nGsef^#GxmR1gW2fh|=-2(LwU`krGLrVE7#PuQ?PEe%7o+@ z(b${O`2)EldQ)OUC*ua)QkW6vH1ZYqn05>&zxU@i(~l+TiA1mqIt5q4Ifcu*XAjv+ zAZ`o10Ow0EYG*Kskl_M@;cLx{Pd0|2S?NsCJo?D%|ItAA&6>@;l52w@1T8S1V_~r# za|CWj*T6Mh?Drc!@hfP@vk5#a+rE8!rPSj&wpcf{wP+c)*RMpl^Ly#@@M8MM5_(hg zNaoM~T5&ssq5*;o-7Nm;qHafHfV`Ig4h}5%NKB4)i49xIz5Z5T)=E8R{O4;I`o1bE zT5DF^`++e7lYCBQWb|01SiZndPGqvP4TMS91((j4+Fo!v<=Fu2QknC@=A|)o49}Ni z3|k)pS3@z;Rd|8uGL@^KfDDj!$m{0+y&-pb0!h#swt%CR7;w3&mt z+mSkhpa?sX!5uH2JfZ*A&D~Pue^j>Vh3{IMwdOeJW0u&e9Hx~Vb6Qk@ibB*7Sg2zj zr1VKpr8+Y?ib0k7*PAIKbZg^0!)Bbsy7DLf!LxKWQSZ@ksGQ%MJ7?Nu`i;w`dW)K{ zK8IwBVdAs=eDWvUCZ|~Rb$Rvl>1T2rM0-dh6nYH1@!-MPg3t4flDl`XSCtQ4JWONN zO(pY(KIgAKJ&<(29hL|z`$Do=f+U8a#H*6Ni=Q(hDLXGu!S4Xu;;GZ6H0L<^NZ|ww zSp7G8K3ut?u}`1ps)_1Jm}&tq8zj4gY$mHRH zQbbGYXVP`e>Fn_%ZZg_=tx|vgQ(ndKx8YgYEYHSc*RH8AQiT3qx%`{RXKeUcSyJ&y zMqRk%t$PfwPiDnn0}X>YTU{rzXwo--*dkC6t&K$8JJ-Z{nOIn#;?2FrnnlOFaQ!Bt zF|m4e5xgr1oG_&1Mq`X3^3lx;&yovg!%0pT{F%w0R7$Dn)>kY~-^1WBlfjcJ-x&Gi z;C2zLhH67p`mx)}oGS?_28i7=h(Qz|bi^y{=Bs_|T$ZBeAJw6q@K_JceB*9WlwcX> zdNw!X>_Rk7ne{3$QSk;Nx98^f=(VY+$CWi(6lG*l{`3gUzUSTcSv!T#Dp?>G7>IdQ z+XtI5;YuS{!}YVeTLJgD?MH_pqZeiO&^9j(9K;Alr4_IwEEX1htcm>Za2LpN zWds4XM96+bGx5_;pa?%&W-QftLqrasax{H90Jkwb{$T@HM zNBvZpI@6nC|JCcVKe>cqpK%w>a+({frjew=nQa&*|Kn(fE;8AJqlBFuBxUfWpFDRZ z9P+3}5Fqm3Wu(qS@9r>sF(mGL4!7pk^O#rh1?8;Wc+6G-+4lt3Sc#a~19Sd<*ZyYF z&5QvHRHE#U{QGrh@=ZFZ2#-+s%K-ZK!WxO%#xMW((mhBA7bg@N!@)O~iN|v*L=)PD zMMgACspj|(YFpAr`Hg9wQ#abT zSyszURyfJ;Vkf*?E-aURM1M}4aWS@5R(iEoTwsHYws{LZ7>RhLqods4rH1PwvOJr}Gf?h$ScN>M{sR@{`tM zMG`8_K_-bqn_BrCM>_!|<()V}Gz3vb;Pl;}_vV;Jk)V9~I$lc$u)vjp;brC7!!2<_&hlev# z;LU<%YO%@PeIEzN3U_R952XRRHGRB1gW9C^iK@T9-u)bLUl?bh8A0QcO;&oD+(&7 z%4Z!O*-`WBkH!_tWqIClA2nP%<&h~WOF-%mwymuE&3vyrm>^G{%&aFZBO{x_WPZCw zi;oP}ABVWHZQ=M24ago~DJ-?PQ+%E!4RQ2)G*aoe+}ceHFj>Tv>2>TFhB1R?P-RtB z@ZXE`&mQ1JFF@?ImS4TYn>aC*8WSuI2f&8Ezj|uY;^g|OErMW=@~-64>PVbD6crzI zyykfGe}b&#!ku?^U3SIUOI`iEjn-%9ziTV`$EfXzOG>Q}2+&V_=Gwd0u6Lh4wY;9$ z%r%l;Fmz_*$QyCiJVMorN$qNGq6G?bCZS^NTPVcz2)!QbW9Y1qs#wEvOW<=KwA2zJ;%I39}mP&_a zK~kghhz{=G`1lH}gMR)=;M*Sz%r2S&VU-WbenwXe&fP!vTAQ{GU2+Li*3Oz=fr1!6 zEDr))e@9M3iA)Ssd}o(x3MIj`1J_pSp*A@?eJRLF$Q@d!)%Tid2U+6(LkcG_MM*b< zlp^o>AZWxY zkI~#{DiD}XAaFPrX#@dn&@F=2i#ju9O~Dxe7Hs3el2)x;iRUpd#Dv)J#K*hR+;1D> zXp2GtMz_1gI7)`-=x82WrT1wT2ImkY8om`MGYB@PcGq$bcHC8E?YzWH>}q{{1V4A$ zPxx#AQjsbvOIUTJn;7~{65qRf7qr2-FiDu(TUG|VacAR`lLT(jbkj-m1!D5hp`WPM zD5VV7s*og+))O6=&=D4ch#b|NB)teL%~=u}+XFrYg2*cX0*VwMInIL2Z6U}W|ooqNCd;16YzK0JT{l`d8& zQ^htES}e=xA%HU&UQswUoFy(Uvb1dY{+$>Z@Z%wh=Z}*rYZV? znmX!<1|wsqOaW;cM7Ii3hHz7Te6lh#Gf57DC7{p^jg8b~JA<-YXP*QV-AYvj`G-A? zg9h{MFg1jff`fSDo>vPASiZmO#^94VtqW5lB;6UqoX4OqD@Gyano3OV1yh+$^zV&|sM7c6IDquR81n(2-QZUa{-YxVM|O)Z?7HkOt*9EM;2 zJroNv043MD(QR`~%2B9r;8sk7Q&rkQL8P>4kKvSHb~qNo^f^(;Ly8De+r1&l>KuDv zB7!-gjX!bgnr~+q`2Zx%-9)$-CO1QVJ*yX9XZhNE_F&c=J39;O2yF9NSY$hBk%(PQ z*?V#I9f^Vq#%bQlUz~mHwke^=q)Dp+$w_dv4jQg)Dbs=LcM z+1G;ILb=3Xn_*($XFYoMyi9_|Jah5*sUrV|NtIp4!uDB={=(EWh+$U_4%*3`vU;E} z$_XE&8ANhRo&*OQV*e{g=z|B)qy{t3&(Dvj z0B3^k=>?kfOvbpYS10xf=Ml8Cq*dYwNUUr{k!6<+?b#>H<%wYP-#1aUIdfPjh)JuiUJAtdZpd%E= zL&sq|%8l=nNJ2&~ghw@dQE%M1E6xU^l366KjM9Ms1ho^cFHl>@@meh7J>zT@j#PV9 z&Uh<{_z9g2{ujTmC@04_+3I&gZtb|tTvoj3Gcr6erjnA9vUiU!N~Ce?;n4(uP5Xqe z^`!N#q;<+q8N6jAhy zIYlJL*gl+FlDcE+@vUcjHc$9Z9HelfFiMlv*lPw!mrYL1^BTQv((ToDJXIhXR=VS( z!-8?OZR)i_hh|M=Iuh_4tEz1rt&+Q`NHj4ZyJ!UHzM8SGHD2)u=h)V_6i$uOiM))& zkIhIYA?@W0(=Xq@vy%i02)!v65s~w12B8*!*j2bLEvcVG91me5 zS{JeRD_6}~$xI@07o2~Evz_k=CmL5|4cG6(NIi2rlo(=8f&&MRE8!*edC zr-u|gR+bQ3Xg<ubG!FA}M9r{}Q%Ybc?*c7i&qPwEIgD2sLCZv?)JgUt_Q+l?T z!;--{T0yk$zXihT5$J*sk(sy7!L%R$mE_lJI+u zx94f#>73&*98M+TLb^kmQS<003Bncd9Bxs-*cFc%;Sxt5V%@bVOkT&6#E!?9ozq4pVPZn4}A!WKBE)(&UBxKS8lyC!tCMSqq2`+H7 zkMB8r=04C5CFuY3n(E`jNqFt($!WLk6tvAn+49=vjqsnGG1!09|<8LcM#~S z4z|iqqeGy*e+Ebpum-P)N*!^Ar(DC`amb^5)i zjhSd?y$QIBukfp(B9Lbh+Ptm}Z^$glIGA|nb#I|H*!IGQ7tQ-O5*Y;wjE)@-kt3r} zrN3r4uS0TkzR-G`=wlXdd4R-<^mhG_wX~*#g+83AgwBz(^>5JrDDy-eJ9-Kz7{RKl`J`AG2T)}Spw>3kFS z)G>LFA5$3LqzyGz5eo_qQqp-(kbIJkl4^mtN!UIn6=qs#oyeh7hp_y^^XeSGrAVvX zKG=vvb7aEiH4E*(Lx;Fme+@of-QLhoBbDzQY2ncvk zWfz=b4h`j8>9x%tRV7Y5WlsaybIg~0_G}Yzor~cCK~JQnIy@pUnsGKD<~mom~! zyIZ&Yc}LNFyrUju^?=7uo*bCcAkbT&ceDG>rX$1Gi450umi1xx&C_!1PdpRpOBdf*YE9F`Inw~UqQHtsbH57hWZMq7~%pcfOcmYqAT z8E?!7rKfwGnyA0mkf@~xfsJJjHvf{(?;d?vBLP1w^mU*QIuLNQ`zqm}ZO%Fck&uUF^=*r(XHRx@6+k;=!uE_Z^0#2L%e< z&HNj!_sm)QLA#p2*NME>=4=k>jFJ)N0KLDVi!YwY$cXx_SbQGrVzbpK`$X+7BF$gN+xa@gU5%CST&11))1Vf8fC{6Ak{0O82GZ zk9SahtY6C((squu^5vHVK1cfcz6LpOiK~L?7OvAASQ=#c8u8$6|uV z|KIcJQq1uL`d@sy;&h;+|93uJkEXt={eE2%{PJyW^Bji5Nyhj#ijYh-(-ypZKE4^cxL_3io6N_@aDD2B|FHl{1F684dyVmBqFBu0Y6W~311 z8Ep><;Qix)vZ~E726gGc{nV^p`~g7>L=_4rHKQ6{kGdGPZK5m0bq?I$OGRZP_yI63 zgp66S6aT<&BMOK$As; zy5Yccc;KiH6OW{oWBkgztIyPS9>bQ1y~GQm-dcW%E$&C^fe);p#9o@7Sk*yGB$BjW zTflJFah?rvbRvQ!6*_C%s4Pm7Hkuw1zW+tjV==vQcK`KtHDxC|02DkpD2N0BRa1LS zH^{fp|DpV>U{g{okSPOYk`!3OT1FQLSz~g^b8Rpw`qW+4s!ad?&&u1+tQO8uaXbm@ z<`QAB11=jGoa$6HM-CsRk?}%BO%guoY4NKrDPx0n9+E|eA@|@=)6F6t?LKg?7A=#VGc0Ql9 zQCHjiM!Pni7%cs>Sy?3o1^WTo$7@Yu@-TqcV150*!#^05Q3ty_ zz8+)Q17RWyg)O!5atSe5n7!l8J?2aTV90;+gbkEIV!9>`^ZOY=`H;Eir;HVOwOe<+ zi>9fDQdYH}%P`OU;GnXku$l!$BG4P0hUaAzq1z#b&_PDJBA6&Et)D-VoV=IMFKPd>l357Yi$ z*fBZ7xx(=%Y(X<^_l?2ZZVi7hPOEFD@z$kZDmhI1pYJ(5J;eJRrwAvXx3@P#xxrkS z)8w(W%hgy*y*C>S$#5a(lKg>w*!V0+AKiFil=QapNQ;RA*PeC%^5xFo9##EzXr`>$ z;k{{9!hFPX3>VGR8D`deU9i8>c(gc61*Fh7DDzOr^FdC|IDi_lDbwWg5pV z_0}#-Je_#{s#o2W<_lIQU6gz2T58Dzx>no@rmX|&C@U+gkL@e*y=$W2lpFFpETu^Su`8Qv@_zr=HED9$z?6@DT`u+R& zrpwk@oBm{y4uM81gh0?5M%#ie0r@obl}BRht;DMV$5Tc5mo7=aXx5E5(%Smz^+7Z3 z`^ELy)g|&hqNrxcD>-VRLJ~CLC(*}8O#>cJ_rH-bM6@e~u`ZtloI1#iDJMOv zKls!5M@CEOO!~x)X~a1C=%v*oFZ}#so*jGW!>~i9S_4+gGiJ@CfE1D!sYw?#wMSKr zOkBV-Bl4abc^NwGVZ&}16q6by`3@-S%?J(qlp@+jhW~yjLAXm*O@+ZV;JO*&(MQxU zf9WERcg<7o42T{0EzO)!l6@(i`FTPTr7nC>ZqI|av|3|x>@U;B&B%b`moRu1iXx;NZEEc(733`vLDv^K0R>mZpbDgK-cZ^P+PGr1m zfNvfKQ;QaP04*?M8pxGy)?@65n<*pPrW=6~Kn0)xBMIikGbyy_wQIW(oQDH5gtj#= zu5nlE4Rv~i%l=%vbZNfU-b-ay5L5xh11De+ioiY&9m(x!`RxerJZJU=H4CuKt?>$? z8PBJWKi5Uv$17+;#eZ=Dbj+XgJ9886kG~lf=NeF&%NBq2>hSFfjt|aP;kAGNaz$=C z^|^P3FEr^jYsTTy3yM-pNqe%>yAg9n)6jB?j`QoMBxY1p$@6_`mpWz^Bc{4+IMz!) zN?)H3m_Km;ES)Z4GqN1p_tLF7iENe^1;0<2)nF#J64wbmgh8Ns>1}b>uGwlREmK4( z7iM}4j2hxJFZylYaXMN-jQ|^t{BQV(5x3XI^*u>G0#SfKeI_9RbI@U>t|H4}(%Vcl zl=QmZ_ggqPQt|vt4V9R2U*rzWvTZn|yAVISeO~Teo+-AAC>hWXeBlev*Rs$96zVm^x2I=)RnVE-v8F}tC6N!3Gcj?$k)0`$8}N(Lv?iW&p#xoKM(b& z^>t3R%0d*lWfF$E>{8M*wuMgxcJ$C*=$M(ujO$%2F`gk1nQ7B6jM%-K-apOB#x@=q zOnTuDckTpr1o2KZ(ZGrREiwmc^Ax@dDca9*t4A`}Jn`(=NI`D^5y$A4wWuaAPPl_W zQT+bF)^QLiz{x$_Uy`)!-Yr1jba{WTU6yQx3SLb;4B{zSNav0nCkehvJ$m&zI(E~) z46UHkzyhaoBh$XNp(4Oik1-7j9Xn#rB94Fa#(|yAQ%Xqq3CD$sdC9zan@A_6w`okA zXsfNlE~Zy{!75pc!MIb8YX&iQzIgp2y{_N47iCFV8VEP>7O*ch!_p;7lGgUbVd|}S zG-#Z*3S|SqpPm9_2SN~5ORaR1pu$0Vw>p%V_=yKxYL{ZFH63jX=oMl!B?&Pf&J$u? za3ZoMkA9G;PVWJRHlECWZ%(jv{@x&?C z_t$%96zC0k!od>SpW$FfbpF8$I<}YKgqOA*wBv!pMX(WCVz*06kIvG8%rl>jZ)fL6 zSS-A0HTp=*;lqqYf7)_bhZAe|*UmTmrJ0d-S{S$#EcuCVFBlU$isTFDs4yi2fI``o z+$-5?@ctQ1wMB&S@1I`J)QJ@A>$znrVcetF6@S#(H?j15ncwuGu8x}5h^zRnI|=3h ztjDdOj2^a|88b-!9Fz}+&!11xQjRe<=Esn*k&3K(d~`_HPS;z0F@CkA<;1)394h=O zjFkNJRm1-i;;;B6A`pJJ}1G-L74o-FI(d2hf1BdIYhTJ&Mf{Z%-bqxkx(x9!f@C^(M;M%aDAZ+l`R!K-r?KVj8 z+y*>Iy>tnH>e$JX1utH#vbSe0(|!A72ty3fVt{O6g?q4Mxv%fFhzJ@-$8JsRC;BB_ zNWgsms_b(cqt9~Y%y3gJS9kYZRf_XwcqQU^LLW2My*xb;TtjHOh!KF+-iI;c$1tmo zD}npFUQ4+GA9ucWIA-fTPey++t=w~9H$SYK+@f;6d%w~h;yIad2YOZGwBi7 zy_u`#AXE{zug^Mx-;s^YA8=kUFk&38=)${~Dw~9GxjzUg;crBkNj7bEx}9h&u`q~u}625 z8q*L)5vrkKLPkUr4;olubErtZeZHZTWd}%_oO*C_P*4*Tc&m=>17N9LSe){XlG~~k z!V1Ije4U(5)3T>g)Rz10=66UG7@Glih-xv}h7q7uK%wmIb#K{vo$0)h5q0WBdJ0(o zSs0|=MCS|r7U&z3L`xCekrUInAOgNhze46kdzVloP>ul_pII2wN=i>!vm1LtF8R zZguL)vl>lPqQ*(A`Mj|3NBr->$y@x(`UagI1fUTjBmXPk^Rm(Ni0i$tc5?Wn6}3=) zN4!?ltoP zHA>gHC?j%HaG53*SB7p2knS_Lmc;Q*ibazyB?a9V>KUJj*Z&I9l9T7?b%nV$^3P z=44*;`I(o(Nh~iDXntx%yP6f5|MaLe*fkYFJheb!i{5t=ZgJBz3etr%7~lvAV4g+n z{g>-F3Za~S_%M!JX8!4hR6C`S=AvICxIFlr__y!{e?BkTio9MZdIiY**|XyM!7!_V z1bG4N(zeZax|DcsHd;fFwMglBXeL%x4T=+ETL~jDgXm~4_$w@AFU!juKULr9s~nH4 zrkdQ3%v_M0>GnEhH5gFL93JxByL-yYNVE3P!-Q2-^y-!S@H3Mwz+h1z;LAR}@PgLf z&gRZh2g^8$y^2xeXkFPbC+6(%!Hx9t@W7>I%!ryX8Dd?t>LXP~2?erE`*T*wAl z9deYfo8aZLtf2TXJ! ze0nm;>cxvou6m6+_y9DzoVuP)H{6UD{D5(;oQ$+^g??1b_`DGhX%cxl{=9(mOEbQx z^cts%muI>aK6JX;H}W3q-GMtme8$)M$fLBB6uC~FKBNxmtEW0^(D!|zfVgn&*BS`2Kc@b2qMQUSDpdahuFG&Tin71mKDx{>0h<$v=fFW-W9zVvh`4U0f z!vnbU#j26`|O2lfcN{-(!R6c$aF%6?zYKa#0Uk(w$$P{1J#c%1nqmC=K4m34*QtT zEozqoCeA6qu3z962Dlf)WK>87!NEDCq|q@k3;LL>y#z%8y6PMF|8HXu>}bp0vGJD!ed|YuBqbz5Wp(nF(p$eL@B1mZp-a>LnJx%jIm;a zRKlQJT?lwYmcx)WMqD8$apo`Dt?^j|NnBn1Q*Et~v!LZjPfe|e5$nmbR%H%Q%xDG) z7Ed(&Pr8^5R)sXw2$2Q$gmH62;N0|rwNp$@v71Dm?Od9*SZi;&nyj9T@Vk%%2t)cx zViJkC=bd9%j5Ihogn&SMTmC*=N6e+aXJTQYkHZL`?RiIPhZHegD&%&BMiBfe$G3HE z#L{J3?P<`&SOgW-<1-Qx64Eb-IiGlI%7M0Y@aJ3lk6^3eSlg+60QY6!ia+2KKrQ@} z^)T$$SjkvR}Ij*LV!#x`vSM&$YEpY}hX}v?1S829WS{vfI)( zm2MdUAGRch0rj4aQVcQd;=e64$DTaq!sW|jdAsDbAT->{$zt?~*qr4gX4Nwn6Y}vC zF`4?Tf%_}@I0oa1WKP5WCANW3+WG#Rvh6I6VLGvo>D-bS%`0E?TdH=%mY<(jE?Ls6 zbg@Z<(zpqh#{u-dJsEmsLCKK&;ZlbdbZIyItWNGUM~nmE#Omxdqh~|vv(RiO7t~!< zb?UTf_^tSuo@f#5*^%mExlE>Ccd+SJz07WdU+nk1tDh%ErA-}`1JIE3N8<}Yq^`EM zkD3~+Z7+4?O81G_=(Imx=;Z{1kiSFQQmkJaQ`R}l{%gxa5*mLgXBaKSeY)8+SgQTr z(YtJ?Inw+4x+$g~V}%K{N>})9rIT*l3FP^hbXQkr+++>Q7jJ|!U^##0ktv=5UHf(B zpU6mM34hdScVWb`z6vArCUzDUJm3aoh9qDwN+62AA3oQb6R@LM0Y#4}WYe?jHL602 zJfJ1ayhdD5nXdiMix&$|x&+*Fn49pNls{_J$$DXowaLg{g4zL-J4#$ugvY0nn+MQA zUBa}4Lz9eWCP>F-uP-eepvsan?+?#S_zIa5{BKYWiwMFu-B4;TUVha@nprOww&`KC5ah{Ip{ATTWhZq-2hT8axP{J zd#B;d!OCGVyd};XU)s(^2j#;i&dhvIdN-i2PW>8ivYb{urlE(1n$4Io&_yt~z5R`1 zp;NFHex$Ga4RyRfx|zqB-+YsE2eck<|8*?UQ`9;| zTLsgocMRO3A^dh@a&UWTsXv=O_S$AbTbwR`VnjqlY-}t9g633~mqdKE%raAJ?AR?( zSh%X%EP>!i(okP7M{>7LX%g1QLPSs2*|9j?MJ?oZ&rxf-wz*nsI;>j7If%?CNjl6F zEh5MhBdbld#=6%=(eL{{9~X`9aoCvg!eoK{OBFgO?P$cZRjalu&COjFVlqm2`lTyf zT-3XFPlr_tOF!x>12rc~D%3CKpUJmzw&N@X8+t~$?nI+9(clIr85c0EHg6`F)F{oG~uZQ z2uMtWBMMnnnTp}db=IWeV-#dLb*hY{hK@LFrRi``l9HURrxC>ji5SHSI|CU?ABAd~ zEZ6|SKFcHoc$5tonRiWrxDdAjfr?mDdRzXrK>P6r>l>Py4%R2rCG;(Mho2gXtJ1~f zRZ{03X$XxUn$F`F-xelt-%cSYV7!gsMpsw%$ORm@|G85|`h?5vTxm?As}|iycLL$L3^ePhyd>gxf;*{}t>@ zbcP2Yd#b1ebh~R;`uw>=o4A6FP6nbZA?lMeLepZR*g>CQ5NDx%Z>Ie@J(^6XPoHRv z_1Bk9SXTjJ!s%#$ku_zA(nTs=i1U!=LQRihOAfQ4xa@l;8L{x}6&Qxw8>17oanCV0 zLexnyke%J$yCMGGEg(r4P4pGu^qsq*O~BalqX9;h?*17$c>~_PeT&MGRt*G5Oib`* z^RVSi-5pcjHO#ayeuYjX{>m$tFE?;29vP8P4|GJ0Zvz!Mwn)nT+T;;i%8^ z-|$M{O;gj6ev&dkceK9Z#xyrU)cALT&g-qy3iD^!vgo-!_J;l0xu^fc$K89lN`5QX+ z-(ElZN%kkFDMkEvXzN&5Q0_s7BAOz(yO%yxHJm;*U_z2_7Bo22gYeHO)4uWDC?%gf zp=9dfy_OXYHcX9)Nb~!*Z+|#mh`KM%AAeTpMWe9TZ{gJnJEa|&RL z&#{!xvD~SIs_0##Csb@!r;SfobY`YEq9IZ?pL62@jydH|ox%s4K^4jpK8G3ef-s|5 z<`H7r+&g#BqHr$(SBKbL>mz7olO67<1mzQck}tv+g09JfEvI1NE4|xbSRb7V;=gd- zyvSIK{(H^HE73=0%pV939|>=NC9%Li+PPC0#Y&$LuXi52q9QX>pbfk>Iu*X_$a<`) zTi1EtyROmIBe_Q&0lVu8`fwx&15o^K+Vt_$+QoxkfG3T=&{0k<(r$S;bIRCuey3*n z+C-Faa3;$FJMpTY5WZ`DIVM=X!YpFCB9gneZ?{`IT;ODGdY2V@pXozi3hM{y>6wT( z8*VbJ=~52NVPa6@HtyG{L3+2x+oaS(Z0#r!_s$i6og$ofJFsCApLm#Cw0_x_V>i?t z%g8-NaXq->L?o@fHLWf6tqplkySApa}?hVsgkOr&vee!zHir>7hy%jY@%=7r z>`9ve4U*&%O!~H6fmxx^KGOZ1sijgI=O%RRUAmr}O300+h3hlpJODTv7W){|Tv=n@ z(@X?gYQ0T8$lLzshp-TYhAfUpixo9?rn$BXPM#V;3oqEdzUO&8&Vr;~WSPWSSE zY2dRa6`>uMvgY*Qlvz4*Vlk3UR?#>}`oEveR%{Q)fh_C7nKQkxa(8q4IzHv%*U=4I zKMhxnimvzGF)+9Ph(4I7=slp3jvB*d*)l+wyQ@+Vx-^=f7)NH<`tz|L?ID1N4VBp) zApm4`kqV~n6Is&J{{KRsQ7#Sh*P28G)q6?rL8!SnrY6SLS5@7vYHTn+VLd_pG5Wa2 z)ie$6+_}T_hjMDe9uzbFPY<Up2{dH?_a^M71V(#d3Y{+P#jCcI#srlrH#){H*rj*uqML<~fwtO-3V?SYY-_4rgliD{rL1GnM?+Ik63@1o`daK=N5 z1`j@a^p8MZt=3RQWN0d zLo!_RjhF{-53NE+)#~k60EY!e2qO@SjolEWOgId(sV_~Gc8MVNOzX8Hdf`vxtHXb# zN7`WR7$Enov$tCa$B2a=zME#TZV$N%dc8ji?$3;`!BfriBY!?y#k55I%V73yYB;NP zXomJ=KLIf*iQrpPJ?&hDKPq`6E6>az2q}0Y+jc?MLwzzjI$SnbwFP8wt(zN%eiQ>Tz2cikzHqMmKe5JfTx{)%#kf9wJ_Bp zGEtGu2!-VAW^xP6%S@AVW)@S_O}O*1g-8Q(#dA~j(`)Z)44>O*170FsxQve~Y6gFF zpibwH0zZdB&Q)b_wdjsWj0gv@i_n4uUf>e$!r+s%y0edWlC30_Lx%3xrlpI%A1IN2 z9;UT6^B})GGt(<6UULrgTsba6C`MYeiREywLd+#e`XJs-tXniicTSuA>_5KC2Clnh1 literal 0 HcmV?d00001 diff --git a/framework/spring/spring-statemachine/src/main/site/markdown/index.md b/framework/spring/spring-statemachine/src/main/site/markdown/index.md index c50ae2de7..785f02278 100644 --- a/framework/spring/spring-statemachine/src/main/site/markdown/index.md +++ b/framework/spring/spring-statemachine/src/main/site/markdown/index.md @@ -3,6 +3,7 @@ ## 1、简介 #### 1.1 特点 #### 1.2 场景 + #### 1.3 开发 #### 1.4 同类产品 diff --git a/framework/spring/spring-statemachine/src/main/site/markdown/scene.md b/framework/spring/spring-statemachine/src/main/site/markdown/scene.md new file mode 100644 index 000000000..1dc6a7342 --- /dev/null +++ b/framework/spring/spring-statemachine/src/main/site/markdown/scene.md @@ -0,0 +1,22 @@ +# 状态机场景模拟 + +## 图书订购 + +订单状态(大状态,取消未退款等状态忽略): +* 初始状态 +* 预定 +* 待发货 +* 待收货 +* 发货完成 +* 取消 + +事件: +* 用户预定 +* 支付剩余款项 +* 卖家发货 +* 确认收货 +* 取消订单 + +状态流转图: + +![](images/booking-state-machine.png) From ee61463f909452c1f8c12ee7c0429172735d0fab Mon Sep 17 00:00:00 2001 From: laidu Date: Mon, 9 Jul 2018 22:51:14 +0800 Subject: [PATCH 116/417] =?UTF-8?q?=E5=AE=8C=E6=88=90=20=E7=8A=B6=E6=80=81?= =?UTF-8?q?=E6=9C=BA=20demo?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../learn/spring/statemachine/StateApp.java | 36 +++++++++++ .../statemachine/action/PayAdvanceAction.java | 26 ++++++++ .../statemachine/config/StateConfig.java | 64 +++++++++++++++++++ .../spring/statemachine/state/OrderState.java | 2 +- 4 files changed, 127 insertions(+), 1 deletion(-) create mode 100644 framework/spring/spring-statemachine/src/main/java/org/laidu/learn/spring/statemachine/StateApp.java create mode 100644 framework/spring/spring-statemachine/src/main/java/org/laidu/learn/spring/statemachine/action/PayAdvanceAction.java create mode 100644 framework/spring/spring-statemachine/src/main/java/org/laidu/learn/spring/statemachine/config/StateConfig.java diff --git a/framework/spring/spring-statemachine/src/main/java/org/laidu/learn/spring/statemachine/StateApp.java b/framework/spring/spring-statemachine/src/main/java/org/laidu/learn/spring/statemachine/StateApp.java new file mode 100644 index 000000000..94cf0f6ec --- /dev/null +++ b/framework/spring/spring-statemachine/src/main/java/org/laidu/learn/spring/statemachine/StateApp.java @@ -0,0 +1,36 @@ +package org.laidu.learn.spring.statemachine; + +import lombok.extern.slf4j.Slf4j; +import org.laidu.learn.spring.statemachine.enums.EventEnum; +import org.laidu.learn.spring.statemachine.enums.OrderStatusEnum; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.autoconfigure.SpringBootApplication; +import org.springframework.boot.builder.SpringApplicationBuilder; +import org.springframework.context.ApplicationContext; +import org.springframework.statemachine.StateMachine; + +/** + * 状态机 + *

            + * Created by tiancai.zang + * on 2018-07-09 22:33. + */ +@Slf4j +@SpringBootApplication +public class StateApp { + + + public static void main(String[] args) { + + ApplicationContext context = new SpringApplicationBuilder(StateApp.class) + .build().run(args); + + StateMachine stateMachine = context.getBean(StateMachine.class); + + stateMachine.start(); + stateMachine.sendEvent(EventEnum.PAY_ADVANCE); + stateMachine.sendEvent(EventEnum.PAY_OTHER); + + } + +} \ No newline at end of file diff --git a/framework/spring/spring-statemachine/src/main/java/org/laidu/learn/spring/statemachine/action/PayAdvanceAction.java b/framework/spring/spring-statemachine/src/main/java/org/laidu/learn/spring/statemachine/action/PayAdvanceAction.java new file mode 100644 index 000000000..a3b60d94a --- /dev/null +++ b/framework/spring/spring-statemachine/src/main/java/org/laidu/learn/spring/statemachine/action/PayAdvanceAction.java @@ -0,0 +1,26 @@ +package org.laidu.learn.spring.statemachine.action; + +import lombok.extern.slf4j.Slf4j; +import org.laidu.learn.spring.statemachine.enums.EventEnum; +import org.laidu.learn.spring.statemachine.enums.OrderStatusEnum; +import org.springframework.statemachine.StateContext; +import org.springframework.statemachine.action.Action; +import org.springframework.statemachine.annotation.OnTransition; +import org.springframework.statemachine.annotation.WithStateMachine; + +/** + * 支付动作 + *

            + * Created by tiancai.zang + * on 2018-07-09 22:29. + */ +@Slf4j +@WithStateMachine +public class PayAdvanceAction implements Action { + + @Override + public void execute(StateContext context) { + + log.info("支付预付款"); + } +} \ No newline at end of file diff --git a/framework/spring/spring-statemachine/src/main/java/org/laidu/learn/spring/statemachine/config/StateConfig.java b/framework/spring/spring-statemachine/src/main/java/org/laidu/learn/spring/statemachine/config/StateConfig.java new file mode 100644 index 000000000..d0fb0957d --- /dev/null +++ b/framework/spring/spring-statemachine/src/main/java/org/laidu/learn/spring/statemachine/config/StateConfig.java @@ -0,0 +1,64 @@ +package org.laidu.learn.spring.statemachine.config; + +import lombok.extern.slf4j.Slf4j; +import org.laidu.learn.spring.statemachine.action.PayAdvanceAction; +import org.laidu.learn.spring.statemachine.enums.EventEnum; +import org.laidu.learn.spring.statemachine.enums.OrderStatusEnum; +import org.springframework.context.annotation.Configuration; +import org.springframework.statemachine.config.EnableStateMachine; +import org.springframework.statemachine.config.EnumStateMachineConfigurerAdapter; +import org.springframework.statemachine.config.builders.StateMachineStateConfigurer; +import org.springframework.statemachine.config.builders.StateMachineTransitionConfigurer; + +import java.util.EnumSet; + +/** + * 状态机配置 + *

            + * Created by tiancai.zang + * on 2018-07-09 22:14. + */ +@Slf4j +@Configuration +@EnableStateMachine +public class StateConfig extends EnumStateMachineConfigurerAdapter { + + + @Override + public void configure(StateMachineStateConfigurer states) throws Exception { + + states.withStates() + .initial(OrderStatusEnum.INIT) + .states(EnumSet.allOf(OrderStatusEnum.class)); + } + + @Override + public void configure(StateMachineTransitionConfigurer transitions) throws Exception { + transitions + .withExternal() + .source(OrderStatusEnum.INIT).target(OrderStatusEnum.BOOKING) + .event(EventEnum.PAY_ADVANCE) + .action(new PayAdvanceAction()) + .and() + .withExternal() + .source(OrderStatusEnum.BOOKING).target(OrderStatusEnum.OVERHANG) + .event(EventEnum.PAY_OTHER) + .and() + .withExternal() + .source(OrderStatusEnum.OVERHANG).target(OrderStatusEnum.RECEIVING) + .event(EventEnum.DELIVER_GOODS) + .and() + .withExternal() + .source(OrderStatusEnum.RECEIVING).target(OrderStatusEnum.COMPLETED) + .event(EventEnum.CONFIRM_RECEIPT) + .and() + .withExternal() + .source(OrderStatusEnum.BOOKING).target(OrderStatusEnum.CANCEL) + .event(EventEnum.CANCEL) + .and() + .withExternal() + .source(OrderStatusEnum.OVERHANG).target(OrderStatusEnum.CANCEL) + .event(EventEnum.CANCEL) + ; + } +} \ No newline at end of file diff --git a/framework/spring/spring-statemachine/src/main/java/org/laidu/learn/spring/statemachine/state/OrderState.java b/framework/spring/spring-statemachine/src/main/java/org/laidu/learn/spring/statemachine/state/OrderState.java index ab2188455..4198ed58b 100644 --- a/framework/spring/spring-statemachine/src/main/java/org/laidu/learn/spring/statemachine/state/OrderState.java +++ b/framework/spring/spring-statemachine/src/main/java/org/laidu/learn/spring/statemachine/state/OrderState.java @@ -13,5 +13,5 @@ @Slf4j public class OrderState { - + } \ No newline at end of file From 964eeefba96947f4f08cd72a6011a1a5f42c9791 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=9D=90=E7=AC=83=E5=A4=A7=E5=A4=A7?= Date: Tue, 10 Jul 2018 19:18:08 +0800 Subject: [PATCH 117/417] Delete request.xml --- .../src/main/resources/burp-site/request.xml | 42 ------------------- 1 file changed, 42 deletions(-) delete mode 100644 production-component/crawler-helper/src/main/resources/burp-site/request.xml diff --git a/production-component/crawler-helper/src/main/resources/burp-site/request.xml b/production-component/crawler-helper/src/main/resources/burp-site/request.xml deleted file mode 100644 index 86d047369..000000000 --- a/production-component/crawler-helper/src/main/resources/burp-site/request.xml +++ /dev/null @@ -1,42 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - -]> - - - - - vulcan.genilex.com - 443 - https - - - null - - 200 - 437 - JSON - - - - From 0e1df0a2db4a39833720b406d35c7a91d0a847df Mon Sep 17 00:00:00 2001 From: Tiancai ZANG Date: Thu, 19 Jul 2018 10:21:12 +0800 Subject: [PATCH 118/417] sync --- .../learn/commons/net/ftp/LinuxIDCBrower.java | 10 +++---- framework/spring/spring-aop/pom.xml | 6 +++++ .../org/laidu/learn/spring/aop/AopApp.java | 1 + .../aop/service/impl/UserServiceImpl.java | 2 +- .../spring-boot/spring-boot-app/pom.xml | 1 - .../src/main/resources/application.yml | 5 ++++ .../spring/spring-web/spring-mvc/pom.xml | 6 +++++ .../org/laidu/learn/spring/mvc/MvcApp.java | 10 +++++-- .../spring/mvc/controller/HomeController.java | 13 +++++++--- .../spring/mvc/service/HelloService.java | 14 ++++++++++ .../mvc/service/impl/HelloServiceImpl.java | 26 +++++++++++++++++++ .../src/main/resources/application.yml | 5 ++++ .../src/main/resources/logback-spring.xml | 4 +-- 13 files changed, 88 insertions(+), 15 deletions(-) create mode 100644 framework/spring/spring-web/spring-mvc/src/main/java/org/laidu/learn/spring/mvc/service/HelloService.java create mode 100644 framework/spring/spring-web/spring-mvc/src/main/java/org/laidu/learn/spring/mvc/service/impl/HelloServiceImpl.java diff --git a/framework/common/commons-net/src/main/java/org/laidu/learn/commons/net/ftp/LinuxIDCBrower.java b/framework/common/commons-net/src/main/java/org/laidu/learn/commons/net/ftp/LinuxIDCBrower.java index 8bcea1f35..ba7a71838 100644 --- a/framework/common/commons-net/src/main/java/org/laidu/learn/commons/net/ftp/LinuxIDCBrower.java +++ b/framework/common/commons-net/src/main/java/org/laidu/learn/commons/net/ftp/LinuxIDCBrower.java @@ -5,9 +5,7 @@ import org.apache.commons.net.ftp.FTPFile; import java.io.IOException; -import java.net.InetAddress; import java.net.SocketException; -import java.net.URLEncoder; import java.nio.charset.Charset; /** @@ -45,7 +43,7 @@ public static FTPClient connectFTPServer() throws SocketException, IOException { public static void listAllFiles(FTPClient client, String path) throws IOException { - String pathName = new String(path.getBytes("GBK"),"iso-8859-1"); + String pathName = new String(path.getBytes("GBK"), "iso-8859-1"); if (client.changeWorkingDirectory(pathName)) { FTPFile[] fs = client.listFiles(pathName); @@ -55,13 +53,13 @@ public static void listAllFiles(FTPClient client, String path) throws IOExceptio continue; } if (ftpFile.isFile()) { - System.out.println(ftpFile.getName()+" >>>> "+path+"/"+ftpFile.getName()); + System.out.println(ftpFile.getName() + " >>>> " + path + "/" + ftpFile.getName()); } else if (ftpFile.isDirectory()) { listAllFiles(client, path + "/" + ftpFile.getName()); } } - }else { - log.error(" change dir {} error",path); + } else { + log.error(" change dir {} error", path); } } diff --git a/framework/spring/spring-aop/pom.xml b/framework/spring/spring-aop/pom.xml index cc6bbb94e..cdb72b467 100644 --- a/framework/spring/spring-aop/pom.xml +++ b/framework/spring/spring-aop/pom.xml @@ -19,6 +19,12 @@ spring-boot-starter-aop + + xyz.xpcoder.commons + monitor-spring-boot-starter + 0.0.2 + + net.logstash.logback logstash-logback-encoder diff --git a/framework/spring/spring-aop/src/main/java/org/laidu/learn/spring/aop/AopApp.java b/framework/spring/spring-aop/src/main/java/org/laidu/learn/spring/aop/AopApp.java index eef6d1a98..003640e85 100644 --- a/framework/spring/spring-aop/src/main/java/org/laidu/learn/spring/aop/AopApp.java +++ b/framework/spring/spring-aop/src/main/java/org/laidu/learn/spring/aop/AopApp.java @@ -15,6 +15,7 @@ * @author tiancai.zang */ @Slf4j +//@EnableMonitor @SpringBootApplication @EnableAspectJAutoProxy(proxyTargetClass = true) public class AopApp { diff --git a/framework/spring/spring-aop/src/main/java/org/laidu/learn/spring/aop/service/impl/UserServiceImpl.java b/framework/spring/spring-aop/src/main/java/org/laidu/learn/spring/aop/service/impl/UserServiceImpl.java index ddec0afc7..072557588 100644 --- a/framework/spring/spring-aop/src/main/java/org/laidu/learn/spring/aop/service/impl/UserServiceImpl.java +++ b/framework/spring/spring-aop/src/main/java/org/laidu/learn/spring/aop/service/impl/UserServiceImpl.java @@ -23,7 +23,7 @@ public void addUser(String name) { } @Override - @MethodMonitor + @xyz.xpcoder.commons.common.monitor.annoation.MethodMonitor public void addUser(String name, int age) { log.info("name: {}, age : {}", name, age); throw new NullPointerException(); diff --git a/framework/spring/spring-boot/spring-boot-app/pom.xml b/framework/spring/spring-boot/spring-boot-app/pom.xml index 787bbf42e..861435577 100644 --- a/framework/spring/spring-boot/spring-boot-app/pom.xml +++ b/framework/spring/spring-boot/spring-boot-app/pom.xml @@ -32,7 +32,6 @@ - org.springframework.boot spring-boot-starter diff --git a/framework/spring/spring-boot/spring-boot-app/src/main/resources/application.yml b/framework/spring/spring-boot/spring-boot-app/src/main/resources/application.yml index 660f95209..04707af59 100644 --- a/framework/spring/spring-boot/spring-boot-app/src/main/resources/application.yml +++ b/framework/spring/spring-boot/spring-boot-app/src/main/resources/application.yml @@ -49,3 +49,8 @@ management: debug: false trace: false +monitor: + project-name: app + + + diff --git a/framework/spring/spring-web/spring-mvc/pom.xml b/framework/spring/spring-web/spring-mvc/pom.xml index badc691b8..54126875a 100644 --- a/framework/spring/spring-web/spring-mvc/pom.xml +++ b/framework/spring/spring-web/spring-mvc/pom.xml @@ -19,6 +19,12 @@ true + + xyz.xpcoder.commons + monitor-spring-boot-starter + 0.0.4 + + org.springframework.boot spring-boot-starter-web-services diff --git a/framework/spring/spring-web/spring-mvc/src/main/java/org/laidu/learn/spring/mvc/MvcApp.java b/framework/spring/spring-web/spring-mvc/src/main/java/org/laidu/learn/spring/mvc/MvcApp.java index e15ed2e88..8468808a1 100644 --- a/framework/spring/spring-web/spring-mvc/src/main/java/org/laidu/learn/spring/mvc/MvcApp.java +++ b/framework/spring/spring-web/spring-mvc/src/main/java/org/laidu/learn/spring/mvc/MvcApp.java @@ -1,8 +1,10 @@ package org.laidu.learn.spring.mvc; import lombok.extern.slf4j.Slf4j; -import org.springframework.boot.SpringApplication; +import org.springframework.boot.Banner; import org.springframework.boot.autoconfigure.SpringBootApplication; +import org.springframework.boot.builder.SpringApplicationBuilder; +import xyz.xpcoder.commons.common.monitor.annoation.EnableMonitor; /** * spring mvc app @@ -11,11 +13,15 @@ * on 2018-05-30 11:29. */ @Slf4j +@EnableMonitor @SpringBootApplication public class MvcApp { public static void main(String[] args) { - SpringApplication.run(MvcApp.class,args); + new SpringApplicationBuilder(MvcApp.class) + .logStartupInfo(false) + .bannerMode(Banner.Mode.OFF) + .run(args); } } \ No newline at end of file diff --git a/framework/spring/spring-web/spring-mvc/src/main/java/org/laidu/learn/spring/mvc/controller/HomeController.java b/framework/spring/spring-web/spring-mvc/src/main/java/org/laidu/learn/spring/mvc/controller/HomeController.java index cabaebe99..499f3a62e 100644 --- a/framework/spring/spring-web/spring-mvc/src/main/java/org/laidu/learn/spring/mvc/controller/HomeController.java +++ b/framework/spring/spring-web/spring-mvc/src/main/java/org/laidu/learn/spring/mvc/controller/HomeController.java @@ -1,12 +1,14 @@ package org.laidu.learn.spring.mvc.controller; import lombok.extern.slf4j.Slf4j; +import org.laidu.learn.spring.mvc.service.HelloService; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.RestController; +import xyz.xpcoder.commons.common.monitor.annoation.MethodMonitor; -import javax.servlet.http.HttpServletRequest; import java.util.Random; /** @@ -22,13 +24,17 @@ @RequestMapping("/") public class HomeController { + @Autowired + HelloService helloService; + @GetMapping("/hello") - public String hello(HttpServletRequest request) throws InterruptedException { +// @MethodMonitor + public String hello() throws InterruptedException { // Thread.sleep(500); // log.info("url : {}", request.getRequestURI()); log.info("active Thread count: {}", Thread.activeCount()); - return "hello"; + return helloService.sayHello(); } @GetMapping("/sleep") @@ -39,6 +45,7 @@ public Integer sleep(@RequestParam("sec") int secends ) throws InterruptedExcept } @GetMapping("/sleepRandom") + @MethodMonitor public Integer sleepRandom(@RequestParam("sec") int secends ) throws InterruptedException { Thread.sleep(new Random(100).nextInt(secends) * 1000); diff --git a/framework/spring/spring-web/spring-mvc/src/main/java/org/laidu/learn/spring/mvc/service/HelloService.java b/framework/spring/spring-web/spring-mvc/src/main/java/org/laidu/learn/spring/mvc/service/HelloService.java new file mode 100644 index 000000000..6391f3cd0 --- /dev/null +++ b/framework/spring/spring-web/spring-mvc/src/main/java/org/laidu/learn/spring/mvc/service/HelloService.java @@ -0,0 +1,14 @@ +package org.laidu.learn.spring.mvc.service; + +/** + * hello + *

            + * Created by laidu + * on 2018-07-16 15:14. + * + * @author laidu + */ +public interface HelloService { + + String sayHello(); +} diff --git a/framework/spring/spring-web/spring-mvc/src/main/java/org/laidu/learn/spring/mvc/service/impl/HelloServiceImpl.java b/framework/spring/spring-web/spring-mvc/src/main/java/org/laidu/learn/spring/mvc/service/impl/HelloServiceImpl.java new file mode 100644 index 000000000..6eb397026 --- /dev/null +++ b/framework/spring/spring-web/spring-mvc/src/main/java/org/laidu/learn/spring/mvc/service/impl/HelloServiceImpl.java @@ -0,0 +1,26 @@ +package org.laidu.learn.spring.mvc.service.impl; + +import lombok.extern.slf4j.Slf4j; +import org.laidu.learn.spring.mvc.service.HelloService; +import org.springframework.stereotype.Service; +import xyz.xpcoder.commons.common.monitor.annoation.MethodMonitor; + +/** + * hello service + *

            + * Created by laidu + * on 2018-07-16 15:15. + * + * @author laidu + */ +// TODO: 2018-07-16 15:15 hello service +@Slf4j +@Service +public class HelloServiceImpl implements HelloService { + + @Override + @MethodMonitor + public String sayHello() { + return "hello"; + } +} \ No newline at end of file diff --git a/framework/spring/spring-web/spring-mvc/src/main/resources/application.yml b/framework/spring/spring-web/spring-mvc/src/main/resources/application.yml index eb40c811f..84939c971 100644 --- a/framework/spring/spring-web/spring-mvc/src/main/resources/application.yml +++ b/framework/spring/spring-web/spring-mvc/src/main/resources/application.yml @@ -19,6 +19,11 @@ spring: mvc: logbackUuid: "_uuid" appName: "demo" +monitor: + log-path: logs/ + log-type: monitor + + diff --git a/framework/spring/spring-web/spring-mvc/src/main/resources/logback-spring.xml b/framework/spring/spring-web/spring-mvc/src/main/resources/logback-spring.xml index 5f2587b71..62d12e21e 100644 --- a/framework/spring/spring-web/spring-mvc/src/main/resources/logback-spring.xml +++ b/framework/spring/spring-web/spring-mvc/src/main/resources/logback-spring.xml @@ -2,8 +2,8 @@ - - + + From b6bafea2b66d7011f24b7c98c788aa58872f9cf2 Mon Sep 17 00:00:00 2001 From: Tiancai ZANG Date: Thu, 19 Jul 2018 19:34:52 +0800 Subject: [PATCH 119/417] =?UTF-8?q?=E5=8D=87=E7=BA=A7=20spring=20cloud=20?= =?UTF-8?q?=E7=89=88=E6=9C=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../spring-cloud/consumer-hello/pom.xml | 9 ++-- .../src/main/resources/application.properties | 2 +- .../spring/spring-cloud/eureka-server/pom.xml | 41 ------------------- .../cloud/eureka/server/EurekaServer.java | 1 - framework/spring/spring-cloud/pom.xml | 25 +++++------ .../spring/spring-cloud/service-hello/pom.xml | 7 +++- .../src/main/resources/application.properties | 2 +- 7 files changed, 26 insertions(+), 61 deletions(-) diff --git a/framework/spring/spring-cloud/consumer-hello/pom.xml b/framework/spring/spring-cloud/consumer-hello/pom.xml index e850205fb..9ab5482f5 100644 --- a/framework/spring/spring-cloud/consumer-hello/pom.xml +++ b/framework/spring/spring-cloud/consumer-hello/pom.xml @@ -19,19 +19,20 @@ + org.springframework.cloud - spring-cloud-starter-eureka + spring-cloud-starter-netflix-eureka-client org.springframework.cloud - spring-cloud-starter-hystrix + spring-cloud-starter-netflix-hystrix - org.springframework.cloud - spring-cloud-starter-ribbon + org.springframework.boot + spring-boot-starter-web-services diff --git a/framework/spring/spring-cloud/consumer-hello/src/main/resources/application.properties b/framework/spring/spring-cloud/consumer-hello/src/main/resources/application.properties index 79187a5e7..5bb0229be 100644 --- a/framework/spring/spring-cloud/consumer-hello/src/main/resources/application.properties +++ b/framework/spring/spring-cloud/consumer-hello/src/main/resources/application.properties @@ -1,3 +1,3 @@ -server.port=9000 +server.port=7000 spring.application.name=hello-consumer eureka.client.service-url.defaultZone=http://localhost:1111/eureka/ \ No newline at end of file diff --git a/framework/spring/spring-cloud/eureka-server/pom.xml b/framework/spring/spring-cloud/eureka-server/pom.xml index f6082f081..9c221efef 100644 --- a/framework/spring/spring-cloud/eureka-server/pom.xml +++ b/framework/spring/spring-cloud/eureka-server/pom.xml @@ -24,48 +24,7 @@ spring-cloud-starter-netflix-eureka-server - - org.springframework.boot - spring-boot-starter-jetty - - - - - org.springframework.boot - spring-boot-devtools - runtime - - - org.projectlombok - lombok - true - - - org.springframework.boot - spring-boot-starter-test - test - - - - - org.springframework.boot - spring-boot-maven-plugin - - - - - - - spring-milestones - Spring Milestones - https://repo.spring.io/milestone - - false - - - - diff --git a/framework/spring/spring-cloud/eureka-server/src/main/java/org/laidu/learn/spring/cloud/eureka/server/EurekaServer.java b/framework/spring/spring-cloud/eureka-server/src/main/java/org/laidu/learn/spring/cloud/eureka/server/EurekaServer.java index 43a57d7c2..8f900d368 100644 --- a/framework/spring/spring-cloud/eureka-server/src/main/java/org/laidu/learn/spring/cloud/eureka/server/EurekaServer.java +++ b/framework/spring/spring-cloud/eureka-server/src/main/java/org/laidu/learn/spring/cloud/eureka/server/EurekaServer.java @@ -1,7 +1,6 @@ package org.laidu.learn.spring.cloud.eureka.server; import lombok.extern.slf4j.Slf4j; -import org.springframework.cloud.client.discovery.EnableDiscoveryClient; /** * eurrka server diff --git a/framework/spring/spring-cloud/pom.xml b/framework/spring/spring-cloud/pom.xml index f931c6a3f..f87122962 100644 --- a/framework/spring/spring-cloud/pom.xml +++ b/framework/spring/spring-cloud/pom.xml @@ -23,7 +23,6 @@ UTF-8 1.8 springio - Edgware.SR2 @@ -35,11 +34,10 @@ pom import - org.springframework.cloud spring-cloud-dependencies - ${spring-cloud.version} + Finchley.RELEASE pom import @@ -47,9 +45,10 @@ + org.springframework.boot - spring-boot-starter + spring-boot-starter-actuator @@ -69,14 +68,16 @@ - - - - org.springframework.boot - spring-boot-maven-plugin - - - + + + spring-milestones + Spring Milestones + https://repo.spring.io/libs-milestone + + false + + + \ No newline at end of file diff --git a/framework/spring/spring-cloud/service-hello/pom.xml b/framework/spring/spring-cloud/service-hello/pom.xml index ea5f4d0d3..220461844 100644 --- a/framework/spring/spring-cloud/service-hello/pom.xml +++ b/framework/spring/spring-cloud/service-hello/pom.xml @@ -20,7 +20,12 @@ org.springframework.cloud - spring-cloud-starter-eureka + spring-cloud-starter-netflix-eureka-client + + + + org.springframework.boot + spring-boot-starter-web-services diff --git a/framework/spring/spring-cloud/service-hello/src/main/resources/application.properties b/framework/spring/spring-cloud/service-hello/src/main/resources/application.properties index 79cd0656f..2a277c34d 100644 --- a/framework/spring/spring-cloud/service-hello/src/main/resources/application.properties +++ b/framework/spring/spring-cloud/service-hello/src/main/resources/application.properties @@ -1,3 +1,3 @@ server.port=8000 spring.application.name=hello-service -eureka.client.service-url.defaultZone=http://localhost:1111/eureka/ \ No newline at end of file +eureka.client.service-url.defaultZone=http://local-dev:1111/eureka/ \ No newline at end of file From 267a2d5dbaaa459b92d55b95a695f04093fba175 Mon Sep 17 00:00:00 2001 From: Tiancai ZANG Date: Fri, 20 Jul 2018 16:31:26 +0800 Subject: [PATCH 120/417] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=20=E5=BE=AE=E4=BF=A1?= =?UTF-8?q?=20=E5=BC=80=E5=8F=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- framework/pom.xml | 1 + framework/thirdparty/pom.xml | 67 ++++++ .../thirdparty/src/site/markdown/index.md | 1 + framework/thirdparty/wechat/pom.xml | 73 +++++++ .../wechat/src/site/markdown/index.md | 1 + .../thirdparty/wechat/wechat-common/pom.xml | 56 ++++++ .../learn/wechat/common/WechatCommonApp.java | 28 +++ .../config/WechatCommonConfiguration.java | 46 +++++ .../config/WechatCommonImportSelector.java | 23 +++ .../common/config/WechatPayConfiguration.java | 48 +++++ .../config/WechatPayImportSelector.java | 22 ++ .../common/config/WechatPayProperties.java | 34 ++++ .../common/config/WechatProperties.java | 31 +++ .../wechat/common/config/package-info.java | 9 + .../common/controller/CoreController.java | 190 ++++++++++++++++++ .../common/controller/GenericController.java | 54 +++++ .../common/controller/OutController.java | 56 ++++++ .../common/controller/PaymentController.java | 160 +++++++++++++++ .../controller/TemplateMessageController.java | 78 +++++++ .../common/handler/AbstractHandler.java | 17 ++ .../wechat/common/handler/LogHandler.java | 27 +++ .../wechat/common/handler/MsgHandler.java | 26 +++ .../common/handler/SubscribeHandler.java | 53 +++++ .../wechat/common/service/CoreService.java | 59 ++++++ .../common/service/impl/CoreServiceImpl.java | 134 ++++++++++++ .../common/util/GenericReturnModel.java | 35 ++++ .../learn/wechat/common/util/MD5Util.java | 46 +++++ .../learn/wechat/common/util/ReturnModel.java | 5 + .../learn/wechat/common/util/Sha1Util.java | 69 +++++++ .../learn/wechat/common/util/XMLUtil.java | 78 +++++++ .../wechat/common/util/package-info.java | 7 + .../src/main/resources/application.yml | 13 ++ .../wechat-common/src/site/markdown/index.md | 1 + framework/thirdparty/wechat/wechat-mp/pom.xml | 31 +++ .../learn/thirdparty/wechat/mp/MpApp.java | 27 +++ .../wechat-mp/src/site/markdown/index.md | 1 + production-component/common-util/pom.xml | 10 + 37 files changed, 1617 insertions(+) create mode 100644 framework/thirdparty/pom.xml create mode 100644 framework/thirdparty/src/site/markdown/index.md create mode 100644 framework/thirdparty/wechat/pom.xml create mode 100644 framework/thirdparty/wechat/src/site/markdown/index.md create mode 100644 framework/thirdparty/wechat/wechat-common/pom.xml create mode 100644 framework/thirdparty/wechat/wechat-common/src/main/java/org/laidu/learn/wechat/common/WechatCommonApp.java create mode 100644 framework/thirdparty/wechat/wechat-common/src/main/java/org/laidu/learn/wechat/common/config/WechatCommonConfiguration.java create mode 100644 framework/thirdparty/wechat/wechat-common/src/main/java/org/laidu/learn/wechat/common/config/WechatCommonImportSelector.java create mode 100644 framework/thirdparty/wechat/wechat-common/src/main/java/org/laidu/learn/wechat/common/config/WechatPayConfiguration.java create mode 100644 framework/thirdparty/wechat/wechat-common/src/main/java/org/laidu/learn/wechat/common/config/WechatPayImportSelector.java create mode 100644 framework/thirdparty/wechat/wechat-common/src/main/java/org/laidu/learn/wechat/common/config/WechatPayProperties.java create mode 100644 framework/thirdparty/wechat/wechat-common/src/main/java/org/laidu/learn/wechat/common/config/WechatProperties.java create mode 100644 framework/thirdparty/wechat/wechat-common/src/main/java/org/laidu/learn/wechat/common/config/package-info.java create mode 100644 framework/thirdparty/wechat/wechat-common/src/main/java/org/laidu/learn/wechat/common/controller/CoreController.java create mode 100644 framework/thirdparty/wechat/wechat-common/src/main/java/org/laidu/learn/wechat/common/controller/GenericController.java create mode 100644 framework/thirdparty/wechat/wechat-common/src/main/java/org/laidu/learn/wechat/common/controller/OutController.java create mode 100644 framework/thirdparty/wechat/wechat-common/src/main/java/org/laidu/learn/wechat/common/controller/PaymentController.java create mode 100644 framework/thirdparty/wechat/wechat-common/src/main/java/org/laidu/learn/wechat/common/controller/TemplateMessageController.java create mode 100644 framework/thirdparty/wechat/wechat-common/src/main/java/org/laidu/learn/wechat/common/handler/AbstractHandler.java create mode 100644 framework/thirdparty/wechat/wechat-common/src/main/java/org/laidu/learn/wechat/common/handler/LogHandler.java create mode 100644 framework/thirdparty/wechat/wechat-common/src/main/java/org/laidu/learn/wechat/common/handler/MsgHandler.java create mode 100644 framework/thirdparty/wechat/wechat-common/src/main/java/org/laidu/learn/wechat/common/handler/SubscribeHandler.java create mode 100644 framework/thirdparty/wechat/wechat-common/src/main/java/org/laidu/learn/wechat/common/service/CoreService.java create mode 100644 framework/thirdparty/wechat/wechat-common/src/main/java/org/laidu/learn/wechat/common/service/impl/CoreServiceImpl.java create mode 100644 framework/thirdparty/wechat/wechat-common/src/main/java/org/laidu/learn/wechat/common/util/GenericReturnModel.java create mode 100644 framework/thirdparty/wechat/wechat-common/src/main/java/org/laidu/learn/wechat/common/util/MD5Util.java create mode 100644 framework/thirdparty/wechat/wechat-common/src/main/java/org/laidu/learn/wechat/common/util/ReturnModel.java create mode 100644 framework/thirdparty/wechat/wechat-common/src/main/java/org/laidu/learn/wechat/common/util/Sha1Util.java create mode 100644 framework/thirdparty/wechat/wechat-common/src/main/java/org/laidu/learn/wechat/common/util/XMLUtil.java create mode 100644 framework/thirdparty/wechat/wechat-common/src/main/java/org/laidu/learn/wechat/common/util/package-info.java create mode 100644 framework/thirdparty/wechat/wechat-common/src/main/resources/application.yml create mode 100644 framework/thirdparty/wechat/wechat-common/src/site/markdown/index.md create mode 100644 framework/thirdparty/wechat/wechat-mp/pom.xml create mode 100644 framework/thirdparty/wechat/wechat-mp/src/main/java/org/laidu/learn/thirdparty/wechat/mp/MpApp.java create mode 100644 framework/thirdparty/wechat/wechat-mp/src/site/markdown/index.md diff --git a/framework/pom.xml b/framework/pom.xml index bf0509c36..c5283c3fc 100644 --- a/framework/pom.xml +++ b/framework/pom.xml @@ -24,6 +24,7 @@ aws compress task-scheduler + thirdparty diff --git a/framework/thirdparty/pom.xml b/framework/thirdparty/pom.xml new file mode 100644 index 000000000..c3855dcbf --- /dev/null +++ b/framework/thirdparty/pom.xml @@ -0,0 +1,67 @@ + + + + framework + org.laidu.learn + 1.0-SNAPSHOT + + 4.0.0 + + thirdparty + pom + + wechat + + + + 3.1.0 + 2.0.2.RELEASE + + + + + + + org.springframework.boot + spring-boot-dependencies + ${spring-boot.version} + pom + import + + + + + + + + + org.laidu.learn + common-util + 1.0-SNAPSHOT + + + org.springframework.boot + spring-boot-starter + + + + org.springframework.boot + spring-boot-devtools + runtime + + + org.projectlombok + lombok + true + + + org.springframework.boot + spring-boot-starter-test + test + + + + + \ No newline at end of file diff --git a/framework/thirdparty/src/site/markdown/index.md b/framework/thirdparty/src/site/markdown/index.md new file mode 100644 index 000000000..6911316f4 --- /dev/null +++ b/framework/thirdparty/src/site/markdown/index.md @@ -0,0 +1 @@ +# 第三方服务接口 \ No newline at end of file diff --git a/framework/thirdparty/wechat/pom.xml b/framework/thirdparty/wechat/pom.xml new file mode 100644 index 000000000..7f5de104f --- /dev/null +++ b/framework/thirdparty/wechat/pom.xml @@ -0,0 +1,73 @@ + + + + thirdparty + org.laidu.learn + 1.0-SNAPSHOT + + 4.0.0 + + wechat + pom + + wechat-mp + wechat-common + + + + + 3.1.0 + + + + + + + + com.github.binarywang + weixin-java-tools-springmvc + ${wechat-java-tools.version} + + + + + com.github.binarywang + weixin-java-miniapp + ${wechat-java-tools.version} + + + + + com.github.binarywang + weixin-java-pay + ${wechat-java-tools.version} + + + + + com.github.binarywang + weixin-java-open + ${wechat-java-tools.version} + + + + + com.github.binarywang + weixin-java-mp + ${wechat-java-tools.version} + + + + + com.github.binarywang + weixin-java-cp + ${wechat-java-tools.version} + + + + + + + \ No newline at end of file diff --git a/framework/thirdparty/wechat/src/site/markdown/index.md b/framework/thirdparty/wechat/src/site/markdown/index.md new file mode 100644 index 000000000..3ed8e38f3 --- /dev/null +++ b/framework/thirdparty/wechat/src/site/markdown/index.md @@ -0,0 +1 @@ +# 微信开发 \ No newline at end of file diff --git a/framework/thirdparty/wechat/wechat-common/pom.xml b/framework/thirdparty/wechat/wechat-common/pom.xml new file mode 100644 index 000000000..dea9f52aa --- /dev/null +++ b/framework/thirdparty/wechat/wechat-common/pom.xml @@ -0,0 +1,56 @@ + + + + wechat + org.laidu.learn + 1.0-SNAPSHOT + + 4.0.0 + + wechat-common + + + + + + + com.github.binarywang + weixin-java-mp + + + + org.springframework.boot + spring-boot-starter-data-redis + + + + org.springframework.boot + spring-boot-starter-web + + + + com.github.binarywang + weixin-java-pay + + + + org.springframework.boot + spring-boot-autoconfigure + true + + + org.springframework.boot + spring-boot-configuration-processor + provided + true + + + org.springframework.boot + spring-boot-starter-aop + provided + + + + \ No newline at end of file diff --git a/framework/thirdparty/wechat/wechat-common/src/main/java/org/laidu/learn/wechat/common/WechatCommonApp.java b/framework/thirdparty/wechat/wechat-common/src/main/java/org/laidu/learn/wechat/common/WechatCommonApp.java new file mode 100644 index 000000000..397dfd23b --- /dev/null +++ b/framework/thirdparty/wechat/wechat-common/src/main/java/org/laidu/learn/wechat/common/WechatCommonApp.java @@ -0,0 +1,28 @@ +package org.laidu.learn.wechat.common; + +import lombok.extern.slf4j.Slf4j; +import org.springframework.boot.Banner; +import org.springframework.boot.autoconfigure.SpringBootApplication; +import org.springframework.boot.builder.SpringApplicationBuilder; + +/** + * 微信通用模块 + *

            + * Created by laidu + * on 2018-07-20 14:06. + * + * @author laidu + */ +@Slf4j +@SpringBootApplication +public class WechatCommonApp { + + + public static void main(String[] args) { + + new SpringApplicationBuilder(WechatCommonApp.class) + .bannerMode(Banner.Mode.OFF) + .logStartupInfo(false) + .run(args); + } +} \ No newline at end of file diff --git a/framework/thirdparty/wechat/wechat-common/src/main/java/org/laidu/learn/wechat/common/config/WechatCommonConfiguration.java b/framework/thirdparty/wechat/wechat-common/src/main/java/org/laidu/learn/wechat/common/config/WechatCommonConfiguration.java new file mode 100644 index 000000000..f56ed278f --- /dev/null +++ b/framework/thirdparty/wechat/wechat-common/src/main/java/org/laidu/learn/wechat/common/config/WechatCommonConfiguration.java @@ -0,0 +1,46 @@ +package org.laidu.learn.wechat.common.config; + +import lombok.extern.slf4j.Slf4j; +import me.chanjar.weixin.mp.api.WxMpConfigStorage; +import me.chanjar.weixin.mp.api.WxMpInMemoryConfigStorage; +import me.chanjar.weixin.mp.api.WxMpService; +import me.chanjar.weixin.mp.api.impl.WxMpServiceImpl; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; +import org.springframework.context.annotation.Import; + +/** + * wechat 配置 + *

            + * Created by laidu + * on 2018-07-20 14:12. + * + * @author laidu + */ +@Slf4j +@Configuration +@Import(WechatCommonImportSelector.class) +public class WechatCommonConfiguration { + + + @Autowired + WechatProperties wechatProperties; + + @Bean + public WxMpConfigStorage wxMpConfigStorage() { + WxMpInMemoryConfigStorage configStorage = new WxMpInMemoryConfigStorage(); + configStorage.setAppId(wechatProperties.getAppId()); + configStorage.setSecret(wechatProperties.getAppSecret()); + configStorage.setToken(wechatProperties.getToken()); + configStorage.setAesKey(wechatProperties.getAesKey()); + return configStorage; + } + + @Bean + public WxMpService wxMpService() { + WxMpService wxMpService = new WxMpServiceImpl(); + wxMpService.setWxMpConfigStorage(wxMpConfigStorage()); + return wxMpService; + } +} \ No newline at end of file diff --git a/framework/thirdparty/wechat/wechat-common/src/main/java/org/laidu/learn/wechat/common/config/WechatCommonImportSelector.java b/framework/thirdparty/wechat/wechat-common/src/main/java/org/laidu/learn/wechat/common/config/WechatCommonImportSelector.java new file mode 100644 index 000000000..61b2d46a5 --- /dev/null +++ b/framework/thirdparty/wechat/wechat-common/src/main/java/org/laidu/learn/wechat/common/config/WechatCommonImportSelector.java @@ -0,0 +1,23 @@ +package org.laidu.learn.wechat.common.config; + +import lombok.extern.slf4j.Slf4j; +import org.springframework.context.annotation.ImportSelector; +import org.springframework.core.type.AnnotationMetadata; + +/** + * 微信 + *

            + * Created by laidu + * on 2018-07-20 14:56. + * + * @author laidu + */ +// TODO: 2018-07-20 14:56 微信 +@Slf4j +public class WechatCommonImportSelector implements ImportSelector { + + @Override + public String[] selectImports(AnnotationMetadata importingClassMetadata) { + return new String[]{WechatProperties.class.getName()}; + } +} \ No newline at end of file diff --git a/framework/thirdparty/wechat/wechat-common/src/main/java/org/laidu/learn/wechat/common/config/WechatPayConfiguration.java b/framework/thirdparty/wechat/wechat-common/src/main/java/org/laidu/learn/wechat/common/config/WechatPayConfiguration.java new file mode 100644 index 000000000..df8ae7a68 --- /dev/null +++ b/framework/thirdparty/wechat/wechat-common/src/main/java/org/laidu/learn/wechat/common/config/WechatPayConfiguration.java @@ -0,0 +1,48 @@ +package org.laidu.learn.wechat.common.config; + +import com.github.binarywang.wxpay.config.WxPayConfig; +import com.github.binarywang.wxpay.service.WxPayService; +import com.github.binarywang.wxpay.service.impl.WxPayServiceImpl; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; +import org.springframework.context.annotation.Import; + +/** + * 微信支付配置 + *

            + * Created by laidu + * on 2018-07-20 14:31. + * + * @author laidu + */ +@Slf4j +@Configuration +@Import(WechatPayImportSelector.class) +public class WechatPayConfiguration { + + + @Autowired + WechatPayProperties wechatPayProperties; + + @Bean + public WxPayConfig payConfig() { + WxPayConfig payConfig = new WxPayConfig(); + payConfig.setAppId(wechatPayProperties.getAppId()); + payConfig.setMchId(wechatPayProperties.getMchId()); + payConfig.setMchKey(wechatPayProperties.getMchKey()); + payConfig.setSubAppId(wechatPayProperties.getSubAppId()); + payConfig.setSubMchId(wechatPayProperties.getSubAppId()); + payConfig.setKeyPath(wechatPayProperties.getKeyPath()); + + return payConfig; + } + + @Bean + public WxPayService payService() { + WxPayService payService = new WxPayServiceImpl(); + payService.setConfig(payConfig()); + return payService; + } +} \ No newline at end of file diff --git a/framework/thirdparty/wechat/wechat-common/src/main/java/org/laidu/learn/wechat/common/config/WechatPayImportSelector.java b/framework/thirdparty/wechat/wechat-common/src/main/java/org/laidu/learn/wechat/common/config/WechatPayImportSelector.java new file mode 100644 index 000000000..dd3edf771 --- /dev/null +++ b/framework/thirdparty/wechat/wechat-common/src/main/java/org/laidu/learn/wechat/common/config/WechatPayImportSelector.java @@ -0,0 +1,22 @@ +package org.laidu.learn.wechat.common.config; + +import lombok.extern.slf4j.Slf4j; +import org.springframework.context.annotation.ImportSelector; +import org.springframework.core.type.AnnotationMetadata; + +/** + * 微信 + *

            + * Created by laidu + * on 2018-07-20 14:56. + * + * @author laidu + */ +@Slf4j +public class WechatPayImportSelector implements ImportSelector { + + @Override + public String[] selectImports(AnnotationMetadata importingClassMetadata) { + return new String[]{WechatPayProperties.class.getName()}; + } +} \ No newline at end of file diff --git a/framework/thirdparty/wechat/wechat-common/src/main/java/org/laidu/learn/wechat/common/config/WechatPayProperties.java b/framework/thirdparty/wechat/wechat-common/src/main/java/org/laidu/learn/wechat/common/config/WechatPayProperties.java new file mode 100644 index 000000000..f6abe0075 --- /dev/null +++ b/framework/thirdparty/wechat/wechat-common/src/main/java/org/laidu/learn/wechat/common/config/WechatPayProperties.java @@ -0,0 +1,34 @@ +package org.laidu.learn.wechat.common.config; + +import lombok.Data; +import org.springframework.boot.context.properties.ConfigurationProperties; +import org.springframework.context.annotation.Configuration; + +/** + * 微信支付设置 + *

            + * Created by laidu + * on 2018-07-20 14:32. + * + * @author laidu + */ +@Data +@Configuration +@ConfigurationProperties(prefix = "wechat.pay") +public class WechatPayProperties { + + + private String appId; + + private String mchId; + + private String mchKey; + + private String subAppId; + + private String subMchId; + + private String keyPath; + + +} \ No newline at end of file diff --git a/framework/thirdparty/wechat/wechat-common/src/main/java/org/laidu/learn/wechat/common/config/WechatProperties.java b/framework/thirdparty/wechat/wechat-common/src/main/java/org/laidu/learn/wechat/common/config/WechatProperties.java new file mode 100644 index 000000000..9e7bc4600 --- /dev/null +++ b/framework/thirdparty/wechat/wechat-common/src/main/java/org/laidu/learn/wechat/common/config/WechatProperties.java @@ -0,0 +1,31 @@ +package org.laidu.learn.wechat.common.config; + +import lombok.Data; +import org.springframework.boot.autoconfigure.AutoConfigurationPackage; +import org.springframework.boot.context.properties.ConfigurationProperties; +import org.springframework.context.annotation.Configuration; + +/** + * 微信配置 + *

            + * Created by laidu + * on 2018-07-20 14:14. + * + * @author laidu + */ + +@Data +@Configuration +@AutoConfigurationPackage +@ConfigurationProperties(prefix = "wechat") +public class WechatProperties { + + private String appId; + + private String appSecret; + + private String token; + + private String aesKey; + +} \ No newline at end of file diff --git a/framework/thirdparty/wechat/wechat-common/src/main/java/org/laidu/learn/wechat/common/config/package-info.java b/framework/thirdparty/wechat/wechat-common/src/main/java/org/laidu/learn/wechat/common/config/package-info.java new file mode 100644 index 000000000..1da17e09d --- /dev/null +++ b/framework/thirdparty/wechat/wechat-common/src/main/java/org/laidu/learn/wechat/common/config/package-info.java @@ -0,0 +1,9 @@ +/** + * 微信开发者配置 + *

            + * Created by laidu + * on 2018-07-20 14:16. + * + * @author laidu + */ +package org.laidu.learn.wechat.common.config; \ No newline at end of file diff --git a/framework/thirdparty/wechat/wechat-common/src/main/java/org/laidu/learn/wechat/common/controller/CoreController.java b/framework/thirdparty/wechat/wechat-common/src/main/java/org/laidu/learn/wechat/common/controller/CoreController.java new file mode 100644 index 000000000..ea26b5be8 --- /dev/null +++ b/framework/thirdparty/wechat/wechat-common/src/main/java/org/laidu/learn/wechat/common/controller/CoreController.java @@ -0,0 +1,190 @@ +package org.laidu.learn.wechat.common.controller; + +import lombok.extern.slf4j.Slf4j; +import me.chanjar.weixin.common.error.WxErrorException; +import me.chanjar.weixin.mp.api.WxMpConfigStorage; +import me.chanjar.weixin.mp.api.WxMpService; +import me.chanjar.weixin.mp.bean.message.WxMpXmlMessage; +import me.chanjar.weixin.mp.bean.message.WxMpXmlOutMessage; +import me.chanjar.weixin.mp.bean.result.WxMpOAuth2AccessToken; +import me.chanjar.weixin.mp.bean.result.WxMpUser; +import org.apache.commons.lang3.StringUtils; +import org.laidu.learn.wechat.common.service.CoreService; +import org.laidu.learn.wechat.common.util.ReturnModel; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.data.redis.core.StringRedisTemplate; +import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestParam; + +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; + +/** + * Created by FirenzesEagle on 2016/5/30 0030. + * Email:liumingbo2008@gmail.com + */ +@Slf4j +@RequestMapping("/") +@Controller +public class CoreController extends GenericController { + + @Autowired + protected WxMpConfigStorage configStorage; + @Autowired + protected WxMpService wxMpService; + @Autowired + protected CoreService coreService; + + @Autowired + private StringRedisTemplate redisTemplate; + + @Value("${msgQueueKey:msg}") + private String msgQueueKey; + + @RequestMapping(value = "/index") + public String index() { + return "index"; + } + + /** + * 微信公众号webservice主服务接口,提供与微信服务器的信息交互 + */ + @RequestMapping(value = "/core") + public void wechatCore(HttpServletRequest request, HttpServletResponse response) throws Exception { + response.setContentType("text/html;charset=utf-8"); + response.setStatus(HttpServletResponse.SC_OK); + + String signature = request.getParameter("signature"); + String nonce = request.getParameter("nonce"); + String timestamp = request.getParameter("timestamp"); + + if (!this.wxMpService.checkSignature(timestamp, nonce, signature)) { + // 消息签名不正确,说明不是公众平台发过来的消息 + response.getWriter().println("非法请求"); + return; + } + + String echoStr = request.getParameter("echostr"); + if (StringUtils.isNotBlank(echoStr)) { + // 说明是一个仅仅用来验证的请求,回显echostr + String echoStrOut = String.copyValueOf(echoStr.toCharArray()); + response.getWriter().println(echoStrOut); + return; + } + + String encryptType = StringUtils.isBlank(request.getParameter("encrypt_type")) + ? "raw" + : request.getParameter("encrypt_type"); + + if ("raw".equals(encryptType)) { + // 明文传输的消息 + WxMpXmlMessage inMessage = WxMpXmlMessage.fromXml(request.getInputStream()); + WxMpXmlOutMessage outMessage = this.coreService.route(inMessage); + if (outMessage == null) { + response.getWriter().write(""); + } else { + redisTemplate.opsForList().leftPush(msgQueueKey,inMessage.getContent()); + response.getWriter().write("弹幕内容: "+inMessage.getContent()); + response.getWriter().write(outMessage.toXml()); + } + return; + } + + if ("aes".equals(encryptType)) { + // 是aes加密的消息 + String msgSignature = request.getParameter("msg_signature"); + WxMpXmlMessage inMessage = WxMpXmlMessage.fromEncryptedXml( + request.getInputStream(), this.configStorage, timestamp, nonce, + msgSignature); + this.logger.debug("\n消息解密后内容为:\n{} ", inMessage.toString()); + WxMpXmlOutMessage outMessage = this.coreService.route(inMessage); + if (outMessage == null) { + response.getWriter().write(""); + } else { + response.getWriter().write(outMessage.toEncryptedXml(this.configStorage)); + } + + return; + } + + response.getWriter().println("不可识别的加密类型"); + } + + /** + * 通过openid获得基本用户信息 + * 详情请见: http://mp.weixin.qq.com/wiki/14/bb5031008f1494a59c6f71fa0f319c66.html + * + * @param openid openid + * @param lang zh_CN, zh_TW, en + */ + @RequestMapping(value = "/getUserInfo") + public WxMpUser getUserInfo(HttpServletResponse response, @RequestParam(value = "openid") String openid, @RequestParam(value = "lang") String lang) { + ReturnModel returnModel = new ReturnModel(); + WxMpUser wxMpUser = null; + try { + wxMpUser = this.wxMpService.getUserService().userInfo(openid, lang); + returnModel.setResult(true); + returnModel.setDatum(wxMpUser); + renderString(response, returnModel); + } catch (WxErrorException e) { + returnModel.setResult(false); + returnModel.setReason(e.getError().toString()); + renderString(response, returnModel); + this.logger.error(e.getError().toString()); + } + return wxMpUser; + } + + /** + * 通过code获得基本用户信息 + * 详情请见: http://mp.weixin.qq.com/wiki/14/bb5031008f1494a59c6f71fa0f319c66.html + * + * @param code code + * @param lang zh_CN, zh_TW, en + */ + @RequestMapping(value = "/getOAuth2UserInfo") + public void getOAuth2UserInfo(HttpServletResponse response, @RequestParam(value = "code") String code, @RequestParam(value = "lang") String lang) { + ReturnModel returnModel = new ReturnModel(); + WxMpOAuth2AccessToken accessToken; + WxMpUser wxMpUser; + try { + accessToken = this.wxMpService.oauth2getAccessToken(code); + wxMpUser = this.wxMpService.getUserService() + .userInfo(accessToken.getOpenId(), lang); + returnModel.setResult(true); + returnModel.setDatum(wxMpUser); + renderString(response, returnModel); + } catch (WxErrorException e) { + returnModel.setResult(false); + returnModel.setReason(e.getError().toString()); + renderString(response, returnModel); + this.logger.error(e.getError().toString()); + } + } + + /** + * 用code换取oauth2的openid + * 详情请见: http://mp.weixin.qq.com/wiki/1/8a5ce6257f1d3b2afb20f83e72b72ce9.html + * + * @param code code + */ + @RequestMapping(value = "/getOpenid") + public void getOpenid(HttpServletResponse response, @RequestParam(value = "code") String code) { + ReturnModel returnModel = new ReturnModel(); + WxMpOAuth2AccessToken accessToken; + try { + accessToken = this.wxMpService.oauth2getAccessToken(code); + returnModel.setResult(true); + returnModel.setDatum(accessToken.getOpenId()); + renderString(response, returnModel); + } catch (WxErrorException e) { + returnModel.setResult(false); + returnModel.setReason(e.getError().toString()); + renderString(response, returnModel); + this.logger.error(e.getError().toString()); + } + } + +} diff --git a/framework/thirdparty/wechat/wechat-common/src/main/java/org/laidu/learn/wechat/common/controller/GenericController.java b/framework/thirdparty/wechat/wechat-common/src/main/java/org/laidu/learn/wechat/common/controller/GenericController.java new file mode 100644 index 000000000..da285e1b6 --- /dev/null +++ b/framework/thirdparty/wechat/wechat-common/src/main/java/org/laidu/learn/wechat/common/controller/GenericController.java @@ -0,0 +1,54 @@ +package org.laidu.learn.wechat.common.controller; + +import com.google.gson.Gson; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import javax.servlet.http.HttpServletResponse; +import java.io.IOException; + +/** + * 所有自定义Controller的顶级接口,封装常用的与session和response、request相关的操作 + *

            + * Created by FirenzesEagle on 2016/4/19 0019. + */ +public abstract class GenericController { + + /** + * 日志对象 + */ + protected Logger logger = LoggerFactory.getLogger(getClass()); + + /** + * 客户端返回JSON字符串 + * + * @param response + * @param object + * @return + */ + protected String renderString(HttpServletResponse response, Object object) { + return renderString(response, new Gson().toJson(object), "application/json"); + } + + /** + * 客户端返回字符串 + * + * @param response + * @param string + * @return + */ + protected String renderString(HttpServletResponse response, String string, String type) { + try { + response.reset(); + response.setContentType(type); + response.setCharacterEncoding("utf-8"); + //解决跨域问题 + response.setHeader("Access-Control-Allow-Origin", "*"); + response.getWriter().print(string); + return null; + } catch (IOException e) { + return null; + } + } + +} diff --git a/framework/thirdparty/wechat/wechat-common/src/main/java/org/laidu/learn/wechat/common/controller/OutController.java b/framework/thirdparty/wechat/wechat-common/src/main/java/org/laidu/learn/wechat/common/controller/OutController.java new file mode 100644 index 000000000..ff4197739 --- /dev/null +++ b/framework/thirdparty/wechat/wechat-common/src/main/java/org/laidu/learn/wechat/common/controller/OutController.java @@ -0,0 +1,56 @@ +package org.laidu.learn.wechat.common.controller; + +import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONObject; +import jodd.util.StringUtil; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.data.redis.core.StringRedisTemplate; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PathVariable; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +/** + * Created by laidu + * on 2018-07-20 15:51. + * + * @author laidu + */ +// TODO: 2018-07-20 15:51 +@Slf4j +@RestController +@RequestMapping("/api/v1.1") +public class OutController { + + @Autowired + private StringRedisTemplate redisTemplate; + + @Value("${msgQueueKey:msg}") + private String msgQueueKey; + + + @GetMapping("/channels/{channelId}/danmaku") + public String getMsg(@PathVariable String channelId){ + + JSONArray msgArray = new JSONArray(); + + log.info("channelId : {}", channelId); + + String msgString = redisTemplate.opsForList().rightPop(msgQueueKey); + + while (StringUtil.isNotBlank(msgString)){ + + JSONObject msg = new JSONObject(); + msg.put("style","blue"); + msg.put("text",msgString); + msg.put("position","fly"); + msgArray.add(msg); + + msgString = redisTemplate.opsForList().rightPop(msgQueueKey); + } + + return msgArray.toJSONString(); + } +} \ No newline at end of file diff --git a/framework/thirdparty/wechat/wechat-common/src/main/java/org/laidu/learn/wechat/common/controller/PaymentController.java b/framework/thirdparty/wechat/wechat-common/src/main/java/org/laidu/learn/wechat/common/controller/PaymentController.java new file mode 100644 index 000000000..cd32a9264 --- /dev/null +++ b/framework/thirdparty/wechat/wechat-common/src/main/java/org/laidu/learn/wechat/common/controller/PaymentController.java @@ -0,0 +1,160 @@ +package org.laidu.learn.wechat.common.controller; + +import com.github.binarywang.wxpay.bean.entpay.EntPayRequest; +import com.github.binarywang.wxpay.bean.entpay.EntPayResult; +import com.github.binarywang.wxpay.bean.request.WxPayUnifiedOrderRequest; +import com.github.binarywang.wxpay.bean.result.WxPayUnifiedOrderResult; +import com.github.binarywang.wxpay.config.WxPayConfig; +import com.github.binarywang.wxpay.exception.WxPayException; +import com.github.binarywang.wxpay.service.WxPayService; +import com.github.binarywang.wxpay.util.SignUtils; +import com.google.gson.Gson; +import org.laidu.learn.wechat.common.util.ReturnModel; +import org.laidu.learn.wechat.common.util.Sha1Util; +import org.laidu.learn.wechat.common.util.XMLUtil; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.RequestMapping; + +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import java.util.Map; + +/** + * 微信支付Controller + *

            + * Created by FirenzesEagle on 2016/6/20 0020. + * Email:liumingbo2008@gmail.com + */ +@Controller +@RequestMapping(value = "wxPay") +public class PaymentController extends GenericController { + + @Autowired + private WxPayConfig payConfig; + @Autowired + private WxPayService payService; + + /** + * 用于返回预支付的结果 WxMpPrepayIdResult,一般不需要使用此接口 + * + * @param response + * @param request + */ + @RequestMapping(value = "getPrepayIdResult") + public void getPrepayId(HttpServletResponse response, + HttpServletRequest request) throws WxPayException { + WxPayUnifiedOrderRequest payInfo = WxPayUnifiedOrderRequest.newBuilder() + .openid(request.getParameter("openid")) + .outTradeNo(request.getParameter("out_trade_no")) + .totalFee(Integer.valueOf(request.getParameter("total_fee"))) + .body(request.getParameter("body")) + .tradeType(request.getParameter("trade_type")) + .spbillCreateIp(request.getParameter("spbill_create_ip")) + .notifyUrl("") + .build(); + this.logger + .info("PartnerKey is :" + this.payConfig.getMchKey()); + WxPayUnifiedOrderResult result = this.payService.unifiedOrder(payInfo); + this.logger.info(new Gson().toJson(result)); + renderString(response, result); + } + + /** + * 返回前台H5调用JS支付所需要的参数,公众号支付调用此接口 + * + * @param response + * @param request + */ + @RequestMapping(value = "getJSSDKPayInfo") + public void getJSSDKPayInfo(HttpServletResponse response, + HttpServletRequest request) { + ReturnModel returnModel = new ReturnModel(); + WxPayUnifiedOrderRequest prepayInfo = WxPayUnifiedOrderRequest.newBuilder() + .openid(request.getParameter("openid")) + .outTradeNo(request.getParameter("out_trade_no")) + .totalFee(Integer.valueOf(request.getParameter("total_fee"))) + .body(request.getParameter("body")) + .tradeType(request.getParameter("trade_type")) + .spbillCreateIp(request.getParameter("spbill_create_ip")) + .notifyUrl("// TODO 填写通知回调地址") + .build(); + + try { + Map payInfo = this.payService.getPayInfo(prepayInfo); + returnModel.setResult(true); + returnModel.setDatum(payInfo); + renderString(response, returnModel); + } catch (WxPayException e) { + returnModel.setResult(false); + returnModel.setReason(e.getErrCodeDes()); + renderString(response, returnModel); + this.logger.error(e.getErrCodeDes()); + } + } + + /** + * 微信通知支付结果的回调地址,notify_url + * + * @param request + * @param response + */ + @RequestMapping(value = "getJSSDKCallbackData") + public void getJSSDKCallbackData(HttpServletRequest request, + HttpServletResponse response) { + try { + synchronized (this) { + Map kvm = XMLUtil.parseRequestXmlToMap(request); + if (SignUtils.checkSign(kvm, null, this.payConfig.getMchKey())) { + if (kvm.get("result_code").equals("SUCCESS")) { + //TODO(user) 微信服务器通知此回调接口支付成功后,通知给业务系统做处理 + logger.info("out_trade_no: " + kvm.get("out_trade_no") + " pay SUCCESS!"); + response.getWriter().write(""); + } else { + this.logger.error("out_trade_no: " + + kvm.get("out_trade_no") + " result_code is FAIL"); + response.getWriter().write( + ""); + } + } else { + response.getWriter().write( + ""); + this.logger.error("out_trade_no: " + kvm.get("out_trade_no") + + " check signature FAIL"); + } + } + } catch (Exception e) { + e.printStackTrace(); + } + } + + @RequestMapping(value = "entPay") + public void payToIndividual(HttpServletResponse response, + HttpServletRequest request) { + EntPayRequest wxEntPayRequest = new EntPayRequest(); + wxEntPayRequest.setAppid(payConfig.getAppId()); + wxEntPayRequest.setMchId(payConfig.getMchId()); + wxEntPayRequest.setNonceStr(Sha1Util.getNonceStr()); + wxEntPayRequest.setPartnerTradeNo(request.getParameter("partner_trade_no")); + wxEntPayRequest.setOpenid(request.getParameter("openid")); + wxEntPayRequest.setCheckName("NO_CHECK"); + wxEntPayRequest.setAmount(Integer.valueOf(request.getParameter("amount"))); + wxEntPayRequest.setDescription(request.getParameter("desc")); + wxEntPayRequest.setSpbillCreateIp(request.getParameter("spbill_create_ip")); + + try { + EntPayResult wxEntPayResult = payService.getEntPayService().entPay(wxEntPayRequest); + if ("SUCCESS".equals(wxEntPayResult.getResultCode().toUpperCase()) + && "SUCCESS".equals(wxEntPayResult.getReturnCode().toUpperCase())) { + this.logger.info("企业对个人付款成功!\n付款信息:\n" + wxEntPayResult.toString()); + } else { + this.logger.error("err_code: " + wxEntPayResult.getErrCode() + + " err_code_des: " + wxEntPayResult.getErrCodeDes()); + } + } catch (Exception e) { + e.printStackTrace(); + } + } + +} + diff --git a/framework/thirdparty/wechat/wechat-common/src/main/java/org/laidu/learn/wechat/common/controller/TemplateMessageController.java b/framework/thirdparty/wechat/wechat-common/src/main/java/org/laidu/learn/wechat/common/controller/TemplateMessageController.java new file mode 100644 index 000000000..484ddc606 --- /dev/null +++ b/framework/thirdparty/wechat/wechat-common/src/main/java/org/laidu/learn/wechat/common/controller/TemplateMessageController.java @@ -0,0 +1,78 @@ +package org.laidu.learn.wechat.common.controller; + +import me.chanjar.weixin.common.error.WxErrorException; +import me.chanjar.weixin.mp.api.WxMpConfigStorage; +import me.chanjar.weixin.mp.api.WxMpService; +import me.chanjar.weixin.mp.bean.template.WxMpTemplateData; +import me.chanjar.weixin.mp.bean.template.WxMpTemplateMessage; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.RequestMapping; + +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; + +/** + * 模板消息Controller + *

            + * Created by FirenzesEagle on 2016/7/11 0011. + * Email:liumingbo2008@gmail.com + */ +@Controller +@RequestMapping(value = "templateMessage") +public class TemplateMessageController extends GenericController { + + // 模板消息字体颜色 + private static final String TEMPLATE_FRONT_COLOR = "#32CD32"; + @Autowired + protected WxMpConfigStorage configStorage; + @Autowired + protected WxMpService wxMpService; + + @RequestMapping(value = "notifyOrderPaySuccessTemplate") + public void notifyOrderPaySuccessTemplate(HttpServletResponse response, + HttpServletRequest request) { + WxMpTemplateMessage orderPaySuccessTemplate = WxMpTemplateMessage.builder().build(); + orderPaySuccessTemplate.setToUser(request.getParameter("openid")); + orderPaySuccessTemplate.setTemplateId("ENp7UwpOtlhvieebUvDm0mK4n0hTvbH0Me83HdBUvC0"); + orderPaySuccessTemplate.setUrl(request.getParameter("url")); + WxMpTemplateData firstData = new WxMpTemplateData("first", "订单支付成功", TEMPLATE_FRONT_COLOR); + WxMpTemplateData orderMoneySumData = new WxMpTemplateData("orderMoneySum", request.getParameter("orderMoneySum"), TEMPLATE_FRONT_COLOR); + WxMpTemplateData orderProductNameData = new WxMpTemplateData("orderProductName", request.getParameter("orderProductName"), TEMPLATE_FRONT_COLOR); + WxMpTemplateData remarkData = new WxMpTemplateData("Remark", request.getParameter("remark"), TEMPLATE_FRONT_COLOR); + orderPaySuccessTemplate.addData(firstData) + .addData(orderMoneySumData) + .addData(orderProductNameData) + .addData(remarkData); + try { + wxMpService.getTemplateMsgService() + .sendTemplateMsg(orderPaySuccessTemplate); + } catch (WxErrorException e) { + logger.error(e.getMessage()); + } + } + + @RequestMapping(value = "notifyOrderStatusUpdateTemplate") + public void notifyOrderStatusUpdateTemplate(HttpServletResponse response, + HttpServletRequest request) { + WxMpTemplateMessage orderPaySuccessTemplate = WxMpTemplateMessage.builder().build(); + orderPaySuccessTemplate.setToUser(request.getParameter("openid")); + orderPaySuccessTemplate.setTemplateId("X8ccwRF4EAx7VHFQGzi78Gl0C3GcpGpYgWk-HFFOWA0"); + orderPaySuccessTemplate.setUrl(request.getParameter("url")); + WxMpTemplateData firstData = new WxMpTemplateData("first", "订单状态更新", TEMPLATE_FRONT_COLOR); + WxMpTemplateData orderMoneySumData = new WxMpTemplateData("OrderSn", request.getParameter("OrderSn"), TEMPLATE_FRONT_COLOR); + WxMpTemplateData orderProductNameData = new WxMpTemplateData("OrderStatus", request.getParameter("OrderStatus"), TEMPLATE_FRONT_COLOR); + WxMpTemplateData remarkData = new WxMpTemplateData("remark", request.getParameter("remark"), TEMPLATE_FRONT_COLOR); + orderPaySuccessTemplate.addData(firstData) + .addData(orderMoneySumData) + .addData(orderProductNameData) + .addData(remarkData); + try { + wxMpService.getTemplateMsgService() + .sendTemplateMsg(orderPaySuccessTemplate); + } catch (WxErrorException e) { + logger.error(e.getMessage()); + } + } + +} diff --git a/framework/thirdparty/wechat/wechat-common/src/main/java/org/laidu/learn/wechat/common/handler/AbstractHandler.java b/framework/thirdparty/wechat/wechat-common/src/main/java/org/laidu/learn/wechat/common/handler/AbstractHandler.java new file mode 100644 index 000000000..afbb32fc0 --- /dev/null +++ b/framework/thirdparty/wechat/wechat-common/src/main/java/org/laidu/learn/wechat/common/handler/AbstractHandler.java @@ -0,0 +1,17 @@ +package org.laidu.learn.wechat.common.handler; + +import com.google.gson.Gson; +import me.chanjar.weixin.mp.api.WxMpMessageHandler; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +/** + * 消息处理Handler的父类 + * + * Created by FirenzesEagle on 2016/7/27 0027. + * Email:liumingbo2008@gmail.com + */ +public abstract class AbstractHandler implements WxMpMessageHandler { + protected Logger logger = LoggerFactory.getLogger(getClass()); + protected final Gson gson = new Gson(); +} diff --git a/framework/thirdparty/wechat/wechat-common/src/main/java/org/laidu/learn/wechat/common/handler/LogHandler.java b/framework/thirdparty/wechat/wechat-common/src/main/java/org/laidu/learn/wechat/common/handler/LogHandler.java new file mode 100644 index 000000000..99ec7085d --- /dev/null +++ b/framework/thirdparty/wechat/wechat-common/src/main/java/org/laidu/learn/wechat/common/handler/LogHandler.java @@ -0,0 +1,27 @@ +package org.laidu.learn.wechat.common.handler; + +import java.util.Map; + +import org.springframework.stereotype.Component; + +import me.chanjar.weixin.common.session.WxSessionManager; +import me.chanjar.weixin.mp.api.WxMpService; +import me.chanjar.weixin.mp.bean.message.WxMpXmlMessage; +import me.chanjar.weixin.mp.bean.message.WxMpXmlOutMessage; + +/** + * 对所有接收到的消息输出日志,也可进行持久化处理 + * + * Created by FirenzesEagle on 2016/7/27 0027. + * Email:liumingbo2008@gmail.com + */ +@Component +public class LogHandler extends AbstractHandler { + @Override + public WxMpXmlOutMessage handle(WxMpXmlMessage wxMessage, + Map context, WxMpService wxMpService, + WxSessionManager sessionManager) { + this.logger.info("\n接收到请求消息,内容:【{}】", wxMessage.toString()); + return null; + } +} diff --git a/framework/thirdparty/wechat/wechat-common/src/main/java/org/laidu/learn/wechat/common/handler/MsgHandler.java b/framework/thirdparty/wechat/wechat-common/src/main/java/org/laidu/learn/wechat/common/handler/MsgHandler.java new file mode 100644 index 000000000..f396b5b68 --- /dev/null +++ b/framework/thirdparty/wechat/wechat-common/src/main/java/org/laidu/learn/wechat/common/handler/MsgHandler.java @@ -0,0 +1,26 @@ +package org.laidu.learn.wechat.common.handler; + +import me.chanjar.weixin.common.session.WxSessionManager; +import me.chanjar.weixin.mp.api.WxMpService; +import me.chanjar.weixin.mp.bean.message.WxMpXmlMessage; +import me.chanjar.weixin.mp.bean.message.WxMpXmlOutMessage; +import org.springframework.stereotype.Component; + +import java.util.Map; + +/** + * 转发客户消息给客服Handler + * + * Created by FirenzesEagle on 2016/7/27 0027. + * Email:liumingbo2008@gmail.com + */ +@Component +public class MsgHandler extends AbstractHandler { + @Override + public WxMpXmlOutMessage handle(WxMpXmlMessage wxMessage, Map context, WxMpService wxMpService, + WxSessionManager sessionManager) { + return WxMpXmlOutMessage + .TRANSFER_CUSTOMER_SERVICE().fromUser(wxMessage.getToUser()) + .toUser(wxMessage.getFromUser()).build(); + } +} diff --git a/framework/thirdparty/wechat/wechat-common/src/main/java/org/laidu/learn/wechat/common/handler/SubscribeHandler.java b/framework/thirdparty/wechat/wechat-common/src/main/java/org/laidu/learn/wechat/common/handler/SubscribeHandler.java new file mode 100644 index 000000000..20f724a43 --- /dev/null +++ b/framework/thirdparty/wechat/wechat-common/src/main/java/org/laidu/learn/wechat/common/handler/SubscribeHandler.java @@ -0,0 +1,53 @@ +package org.laidu.learn.wechat.common.handler; + +import me.chanjar.weixin.common.session.WxSessionManager; +import me.chanjar.weixin.mp.api.WxMpConfigStorage; +import me.chanjar.weixin.mp.api.WxMpService; +import me.chanjar.weixin.mp.bean.message.WxMpXmlMessage; +import me.chanjar.weixin.mp.bean.message.WxMpXmlOutMessage; +import me.chanjar.weixin.mp.bean.message.WxMpXmlOutTextMessage; +import me.chanjar.weixin.mp.bean.result.WxMpUser; +import org.laidu.learn.wechat.common.service.CoreService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Component; + +import java.util.Map; + +/** + * 用户关注公众号Handler + *

            + * Created by FirenzesEagle on 2016/7/27 0027. + * Email:liumingbo2008@gmail.com + */ +@Component +public class SubscribeHandler extends AbstractHandler { + + @Autowired + protected WxMpConfigStorage configStorage; + @Autowired + protected WxMpService wxMpService; + @Autowired + protected CoreService coreService; + + + @Override + public WxMpXmlOutMessage handle(WxMpXmlMessage wxMessage, Map context, + WxMpService wxMpService, WxSessionManager sessionManager) { + WxMpUser wxMpUser = coreService.getUserInfo(wxMessage.getFromUser(), "zh_CN"); + /*List params = new ArrayList<>(); + params.add(new BasicNameValuePair("openId", wxMpUser.getOpenId())); + params.add(new BasicNameValuePair("nickname", wxMpUser.getNickname())); + params.add(new BasicNameValuePair("headImgUrl", wxMpUser.getHeadImgUrl()));*/ + + //TODO(user) 在这里可以进行用户关注时对业务系统的相关操作(比如新增用户) + + WxMpXmlOutTextMessage m + = WxMpXmlOutMessage.TEXT() + .content("尊敬的" + wxMpUser.getNickname() + ",您好!") + .fromUser(wxMessage.getToUser()) + .toUser(wxMessage.getFromUser()) + .build(); + logger.info("subscribeMessageHandler" + m.getContent()); + return m; + } +} diff --git a/framework/thirdparty/wechat/wechat-common/src/main/java/org/laidu/learn/wechat/common/service/CoreService.java b/framework/thirdparty/wechat/wechat-common/src/main/java/org/laidu/learn/wechat/common/service/CoreService.java new file mode 100644 index 000000000..3425e015d --- /dev/null +++ b/framework/thirdparty/wechat/wechat-common/src/main/java/org/laidu/learn/wechat/common/service/CoreService.java @@ -0,0 +1,59 @@ +package org.laidu.learn.wechat.common.service; + +import java.io.IOException; +import java.util.List; + +import org.apache.http.NameValuePair; +import org.apache.http.client.ClientProtocolException; + +import me.chanjar.weixin.mp.bean.message.WxMpXmlMessage; +import me.chanjar.weixin.mp.bean.message.WxMpXmlOutMessage; +import me.chanjar.weixin.mp.bean.result.WxMpUser; + +/** + * Created by FirenzesEagle on 2016/5/30 0030. + * Email:liumingbo2008@gmail.com + */ +public interface CoreService { + + /** + * HttpGet请求 + * + * @param urlWithParams + * @throws Exception + */ + void requestGet(String urlWithParams) throws IOException; + + /** + * HttpPost请求 + * + * @param url + * @param params + * @throws ClientProtocolException + * @throws IOException + */ + void requestPost(String url, List params) throws ClientProtocolException, IOException; + + /** + * 刷新消息路由器 + */ + void refreshRouter(); + + /** + * 路由消息 + * + * @param inMessage + * @return + */ + WxMpXmlOutMessage route(WxMpXmlMessage inMessage); + + /** + * 通过openid获得基本用户信息 + * + * @param openid + * @param lang + * @return + */ + WxMpUser getUserInfo(String openid, String lang); + +} diff --git a/framework/thirdparty/wechat/wechat-common/src/main/java/org/laidu/learn/wechat/common/service/impl/CoreServiceImpl.java b/framework/thirdparty/wechat/wechat-common/src/main/java/org/laidu/learn/wechat/common/service/impl/CoreServiceImpl.java new file mode 100644 index 000000000..c25ccf80b --- /dev/null +++ b/framework/thirdparty/wechat/wechat-common/src/main/java/org/laidu/learn/wechat/common/service/impl/CoreServiceImpl.java @@ -0,0 +1,134 @@ +package org.laidu.learn.wechat.common.service.impl; + +import me.chanjar.weixin.common.api.WxConsts; +import me.chanjar.weixin.common.error.WxErrorException; +import me.chanjar.weixin.mp.api.WxMpMessageRouter; +import me.chanjar.weixin.mp.api.WxMpService; +import me.chanjar.weixin.mp.bean.message.WxMpXmlMessage; +import me.chanjar.weixin.mp.bean.message.WxMpXmlOutMessage; +import me.chanjar.weixin.mp.bean.result.WxMpUser; +import org.apache.http.HttpEntity; +import org.apache.http.NameValuePair; +import org.apache.http.client.ClientProtocolException; +import org.apache.http.client.config.RequestConfig; +import org.apache.http.client.entity.UrlEncodedFormEntity; +import org.apache.http.client.methods.CloseableHttpResponse; +import org.apache.http.client.methods.HttpGet; +import org.apache.http.client.methods.HttpPost; +import org.apache.http.impl.client.CloseableHttpClient; +import org.apache.http.impl.client.HttpClientBuilder; +import org.apache.http.util.EntityUtils; +import org.laidu.learn.wechat.common.handler.LogHandler; +import org.laidu.learn.wechat.common.handler.MsgHandler; +import org.laidu.learn.wechat.common.handler.SubscribeHandler; +import org.laidu.learn.wechat.common.service.CoreService; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import javax.annotation.PostConstruct; +import java.io.IOException; +import java.nio.charset.StandardCharsets; +import java.util.List; + +/** + * Created by FirenzesEagle on 2016/5/30 0030. + * Email:liumingbo2008@gmail.com + */ +@Service +public class CoreServiceImpl implements CoreService { + + @Autowired + protected WxMpService wxMpService; + @Autowired + protected LogHandler logHandler; + @Autowired + protected SubscribeHandler subscribeHandler; + @Autowired + protected MsgHandler msgHandler; + protected Logger logger = LoggerFactory.getLogger(getClass()); + private WxMpMessageRouter router; + + @PostConstruct + public void init() { + this.refreshRouter(); + } + + @Override + public void requestGet(String urlWithParams) throws IOException { + CloseableHttpClient httpclient = HttpClientBuilder.create().build(); + HttpGet httpget = new HttpGet(urlWithParams); + httpget.addHeader("Content-Type", "text/html;charset=UTF-8"); + //配置请求的超时设置 + RequestConfig requestConfig = RequestConfig.custom() + .setConnectionRequestTimeout(50) + .setConnectTimeout(50) + .setSocketTimeout(50).build(); + httpget.setConfig(requestConfig); + + CloseableHttpResponse response = httpclient.execute(httpget); + System.out.println("StatusCode -> " + response.getStatusLine().getStatusCode()); + + HttpEntity entity = response.getEntity(); + String jsonStr = EntityUtils.toString(entity); + System.out.println(jsonStr); + + httpget.releaseConnection(); + } + + @Override + public void requestPost(String url, List params) throws ClientProtocolException, IOException { + CloseableHttpClient httpclient = HttpClientBuilder.create().build(); + + HttpPost httppost = new HttpPost(url); + httppost.setEntity(new UrlEncodedFormEntity(params, StandardCharsets.UTF_8)); + + CloseableHttpResponse response = httpclient.execute(httppost); + System.out.println(response.toString()); + + HttpEntity entity = response.getEntity(); + String jsonStr = EntityUtils.toString(entity, "utf-8"); + System.out.println(jsonStr); + + httppost.releaseConnection(); + } + + @Override + public void refreshRouter() { + final WxMpMessageRouter newRouter = new WxMpMessageRouter( + this.wxMpService); + // 记录所有事件的日志 + newRouter.rule().handler(this.logHandler).next(); + // 关注事件 + newRouter.rule().async(false).msgType(WxConsts.XmlMsgType.EVENT) + .event(WxConsts.EventType.SUBSCRIBE).handler(this.subscribeHandler) + .end(); + // 默认,转发消息给客服人员 + newRouter.rule().async(false).handler(this.msgHandler).end(); + this.router = newRouter; + } + + @Override + public WxMpXmlOutMessage route(WxMpXmlMessage inMessage) { + try { + return this.router.route(inMessage); + } catch (Exception e) { + this.logger.error(e.getMessage(), e); + } + + return null; + } + + @Override + public WxMpUser getUserInfo(String openid, String lang) { + WxMpUser wxMpUser = null; + try { + wxMpUser = this.wxMpService.getUserService().userInfo(openid, lang); + } catch (WxErrorException e) { + this.logger.error(e.getError().toString()); + } + return wxMpUser; + } + +} diff --git a/framework/thirdparty/wechat/wechat-common/src/main/java/org/laidu/learn/wechat/common/util/GenericReturnModel.java b/framework/thirdparty/wechat/wechat-common/src/main/java/org/laidu/learn/wechat/common/util/GenericReturnModel.java new file mode 100644 index 000000000..bc0c580b8 --- /dev/null +++ b/framework/thirdparty/wechat/wechat-common/src/main/java/org/laidu/learn/wechat/common/util/GenericReturnModel.java @@ -0,0 +1,35 @@ +package org.laidu.learn.wechat.common.util; + +public class GenericReturnModel { + + private boolean result; + private String reason; + + private T datum; + + public boolean isResult() { + return result; + } + + public void setResult(boolean result) { + this.result = result; + } + + public String getReason() { + return reason; + } + + public void setReason(String reason) { + this.reason = reason; + } + + public T getDatum() { + return datum; + } + + public void setDatum(T datum) { + this.datum = datum; + } + + +} diff --git a/framework/thirdparty/wechat/wechat-common/src/main/java/org/laidu/learn/wechat/common/util/MD5Util.java b/framework/thirdparty/wechat/wechat-common/src/main/java/org/laidu/learn/wechat/common/util/MD5Util.java new file mode 100644 index 000000000..cf7b59339 --- /dev/null +++ b/framework/thirdparty/wechat/wechat-common/src/main/java/org/laidu/learn/wechat/common/util/MD5Util.java @@ -0,0 +1,46 @@ +package org.laidu.learn.wechat.common.util; + +import java.security.MessageDigest; + +import static java.nio.charset.StandardCharsets.UTF_8; + +public class MD5Util { + + private static final String HEX_DIGITS[] = {"0", "1", "2", "3", "4", "5", + "6", "7", "8", "9", "a", "b", "c", "d", "e", "f"}; + + public static String md5Encode(String origin, String charsetname) { + String resultString = null; + try { + resultString = origin; + MessageDigest md = MessageDigest.getInstance("MD5"); + if (charsetname == null || "".equals(charsetname)) + resultString = byteArrayToHexString(md.digest(resultString + .getBytes(UTF_8))); + else + resultString = byteArrayToHexString(md.digest(resultString + .getBytes(charsetname))); + } catch (Exception e) { + e.printStackTrace(); + } + return resultString; + } + + private static String byteArrayToHexString(byte b[]) { + StringBuffer resultSb = new StringBuffer(); + for (int i = 0; i < b.length; i++) + resultSb.append(byteToHexString(b[i])); + + return resultSb.toString(); + } + + private static String byteToHexString(byte b) { + int n = b; + if (n < 0) + n += 256; + int d1 = n / 16; + int d2 = n % 16; + return HEX_DIGITS[d1] + HEX_DIGITS[d2]; + } + +} diff --git a/framework/thirdparty/wechat/wechat-common/src/main/java/org/laidu/learn/wechat/common/util/ReturnModel.java b/framework/thirdparty/wechat/wechat-common/src/main/java/org/laidu/learn/wechat/common/util/ReturnModel.java new file mode 100644 index 000000000..b07d3b13b --- /dev/null +++ b/framework/thirdparty/wechat/wechat-common/src/main/java/org/laidu/learn/wechat/common/util/ReturnModel.java @@ -0,0 +1,5 @@ +package org.laidu.learn.wechat.common.util; + +public class ReturnModel extends GenericReturnModel { + +} diff --git a/framework/thirdparty/wechat/wechat-common/src/main/java/org/laidu/learn/wechat/common/util/Sha1Util.java b/framework/thirdparty/wechat/wechat-common/src/main/java/org/laidu/learn/wechat/common/util/Sha1Util.java new file mode 100644 index 000000000..6bf560a9a --- /dev/null +++ b/framework/thirdparty/wechat/wechat-common/src/main/java/org/laidu/learn/wechat/common/util/Sha1Util.java @@ -0,0 +1,69 @@ +package org.laidu.learn.wechat.common.util; + +import java.security.MessageDigest; +import java.util.Iterator; +import java.util.Map; +import java.util.Random; +import java.util.Set; +import java.util.SortedMap; + +/** + * createSHA1Sign创建签名SHA1 + * getSha1()Sha1签名 + */ +public class Sha1Util { + + public static String getNonceStr() { + Random random = new Random(); + return MD5Util.md5Encode(String.valueOf(random.nextInt(10000)), "UTF-8"); + } + + public static String getTimeStamp() { + return String.valueOf(System.currentTimeMillis() / 1000); + } + + //创建签名SHA1 + public static String createSHA1Sign(SortedMap signParams) throws Exception { + StringBuffer sb = new StringBuffer(); + Set es = signParams.entrySet(); + Iterator it = es.iterator(); + while (it.hasNext()) { + Map.Entry entry = (Map.Entry) it.next(); + String k = (String) entry.getKey(); + String v = (String) entry.getValue(); + sb.append(k + "=" + v + "&"); + //要采用URLENCODER的原始值! + } + String params = sb.substring(0, sb.lastIndexOf("&")); + System.out.println("sha1 sb:" + params); + return getSha1(params); + } + + //Sha1签名 + public static String getSha1(String str) { + if (str == null || str.length() == 0) { + return null; + } + char hexDigits[] = {'0', '1', '2', '3', '4', '5', '6', '7', '8', '9', + 'a', 'b', 'c', 'd', 'e', 'f'}; + + try { + MessageDigest mdTemp = MessageDigest.getInstance("SHA1"); + mdTemp.update(str.getBytes("GBK")); + + byte[] md = mdTemp.digest(); + int j = md.length; + char buf[] = new char[j * 2]; + int k = 0; + for (int i = 0; i < j; i++) { + byte byte0 = md[i]; + buf[k++] = hexDigits[byte0 >>> 4 & 0xf]; + buf[k++] = hexDigits[byte0 & 0xf]; + } + return new String(buf); + } catch (Exception e) { + e.printStackTrace(); + return null; + } + } +} diff --git a/framework/thirdparty/wechat/wechat-common/src/main/java/org/laidu/learn/wechat/common/util/XMLUtil.java b/framework/thirdparty/wechat/wechat-common/src/main/java/org/laidu/learn/wechat/common/util/XMLUtil.java new file mode 100644 index 000000000..a6554603d --- /dev/null +++ b/framework/thirdparty/wechat/wechat-common/src/main/java/org/laidu/learn/wechat/common/util/XMLUtil.java @@ -0,0 +1,78 @@ +package org.laidu.learn.wechat.common.util; + +import org.dom4j.Document; +import org.dom4j.DocumentException; +import org.dom4j.Element; +import org.dom4j.io.SAXReader; + +import javax.servlet.http.HttpServletRequest; +import java.io.ByteArrayInputStream; +import java.io.IOException; +import java.io.InputStream; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +/** + * Created by FirenzesEagle on 2016/7/7 0007. + * Email:liumingbo2008@gmail.com + */ +public class XMLUtil { + + /** + * 将微信服务器发送的Request请求中Body的XML解析为Map + * + * @param request + * @return + * @throws Exception + */ + public static Map parseRequestXmlToMap(HttpServletRequest request) throws Exception { + // 解析结果存储在HashMap中 + Map resultMap; + InputStream inputStream = request.getInputStream(); + resultMap = parseInputStreamToMap(inputStream); + return resultMap; + } + + /** + * 将输入流中的XML解析为Map + * + * @param inputStream + * @return + * @throws DocumentException + * @throws IOException + */ + public static Map parseInputStreamToMap(InputStream inputStream) throws DocumentException, IOException { + // 解析结果存储在HashMap中 + Map map = new HashMap(); + // 读取输入流 + SAXReader reader = new SAXReader(); + Document document = reader.read(inputStream); + //得到xml根元素 + Element root = document.getRootElement(); + // 得到根元素的所有子节点 + List elementList = root.elements(); + //遍历所有子节点 + for (Element e : elementList) { + map.put(e.getName(), e.getText()); + } + //释放资源 + inputStream.close(); + return map; + } + + /** + * 将String类型的XML解析为Map + * + * @param str + * @return + * @throws Exception + */ + public static Map parseXmlStringToMap(String str) throws Exception { + Map resultMap; + InputStream inputStream = new ByteArrayInputStream(str.getBytes("UTF-8")); + resultMap = parseInputStreamToMap(inputStream); + return resultMap; + } + +} diff --git a/framework/thirdparty/wechat/wechat-common/src/main/java/org/laidu/learn/wechat/common/util/package-info.java b/framework/thirdparty/wechat/wechat-common/src/main/java/org/laidu/learn/wechat/common/util/package-info.java new file mode 100644 index 000000000..706b7572d --- /dev/null +++ b/framework/thirdparty/wechat/wechat-common/src/main/java/org/laidu/learn/wechat/common/util/package-info.java @@ -0,0 +1,7 @@ +/** + * 工具类包 + * + * Created by FirenzesEagle on 2016/6/27 0027. + * Email:liumingbo2008@gmail.com + */ +package org.laidu.learn.wechat.common.util; diff --git a/framework/thirdparty/wechat/wechat-common/src/main/resources/application.yml b/framework/thirdparty/wechat/wechat-common/src/main/resources/application.yml new file mode 100644 index 000000000..9601452c2 --- /dev/null +++ b/framework/thirdparty/wechat/wechat-common/src/main/resources/application.yml @@ -0,0 +1,13 @@ + +# 测试号 +wechat: + appId: wx2753c5a78925a382 + appSecret: f55fa3dc82b91473fd9ceb6f8ac8cbd5 + token: laidu823 +server: + port: 8080 +spring: + redis: + host: local-dev + port: 6379 + database: 0 diff --git a/framework/thirdparty/wechat/wechat-common/src/site/markdown/index.md b/framework/thirdparty/wechat/wechat-common/src/site/markdown/index.md new file mode 100644 index 000000000..db50db547 --- /dev/null +++ b/framework/thirdparty/wechat/wechat-common/src/site/markdown/index.md @@ -0,0 +1 @@ +# 微信开发 通用模块 \ No newline at end of file diff --git a/framework/thirdparty/wechat/wechat-mp/pom.xml b/framework/thirdparty/wechat/wechat-mp/pom.xml new file mode 100644 index 000000000..d3ee7d659 --- /dev/null +++ b/framework/thirdparty/wechat/wechat-mp/pom.xml @@ -0,0 +1,31 @@ + + + + wechat + org.laidu.learn + 1.0-SNAPSHOT + + 4.0.0 + + wechat-mp + + + + + + + org.laidu.learn + wechat-common + 1.0-SNAPSHOT + + + + com.github.binarywang + weixin-java-tools-springmvc + + + + + \ No newline at end of file diff --git a/framework/thirdparty/wechat/wechat-mp/src/main/java/org/laidu/learn/thirdparty/wechat/mp/MpApp.java b/framework/thirdparty/wechat/wechat-mp/src/main/java/org/laidu/learn/thirdparty/wechat/mp/MpApp.java new file mode 100644 index 000000000..bea11ac0f --- /dev/null +++ b/framework/thirdparty/wechat/wechat-mp/src/main/java/org/laidu/learn/thirdparty/wechat/mp/MpApp.java @@ -0,0 +1,27 @@ +package org.laidu.learn.thirdparty.wechat.mp; + +import lombok.extern.slf4j.Slf4j; +import org.springframework.boot.Banner; +import org.springframework.boot.builder.SpringApplicationBuilder; + +/** + * 微信公众号 + *

            + * Created by laidu + * on 2018-07-20 13:51. + * + * @author laidu + */ +@Slf4j +public class MpApp { + + public static void main(String[] args) { + + + new SpringApplicationBuilder(MpApp.class) + .bannerMode(Banner.Mode.OFF) + .logStartupInfo(false) + .run(args); + + } +} \ No newline at end of file diff --git a/framework/thirdparty/wechat/wechat-mp/src/site/markdown/index.md b/framework/thirdparty/wechat/wechat-mp/src/site/markdown/index.md new file mode 100644 index 000000000..b6e7d5940 --- /dev/null +++ b/framework/thirdparty/wechat/wechat-mp/src/site/markdown/index.md @@ -0,0 +1 @@ +# 微信公众号后台开发 \ No newline at end of file diff --git a/production-component/common-util/pom.xml b/production-component/common-util/pom.xml index 7d76bf9a9..b6b4c3f9a 100644 --- a/production-component/common-util/pom.xml +++ b/production-component/common-util/pom.xml @@ -34,6 +34,8 @@ 1.2.45 2.9.1 + 2.1.1 + 4.4.8 4.5.3 @@ -175,6 +177,14 @@ ${jackson.version} + + + org.dom4j + dom4j + ${dom4j.version} + + + de.ruedigermoeller From 0d5eab4255ff9659cb152c94b49300da54178bf5 Mon Sep 17 00:00:00 2001 From: Tiancai ZANG Date: Fri, 20 Jul 2018 17:44:54 +0800 Subject: [PATCH 121/417] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=20=E5=BE=AE=E4=BF=A1?= =?UTF-8?q?=20=E5=BC=80=E5=8F=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../config/WechatCommonImportSelector.java | 1 - .../common/controller/CoreController.java | 39 +++++++++++++------ .../wechat/common/handler/LogHandler.java | 11 +++--- .../wechat/common/handler/MsgHandler.java | 9 ++++- 4 files changed, 42 insertions(+), 18 deletions(-) diff --git a/framework/thirdparty/wechat/wechat-common/src/main/java/org/laidu/learn/wechat/common/config/WechatCommonImportSelector.java b/framework/thirdparty/wechat/wechat-common/src/main/java/org/laidu/learn/wechat/common/config/WechatCommonImportSelector.java index 61b2d46a5..6ee023ab9 100644 --- a/framework/thirdparty/wechat/wechat-common/src/main/java/org/laidu/learn/wechat/common/config/WechatCommonImportSelector.java +++ b/framework/thirdparty/wechat/wechat-common/src/main/java/org/laidu/learn/wechat/common/config/WechatCommonImportSelector.java @@ -12,7 +12,6 @@ * * @author laidu */ -// TODO: 2018-07-20 14:56 微信 @Slf4j public class WechatCommonImportSelector implements ImportSelector { diff --git a/framework/thirdparty/wechat/wechat-common/src/main/java/org/laidu/learn/wechat/common/controller/CoreController.java b/framework/thirdparty/wechat/wechat-common/src/main/java/org/laidu/learn/wechat/common/controller/CoreController.java index ea26b5be8..08e1bbb93 100644 --- a/framework/thirdparty/wechat/wechat-common/src/main/java/org/laidu/learn/wechat/common/controller/CoreController.java +++ b/framework/thirdparty/wechat/wechat-common/src/main/java/org/laidu/learn/wechat/common/controller/CoreController.java @@ -1,7 +1,9 @@ package org.laidu.learn.wechat.common.controller; import lombok.extern.slf4j.Slf4j; +import me.chanjar.weixin.common.api.WxConsts; import me.chanjar.weixin.common.error.WxErrorException; +import me.chanjar.weixin.mp.AiLangType; import me.chanjar.weixin.mp.api.WxMpConfigStorage; import me.chanjar.weixin.mp.api.WxMpService; import me.chanjar.weixin.mp.bean.message.WxMpXmlMessage; @@ -15,6 +17,7 @@ import org.springframework.beans.factory.annotation.Value; import org.springframework.data.redis.core.StringRedisTemplate; import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestParam; @@ -30,20 +33,24 @@ @Controller public class CoreController extends GenericController { - @Autowired - protected WxMpConfigStorage configStorage; - @Autowired - protected WxMpService wxMpService; - @Autowired - protected CoreService coreService; + private final WxMpConfigStorage configStorage; + private final WxMpService wxMpService; + private final CoreService coreService; - @Autowired - private StringRedisTemplate redisTemplate; + private final StringRedisTemplate redisTemplate; @Value("${msgQueueKey:msg}") private String msgQueueKey; - @RequestMapping(value = "/index") + @Autowired + public CoreController(WxMpConfigStorage configStorage, WxMpService wxMpService, CoreService coreService, StringRedisTemplate redisTemplate) { + this.configStorage = configStorage; + this.wxMpService = wxMpService; + this.coreService = coreService; + this.redisTemplate = redisTemplate; + } + + @GetMapping(value = "/index") public String index() { return "index"; } @@ -85,8 +92,18 @@ public void wechatCore(HttpServletRequest request, HttpServletResponse response) if (outMessage == null) { response.getWriter().write(""); } else { - redisTemplate.opsForList().leftPush(msgQueueKey,inMessage.getContent()); - response.getWriter().write("弹幕内容: "+inMessage.getContent()); + String openid = inMessage.getFromUser(); + WxMpUser wxMpUser = this.wxMpService.getUserService().userInfo(openid, "zh_CN"); + + String msg = inMessage.getContent() ; + if (WxConsts.MassMsgType.VOICE.equals(inMessage.getMsgType())) { + msg = wxMpService.getAiOpenService().queryRecognitionResult(inMessage.getMediaId(), AiLangType.zh_CN); + } + if (!"【收到不支持的消息类型,暂无法显示】".equals(msg)) { + redisTemplate.opsForList().leftPush(msgQueueKey,"来自用户 "+wxMpUser.getNickname()+" : " + msg); + } + + response.getWriter().write(outMessage.toXml()); } return; diff --git a/framework/thirdparty/wechat/wechat-common/src/main/java/org/laidu/learn/wechat/common/handler/LogHandler.java b/framework/thirdparty/wechat/wechat-common/src/main/java/org/laidu/learn/wechat/common/handler/LogHandler.java index 99ec7085d..db38d42e1 100644 --- a/framework/thirdparty/wechat/wechat-common/src/main/java/org/laidu/learn/wechat/common/handler/LogHandler.java +++ b/framework/thirdparty/wechat/wechat-common/src/main/java/org/laidu/learn/wechat/common/handler/LogHandler.java @@ -1,13 +1,13 @@ package org.laidu.learn.wechat.common.handler; -import java.util.Map; - -import org.springframework.stereotype.Component; - +import lombok.extern.slf4j.Slf4j; import me.chanjar.weixin.common.session.WxSessionManager; import me.chanjar.weixin.mp.api.WxMpService; import me.chanjar.weixin.mp.bean.message.WxMpXmlMessage; import me.chanjar.weixin.mp.bean.message.WxMpXmlOutMessage; +import org.springframework.stereotype.Component; + +import java.util.Map; /** * 对所有接收到的消息输出日志,也可进行持久化处理 @@ -15,13 +15,14 @@ * Created by FirenzesEagle on 2016/7/27 0027. * Email:liumingbo2008@gmail.com */ +@Slf4j @Component public class LogHandler extends AbstractHandler { @Override public WxMpXmlOutMessage handle(WxMpXmlMessage wxMessage, Map context, WxMpService wxMpService, WxSessionManager sessionManager) { - this.logger.info("\n接收到请求消息,内容:【{}】", wxMessage.toString()); + log.info("收到来自 {} 的消息(type {}) : {}", wxMessage.getFromUser(), wxMessage.getMsgType() , wxMessage.getContent()); return null; } } diff --git a/framework/thirdparty/wechat/wechat-common/src/main/java/org/laidu/learn/wechat/common/handler/MsgHandler.java b/framework/thirdparty/wechat/wechat-common/src/main/java/org/laidu/learn/wechat/common/handler/MsgHandler.java index f396b5b68..618c304ee 100644 --- a/framework/thirdparty/wechat/wechat-common/src/main/java/org/laidu/learn/wechat/common/handler/MsgHandler.java +++ b/framework/thirdparty/wechat/wechat-common/src/main/java/org/laidu/learn/wechat/common/handler/MsgHandler.java @@ -1,5 +1,6 @@ package org.laidu.learn.wechat.common.handler; +import lombok.extern.slf4j.Slf4j; import me.chanjar.weixin.common.session.WxSessionManager; import me.chanjar.weixin.mp.api.WxMpService; import me.chanjar.weixin.mp.bean.message.WxMpXmlMessage; @@ -14,13 +15,19 @@ * Created by FirenzesEagle on 2016/7/27 0027. * Email:liumingbo2008@gmail.com */ +@Slf4j @Component public class MsgHandler extends AbstractHandler { @Override public WxMpXmlOutMessage handle(WxMpXmlMessage wxMessage, Map context, WxMpService wxMpService, WxSessionManager sessionManager) { - return WxMpXmlOutMessage + + + WxMpXmlOutMessage outMessage = WxMpXmlOutMessage .TRANSFER_CUSTOMER_SERVICE().fromUser(wxMessage.getToUser()) .toUser(wxMessage.getFromUser()).build(); + + + return outMessage; } } From 6a16ba3a83de0b453fd4523f459b6d496f61f30a Mon Sep 17 00:00:00 2001 From: Tiancai ZANG Date: Mon, 23 Jul 2018 18:44:54 +0800 Subject: [PATCH 122/417] =?UTF-8?q?=E7=BB=A7=E7=BB=AD=20spring-cloud=20?= =?UTF-8?q?=E5=AD=A6=E4=B9=A0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../consumer/CustomerHelloApplication.java | 9 +++- .../controller/HelloConsumerController.java | 15 +++--- .../cloud/consumer/service/HelloService.java | 1 + .../service/impl/HelloServerImpl.java | 46 +++++++++++++++++++ .../spring/cloud/ServiceHelloApplication.java | 6 +++ 5 files changed, 68 insertions(+), 9 deletions(-) create mode 100644 framework/spring/spring-cloud/consumer-hello/src/main/java/org/laidu/learn/spring/cloud/consumer/service/impl/HelloServerImpl.java diff --git a/framework/spring/spring-cloud/consumer-hello/src/main/java/org/laidu/learn/spring/cloud/consumer/CustomerHelloApplication.java b/framework/spring/spring-cloud/consumer-hello/src/main/java/org/laidu/learn/spring/cloud/consumer/CustomerHelloApplication.java index ed4805ccd..3d9ef525c 100644 --- a/framework/spring/spring-cloud/consumer-hello/src/main/java/org/laidu/learn/spring/cloud/consumer/CustomerHelloApplication.java +++ b/framework/spring/spring-cloud/consumer-hello/src/main/java/org/laidu/learn/spring/cloud/consumer/CustomerHelloApplication.java @@ -1,7 +1,8 @@ package org.laidu.learn.spring.cloud.consumer; -import org.springframework.boot.SpringApplication; +import org.springframework.boot.Banner; import org.springframework.boot.autoconfigure.SpringBootApplication; +import org.springframework.boot.builder.SpringApplicationBuilder; import org.springframework.cloud.client.circuitbreaker.EnableCircuitBreaker; import org.springframework.cloud.client.discovery.EnableDiscoveryClient; import org.springframework.cloud.client.loadbalancer.LoadBalanced; @@ -23,6 +24,10 @@ RestTemplate restTemplate(){ } public static void main(String[] args) { - SpringApplication.run(CustomerHelloApplication.class, args); + + new SpringApplicationBuilder(CustomerHelloApplication.class) + .bannerMode(Banner.Mode.OFF) + .logStartupInfo(false) + .run(args); } } diff --git a/framework/spring/spring-cloud/consumer-hello/src/main/java/org/laidu/learn/spring/cloud/consumer/controller/HelloConsumerController.java b/framework/spring/spring-cloud/consumer-hello/src/main/java/org/laidu/learn/spring/cloud/consumer/controller/HelloConsumerController.java index d787a65ee..5177c62ce 100644 --- a/framework/spring/spring-cloud/consumer-hello/src/main/java/org/laidu/learn/spring/cloud/consumer/controller/HelloConsumerController.java +++ b/framework/spring/spring-cloud/consumer-hello/src/main/java/org/laidu/learn/spring/cloud/consumer/controller/HelloConsumerController.java @@ -1,11 +1,10 @@ package org.laidu.learn.spring.cloud.consumer.controller; import lombok.extern.slf4j.Slf4j; -import org.springframework.beans.factory.annotation.Autowired; +import org.laidu.learn.spring.cloud.consumer.service.HelloService; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RestController; import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.client.RestTemplate; /** * @author tiancai.zang @@ -16,15 +15,17 @@ @RequestMapping("/") public class HelloConsumerController { - private final RestTemplate restTemplate; - @Autowired - public HelloConsumerController(RestTemplate restTemplate) { - this.restTemplate = restTemplate; + private final HelloService helloService; + + public HelloConsumerController(HelloService helloService) { + this.helloService = helloService; } + @GetMapping("/hello-consumer") public String helloConsumer(){ - return restTemplate.getForEntity("http://HELLO-SERVICE/hello",String.class).getBody(); + + return helloService.hello(); } } \ No newline at end of file diff --git a/framework/spring/spring-cloud/consumer-hello/src/main/java/org/laidu/learn/spring/cloud/consumer/service/HelloService.java b/framework/spring/spring-cloud/consumer-hello/src/main/java/org/laidu/learn/spring/cloud/consumer/service/HelloService.java index 156afe52c..19103c442 100644 --- a/framework/spring/spring-cloud/consumer-hello/src/main/java/org/laidu/learn/spring/cloud/consumer/service/HelloService.java +++ b/framework/spring/spring-cloud/consumer-hello/src/main/java/org/laidu/learn/spring/cloud/consumer/service/HelloService.java @@ -8,5 +8,6 @@ */ public interface HelloService { + String hello(); } diff --git a/framework/spring/spring-cloud/consumer-hello/src/main/java/org/laidu/learn/spring/cloud/consumer/service/impl/HelloServerImpl.java b/framework/spring/spring-cloud/consumer-hello/src/main/java/org/laidu/learn/spring/cloud/consumer/service/impl/HelloServerImpl.java new file mode 100644 index 000000000..9ef0f0f36 --- /dev/null +++ b/framework/spring/spring-cloud/consumer-hello/src/main/java/org/laidu/learn/spring/cloud/consumer/service/impl/HelloServerImpl.java @@ -0,0 +1,46 @@ + +package org.laidu.learn.spring.cloud.consumer.service.impl; + +import com.netflix.hystrix.contrib.javanica.annotation.HystrixCommand; +import jodd.util.ThreadUtil; +import lombok.extern.slf4j.Slf4j; +import org.laidu.learn.spring.cloud.consumer.service.HelloService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import org.springframework.web.client.RestTemplate; + +import java.util.Random; + +/** + * hello service + *

            + * Created by laidu + * on 2018-07-23 16:55. + * + * @author laidu + */ +@Slf4j +@Service +public class HelloServerImpl implements HelloService { + + + private final RestTemplate restTemplate; + + @Autowired + public HelloServerImpl(RestTemplate restTemplate) { + this.restTemplate = restTemplate; + } + + @Override + @HystrixCommand(fallbackMethod = "helloErrorFallBack",commandKey = "helloKey") + public String hello() { + + ThreadUtil.sleep(new Random().nextInt(300)); + + return restTemplate.getForEntity("http://hello-service/hello",String.class).getBody(); + } + + public String helloErrorFallBack(){ + return "error"; + } +} \ No newline at end of file diff --git a/framework/spring/spring-cloud/service-hello/src/main/java/org/laidu/learn/spring/cloud/ServiceHelloApplication.java b/framework/spring/spring-cloud/service-hello/src/main/java/org/laidu/learn/spring/cloud/ServiceHelloApplication.java index f801e7f17..bf522f065 100644 --- a/framework/spring/spring-cloud/service-hello/src/main/java/org/laidu/learn/spring/cloud/ServiceHelloApplication.java +++ b/framework/spring/spring-cloud/service-hello/src/main/java/org/laidu/learn/spring/cloud/ServiceHelloApplication.java @@ -1,7 +1,9 @@ package org.laidu.learn.spring.cloud; +import org.springframework.boot.Banner; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; +import org.springframework.boot.builder.SpringApplicationBuilder; import org.springframework.cloud.client.discovery.EnableDiscoveryClient; /** @@ -13,5 +15,9 @@ public class ServiceHelloApplication { public static void main(String[] args) { SpringApplication.run(ServiceHelloApplication.class, args); + new SpringApplicationBuilder(ServiceHelloApplication.class) + .logStartupInfo(false) + .bannerMode(Banner.Mode.OFF) + .run(args); } } From db2e160833933feb9fb478b29f659af95f8f61ba Mon Sep 17 00:00:00 2001 From: "xpcoder823@gmail.com" Date: Mon, 23 Jul 2018 22:22:48 +0800 Subject: [PATCH 123/417] sync --- .../aop/service/impl/UserServiceImpl.java | 3 +- .../spring/spring-cloud/consumer-hello/mvnw | 1 - .../spring-cloud/consumer-hello/pom.xml | 5 ++ .../spring/spring-cloud/eureka-server/mvnw | 1 - .../cloud/eureka/EurekaServerApplication.java | 8 +- .../spring-cloud/hystrix-dashboard/pom.xml | 28 +++++++ .../spring/cloud/hystrix/HystrixDashApp.java | 28 +++++++ .../src/main/resources/application.properties | 2 + framework/spring/spring-cloud/pom.xml | 1 + .../spring/spring-cloud/service-hello/mvnw | 1 - .../spring/cloud/ServiceHelloApplication.java | 1 - .../org/laidu/learn/spring/mvc/MvcApp.java | 2 - .../spring/mvc/controller/HomeController.java | 3 - .../mvc/service/impl/HelloServiceImpl.java | 2 - framework/spring/swagger/mvnw | 1 - pom.xml | 75 +++++++------------ .../common-util/src/site/mardown/index.md | 18 +++++ 17 files changed, 116 insertions(+), 64 deletions(-) create mode 100644 framework/spring/spring-cloud/hystrix-dashboard/pom.xml create mode 100644 framework/spring/spring-cloud/hystrix-dashboard/src/main/java/org/laidu/learn/spring/cloud/hystrix/HystrixDashApp.java create mode 100644 framework/spring/spring-cloud/hystrix-dashboard/src/main/resources/application.properties diff --git a/framework/spring/spring-aop/src/main/java/org/laidu/learn/spring/aop/service/impl/UserServiceImpl.java b/framework/spring/spring-aop/src/main/java/org/laidu/learn/spring/aop/service/impl/UserServiceImpl.java index 072557588..9c9e9726c 100644 --- a/framework/spring/spring-aop/src/main/java/org/laidu/learn/spring/aop/service/impl/UserServiceImpl.java +++ b/framework/spring/spring-aop/src/main/java/org/laidu/learn/spring/aop/service/impl/UserServiceImpl.java @@ -16,14 +16,13 @@ public class UserServiceImpl implements UserService { @Override -// @MethodMonitor(logic = UserServiceLogLogic.class) @MethodMonitor public void addUser(String name) { log.info("addUser: {}", name); } @Override - @xyz.xpcoder.commons.common.monitor.annoation.MethodMonitor + @MethodMonitor public void addUser(String name, int age) { log.info("name: {}, age : {}", name, age); throw new NullPointerException(); diff --git a/framework/spring/spring-cloud/consumer-hello/mvnw b/framework/spring/spring-cloud/consumer-hello/mvnw index 5bf251c07..d29a6580d 100755 --- a/framework/spring/spring-cloud/consumer-hello/mvnw +++ b/framework/spring/spring-cloud/consumer-hello/mvnw @@ -114,7 +114,6 @@ if $mingw ; then M2_HOME="`(cd "$M2_HOME"; pwd)`" [ -n "$JAVA_HOME" ] && JAVA_HOME="`(cd "$JAVA_HOME"; pwd)`" - # TODO classpath? fi if [ -z "$JAVA_HOME" ]; then diff --git a/framework/spring/spring-cloud/consumer-hello/pom.xml b/framework/spring/spring-cloud/consumer-hello/pom.xml index 9ab5482f5..93692d7e4 100644 --- a/framework/spring/spring-cloud/consumer-hello/pom.xml +++ b/framework/spring/spring-cloud/consumer-hello/pom.xml @@ -30,6 +30,11 @@ spring-cloud-starter-netflix-hystrix + + org.springframework.boot + spring-boot-starter-actuator + + org.springframework.boot spring-boot-starter-web-services diff --git a/framework/spring/spring-cloud/eureka-server/mvnw b/framework/spring/spring-cloud/eureka-server/mvnw index 5bf251c07..d29a6580d 100755 --- a/framework/spring/spring-cloud/eureka-server/mvnw +++ b/framework/spring/spring-cloud/eureka-server/mvnw @@ -114,7 +114,6 @@ if $mingw ; then M2_HOME="`(cd "$M2_HOME"; pwd)`" [ -n "$JAVA_HOME" ] && JAVA_HOME="`(cd "$JAVA_HOME"; pwd)`" - # TODO classpath? fi if [ -z "$JAVA_HOME" ]; then diff --git a/framework/spring/spring-cloud/eureka-server/src/main/java/org/laidu/learn/spring/cloud/eureka/EurekaServerApplication.java b/framework/spring/spring-cloud/eureka-server/src/main/java/org/laidu/learn/spring/cloud/eureka/EurekaServerApplication.java index 96cfbf9d7..116466413 100644 --- a/framework/spring/spring-cloud/eureka-server/src/main/java/org/laidu/learn/spring/cloud/eureka/EurekaServerApplication.java +++ b/framework/spring/spring-cloud/eureka-server/src/main/java/org/laidu/learn/spring/cloud/eureka/EurekaServerApplication.java @@ -1,7 +1,8 @@ package org.laidu.learn.spring.cloud.eureka; -import org.springframework.boot.SpringApplication; +import org.springframework.boot.Banner; import org.springframework.boot.autoconfigure.SpringBootApplication; +import org.springframework.boot.builder.SpringApplicationBuilder; import org.springframework.cloud.netflix.eureka.server.EnableEurekaServer; /** @@ -12,6 +13,9 @@ public class EurekaServerApplication { public static void main(String[] args) { - SpringApplication.run(EurekaServerApplication.class, args); + new SpringApplicationBuilder(EurekaServerApplication.class) + .bannerMode(Banner.Mode.OFF) + .logStartupInfo(false) + .run(args); } } diff --git a/framework/spring/spring-cloud/hystrix-dashboard/pom.xml b/framework/spring/spring-cloud/hystrix-dashboard/pom.xml new file mode 100644 index 000000000..bbaa72b04 --- /dev/null +++ b/framework/spring/spring-cloud/hystrix-dashboard/pom.xml @@ -0,0 +1,28 @@ + + + + spring-cloud + org.laidu.learn + 1.0-SNAPSHOT + + 4.0.0 + + hystrix-dashboard + + + + + org.springframework.cloud + spring-cloud-starter-netflix-hystrix + + + org.springframework.cloud + spring-cloud-netflix-hystrix-dashboard + + + + + + \ No newline at end of file diff --git a/framework/spring/spring-cloud/hystrix-dashboard/src/main/java/org/laidu/learn/spring/cloud/hystrix/HystrixDashApp.java b/framework/spring/spring-cloud/hystrix-dashboard/src/main/java/org/laidu/learn/spring/cloud/hystrix/HystrixDashApp.java new file mode 100644 index 000000000..39d07092b --- /dev/null +++ b/framework/spring/spring-cloud/hystrix-dashboard/src/main/java/org/laidu/learn/spring/cloud/hystrix/HystrixDashApp.java @@ -0,0 +1,28 @@ +package org.laidu.learn.spring.cloud.hystrix; + +import lombok.extern.slf4j.Slf4j; +import org.springframework.boot.Banner; +import org.springframework.boot.autoconfigure.SpringBootApplication; +import org.springframework.boot.builder.SpringApplicationBuilder; +import org.springframework.cloud.netflix.hystrix.dashboard.EnableHystrixDashboard; + +/** + * hystrix-dashboard + *

            + * Created by tiancai.zang + * on 2018-07-23 21:57. + */ +@Slf4j +@EnableHystrixDashboard +@SpringBootApplication +public class HystrixDashApp { + + public static void main(String[] args) { + + + new SpringApplicationBuilder(HystrixDashApp.class) + .logStartupInfo(false) + .bannerMode(Banner.Mode.OFF) + .run(args); + } +} \ No newline at end of file diff --git a/framework/spring/spring-cloud/hystrix-dashboard/src/main/resources/application.properties b/framework/spring/spring-cloud/hystrix-dashboard/src/main/resources/application.properties new file mode 100644 index 000000000..72c70075f --- /dev/null +++ b/framework/spring/spring-cloud/hystrix-dashboard/src/main/resources/application.properties @@ -0,0 +1,2 @@ +spring.application.name=hystrix-dashboard +server.port=2001 \ No newline at end of file diff --git a/framework/spring/spring-cloud/pom.xml b/framework/spring/spring-cloud/pom.xml index f87122962..3363aea00 100644 --- a/framework/spring/spring-cloud/pom.xml +++ b/framework/spring/spring-cloud/pom.xml @@ -16,6 +16,7 @@ consumer-hello eureka-server service-hello + hystrix-dashboard diff --git a/framework/spring/spring-cloud/service-hello/mvnw b/framework/spring/spring-cloud/service-hello/mvnw index 5bf251c07..d29a6580d 100755 --- a/framework/spring/spring-cloud/service-hello/mvnw +++ b/framework/spring/spring-cloud/service-hello/mvnw @@ -114,7 +114,6 @@ if $mingw ; then M2_HOME="`(cd "$M2_HOME"; pwd)`" [ -n "$JAVA_HOME" ] && JAVA_HOME="`(cd "$JAVA_HOME"; pwd)`" - # TODO classpath? fi if [ -z "$JAVA_HOME" ]; then diff --git a/framework/spring/spring-cloud/service-hello/src/main/java/org/laidu/learn/spring/cloud/ServiceHelloApplication.java b/framework/spring/spring-cloud/service-hello/src/main/java/org/laidu/learn/spring/cloud/ServiceHelloApplication.java index bf522f065..21d1d894d 100644 --- a/framework/spring/spring-cloud/service-hello/src/main/java/org/laidu/learn/spring/cloud/ServiceHelloApplication.java +++ b/framework/spring/spring-cloud/service-hello/src/main/java/org/laidu/learn/spring/cloud/ServiceHelloApplication.java @@ -14,7 +14,6 @@ public class ServiceHelloApplication { public static void main(String[] args) { - SpringApplication.run(ServiceHelloApplication.class, args); new SpringApplicationBuilder(ServiceHelloApplication.class) .logStartupInfo(false) .bannerMode(Banner.Mode.OFF) diff --git a/framework/spring/spring-web/spring-mvc/src/main/java/org/laidu/learn/spring/mvc/MvcApp.java b/framework/spring/spring-web/spring-mvc/src/main/java/org/laidu/learn/spring/mvc/MvcApp.java index 8468808a1..11bf9b7ff 100644 --- a/framework/spring/spring-web/spring-mvc/src/main/java/org/laidu/learn/spring/mvc/MvcApp.java +++ b/framework/spring/spring-web/spring-mvc/src/main/java/org/laidu/learn/spring/mvc/MvcApp.java @@ -4,7 +4,6 @@ import org.springframework.boot.Banner; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.boot.builder.SpringApplicationBuilder; -import xyz.xpcoder.commons.common.monitor.annoation.EnableMonitor; /** * spring mvc app @@ -13,7 +12,6 @@ * on 2018-05-30 11:29. */ @Slf4j -@EnableMonitor @SpringBootApplication public class MvcApp { diff --git a/framework/spring/spring-web/spring-mvc/src/main/java/org/laidu/learn/spring/mvc/controller/HomeController.java b/framework/spring/spring-web/spring-mvc/src/main/java/org/laidu/learn/spring/mvc/controller/HomeController.java index 499f3a62e..6ffd60fa7 100644 --- a/framework/spring/spring-web/spring-mvc/src/main/java/org/laidu/learn/spring/mvc/controller/HomeController.java +++ b/framework/spring/spring-web/spring-mvc/src/main/java/org/laidu/learn/spring/mvc/controller/HomeController.java @@ -7,7 +7,6 @@ import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.RestController; -import xyz.xpcoder.commons.common.monitor.annoation.MethodMonitor; import java.util.Random; @@ -28,7 +27,6 @@ public class HomeController { HelloService helloService; @GetMapping("/hello") -// @MethodMonitor public String hello() throws InterruptedException { // Thread.sleep(500); @@ -45,7 +43,6 @@ public Integer sleep(@RequestParam("sec") int secends ) throws InterruptedExcept } @GetMapping("/sleepRandom") - @MethodMonitor public Integer sleepRandom(@RequestParam("sec") int secends ) throws InterruptedException { Thread.sleep(new Random(100).nextInt(secends) * 1000); diff --git a/framework/spring/spring-web/spring-mvc/src/main/java/org/laidu/learn/spring/mvc/service/impl/HelloServiceImpl.java b/framework/spring/spring-web/spring-mvc/src/main/java/org/laidu/learn/spring/mvc/service/impl/HelloServiceImpl.java index 6eb397026..73ad1c8c0 100644 --- a/framework/spring/spring-web/spring-mvc/src/main/java/org/laidu/learn/spring/mvc/service/impl/HelloServiceImpl.java +++ b/framework/spring/spring-web/spring-mvc/src/main/java/org/laidu/learn/spring/mvc/service/impl/HelloServiceImpl.java @@ -3,7 +3,6 @@ import lombok.extern.slf4j.Slf4j; import org.laidu.learn.spring.mvc.service.HelloService; import org.springframework.stereotype.Service; -import xyz.xpcoder.commons.common.monitor.annoation.MethodMonitor; /** * hello service @@ -19,7 +18,6 @@ public class HelloServiceImpl implements HelloService { @Override - @MethodMonitor public String sayHello() { return "hello"; } diff --git a/framework/spring/swagger/mvnw b/framework/spring/swagger/mvnw index 5bf251c07..d29a6580d 100755 --- a/framework/spring/swagger/mvnw +++ b/framework/spring/swagger/mvnw @@ -114,7 +114,6 @@ if $mingw ; then M2_HOME="`(cd "$M2_HOME"; pwd)`" [ -n "$JAVA_HOME" ] && JAVA_HOME="`(cd "$JAVA_HOME"; pwd)`" - # TODO classpath? fi if [ -z "$JAVA_HOME" ]; then diff --git a/pom.xml b/pom.xml index dbaf0e3b1..e88c7abbd 100644 --- a/pom.xml +++ b/pom.xml @@ -248,30 +248,6 @@ - - - - - - - - - - - - - - - - - - - - - - - - @@ -306,27 +282,31 @@ - - - - - - - - - - - - - - - - - - - - - + + com.jcabi + jcabi-maven-plugin + 0.14.1 + + + + ajc + + + + + + org.aspectj + aspectjtools + 1.9.1 + + + org.aspectj + aspectjweaver + 1.9.1 + + + + com.github.github @@ -335,11 +315,10 @@ Creating site for ${project.artifactId}, ${project.version} - ${project.distributionManagement.site.url} refs/heads/master true - + true true @@ -347,7 +326,7 @@ site - site + site-deploy diff --git a/production-component/common-util/src/site/mardown/index.md b/production-component/common-util/src/site/mardown/index.md index 40bbd7240..1ea126772 100644 --- a/production-component/common-util/src/site/mardown/index.md +++ b/production-component/common-util/src/site/mardown/index.md @@ -1 +1,19 @@ # common-util 通用工具集 + +```bash + +. +├── annotation +├── encryption +├── enums +├── exception +├── file +├── http +├── json +├── regex +├── serialize +├── string +├── util +└── xml + +``` \ No newline at end of file From e8bec71440416650bd042484b35fd85ea0370eca Mon Sep 17 00:00:00 2001 From: "xpcoder823@gmail.com" Date: Mon, 30 Jul 2018 23:56:38 +0800 Subject: [PATCH 124/417] =?UTF-8?q?=E5=AE=8C=E6=88=90=20spring=20cloud=20c?= =?UTF-8?q?onfig=20demo?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../spring/spring-cloud/config-client/pom.xml | 27 +++++++++++++++++ .../cloud/config/client/ConfigClientApp.java | 26 ++++++++++++++++ .../client/controller/HelloController.java | 30 +++++++++++++++++++ .../src/main/resources/application.yml | 7 +++++ .../src/main/resources/bootstrap.yml | 8 +++++ .../spring/spring-cloud/config-server/pom.xml | 22 ++++++++++++++ .../cloud/config/server/ConfigServerApp.java | 28 +++++++++++++++++ .../src/main/resources/application.properties | 7 +++++ framework/spring/spring-cloud/pom.xml | 2 ++ 9 files changed, 157 insertions(+) create mode 100644 framework/spring/spring-cloud/config-client/pom.xml create mode 100644 framework/spring/spring-cloud/config-client/src/main/java/org/laidu/learn/spring/cloud/config/client/ConfigClientApp.java create mode 100644 framework/spring/spring-cloud/config-client/src/main/java/org/laidu/learn/spring/cloud/config/client/controller/HelloController.java create mode 100644 framework/spring/spring-cloud/config-client/src/main/resources/application.yml create mode 100644 framework/spring/spring-cloud/config-client/src/main/resources/bootstrap.yml create mode 100644 framework/spring/spring-cloud/config-server/pom.xml create mode 100644 framework/spring/spring-cloud/config-server/src/main/java/org/laidu/learn/spring/cloud/config/server/ConfigServerApp.java create mode 100644 framework/spring/spring-cloud/config-server/src/main/resources/application.properties diff --git a/framework/spring/spring-cloud/config-client/pom.xml b/framework/spring/spring-cloud/config-client/pom.xml new file mode 100644 index 000000000..21ae269bc --- /dev/null +++ b/framework/spring/spring-cloud/config-client/pom.xml @@ -0,0 +1,27 @@ + + + + spring-cloud + org.laidu.learn + 1.0-SNAPSHOT + + 4.0.0 + + config-client + + + + + + org.springframework.boot + spring-boot-starter-web-services + + + + org.springframework.cloud + spring-cloud-starter-config + + + \ No newline at end of file diff --git a/framework/spring/spring-cloud/config-client/src/main/java/org/laidu/learn/spring/cloud/config/client/ConfigClientApp.java b/framework/spring/spring-cloud/config-client/src/main/java/org/laidu/learn/spring/cloud/config/client/ConfigClientApp.java new file mode 100644 index 000000000..cad442dcb --- /dev/null +++ b/framework/spring/spring-cloud/config-client/src/main/java/org/laidu/learn/spring/cloud/config/client/ConfigClientApp.java @@ -0,0 +1,26 @@ +package org.laidu.learn.spring.cloud.config.client; + +import lombok.extern.slf4j.Slf4j; +import org.springframework.boot.Banner; +import org.springframework.boot.WebApplicationType; +import org.springframework.boot.autoconfigure.SpringBootApplication; +import org.springframework.boot.builder.SpringApplicationBuilder; + +/** + * 配置中心 客户端 + *

            + * Created by tiancai.zang + * on 2018-07-30 22:25. + */ +@Slf4j +@SpringBootApplication +public class ConfigClientApp { + + public static void main(String[] args) { + new SpringApplicationBuilder(ConfigClientApp.class) + .logStartupInfo(false) + .web(WebApplicationType.SERVLET) + .bannerMode(Banner.Mode.OFF) + .run(args); + } +} \ No newline at end of file diff --git a/framework/spring/spring-cloud/config-client/src/main/java/org/laidu/learn/spring/cloud/config/client/controller/HelloController.java b/framework/spring/spring-cloud/config-client/src/main/java/org/laidu/learn/spring/cloud/config/client/controller/HelloController.java new file mode 100644 index 000000000..1dd596432 --- /dev/null +++ b/framework/spring/spring-cloud/config-client/src/main/java/org/laidu/learn/spring/cloud/config/client/controller/HelloController.java @@ -0,0 +1,30 @@ +package org.laidu.learn.spring.cloud.config.client.controller; + +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.cloud.context.config.annotation.RefreshScope; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +/** + * hello + *

            + * Created by tiancai.zang + * on 2018-07-30 22:30. + */ +@Slf4j +@RefreshScope +@RestController +@RequestMapping("/") +public class HelloController { + + @Value("${config.version:0.0.1}") + String version; + + @GetMapping("version") + public String getVersion(){ + return version; + } + +} \ No newline at end of file diff --git a/framework/spring/spring-cloud/config-client/src/main/resources/application.yml b/framework/spring/spring-cloud/config-client/src/main/resources/application.yml new file mode 100644 index 000000000..f7af1d50b --- /dev/null +++ b/framework/spring/spring-cloud/config-client/src/main/resources/application.yml @@ -0,0 +1,7 @@ +server: + port: 7002 +management: + endpoints: + web: + exposure: + include: '*' \ No newline at end of file diff --git a/framework/spring/spring-cloud/config-client/src/main/resources/bootstrap.yml b/framework/spring/spring-cloud/config-client/src/main/resources/bootstrap.yml new file mode 100644 index 000000000..f54857635 --- /dev/null +++ b/framework/spring/spring-cloud/config-client/src/main/resources/bootstrap.yml @@ -0,0 +1,8 @@ +spring: + application: + name: app + cloud: + config: + uri: http://local-dev:7001/ + profile: dev + label: master diff --git a/framework/spring/spring-cloud/config-server/pom.xml b/framework/spring/spring-cloud/config-server/pom.xml new file mode 100644 index 000000000..0239253d6 --- /dev/null +++ b/framework/spring/spring-cloud/config-server/pom.xml @@ -0,0 +1,22 @@ + + + + spring-cloud + org.laidu.learn + 1.0-SNAPSHOT + + 4.0.0 + + config-server + + + + org.springframework.cloud + spring-cloud-config-server + + + + + \ No newline at end of file diff --git a/framework/spring/spring-cloud/config-server/src/main/java/org/laidu/learn/spring/cloud/config/server/ConfigServerApp.java b/framework/spring/spring-cloud/config-server/src/main/java/org/laidu/learn/spring/cloud/config/server/ConfigServerApp.java new file mode 100644 index 000000000..620919cc7 --- /dev/null +++ b/framework/spring/spring-cloud/config-server/src/main/java/org/laidu/learn/spring/cloud/config/server/ConfigServerApp.java @@ -0,0 +1,28 @@ +package org.laidu.learn.spring.cloud.config.server; + +import lombok.extern.slf4j.Slf4j; +import org.springframework.boot.Banner; +import org.springframework.boot.autoconfigure.SpringBootApplication; +import org.springframework.boot.builder.SpringApplicationBuilder; +import org.springframework.cloud.config.server.EnableConfigServer; + +/** + * 配置服务 + *

            + * Created by tiancai.zang + * on 2018-07-30 21:30. + */ +@Slf4j +@EnableConfigServer +@SpringBootApplication +public class ConfigServerApp { + + + public static void main(String[] args) { + + new SpringApplicationBuilder(ConfigServerApp.class) + .logStartupInfo(false) + .bannerMode(Banner.Mode.OFF) + .run(args); + } +} \ No newline at end of file diff --git a/framework/spring/spring-cloud/config-server/src/main/resources/application.properties b/framework/spring/spring-cloud/config-server/src/main/resources/application.properties new file mode 100644 index 000000000..f14c4bd0d --- /dev/null +++ b/framework/spring/spring-cloud/config-server/src/main/resources/application.properties @@ -0,0 +1,7 @@ +spring.application.name=config-server +server.port=7001 + + + +spring.cloud.config.server.git.uri=https://github.com/laidu/cloud-conf-demo.git +spring.cloud.config.server.git.search-paths=/app \ No newline at end of file diff --git a/framework/spring/spring-cloud/pom.xml b/framework/spring/spring-cloud/pom.xml index 3363aea00..dd4d272bc 100644 --- a/framework/spring/spring-cloud/pom.xml +++ b/framework/spring/spring-cloud/pom.xml @@ -17,6 +17,8 @@ eureka-server service-hello hystrix-dashboard + config-server + config-client From f7980ccaea941bcbaf2dbf4ed5bcfe40f7899c84 Mon Sep 17 00:00:00 2001 From: "xpcoder823@gmail.com" Date: Mon, 30 Jul 2018 23:56:38 +0800 Subject: [PATCH 125/417] =?UTF-8?q?=E5=AE=8C=E6=88=90=20spring=20cloud=20c?= =?UTF-8?q?onfig=20demo?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../spring/spring-cloud/config-client/pom.xml | 27 +++++++++++++++++ .../cloud/config/client/ConfigClientApp.java | 26 ++++++++++++++++ .../client/controller/HelloController.java | 30 +++++++++++++++++++ .../src/main/resources/application.yml | 7 +++++ .../src/main/resources/bootstrap.yml | 8 +++++ .../spring/spring-cloud/config-server/pom.xml | 22 ++++++++++++++ .../cloud/config/server/ConfigServerApp.java | 28 +++++++++++++++++ .../src/main/resources/application.properties | 7 +++++ framework/spring/spring-cloud/pom.xml | 2 ++ 9 files changed, 157 insertions(+) create mode 100644 framework/spring/spring-cloud/config-client/pom.xml create mode 100644 framework/spring/spring-cloud/config-client/src/main/java/org/laidu/learn/spring/cloud/config/client/ConfigClientApp.java create mode 100644 framework/spring/spring-cloud/config-client/src/main/java/org/laidu/learn/spring/cloud/config/client/controller/HelloController.java create mode 100644 framework/spring/spring-cloud/config-client/src/main/resources/application.yml create mode 100644 framework/spring/spring-cloud/config-client/src/main/resources/bootstrap.yml create mode 100644 framework/spring/spring-cloud/config-server/pom.xml create mode 100644 framework/spring/spring-cloud/config-server/src/main/java/org/laidu/learn/spring/cloud/config/server/ConfigServerApp.java create mode 100644 framework/spring/spring-cloud/config-server/src/main/resources/application.properties diff --git a/framework/spring/spring-cloud/config-client/pom.xml b/framework/spring/spring-cloud/config-client/pom.xml new file mode 100644 index 000000000..21ae269bc --- /dev/null +++ b/framework/spring/spring-cloud/config-client/pom.xml @@ -0,0 +1,27 @@ + + + + spring-cloud + org.laidu.learn + 1.0-SNAPSHOT + + 4.0.0 + + config-client + + + + + + org.springframework.boot + spring-boot-starter-web-services + + + + org.springframework.cloud + spring-cloud-starter-config + + + \ No newline at end of file diff --git a/framework/spring/spring-cloud/config-client/src/main/java/org/laidu/learn/spring/cloud/config/client/ConfigClientApp.java b/framework/spring/spring-cloud/config-client/src/main/java/org/laidu/learn/spring/cloud/config/client/ConfigClientApp.java new file mode 100644 index 000000000..cad442dcb --- /dev/null +++ b/framework/spring/spring-cloud/config-client/src/main/java/org/laidu/learn/spring/cloud/config/client/ConfigClientApp.java @@ -0,0 +1,26 @@ +package org.laidu.learn.spring.cloud.config.client; + +import lombok.extern.slf4j.Slf4j; +import org.springframework.boot.Banner; +import org.springframework.boot.WebApplicationType; +import org.springframework.boot.autoconfigure.SpringBootApplication; +import org.springframework.boot.builder.SpringApplicationBuilder; + +/** + * 配置中心 客户端 + *

            + * Created by tiancai.zang + * on 2018-07-30 22:25. + */ +@Slf4j +@SpringBootApplication +public class ConfigClientApp { + + public static void main(String[] args) { + new SpringApplicationBuilder(ConfigClientApp.class) + .logStartupInfo(false) + .web(WebApplicationType.SERVLET) + .bannerMode(Banner.Mode.OFF) + .run(args); + } +} \ No newline at end of file diff --git a/framework/spring/spring-cloud/config-client/src/main/java/org/laidu/learn/spring/cloud/config/client/controller/HelloController.java b/framework/spring/spring-cloud/config-client/src/main/java/org/laidu/learn/spring/cloud/config/client/controller/HelloController.java new file mode 100644 index 000000000..1dd596432 --- /dev/null +++ b/framework/spring/spring-cloud/config-client/src/main/java/org/laidu/learn/spring/cloud/config/client/controller/HelloController.java @@ -0,0 +1,30 @@ +package org.laidu.learn.spring.cloud.config.client.controller; + +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.cloud.context.config.annotation.RefreshScope; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +/** + * hello + *

            + * Created by tiancai.zang + * on 2018-07-30 22:30. + */ +@Slf4j +@RefreshScope +@RestController +@RequestMapping("/") +public class HelloController { + + @Value("${config.version:0.0.1}") + String version; + + @GetMapping("version") + public String getVersion(){ + return version; + } + +} \ No newline at end of file diff --git a/framework/spring/spring-cloud/config-client/src/main/resources/application.yml b/framework/spring/spring-cloud/config-client/src/main/resources/application.yml new file mode 100644 index 000000000..f7af1d50b --- /dev/null +++ b/framework/spring/spring-cloud/config-client/src/main/resources/application.yml @@ -0,0 +1,7 @@ +server: + port: 7002 +management: + endpoints: + web: + exposure: + include: '*' \ No newline at end of file diff --git a/framework/spring/spring-cloud/config-client/src/main/resources/bootstrap.yml b/framework/spring/spring-cloud/config-client/src/main/resources/bootstrap.yml new file mode 100644 index 000000000..f54857635 --- /dev/null +++ b/framework/spring/spring-cloud/config-client/src/main/resources/bootstrap.yml @@ -0,0 +1,8 @@ +spring: + application: + name: app + cloud: + config: + uri: http://local-dev:7001/ + profile: dev + label: master diff --git a/framework/spring/spring-cloud/config-server/pom.xml b/framework/spring/spring-cloud/config-server/pom.xml new file mode 100644 index 000000000..0239253d6 --- /dev/null +++ b/framework/spring/spring-cloud/config-server/pom.xml @@ -0,0 +1,22 @@ + + + + spring-cloud + org.laidu.learn + 1.0-SNAPSHOT + + 4.0.0 + + config-server + + + + org.springframework.cloud + spring-cloud-config-server + + + + + \ No newline at end of file diff --git a/framework/spring/spring-cloud/config-server/src/main/java/org/laidu/learn/spring/cloud/config/server/ConfigServerApp.java b/framework/spring/spring-cloud/config-server/src/main/java/org/laidu/learn/spring/cloud/config/server/ConfigServerApp.java new file mode 100644 index 000000000..620919cc7 --- /dev/null +++ b/framework/spring/spring-cloud/config-server/src/main/java/org/laidu/learn/spring/cloud/config/server/ConfigServerApp.java @@ -0,0 +1,28 @@ +package org.laidu.learn.spring.cloud.config.server; + +import lombok.extern.slf4j.Slf4j; +import org.springframework.boot.Banner; +import org.springframework.boot.autoconfigure.SpringBootApplication; +import org.springframework.boot.builder.SpringApplicationBuilder; +import org.springframework.cloud.config.server.EnableConfigServer; + +/** + * 配置服务 + *

            + * Created by tiancai.zang + * on 2018-07-30 21:30. + */ +@Slf4j +@EnableConfigServer +@SpringBootApplication +public class ConfigServerApp { + + + public static void main(String[] args) { + + new SpringApplicationBuilder(ConfigServerApp.class) + .logStartupInfo(false) + .bannerMode(Banner.Mode.OFF) + .run(args); + } +} \ No newline at end of file diff --git a/framework/spring/spring-cloud/config-server/src/main/resources/application.properties b/framework/spring/spring-cloud/config-server/src/main/resources/application.properties new file mode 100644 index 000000000..f14c4bd0d --- /dev/null +++ b/framework/spring/spring-cloud/config-server/src/main/resources/application.properties @@ -0,0 +1,7 @@ +spring.application.name=config-server +server.port=7001 + + + +spring.cloud.config.server.git.uri=https://github.com/laidu/cloud-conf-demo.git +spring.cloud.config.server.git.search-paths=/app \ No newline at end of file diff --git a/framework/spring/spring-cloud/pom.xml b/framework/spring/spring-cloud/pom.xml index 3363aea00..dd4d272bc 100644 --- a/framework/spring/spring-cloud/pom.xml +++ b/framework/spring/spring-cloud/pom.xml @@ -17,6 +17,8 @@ eureka-server service-hello hystrix-dashboard + config-server + config-client From 145edffd97d0bc34f353dc3f07a55093e6498fd7 Mon Sep 17 00:00:00 2001 From: Tiancai ZANG Date: Tue, 31 Jul 2018 19:09:57 +0800 Subject: [PATCH 126/417] =?UTF-8?q?=E5=AE=8C=E6=88=90=E6=9C=AC=E5=9C=B0?= =?UTF-8?q?=E5=BC=80=E5=8F=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../language/feature/date/DateUsage.java | 2 +- .../laidu/commom/util/string/StringUtil.java | 19 +++++++++++++++++++ 2 files changed, 20 insertions(+), 1 deletion(-) create mode 100644 production-component/common-util/src/main/java/org/laidu/commom/util/string/StringUtil.java diff --git a/language-feature/src/main/java/org/laidu/learn/language/feature/date/DateUsage.java b/language-feature/src/main/java/org/laidu/learn/language/feature/date/DateUsage.java index dc9b1e63d..ed90b23e6 100644 --- a/language-feature/src/main/java/org/laidu/learn/language/feature/date/DateUsage.java +++ b/language-feature/src/main/java/org/laidu/learn/language/feature/date/DateUsage.java @@ -27,7 +27,7 @@ public static void main(String[] args) { log.info("-*--*--*--*- 日 : {}-*--*--*--*--",localDate.getDayOfMonth()); log.info("-*--*--*--*- 星期 : {}-*--*--*--*--",localDate.getDayOfWeek()); - // LocalTime usgae + // LocalTime usage LocalTime localTime = LocalTime.now(); diff --git a/production-component/common-util/src/main/java/org/laidu/commom/util/string/StringUtil.java b/production-component/common-util/src/main/java/org/laidu/commom/util/string/StringUtil.java new file mode 100644 index 000000000..2044aea4f --- /dev/null +++ b/production-component/common-util/src/main/java/org/laidu/commom/util/string/StringUtil.java @@ -0,0 +1,19 @@ +package org.laidu.commom.util.string; + +import lombok.extern.slf4j.Slf4j; + +/** + * String util + *

            + * Created by laidu + * on 2018-07-31 17:53. + * + * @author laidu + */ +// TODO: 2018-07-31 17:53 String util +@Slf4j +public class StringUtil extends jodd.util.StringUtil { + + + +} \ No newline at end of file From cb93af659727a7bd5af74a5b4aa34ee5e90d6dd6 Mon Sep 17 00:00:00 2001 From: "xpcoder823@gmail.com" Date: Tue, 31 Jul 2018 23:37:03 +0800 Subject: [PATCH 127/417] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E7=BD=91=E5=85=B3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../spring/spring-cloud/config-client/pom.xml | 5 ++++ .../cloud/config/client/ConfigClientApp.java | 2 ++ .../spring/spring-cloud/config-server/pom.xml | 6 +++++ .../cloud/config/server/ConfigServerApp.java | 2 ++ .../src/main/resources/application.properties | 2 +- framework/spring/spring-cloud/pom.xml | 2 +- .../spring/spring-cloud/service-api/pom.xml | 27 +++++++++++++++++++ .../cloud/service/api/ServiceApiApp.java | 27 +++++++++++++++++++ .../src/main/resources/application.yml | 5 ++++ 9 files changed, 76 insertions(+), 2 deletions(-) create mode 100644 framework/spring/spring-cloud/service-api/pom.xml create mode 100644 framework/spring/spring-cloud/service-api/src/main/java/org/laidu/learn/spring/cloud/service/api/ServiceApiApp.java create mode 100644 framework/spring/spring-cloud/service-api/src/main/resources/application.yml diff --git a/framework/spring/spring-cloud/config-client/pom.xml b/framework/spring/spring-cloud/config-client/pom.xml index 21ae269bc..1d276a6df 100644 --- a/framework/spring/spring-cloud/config-client/pom.xml +++ b/framework/spring/spring-cloud/config-client/pom.xml @@ -19,6 +19,11 @@ spring-boot-starter-web-services + + org.springframework.cloud + spring-cloud-starter-netflix-eureka-client + + org.springframework.cloud spring-cloud-starter-config diff --git a/framework/spring/spring-cloud/config-client/src/main/java/org/laidu/learn/spring/cloud/config/client/ConfigClientApp.java b/framework/spring/spring-cloud/config-client/src/main/java/org/laidu/learn/spring/cloud/config/client/ConfigClientApp.java index cad442dcb..a5b72cf7d 100644 --- a/framework/spring/spring-cloud/config-client/src/main/java/org/laidu/learn/spring/cloud/config/client/ConfigClientApp.java +++ b/framework/spring/spring-cloud/config-client/src/main/java/org/laidu/learn/spring/cloud/config/client/ConfigClientApp.java @@ -5,6 +5,7 @@ import org.springframework.boot.WebApplicationType; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.boot.builder.SpringApplicationBuilder; +import org.springframework.cloud.client.discovery.EnableDiscoveryClient; /** * 配置中心 客户端 @@ -13,6 +14,7 @@ * on 2018-07-30 22:25. */ @Slf4j +@EnableDiscoveryClient @SpringBootApplication public class ConfigClientApp { diff --git a/framework/spring/spring-cloud/config-server/pom.xml b/framework/spring/spring-cloud/config-server/pom.xml index 0239253d6..17c822925 100644 --- a/framework/spring/spring-cloud/config-server/pom.xml +++ b/framework/spring/spring-cloud/config-server/pom.xml @@ -16,6 +16,12 @@ org.springframework.cloud spring-cloud-config-server + + + org.springframework.cloud + spring-cloud-starter-netflix-eureka-client + + diff --git a/framework/spring/spring-cloud/config-server/src/main/java/org/laidu/learn/spring/cloud/config/server/ConfigServerApp.java b/framework/spring/spring-cloud/config-server/src/main/java/org/laidu/learn/spring/cloud/config/server/ConfigServerApp.java index 620919cc7..01c5a6117 100644 --- a/framework/spring/spring-cloud/config-server/src/main/java/org/laidu/learn/spring/cloud/config/server/ConfigServerApp.java +++ b/framework/spring/spring-cloud/config-server/src/main/java/org/laidu/learn/spring/cloud/config/server/ConfigServerApp.java @@ -4,6 +4,7 @@ import org.springframework.boot.Banner; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.boot.builder.SpringApplicationBuilder; +import org.springframework.cloud.client.discovery.EnableDiscoveryClient; import org.springframework.cloud.config.server.EnableConfigServer; /** @@ -14,6 +15,7 @@ */ @Slf4j @EnableConfigServer +@EnableDiscoveryClient @SpringBootApplication public class ConfigServerApp { diff --git a/framework/spring/spring-cloud/config-server/src/main/resources/application.properties b/framework/spring/spring-cloud/config-server/src/main/resources/application.properties index f14c4bd0d..e52d75f92 100644 --- a/framework/spring/spring-cloud/config-server/src/main/resources/application.properties +++ b/framework/spring/spring-cloud/config-server/src/main/resources/application.properties @@ -1,7 +1,7 @@ spring.application.name=config-server server.port=7001 - +eureka.client.service-url.defaultZone=http://local-dev:1111/eureka/ spring.cloud.config.server.git.uri=https://github.com/laidu/cloud-conf-demo.git spring.cloud.config.server.git.search-paths=/app \ No newline at end of file diff --git a/framework/spring/spring-cloud/pom.xml b/framework/spring/spring-cloud/pom.xml index dd4d272bc..f1233a805 100644 --- a/framework/spring/spring-cloud/pom.xml +++ b/framework/spring/spring-cloud/pom.xml @@ -19,13 +19,13 @@ hystrix-dashboard config-server config-client + service-api UTF-8 UTF-8 1.8 - springio diff --git a/framework/spring/spring-cloud/service-api/pom.xml b/framework/spring/spring-cloud/service-api/pom.xml new file mode 100644 index 000000000..19af12f88 --- /dev/null +++ b/framework/spring/spring-cloud/service-api/pom.xml @@ -0,0 +1,27 @@ + + + + spring-cloud + org.laidu.learn + 1.0-SNAPSHOT + + 4.0.0 + + service-api + + + + org.springframework.cloud + spring-cloud-starter-zuul + 1.4.3.RELEASE + + + + org.springframework.cloud + spring-cloud-starter-eureka + + + + \ No newline at end of file diff --git a/framework/spring/spring-cloud/service-api/src/main/java/org/laidu/learn/spring/cloud/service/api/ServiceApiApp.java b/framework/spring/spring-cloud/service-api/src/main/java/org/laidu/learn/spring/cloud/service/api/ServiceApiApp.java new file mode 100644 index 000000000..6507de457 --- /dev/null +++ b/framework/spring/spring-cloud/service-api/src/main/java/org/laidu/learn/spring/cloud/service/api/ServiceApiApp.java @@ -0,0 +1,27 @@ +package org.laidu.learn.spring.cloud.service.api; + +import lombok.extern.slf4j.Slf4j; +import org.springframework.boot.Banner; +import org.springframework.boot.autoconfigure.SpringBootApplication; +import org.springframework.boot.builder.SpringApplicationBuilder; +import org.springframework.cloud.netflix.zuul.EnableZuulProxy; + +/** + * 服务网关 + *

            + * Created by tiancai.zang + * on 2018-07-31 22:35. + */ +@Slf4j +@EnableZuulProxy +@SpringBootApplication +public class ServiceApiApp { + + public static void main(String[] args) { + + new SpringApplicationBuilder(ServiceApiApp.class) + .bannerMode(Banner.Mode.OFF) + .logStartupInfo(false) + .run(args); + } +} \ No newline at end of file diff --git a/framework/spring/spring-cloud/service-api/src/main/resources/application.yml b/framework/spring/spring-cloud/service-api/src/main/resources/application.yml new file mode 100644 index 000000000..9c56bece8 --- /dev/null +++ b/framework/spring/spring-cloud/service-api/src/main/resources/application.yml @@ -0,0 +1,5 @@ +server: + port: 5555 +spring: + application: + name: service-api From d4d65c682e0497167840750e664c918c6413451b Mon Sep 17 00:00:00 2001 From: Tiancai ZANG Date: Wed, 1 Aug 2018 11:08:51 +0800 Subject: [PATCH 128/417] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=20gui=E5=92=8Crxjava?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- framework/common/pom.xml | 9 ++ framework/common/rxjava/pom.xml | 22 ++++ .../commons/rxjava/package-info.java | 9 ++ .../common/rxjava/src/site/markdown/index.md | 1 + language-advance/gui/pom.xml | 15 +++ .../language/advance/gui/package-info.java | 10 ++ .../language/advance/gui/swing/Demo.java | 103 ++++++++++++++++++ language-advance/pom.xml | 1 + 8 files changed, 170 insertions(+) create mode 100644 framework/common/rxjava/pom.xml create mode 100644 framework/common/rxjava/src/main/java/org/laidu/learn/framework/commons/rxjava/package-info.java create mode 100644 framework/common/rxjava/src/site/markdown/index.md create mode 100644 language-advance/gui/pom.xml create mode 100644 language-advance/gui/src/main/java/org/laidu/learn/language/advance/gui/package-info.java create mode 100644 language-advance/gui/src/main/java/org/laidu/learn/language/advance/gui/swing/Demo.java diff --git a/framework/common/pom.xml b/framework/common/pom.xml index 4b977b498..32b8b62b9 100644 --- a/framework/common/pom.xml +++ b/framework/common/pom.xml @@ -19,6 +19,7 @@ commons-net apache-poi shiro + rxjava @@ -26,6 +27,7 @@ 1.1 3.17 1.3.2 + 2.1.17 @@ -60,6 +62,13 @@ ${apache-poi.version} + + io.reactivex.rxjava2 + rxjava + ${rxjava.version} + + + diff --git a/framework/common/rxjava/pom.xml b/framework/common/rxjava/pom.xml new file mode 100644 index 000000000..2325a35b8 --- /dev/null +++ b/framework/common/rxjava/pom.xml @@ -0,0 +1,22 @@ + + + + common + org.laidu.learn + 1.0-SNAPSHOT + + 4.0.0 + + rxjava + + + + io.reactivex.rxjava2 + rxjava + + + + + \ No newline at end of file diff --git a/framework/common/rxjava/src/main/java/org/laidu/learn/framework/commons/rxjava/package-info.java b/framework/common/rxjava/src/main/java/org/laidu/learn/framework/commons/rxjava/package-info.java new file mode 100644 index 000000000..0ee8d7130 --- /dev/null +++ b/framework/common/rxjava/src/main/java/org/laidu/learn/framework/commons/rxjava/package-info.java @@ -0,0 +1,9 @@ +/** + * rxjava 学习 + *

            + * Created by laidu + * on 2018-08-01 11:07. + * + * @author laidu + */ +package org.laidu.learn.framework.commons.rxjava; \ No newline at end of file diff --git a/framework/common/rxjava/src/site/markdown/index.md b/framework/common/rxjava/src/site/markdown/index.md new file mode 100644 index 000000000..d6cabef1a --- /dev/null +++ b/framework/common/rxjava/src/site/markdown/index.md @@ -0,0 +1 @@ +# Rxjava 学习 \ No newline at end of file diff --git a/language-advance/gui/pom.xml b/language-advance/gui/pom.xml new file mode 100644 index 000000000..c30e723ec --- /dev/null +++ b/language-advance/gui/pom.xml @@ -0,0 +1,15 @@ + + + + language-advance + org.laidu.learn + 1.0-SNAPSHOT + + 4.0.0 + + gui + + + \ No newline at end of file diff --git a/language-advance/gui/src/main/java/org/laidu/learn/language/advance/gui/package-info.java b/language-advance/gui/src/main/java/org/laidu/learn/language/advance/gui/package-info.java new file mode 100644 index 000000000..490f88cdf --- /dev/null +++ b/language-advance/gui/src/main/java/org/laidu/learn/language/advance/gui/package-info.java @@ -0,0 +1,10 @@ +/** + * java gui 编程 + *

            + * Created by laidu + * on 2018-08-01 10:32. + * + * @author laidu + */ +// TODO: 2018-08-01 10:32 java gui 编程 +package org.laidu.learn.language.advance.gui; \ No newline at end of file diff --git a/language-advance/gui/src/main/java/org/laidu/learn/language/advance/gui/swing/Demo.java b/language-advance/gui/src/main/java/org/laidu/learn/language/advance/gui/swing/Demo.java new file mode 100644 index 000000000..fbdcd8057 --- /dev/null +++ b/language-advance/gui/src/main/java/org/laidu/learn/language/advance/gui/swing/Demo.java @@ -0,0 +1,103 @@ +package org.laidu.learn.language.advance.gui.swing; + +import lombok.extern.slf4j.Slf4j; + +import javax.swing.*; + +/** + * demo + *

            + * Created by laidu + * on 2018-08-01 10:33. + * + * @author laidu + */ +@Slf4j +public class Demo { + + + private static void placeComponents(JPanel panel) { + + /* 布局部分我们这边不多做介绍 + * 这边设置布局为 null + */ + panel.setLayout(null); + + // 创建 JLabel + JLabel userLabel = new JLabel("User:"); + /* 这个方法定义了组件的位置。 + * setBounds(x, y, width, height) + * x 和 y 指定左上角的新位置,由 width 和 height 指定新的大小。 + */ + userLabel.setBounds(10,20,80,25); + panel.add(userLabel); + + /* + * 创建文本域用于用户输入 + */ + JTextField userText = new JTextField(20); + userText.setBounds(100,20,165,25); + panel.add(userText); + + // 输入密码的文本域 + JLabel passwordLabel = new JLabel("Password:"); + passwordLabel.setBounds(10,50,80,25); + panel.add(passwordLabel); + + /* + *这个类似用于输入的文本域 + * 但是输入的信息会以点号代替,用于包含密码的安全性 + */ + JPasswordField passwordText = new JPasswordField(20); + passwordText.setBounds(100,50,165,25); + panel.add(passwordText); + + // 创建登录按钮 + JButton loginButton = new JButton("login"); + loginButton.setBounds(10, 80, 80, 25); + panel.add(loginButton); + } + + /** + * 创建并显示GUI。出于线程安全的考虑, + * 这个方法在事件调用线程中调用。 + */ + private static void createAndShowGUI() { + // 确保一个漂亮的外观风格 + JFrame.setDefaultLookAndFeelDecorated(true); + + // 创建及设置窗口 + JFrame frame = new JFrame("HelloWorldSwing"); + frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); + + // 添加 "Hello World" 标签 + JLabel label = new JLabel("Hello World"); + frame.getContentPane().add(label); + + // 显示窗口 + frame.pack(); + frame.setVisible(true); + } + + public static void main(String[] args) { + // 显示应用 GUI +// SwingUtilities.invokeLater(Demo::createAndShowGUI); + + // 创建 JFrame 实例 + JFrame frame = new JFrame("Login Example"); + // Setting the width and height of frame + frame.setSize(350, 200); + frame.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE); + + JPanel panel = new JPanel(); + // 添加面板 + frame.add(panel); + /* + * 调用用户定义的方法并添加组件到面板 + */ + placeComponents(panel); + + // 设置界面可见 + frame.setVisible(true); + } +} \ No newline at end of file diff --git a/language-advance/pom.xml b/language-advance/pom.xml index acd430c53..8ce1777a8 100644 --- a/language-advance/pom.xml +++ b/language-advance/pom.xml @@ -19,6 +19,7 @@ io script xml + gui From 0a4ab59010af1db13c4a087dbb588d017787e5de Mon Sep 17 00:00:00 2001 From: Tiancai ZANG Date: Wed, 1 Aug 2018 19:18:04 +0800 Subject: [PATCH 129/417] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=20gui=E5=92=8Crxjava?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../framework/common/rxjava/hello/Demo.java | 26 +++++++++++++++++++ .../rxjava/package-info.java | 2 +- .../common/rxjava/src/site/markdown/index.md | 23 +++++++++++++++- .../spring/mvc/controller/HomeController.java | 2 -- .../learn/spring/mvc/filter/CommonFilter.java | 1 - .../swagger/demo/config/SwaggerConfig.java | 4 ++- .../learn/swagger/demo/config/WebConfig.java | 19 -------------- .../demo/controller/HomeController.java | 2 ++ .../swagger/demo/model/package-info.java | 10 +++++++ .../learn/swagger/demo/package-info.java | 9 +++++++ 10 files changed, 73 insertions(+), 25 deletions(-) create mode 100644 framework/common/rxjava/src/main/java/org/laidu/learn/framework/common/rxjava/hello/Demo.java rename framework/common/rxjava/src/main/java/org/laidu/learn/framework/{commons => common}/rxjava/package-info.java (66%) delete mode 100644 framework/spring/swagger/src/main/java/org/laidu/learn/swagger/demo/config/WebConfig.java create mode 100644 framework/spring/swagger/src/main/java/org/laidu/learn/swagger/demo/model/package-info.java create mode 100644 framework/spring/swagger/src/main/java/org/laidu/learn/swagger/demo/package-info.java diff --git a/framework/common/rxjava/src/main/java/org/laidu/learn/framework/common/rxjava/hello/Demo.java b/framework/common/rxjava/src/main/java/org/laidu/learn/framework/common/rxjava/hello/Demo.java new file mode 100644 index 000000000..864b1587d --- /dev/null +++ b/framework/common/rxjava/src/main/java/org/laidu/learn/framework/common/rxjava/hello/Demo.java @@ -0,0 +1,26 @@ +package org.laidu.learn.framework.common.rxjava.hello; + +import io.reactivex.Flowable; +import lombok.extern.slf4j.Slf4j; + + +/** + * demo + *

            + * Created by laidu + * on 2018-08-01 11:56. + * + * @author laidu + */ +@Slf4j +public class Demo { + + + public static void main(String[] args) { + + Flowable.just("Hello world"). + subscribe(System.out::println) + .dispose(); + + } +} \ No newline at end of file diff --git a/framework/common/rxjava/src/main/java/org/laidu/learn/framework/commons/rxjava/package-info.java b/framework/common/rxjava/src/main/java/org/laidu/learn/framework/common/rxjava/package-info.java similarity index 66% rename from framework/common/rxjava/src/main/java/org/laidu/learn/framework/commons/rxjava/package-info.java rename to framework/common/rxjava/src/main/java/org/laidu/learn/framework/common/rxjava/package-info.java index 0ee8d7130..5ce478c3d 100644 --- a/framework/common/rxjava/src/main/java/org/laidu/learn/framework/commons/rxjava/package-info.java +++ b/framework/common/rxjava/src/main/java/org/laidu/learn/framework/common/rxjava/package-info.java @@ -6,4 +6,4 @@ * * @author laidu */ -package org.laidu.learn.framework.commons.rxjava; \ No newline at end of file +package org.laidu.learn.framework.common.rxjava; \ No newline at end of file diff --git a/framework/common/rxjava/src/site/markdown/index.md b/framework/common/rxjava/src/site/markdown/index.md index d6cabef1a..3d3cf5db2 100644 --- a/framework/common/rxjava/src/site/markdown/index.md +++ b/framework/common/rxjava/src/site/markdown/index.md @@ -1 +1,22 @@ -# Rxjava 学习 \ No newline at end of file +# Rxjava 学习 + +## 1、关于 ReactiveX + +### 1.1、观察者模式 + +## 2、Rxjava + +## 3、 + +## 4、 + + +参考文档: +* [reactivex 官网](http://reactivex.io/) +* [Getting started](https://github.com/ReactiveX/RxJava) +* [Rxjava 2.x java doc](http://reactivex.io/RxJava/2.x/javadoc/) +* [这可能是最好的RxJava 2.x 教程(完结版)](https://www.jianshu.com/p/0cd258eecf60) +* []() +* []() +* []() +* []() \ No newline at end of file diff --git a/framework/spring/spring-web/spring-mvc/src/main/java/org/laidu/learn/spring/mvc/controller/HomeController.java b/framework/spring/spring-web/spring-mvc/src/main/java/org/laidu/learn/spring/mvc/controller/HomeController.java index 6ffd60fa7..e0b0be597 100644 --- a/framework/spring/spring-web/spring-mvc/src/main/java/org/laidu/learn/spring/mvc/controller/HomeController.java +++ b/framework/spring/spring-web/spring-mvc/src/main/java/org/laidu/learn/spring/mvc/controller/HomeController.java @@ -29,8 +29,6 @@ public class HomeController { @GetMapping("/hello") public String hello() throws InterruptedException { -// Thread.sleep(500); -// log.info("url : {}", request.getRequestURI()); log.info("active Thread count: {}", Thread.activeCount()); return helloService.sayHello(); } diff --git a/framework/spring/spring-web/spring-mvc/src/main/java/org/laidu/learn/spring/mvc/filter/CommonFilter.java b/framework/spring/spring-web/spring-mvc/src/main/java/org/laidu/learn/spring/mvc/filter/CommonFilter.java index 554baf32f..c7b4e83f0 100644 --- a/framework/spring/spring-web/spring-mvc/src/main/java/org/laidu/learn/spring/mvc/filter/CommonFilter.java +++ b/framework/spring/spring-web/spring-mvc/src/main/java/org/laidu/learn/spring/mvc/filter/CommonFilter.java @@ -5,7 +5,6 @@ import org.laidu.learn.spring.mvc.properties.MvcProperties; import org.slf4j.MDC; import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Component; import org.springframework.web.servlet.HandlerInterceptor; import javax.servlet.http.HttpServletRequest; diff --git a/framework/spring/swagger/src/main/java/org/laidu/learn/swagger/demo/config/SwaggerConfig.java b/framework/spring/swagger/src/main/java/org/laidu/learn/swagger/demo/config/SwaggerConfig.java index ed60bda33..85b8783b1 100644 --- a/framework/spring/swagger/src/main/java/org/laidu/learn/swagger/demo/config/SwaggerConfig.java +++ b/framework/spring/swagger/src/main/java/org/laidu/learn/swagger/demo/config/SwaggerConfig.java @@ -13,7 +13,9 @@ /** * SwaggerConfig *

            - * Created by tiancai.zang on 2017-12-10 21:55. + * + * @author tiancai.zang + * @date 2017-12-10 21:55 */ @Configuration @EnableSwagger2 diff --git a/framework/spring/swagger/src/main/java/org/laidu/learn/swagger/demo/config/WebConfig.java b/framework/spring/swagger/src/main/java/org/laidu/learn/swagger/demo/config/WebConfig.java deleted file mode 100644 index 03b4fe839..000000000 --- a/framework/spring/swagger/src/main/java/org/laidu/learn/swagger/demo/config/WebConfig.java +++ /dev/null @@ -1,19 +0,0 @@ -package org.laidu.learn.swagger.demo.config; - -import lombok.extern.slf4j.Slf4j; -import springfox.documentation.spring.web.SpringfoxWebMvcConfiguration; - -/** - * web config - *

            - * Created by laidu - * on 2018-06-28 09:45. - * - * @author laidu - */ -// TODO: 2018-06-28 09:45 web config -@Slf4j -public class WebConfig extends SpringfoxWebMvcConfiguration { - - -} \ No newline at end of file diff --git a/framework/spring/swagger/src/main/java/org/laidu/learn/swagger/demo/controller/HomeController.java b/framework/spring/swagger/src/main/java/org/laidu/learn/swagger/demo/controller/HomeController.java index fffc53660..cc087f05e 100644 --- a/framework/spring/swagger/src/main/java/org/laidu/learn/swagger/demo/controller/HomeController.java +++ b/framework/spring/swagger/src/main/java/org/laidu/learn/swagger/demo/controller/HomeController.java @@ -2,6 +2,7 @@ import io.swagger.annotations.ApiOperation; import io.swagger.annotations.ApiParam; +import io.swagger.annotations.ApiResponse; import lombok.extern.slf4j.Slf4j; import org.laidu.learn.swagger.demo.model.Product; import org.springframework.web.bind.annotation.*; @@ -24,6 +25,7 @@ public String home(){ @GetMapping("/query/{id}") @ApiOperation("query product by id") @ApiParam(value = "id") + @ApiResponse(code = 100, message = "123321" , response = Product.class) public Product query(@PathVariable String id){ return Product.builder() .id(id) diff --git a/framework/spring/swagger/src/main/java/org/laidu/learn/swagger/demo/model/package-info.java b/framework/spring/swagger/src/main/java/org/laidu/learn/swagger/demo/model/package-info.java new file mode 100644 index 000000000..62de7d55b --- /dev/null +++ b/framework/spring/swagger/src/main/java/org/laidu/learn/swagger/demo/model/package-info.java @@ -0,0 +1,10 @@ +/** + * model + *

            + * Created by laidu + * on 2018-08-01 18:01. + * + * @author laidu + */ +// TODO: 2018-08-01 18:01 model +package org.laidu.learn.swagger.demo.model; \ No newline at end of file diff --git a/framework/spring/swagger/src/main/java/org/laidu/learn/swagger/demo/package-info.java b/framework/spring/swagger/src/main/java/org/laidu/learn/swagger/demo/package-info.java new file mode 100644 index 000000000..720baea66 --- /dev/null +++ b/framework/spring/swagger/src/main/java/org/laidu/learn/swagger/demo/package-info.java @@ -0,0 +1,9 @@ +/** + * swagger + *

            + * Created by laidu + * on 2018-08-01 18:06. + * + * @author laidu + */ +package org.laidu.learn.swagger.demo; \ No newline at end of file From 04c683a31044e8beeb1177b6b6ab64911512ef6f Mon Sep 17 00:00:00 2001 From: Tiancai ZANG Date: Thu, 2 Aug 2018 17:47:07 +0800 Subject: [PATCH 130/417] =?UTF-8?q?=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../framework/common/rxjava/hello/Demo.java | 60 +++++++++++++++++-- .../common/rxjava/src/site/markdown/index.md | 22 +++++-- .../laidu/learn/compress/pic/zip/Demo.java | 11 ++-- .../swagger/demo/SwaggerApplication.java | 3 + 4 files changed, 79 insertions(+), 17 deletions(-) diff --git a/framework/common/rxjava/src/main/java/org/laidu/learn/framework/common/rxjava/hello/Demo.java b/framework/common/rxjava/src/main/java/org/laidu/learn/framework/common/rxjava/hello/Demo.java index 864b1587d..261541a1b 100644 --- a/framework/common/rxjava/src/main/java/org/laidu/learn/framework/common/rxjava/hello/Demo.java +++ b/framework/common/rxjava/src/main/java/org/laidu/learn/framework/common/rxjava/hello/Demo.java @@ -1,8 +1,18 @@ + package org.laidu.learn.framework.common.rxjava.hello; -import io.reactivex.Flowable; +import io.reactivex.Observable; +import io.reactivex.disposables.Disposable; +import io.reactivex.functions.Consumer; +import io.reactivex.schedulers.Schedulers; +import jodd.datetime.JStopWatch; +import jodd.io.FileUtil; import lombok.extern.slf4j.Slf4j; +import java.io.File; +import java.util.List; +import java.util.concurrent.TimeUnit; + /** * demo @@ -16,11 +26,51 @@ public class Demo { - public static void main(String[] args) { + public static void main(String[] args) throws InterruptedException { + + JStopWatch stopWatch = new JStopWatch(); + stopWatch.start(); + + int bufferSize = 16*1024*10240; + StringBuffer stringBuffer = new StringBuffer(bufferSize); + + File file = new File(System.getProperty("user.dir")+"/logs/temp.txt"); + + + Consumer> handler = s -> { + stringBuffer.append(s + "\n"); + + if (stringBuffer.length() >= bufferSize) { + FileUtil.appendString(file,stringBuffer.toString()); + stringBuffer.setLength(0); + } + }; + + Consumer onError = Throwable::printStackTrace; + + + Disposable disposable = Observable.interval(5, TimeUnit.MICROSECONDS) + .subscribeOn(Schedulers.io()) + .buffer(1000) + .subscribe(handler,onError); + + + stopWatch.stop(); + + System.out.println(stopWatch.elapsed()); + + for (int i = 0; i < 600; i++) { + + Thread.sleep(1000); + disposable.dispose(); + if (disposable.isDisposed()) { + + return; + }else { + System.out.println("running..."); + } + } - Flowable.just("Hello world"). - subscribe(System.out::println) - .dispose(); } } \ No newline at end of file diff --git a/framework/common/rxjava/src/site/markdown/index.md b/framework/common/rxjava/src/site/markdown/index.md index 3d3cf5db2..8f38fdc6d 100644 --- a/framework/common/rxjava/src/site/markdown/index.md +++ b/framework/common/rxjava/src/site/markdown/index.md @@ -1,14 +1,24 @@ -# Rxjava 学习 +# Rxjava 2.x 学习 ## 1、关于 ReactiveX +> ReactiveX是一个库,用于通过使用可观察序列来编写异步和基于事件的程序。 + +> 官方说明:ReactiveX is more than an API, it's an idea and a breakthrough in programming. It has inspired several other APIs, frameworks, and even programming languages. ### 1.1、观察者模式 -## 2、Rxjava +### 1.2、ReactiveX 规范 + +### 1.3、Rxjava 主要用法 + -## 3、 +## 2、Rxjava 源码解析 +### 2.1、包结构说明 +### 2.2、 +### 2.1、 +### 2.1、 +### 2.1、 -## 4、 参考文档: @@ -16,7 +26,7 @@ * [Getting started](https://github.com/ReactiveX/RxJava) * [Rxjava 2.x java doc](http://reactivex.io/RxJava/2.x/javadoc/) * [这可能是最好的RxJava 2.x 教程(完结版)](https://www.jianshu.com/p/0cd258eecf60) -* []() -* []() +* [Rxjava2最全面的解析](https://juejin.im/post/5a43a842f265da432d2863ab) +* [ReactiveX · ReactiveX文档中文翻译 - mcxiaoke - GitBook](https://mcxiaoke.gitbooks.io/rxdocs/content/Intro.html) * []() * []() \ No newline at end of file diff --git a/framework/compress/thumbnailator-google/src/main/java/org/laidu/learn/compress/pic/zip/Demo.java b/framework/compress/thumbnailator-google/src/main/java/org/laidu/learn/compress/pic/zip/Demo.java index 352f474ff..e8f3f5be8 100644 --- a/framework/compress/thumbnailator-google/src/main/java/org/laidu/learn/compress/pic/zip/Demo.java +++ b/framework/compress/thumbnailator-google/src/main/java/org/laidu/learn/compress/pic/zip/Demo.java @@ -6,7 +6,9 @@ import java.awt.*; import java.awt.image.BufferedImage; -import java.io.*; +import java.io.File; +import java.io.FileOutputStream; +import java.io.IOException; /** * demo @@ -28,7 +30,8 @@ public BufferedImage apply(BufferedImage img) { int h = img.getHeight(); BufferedImage newImage = new BufferedImage(w, h, BufferedImage.TYPE_INT_RGB); Graphics2D graphic = newImage.createGraphics(); - graphic.setColor(Color.white);//背景设置为白色 + //背景设置为白色 + graphic.setColor(Color.white); graphic.fillRect(0, 0, w, h); graphic.drawRenderedImage(img, null); graphic.dispose(); @@ -42,13 +45,9 @@ public static void main(String[] args) throws IOException { File fromPic = new File("/Users/laidu/IdeaProjects/java-learn/framework/compress/thumbnailator-google/src/main/resources/test.png"); File toPic = new File("/Users/laidu/IdeaProjects/java-learn/framework/compress/thumbnailator-google/src/main/resources/test112.jpg"); -// File fromPic = new File("/Users/laidu/IdeaProjects/java-learn/framework/compress/thumbnailator-google/src/main/resources/test11.jpg"); - -// Thumbnails.of(fromPic).scale(1f).outputQuality(0.25f).toFile(toPic); Thumbnails.of(fromPic).addFilter(new ThumbnailsImgFilter()) .scale(1f) -// .size(200, 200) .outputFormat("jpg") .outputQuality(0.01f) .toFile(toPic); diff --git a/framework/spring/swagger/src/main/java/org/laidu/learn/swagger/demo/SwaggerApplication.java b/framework/spring/swagger/src/main/java/org/laidu/learn/swagger/demo/SwaggerApplication.java index 877e7891b..bf1dec3d0 100644 --- a/framework/spring/swagger/src/main/java/org/laidu/learn/swagger/demo/SwaggerApplication.java +++ b/framework/spring/swagger/src/main/java/org/laidu/learn/swagger/demo/SwaggerApplication.java @@ -3,6 +3,9 @@ import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; +/** + * @author laidu + */ @SpringBootApplication public class SwaggerApplication { public static void main(String[] args) { From 9d847f703037aa0e9da6589191df61969e7e12c1 Mon Sep 17 00:00:00 2001 From: Tiancai ZANG Date: Thu, 2 Aug 2018 20:22:23 +0800 Subject: [PATCH 131/417] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=20ObjectResult=20?= =?UTF-8?q?=E7=94=A8=E4=BA=8E=20swagger=20=E6=8E=A5=E5=8F=A3=E6=96=87?= =?UTF-8?q?=E6=A1=A3=E7=94=9F=E6=88=90?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- framework/spring/spring-cloud/pom.xml | 2 +- framework/spring/spring-web/pom.xml | 17 +++----- .../org/laidu/learn/spring/mvc/MvcApp.java | 2 + .../spring/mvc/controller/HomeController.java | 6 ++- .../laidu/learn/spring/mvc/model/Result.java | 39 +++++++++++++++++++ framework/spring/swagger/pom.xml | 14 +------ 6 files changed, 53 insertions(+), 27 deletions(-) create mode 100644 framework/spring/spring-web/spring-mvc/src/main/java/org/laidu/learn/spring/mvc/model/Result.java diff --git a/framework/spring/spring-cloud/pom.xml b/framework/spring/spring-cloud/pom.xml index f1233a805..249037815 100644 --- a/framework/spring/spring-cloud/pom.xml +++ b/framework/spring/spring-cloud/pom.xml @@ -33,7 +33,7 @@ org.springframework.boot spring-boot-dependencies - 2.0.1.RELEASE + ${spring-boot.version} pom import diff --git a/framework/spring/spring-web/pom.xml b/framework/spring/spring-web/pom.xml index 8419e3dbe..b4935bad7 100644 --- a/framework/spring/spring-web/pom.xml +++ b/framework/spring/spring-web/pom.xml @@ -23,20 +23,15 @@ springio - - - - org.springframework.boot - spring-boot-dependencies - 2.0.1.RELEASE - pom - import - - - + + org.laidu.learn.swagger + swagger + 0.0.1-SNAPSHOT + + org.springframework.boot spring-boot-starter diff --git a/framework/spring/spring-web/spring-mvc/src/main/java/org/laidu/learn/spring/mvc/MvcApp.java b/framework/spring/spring-web/spring-mvc/src/main/java/org/laidu/learn/spring/mvc/MvcApp.java index 11bf9b7ff..3f14cd320 100644 --- a/framework/spring/spring-web/spring-mvc/src/main/java/org/laidu/learn/spring/mvc/MvcApp.java +++ b/framework/spring/spring-web/spring-mvc/src/main/java/org/laidu/learn/spring/mvc/MvcApp.java @@ -4,6 +4,7 @@ import org.springframework.boot.Banner; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.boot.builder.SpringApplicationBuilder; +import springfox.documentation.swagger2.annotations.EnableSwagger2; /** * spring mvc app @@ -12,6 +13,7 @@ * on 2018-05-30 11:29. */ @Slf4j +@EnableSwagger2 @SpringBootApplication public class MvcApp { diff --git a/framework/spring/spring-web/spring-mvc/src/main/java/org/laidu/learn/spring/mvc/controller/HomeController.java b/framework/spring/spring-web/spring-mvc/src/main/java/org/laidu/learn/spring/mvc/controller/HomeController.java index e0b0be597..ba83a46f0 100644 --- a/framework/spring/spring-web/spring-mvc/src/main/java/org/laidu/learn/spring/mvc/controller/HomeController.java +++ b/framework/spring/spring-web/spring-mvc/src/main/java/org/laidu/learn/spring/mvc/controller/HomeController.java @@ -1,6 +1,7 @@ package org.laidu.learn.spring.mvc.controller; import lombok.extern.slf4j.Slf4j; +import org.laidu.learn.spring.mvc.model.Result; import org.laidu.learn.spring.mvc.service.HelloService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.GetMapping; @@ -27,10 +28,11 @@ public class HomeController { HelloService helloService; @GetMapping("/hello") - public String hello() throws InterruptedException { + public Result hello() throws InterruptedException { log.info("active Thread count: {}", Thread.activeCount()); - return helloService.sayHello(); + + return Result.ok(helloService.sayHello()); } @GetMapping("/sleep") diff --git a/framework/spring/spring-web/spring-mvc/src/main/java/org/laidu/learn/spring/mvc/model/Result.java b/framework/spring/spring-web/spring-mvc/src/main/java/org/laidu/learn/spring/mvc/model/Result.java new file mode 100644 index 000000000..bb6463554 --- /dev/null +++ b/framework/spring/spring-web/spring-mvc/src/main/java/org/laidu/learn/spring/mvc/model/Result.java @@ -0,0 +1,39 @@ +package org.laidu.learn.spring.mvc.model; + +import io.swagger.annotations.ApiModel; +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +/** + * 接口返回值封装 + *

            + * Created by laidu + * on 2018-08-02 17:48. + * + * @author laidu + */ + +@Data +@Builder +@AllArgsConstructor +@NoArgsConstructor +@ApiModel(description ="响应封装") +public class Result { + + private String code; + + private String message; + + private T data; + + public static Result ok(T data){ + + return Result.builder() + .code("E000000") + .message("success") + .data(data) + .build(); + } +} \ No newline at end of file diff --git a/framework/spring/swagger/pom.xml b/framework/spring/swagger/pom.xml index ae7d397c1..310a570fe 100644 --- a/framework/spring/swagger/pom.xml +++ b/framework/spring/swagger/pom.xml @@ -22,21 +22,9 @@ UTF-8 1.8 springio - 2.7.0 + 2.9.2 - - - - org.springframework.boot - spring-boot-dependencies - 2.0.1.RELEASE - pom - import - - - - From 6fbbdb99866dbfe9044f49e87c2ea48b3bc82ac5 Mon Sep 17 00:00:00 2001 From: "xpcoder823@gmail.com" Date: Thu, 2 Aug 2018 23:45:40 +0800 Subject: [PATCH 132/417] sync --- framework/spring/spring-web/pom.xml | 5 +++++ framework/spring/spring-web/spring-mvc/pom.xml | 6 ++++++ .../spring-mvc/src/main/resources/application.yml | 9 +++++---- 3 files changed, 16 insertions(+), 4 deletions(-) diff --git a/framework/spring/spring-web/pom.xml b/framework/spring/spring-web/pom.xml index b4935bad7..4dc811193 100644 --- a/framework/spring/spring-web/pom.xml +++ b/framework/spring/spring-web/pom.xml @@ -37,6 +37,11 @@ spring-boot-starter + + org.springframework.boot + spring-boot-starter-actuator + + org.springframework.boot spring-boot-devtools diff --git a/framework/spring/spring-web/spring-mvc/pom.xml b/framework/spring/spring-web/spring-mvc/pom.xml index 54126875a..400992e7c 100644 --- a/framework/spring/spring-web/spring-mvc/pom.xml +++ b/framework/spring/spring-web/spring-mvc/pom.xml @@ -13,6 +13,12 @@ + + org.laidu.learn.swagger + swagger + 0.0.1-SNAPSHOT + + org.springframework.boot spring-boot-configuration-processor diff --git a/framework/spring/spring-web/spring-mvc/src/main/resources/application.yml b/framework/spring/spring-web/spring-mvc/src/main/resources/application.yml index 84939c971..93b3a7196 100644 --- a/framework/spring/spring-web/spring-mvc/src/main/resources/application.yml +++ b/framework/spring/spring-web/spring-mvc/src/main/resources/application.yml @@ -23,7 +23,8 @@ monitor: log-path: logs/ log-type: monitor - - - - +management: + endpoints: + web: + exposure: + include: "*" \ No newline at end of file From 998e24e3a2929d9cd0447662ab6aa9441bc733cb Mon Sep 17 00:00:00 2001 From: "xpcoder823@gmail.com" Date: Fri, 3 Aug 2018 00:26:33 +0800 Subject: [PATCH 133/417] sync --- .../org/laidu/learn/design/pattern/proxy/ConcreteSubject.java | 2 ++ pom.xml | 3 --- 2 files changed, 2 insertions(+), 3 deletions(-) diff --git a/design-pattern/java-design-pattern-learn/src/main/java/org/laidu/learn/design/pattern/proxy/ConcreteSubject.java b/design-pattern/java-design-pattern-learn/src/main/java/org/laidu/learn/design/pattern/proxy/ConcreteSubject.java index 1cf26b4ad..7ea76e8af 100644 --- a/design-pattern/java-design-pattern-learn/src/main/java/org/laidu/learn/design/pattern/proxy/ConcreteSubject.java +++ b/design-pattern/java-design-pattern-learn/src/main/java/org/laidu/learn/design/pattern/proxy/ConcreteSubject.java @@ -1,6 +1,7 @@ package org.laidu.learn.design.pattern.proxy; import lombok.Data; +import lombok.EqualsAndHashCode; /** * 真实主题角色 @@ -9,6 +10,7 @@ * Time: 上午11:29 */ @Data +@EqualsAndHashCode public class ConcreteSubject extends AbstractSubject{ public void request(String name){ diff --git a/pom.xml b/pom.xml index e88c7abbd..d4c2d697a 100644 --- a/pom.xml +++ b/pom.xml @@ -96,7 +96,6 @@ - net.logstash.logback @@ -105,7 +104,6 @@ - @@ -307,7 +305,6 @@ - com.github.github site-maven-plugin From 2ff48343f32aa3e650499ba152372a4689740afb Mon Sep 17 00:00:00 2001 From: Tiancai ZANG Date: Fri, 3 Aug 2018 13:43:28 +0800 Subject: [PATCH 134/417] fixed mvn package error --- framework/spring/pom.xml | 2 ++ .../src/main/resources/application.properties | 2 +- framework/spring/spring-cloud/pom.xml | 16 ++++++---- .../spring/spring-cloud/service-api/pom.xml | 6 ++-- framework/thirdparty/pom.xml | 22 ++++++++++++++ framework/thirdparty/wechat/pom.xml | 10 +++---- framework/thirdparty/wechat/wechat-mp/pom.xml | 5 ---- pom.xml | 29 +++++++++---------- 8 files changed, 57 insertions(+), 35 deletions(-) diff --git a/framework/spring/pom.xml b/framework/spring/pom.xml index 901d04627..2946d52d6 100644 --- a/framework/spring/pom.xml +++ b/framework/spring/pom.xml @@ -33,6 +33,8 @@ 5.0.6.RELEASE 2.0.2.RELEASE + Finchley.SR1 + 1.4.0 2.0.1.RELEASE diff --git a/framework/spring/spring-cloud/config-server/src/main/resources/application.properties b/framework/spring/spring-cloud/config-server/src/main/resources/application.properties index e52d75f92..53857097a 100644 --- a/framework/spring/spring-cloud/config-server/src/main/resources/application.properties +++ b/framework/spring/spring-cloud/config-server/src/main/resources/application.properties @@ -4,4 +4,4 @@ server.port=7001 eureka.client.service-url.defaultZone=http://local-dev:1111/eureka/ spring.cloud.config.server.git.uri=https://github.com/laidu/cloud-conf-demo.git -spring.cloud.config.server.git.search-paths=/app \ No newline at end of file +spring.cloud.config.server.git.search-paths=/ \ No newline at end of file diff --git a/framework/spring/spring-cloud/pom.xml b/framework/spring/spring-cloud/pom.xml index 249037815..34b9db615 100644 --- a/framework/spring/spring-cloud/pom.xml +++ b/framework/spring/spring-cloud/pom.xml @@ -30,20 +30,23 @@ + - org.springframework.boot - spring-boot-dependencies - ${spring-boot.version} + org.springframework.cloud + spring-cloud-dependencies + ${spring-cloud.version} pom import + - org.springframework.cloud - spring-cloud-dependencies - Finchley.RELEASE + org.springframework.boot + spring-boot-dependencies + ${spring-boot.version} pom import + @@ -83,4 +86,5 @@ + \ No newline at end of file diff --git a/framework/spring/spring-cloud/service-api/pom.xml b/framework/spring/spring-cloud/service-api/pom.xml index 19af12f88..a180cd937 100644 --- a/framework/spring/spring-cloud/service-api/pom.xml +++ b/framework/spring/spring-cloud/service-api/pom.xml @@ -8,19 +8,19 @@ 1.0-SNAPSHOT 4.0.0 + jar service-api org.springframework.cloud - spring-cloud-starter-zuul - 1.4.3.RELEASE + spring-cloud-starter-netflix-zuul org.springframework.cloud - spring-cloud-starter-eureka + spring-cloud-starter-netflix-eureka-client diff --git a/framework/thirdparty/pom.xml b/framework/thirdparty/pom.xml index c3855dcbf..b1bbad904 100644 --- a/framework/thirdparty/pom.xml +++ b/framework/thirdparty/pom.xml @@ -64,4 +64,26 @@ + + + + org.springframework.boot + spring-boot-maven-plugin + + + pre-integration-test + + start + + + + post-integration-test + + stop + + + + + + \ No newline at end of file diff --git a/framework/thirdparty/wechat/pom.xml b/framework/thirdparty/wechat/pom.xml index 7f5de104f..ef434672f 100644 --- a/framework/thirdparty/wechat/pom.xml +++ b/framework/thirdparty/wechat/pom.xml @@ -25,11 +25,11 @@ - - com.github.binarywang - weixin-java-tools-springmvc - ${wechat-java-tools.version} - + + + + + diff --git a/framework/thirdparty/wechat/wechat-mp/pom.xml b/framework/thirdparty/wechat/wechat-mp/pom.xml index d3ee7d659..9a082f5d4 100644 --- a/framework/thirdparty/wechat/wechat-mp/pom.xml +++ b/framework/thirdparty/wechat/wechat-mp/pom.xml @@ -21,11 +21,6 @@ 1.0-SNAPSHOT - - com.github.binarywang - weixin-java-tools-springmvc - - \ No newline at end of file diff --git a/pom.xml b/pom.xml index d4c2d697a..f16880a2a 100644 --- a/pom.xml +++ b/pom.xml @@ -248,21 +248,20 @@ - - org.apache.maven.plugins - maven-scm-publish-plugin - 3.0.0 - - - scm-publish - site-deploy - - publish-scm - - - - - + + + + + + + + + + + + + + org.apache.maven.plugins maven-surefire-plugin From 79937b04b32e8cb3c60e0da6958194161ef6e18c Mon Sep 17 00:00:00 2001 From: Tiancai ZANG Date: Fri, 3 Aug 2018 18:26:56 +0800 Subject: [PATCH 135/417] sync --- LICENSE | 2 +- .../resources/application-template.properties | 6 +- .../src/main/resources/application.properties | 2 +- .../learn/concurrent/pool/ThreadPoolDemo.java | 78 +++++++++++++++++++ language-advance/pom.xml | 8 ++ .../src/test/resources/www.baidu.com.har | 2 +- 6 files changed, 92 insertions(+), 6 deletions(-) create mode 100644 language-advance/concurrent/src/main/java/org/laidu/learn/concurrent/pool/ThreadPoolDemo.java diff --git a/LICENSE b/LICENSE index 94a9ed024..ba250b264 100644 --- a/LICENSE +++ b/LICENSE @@ -453,7 +453,7 @@ for enforcing compliance by third parties with this License. An "entity transaction" is a transaction transferring control of an organization, or substantially all assets of one, or subdividing an organization, or merging organizations. If propagation of a covered -work results from an entity transaction, each party to that +work tasks from an entity transaction, each party to that transaction who receives a copy of the work also receives whatever licenses to the work the party's predecessor in interest had or could give under the previous paragraph, plus a right to possession of the diff --git a/framework/spring/spring-boot/spring-boot-app/src/main/resources/application-template.properties b/framework/spring/spring-boot/spring-boot-app/src/main/resources/application-template.properties index 716894fa4..78b400b2b 100644 --- a/framework/spring/spring-boot/spring-boot-app/src/main/resources/application-template.properties +++ b/framework/spring/spring-boot/spring-boot-app/src/main/resources/application-template.properties @@ -640,12 +640,12 @@ spring.data.rest.default-media-type= # Content type to use as a default when non spring.data.rest.default-page-size= # Default size of pages. spring.data.rest.detection-strategy=default # Strategy to use to determine which repositories get exposed. spring.data.rest.enable-enum-translation= # Whether to enable enum value translation through the Spring Data REST default resource bundle. -spring.data.rest.limit-param-name= # Name of the URL query string parameter that indicates how many results to return at once. +spring.data.rest.limit-param-name= # Name of the URL query string parameter that indicates how many tasks to return at once. spring.data.rest.max-page-size= # Maximum size of pages. spring.data.rest.page-param-name= # Name of the URL query string parameter that indicates what page to return. spring.data.rest.return-body-on-create= # Whether to return a response body after creating an entity. spring.data.rest.return-body-on-update= # Whether to return a response body after updating an entity. -spring.data.rest.sort-param-name= # Name of the URL query string parameter that indicates what direction to sort results. +spring.data.rest.sort-param-name= # Name of the URL query string parameter that indicates what direction to sort tasks. # SOLR (SolrProperties) spring.data.solr.host=http://127.0.0.1:8983/solr # Solr host. Ignored if "zk-host" is set. @@ -1086,7 +1086,7 @@ spring.rabbitmq.listener.simple.retry.max-attempts=3 # Maximum number of attempt spring.rabbitmq.listener.simple.retry.max-interval=10000ms # Maximum duration between attempts. spring.rabbitmq.listener.simple.retry.multiplier=1 # Multiplier to apply to the previous retry interval. spring.rabbitmq.listener.simple.retry.stateless=true # Whether retries are stateless or stateful. -spring.rabbitmq.listener.simple.transaction-size= # Number of messages to be processed in a transaction. That is, the number of messages between acks. For best results, it should be less than or equal to the prefetch count. +spring.rabbitmq.listener.simple.transaction-size= # Number of messages to be processed in a transaction. That is, the number of messages between acks. For best tasks, it should be less than or equal to the prefetch count. spring.rabbitmq.listener.type=simple # Listener container type. spring.rabbitmq.password=guest # Login to authenticate against the broker. spring.rabbitmq.port=5672 # RabbitMQ port. diff --git a/framework/spring/spring-cloud/config-server/src/main/resources/application.properties b/framework/spring/spring-cloud/config-server/src/main/resources/application.properties index 53857097a..20d81aca9 100644 --- a/framework/spring/spring-cloud/config-server/src/main/resources/application.properties +++ b/framework/spring/spring-cloud/config-server/src/main/resources/application.properties @@ -4,4 +4,4 @@ server.port=7001 eureka.client.service-url.defaultZone=http://local-dev:1111/eureka/ spring.cloud.config.server.git.uri=https://github.com/laidu/cloud-conf-demo.git -spring.cloud.config.server.git.search-paths=/ \ No newline at end of file +spring.cloud.config.server.git.seaxrch-paths=/ \ No newline at end of file diff --git a/language-advance/concurrent/src/main/java/org/laidu/learn/concurrent/pool/ThreadPoolDemo.java b/language-advance/concurrent/src/main/java/org/laidu/learn/concurrent/pool/ThreadPoolDemo.java new file mode 100644 index 000000000..e54bd409b --- /dev/null +++ b/language-advance/concurrent/src/main/java/org/laidu/learn/concurrent/pool/ThreadPoolDemo.java @@ -0,0 +1,78 @@ +package org.laidu.learn.concurrent.pool; + +import com.alibaba.fastjson.JSONObject; +import org.apache.commons.lang3.RandomUtils; + +import java.util.Arrays; +import java.util.List; +import java.util.UUID; +import java.util.concurrent.*; + +/** + * 线程池 + *

            + * Created by laidu + * on 2018-08-03 16:15. + * + * @author laidu + */ +// TODO: 2018-08-03 16:15 线程池 +public class ThreadPoolDemo { + + + public static class Task implements Callable{ + + @Override + public JSONObject call() throws Exception { + Thread.sleep(RandomUtils.nextInt(1,10)*100); + + JSONObject result = new JSONObject(); + + result.put("123",UUID.randomUUID().toString()); + result.put("12",UUID.randomUUID().toString()); + result.put("1",UUID.randomUUID().toString()); + result.put("133",UUID.randomUUID().toString()); + result.put("143",UUID.randomUUID().toString()); + result.put("153",UUID.randomUUID().toString()); + + return result; + } + } + + public static void call(List tasks) throws Exception { + + ExecutorService executorService = Executors.newCachedThreadPool(); + + List> futures = executorService.invokeAll(tasks); + + futures.stream().forEach(result -> { + try { + System.out.println(result.get()); + } catch (InterruptedException e) { + } catch (ExecutionException e) { + } + }); + +// executorService.shutdown(); + + } + + public static void main(String[] args) throws Exception { + + for (int i = 0; i < 100; i++) { + + call(Arrays.asList(new Task(), + new Task(), + new Task(), + new Task(), + new Task(), + new Task(), + new Task(), + new Task(), + new Task(), + new Task() + )); + } + } + +} \ No newline at end of file diff --git a/language-advance/pom.xml b/language-advance/pom.xml index 8ce1777a8..18f7bddd7 100644 --- a/language-advance/pom.xml +++ b/language-advance/pom.xml @@ -32,4 +32,12 @@ + + + org.laidu.learn + common-util + 1.0-SNAPSHOT + + + \ No newline at end of file diff --git a/production-component/common-util/src/test/resources/www.baidu.com.har b/production-component/common-util/src/test/resources/www.baidu.com.har index b68e8d8d0..ebcd52a62 100644 --- a/production-component/common-util/src/test/resources/www.baidu.com.har +++ b/production-component/common-util/src/test/resources/www.baidu.com.har @@ -1417,7 +1417,7 @@ "content": { "size": 254976, "mimeType": "application/javascript", - "text": "function addEV(t,e,n){window.attachEvent?t.attachEvent(\"on\"+e,n):window.addEventListener&&t.addEventListener(e,n,!1)}function _aMC(t){for(var e=t,n=-1;e=e.parentNode;)if(n=parseInt(e.getAttribute(\"id\")),n>0)return n}function al_c(t){for(;\"TABLE\"!=t.tagName;)t=t.parentNode;return t.getAttribute(\"id\")}function al_c2(t,e){for(;e--;)for(;\"TABLE\"!=(t=t.parentNode).tagName;);return t.getAttribute(\"id\")}function c(t){var e=t.p1;if(!(\"alop\"!=t.fm||\"rsv_xpath\"in t||e&&\"6677\"==G(e).getAttribute(\"srcid\")))return!0;\n!e||\"p5\"in t||(t.p5=e);var n=window.document.location.href,o=\"\",i=\"\",r=\"\",s=window[\"BD_PS_C\"+(new Date).getTime()]=new Image;for(v in t){switch(v){case\"title\":i=t[v].replace(/<[^<>]+>/g,\"\"),i&&i.length>100&&(i=i.substring(0,100)),i=encodeURIComponent(i);break;case\"mu\":case\"url\":i=escape(t[v]);break;default:i=t[v]}o+=\"&\"+v+\"=\"+i}if(!(\"mu\"in t))try{\"p2\"in t&&G(t.p1).getAttribute(\"mu\")&&\"pl\"!=t.fm&&(r=\"&mu=\"+escape(G(t.p1).getAttribute(\"mu\")))}catch(a){}if(window.bds&&bds.comm){var c=bds.comm.ubsurl+\"?q=\"+bds.comm.queryEnc+o+r+\"&rsv_sid=\"+bds.comm.sid+\"&cid=\"+bds.comm.cid+\"&qid=\"+bds.comm.queryId+\"&t=\"+(new Date).getTime();\nif(bds.comm.inter&&(c=c+\"&rsv_inter=\"+bds.comm.inter),bds.comm.seinfo&&bds.comm.seinfo.rsv_pstg&&(c=c+\"&rsv_pstg=\"+bds.comm.seinfo.rsv_pstg),bds.comm.cftime&&0!=bds.comm.cftime&&(c=c+\"&rsv_cftime=\"+bds.comm.cftime),c+=bds.comm.resultPage?\"&rsv_iorr=1\":\"&rsv_iorr=0\",bds.comm.tn&&(c=c+\"&rsv_tn=\"+bds.comm.tn),bds.comm.indexSid&&(c+=\"&rsv_isid=\"+bds.comm.indexSid),bds.comm.lastVoiceQuery&&(c+=\"&rsv_lavo=\"+encodeURIComponent(bds.comm.lastVoiceQuery)),Cookie.get(\"ispeed\")&&(c+=\"&rsv_ispeed=\"+Cookie.get(\"ispeed\")),/ssl_sample/.test(location.href)){var d=location.href.match(/ssl_sample=[^=&]+/i);\nc+=\"&rsv_\"+d[0]}if(/ssl_s=/.test(location.href)){var d=location.href.match(/ssl_s=[^=&]+/i);c+=\"&rsv_\"+d[0]}c+=\"&rsv_ssl=\"+(\"https:\"===location.protocol?1:0),c+=\"&path=\"+encodeURIComponent(n),c+=\"&rsv_did=\"+(bds.comm.did?bds.comm.did:\"\"),s.src=c}return!0}function TagQ(t,e){return e.getElementsByTagName(t)}function h(t){t.style.behavior=\"url(#default#homepage)\",t.setHomePage(bds.comm.domain);var e=window[\"BD_PS_C\"+(new Date).getTime()]=new Image;e.src=bds.comm.ubsurl+\"?fm=hp&tn=\"+bds.comm.tn+\"&t=\"+(new Date).getTime()\n}function setHeadUrl(t){var e=G(\"kw\").value;e=encodeURIComponent(e);var n=t.href;n=n.replace(new RegExp(\"(\"+t.getAttribute(\"wdfield\")+\"=)[^&]*\"),\"$1\"+e),t.href=n}function G(t){return document.getElementById(t)}function ns_c_pj(t,e){var n=encodeURIComponent(window.document.location.href),o=\"\",i=\"\",r=\"\",s=bds&&bds.comm&&bds.comm.did?bds.comm.did:\"\";wd=bds.comm.queryEnc,nsclickDomain=bds&&bds.util&&bds.util.domain?bds.util.domain.get(\"http://nsclick.baidu.com\"):\"http://nsclick.baidu.com\",img=window[\"BD_PS_C\"+(new Date).getTime()]=new Image,src=\"\";\nfor(v in t){switch(v){case\"title\":i=encodeURIComponent(t[v].replace(/<[^<>]+>/g,\"\"));break;case\"url\":i=encodeURIComponent(t[v]);break;default:i=t[v]}o+=v+\"=\"+i+\"&\"}if(r=\"&mu=\"+n,src=nsclickDomain+\"/v.gif?pid=201&\"+(e||\"\")+o+\"path=\"+n+\"&wd=\"+wd+\"&rsv_sid=\"+(bds.comm.ishome&&bds.comm.indexSid?bds.comm.indexSid:bds.comm.sid)+\"&rsv_did=\"+s+\"&t=\"+(new Date).getTime(),\"undefined\"!=typeof Cookie&&\"undefined\"!=typeof Cookie.get)Cookie.get(\"H_PS_SKIN\")&&\"0\"!=Cookie.get(\"H_PS_SKIN\")&&(src+=\"&rsv_skin=1\");else{var a=\"\";\ntry{a=parseInt(document.cookie.match(new RegExp(\"(^| )H_PS_SKIN=([^;]*)(;|$)\"))[2])}catch(c){}a&&\"0\"!=a&&(src+=\"&rsv_skin=1\")}return img.src=src,!0}function ns_c(t,e){return e===!0?ns_c_pj(t,\"pj=www&rsv_sample=1&\"):ns_c_pj(t,\"pj=www&\")}function escapeHTML(t){return t.replace(/&/g,\"&\").replace(//g,\">\").replace(/ /g,\" \").replace(/\"/g,\""\").replace(/'/g,\"'\")}function initPreload(t){function e(){Cookie.set(\"ISSW\",\"1\",null,null,new Date((new Date).getTime()+3e5))\n}function n(t,e){e=e||3,Cookie.set(\"ISWR\",t,null,null,new Date((new Date).getTime()+1e3*e))}function o(t){t&&\"string\"==typeof t&&(t=$.parseJSON(t)),t&&t.length&&$.each(t,function(t,e){if(0===e.indexOf(ne.protocol)){var n=new Image;n.src=e}})}function i(t){return $.trim(t).replace(/\\s+/g,\" \")}function r(t){if(\"string\"==typeof t){var e,n=0;for(e=0;e-1?(o=t.split(\"?\"),i=o[1]):i=t,e=i.indexOf(\"&\")>-1?i.split(\"&\"):new Array(i);\nfor(var s=0;s-1?e[s]:e[s]+\"=\",n=e[s].split(\"=\"),r[n[0]]=decodeURIComponent(n[1].replace(/\\+/g,\" \"))}catch(a){}return r}function a(t){function e(t){if(document.all)$(\"style[data-for='result']\").get(0).styleSheet.cssText+=t;else{var e=document.createElement(\"style\");e.type=\"text/css\",e.appendChild(document.createTextNode(t)),e.setAttribute(\"data-for\",\"result\"),document.getElementsByTagName(\"HEAD\")[0].appendChild(e)}}function n(){B.css({filter:\"progid:DXImageTransform.Microsoft.Alpha(Opacity=95)\",opacity:.95}),H||(e(\".slowmsg{z-index:301;background-color:#fff;border:1px solid #f0f0f0;position:fixed;_position:absolute;top:144px;left:212px;height:95px;width:360px;box-shadow:0 0 5px rgba(0,0,0,0.05)}.slowmsg .ball{width:40px;margin:41px auto 0;position:relative;}.slowmsg .b{left:20px;position:absolute;width:10px;height:10px;-moz-border-radius: 50%;-webkit-border-radius: 50%;border-radius: 50%;}\"),H=$('

            '),H.find(\".b\").each(function(t,e){var n=[[0,40],[20,20],[40,0]][t],o=[\"rgb(55,137,250)\",\"rgb(99,99,99)\",\"rgb(235,67,70)\"],i=0;\n$(e).css({\"background-color\":o[t]}),function r(){return F?($(e).animate({left:n[i%2]},{duration:800,easing:\"swing\",progress:function(n,r){r>=.5&&$(e).css({\"background-color\":o[(i+t)%3]})},complete:function(){r()}}),void i++):void setTimeout(r,400)}()})),H.appendTo(Ye),ns_c({pj_name:\"loading_msg\"})}function o(){var t,e=(new Date).getTime();Cookie.set(\"rsv_jmp_slow\",e),Cookie.set(\"WWW_ST\",e,null,null,new Date(e+3e4)),t=ne.href+(ne.href.indexOf(\"?\")>0?\"&\":\"?\")+\"rsv_jmp=slow\",ne.replace(t)}if(!V){var t=$.extend({top:93,\"z-index\":300},t),i=$(window).height();\nB||(B=$(\"
            \")),B.css({filter:\"progid:DXImageTransform.Microsoft.Alpha(Opacity=30)\",opacity:.3,position:\"absolute\",background:\"#fff\",\"z-index\":t[\"z-index\"],top:t.top+\"px\",left:\"0\"}),V=!0,B.width(Ye.width()),B.height(Math.max(i,Ye.height())-t.top),B.appendTo(Ye),$(window).scrollTop(),F=setTimeout(n,3e3),G=setTimeout(o,7e3),Q=function(){F&&(clearTimeout(F),F=setTimeout(n,3e3)),G&&(clearTimeout(G),G=setTimeout(o,7e3))}}}function d(){B&&V&&(V=!1,B.remove(),H&&H.remove(),F&&(clearTimeout(F),F=!1),W&&W.remove(),G&&(clearTimeout(G),G=!1))\n}function l(t,e,n){n||(n=0);var o=t.length;for(0>n&&(n=o+n);o>n;n++)if(t[n]===e)return n;return-1}function u(t,e,n){var o=e.find(\"script:not([src])\"),i=0,r=$.globalEval;$.globalEval=function(t){window.currentScriptElem=o[i],i++;try{r.apply($,arguments)}catch(e){window.console&&console.debug&&(console.debug(t),console.debug(e))}},\"insertBefore\"==n?e.insertBefore(t):t.append(e),window.currentScriptElem=void 0,$.globalEval=r}function m(t){try{t()}catch(e){window.console&&console.debug&&console.debug(e),J(e.toString())\n}}function p(t,e){function n(t){if(\"object\"==typeof t){var e={};for(a in t)t.hasOwnProperty(a)&&(e[a]=t[a])}else e=t;return e}if(!p.__init){p.__init=!0;var o=[\"wd\",\"pn\",\"nojc\",\"cl\",\"cq\",\"srcid\",\"gpc\",\"tfflag\",\"si\",\"sl_lang\",\"rsv_srlang\",\"rqlang\"],i=[\"wd\",\"cl\",\"ct\",\"tn\",\"rn\",\"ie\",\"f\",\"lm\",\"si\",\"gpc\",\"tfflag\",\"usm\",\"z\",\"ch\",\"sts\",\"vit\",\"dsp\",\"trh\",\"trb\",\"tre\",\"la\",\"lo\",\"st\",\"nojc\",\"haobd\",\"rtt\",\"bsst\",\"gvideo\",\"__eis\",\"__eist\",\"oq\",\"fenlei\",\"sid\",\"rsv_idx\",\"rsv_stat\",\"rsv_bp\",\"rqlang\"],r=[\"w\",\"word\"];\np.prototype.clone=function(t){var e=new p(n(this.params));if(\"object\"==typeof t)for(var o in t)t.hasOwnProperty(o)&&l(i,o)>=0&&e.p(o,t[o]);return e},p.prototype.h=function(t){this.header_params=this.header_params||{};for(var e in t)this.header_params[e]=t[e];return this},p.prototype.buildHeaders=function(t){t&&this.setHeader(t);var e={};for(var n in this.header_params)if(\"object\"==typeof this.header_params[n]){var o=[];for(var i in this.header_params[n]){var r=this.header_params[n][i];r instanceof Array&&(r=r.join(\"|\")),o.push(i+\"=\"+r)\n}e[n]=o.join(\"&\")}else e[n]=this.header_params[n];return e},p.prototype.buildSearchUrl=function(t){return ne.protocol+\"//\"+ne.host+ne.pathname+ne.search+\"#\"+this.buildQueryString(t)},p.prototype.buildSyncSearchUrl=function(t){return ne.protocol+\"//\"+ne.host+\"/s?\"+this.buildQueryString(t)},p.prototype.buildQueryString=function(t){var e=n(this.params);if(\"object\"==typeof t)for(var o in t)t.hasOwnProperty(o)&&(e[o]=t[o]);var i=\"\";e.wd=$.limitWd(e.wd);for(param in e)param&&e.hasOwnProperty(param)&&\"\"!==e[param]&&(i+=param+\"=\"+encodeURIComponent(e[param]).replace(/'/g,\"%27\")+\"&\");\nreturn i.substr(0,i.length-1)},p.prototype.equals=function(t){if(!t||!t.p)return!1;for(var e=0;e=0&&(t=\"wd\"),void 0===e?this.params[t]:(this.params[t]=e,this)},p.prototype.hashCode=function(){var t=[];if(!this.p(\"wd\"))return\"\";for(var e=0;e_.st&&_.net-_.st-w.cus_srv>0?_.net-_.st-w.cus_srv:1,w.cus_tti2=_.dom>_.st?_.dom-_.st:1,w.cus_frdom=_.dom-_.pt,w.cus_fs=_.fs>_.st?_.fs-_.st:w.cus_tti2,w.cus_frext=w.cus_fs-w.cus_tti2}function i(t){var e=\"\";for(var n in t)n&&t.hasOwnProperty(n)&&\"\"!==t[n]&&(e+=\"&\"+n+\"=\"+encodeURIComponent(t[n]));return e}function r(t){var t=[];for(var e in k)t.push(k[e]);\nvar n=T=$.when.apply($,t);T.always(function(){n===T&&m()})}function s(){var t=Array.apply(null,arguments);if(!(!t.length>0))for(var e=0;e.51&&.52>t;S=S||bds.comm.bfe_sample;var s=S&&t>.6&&.9>t;if(t>.51&&.52>t||e.test(bds.comm.sid)&&t>0&&.2>t||bds.comm.intrSid||s){e.test(bds.comm.sid)&&(r?n(\"issam\",2):n(\"issam\",1)),s&&(n(\"issam\",3),n(\"bfesam\",bds.comm.bfe_sample)),o(),h(C),g(C),n(\"srvInfo\",f()),n(\"sysv\",navigator.appMinorVersion),a(),x.fire();var c=\"//www.baidu.com/nocache/fesplg/s.gif?log_type=sp\",d=\"\";\nd+=i(v)+i(w);var l=c+d,u=new Image,m=\"_LOG_\"+(new Date).getTime();u.onload=function(){delete window[m]},window[m]=u,u.src=l}}function p(t){C=t,t.find(\"img\").one(\"load\",function(){var t=$(this).offset(),o=t.top,i=t.left,r=\"\";if(I>o&&o>0){e(\"fs\");var s=_.fs-_.dom;y.push(o+\"_\"+i+\"_\"+s),r=$(this).attr(\"data-src\")||/^http/.test($(this).attr(\"src\"))?$(this).attr(\"data-src\")||$(this).attr(\"src\"):\"base64\",n(\"ic_lis\",r)}})}function f(){var t,e,n=$.parseJSON(bds.comm.speedInfo),o=[];for(var i in n){if(t=n[i],e=t.ModuleId+\"_\"+t.TimeCost+\"_\"+t.TimeSelf+\"_\"+t.Idc,t.hasOwnProperty(\"SubProcess\"))for(var r in t.SubProcess)e+=\",\"+t.SubProcess[r].ProcessId+\"_\"+t.SubProcess[r].TimeCost+\"_\"+t.SubProcess[r].isHitCache+\"_\"+t.SubProcess[r].Idc;\no.push(e)}return encodeURIComponent(o.join(\"|\"))}function h(t){for(var e=0,o=t.find(\"img\"),i=t.find(\"#content_left\").find(\"img\"),r=0,s=0,a=0;as&&s>0&&e++;n(\"cus_ic\",o.length),n(\"cus_extic\",e),n(\"cus_extlic\",r),n(\"cus_icl\",i.length),n(\"cus_icr\",t.find(\"#content_right\").find(\"img\").length),n(\"img_info\",y.join(\",\")),n(\"psize\",t.html().length)}function g(t){var e={},o=[],i=t.find(\"#content_left,#con-ar\").children(\"*[tpl]\"),r=\"\";if(i.length>0)for(var s=0;s0&&n(\"tplp\",o.join(\"|\"))}function b(t){x.add(t)}var v={product_id:45,page_id:317,page_type:0},w={},_={st:0,pt:0,net:0,dom:0,fs:0},y=[],x=$.Callbacks(),k={},T=null,C=null,S=null,I=600;return l(),{trigger:d,mark:e,setParam:n,onSendlog:b,bindImgLoad:p,destroy:c,init:u}}function h(t,e){t&&(e=$.extend(t.log,e))}function g(){if(bds.comm.seinfo){bds.comm.seinfo.rsv_pre=encodeURIComponent(b()),bds.comm.seinfo.rsv_reh=reh_rec(),bds.comm.seinfo.rsv_scr=scr_rec();var t=null;if(bds&&bds.comm&&bds.comm.personalData)try{\"string\"==typeof bds.comm.personalData&&(bds.comm.personalData=$.parseJSON(bds.comm.personalData)),t=bds.comm.personalData?bds.comm.personalData.fullSkinName&&bds.comm.personalData.fullSkinName.value:null\n}catch(e){t=null}if(t&&(bds.comm.seinfo.rsv_skin=t),bds.comm.seinfo.rsv_psid=$.getCookie(\"BIDUPSID\"),bds.comm.seinfo.rsv_pstm=$.getCookie(\"PSTM\"),bds.comm.seinfo.rsv_idc=function(){var t=bds.comm.speedInfo||[];try{t=$.parseJSON(t)}catch(e){t=[]}for(var n=0,o=t.length;o>n;n++)if(9540==t[n].ModuleId)return t[n].Idc||\"\";return\"\"}(),c(bds.comm.seinfo),\"ON\"===bds.comm._se_click_track_flag){var n=new Image,o=\"//www.baidu.com/s?wd=\"+bds.comm.queryEnc+\"&qid=\"+bds.comm.queryId+\"<s=91\";n.src=o}}!function(){var t=Math.random(),e=function(){function t(){var t=[],o=[],i={};\nfor(var r in n)!function(e){var r=\"_SSL_LOG_\"+e+\"_\"+ +new Date,s=new Image,a=new Date;i[e]=$.Deferred(),o.push(i[e]),s.onload=function(){t.push(e+\"_success=\"+(new Date-a)),i[e].resolve(),delete window[r]},s.onerror=function(){t.push(e+\"_error=\"+(new Date-a)),i[e].resolve(),delete window[r]},s.src=n[e]}(r);var s=$.when.apply($,o);s.always(function(){var n=\"//www.baidu.com/nocache/fesplg/s.gif?log_type=hm&type=ssl&\",o=t.join(\"&\"),i=new Image,r=\"_HM_LOG_\"+(new Date).getTime();i.onload=function(){delete window[r]\n},window[r]=i,i.src=n+o+\"&_tt=\"+e})}var e=+new Date,n={gt1:\"https://gt1.baidu.com/nocache/imgdata/sp613.gif?t=\"+e,gt2:\"https://gt2.baidu.com/nocache/imgdata/sp613.gif?t=\"+e};setTimeout(t,1e3)};t>.1&&.11>t&&e()}()}function b(){return Le.length}function v(t){$(document).delegate(\"a\",\"mousedown\",function(){return function(){var e=$(this);w(e,t)}}())}function w(t,e){var n,o=e.prefix,i=t.attr(\"href\");if(o&&i&&0==i.indexOf(o)&&(i=i.substring(o.length)),!o&&i){var r=i.match(/^http:\\/\\/[^\\/]+/);if(!r)return;\no=r[0],i=i.replace(/^http:\\/\\/[^\\/]+/,\"\")}if(i&&(n=i.match(/^\\/*(link|baidu.php)\\?(.*)$/),n=i.match(e.regex)),!(n&&n[2]&&n[2].match(/&(wd|word)=/))){if(i&&n){e.convertTable&&e.convertTable[n[1]]&&(n[1]=e.convertTable[n[1]]);var s=ie.getLinkParams(i);s&&(\"https:\"===ne.protocol&&/Chrome|Safari/.test(navigator.userAgent)&&(o=o.replace(/^http:\\/\\/www\\.baidu\\.com/,\"https://www.baidu.com\")),i=o+\"/\"+n[1]+\"?\"+n[2]+\"&\"+s,t.attr(\"href\",o+\"/\"+n[1]+\"?\"+n[2]+\"&\"+s),t.click(function(){window.PDC_ASYNC.setLinkData(\"click_t\",(new Date).getTime()),window.PDC_ASYNC.setLinkData(\"linkpreload\",$(this).attr(\"linkpreload\"))\n}))}return i}}function _(t){if(!window.__disable_is2||$.trim(t)!=$.trim($e.val())){if(Ze||!bds.comm.supportis)return void(ke&&ke.html(\"\"));if(0!=pageState&&!window.__disable_kw_tip)if(ke||(ke=$('
            ').insertBefore($e),ke.parent().click(function(t){var e=$e.get(0);if(t.target===e)return!0;e.focus();var n=e.value.length;if(document.selection){var o=e.createTextRange();o.moveStart(\"character\",n),o.collapse(),o.select()\n}else\"number\"==typeof e.selectionStart&&\"number\"==typeof e.selectionEnd&&(e.selectionStart=e.selectionEnd=n);return!1}),ke.get(0).onselectstart=function(){return!1}),ke.text(t),\"\"!=t){var e=$e.textWidth();ke.css({\"margin-left\":e+10+\"px\",\"max-width\":ke.parent().width()-e-14+\"px\"}).text(t),window.__disable_is2&&ke.css(\"z-index\",1),ke.show()}else ke.hide()}}function y(){Ze=!1}function x(){Ze=!0,ze&&ze.real_wd&&$.trim($e.val())?(_(ze.real_wd),k(ze)):(_(\"\"),k())}function k(t){var e=i($e.val());t&&e==t.real_wd&&$(\"#super_se_tip\").remove()\n}function T(t,e){var n=(new Date).getTime();if(e.force||h(e,{utime:(new Date).getTime()-qe}),!e||!e.loaded)return!1;\"string\"==typeof e.html&&(e.html=$(e.html)),$(e).trigger(\"swap_begin\"),m(function(){e.pdc.mark(\"pt\"),$(window).trigger(\"swap_begin\",[e,t]);var n=Ge&&Ge.getData();n&&(setTimeout(function(){e.pdc.setParam(\"ispeed\",Ge.monitor(n))},3e3),e.pdc.setParam(\"upm\",n.join(\",\")))}),m(function(){e.base64.restart();try{if(!e.base64_loaded){var t=$.parseJSON(e.html.find(\"#img_list\").text());e.base64.loadImg(t.right,t.left)\n}}catch(n){}e.base64.end()});var o=[$(window).scrollLeft(),$(window).scrollTop()];Ae.hide(),oldEnv=Me,Me=t,He=ze,ze=e,bds.comm.cur_disp_query=t.p(\"wd\"),S(),bds&&bds.se&&bds.se.certification&&bds.se.certification.data&&(bds.se.certification.data=[]),0==pageState&&N(t),m(function(){he()}),bds.clearReady(),Ae.empty();var i=e.html;if(X.use_cache_repeatedly&&(i=i.clone()),m(function(){i.find(\"#head_style\").children().removeAttr(\"data-for\").appendTo(\"head\")}),m(function(){$.globalEval(i.find(\"#head_script\").html())\n}),bds.comm&&bds.comm.jsversion&&\"006\"!=bds.comm.jsversion){var r=Me.buildSyncSearchUrl({jmp:\"jsver\",_vr:Math.random()});return void ne.replace(r)}m(function(){i.find(\"#content_script script\").each(function(t,e){$.globalEval($(e).html())})}),m(function(){var t=i.find(\"#s_tab\");if(t.size()){var e=$(\"#s_tab\");e.size()?e.replaceWith(t):t.insertBefore(Ae)}});var s=!1;!function(){var t=i.find(\"#con-at\"),n=$(\"#con-at\"),o=n.children().children();if(o.size())if(t.children().size()){var r=t.children().children();\no.attr(\"cq\")!=r.attr(\"cq\")||o.attr(\"srcid\")!=r.attr(\"srcid\")||e.force&&oldEnv&&oldEnv.equals(Me)||!Me.p(\"cq\")||!Me.p(\"srcid\")||1==Me.p(\"_trf\")?(n.remove(),$(window).trigger(\"top_result_removed\"),u(Ae,t,\"insertBefore\")):s=!0}else n.remove(),$(window).trigger(\"top_result_removed\");else t.children().size()&&u(Ae,t,\"insertBefore\")}();var a=i.find(\"#container\");if(e.pdc.bindImgLoad(a),u(Ae,a),!$(\"#footer\").size()){var c=i.find(\"#footer\").children();u(Ae,c)}m(function(){var t=(new Date).getTime();i&&$.globalEval(i.find(\"#jsMerge\").html()),h(e,{jsmergetime:(new Date).getTime()-t})\n}),bds&&bds.comm&&bds.comm.templateName==bds.comm.resTemplateName?bds.comm.seinfo&&(bds.comm.seinfo.rsv_tpfail=0):bds.comm.seinfo&&(bds.comm.seinfo.rsv_tpfail=1),0!=pageState&&bds&&bds.util&&bds.util.setContainerWidth&&bds.util.setContainerWidth(),document.title=t.p(\"wd\")+\"_百度搜索\",Ae.show(),d(),h(e,{domtime:(new Date).getTime()-n}),h(e,{waittime:(new Date).getTime()-Te}),e.pdc.mark(\"dom\"),$(window).trigger(\"swap_dom_ready\",[e,t]),window.__lazy_foot_js?setTimeout(function(){C(t,e,n)},0):C(t,e,n),s?window.scrollTo(o[0],o[1]):window.scrollTo(0,0),$(window).trigger(\"scroll\"),swap_wait=!1\n}function C(t,e,n){var o;n||(n=0),e&&(o=e.html),m(function(){_e.get(0).f.value=8}),m(function(){var t=(new Date).getTime();e&&e.base64&&(e.base64.setDomLoad(\"left\"),e.base64.setDomLoad(\"right\")),h(e,{base64time:(new Date).getTime()-t})}),$(\"#search\").find(\"form\").submit(function(){var t=$e;$e=$(this).find(\"[name='wd']\");var e=R.call(this);return $e=t,e}),m(function(){var t=(new Date).getTime();bds.doReady(),h(e,{bdstime:(new Date).getTime()-t})}),m(function(){var t=(new Date).getTime();o&&$.globalEval(o.find(\"#ecomScript\").html()),h(e,{ecomtime:(new Date).getTime()-t})\n}),m(function(){var t=(new Date).getTime();bds.se.tools&&(Ie&&clearTimeout(Ie),Ie=setTimeout(function(){bds.se.tools()},600)),bds&&bds.se&&bds.se.certification&&bds.se.certification.build&&(Se&&clearTimeout(Se),Se=setTimeout(function(){$(\".certification\").size()>0&&bds.se.certification.build.init()},1e3)),bds&&bds.se&&bds.se.safeTip&&(Ce&&clearTimeout(Ce),Ce=setTimeout(function(){$(\".unsafe_ico_new\").size()>0&&bds.se.safeTip.init()},1200)),h(e,{tiptime:(new Date).getTime()-t})}),m(function(){var t=(new Date).getTime();\nwindow.initResultClickLog(),h(e,{clicktime:(new Date).getTime()-t})}),m(function(){h(e,{rtime:(new Date).getTime()-n,used:1}),bds.comm.seinfo&&e&&(bds.comm.seinfo.rsv_pstg=e.type)}),m(function(){$(window).trigger(\"swap_end\",[e,t]),O(),qe=(new Date).getTime(),e&&e.pdc&&(e.pdc.mark(\"js\"),e.pdc.trigger(\"swap_end\"))})}function S(){m(function(){$.each(bds.comm.tips,function(t,e){e&&e.destroy&&e.destroy()}),$(\"#c-tips-container\").empty(),bds.comm.tips=[]}),m(function(){window.app&&window.app.dispose&&window.app.dispose()\n}),m(function(){bds.comm.resolveUnloadHandler()}),bds&&bds.se&&bds.se.certification&&bds.se.certification.data&&(bds.se.certification.data=[]),bds&&bds.se&&bds.se.userAction&&bds.se.userAction.destroy()}function I(){De&&Re&&(clearTimeout(De),De=setTimeout(Re,Z))}function D(t,e,n){return function(e){var o=$.extend({},e);if(t&&!t.confirm){bds.comm.cur_query=t.real_wd,!bds.comm.supportis&&t&&(n=t.pstg||0),t.confirm=!0,De=!1,Re=null;var i={};i.is_referer=oe,i.is_xhr=\"1\";var r=new p(s(ie.getQueryString()),!0);\nt.env.equals(r)||t.env.clone({wd:t.prw}).equals(r)||ie.setUrl(t.env),oe=ne.protocol+\"//\"+ne.host+ne.pathname+ne.search,t.seq?t.seq++:t.seq=1,t.pdc&&(20!=n&&bds.comm.supportis&&t.pdc.mark(\"st\"),t.pdc&&t.pdc.setParam&&t.pdc.setParam(\"cus_pstg\",n),t.force&&t.pdc.setParam(\"f4s\",1),t.pdc.trigger(\"confirm\"),window.PRE_CONN.startTimer()),m(function(){$(window).trigger(\"confirm\",[t,n])});var a=\"/s?ie=utf-8&csq=\"+t.seq+\"&pstg=\"+n+(o.tipConfirm?\"&_cktip=1\":\"\")+\"&mod=2\"+(bds.comm.supportis?\"&isbd=1\":\"\")+\"&cqid=\"+t.qid+\"&istc=\"+((new Date).getTime()-t.startTime)+\"&ver=\"+bds.comm.baiduis_verify+\"&chk=\"+t.chk+\"&isid=\"+ve+\"&\"+t.env.buildQueryString()+(t.force?\"&f4s=1\":\"\")+(\"function\"==typeof Ke?\"&_ck=\"+Ke(t.env.p(\"wd\")):\"\");\nif(bds.comm.indexSid&&(/9998_/.test(bds.comm.indexSid)&&\"https:\"===ne.protocol&&(bds.comm.indexSid=bds.comm.indexSid.replace(\"9998\",\"8499\")),a+=\"&rsv_isid=\"+bds.comm.indexSid),t.no_predict&&(a+=\"&isnop=\"+(1>=fe?0:1)),t&&t.pstg&&(a+=\"&isctg=\"+t.pstg),fe=0,Ue&&Ue.getRsvStatus)try{a+=\"&rsv_stat=\"+Ue.getRsvStatus(t.env.p(\"wd\"))}catch(c){}if(Fe.done(function(){Ue.getStat(\"rsv_sug6\")&&(a+=\"&rsv_sug6=\"+Ue.getStat(\"rsv_sug6\"),bds.comm.seinfo&&(bds.comm.seinfo.rsv_sug6=Ue.getStat(\"rsv_sug6\"))),Ue.getStat(\"rsv_sug7\")&&(a+=\"&rsv_sug7=\"+Ue.getStat(\"rsv_sug7\")),Ue.getStat(\"rsv_sug9\")&&(a+=\"&rsv_sug9=\"+Ue.getStat(\"rsv_sug9\")),Ue.getStat(\"rsv_bp\")&&(a+=\"&rsv_bp=\"+Ue.getStat(\"rsv_bp\"))\n}),$.ajax({headers:i,url:a}).done(function(t){$('#form input[name=\"rqlang\"]').val(bds.comm.search_tool.actualResultLang||\"cn\"),$('#form input[name=\"rsv_bp\"]').val(1),$(t)}).fail(function(){}),bds.comm.seinfo){bds.comm.seinfo.rsv_prw=encodeURIComponent($e.val()),bds.comm.seinfo.rsv_pstg=n,bds.comm.seinfo.rsv_svoice=window.__supportvoice?\"1\":\"0\",t.cftime+=1,bds.comm.cftime=t.cftime+\"\";var d=t.env.p(\"rsv_bak\");d&&(bds.comm.seinfo.rsv_bak=d)}bds.comm.confirmQuery=bds.comm.query,bds.comm.confirmQid=bds.comm.qid,g(),ve=t.qid,Fe.done(function(){20==n?Ue.updateInitData():22==n||bds.comm.supportis||n>=0&&5>=n&&Ue.updateInitData(),Ue.clearStat()\n}),window.cfpromise.resolve()}}}function R(t){if(!ie.support())return!0;if(nn)return!1;if(nn=!0,$e.blur(),_(\"\"),$(this).attr(\"target\"))return!0;en=!0,tn=setTimeout(function(){en=!1},1e3);try{var e=$(\"#kw\").attr(\"placeholder\")||$(\".kw-placeholder\").text();if(!$.trim($e.val())&&!e)return ne.href=\"/\",!1;var n,o=new p,i=$(this).serializeArray();for(n=0;n0&&(n.pstg=e.pstg),n.force&&n.pdc.mark(\"st\"),n.base64=isbase64(n.pdc),Le.push(n.log),pe++,fe++,U(n)}}function L(){var t=[];return Ne&&(t=$.map(Ne.slice(0,2),function(t){return t.value})),t.join(\"\t\")}function j(t){e(),ne.replace(t.buildSyncSearchUrl())}function q(t,e){e?(ae=!0,rn&&(clearTimeout(rn),rn=!1),rn=setTimeout(function(){ae=ce\n},t)):(re=!0,on&&(clearTimeout(on),on=!1),on=setTimeout(function(){re=se},t))}function U(t){var e,s,a=t.env,c={};c.is_referer=ze&&ze.env?ze.env.buildSyncSearchUrl():Be.replace(/\\#.*$/,\"\"),$.extend(c,a.buildHeaders()),c.is_xhr=\"1\",window.bds&&bds.comm&&bds.comm.cur_query?a.p(\"bs\",bds.comm.cur_query):a.p(\"bs\",\"\"),window.bds&&bds.comm&&bds.comm.cur_disp_query&&(c.is_pbs=encodeURIComponent(bds.comm.cur_disp_query));var d=t.no_predict||!bds.comm.supportis?1:11,l=t.pstg;if(!(1==d&&1==l||11==d&&3==l||11==d&&6==l||1==d&&4==l)){var u=\"ie=utf-8\"+(bds.comm.newindex?\"&newi=1\":\"\")+(ge.sid?\"&sid=\"+encodeURIComponent(ge.sid):\"\")+(ge.tnp?\"&tnp=\"+encodeURIComponent(ge.tnp):\"\")+\"&mod=\"+(t.no_predict||!bds.comm.supportis?\"1\":\"11\")+(bds.comm.supportis?\"&isbd=1\":\"\")+\"&isid=\"+ve+\"&\"+a.buildQueryString()+\"&rsv_sid=\"+bds.comm.indexSid+\"&_ss=1&clist=\"+encodeURIComponent(ee.getCacheList())+\"&hsug=\"+encodeURIComponent(L())+(t.force?\"&f4s=1\":\"\")+\"&csor=\"+getCursortPosition($e.get(0));\nt.pstg&&(u+=\"&pstg=\"+t.pstg);var m=\"/s?\"+u;if(m+=\"&_cr1=\"+r(m),!t.no_predict)for(s=ee.find(function(t){return t.loaded||t.no_predict?void 0:!0}),e=0;e0))){if(t.force&&t.shouldShow){var p=!1,f=(new Date).getTime();if(s=ee.find(function(e){var n=a.equals(e.env);return e.loaded||e.no_predict||!n||e===t||(e.shouldShow=!1),!e.loaded&&e.no_predict&&e.force&&n&&e!==t&&(e.shouldShow=e.shouldShow||t.shouldShow,e.startTime&&f-e.startTime<2e3&&(p=!0),window.__sam_backup_request||(p=!0)),e.loaded||n?void e.pdc.mark(\"st\"):!0\n}),p)return;for(e=0;e\")>10)return void(t.force?(n(11),j(a)):ee.deleteCache(t));\nh(t,{ntime:(new Date).getTime()-t.startTime,res:1});var s,c=\"\",d=e.indexOf(c);if(-1!=d){s=$(e.substr(0,d)),t.html=e.substr(d+c.length),window.__dom_pre_parse&&\"1\"==s.find(\"#__need_parse_dom\").html()&&(t.html=$(t.html));try{var l=$.parseJSON(s.find(\"#img_list\").text());t.base64.loadImg(l.right,l.left),t.base64_loaded=!0}catch(u){}try{o(s.find(\"#limg_list\").text())}catch(u){}}else s=t.html=$(e);var m=parseInt(s.find(\"#__status\").eq(0).html()),p=parseInt(s.find(\"#__switchtime\").eq(0).html()),f=parseInt(s.find(\"#__redirect\").eq(0).html()),g={};\ntry{g=$.parseJSON(s.find(\"#__sugPreInfo:eq(0)\").html()||\"{}\")||{}}catch(u){}t.real_wd=s.find(\"#__real_wd\").eq(0).text(),t.real_wd_org=s.find(\"#__real_wd_org\").eq(0).text(),t.real_wd_nosynx=s.find(\"#__real_wd_nosynx\").eq(0).text(),t.env&&t.env.p(\"nojc\")&&t.real_wd_nosynx&&(t.real_wd=t.real_wd_nosynx);var b=!1;(a.p(\"wd\")==i($e.val())||t.force)&&t.shouldShow&&(b=!0),t.real_wd&&(t.prw=a.p(\"wd\"),a.p(\"wd\",t.real_wd));var v=s.find(\"#__queryId\").html(),w=s.find(\"#__querySign\").html();t.querySign=w,h(t,{stat:m?m:0}),bds.comm.isDebug&&$(\"#isDebugInfo\").html(s.find(\"#__isDebugInfo\").html()),v&&(t.qid=v);\nvar C=s.find(\"#__chk\").html();if(t.chk=C?C:0,!e||!v&&!p&&!f&&!m||!w&&t.force)return t.force?(a.p(\"__eis\",1),a.p(\"__eist\",e?e.length:0),a.p(\"real_wd\",t.real_wd),n(13),void j(a)):void ee.deleteCache(t);if(p>0&&q(1e3*p,!t.no_predict),-11==m){var S=ee.getCacheBySign(w);if(!S)return A({env:t.env.clone({wd:t.real_wd}),force:t.force,use_cache:!1,no_predict:!0}),void ee.deleteCache(t);S.force=t.force,y(),_(S.real_wd),k(S),ee.deleteCache(t),t=S,ze&&t.real_wd==ze.real_wd||(b=!0)}else{if(0>m){if(1==f&&t.force)return h(t,{redirect:1}),n(14),void j(a);\nif(x(),-12==m&&g&&g.wait_time>0){var I=t.env.clone();Qe=setTimeout(function(){A({env:I,force:!1,use_cache:!0,no_predict:!0,shouldShow:!1,pstg:6})},g.wait_time)}return void ee.deleteCache(t)}if(m>0)return void ee.deleteCache(t)}for(var D=ee.find(function(e){return!e.loaded&&e!==t&&e.no_predict&&a.equals(e.env)?(e.shouldShow&&(b=!0),e.force&&(t.force=!0,t.no_predict=!0),!0):void 0}),R=0;R\"}),g.parts(function(t,e){b(t,e,g)}),g.fail(function(e,o){t.force&&t.shouldShow&&\"abort\"!=o&&t.env&&(n(12),ne.replace(t.env.buildSyncSearchUrl()+\"&rsv_jmp=fail\")),ee.deleteCache(t)}),t.xhr=g,ee.addCache(t)}}}function O(){Le=[],pe=0,en=!1,clearTimeout(tn)}function E(){window.index_off&&window.index_off(),xe[0]!==ye[0]&&xe.val(\"\"),$e=ye,pageState=1,bds.comm.ishome=0,bds.comm.cur_query=bds.comm.query,Me=new p,ze={env:Me,real_wd:bds.comm.query,force:!0,confirm:!0},Fe.done(function(){return function(){Ee.start()\n}}()),$(window).trigger(\"index_off\"),bds.util.setContainerWidth(),m(function(){$(window).trigger(\"swap_dom_ready\")}),window.__lazy_foot_js?setTimeout(function(){C()},0):C()}function N(t){window.index_off&&window.index_off(),xe.get(0)!==ye.get(0)&&(xe.val(\"\"),ye.val(t.p(\"wd\"))),$e=ye,pageState=1,bds.comm.ishome=0,Fe.done(function(){Oe!==Ee&&(Oe.stop(),Ee.hide(),Ee.setKey(t.p(\"wd\")),Ee.start())}),bds.util.setContainerWidth(),$(window).trigger(\"index_off\",t)}function P(){an=!1,cn=!1,ln=[],clearTimeout(un),un=!1\n}function M(t){an||(an={x:t.pageX,y:t.pageY}),dn={x:t.pageX,y:t.pageY},cn||an.x==t.pageX||an.y==t.pageY||(cn=!0,ln=[an],z())}function z(){ln.push(dn);var t=ln.length;if(Math.pow(dn.x-an.x,2)+Math.pow(dn.y-an.y,2)>=Math.pow(me,2)||t*ue>=le){var e=Ue,n=bds.comm.supportis?1:2;if(n&&e&&e.data()&&e.data()[0]&&e.visible()){var o=(new p).clone({wd:e.data()[0].value});A({env:o,force:!1,no_predict:!0,use_cache:!0,shouldShow:!1,pstg:1}),n--}if(n&&e&&e.data()&&e.data()[1]&&e.visible()){var o=(new p).clone({wd:e.data()[1].value});\nA({env:o,force:!1,no_predict:!0,use_cache:!0,shouldShow:!1,pstg:1}),n--}if(!bds.comm.supportis&&n&&$.trim($e.val())&&(!ze||ze.env.p(\"wd\")!=$.trim($e.val()))){var o=(new p).clone({wd:$.trim($e.val())});A({env:o,force:!1,no_predict:!0,use_cache:!0,shouldShow:!1,pstg:1}),n--}}else un=setTimeout(function(){z()},ue)}document.write=document.writeln=function(){},bds&&bds.comm&&\"clearissw\"==bds.comm.query&&Cookie.clear(\"ISSW\"),function(){var t=$.Deferred();bds.comm.registerUnloadHandler=function(e){t.done(e)\n},bds.comm.resolveUnloadHandler=function(){t.resolve(),t=$.Deferred()}}(),window.b_rec=function(t){var e;if(t)e=navigator.userAgent;else try{e=window.external&&window.external.twGetRunPath?window.external.twGetRunPath():\"\"}catch(n){e=\"\"}return e=e.replace(/:/,\"~\").replace(/\\t/,\"`\")},window.scr_rec=function(){var t=\"\";try{t+=[document.body.clientWidth,document.body.clientHeight,window.screenTop,window.screenLeft,window.screen.height,window.screen.width].join(\"_\")}catch(e){}return t},window.reh_rec=function(){var t=[],e=[];\ntry{$(\"#content_left\").children(\".result,.result-op\").each(function(e,n){t.push($(n).height())})}catch(n){}try{$(\"#con-ar\").children(\".result,.result-op\").each(function(t,n){e.push($(n).height())})}catch(n){}return t.join(\"_\")+\"|\"+e.join(\"_\")},window.onerror=function(){window.console&&console.debug&&console.debug(arguments),bds.comm.jserror=Array.prototype.slice.call(arguments).join(\"\t\"),J(bds.comm.jserror)},window.hash=function(t,e){return t?t&&!e&&Me?Me.p(t):void(t&&e&&Me&&(Me.p(t,e),ne.href=Me.buildSearchUrl())):void 0\n};var B,H,F,W,G,Q,V=!1;!function(){var t=$.globalEval;$.globalEval=function(){var e=(new Date).getTime();try{t.apply($,arguments)}catch(n){}(new Date).getTime()-e>500}}(),bds.comm.isDebug&&($('').appendTo(\"head\"),$('
            ').appendTo(\"#wrapper\"),$(window).on(\"swap_end\",function(t,e){if(e){var n=$(\"#isDebugInfo\");\nn.size()||(n=$('
            ').appendTo(\"#debug\")),n.html(e.html.find(\"#__isDebugInfo\").html());var o=\"\";for(var i in e.log)e.log.hasOwnProperty(i)&&(o+=\"\");o+=\"
            \"+i+\"\"+encodeURIComponent(e.log[i])+\"
            \",$(\"#debug\").html(o)}}));var J=function(){var t;return function(e){bds.comm.isDebug&&alert(e),bds&&bds.comm&&bds.comm.js_error_monitor&&(t=new Image,t.src=bds.comm.js_error_monitor+\"?\"+$.param({url:ne.href,time:bds.comm.serverTime,explore:navigator.userAgent,info:e,info_type:1}))\n}}();window.setSugKey=function(t){$e&&t&&(Ee&&Ee.setKey?Ee.setKey(t):$e.val(t))},window.getCursortPosition=function(t){var e=0;try{if(document.selection){var n=document.selection.createRange();n.moveStart(\"character\",-t.value.length),e=n.text.length}else(t.selectionStart||\"0\"==t.selectionStart)&&(e=t.selectionStart)}catch(o){e=t.value.length}return e},bds.comm.flagTranslateResult&&($(\"#wrapper_wrapper\").delegate(\".result\",\"mouseenter\",function(){$(\".c-fanyi\",$(this)).show()}),$(\"#wrapper_wrapper\").delegate(\".result\",\"mouseleave\",function(){$(\".c-fanyi\",$(this)).hide()\n}),$(\"#wrapper_wrapper\").delegate(\".result .c-fanyi\",\"click\",function(){var t=$(this).closest(\".result\"),e=$(\"h3 a:first\",t),n=$(\".c-abstract:first\",t),o=$(\".c-fanyi-abstract\",t).val(0).html(),i=$(\".c-fanyi-title\",t).val(0).html();$(\".c-fanyi-abstract\",t).val(0).html(n.html()),$(\".c-fanyi-title\",t).val(0).html(e.html()),e.html(i),n.html(o)}));var X={use_cache_repeatedly:!0,index_form:\"#form\",kw:\"#kw\",result_form:\"#form\"};t&&$.extend(X,t);var K=15,Y=6e4,Z=window.__confirm_timeout?window.__confirm_timeout:1e4,te=bds.comm.supportis?4:10,ee=function(){function t(t){\"object\"==typeof t&&null!=t&&(t.xhr&&t.xhr.abort&&t.xhr.abort(),t.base64&&t.base64.destroy(),t.pdc&&t.pdc.destroy(),t.backspace_preload_timeout_id&&clearTimeout(t.backspace_preload_timeout_id),delete t.xhr,delete t.html)\n}var e=[];return{find:function(t){return $.grep(e,t)},getCacheList:function(){var t=$.map(e,function(t){return t&&(new Date).getTime()-t.startTime>Y?!1:t.querySign});return t=$.grep(t,function(t){return!!t}),t.join(\"\t\")},hasCache:function(t,n){function o(t){var o,i;return(i=t.p(\"wd\"))?($.grep(e,function(e){return n.loaded&&!e.loaded?!1:void(t.equals(e.real_wd?e.env.clone({wd:e.real_wd}):e.env)&&(o=e))}),o?o:null):!1}n||(n={});var i=o(t);return i&&(new Date).getTime()-i.startTime>Y&&(this.deleteCache(i),i=null),i\n},shouldShow:function(t){if(t.force)return!0;if(!t.shouldShow&&!t.force&&t.no_predict)return!1;var e=i($e.val());return!e||ze&&t.env.equals(ze.env)?!1:0==t.env.p(\"wd\").indexOf(e)?!0:0==t.real_wd.indexOf(e)?!0:!1},getCacheBySign:function(t){var n=!1;return $.each(e,function(e,o){n||!o.loaded||o.querySign!=t||o.env.p(\"pn\")&&0!=o.env.p(\"pn\")||(n=o)}),n},addCache:function(n){if(-1==l(e,n)&&!n.env.p(\"srcid\")&&!n.env.p(\"cq\"))for(e.unshift(n);e.length>K;)t(e.pop())},deleteCache:function(n){t(n),e=$.grep(e,function(t){return t!==n\n})},deleteCacheByEnv:function(){e=$.grep(e,function(e){var n=e.env.equals(e.env);return n&&t(e),!n})},clearCache:function(){e=$.grep(e,function(e,n){return n!==ze?(t(n),!1):!0}),e=[]}}}(),ne=document.location,oe=ne.protocol+\"//\"+ne.host+ne.pathname+ne.search,ie={onurlchange:function(){}};!function(){function t(){var t=ne.href.match(/#+(.*)$/);return t?t[1].replace(/\\+/g,\"%2B\"):\"\"}function n(){var t=ne.href.match(/\\?([^#]+)/);return t?t[1].replace(/\\?/g,\"&\"):\"\"}function o(t,e){var n=\"\";if(\"1\"===window._thirdLinkSpeed&&(n=\"&qid=\"+bds.comm.queryId),window._bdlksmp>0&&(n=\"&bdlksmp=\"+window._bdlksmp),\"1\"===window._eclipse&&/^\\/link\\?/.test(e))return\"wd=&eqid=\"+bds.comm.eqid+i([\"pn\",\"rn\",\"ie\"],t)+n;\nvar o=new p(s(t));return o.p(\"wd\")?o.buildQueryString().replace(/&rsv[^=]*=[^&]*/g,\"\").replace(/[^a-zA-Z0-9]url=/g,\"\")+n:void 0}function i(t,e){var n=\"\",o=s(e);for(var i in t)o.hasOwnProperty(i)&&(n+=\"&\"+encodeURIComponent(o[i]));return n}function r(t){var e=new p(s(ie.getQueryString()),!0);e.hashCode()?0==pageState&&N(e):0!=pageState?ne.replace(ne.pathname+ne.search.replace(/([?&])isidx=[^&*]&?/,\"$1\")):ne.search!=ne.search.replace(/([?&])isidx=[^&*]&?/,\"$1\")&&ne.replace(ne.pathname+ne.search.replace(/([?&])isidx=[^&*]&?/,\"$1\")),ie.onurlchange(e,t)\n}var a=\"onhashchange\"in window,c=\"onpopstate\"in window;window.__disable_popstate&&(c=!1);var l=ne.pathname.length>1?ne.pathname:\"/s\";(navigator.userAgent.match(/MSIE (6|7)/)||document.documentMode<8)&&(a=!1,c=!1),X.disable_popstate&&(c=!1),a||c||e();var u=function(){var e=\"\";return function(n,o){o&&(e=o.buildQueryString(),ne.hash=e),(n||e!=t())&&(r(n),e=t())}}();ie.setUrl=function(t){c?m(!1,t):a&&u(!1,t)};var m=function(){var t=n();return function(e,o){o&&(t=o.buildQueryString(),window.history.pushState(o,\"\",o.buildSyncSearchUrl())),e||t!=n()?(r(e),t=n()):d()\n}}();ie.getQueryString=function(){return c?n():/wd=/.test(t())?t():n()},ie.init=function(){c?!function(){var e=ne.href,n=!1;$(window).on(\"swap_begin\",function(){n=!0}),$(window).bind(\"popstate\",function(){(n||!e||e!=ne.href)&&m(),e=null}),$(window).bind(\"hashchange\",function(){var e=t();/wd=/.test(e)&&ne.replace(l+\"?\"+e)})}():a&&($(window).bind(\"hashchange\",function(){u()}),$(function(){u()}));var e=t();/wd=/.test(e)&&(c?(window.history.replaceState(null,\"\",l+\"?\"+e),m()):a?u():ne.replace(l+\"?\"+e))\n},ie.support=function(){return(c||a)&&1!=Cookie.get(\"ISSW\")&&!window.__disable_preload},ie.getLinkParams=function(e){if(!c){var i=t();return\"\"==i&&(i=n()),o(i,e)}if(\"https:\"===ne.protocol||\"1\"===window._eclipse){var r=n();return r||(r=t()),o(r,e)}return!1},ie.clickResultLink=function(t,e,n){return c?(window.history.pushState(null,\"\",new p(n,!0).buildSyncSearchUrl()),m(),!1):void t.attr(\"href\",e.buildSearchUrl(n)).attr(\"target\",\"_self\")},ie.submit=function(t,e){setTimeout(function(){c?(window.history.pushState(t,\"\",t.buildSyncSearchUrl()),m(e)):a?(ne.href=t.buildSearchUrl(),u(e)):ne.href=t.buildSyncSearchUrl()\n},0)},window.changeUrl=function(t){var e=new p(s(t));ie.submit(e,!0)}}(),ie.onurlchange=function(t,e){Fe.done(function(){Ue.setKey(t.p(\"wd\")),Ue.hide()}),Te=(new Date).getTime(),$e.val(t.p(\"wd\")),_(\"\");var n=!0;e&&ze&&ze.env&&ze.env.equals(t)&&(n=!1),A({env:t,force:!0,use_cache:n,no_predict:!0})};var re=X.disable?X.disable:!1;window.__disable_preload&&(re=!0);var se=re,ae=!1;window.__disable_predict&&(ae=!0);var ce=ae,de=bds.comm.switchAddMask?bds.comm.switchAddMask:!1;de||(de=window.__switch_add_mask?window.__switch_add_mask:!1),de=!0;\nvar le=(bds.comm.preloadMouseMoveDistance?bds.comm.preloadMouseMoveDistance:5,300),ue=50,me=80,pe=0,fe=0,he=function(){},ge=s(ne.search);ie.support()||(!function(){function t(){ne.hash&&ne.hash.match(/[^a-zA-Z0-9](wd|word)=/)&&ne.replace(\"//www.baidu.com/s?\"+ne.href.match(/#(.*)$/)[1])}ne.hash.match(/[^a-zA-Z0-9](wd|word)=/)?(ne.replace(\"//www.baidu.com/s?\"+ne.href.match(/#(.*)$/)[1]),function(){throw new Error(\"redirect to sync\")}()):(document.getElementById(\"wrapper\").style.display=\"block\",\"onhashchange\"in window?window.onhashchange=t:setInterval(t,200))\n}(),se=re=!0);for(var be=Cookie.get(\"BAIDUID\",\"nobdid\").split(\":\")[0],ve=be.substr(0,6)+be.substr(be.length-5,5)+parseInt(99999*Math.random());ve.length<16;)ve+=\"0\";ve=encodeURIComponent(ve);var we,_e,ye,xe,$e,ke;ye=xe=$e=$(X.kw);var Te,Ce,Se,Ie,De,Re,Ae=$(\"#wrapper_wrapper\"),Le=[];window.__async_strategy,we=$(X.index_form),\"_blank\"==we.attr(\"target\")&&(window.__disable_index_predict=!0,se=re=!0);var je=we.serializeArray();_e=$(X.result_form);var qe=(new Date).getTime();window.pageState=0;var Ue,Oe,Ee,Ne,Pe,Me=null,ze=null,Be=document.location.href,He=!1,Fe=$.ajax({dataType:\"script\",cache:!0,url:1===bds.comm.logFlagSug?\"https://ss1.bdstatic.com/5eN1bjq8AAUYm2zgoY3K/r/www/cache/static/protocol/https/sug/js/bdsug_async_sam_sug_a97d823.js\":1===bds.comm.samSugApi?\"https://ss1.bdstatic.com/5eN1bjq8AAUYm2zgoY3K/r/www/cache/static/protocol/https/sug/js/bdsug_async_sam_api_437177b.js\":\"https://ss1.bdstatic.com/5eN1bjq8AAUYm2zgoY3K/r/www/cache/static/protocol/https/sug/js/bdsug_async_467a84d.js\"}),We=\"focus\";\n!function(){window.PDC_ASYNC={setParam:function(t,e){ze&&ze.pdc&&ze.pdc.setParam(t,e)},setLinkData:function(e,n){t[e]=n},sendLinkLog:function(){var e=\"//www.baidu.com/nocache/fesplg/s.gif?log_type=linksp\",n=\"\";n+=\"&link_t=\"+((new Date).getTime()-t.click_t)+\"&query=\"+bds.comm.queryEnc+\"&qid=\"+bds.comm.queryId+\"&linkpreload=\"+t.linkpreload;var o=Math.random();if(.01>o){var i=new Image,r=\"LINK_IMG_\"+new Date;window[r]=i,i.onload=function(){delete window[r]},i.src=e+n}}};var t=(window.PDC_ASYNC.log={},{});\nwindow.bds&&(bds.pdc=window.PDC_ASYNC)}();var Ge=function(t){function e(){if(c=1,n(),1==c){var e=new Date,i=!1,r=function(){var n=new Date,l=n-e-t,u=o();0>l&&(l=0),u||i||(s[a]=l,a=(a+1)%20),i=u,1==c&&(e=n,d=setTimeout(r,t))};d=setTimeout(r,t)}}function n(){window.clearTimeout(d)}function o(){var t=[\"webkit\",\"moz\",\"ms\",\"o\"];if(\"hidden\"in document)return document.hidden;for(var e=0;e1e3||e>150?(c=a?parseInt(a):0,c>=s-o&&s>c&&(l=1,Cookie.set(\"ispeed\",2,document.domain,\"/\",d)),i>c&&(c=c+o>i?i:c+o,Cookie.set(\"ispeed_lsm\",c,document.domain,\"/\",d))):(a&&parseInt(a)>s&&(r=5),a&&parseInt(a)>=r&&(parseInt(a)<=s+r&&parseInt(a)>s&&(l=2,Cookie.set(\"ispeed\",1,document.domain,\"/\",d)),c=parseInt(a)-r,Cookie.set(\"ispeed_lsm\",c,document.domain,\"/\",d))),l}catch(p){}return 0}function r(){return Cookie.get(\"ispeed\")&&1==UPS.get(\"isSwitch\")&&2==parseInt(Cookie.get(\"ispeed\"))?!0:!1\n}var s=[],a=0,c=0,d=!1,t=t||250;return{start:e,stop:function(){window.clearTimeout(d),c=0},getData:function(){return s.slice(a).concat(s.slice(0,a))},isSlow:r,monitor:i}}();bds.comm.supportis&&1==UPS.get(\"isSwitch\")&&Ge.start();var Qe;Fe.done(function(){Ue=Oe=Ee=bds.se.sug({maxNum:10,withoutRich:bds.comm.supportis,withoutZhixin:!0,form:_e[0],ipt:$e[0],cbname:\"bdsugresultcb\",submission:R}),$e.keydown(function(t){var e=getCursortPosition(this);(9==t.keyCode||39==t.keyCode&&e==this.value.length)&&bds.comm.supportis&&ze&&ke.text()&&(t.preventDefault(),ze.real_wd!=this.value&&($e.val(ze.real_wd),Ue.check()),Ue.show(),_(\"\"),D(ze,He,22)({tipConfirm:!0}))\n}),Ue.on(\"start\",function(){We=\"focus\"}),$(window).on(\"blur\",function(){Ue.hide()}),$(document).on(\"click\",function(t){return 2==t.isTrigger||3==t.isTrigger?!1:void Ue.hide()});var t,e;Ue.on(\"inputChange\",function(n,o){if(!(window.__sam_his_nopredict&&window.bds&&bds.comm&&0==bds.comm.supportis)){if(t||(t=$e.val()),_(\"\"),P(),clearTimeout(Qe),clearTimeout(sn),0==pageState&&window.__disable_index_predict||re||ae||Ge.isSlow())return void Ue.setMaxNum(10);Ue.setMaxNum(te);var i=new p({pn:\"\",wd:o.value});\nif(bds&&bds.comm&&bds.comm.logFlagSug&&1===bds.comm.logFlagSug&&i.p(\"rsv_slog\",\"ipt_change\"),0==pageState&&bds.comm.supportis&&$.trim($e.val())){N(i);var r=$(\"
            请按“回车”键发起检索
            \").insertBefore(\"#head\");$(window).one(\"swap_begin\",function(){r.remove()})}if(Pe)return void(Pe=!1);if(window.__restart_confirm_timeout&&I(),We=\"input\",Te=(new Date).getTime(),e&&(clearTimeout(e),e=!1),\"\"==$.trim(o.value))return void x();if(Ne=o.checkStore(),!/^[a-zA-Z0-9~!@#$%^&*()_+=-]$/.test(o.value)){var s=$e.val(),a=o.imt.getLog();\na.length>0&&a[a.length-1].type.indexOf(\"link\")>-1&&i.p(\"_sglink\",\"1\");var c=o.imt.diffLog();c&&c.length>1&&(c=c.slice(-15).join(\".\"),i.h({is_params:{imes:encodeURIComponent(c)}})),!window.__disable_is2&&t.length>s.length&&0===t.indexOf(s)?e=setTimeout(function(){A({env:i,use_cache:!0,force:!1,pstg:5,shouldShow:bds.comm.supportis}),e=!1},250):A({env:i,use_cache:!0,force:!1,pstg:5,shouldShow:bds.comm.supportis})}t=s}}),Ue.on(\"selectSug\",function(t,e,n,o){if(_(\"\"),clearTimeout(Qe),!(0==pageState&&window.__disable_index_predict||re||ae||Ge.isSlow()))if(-1==n){ze&&Ue.setVisibleSug(ze.real_wd);\nvar i=new p({pn:\"\",wd:e.value});bds&&bds.comm&&bds.comm.logFlagSug&&1===bds.comm.logFlagSug&&i.p(\"rsv_slog\",\"sug_select\"),A({env:i,use_cache:!0,force:!1,shouldShow:bds.comm.supportis,pstg:3})}else{Ue.setVisibleSug(),_(\"\");var i=new p({pn:\"\",wd:o});bds&&bds.comm&&bds.comm.logFlagSug&&1===bds.comm.logFlagSug&&i.p(\"rsv_slog\",\"sug_select\");var r=e.stopRefresh?!1:bds.comm.supportis;A({env:i,force:!1,use_cache:!0,no_predict:!0,shouldShow:r,pstg:3})}}),Ue.on(\"render\",function(){ze&&Ue.setVisibleSug(ze.real_wd)\n}),Ue.on(\"dataReady\",function(t,e){var n=e&&e.queryValue&&e.dataCached&&e.dataCached[e.queryValue];if(n&&n.gl)for(var o in n.gl)if(1*n.gl[o]>0){var i=new p({pn:\"\",wd:n.s[o]});A({env:i,force:!1,use_cache:!0,no_predict:!0,shouldShow:!1,pstg:7})}}),0==pageState&&Ue.start()});var Ve,Je,Xe,Ke;!function(){var t,e=-1,n=0,o=-1,i=-1,s=-1,a=-1,c=0;Ve=function(e){if(e){s=e.pageX,a=e.pageY,t=e.target;var r=$(e.target);\"submit\"==r.attr(\"type\")&&(c=1);var d=r.offset();o=s-d.left,i=a-d.top,n=(new Date).getTime()\n}},Je=function(o){o&&o.target==t&&(e=(new Date).getTime()-n)},Ke=function(t){bds&&bds.comm&&bds.comm.query&&(t=bds.comm.query);var n=c+\".\"+e+\".\"+o+\".\"+i+\".\"+s+\".\"+a;return n=r(n+t)+\".\"+n},Xe=function(){e=-1,n=0,o=-1,i=-1,s=-1,a=-1,c=0},$(window).on(\"confirm\",function(){setTimeout(Xe,0)})}(),$(function(){$(\"#head\").delegate(\".index_tab_top>a,.index_tab_bottom>a,#u1>a,#u>a\",\"mousedown\",function(){return $(this).attr(\"name\")?ns_c({fm:\"behs\",tab:$(this).attr(\"name\"),query:\"\",un:encodeURIComponent(bds.comm.user||\"\")}):void 0\n})}),$(document).delegate(\"a\",\"mousedown\",function(){D(ze,He,22)()}),v({prefix:\"http://www.baidu.com\",regex:/^\\/*(link)\\?(.*)$/}),v({prefix:\"//www.baidu.com\",regex:/^\\/*(link)\\?(.*)$/}),v({prefix:\"http://www.baidu.com\",convertTable:{\"baidu.php\":\"baidu.php\",\"aladdin.php\":\"aladdin.php\",\"siva.php\":\"siva.php\",\"adrc.php\":\"adrc.php\",\"zhixin.php\":\"zhixin.php\"},regex:/^\\/*(baidu\\.php|aladdin\\.php|siva\\.php|adrc\\.php|zhixin\\.php)\\?(.*)$/}),\"www.baidu.com\"!=ne.host&&v({prefix:\"\",convertTable:{\"baidu.php\":\"baidu.php\",\"aladdin.php\":\"aladdin.php\",\"siva.php\":\"siva.php\",\"adrc.php\":\"adrc.php\",\"zhixin.php\":\"zhixin.php\"},regex:/^\\/*(baidu\\.php|aladdin\\.php|siva\\.php|adrc\\.php|zhixin\\.php)\\?(.*)$/}),v({prefix:\"http://bzclk.baidu.com\",regex:/^\\/*(adrc\\.php)\\?(.*)$/}),v({prefix:\"https://sp0.baidu.com/9q9JcDHa2gU2pMbgoY3K\",regex:/^\\/*(adrc\\.php)\\?(.*)$/}),\"https:\"==ne.protocol&&bds.comm.ishome&&!/Chrome/.test(navigator.userAgent)&&$(document).delegate(\"a\",\"mousedown\",function(){var t=$(this),e=t.attr(\"href\"),n={\"http://v.baidu.com\":\"/?fr=bd\"};\nn&&n.hasOwnProperty(e)&&t.attr(\"href\",e+n[e])}),$(document).delegate(\"a\",\"mousedown\",function(){var t=$(this),e=t.attr(\"href\"),n=new Image,o=\"//www.baidu.com/nocache/fesplg/s.gif?log_type=hm\",i=Math.random();if(.01>i&&!/www\\.baidu\\.com\\//.test(e)&&/^http/.test(e)){var r=o+\"&c_url=\"+encodeURIComponent(e),n=new Image,s=\"_LOG_\"+(new Date).getTime();n.onload=function(){delete window[s]},window[s]=n,n.src=r}}),ie.support()&&$(document).delegate(\"a\",\"click\",function(){var t=ne.protocol+\"//\"+ne.host;return function(){var e=$(this);\nif(!e.attr(\"target\")||\"_self\"==e.attr(\"target\")){var n=$.trim(e.attr(\"href\"));if(n&&0==n.indexOf(t)&&(n=n.substring(t.length)),n&&(matched=n.match(/^\\/*s\\?(.*)/)),n&&matched){var o=s(matched[0]);if(o.pn||(o.pn=\"\"),l([\"baidurt\",\"baiduwb\",\"baidufir\",\"SE_baiduxueshu_c1gjeupa\"],o.tn)<0){var i=e.parents(\"#con-at\");i.size()>0&&a({top:i.offset().top+i.height()});var r=ie.clickResultLink(e,Me,o)}return r}}}}()),$(document).delegate(\"a\",\"mousedown\",function(t){Ve(t)}),$(document).delegate(\"a\",\"mouseup\",function(t){Je(t)\n}),$(document).delegate(\"#su,#su1\",\"mouseup\",function(t){Je(t)}),$(document).delegate(\"#su,#su1\",\"mousedown\",function(t){Ve(t)}),!function(){var t;window._bdlkc>=1&&($(document).delegate(\".c-container\",\"mouseenter\",function(){return function(){var e=$(this),n=300;2==window._bdlkc&&(n=100),t=setTimeout(function(){var t=e.find(\".t>a\"),n=w(t,{prefix:\"http://www.baidu.com\",regex:/^\\/*(link)\\?(.*)$/}),o=e.attr(\"mu\")||e.find(\".f13 .g\").text(),i=/^(http[s]?:\\/\\/)?([^\\/]+)(.*)/,r=o.match(i);n&&n.match(ne.protocol)&&/www\\.baidu\\.com\\/link/.test(n)&&!/bdlkc=1/.test(n)&&(r[2]&&(o=\"http://\"+r[2],e.append('')),$.ajax({url:n+\"&bdlkc=1\",type:\"GET\",contentType:\"text/html\",success:function(){t.attr(\"linkpreload\",\"1\")\n}}),t.attr(\"href\",n+\"&bdlkc=1\"))},300)}}()),$(document).delegate(\".c-container\",\"mouseleave\",function(){return function(){clearTimeout(t)}}()))}();var Ye=$(\"body\");document.title,!function(t){var e;t.fn.textWidth=function(){e||(e=t('
            ').appendTo(\"body\").find(\"span\")),e.html(escapeHTML(t(this).val()));var n=e.width();return n}}(jQuery);\nvar Ze=!1;$(window).on(\"swap_dom_ready\",function(t,e){var n=\"\";!e||!e.real_wd||e.no_predict&&6!=e.pstg||(n=e.real_wd),_(n),k(e)}),$(window).on(\"swap_end\",function(t,e){e&&(window.cfpromise=new $.Deferred,De&&(clearTimeout(De),De=!1,Re=null),e.confirm=!1,e.force?D(e,He,20)():(Re=D(e,He,21),De=setTimeout(Re,Z)))}),$(window).on(\"indexOff\",function(t,e){Fe.done(function(){_(e.p(\"wd\"))})}),ie.support()&&\"_blank\"!=we.attr(\"target\")&&Fe.done(function(){Ue.setMaxNum(te)});var tn,en=!1,nn=!1;_e.mousedown(function(){nn=!1\n}).delegate(\"a,input\",\"focus\",function(){nn=!1});var on,rn,sn;$(window).on(\"swap_end\",function(t,e){e||(bds.comm.confirmQuery=bds.comm.query,bds.comm.confirmQid=bds.comm.qid,g()),sn=setTimeout(function(){0==$(\"#content_left,.result,.content_none\").length&&n(15,86400)},1e4)}),ie.init(),$(function(){var t=$(\"script\").last(),e=$(\"head\");he=function(){t.nextAll().not(\"[data-for]\").not(\"#passport-login-pop\").remove(),e.find(\"*\").not(\"[data-for]\").not(\"meta\").not(\"title\").not(\"script[async]\").not('link[href*=\"passport\"]').not('link[rel*=\"icon\"]').not('link[rel*=\"shortcut icon\"]').remove()\n}}),bds.comm.resultPage&&E(),Ye.delegate(\"#s_tab a\",\"mousedown\",function(){setHeadUrl(this)}).delegate(\"#s_tab a\",\"focusin\",function(){setHeadUrl(this)}),Ae.delegate(\"#page strong+a,#page a.n\",\"mouseover\",function(){A({env:new p(s($(this).attr(\"href\"))),force:!1,use_cache:!0,no_predict:!0,shouldShow:!1,pstg:4})});var an,cn,dn,ln,un;Fe.done(function(){$(document).mousemove(M)}),$(\"#u .back_org\").click(function(){var t=new Date;t.setTime((new Date).getTime()+110376e7),Cookie.set(\"ORIGIN\",2,document.domain,\"/\",t),Me?ne.replace(Me.buildSyncSearchUrl({_r:Math.random()})):ne.href=\"/\"\n}),$(window).scroll(function(){var t,e=$(\"#head\"),n=$(window),o=40,i=e.offset().top,r=function(){t&&(clearTimeout(t),t=!1),t=setTimeout(function(){var r=n.scrollTop();r>o+i?t=setTimeout(function(){e.addClass(\"s_down\"),Fe.done(function(){Ee.hide()})},0):o+i>=r&&(t=setTimeout(function(){e.removeClass(\"s_down\")},0))},50)};return r(),r}()),$e.bind(\"paste\",function(){if(!(window.__disable_index_predict&&0==pageState||re||ae)){var t=this,e=this.value;Pe=!0,setTimeout(function(){t.value&&t.value!=e&&A({env:(new p).clone({wd:$.trim(t.value)}),force:!1,use_cache:!0,no_predict:!0,shouldShow:bds.comm.supportis,pstg:2})\n},0)}})}function addEV(t,e,n){window.attachEvent?t.attachEvent(\"on\"+e,n):window.addEventListener&&t.addEventListener(e,n,!1)}function user_c(t){var e=\"\",n=\"\",o=\"\",i=\"\",r=encodeURIComponent(window.document.location.href),s=window[\"BD_PS_C\"+(new Date).getTime()]=new Image,a=bds&&bds.util&&bds.util.domain?bds.util.domain.get(\"http://nsclick.baidu.com\"):\"http://nsclick.baidu.com\";for(v in t){switch(v){case\"title\":o=encodeURIComponent(t[v].replace(/<[^<>]+>/g,\"\"));break;case\"url\":o=encodeURIComponent(t[v]);\nbreak;default:o=t[v]}e+=v+\"=\"+o+\"&\"}return i=\"&mu=\"+r,s.src=a+\"/v.gif?pid=201&pj=psuser&\"+e+\"path=\"+r+\"&wd=\"+n+\"&t=\"+(new Date).getTime(),!0}function initPassV3(){var t=bds.comm.passnew?3:2;bds.se.passv3=passport.pop.init({apiOpt:{loginType:1,product:\"mn\",u:window.document.location.href,safeFlag:0,qrcode:t,staticPage:location.protocol+\"//www.baidu.com/cache/user/html/v3Jump.html\"},cache:!1,tangram:!0,authsite:[\"qzone\",\"tsina\"],authsiteCfg:{act:\"implicit\",display:\"popup\",jumpUrl:location.protocol+\"//www.baidu.com/cache/user/html/xd.html\",onBindSuccess:function(t,e){var n=decodeURIComponent(e.passport_uname||e.displayname);\nreturn bds.se.login.success(n),!1}},onLoginSuccess:function(t){t.returnValue=!1;var e=t.rsp.data.userName||t.rsp.data.mail||t.rsp.data.phoneNumber;bds.se.login.success(e)},onSubmitStart:function(){},onSubmitedErr:function(){},onSystemErr:function(){},onShow:function(){},onHide:function(){bds.se.login.setSubpro(\"\"),bds.se.login.setMakeText(\"\")},onDestroy:function(){}})}function isp_hijack(t){var e,n,o,i=document.getElementById(\"wrapper\"),r=!1;bds.comm.query||(r=!0),1==t.stat&&(e=document.createElement(\"div\"),e.innerHTML='
            百度提示您:
            我们发现当前您可能受到异常广告弹窗的影响,通常这是受第三方恶意劫持导致。使用 防恶意广告专版杀毒软件,可有效改善您的上网体验,免受恶意广告的困扰。
            ',r?i.insertBefore(e,i.children[0]):(i.style.position=\"relative\",document.getElementById(\"u\").style.top=0,e.style.margin=\"-6px 0 8px 0\",document.body.insertBefore(e,i)),n=document.getElementById(\"isp-close-btn\"),o=n.parentNode.getElementsByTagName(\"a\")[0],n.onclick=function(){r?i.removeChild(e):(document.body.removeChild(e),i.style.position=\"\",document.getElementById(\"u\").style.top=\"4px\")\n},n.onmousedown=function(){ns_c({fm:\"behs\",tab:\"tj_notice\",cont:\"jcbro\",action:\"close\",area:\"topbar\"})},o.onmousedown=function(){ns_c({fm:\"behs\",tab:\"tj_notice\",cont:\"jcbro\",action:\"click\",area:\"topbar\"})},ns_c({fm:\"behs\",tab:\"tj_notice\",cont:\"jcbro\",action:\"show\",area:\"topbar\"}))}function isbase64(t){function e(){p={left:$.Deferred(),right:$.Deferred()}}function n(t,e){g++;var t=t||[],e=e||[];if(t=$.grep(t,function(t){return f.right.hasOwnProperty(t)?!1:(f.right[t]=!1,!0)}),e=$.grep(e,function(t){return f.left.hasOwnProperty(t)?!1:(f.left[t]=!1,!0)\n}),2==c.b64Exp&&e.length>0&&(h=!0,r(e,\"left\",\"reql\")),t.length>0)if(t.length>12){var n=Math.round(t.length/2),o=[],i=[];$.each(t,function(t,e){n>t?o.push(e):i.push(e)}),r(o,\"right\",\"reqr2\"),r(i,\"right\",\"reqr1\")}else r(t,\"right\",\"reqr\")}function o(t){for(var e=t,n=0;__callback_names.hasOwnProperty(t)||window[t];)t=e+\"_\"+n,n++;return __callback_names[t]=1,t}function i(t){if(\"string\"==typeof t){var e,n=0,o=0;for(e=0;e9?t:\"0\"+t};return(\"number\"==typeof t||\"string\"==typeof t)&&(t=new Date(t)),[t.getFullYear(),n(t.getMonth()+1),n(t.getDate())].join(e||\"\")}function baseChangeUrl(t){bds.comm.search_tool.st&&bds.comm.search_tool.et&&bds.comm.search_tool.stftype&&t.indexOf(\"&gpc=\")<0&&(t+=\"&gpc=\"+encodeURIComponent(\"stf=\"+bds.comm.search_tool.st+\",\"+bds.comm.search_tool.et+\"|stftype=\"+bds.comm.search_tool.stftype)),bds.comm.search_tool.si&&t.indexOf(\"&si=\")<0&&(t+=\"&si=\"+encodeURIComponent(bds.comm.search_tool.si)+\"&ct=2097152\"),bds.comm.search_tool.sl_lang&&t.indexOf(\"&sl_lang=\")<0&&(t+=\"&rsv_srlang=\"+encodeURIComponent(bds.comm.search_tool.sl_lang),t+=\"&sl_lang=\"+encodeURIComponent(bds.comm.search_tool.sl_lang),t+=\"&rsv_rq=\"+encodeURIComponent(bds.comm.search_tool.sl_lang)),changeUrl(t)\n}function langChangeUrl(t,e,n){ns_c({fm:\"advTool\",qid:bds.comm.qid,title:encodeURI(n),rsv_advTool_lang:e}),baseChangeUrl(\"wd=\"+encodeURIComponent($(\"#kw\").val())+\"&\"+t+\"=\"+encodeURIComponent(e)+\"&rsv_srlang=\"+encodeURIComponent(e)+\"&rsv_rq=\"+encodeURIComponent(e))}function advChangeUrl(t,e,n,o){if(-1!=e.indexOf(\"=\"))var i=1;else var i=0;ns_c({fm:\"advTool\",qid:bds.comm.qid,title:encodeURI(n),rsv_advTool_time:o,rsv_advTool_stet:e.substr(4).replace(\",\",\"_\")}),baseChangeUrl(\"wd=\"+encodeURIComponent($(\"#kw\").val())+\"&\"+t+\"=\"+encodeURIComponent(e)+\"&tfflag=\"+i)\n}function fileChangeUrl(t,e,n){ns_c({fm:\"advTool\",qid:bds.comm.qid,title:encodeURI(e),rsv_advTool_ft:n}),baseChangeUrl(\"wd=\"+encodeURIComponent(queryReplace(\"filetype\",t)))}function queryReplace(t,e){if(!t||\"filetype\"!=t&&\"site\"!=t)return o;var n=new RegExp(\"(\"+t+\"):[^\\\\s]*[ ]?\"),o=$(\"#kw\").val();return\" \"==e||null==e?o.replace(n,\"\"):o.match(n)?o.replace(n,\"$1:\"+e+\" \"):t+\":\"+e+\" \"+o}function extChangeUrl(t){t?(ns_c({fm:\"advTool\",qid:bds.comm.qid,title:encodeURI(\"精确匹配\"),rsv_advTool_ext:1}),baseChangeUrl('wd=\"'+encodeURIComponent($(\"#kw\").val())+'\"')):(ns_c({fm:\"advTool\",qid:bds.comm.qid,title:encodeURI(\"智能匹配\"),rsv_advTool_ext:0}),baseChangeUrl(\"wd=\"+encodeURIComponent($(\"#kw\").val().replace(/^\\\"(.*)\\\"$/,\"$1\"))))\n}!function(){function getUA(){var t,e={},n=navigator.userAgent.toLowerCase();return e.mac=navigator.platform.toUpperCase().indexOf(\"MAC\")>=0,(t=n.match(/rv:([\\d.]+)\\) like gecko/))?e.ie=t[1]:(t=n.match(/(msie\\s|trident.*rv:)([\\w.]+)/))?e.ie=t[2]:(t=n.match(/firefox\\/([\\d.]+)/))?e.firefox=t[1]:(t=n.match(/chrome\\/([\\d.]+)/))?e.chrome=t[1]:(t=n.match(/opera.([\\d.]+)/))?e.opera=t[1]:(t=n.match(/version\\/([\\d.]+).*safari/))?e.safari=t[1]:0,e}function getDefaultQueryHis(){try{return JSON.parse(localStorage.getItem(\"index_ls_default_query\"))\n}catch(t){return{}}}function detectPlaceholder(t){var e=\"[object OperaMini]\"===Object.prototype.toString.call(window.operamini);return t.ie?!1:\"placeholder\"in document.createElement(\"input\")&&!e}function createPlaceHolder(t,e,n){if(e)t.attr(\"placeholder\",n);else{var o=\"
            \"+n+\"
            \";t.before(o),$(\".kw-placeholder\").on(\"click\",function(e){t.focus(),e.target=t.get(0),t.trigger(e)}),$(document).ready(function(){$(\".kw-placeholder\").toggleClass(\"placeholders-hidden\",t.val().length>0)\n}),t.on(\"keydown keyup cut paste setValue input\",checkInputValue)}}function checkInputValue(){var t=$input.val();setTimeout(function(){var e=$input.val();(e!==t||e.length>0)&&$(\".kw-placeholder\").toggleClass(\"placeholders-hidden\",e.length>0)},0)}function removePlaceHolder(t,e){e?t.removeAttr(\"placeholder\"):$(\".kw-placeholder\").remove()}function testLocalStorage(){var t=\"test\";try{return localStorage.setItem(t,t),localStorage.removeItem(t),!0}catch(e){return!1}}function getShowCount(t,e){var n=0;return e&&e.query&&e.query===t&&e.count&&(n=e.count),n\n}function recordDefaultQuery(t,e){var n={query:t,time:(new Date).getTime(),count:1};e&&e.query&&t===e.query&&e.count&&(n.count=e.count+1),setTimeout(function(){try{localStorage.removeItem(\"index_ls_default_query\"),localStorage.setItem(\"index_ls_default_query\",JSON.stringify(n))}catch(t){return!1}},0)}function jsonPolyfill(){var json={parse:function(sJSON){return eval(\"(\"+sJSON+\")\")},stringify:function(){var t=Object.prototype.toString,e=Object.prototype.hasOwnProperty,n=Array.isArray||function(e){return\"[object Array]\"===t.call(e)\n},o={'\"':'\\\\\"',\"\\\\\":\"\\\\\\\\\",\"\\b\":\"\\\\b\",\"\\f\":\"\\\\f\",\"\\n\":\"\\\\n\",\"\\r\":\"\\\\r\",\"\t\":\"\\\\t\"},i=function(t){return o[t]||\"\\\\u\"+(t.charCodeAt(0)+65536).toString(16).substr(1)},r=/[\\\\\"\\u0000-\\u001F\\u2028\\u2029]/g;return function s(o){if(null==o)return\"null\";if(\"number\"==typeof o)return isFinite(o)?o.toString():\"null\";if(\"boolean\"==typeof o)return o.toString();if(\"object\"==typeof o){if(\"function\"==typeof o.toJSON)return s(o.toJSON());if(n(o)){for(var a=\"[\",c=0;c9&&(defaultQuery=\"\"),defaultQuery){var UA=getUA(),isPlaceHolderSupported=detectPlaceholder(UA);\ncreatePlaceHolder($input,isPlaceHolderSupported,defaultQuery,UA),isSupportLocalStorage&&recordDefaultQuery(defaultQuery,defaultQueryHis),$(window).one(\"index_off\",function(){removePlaceHolder($input,isPlaceHolderSupported),bds.comm.dpquery=\"\"})}}();var define,require,esl;!function(t){function e(t){m(t,M)||(z[t]=1)}function n(t,e){function n(t){0===t.indexOf(\".\")&&i.push(t)}var i=[];if(\"string\"==typeof t?n(t):A(t,function(t){n(t)}),i.length>0)throw new Error(\"[REQUIRE_FATAL]Relative ID is not allowed in global require: \"+i.join(\", \"));\nvar r=F.waitSeconds;return r&&t instanceof Array&&(U&&clearTimeout(U),U=setTimeout(o,1e3*r)),H(t,e)}function o(){function t(s,a){if(!r[s]&&!m(s,M)){r[s]=1;var c=O[s];c?(a||!m(s,P)||c.hang)&&(o[s]||(o[s]=1,e.push(s)),A(c.depMs,function(e){t(e.absId,e.hard)})):i[s]||(i[s]=1,n.push(s))}}var e=[],n=[],o={},i={},r={};for(var s in z)t(s,1);if(e.length||n.length)throw new Error(\"[MODULE_TIMEOUT]Hang(\"+(e.join(\", \")||\"none\")+\") Miss(\"+(n.join(\", \")||\"none\")+\")\")}function i(t){A(W,function(e){a(t,e.deps,e.factory)\n}),W.length=0}function r(t,e,n){if(null==n&&(null==e?(n=t,t=null):(n=e,e=null,t instanceof Array&&(e=t,t=null))),null!=n){var o=window.opera;if(!t&&document.attachEvent&&(!o||\"[object Opera]\"!==o.toString())){var i=j();t=i&&i.getAttribute(\"data-require-id\")}t?a(t,e,n):W[0]={deps:e,factory:n}}}function s(){var t=F.config[this.id];return t&&\"object\"==typeof t?t:{}}function a(t,e,n){O[t]||(O[t]={id:t,depsDec:e,deps:e||[\"require\",\"exports\",\"module\"],factoryDeps:[],factory:n,exports:{},config:s,state:E,require:k(t),depMs:[],depMkv:{},depRs:[],hang:0})\n}function c(t){var e=O[t];if(e&&!m(t,N)){var n=e.deps,o=e.factory,i=0;\"function\"==typeof o&&(i=Math.min(o.length,n.length),!e.depsDec&&o.toString().replace(/(\\/\\*([\\s\\S]*?)\\*\\/|([^:]|^)\\/\\/(.*)$)/gm,\"\").replace(/require\\(\\s*(['\"])([^'\"]+)\\1\\s*\\)/g,function(t,e,o){n.push(o)}));var r=[],s=[];A(n,function(n,o){var a,c,d=I(n),l=T(d.mod,t);l&&!B[l]?(d.res&&(c={id:n,mod:l,res:d.res},s.push(n),e.depRs.push(c)),a=e.depMkv[l],a||(a={id:d.mod,absId:l,hard:i>o},e.depMs.push(a),e.depMkv[l]=a,r.push(l))):a={absId:l},i>o&&e.factoryDeps.push(c||a)\n}),e.state=N,u(t),b(r),s.length&&e.require(s,function(){A(e.depRs,function(e){e.absId||(e.absId=T(e.id,t))}),d()})}}function d(){for(var t in z)c(t),l(t),p(t)}function l(t){function e(t){if(c(t),!m(t,N))return!1;if(m(t,P)||n[t])return!0;n[t]=1;var o=O[t],i=!0;return A(o.depMs,function(t){i=e(t.absId)&&i}),i&&A(o.depRs,function(t){return i=!!t.absId}),i&&!m(t,P)&&(o.state=P),n[t]=0,i}var n={};e(t)}function u(e){function n(){if(!o&&i.state===P){o=1;var n=1;if(A(i.factoryDeps,function(t){var e=t.absId;\nreturn B[e]?void 0:(p(e),n=m(e,M))}),n){try{var r=i.factory,s=\"function\"==typeof r?r.apply(t,f(i.factoryDeps,{require:i.require,exports:i.exports,module:i})):r;null!=s&&(i.exports=s),i.invokeFactory=null}catch(a){throw i.hang=1,a}g(e)}}}var o,i=O[e];i.invokeFactory=n}function m(t,e){return O[t]&&O[t].state>=e}function p(t){var e=O[t];e&&e.invokeFactory&&e.invokeFactory()}function f(t,e){var n=[];return A(t,function(t,o){\"object\"==typeof t&&(t=t.absId),n[o]=e[t]||O[t].exports}),n}function h(t,e){if(m(t,M))return void e();\nvar n=G[t];n||(n=G[t]=[]),n.push(e)}function g(t){var e=O[t];e.state=M,delete z[t];for(var n=G[t]||[],o=n.length;o--;)n[o]();n.length=0,G[t]=null}function b(e,n,o){function i(){if(\"function\"==typeof n&&!r){var o=1;A(e,function(t){return B[t]?void 0:o=!!m(t,M)}),o&&(r=1,n.apply(t,f(e,B)))}}var r=0;A(e,function(t){B[t]||m(t,M)||(h(t,i),(t.indexOf(\"!\")>0?w:v)(t,o))}),i()}function v(e){function n(){var t=K[e];q(t||e,o)}function o(){if(s){var n;\"function\"==typeof s.init&&(n=s.init.apply(t,f(a,B))),null==n&&s.exports&&(n=t,A(s.exports.split(\".\"),function(t){return n=n[t],!!n\n})),r(e,a,function(){return n||{}})}else i(e);d()}if(!Q[e]&&!O[e]){Q[e]=1;var s=F.shim[e];s instanceof Array&&(F.shim[e]=s={deps:s});var a=s&&(s.deps||[]);a?(A(a,function(t){F.shim[t]||(F.shim[t]={})}),H(a,n)):n()}}function w(t,e){function n(e){c.exports=e||!0,g(t)}function o(o){var i=e?O[e].require:H;o.load(a.res,i,n,s.call({id:t}))}if(!O[t]){var r=K[t];if(r)return void v(r);var a=I(t),c={id:t,state:N};O[t]=c,n.fromText=function(t,e){new Function(e)(),i(t)},o(H(a.mod))}}function _(t,e){var n=D(t,1,e);\nreturn n.sort(L),n}function y(){function t(t){K[C(t)]=n}F.baseUrl=F.baseUrl.replace(/\\/$/,\"\")+\"/\",V=_(F.paths),X=_(F.map,1),A(X,function(t){t.v=_(t.v)});var e=X[X.length-1];e&&\"*\"===e.k&&A(X,function(t){t!=e&&(t.v=t.v.concat(e.v))}),J=[],A(F.packages,function(t){var e=t;\"string\"==typeof t&&(e={name:t.split(\"/\")[0],location:t,main:\"main\"}),e.location=e.location||e.name,e.main=(e.main||\"main\").replace(/\\.js$/i,\"\"),e.reg=R(e.name),J.push(e)}),J.sort(L),Y=_(F.urlArgs,1),K={};for(var n in F.bundles)A(F.bundles[n],t)\n}function x(t,e,n){A(e,function(e){return e.reg.test(t)?(n(e.v,e.k,e),!1):void 0})}function $(t,e){var n=/(\\.[a-z0-9]+)$/i,o=/(\\?[^#]*)$/,i=\"\",r=t,s=\"\";o.test(t)&&(s=RegExp.$1,t=t.replace(o,\"\")),n.test(t)&&(i=RegExp.$1,r=t.replace(n,\"\")),null!=e&&(r=T(r,e));var a,c=r;return x(r,V,function(t,e){c=c.replace(e,t),a=1}),a||x(r,J,function(t,e,n){c=c.replace(n.name,n.location)}),/^([a-z]{2,10}:\\/)?\\//i.test(c)||(c=F.baseUrl+c),c+=i+s,x(r,Y,function(t){c+=(c.indexOf(\"?\")>0?\"&\":\"?\")+t}),c}function k(t){function n(n,i){if(\"string\"==typeof n){if(!o[n]){var r=T(n,t);\nif(p(r),!m(r,M))throw new Error('[MODULE_MISS]\"'+r+'\" is not exists!');o[n]=O[r].exports}return o[n]}if(n instanceof Array){var s=[],a=[];A(n,function(n,o){var i=I(n),r=T(i.mod,t),c=i.res,d=r;if(c){var l=r+\"!\"+c;0!==c.indexOf(\".\")&&K[l]?r=d=l:d=null}a[o]=d,e(r),s.push(r)}),b(s,function(){A(a,function(o,i){null==o&&(o=a[i]=T(n[i],t),e(o))}),b(a,i,t),d()},t),d()}}var o={};return n.toUrl=function(e){return $(e,t||\"\")},n}function T(t,e){if(!t)return\"\";e=e||\"\";var n=I(t);if(!n)return t;var o=n.res,i=S(n.mod,e);\nif(x(e,X,function(t){x(i,t,function(t,e){i=i.replace(e,t)})}),i=C(i),o){var r=m(i,M)&&H(i);o=r&&r.normalize?r.normalize(o,function(t){return T(t,e)}):T(o,e),i+=\"!\"+o}return i}function C(t){return A(J,function(e){var n=e.name;return n===t?(t=n+\"/\"+e.main,!1):void 0}),t}function S(t,e){if(0!==t.indexOf(\".\"))return t;for(var n=e.split(\"/\").slice(0,-1).concat(t.split(\"/\")),o=[],i=0;in&&e(t[n],n)!==!1;n++);}function L(t,e){var n=t.k||t.name,o=e.k||e.name;return\"*\"===o?-1:\"*\"===n?1:o.length-n.length}function j(){if(Z)return Z;if(te&&\"interactive\"===te.readyState)return te;\nfor(var t=document.getElementsByTagName(\"script\"),e=t.length;e--;){var n=t[e];if(\"interactive\"===n.readyState)return te=n,n}}function q(t,e){function n(){var t=o.readyState;(\"undefined\"==typeof t||/^(loaded|complete)$/.test(t))&&(o.onload=o.onreadystatechange=null,o=null,e())}var o=document.createElement(\"script\");o.setAttribute(\"data-require-id\",t),o.src=$(t+\".js\"),o.async=!0,o.readyState?o.onreadystatechange=n:o.onload=n,Z=o,ne?ee.insertBefore(o,ne):ee.appendChild(o),Z=null}var U,O={},E=1,N=2,P=3,M=4,z={},B={require:n,exports:1,module:1},H=k(),F={baseUrl:\"./\",paths:{},config:{},map:{},packages:[],shim:{},waitSeconds:0,bundles:{},urlArgs:{}};\nn.version=\"2.1.4\",n.loader=\"esl\",n.toUrl=H.toUrl;var W=[];r.amd={};var G={},Q={};n.config=function(t){if(t){for(var e in F){var n=t[e],o=F[e];if(n)if(\"urlArgs\"===e&&\"string\"==typeof n)F.urlArgs[\"*\"]=n;else if(o instanceof Array)o.push.apply(o,n);else if(\"object\"==typeof o)for(var i in n)o[i]=n[i];else F[e]=n}y()}},y();var V,J,X,K,Y,Z,te,ee=document.getElementsByTagName(\"head\")[0],ne=document.getElementsByTagName(\"base\")[0];ne&&(ee=ne.parentNode),define||(define=r,require||(require=n),esl=n);var oe;\n!function(){for(var t=document.getElementsByTagName(\"script\"),e=t.length;e--;){var n=t[e];if(oe=n.getAttribute(\"data-main\"))break}}(),oe&&setTimeout(function(){n([oe])},4)}(this);var bds=window.bds||{};bds.amd={keys:{},addPaths:function(t){\"object\"==typeof t&&(require.config({paths:t}),$.extend(bds.amd.keys,t))},exist:function(t){return t&&\"undefined\"!=typeof bds.amd.keys[t]?!0:!1}},function(){var t=bds.util&&bds.util.domain?bds.util.domain.get(\"http://s1.bdstatic.com\"):\"http://s1.bdstatic.com\",e=bds.util&&bds.util.domain?bds.util.domain.get(\"http://ecmb.bdimg.com\"):\"http://ecmb.bdimg.com\";\nrequire.config({baseUrl:t+\"/r/www/cache/biz\",packages:[{name:\"ecma\",location:e+\"/public01\"},{name:\"ecmb\",location:e+\"/public01\"}],paths:{aladdin:t+\"/r/www/aladdin\",ui:t+\"/r/www/cache/amd/ui\",\"ui/config\":t+\"/r/www/cache/amd/ui/Control\",\"ui/lib\":t+\"/r/www/cache/amd/ui/Control\",\"ui/Control\":t+\"/r/www/cache/amd/ui/Control\"},urlArgs:{\"ui/ImgZoomHover\":\"20141104\",\"ui/ImgZoomHover1\":\"20141104\",\"ui/ImgZoomHover2\":\"20141104\",\"ui/ImgZoomHover3\":\"20141104\"}})}(),bds.amd.addPaths({\"voice/js/voice\":\"https://ss1.bdstatic.com/5eN1bjq8AAUYm2zgoY3K/r/www/cache/static/protocol/https/voice/js/voice_1672ed3\",\"plugins/swfobject\":\"https://ss1.bdstatic.com/5eN1bjq8AAUYm2zgoY3K/r/www/cache/static/protocol/https/plugins/swfobject_0178953\",\"soutu/js/tu\":\"https://ss1.bdstatic.com/5eN1bjq8AAUYm2zgoY3K/r/www/cache/static/protocol/https/soutu/js/tu_329aca4\"}),bds&&bds.comm&&(bds.comm.did=function(){for(var t=\"\",e=0;32>e;e++)t+=Math.floor(16*Math.random()).toString(16);\nreturn t}(),bds.comm.isAsync=function(){var t=\"onhashchange\"in window,e=\"onpopstate\"in window;return(e||t)&&1!=Cookie.get(\"ISSW\")&&!window.__disable_preload}());try{window.MutationObserver=window.WebKitMutationObserver=window.MozMutationObserver=null}catch(e){}jQuery&&jQuery.extend({stringify:function(t){function e(t){return/[\"\\\\\\x00-\\x1f]/.test(t)&&(t=t.replace(/[\"\\\\\\x00-\\x1f]/g,function(t){var e=i[t];return e?e:(e=t.charCodeAt(),\"\\\\u00\"+Math.floor(e/16).toString(16)+(e%16).toString(16))})),'\"'+t+'\"'\n}function n(t){var e,n,o,i=[\"[\"],r=t.length;for(n=0;r>n;n++)switch(o=t[n],typeof o){case\"undefined\":case\"function\":case\"unknown\":break;default:e&&i.push(\",\"),i.push($.stringify(o)),e=1}return i.push(\"]\"),i.join(\"\")}if(\"JSON\"in window)return JSON.stringify(t);var o=typeof t;if(\"object\"!=o||null===t)return\"string\"==o&&(t='\"'+t+'\"'),String(t);var i={\"\\b\":\"\\\\b\",\"\t\":\"\\\\t\",\"\\n\":\"\\\\n\",\"\\f\":\"\\\\f\",\"\\r\":\"\\\\r\",'\"':'\\\\\"',\"\\\\\":\"\\\\\\\\\"};switch(typeof t){case\"undefined\":return\"undefined\";case\"number\":return isFinite(t)?String(t):\"null\";\ncase\"string\":return e(t);case\"boolean\":return String(t);default:if(null===t)return\"null\";if(\"[object Array]\"===Object.prototype.toString.call(t))return n(t);var r,s,a=[\"{\"],c=$.stringify;for(var d in t)if(Object.prototype.hasOwnProperty.call(t,d))switch(s=t[d],typeof s){case\"undefined\":case\"unknown\":case\"function\":break;default:r&&a.push(\",\"),r=1,a.push(c(d)+\":\"+c(s))}return a.push(\"}\"),a.join(\"\")}},format:function(t,e){t=String(t);var n=Array.prototype.slice.call(arguments,1),o=Object.prototype.toString;\nreturn n.length?(n=1==n.length&&null!==e&&/\\[object Array\\]|\\[object Object\\]/.test(o.call(e))?e:n,t.replace(/#\\{(.+?)\\}/g,function(t,e){var i=n[e];return\"[object Function]\"==o.call(i)&&(i=i(e)),\"undefined\"==typeof i?\"\":i})):t},subByte:function(t,e,n){var o=[],i=t.split(\"\");n=n||\"…\";for(var r=0,s=i.length;s>r;r++)i[r].charCodeAt(0)>255&&o.push(\"*\"),o.push(i[r]);return e&&e>0&&o.length>e?i=o.join(\"\").substring(0,e-1).replace(/\\*/g,\"\")+n:t},getByteLength:function(t){for(var e=[],n=t.split(\"\"),o=0,i=n.length;i>o;o++)n[o].charCodeAt(0)>255&&e.push(\"*\"),e.push(n[o]);\nreturn e.length},_isValidKey:function(t){return new RegExp('^[^\\\\x00-\\\\x20\\\\x7f\\\\(\\\\)<>@,;:\\\\\\\\\\\\\"\\\\[\\\\]\\\\?=\\\\{\\\\}\\\\/\\\\u0080-\\\\uffff]+$').test(t)},setCookie:function(t,e,n){if(e=encodeURIComponent(e),jQuery._isValidKey(t)){n=n||{};var o=n.expires;\"number\"==typeof n.expires&&(o=new Date,o.setTime(o.getTime()+n.expires)),document.cookie=t+\"=\"+e+(n.path?\"; path=\"+n.path:\"\")+(o?\"; expires=\"+o.toGMTString():\"\")+(n.domain?\"; domain=\"+n.domain:\"\")+(n.secure?\"; secure\":\"\")}},getCookie:function(t){var e=\"\";\nif(jQuery._isValidKey(t)){var n=new RegExp(\"(^| )\"+t+\"=([^;]*)(;|$)\"),o=n.exec(document.cookie);if(o&&(e=o[2]||null,\"string\"==typeof e))return e=decodeURIComponent(e)}return null},removeCookie:function(t,e){e=e||{},e.expires=new Date(0),jQuery.setCookie(t,\"\",e)},limitWd:function(t,e){if(\"\"===t)return\"\";t+=\"\";var n=t.split(\"\"),o=n.length,i=0,r=e||255;if(o<=parseInt(r/2))return t;for(var s=0;o>s;s++){if(i+=n[s].charCodeAt(0)>255?2:1,i===r)return n=t.substring(0,s+1);if(i>r)return n=t.substring(0,s)\n}return t}}),$(window).on(\"resize\",function(){\"pageState\"in window&&0!=pageState&&(bds.util.setContainerWidth(),bds.event.trigger(\"se.window_resize\"))}),bds.util.addStyle=function(t){if(isIE){var e=document.createStyleSheet();e.cssText=t}else{var n=document.createElement(\"style\");n.type=\"text/css\",n.appendChild(document.createTextNode(t)),document.getElementsByTagName(\"HEAD\")[0].appendChild(n)}},bds.util.getContentRightHeight=function(){return $(\"#content_right\").get(0)?$(\"#content_right\").get(0).offsetHeight:0\n},bds.util.getContentLeftHeight=function(){return $(\"#content_left\").get(0)?$(\"#content_left\").get(0).offsetHeight:0},window.A||(window.bds=window.bds||{},bds.util=bds.util||{},bds.util.getWinWidth=function(){return window.document.documentElement.clientWidth},bds.util.setContainerWidth=function(){var t=G(\"container\"),e=G(\"wrapper\"),n=function(t,e){e.className=e.className.replace(t,\"\")},o=function(t,e){e.className=(e.className+\" \"+t).replace(/^\\s+/g,\"\")},i=function(t,e){return t.test(e.className)\n};bds.util.getWinWidth()<1207?(t&&(n(/\\bcontainer_l\\b/g,t),i(/\\bcontainer_s\\b/,t)||o(\"container_s\",t)),e&&(n(/\\bwrapper_l\\b/g,e),i(/\\bwrapper_s\\b/,e)||o(\"wrapper_s\",e)),bds.comm.containerSize=\"s\"):(t&&(n(/\\bcontainer_s\\b/g,t),i(/\\bcontainer_l\\b/,t)||o(\"container_l\",t)),e&&(n(/\\bwrapper_s\\b/g,e),i(/\\bwrapper_l\\b/,e)||o(\"wrapper_l\",e)),bds.comm.containerSize=\"l\")},function(){var t=[],e=!1,n=function(t,e){try{t.call(e)}catch(n){}},o=function(){this.ids=[],this.has=!0,this.list=[],this.logs=[],this.loadTimes=[],this.groupData=[],this.mergeFns=[],this._currentContainer=null\n};window.A=bds.aladdin={},n(o,window.A),bds.ready=function(o){\"function\"==typeof o&&(e?n(o):t.push(o))},bds.doReady=function(){for(e=!0;t.length;)n(t.shift())},bds.clearReady=function(){e=!1,t=[]},A.__reset=o;var i=function(){var t=document.getElementsByTagName(\"script\");return function(){var e=t[t.length-1];window.currentScriptElem&&(e=window.currentScriptElem);for(var n=e;n;){if(n.className&&/(?:^|\\s)result(?:-op)?(?:$|\\s)/.test(n.className)&&(tplname=n.getAttribute(\"tpl\")))return n;n=n.parentNode\n}}}(),r=function(t,e,n){var o;if(t.initIndex?o=A.groupData[t.initIndex-1]:(o={container:t,data:{},handlers:[]},t.initIndex=A.groupData.length+1,A.groupData.push(o)),\"function\"==typeof e)o.handlers.push(e);else if(\"object\"==typeof e)for(var i in e)e.hasOwnProperty(i)&&(o.data[i]=e[i]);else o.data[e]=n};A.init=A.setup=function(t,e){if(void 0!==t&&null!==t){var n=A._currentContainer||i();n&&r(n,t,e)}},A.merge=function(t,e){A.mergeFns.push({tplName:t,fn:e})}}()),A.uiPrefix=\"//www.baidu.com/cache/aladdin/ui/\",function(){var t=window.bds.aladdin,e=[],n={},o=0,i=function(t,e){try{t.call(e)\n}catch(n){}},r=function(t){t.ajaxId=++o,n[t.ajaxId]=t},s=function(t){delete n[t.ajaxId]},a=function(t){return t.ajaxId?n.hasOwnProperty(t.ajaxId):!1},c=function(t){var e={};if(t)try{var n=new Function(\"return \"+t)();n&&(e=n)}catch(o){}return e},d=function(){for(var t,e,n=$(\".result-op\").get().concat($(\".result\").get()),o={},i=0;e=n[i];i++)(t=e.getAttribute(\"tpl\"))&&(o[t]?o[t].push(e):o[t]=[e]);return o},l=[],u=[];t.addDisposeHandler=function(t){u.push(t)},t.dispose=function(){for(;l.length;){var t=l.shift();\ni(t.fn,t.obj)}for(var e=u,n=0;n1)if(s)t(a.shift(),function(){a.length>0&&t(a,s)\n});else for(;a.length;)t(a.shift());else{if(r=a[0],\"jquery\"===r&&window.jQuery)return!i.ui.jquery&&(i.ui.jquery=window.jQuery),void(s&&s());var c=r.replace(/\\./g,\"/\"),d=r.replace(/^[\\s\\S]*\\./,\"\"),l=i.uiPrefix+c+\"/\"+d;0==c.search(\"style/\")?e(l+\".css\",s):(l+=\".js\",m.hasOwnProperty(r)?\"function\"==typeof m[r]?l=m[r](r,l):\"string\"==typeof m[r]&&(l=m[r]):m.hasOwnProperty(\"*\")&&(l=m[\"*\"](r,l)),s?o(l,s):n(l))}}function e(t,e){if(e=e||u,t in r)return void e();var n=c.createElement(\"link\");n.rel=\"stylesheet\",n.type=\"text/css\",n.href=t,n.setAttribute(\"data-for\",\"A.ui\"),d.appendChild(n),r[t]=1,e()\n}function n(t){return l?void o(t,u):void(t in r||(c.write(''),r[t]=1))}function o(t,e){if(e=e||u,t in r)return void e();if(t in s)return void a[t].push(e);s[t]=1;var n=a[t]=[e],o=c.createElement(\"script\");o.type=\"text/javascript\",o.charset=\"gb2312\",o.onload=o.onreadystatechange=function(){if(!this.readyState||\"loaded\"===this.readyState||\"complete\"===this.readyState){for(;n.length;)n.shift()();delete s[t],r[t]=1,o.onload=o.onreadystatechange=null\n}},o.src=t,o.setAttribute(\"data-for\",\"A.ui\"),d.insertBefore(o,d.firstChild)}var i=window.A,r={},s={},a={},c=document,d=c.getElementsByTagName(\"head\")[0],l=!1,u=(i.baidu,function(){}),m={\"*\":function(t,e){return e+\"?v=20170208\"},scrollbarv:function(t,e){return e+\"?v=20170208\"},likeshare4:function(t,e){return e+\"?v=20170208\"},mboxsingleton:function(t,e){return e+\"?v=20170208\"},sms:function(t,e){return e+\"?v=20170208\"},tab:function(t,e){return e+\"?v=20170208\"},tabs:function(t,e){return e+\"?v=20170208\"\n},musicplayer:function(t,e){return e+\"?v=20170208\"},slider:function(t,e){return e+\"?v=20170208\"},suggestion:function(t,e){return e+\"?v=20170208\"},tabs5:function(t,e){return e+\"?v=20170208\"},tabx:function(t,e){return e+\"?v=20170208\"},dropdown1:function(t,e){return e+\"?v=20170208\"},dropdown21:function(t,e){return e+\"?v=20170208\"},advert:function(t,e){return e+\"?v=20170208\"},advert2:function(t,e){return e+\"?v=20170208\"},honourCard:function(t,e){return e+\"?v=20170208\"},honourCard3:function(t,e){return e+\"?v=20170208\"\n},honourCard4:function(t,e){return e+\"?v=20170208\"},share:function(t,e){return e+\"?v=20170208\"},qHotCity:function(t,e){return e+\"?v=20170208\"},mapapi:function(t,e){return e+\"?v=20170208\"},qunarfilters:function(t,e){return e+\"?v=20170208\"},renderIframe3:function(t,e){return e+\"?v=20170208\"},share2:function(t,e){return e+\"?v=20170208\"},ALD_feedback:function(t,e){return e+\"?v=20170208\"},addtohome:function(t,e){return e+\"?v=20170208\"},addtohome2:function(t,e){return e+\"?v=20170208\"},gpsApi:function(t,e){return e+\"?v=20170208\"\n},simGps:function(t,e){return e+\"?v=20170208\"}};$(document).ready(function(){l=!0}),i.addDisposeHandler({obj:i,fn:function(){for(var t in a)if(a.hasOwnProperty(t))for(var e=a[t];e.length;)e.pop()}}),t.cache=r,i.uicss=function(t){e(i.uiPrefix+t)},i.uijs=function(t,e){o(i.uiPrefix+t,e)},i.uijsPathMap=function(t){$.extend(m,t)},i.use=t,i.ui=i.ui||{},i.addCssText=function(t){var e=\"opui-style-tag-id\",n=\"data-for\",o=\"A.ui\",i=document.getElementById(e);i||(i=document.createElement(\"style\"),i.setAttribute(\"type\",\"text/css\"),i.setAttribute(n,o),i.id=e,document.getElementsByTagName(\"head\")[0].appendChild(i));\ntry{var r=document.createTextNode(t);i.appendChild(r)}catch(s){i.styleSheet&&(i.styleSheet.cssText+=t)}},$(window).on(\"swap_end\",function(){var t=/MSIE\\s?6/.test(window.navigator.userAgent),e=function(t,e,n){$(t).each(function(t,o){var i=$(o),r=new Image,s=i.attr(\"src\");r.onload=function(){var t=e,o=n,s=this.width,a=this.height,c=s/a/(t/o);c>1?(s=s>t?t:\"auto\",a=\"auto\"):(a=a>o?o:\"auto\",s=\"auto\"),i.css({height:a,width:s}),r.onload=null,r=null},r.src=s})};t&&e(\"img.result-left-img\",98,121),$(\".c-feedback\").bind(\"click\",function(){var t=this;\ni.use(\"ALD_feedback\",function(){var e,n,o=\"right\",r=$(t);r.parents(\"#content_left\").length?(o=\"left\",n=r.parents(\".result-op\"),e=n.attr(\"srcid\")):r.parents(\"#content_right\").length&&(n=r.parents(\"#con-ar\"));var s={query:bds.comm.query,srcid:e,target:n,username:bds.comm.username,flag:o},a=i.ui.ALD_feedback(s);i.addDisposeHandler({obj:a,fn:a.dispose})})})})}(),$(window).on(\"swap_begin\",function(){A.dispose(),A.__reset(),A.__clearDispose()}),$(window).on(\"swap_dom_ready\",function(){bds.ready(A.__runAla),bds.doReady()\n}),bds.event=new function(){function t(t,e){if(\"function\"==typeof e||e instanceof Function){var n=i(t);r[n.name]=r[n.name]||[],r[n.name].push({prod:n.prod,callback:e})}}function e(t,e){for(var n=i(t),s=r[n.name]||[],a=0;ac;c++){var l=s[c];try{o(l.prod,n.prod)&&l.callback.call(this,a)}catch(u){}}}function o(t,e){return new RegExp(\"^\"+t.replace(/\\./g,\"\\\\.\").replace(/\\*/g,\".+\")+\"$\").test(e)\n}function i(t){var e=t.match(/(.+)\\.(.+)/);return e&&e[2]?{prod:e[1],name:e[2]}:{}}var r={};this.on=t,this.off=e,this.trigger=n,this.events=r},bds.se.link=function(){function t(t,e){var n=\"/s?\",o={tn:bds.comm.tn},i=\"wd=\"+encodeURIComponent(t);e&&(o=$.extend(o,e));for(var r in o)o.hasOwnProperty(r)&&(i+=\"&\"+r+\"=\"+encodeURIComponent(o[r]));return n+i}return{getSearchUrl:t}}(),!function(A){function clickDebug(){}function bindP5(){var item,index=(bds.comm.pageNum-1)*bds.comm.pageSize+1,leftItems=contentLeft&&contentLeft.children||[],rightItems=contentRight&&contentRight.children||[],topItems=contentTop&&contentTop.children||[],isResult=function(t){return 1==t.nodeType&&t.className&&/\\bresult(\\-op)?\\b/.test(t.className)\n},isFrame=function(t){return 1==t.nodeType&&t.className&&/\\bc\\-frame\\b/.test(t.className)},setClickData=function(wrap,data){var sData=wrap.getAttribute(\"data-click\")||\"{}\";try{var oData=eval(\"(\"+sData+\")\");sData=$.stringify($.extend(oData,data)),wrap.setAttribute(\"data-click\",sData)}catch(e){clickDebug(e)}},bindP5ClickData=function(t){for(var e=0,n=t.length;n>e;e++)if(item=t[e],isResult(item))setClickData(item,{p5:index++});else if(isFrame(item))try{for(var o=item.children[0].children,i=0,r=o.length;r>i;i++){var s=o[i];\nisResult(s)&&setClickData(s,{p5:index++})}}catch(a){clickDebug(a)}index=(bds.comm.pageNum-1)*bds.comm.pageSize+1};bindP5ClickData(leftItems),bindP5ClickData(rightItems),bindP5ClickData(topItems)}function getXPath(t,e,n){if(n=n||[],e=e||document,t===e)return n;if(t.parentNode!==e&&(n=getXPath(t.parentNode,e,n)),t.previousSibling){var o=1,i=t.previousSibling;do 1==i.nodeType&&i.nodeName==t.nodeName&&o++,i=i.previousSibling;while(i)}return 1==t.nodeType&&n.push(t.nodeName.toLowerCase()+(o>1?o:\"\")),n\n}function bindLogEvent(){$body=$(\"body\"),$body.on(\"mousedown\",function(t){var t=window.event||t,e=t.srcElement||t.target,n=$(e);try{for(var o,i,r=n;r.length&&!(r.hasClass(\"result\")||r.hasClass(\"result-op\")||r.hasClass(\"xpath-log\"));)r=r.parent();if(!r.length)return;r.hasClass(\"result-op\")?o=\"alop\":r.hasClass(\"result\")&&(o=\"as\"),i=r.get(0);var s=getXPath(e,i);check(s,e,i)&&log(s,e,i,o)}catch(t){clickDebug(t)}})}function getType(t,e,n){for(var o=e,i=LOG_CLASS,r=i.length,s=C_LOG_CLASS,a=s.length,c=t.join(\" \"),d=0;o!==n;){for(d=0;r>d;d++)if($(o).hasClass(\"OP_LOG_\"+i[d]))return i[d].toLowerCase();\nfor(d=0;a>d;d++)if($(o).hasClass(\"c-\"+s[d]))return s[d];o=o.parentNode}return/\\bh3\\d*\\b/.test(c)?\"title\":/\\ba\\d*\\b/.test(c)?/\\bimg\\d*\\b/.test(c)?\"img\":\"link\":/\\b(input|select|button|textarea|datalist)\\d*\\b/.test(c)?\"input\":/\\blabel\\d*\\b/.test(c)&&e.getElementsByTagName(\"input\").length>0?\"input\":\"\"}function check(t,e,n){return A.LOGTOOL?(A.LOGTOOL.call(e,t,e,n),!1):!0}function log(t,e,n,o){if(null==e.getAttribute(\"data-nolog\")){var i=getType(t,e,n);if(!i)return!1;if(\"title\"==i&&!/\\ba\\d*\\b/.test(t))return!1;\nvar r=\"http://nourl.ubs.baidu.com\",s=n.getAttribute(\"mu\")||r;if(s==r){var a=n.getElementsByTagName(\"h3\");if(a&&a[0]){var c=a[0].getElementsByTagName(\"a\");s=c&&c[0]?c[0].href:s}}var d,l=t.length,u=e,m=n.getAttribute(\"srcid\"),p=\"\",f=1==e.nodeType?e.tagName.toLowerCase():\"\";if(\"input\"==i)if(/input|textarea/.test(f))p=e.value,e.type&&\"password\"==e.type.toLowerCase()&&(p=\"\");else if(/select|datalist/.test(f)){if(e.children.length>0){var h=e.selectedIndex||0;p=e.children[h>-1?h:0].innerHTML}}else p=e.innerHTML||e.value||\"\";\nelse if(\"img\"==f&&(p=e.title),!p)for(;l>0;){if(l--,/^a\\d*\\b/.test(t[l])){if(d=u.href,p=u.innerHTML,null!=u.getAttribute(\"data-nolog\"))return;break}if(u.className&&/OP_LOG_/.test(u.className)){p=u.innerHTML;break}u=u.parentNode}p=$.trim(p),d&&\"#\"!==d.slice(-1)&&/^http/.test(d)||(d=s);var g={rsv_xpath:t.join(\"-\")+\"(\"+i+\")\",title:p,url:d,rsv_height:n.offsetHeight,rsv_width:n.offsetWidth,rsv_tpl:n.getAttribute(\"tpl\")},b={url:1,title:1};n.id&&n.id.match(/^\\d+$/)&&(g.p1=n.id),m&&(g.rsv_srcid=m);var v,w,_;\nu=e;do{if(null!=u.getAttribute(\"data-nolog\"))return;if(v=u.getAttribute(\"data-click\"))try{v=new Function(\"return \"+v)();for(w in v)\"fm\"==w&&null===v.fm&&(_=!0),v.hasOwnProperty(w)&&(\"undefined\"==typeof g[w]||b[w])&&(g[w]=v[w])}catch(y){clickDebug(y)}u=u.parentNode}while(u&&u!==n.parentNode);for(var x in g)null===g[x]&&delete g[x];if(\"title\"==i?\"mu\"in g&&delete g.mu:g.mu||(g.mu=s),_)\"fm\"in g&&delete g.fm;else if(\"input\"==i&&(g.fm=\"beha\",g.url=r),g.fm||(g.fm=o),!g.fm)return;window.c(g)}}var baidu=window.baidu,LOG_CLASS=[\"TITLE\",\"LINK\",\"IMG\",\"BTN\",\"INPUT\",\"OTHERS\"],C_LOG_CLASS=[\"btn\"],contentLeft,contentRight,contentTop;\nwindow.initResultClickLog=function(){if(contentLeft=$(\"#content_left\").get(0),contentRight=$(\"#con-ar\").get(0),contentTop=$(\"#con-at\").get(0),A.has){var t,e=$(\".result-op\").get();$.each(e,function(e,n){(t=n.getAttribute(\"srcid\"))&&A.ids.push([n.id,t])})}bindP5()},$(document).ready(function(){bindLogEvent()})}(window.bds.aladdin);for(ai in al_arr)al_arr[ai]();$(document).ready(function(){var t;$(document).on(\"click\",\".t>a,.op-se-listen-recommend\",function(e){e=window.event||e;var n=$(\"#wrapper_wrapper\"),o=$(this).closest(\".c-container\"),i=o.length?o.find(\".c-recommend\").eq(0):[],r=o.length?o.find(\".wnor-fanli-wrap\"):[];\n!e.ctrlKey&&(i.length&&\"none\"===i.css(\"display\")||r.length&&\"none\"===r.css(\"display\"))&&(t=setTimeout(function(){n.find(\".c-recommend\").hide(),i.show(),n.find(\".wnor-fanli-wrap\").hide(),r.show()},150))}),$(window).on(\"swap_begin\",function(){this.clearTimeout(t)})}),window.onunload=function(){},bds.se.openime=function(t){window.bdime?openIme.set(\"py\",!0):$.ajax({cache:!0,dataType:\"script\",url:\"https://ss1.bdstatic.com/5eN1bjq8AAUYm2zgoY3K/r/www/cache/static/protocol/https/plugins/ime_c5abb66.js\",success:function(){t&&openIme.set(\"py\",!0)\n}})},function(){/\\bbdime=[12]/.test(document.cookie)||$(window).one(\"swap_end\",function(){})}(),bds&&bds.comm&&!bds.comm.containerSize&&(bds.comm.containerSize=\"s\"),bds.util.setContainerWidth=function(){var t=$(\"#container\"),e=$(\"#wrapper\"),n=bds.util.getWinWidth(),o=bds.comm.containerSize;if(1217>n)t.removeClass(\"container_l container_xl\").addClass(\"container_s\"),e.removeClass(\"wrapper_l\").addClass(\"wrapper_s\"),bds.comm.containerSize=\"s\";else{if(!(n>=1217))return;t.removeClass(\"container_s container_xl\").addClass(\"container_l\"),e.removeClass(\"wrapper_s\").addClass(\"wrapper_l\"),bds.comm.containerSize=\"l\"\n}o!=bds.comm.containerSize&&$(window).trigger(\"container_resize\",bds.comm.containerSize)},bds.util.setFootStyle=function(){this.init(),this.bindEvent()},$.extend(bds.util.setFootStyle.prototype,{ie6:bds.comm.upn&&\"msie\"===bds.comm.upn.browser&&6==bds.comm.upn.ie,init:function(){var t=$(\"#foot\");if(t.addClass(\"foot_fixed_bottom\"),this.ie6){var e=$(window).height()+$(window).scrollTop()-t.outerHeight(!0);t.css(\"top\",e+\"px\")}},setFixedIe6:function(){var t=$(\"#foot\"),e=$(window).height()+$(window).scrollTop()-t.outerHeight(!0);\nt.css(\"top\",e+\"px\")},bindEvent:function(){var t=this;t.ie6&&$(window).on(\"resize.setFootStyle, scroll.setFootStyle\",function(){t.setFixedIe6()})}});var bds=bds||{};bds.se=bds.se||{},bds.se.tip=bds.se.tip||{},bds.comm.tipZIndex=220,bds.comm.tips=[],bds.se.tip=function(t){this.init=function(){this.op={target:t.target||{},mode:t.mode||\"over\",title:t.title||null,content:t.content||null,uncontrolled:t.uncontrolled?!0:!1,arrow:{has:1,offset:10,r:!1,c:!1},close:t.close||0,align:t.align||\"left\",offset:{x:10,y:20},arrowSize:16},t.arrow&&(this.op.arrow.has=0==t.arrow.has?0:1,this.op.arrow.offset=t.arrow.offset>=0?t.arrow.offset:10,this.op.arrow.r=t.arrow.r,this.op.arrow.c=t.arrow.c),t.offset&&(this.op.offset.x=t.offset.x||0==t.offset.x?t.offset.x:10,this.op.offset.y=t.offset.y||0==t.offset.y?t.offset.y:20),this.ext=t.ext||{},this.dom=$(\"
            \",{\"class\":\"c-tip-con\"}),this.visible=!1,this.rendered=!1,this.isAuto=\"auto\"===this.op.align?!0:!1,this.bindEvent()\n},this.render=function(){this.op.close&&this.enableCloseIcon(),this.op.title&&this.setTitle(this.op.title),this.op.content&&this.setContent(this.op.content),this.op.arrow.has&&this.enableArrow(),$(\"#c-tips-container\").append(this.dom)},this.bindEvent=function(){if(this.delay={overIcon:null,outIcon:null,overDom:null,outDom:null},\"over\"==this.op.mode){var t=this;$(t.op.target).on(\"mouseenter\",function(){window.clearTimeout(t.delay.outIcon),window.clearTimeout(t.delay.outDom),t.delay.overIcon=setTimeout(function(){t.show()\n},200)}),t.dom.on(\"mouseenter\",function(){window.clearTimeout(t.delay.outIcon),window.clearTimeout(t.delay.outDom),t.delay.overDom=setTimeout(function(){t.show()},200)}),$(t.op.target).on(\"mouseleave\",function(){window.clearTimeout(t.delay.overIcon),window.clearTimeout(t.delay.overDom),t.delay.outIcon=setTimeout(function(){t.hide()},200)}),t.dom.on(\"mouseleave\",function(){window.clearTimeout(t.delay.overIcon),window.clearTimeout(t.delay.overDom),t.delay.outIcon=setTimeout(function(){t.hide()},200)\n})}else if(\"none\"==this.op.mode){var t=this;t.show()}},this.enableArrow=function(){if(this.op.arrow.r)var t=$(\"
            \",{\"class\":\"c-tip-arrow\"}).html(\"\").appendTo(this.dom);else if(this.op.arrow.c)var t=$(\"
            \",{\"class\":\"c-tip-arrow\"}).html(\"\").appendTo(this.dom);else var t=$(\"
            \",{\"class\":\"c-tip-arrow\"}).html(\"\").appendTo(this.dom);this.arrow=t},this.enableCloseIcon=function(){var t=this,e=$(\"
            \",{\"class\":\"c-tip-close\"}).html(\"\").appendTo(this.dom).click(function(){t.hide()\n});this.close=e},this.setTitle=function(t){if(t.nodeType)var e=$(\"

            \",{\"class\":\"c-tip-title\"}).append(t).appendTo(this.dom);else var e=$(\"

            \",{\"class\":\"c-tip-title\"}).html(t).appendTo(this.dom);this.title=e},this.setContent=function(t){var e=$(\"
            \").html(t).appendTo(this.dom);this.content=e},this.setArrow=function(t){if(t&&t.offset>=0&&(this.op.arrow.offset=t.offset),this.op.arrow.has&&this.arrow)switch(this.op.align){case\"left\":this.arrow.css({left:this.op.arrow.offset+\"px\"});break;case\"right\":this.arrow.css({right:this.op.arrow.offset+16+\"px\"})\n}},this.setOffset=function(t){switch(t&&(this.op.offset.x=t.x||0==t.x?t.x:this.op.offset.x,this.op.offset.y=t.y||0==t.y?t.y:this.op.offset.y),this.op.align){case\"left\":var e=$(this.getTarget()).offset();this.getDom().css({top:e.top+this.op.offset.y+\"px\",left:e.left-this.op.offset.x+\"px\"});break;case\"right\":var e=$(this.getTarget()).offset();this.getDom().css({top:e.top+this.op.offset.y+\"px\",left:e.left+this.op.offset.x+$(this.getTarget()).width()-this.getDom().width()+\"px\"})}},this.autoOffset=function(){var t,e={w:this.dom.outerWidth(),h:this.dom.outerHeight()},n=$(this.getTarget()),o=n.offset(),i={w:n.outerWidth(),h:n.outerHeight()},r=$(window),s=r.scrollTop(),a={w:r.width(),h:r.height()},c={left:0,top:0},d={};\na.h+s-i.h-o.top>e.h?(c.top=i.h+o.top+this.op.arrowSize/2,this.arrow&&this.arrow.removeClass(\"c-tip-arrow-down\")):o.top-s>e.h?(c.top=o.top-e.h-this.op.arrowSize/2,this.arrow&&this.arrow.addClass(\"c-tip-arrow-down\")):(c.top=i.h+o.top+this.op.arrowSize/2,this.arrow&&this.arrow.removeClass(\"c-tip-arrow-down\")),t=o.left+i.w/2-this.op.arrow.offset-this.op.arrowSize/2,c.left=t,c.left>0&&c.left+e.w>a.w?(c.left=o.left+i.w/2-e.w+this.op.arrow.offset+this.op.arrowSize/2,d.right=this.op.arrow.offset+this.op.arrowSize,d.left=\"auto\",c.left<0&&(c.left=t,d.left=this.op.arrow.offset,d.right=\"auto\")):(d.left=this.op.arrow.offset,d.right=\"auto\"),this.dom.css(c),this.arrow&&this.arrow.css(d)\n},this.enable=function(){},this.disable=function(){},this.destroy=function(){},this.show=function(){this.visible||(this.onShow(),this.rendered||(bds.comm.tips.push(this),this.render(),this.rendered=!0),this.isAuto?this.autoOffset():(this.setOffset(),this.setArrow()),this.dom.css({\"z-index\":bds.comm.tipZIndex}),bds.comm.tipZIndex++,this.dom.css({display:\"block\"}),this.visible=!0)},this.hide=function(){this.visible&&(this.dom.css({display:\"none\"}),this.onHide(),this.visible=!1)},this.onShow=t.onShow||function(){},this.onHide=t.onHide||function(){},this.getTarget=function(){return this.op.target\n},this.getDom=function(){return this.dom},this.init()},bds.event.trigger(\"se.api_tip_ready\"),$(document).mousedown(function(t){t=t||window.event;for(var e=t.target||t.srcElement;e&&e.tagName&&e!=document.body&&\"html\"!=e.tagName.toLowerCase()&&\"c-tip-con\"!=e.className;)e=e.parentNode;e&&\"c-tip-con\"!=e.className&&$(bds.comm.tips).each(function(){this.op.uncontrolled||this.op.close&&this.hide()})});var sethfPos=sethfPos||0;!function(){function t(t){if(t){var e=t.parentNode;e&&(e.style.marginBottom=\"20px\",e.style.marginTop=\"2px\")\n}}var e=\"//www.baidu.com/\",n=-1!=navigator.userAgent.indexOf(\"MSIE\")&&!window.opera,o=(100*Math.random(),\"百度一下,你就知道\"),i=\"\";if(window.fa=function(t){try{window.sidebar?window.sidebar.addPanel(o,e,\"\"):window.opera&&window.print?(t.setAttribute(\"rel\",\"sidebar\"),t.setAttribute(\"href\",e),t.setAttribute(\"title\",o),t.click()):window.external.AddFavorite(e,o)}catch(n){}},n)try{var r=/se /gi.test(navigator.userAgent),s=/AppleWebKit/gi.test(navigator.userAgent)&&/theworld/gi.test(navigator.userAgent),a=/theworld/gi.test(navigator.userAgent),c=/360se/gi.test(navigator.userAgent),d=/360chrome/gi.test(navigator.userAgent),l=/greenbrowser/gi.test(navigator.userAgent),u=/qqbrowser/gi.test(navigator.userAgent),m=/tencenttraveler/gi.test(navigator.userAgent),p=/maxthon/gi.test(navigator.userAgent),f=/krbrowser/gi.test(navigator.userAgent),h=!1;\ntry{h=+external.twGetVersion(external.twGetSecurityID(window)).replace(/\\./g,\"\")>1013}catch(g){}if(r||h||s||a||c||d||l||u||m||p||f){var b=document.getElementById(sethfPos?\"set_f\":\"setf\");b&&sethfPos&&(t(b),i=\"favorites\")}else{var v=document.getElementById(sethfPos?\"set_f\":\"setf\");v&&sethfPos&&(t(v),i=\"home\"),v.setAttribute(\"onClick\",\"h(this)\"),v.setAttribute(\"onmousedown\",\"return ns_c({'fm':'behs','tab':'homepage','pos':0})\"),v.href=\"/\",v.target=\"_self\",v.id=\"seth\"}}catch(g){}else{var b=document.getElementById(sethfPos?\"set_f\":\"setf\");\nsethfPos&&(t(b),i=\"favorites\")}i&&sethfPos&&ns_c({fm:\"sethf_show\",tab:i})}(),bds.se.loginCallbackFunc=null,bds.se.login=function(){var t=\"\",e=!1,n=\"\",o=function(t){var e=t||bds.comm.user;e&&$(\"#lb\").replaceWith(''+escapeHTML(bds.comm.username)+'')},i=function(o){e?(bds.se.passv3.setSubpro(t),bds.se.passv3.setMakeText(n),bds.se.loginCallbackFunc=o||function(){window.document.location.reload(!0)},bds.se.passv3.show()):$.getScript(location.protocol+\"//passport.baidu.com/passApi/js/uni_login_wrapper.js?cdnversion=\"+(new Date).getTime(),function(){initPassV3(),e=!0,bds.se.passv3.setSubpro(t),bds.se.passv3.setMakeText(n),bds.se.loginCallbackFunc=o||function(){window.document.location.reload(!0)\n},bds.se.passv3.show()})},r=function(t){if(bds.comm){bds.comm.user=t,bds.comm.username=t,window.bdUser=t,bds.se.passv3.hide(),bds.se.loginCallbackFunc.call(window,1,t);for(var e=0;e\",{\"class\":\"c-tip-menu\"}),toolsList=$(\"
              \"),toolsFavo=$(\"
            • \"),toolsFavoLink=$(\"\").html(\"收藏\");toolsFavoLink.on(\"mousedown\",function(){bds.se.tool.favo(ops,item.getAttribute(\"id\")),ns_c({fm:\"tools\",tab:\"favo\"})}),toolsFavoLink.on(\"mouseover\",function(){$(this).css(\"background-color\",\"#ebebeb\")}),toolsFavoLink.on(\"mouseout\",function(){$(this).css(\"background-color\",\"#fff\")}),toolsFavo.append(toolsFavoLink),toolsList.append(toolsFavo);\nvar toolsShare=$(\"
            • \"),toolsShareLink=$(\"\").html(\"分享\");toolsShareLink.on(\"mousedown\",function(){bds.se.tool.share(ops,item),ns_c({fm:\"tools\",tab:\"share\"})}),toolsShareLink.on(\"mouseover\",function(){$(this).css(\"background-color\",\"#ebebeb\")}),toolsShareLink.on(\"mouseout\",function(){$(this).css(\"background-color\",\"#fff\")}),toolsShare.append(toolsShareLink),toolsList.append(toolsShare);var fromType;fromType=$(item).parent().find(\".c-pingjia a\").attr(\"data-from\")?$(item).parent().find(\".c-pingjia a\").attr(\"data-from\"):\"ps_pc\";\nvar toolsKoubei=$(\"
            • \").html(\"评价');toolsList.append(toolsKoubei);var officalLogo=$($(item).closest(\".c-container\").find(\"h3.t\").children()[1]),vLogo=$(item).parent().find(\".vstar\"),isOffical=0,vLevel=0;\nofficalLogo&&\"官网\"==officalLogo.html()&&(isOffical=1),vLogo&&vLogo.attr(\"hint-data\")&&(vLevel=$.parseJSON(vLogo.attr(\"hint-data\")).hint[0].vlevel);var toolsReport=$(\"
            • \").html(\"举报');\ntoolsList.append(toolsReport),toolsDom.append(toolsList);var tTip=new bds.se.tip({target:$(\".c-icon\",item)[0],mode:\"none\",align:\"left\",offset:{x:33},arrow:{has:1,offset:30},content:toolsDom,ext:{category:\"tools\"}});tTip.onShow=function(){ns_c({fm:\"tools\",tab:\"show\"})}},this.init()},bds.se.tool.share=function(t,e){this.op=t||{},this.init=function(t,e){$.getScript(bds.comm.host.share,function(){$(bds.comm.tips).each(function(){this.op.uncontrolled||this.hide()});var n=new bds.se.tip({target:$(\".c-icon\",e)[0],mode:\"none\",offset:{x:33},arrow:{has:0},close:1,content:'
              '}),o=$(\".c-tools-share\",n.dom.get(0))[0];\n__bdshare.render({boxEle:o,url:t.url,txt:t.title+\" -- 分享自百度搜索\"})})}(this.op,e)},bds.se.tool.favo=function(t,e){if(this.op=t||{},this.init=function(t,e){if(t){var n=document.createElement(\"script\"),o=bds.comm.host.bfe,i=bds.comm.host.favo;n.src=o+\"?url=\"+encodeURIComponent(t.url)+\"&jump=\"+encodeURIComponent(i+\"/myfavorite/set?irt=1&t=\"+encodeURIComponent(t.title)+\"&id=\"+encodeURIComponent(e)+\"&c=bds.se.tool.favo.succ\")+\"&key=url\",document.body.appendChild(n)}},bds.comm.user)this.init(this.op,e);else if(bds.se.login&&bds.se.login.open){var n=this;\nbds.se.login.open(function(t){1==t&&n.init(n.op,e)})}},bds.se.tool.favo.succ=function(json){if(json.suc){if(json.status)switch(json.status){case 302:bds.se.login&&bds.se.login.open&&bds.se.login.open(function(stat,user){1==stat&&bds.se.tool.favo(eval(\"(\"+$(\"#\"+json.id)[0].getAttribute(\"data-tools\")+\")\"),json.id)});break;case 5:var succContent='
              ';succContent+='

              收藏失败,请稍后再试

              ',succContent+=\"
              \"}}else if(json.status){var succContent='
              ';\nswitch(succContent+='

              已收藏至:

              ',succContent+=\"\",succContent+=\"
              \"}$(bds.comm.tips).each(function(){this.op.uncontrolled||this.hide()}),succContent&&new bds.se.tip({target:$(\".c-icon\",document.getElementById(json.id))[0],offset:{x:33},arrow:{has:0},mode:\"none\",arrow:{has:0},close:1,content:succContent})\n};var bds=bds||{};bds.se=bds.se||{},bds.se.tools=bds.se.tools||{},bds.se.tools=function(){var t=delayHideOnIcon=delayShowOnTip=delayHideOnTip={};$(\"#container\").delegate(\".c-tools\",\"mouseover\",function(){var e=this;window.clearTimeout(delayHideOnIcon),window.clearTimeout(delayHideOnTip),t=setTimeout(function(){var t=1;$(bds.comm.tips).each(function(){return this.getTarget()==$(\".c-icon\",e)[0]?(t=0,this.show(),!1):void 0}),t&&(tools=new bds.se.tool(e))},200)}).delegate(\".c-tools\",\"mouseout\",function(){window.clearTimeout(t),window.clearTimeout(delayShowOnTip);\nvar e=this;delayHideOnIcon=setTimeout(function(){$(bds.comm.tips).each(function(){return this.getTarget()==$(\".c-icon\",e)[0]?(this.hide(),!1):void 0})},200)}),$(\"#c-tips-container\").delegate(\".c-tip-con\",\"mouseover\",function(){var t=this;window.clearTimeout(delayHideOnIcon),window.clearTimeout(delayHideOnTip),delayShowOnTip=setTimeout(function(){$(bds.comm.tips).each(function(){return this.getDom().get(0)==t&&this.ext.category&&\"tools\"==this.ext.category?(this.show(),!1):void 0})},200)}).delegate(\".c-tip-con\",\"mouseout\",function(){window.clearTimeout(t),window.clearTimeout(delayShowOnTip);\nvar e=this;delayHideOnTip=setTimeout(function(){$(bds.comm.tips).each(function(){return this.getDom().get(0)==e&&this.ext.category&&\"tools\"==this.ext.category?(this.hide(),!1):void 0})},200)})};var bds=bds||{};bds.se=bds.se||{},bds.se.slide=function(t){var e,n,o,i,r,s=this,a={},d=[],l=0,u=null;this._default={target:$(\"#lg\"),src:\"\",width:270,height:129,offsetLeft:0,isPad:!1,isRetina:!1,frames:103,animations:[{isAutoPlay:!0,frame_start:1,frame_end:30,delay:0,duration:100,repeats:0,process_before:function(){},event_loop:0,process_after:function(){}},{trigger_type:\"click\",trigger_duration:100,trigger_frame:31,trigger_fn:function(){},frame_start:32,frame_end:103,process_before:function(){},process_after:function(){},delay:0,duration:100,repeats:1,event_loop:0}]},this.timer=[],this.otherTimer=[],this.op=$.extend({},s._default,t),this.init=function(){return s.op.src?(s.createDom(),void(bds.comm.ishome&&s.op.target.length&&s.initAnimate())):void s.createPlayer()\n},this.createPlayer=function(){var t=s.op.target.find(\"map\"),e=t.length?t.find(\"area\").eq(0):\"\",o=s.op.play;o&&(n=$('\").appendTo(s.op.target),e.length?(n.wrap(''),e.attr(\"title\")&&n.attr(\"title\",e.attr(\"title\"))):n.wrap('
              '),n.on(o.trigger_type,function(){return o.trigger_duration?s.timer.push(window.setTimeout(function(){o.trigger_fn.call(s.op)\n},o.trigger_duration)):o.trigger_fn.call(s.op),!1}))},this.createDom=function(){var t='
              ',l=s.op.offsetLeft+\"px 0\",u=s.op.target.find(\"map\"),m=u.length?u.find(\"area\").eq(0):\"\",p=m?\"pointer\":p,f=s.op.animations instanceof Array?s.op.animations:[s.op.animations],h=s.op.width,g=s.op.height;d=f,i=h,r=g,t=$.format(t,s.op.src,l,p,s.op.width,s.op.height,s.op.width/2),\"static\"===s.op.target.css(\"position\")&&s.op.target.css({position:\"relative\",width:\"100%\"}),s.op.target.append(t),e=o=s.op.target.find(\"div\").eq(0),s.op.play&&(n=$('\").insertAfter(e),o=n),s.op.isPad&&e.css(\"background-size\",s.op.width*s.op.frames/2+\"px \"+s.op.height+\"px\"),window.devicePixelRatio&&window.devicePixelRatio>1&&s.op.isRetina&&e.css(\"background-size\",s.op.width*s.op.frames+\"px \"+s.op.height+\"px\"),m.length?(e.wrap(''),m.attr(\"title\")&&e.attr(\"title\",m.attr(\"title\"))):e.on(\"mousedown\",function(){c({tab:\"logo_button_click\"})\n});for(var b=0,v=d.length;v>b;b++){var w=d[b],_=w.frame_start;l=-((_-1)*h)+\"px 0\",a[b]={\"background-position\":l,cursor:p}}},this.initAnimate=function(){function t(){e.show(),s.play()}if(!(l>=d.length)){var n=d[l],i=n.isAutoPlay,r=n.trigger_type,a=n.trigger_fn,c=n.trigger_duration,m=n.trigger_frame,p=$(\"#lg area\");p.length&&p.attr(\"onmousedown\")&&e.on(\"mousedown\",function(){return new Function(p.attr(\"onmousedown\"))()}),u=new Image,u.src=s.op.src,e.bind(\"first_animate\",function(){u.complete?t():u.onload=t\n}),i?e.trigger(\"first_animate\"):r&&(s.enablePointer(),o.show().on(r,function(){a&&(m&&s.toPos(m),a.call(s.op),c?s.timer.push(setTimeout(function(){e.trigger(\"first_animate\")},c)):e.trigger(\"first_animate\"))}))}},this.enablePointer=function(){bds.comm.upn&&\"msie\"===bds.comm.upn.browser&&\"6\"===bds.comm.upn.ie?alert(\"pointer\"):e.css(\"cursor\",\"pointer\")},this.disablePointer=function(){e.css(\"cursor\",\"default\")},this.play=function(){if(l>=d.length)return void s.dispose();var t=d[l],e=t.process_before;\ns.dispose(),e&&e.call(s),s.animation()},this.toPos=function(t){var n=-((t-1)*i)+\"px 0\";e.css(\"background-position\",n)},this.animation=function(){var t,n=d[l],r=n.duration,a=n.frame_start,c=n.frame_end,u=n.delay,m=n.repeats,p=n.process_after,f=n.trigger_type,h=a-1>0?a-1:0,g=n.event_loop||0,b=0;if(t=g?d[l]:l+1>=d.length?d[l]:d[l+1]){var v=t.trigger_type,w=t.trigger_fn,_=t.trigger_duration,y=t.trigger_frame;v&&(f&&o.off(f),l=c?(s.dispose(),b++,0!==m&&b>=m?(h=null,b=null,p&&p.call(s),l++,l0?a-1:0,s.timer.push(setTimeout(arguments.callee,r)))):s.timer.push(setTimeout(arguments.callee,r))},u))}()},this.dispose=function(t){t=t||s.timer;for(var e=0,n=t.length;n>e;e++)window.clearTimeout(t[e]);t.length=0},this.disposeOther=function(t){t=t||s.otherTimer;\nfor(var e=0,n=t.length;n>e;e++)window.clearTimeout(t[e]);t.length=0},this.clear=function(){s.dispose(),s.disposeOther(),o.off(\"click\").off(\"hover\")},this.reset=function(t){t=t||0,e.css(a[t])},this.init()};var bds=bds||{};bds.se=bds.se||{},bds.se.banner=function(t,e,n){this.init=function(){n=n||{},this.$dom_panel=$(t),this.hintText=e,this.hintIcon=n.iconClass||\"\",this.downUrl=n.downUrl||\"\",this.hintCookie=n.cookie||\"\",this.showNum=this.hintCookie&&$.getCookie(this.hintCookie)?Number($.getCookie(this.hintCookie)):0,this.nscTab=n.nscTab||\"\",this.ishome=bds.comm&&1==bds.comm.ishome?1:0,this.bannerType=n.bannerType||\"\",t&&e&&this.showNum<5&&!$(\".baiduapp_banner\")[0]&&!$(\".res_top_banner\")[0]&&!$(\".res_top_banner_for_win\")[0]&&this.show()\n},this.show=function(){this.render(),this.showNum+=1,$.setCookie(this.hintCookie,this.showNum,{expires:2592e6}),this.$dom_panel.prepend(this.bannerHtml),1!=this.ishome&&this.headFloat(),this.bindEvent(),ns_c({fm:\"behs\",tab:(1==this.ishome?\"tj_\":\"\")+\"baidu_\"+(this.nscTab?this.nscTab:\"topbanner\")+\"show\"})},this.render=function(){var t=[];t=t.concat(\"WIN\"!==this.bannerType?['
              ','',\"\"+this.hintText+\"\",this.downUrl?'立即体验':\"\",'',\"
              \"]:['
              ','',\"\"+this.hintText+\"\",this.downUrl?'立即体验':\"\",'',\"
              \"]),this.bannerHtml=t.join(\"\")\n},this.headFloat=function(){var t=$(\"#head\"),e=$(window),n=$(\".res_top_banner\");t.css(\"position\"),$(window).scroll(function(){var o=n.height()||0,i=e.scrollTop();o>=i?t.attr(\"style\",\"position:absolute;\"):t.attr(\"style\",\"top:0px;_top:\"+o+\"px;\")})},this.bindEvent=function(){if(\"WIN\"!==this.bannerType){var t=$(\".res_top_banner\"),e=this;$(\".res_top_banner_download\",t).on(\"mousedown\",function(){e.hintCookie&&$.setCookie(e.hintCookie,5,{expires:2592e6}),ns_c({fm:\"behs\",tab:(1==e.ishome?\"tj_\":\"\")+\"baidu_\"+(e.nscTab?e.nscTab:\"topbanner\")+\"down\"})\n}),$(\".res_top_banner_close\",t).on(\"mousedown\",function(){t.detach(),e.hintCookie&&$.setCookie(e.hintCookie,5,{expires:2592e6}),ns_c({fm:\"behs\",tab:(1==e.ishome?\"tj_\":\"\")+\"baidu_\"+(e.nscTab?e.nscTab:\"topbanner\")+\"close\"})}),$(window).on(\"swap_begin\",function(){t.detach()})}else{var t=$(\".res_top_banner_for_win\"),e=this;$(\".res_top_banner_download\",t).on(\"mousedown\",function(){e.hintCookie&&$.setCookie(e.hintCookie,5,{expires:2592e6}),ns_c({fm:\"behs\",tab:(1==e.ishome?\"tj_\":\"\")+\"baidu_\"+(e.nscTab?e.nscTab:\"topbanner\")+\"down\"})\n}),$(\".res_top_banner_close\",t).on(\"mousedown\",function(){t.detach(),e.hintCookie&&$.setCookie(e.hintCookie,5,{expires:2592e6}),ns_c({fm:\"behs\",tab:(1==e.ishome?\"tj_\":\"\")+\"baidu_\"+(e.nscTab?e.nscTab:\"topbanner\")+\"close\"})}),$(window).on(\"swap_begin\",function(){t.detach()})}},this.init()},function(){$(window).on(\"swap_end\",function(){var t=[\"union\",\"union2baidu\",\"union_cpro\",\"union_nosearch\",\"redbull\",\"hao123\"],e=bds.comm.upn,n=navigator.userAgent.toLowerCase().search(/msie [6-7]/);if(winFilter=/NT 6.1|NT 6.2|NT 6.3/i.test(navigator.userAgent),bds.comm.topHijack)for(var o=0;o0){var i=\"6\"==e.ie?\"您的浏览器采用的IE6内核已停止维护,推荐升级到更快更安全的百度浏览器!\":\"您的IE浏览器版本较低,即将停止更新维护,建议升级到更快、更安全的百度浏览器。\";bds.se.banner($(\"body\")[0],i,{downUrl:\"http://j.br.baidu.com/v1/t/ui/p/browser/tn/10105001/ch_dl_url\",cookie:\"H_PS_BBANNER\",nscTab:\"browser\"})}})}(),bds.se.safeTip=function(){function t(){var t=0,e=[\"bd\"],n=\"\",o=[];$(\".unsafe_ico_new\").each(function(e,i){o.push(i.getAttribute(\"data-id\")),n=i.getAttribute(\"data-tpl\");\nvar r=$(i).attr(\"data-href\"),s=$(i).attr(\"href\"),a=r?r:s;$(\"h3 a\",$(i).parents(\".result\")).attr(\"href\",a),t++}),t>0&&ns_c({tab:\"safetip\",num_unsafe:t,prd:e.join(\"|\"),hintId:o,hintTpl:n})}return{init:t}}();var bds=bds||{};bds.se=bds.se||{},bds.se.trust=bds.se.trust||{},bds.se.trust=function(){function t(){d=[],l=[],$(\".c-trust\").each(function(){var t=$(this),e=this.getAttribute(\"data_key\");0==t.parent(\".c-icons-inner\").length&&t.wrap(\"\"),-1==$.inArray(e,d)&&d.push(this.getAttribute(\"data_key\")),-1==$.inArray(this,l)&&l.push(this)\n}),$(\".c-trust-as\").each(function(){p=$.parseJSON($(this).attr(\"hint-data\")),p&&!$(this).attr(\"render\")&&(m=$(this),s(p,$(this).attr(\"hint-type\")),$(this).attr(\"render\",\"render\"))}),d.length<1||(f&&g0&&o(p.vstar.hint[0].vlevel,p.vstar.url),p.medical&&i(),p.aviation&&r())\n})}function o(t,e){var n=$(\"\",{\"class\":\"c-vline\"}),o=$(\"\",{\"class\":\"c-icon c-icon-v\"+t,target:\"_blank\",onclick:\"return false\",href:\"#\"});e&&o.attr({href:e,onclick:\"\"}),m.append(n),m.append(o),s(p.vstar,\"vstar\")}function i(){var t=$(\"\",{\"class\":\"c-vline\"}),e=$(\"\",{\"class\":\"c-icon c-icon-med\",target:\"_blank\",onclick:\"return false\",href:\"#\"});m.append(t),m.append(e),s(p.medical,\"medical\")}function r(){var t=$(\"\",{\"class\":\"c-vline\"}),e=$(\"\",{\"class\":\"c-icon c-icon-air\",target:\"_blank\",onclick:\"return false\",href:\"#\"});\nm.append(t),m.append(e),s(p.aviation,\"aviation\")}function s(t,e){var n=t.hint,o=\"over\",i=t.url,r=t.webIMUrl;if(t&&n){if(\"vstar\"==e||\"baozhang\"==e||\"baozhang-v\"==e||\"chengqi\"==e||\"baozhang-v-auth\"==e)var s=\"
                \";else var s=\"
                  \";for(var c=0;c\":\">\",s+=a(n[c].txt),s+=\"\"):o=\"none\";\ns+=\"
                \";var d=!1,l=!1;\"baozhang-v\"==e||\"baozhang-v-auth\"==e?d=!0:\"chengqi\"==e&&(l=!0);var u=new bds.se.tip({target:m,mode:o,align:\"auto\",content:s,arrow:{has:1,offset:35,r:d,c:l},offset:{x:0,y:25}});u.onShow=function(){A.use(\"honourCard4\",function(){});var o=n[0].vlevel,a=n[0].unfixedInfo;ns_c({hintUrl:m.attr(\"data_key\"),hintTpl:e,hintId:o}),-1!=s.indexOf(\"ecard\")&&setTimeout(function(){A.use(\"honourCard4\",function(){var s=$(u.getDom()).find(\".c-trust-ecard4\"),c=0;\"baozhang\"==e&&(c=n[0].bzAppliCounts);\nvar d={compName:t.label,vLevel:o,centerPageUrl:i};a&&(d.unfixedInfo=a),r&&(d.webIMUrl=r),e&&(d.type=e),c&&(d.bzAppliCounts=c),t.brandName&&(d.brandName=t.brandName),t.brandLogo&&(d.brandLogo=t.brandLogo),t.brandScope&&(d.brandScope=t.brandScope),t.brandRelation&&(d.brandRelation=t.brandRelation),t.authBrandName&&(d.authBrandName=t.authBrandName),t.authBizScope&&(d.authBizScope=t.authBizScope),t.authBizType&&(d.authBizType=t.authBizType),A.ui.honourCard4(s,d)})},0),$(\"li\",this.dom).each(function(){$(\"a\",this).each(function(t){this.onmousedown=function(){ns_c({hintUrl:i,hintTpl:e,title:this.innerHTML,pos:t})\n}})})}}}function a(t){var e=t;return e=e.replace(//g,\">\").replace(/'/g,\"'\").replace(/\"/g,\""\"),e=e.replace(\"[/url]\",\"
                \").replace(/\\[url ([^\\s]*)\\]/,\"\"),e=e.replace(/\\[img ([^\\s]*)\\]/,\"\"),e=e.replace(/\\[ecard (-?[\\d]{0,3})\\]/,\"
                \")}var c=4,d=[],l=[];if(bds.util&&bds.util.domain&&bds.util.domain.get)var u=bds.util.domain.get(\"http://tag.baidu.com\");else var u=\"http://tag.baidu.com\";\nvar m=null,p=null,f=!1,h=null,g=0;return t(),{init:t,render:n}}();var __callback_names={};$(function(){bds.comm.user&&\"\"!=bds.comm.user&&setTimeout(function(){$.ajax({dataType:\"script\",cache:!0,url:(bds.su&&bds.su.urStatic?bds.su.urStatic:\"http://ss.bdimg.com\")+\"/static/exceptionStackTrace/js/mt_show_1.8.js\",success:function(){function t(){$(\"#imsg\")[0]&&$(\"#u\")[0]&&$(\"#user\")[0]&&(bds.se.exceptionStackTrace&&bds.se.exceptionStackTrace.init&&bds.se.exceptionStackTrace.init({button:$(\"#imsg\"),refer:$(\"#u\")}),$(\"#user\").on(\"mouseover\",function(){$(\"#s_mod_msg\").hide()\n})),$(\"#imsg1\")[0]&&$(\"#u1\")[0]&&$(\"#user1\")[0]&&(bds.se.exceptionStackTrace&&bds.se.exceptionStackTrace.init&&bds.se.exceptionStackTrace.init({button:$(\"#imsg1\"),refer:$(\"#u1\")}),$(\"#user1\").on(\"mouseover\",function(){$(\"#s_mod_msg\").hide()}))}function e(){bds.se.exceptionStackTrace&&bds.se.exceptionStackTrace.addStyle&&bds.se.exceptionStackTrace.addStyle()}bds.comm.loginAction.push(function(n){1==n&&(t(),e())}),bds.comm.newindex?$(window).on(\"index_off\",function(){setTimeout(function(){t(),e()},0)}):(t(),e()),$(window).on(\"swap_end\",e)}})},0)}),$(window).on(\"swap_end\",function(){var t='
                ',e=\"//www.baidu.com/cache/fpid/ielib_0108.js\",n=\"//www.baidu.com/cache/fpid/chromelib_0108.js\",o=document.title,i={flashDomId:\"_FP_userDataDiv\",comDomId:\"_FP_comDiv\",IEStoreDomId:\"_FP_userDataDiv\"},r=navigator.userAgent.toLowerCase(),s=!1;\n(r.indexOf(\"msie\")>=0||new RegExp(\"trident(.*)rv.(\\\\d+)\\\\.(\\\\d+)\").test(r))&&(s=!0);var a,c=!1,d=new RegExp(\"chrome/(\\\\d+)\"),l=r.match(d);if(l&&(c=!0,a=l[1]),!(c&&a>=39)){$(\"body\").append(t);var u=function(t){s&&window.setTimeout(function(){document.title=o},0),window._FPID_CACHE=t,$(\"#_FP_userDataDiv\").remove(),$(\"#_FP_comDiv\").remove();var e=bds.comm.qid,n=\"_WWW_BR_API_\"+(new Date).getTime(),i=window[n]=new Image;i.onload=function(){window[n]=null};var r=$.getCookie(\"BAIDUID\"),a=$.getCookie(\"BIDUPSID\"),c=bds&&bds.util&&bds.util.domain?bds.util.domain.get(\"http://eclick.baidu.com/ps_fp.htm?\"):\"http://eclick.baidu.com/ps_fp.htm?\",d=c+\"pid=ps&fp=\"+t.data.fp+\"&im=\"+t.data.im+\"&wf=\"+t.data.wf+\"&br=\"+t.data.br+\"&qid=\"+e+\"&bi=\"+r+\"&psid=\"+a;\ni.src=d};return window._FPID_CACHE?void(window._FPIDTimer=window.setTimeout(function(){u(window._FPID_CACHE)},2500)):void(window._FPIDTimer=window.setTimeout(function(){var t=\"\";t=s?e:n,$.ajax({url:t,cache:!0,dataType:\"script\",success:function(){fpLib.getFp(u,i)}})},2500))}}),$(window).on(\"swap_begin\",function(){window._FPIDTimer&&(window.clearTimeout(window._FPIDTimer),$(\"#_FP_userDataDiv\").remove(),$(\"#_FP_comDiv\").remove())});var bds=bds||{};bds.se=bds.se||{},bds.se.upn={regexp:/BD_UPN=([\\w|\\d]*)/,cookieset:[],write:function(t){document.cookie=\"BD_UPN=\"+t+\"; expires=\"+new Date((new Date).getTime()+864e6).toGMTString()\n},set:function(t){var e=this;try{$.isArray(t)&&(e.cookieset=e.cookieset.concat(t))}catch(n){}},run:function(){var t=this;try{for(var e=\"\",n=0;n0?o.match(/lbbrowser/gi):o.indexOf(\"maxthon\")>0?o.match(/maxthon\\/[\\d.]+/gi):o.indexOf(\"bidubrowser\")>0?o.match(/bidubrowser/gi):o.indexOf(\"baiduclient\")>0?o.match(/baiduclient/gi):o.indexOf(\"metasr\")>0?o.match(/metasr/gi):o.indexOf(\"qqbrowser\")>0?o.match(/qqbrowser/gi):!function(){if(navigator.mimeTypes.length>0){var t;\nfor(t in navigator.mimeTypes)if(\"application/vnd.chromium.remoting-viewer\"==navigator.mimeTypes[t].type)return!0}return!1}()&&\"track\"in document.createElement(\"track\")&&!(\"scoped\"in document.createElement(\"style\"))&&!(\"v8Locale\"in window)&&/Gecko\\)\\s+Chrome/.test(navigator.appVersion)&&\"track\"in document.createElement(\"track\")&&\"scoped\"in document.createElement(\"style\")&&\"v8Locale\"in window?\"qihu\":o.indexOf(\"msie\")>0?o.match(/msie [\\d.]+;/gi):window.document.documentMode?\"msie\":o.indexOf(\"edge\")>0?o.match(/edge\\/[\\d.]+/gi):o.indexOf(\"firefox\")>0?o.match(/firefox\\/[\\d.]+/gi):o.indexOf(\"opr\")>0?o.match(/opr\\/[\\d.]+/gi):o.indexOf(\"chrome\")>0?o.match(/chrome\\/[\\d.]+/gi):o.indexOf(\"safari\")>0&&o.indexOf(\"chrome\")<0?o.match(/safari\\/[\\d.]+/gi):\"\"\n}function e(){var t=\"Win32\"==navigator.platform||\"Windows\"==navigator.platform,e=\"Mac68K\"==navigator.platform||\"MacPPC\"==navigator.platform||\"Macintosh\"==navigator.platform||\"MacIntel\"==navigator.platform;if(e)return\"mac\";var n=\"X11\"==navigator.platform&&!t&&!e;if(n)return\"unix\";var o=String(navigator.platform).indexOf(\"Linux\")>-1;return o?\"linux\":t?\"windows\":\"other\"}var n=navigator.userAgent,o=n.toLowerCase();browser=(t()+\"\").replace(/[0-9.\\/|;|\\s]/gi,\"\"),browserversion=function(){return\"msie\"==browser?n.search(/MSIE [2-5]/)>0?\"ie5\":n.indexOf(\"MSIE 6\")>0?\"ie6\":n.indexOf(\"MSIE 7\")>0?\"ie7\":n.indexOf(\"MSIE 8\")>0?\"ie8\":n.indexOf(\"MSIE 9\")>0?\"ie9\":n.indexOf(\"MSIE 10\")>0?\"ie10\":\"11\"==window.document.documentMode?\"ie11\":\"other\":\"\"\n}(),browsertype=function(){return o.indexOf(\"msie\")>0||new RegExp(\"trident(.*)rv.(\\\\d+)\\\\.(\\\\d+)\").test(o)?\"ie\":o.indexOf(\"firefox\")>0?\"firefox\":o.indexOf(\"chrome\")>0?\"chrome\":o.indexOf(\"safari\")>0&&o.indexOf(\"chrome\")<0?\"safari\":\"other\"}(),os=e(),osversion=function(){return\"windows\"==os?n.indexOf(\"Windows NT 5.1\")>-1||n.indexOf(\"Windows XP\")>-1?\"xp\":(isWinVista=n.indexOf(\"Windows NT 6.0\")>-1||n.indexOf(\"Windows Vista\")>-1)?\"vista\":n.indexOf(\"Windows NT 6.1\")>-1||n.indexOf(\"Windows 7\")>-1?\"win7\":n.indexOf(\"Windows NT 6.2\")>-1||n.indexOf(\"Windows 8\")>-1?\"win8\":n.indexOf(\"Windows NT 6.3\")>-1||n.indexOf(\"Windows 8.1\")>-1?\"win8.1\":n.indexOf(\"Windows NT 10\")>-1?\"win10\":\"other\":void 0\n}();var i=function(t){var e=0;switch(t){case\"msie\":e=1;break;case\"chrome\":e=2;break;case\"firefox\":e=3;break;case\"safari\":e=4;break;case\"opr\":e=5;break;case\"lbbrowser\":e=6;break;case\"maxthon\":e=7;break;case\"bidubrowser\":e=8;break;case\"metasr\":e=9;break;case\"qqbrowser\":e=\"a\";break;case\"qihu\":e=\"b\";break;case\"baiduclient\":e=\"c\";break;case\"edge\":e=\"d\"}return e}(browser),r=function(t){var e=0;switch(t){case\"ie6\":e=1;break;case\"ie7\":e=2;break;case\"ie8\":e=3;break;case\"ie9\":e=4;break;case\"ie10\":e=5;break;\ncase\"ie11\":e=6;break;case\"other\":e=7;break;case\"ie5\":e=8}return e}(browserversion),s=function(t){var e=0;switch(t){case\"windows\":e=1;break;case\"mac\":e=2;break;case\"linux\":e=3;break;case\"unix\":e=4}return e}(os),a=function(t){var e=0;switch(t){case\"xp\":e=1;break;case\"vista\":e=2;break;case\"win7\":e=3;break;case\"win8\":e=4;break;case\"win8.1\":e=5;break;case\"other\":e=6;break;case\"win10\":e=7}return e}(osversion),c=function(t){var e=0;switch(t){case\"ie\":e=1;break;case\"firefox\":e=2;break;case\"chrome\":e=3;break;\ncase\"safari\":e=4}return e}(browsertype);return[{k:1,v:i},{k:2,v:r},{k:3,v:s},{k:4,v:a},{k:5,v:c}]}()),bds.se.upn.run(),bds.se.heightControl={check:function(){return $(\"#content_right\").height()>$(\"#content_left\").height()},cleanEC:function(){var t=$(\".ec_bdtg\"),e=$(\"#ec_im_container\").children(\"div\"),n=e.length,o=n-1;for(bds.se.heightControl.check()&&t&&t.length&&t.css(\"display\",\"none\");bds.se.heightControl.check()&&o>=0;){var i=e[o];$(i).css(\"display\",\"none\"),o--}},cleanRes:function(){var t=$(\"#content_right\").find(\".result-op\"),e=t.length,n=e-1;\nif(0==n){var o=$(t[0]).parent();$(\"#content_right\").height()+t.height()<$(\"#content_left\").height()&&o.css({position:\"static\"})}else for(;bds.se.heightControl.check()&&n>0;){var i=t[n];$(i).css(\"display\",\"none\"),n--}},init:function(){bds.se.heightControl.cleanEC(),bds.se.heightControl.cleanRes()}},!function(){function t(){this.start=null,this.mouse=[],this.mouseTime=null,this.mouseSpeed=500,this.key=[],this.scroll=[],this.scrollTime=null,this.scrollSpeed=500,this.debug=!1,this.dataStore={},this.t=null,this.cycle=null,this.MIN_SPEED=2e3,this.MAX_SPEED=1e4,this.curSpeed=5e3,this.stayTime=0,this.heartTime=[],this.heartT=null,this.MAX_LEN=2e3,this.storeLen=-1,this.MAX_SEND=100,this.hostEnum={SCLICK:0,NSCLICK:1,SESTAT:2},this.keyMap={new_input:2,new_disp:2,new_view:2,new_user:2,new_heart:2,flow_monitor:2},this.hostAddr=[bds&&bds.comm&&bds.comm.ubsurl?bds.comm.ubsurl+\"?\":\"\",(bds&&bds.util&&bds.util.domain?bds.util.domain.get(\"http://nsclick.baidu.com\"):\"http://nsclick.baidu.com\")+\"/v.gif?\",(bds&&bds.util&&bds.util.domain?bds.util.domain.get(\"http://sestat.baidu.com\"):\"http://sestat.baidu.com\")+\"/wb.gif?\"],this.commLog={},this.isFirst=!0,this.sendNum={},this.init()\n}t.prototype={setCommLog:function(t,e,n){if(!bds||!bds.comm)return!1;if(!(t in this.commLog)){var o={};e&&n?(o.log=e,o.len=n):(o.log=\"&q=\"+bds.comm.queryEnc+\"&qid=\"+bds.comm.qid+\"&rsv_did=\"+bds.comm.did+\"&rsv_tn=\"+bds.comm.tn+\"&rsv_sid=\"+bds.comm.sid,o.len=(o.log+\"&t=\"+(new Date).getTime()).length),this.commLog[t]=o}return!0},fb:function(){var t,e=this.heartTime.length;return t=0===e||1===e?3e3:this.heartTime[e-1]+this.heartTime[e-2],this.heartTime.push(t),t},sendHeart:function(t){var e=0===t?this.stayTime:(new Date).getTime()-this.start,n=bds&&bds.comm&&bds.comm.qid;\nif(n&&n in this.commLog&&n in this.sendNum){var o=[{stay_time:e,send_num:this.sendNum[n]}];this.send({type:t,fm:\"new_heart\",data:o},this.keyMap.new_heart)}},startHeart:function(){var t=this,e=t.fb();t.stayTime+=e,t.heartT=setTimeout(function(){t.sendHeart(0),t.startHeart()},e)},preInit:function(){this.start=(new Date).getTime(),this.mouse=[],null!==this.mouseTime&&clearTimeout(this.mouseTime),this.mouseTime=null,this.key=[],this.scroll=[],null!==this.scrollTime&&clearTimeout(this.scrollTime),this.scrollTime=null,this.cycle=null,null!==this.t&&clearTimeout(this.t),this.t=null,this.storeLen=-1;\nvar t=bds&&bds.comm&&bds.comm.qid?bds.comm.qid:\"\";t&&(this.setCommLog(t),this.sendNum[t]=0),bds&&bds.comm&&(1===bds.comm.logFlagSug||1===bds.comm.globalLogFlag)&&0===bds.comm.ishome&&(null!==this.heartT&&clearTimeout(this.heartT),this.heartT=null,this.stayTime=0,this.heartTime=[],this.startHeart())},collectPoint:function(t,e){function n(t,e){var n=[];if(\"mouse\"===t)n[0]=e.pageX,n[1]=e.pageY;else if(\"scroll\"===t){var o=$(window);n[0]=o.scrollLeft(),n[1]=o.scrollTop()}return n}var o=t+\"Time\",i=this[t+\"Speed\"],r=this;\nif(0===r[t].length){var s=n(t,e);if(s.length<2)return;return void r[t].push([(new Date).getTime()-r.start,s[0],s[1]])}null===r[o]&&(r[o]=setTimeout(function(){var i=n(t,e);return i.length<2?void(r[o]=null):(r[t].push([(new Date).getTime()-r.start,i[0],i[1]]),void(r[o]=null))},i))},singleInit:function(){var t=this;$(\"body\").on(\"mousemove\",function(e){t.collectPoint(\"mouse\",e)}).on(\"keydown\",function(e){t.key.push([(new Date).getTime()-t.start,e.keyCode])}),$(window).on(\"scroll\",function(e){t.collectPoint(\"scroll\",e)\n}),t.singleInit=function(){}},flushData:function(t){null!==this.t&&(clearTimeout(this.t),this.t=null),this.startSend(this.fetchData(t,!0),!0),this.startSend(this.fetchData(t,!0)),bds&&bds.comm&&(1===bds.comm.logFlagSug||1===bds.comm.globalLogFlag)&&(null!==this.heartT&&(clearTimeout(this.heartT),this.heartT=null),this.sendHeart(t))},init:function(){var t=this;t.preInit(),$(window).on(\"swap_begin\",function(){null!==t.t&&(clearTimeout(t.t),t.t=null),bds&&bds.comm&&0===bds.comm.ishome&&(1===bds.comm.logFlag||1===bds.comm.globalLogFlag)&&t.isFirst===!1&&t.sendHeart(1)\n}).on(\"unload\",function(){bds&&bds.comm&&0===bds.comm.ishome&&(1===bds.comm.logFlagSug||1===bds.comm.globalLogFlag)&&t.flushData(2)}).on(\"swap_end\",function(){t.preInit(),t.isFirst===!0&&(t.isFirst=!1),!t.hostAddr[0]&&bds&&bds.comm&&bds.comm.ubsurl&&(t.hostAddr[0]=bds.comm.ubsurl+\"?\")})},getData:function(t,e,n){if(null===this.start||0===t.length)return{startTime:this.start,record:[]};var o={startTime:this.start,record:[]},i=e,r=n;void 0===i?(i=0,r=t[t.length-1][0]):void 0!==i&&\"number\"==typeof i&&void 0===r?(i-=this.start,r=t[t.length-1][0]):void 0!==i&&\"number\"==typeof i&&void 0!==r&&\"number\"==typeof r?(i-=this.start,r-=this.start):(i=0,r=0);\nfor(var s in t)if(!(t[s][0]=r))break;return o},send:function(t,e,n){if(!t)return!1;if(this.debug,0===e&&!this.hostAddr[0]){if(!(bds&&bds.comm&&bds.comm.ubsurl))return!1;this.hostAddr[0]=bds.comm.ubsurl+\"?\"}var o=\"\",i=\"\",r=\"\";if(\"object\"==typeof t){for(var s in t)o=t[s],\"object\"==typeof o&&(o=$.stringify(o)),i+=s+\"=\"+encodeURIComponent(o)+\"&\";i=i.substring(0,i.length-1)}else\"string\"==typeof t&&(i=t);if(!n&&bds&&bds.comm&&bds.comm.qid&&(n=bds.comm.qid),!(n&&n in this.commLog))return!1;\nif(i+=this.commLog[n].log,i+=\"&t=\"+(new Date).getTime(),(\"number\"!=typeof e||0>e||e>=this.hostAddr.length)&&(e=0),r=this.hostAddr[e]+i,r.length>this.MAX_LEN)return!1;var a=window[\"BD_PS_C\"+(new Date).getTime()]=new Image;return a.src=this.hostAddr[e]+i,!0},sendNow:function(t,e,n){if(t&&\"string\"==typeof t&&t in this.keyMap&&e){var o=\"type=3&fm=\"+t+\"&data=\"+encodeURIComponent($.stringify([e]));n&&n.qid&&n.log&&n.len?(this.setCommLog(n.qid,n.log,n),this.send(o,this.keyMap[t],n.qid)):send(o,this.keyMap[t])\n}},pushData:function(t,e,n){var o=bds&&bds.comm&&bds.comm.qid?bds.comm.qid:\"\";if(!o)return!1;n&&n.qid&&n.log&&n.len?(this.setCommLog(n.qid,n.log,n.len),o=n.qid):this.setCommLog(o),o in this.dataStore||(this.dataStore[o]={});var i=this.dataStore[o];t in i||(i[t]=[[],[]]),n&&n.level===!0?i[t][0].push(encodeURIComponent($.stringify(e))):i[t][1].push(encodeURIComponent($.stringify(e)))},fetchData:function(t,e){function n(){for(var e,n=0,o=[],r=!1,d=this.commLog[l].len,m=this.hostAddr[a].length,p=m+(\"type=\"+t+\"&fm=\"+u+\"&data=\").length+d,f=p+6,h=f;0!==i.length&&n=this.MAX_LEN||h>=this.MAX_LEN)&&(o.length>=2&&(o.pop(),r=!0),s.push({qid:l,key:u,type:t,data:\"%5B\"+o.join(\"%2C\")+\"%5D\",host:a}),o=[],r&&(o[0]=e,r=!1),h=o.length>0?p+3+e.length+3:p+6),f=h;\no.length>0&&s.push({qid:l,key:u,type:t,data:\"%5B\"+o.join(\"%2C\")+\"%5D\",host:a})}var o,i,r=this.dataStore,s=[],a=0,c=!1,d=bds&&bds.comm&&bds.comm.qid?bds.comm.qid:\"\";if(!d)return[];for(var l in r){c=l!==d?!0:!1,o=r[l];for(var u in o)u in this.keyMap&&(a=this.keyMap[u],\"number\"==typeof a&&void 0!==this.hostAddr[a]&&(i=o[u][0].length>0?o[u][0]:o[u][1],n.call(this),(c===!0||e!==!0)&&0===i.length&&o[u][1].length>0&&(i=o[u][1],n.call(this)),c===!0&&delete this.dataStore[l]))}return s},startSend:function(t,e){var n,o,i=this,r=e===!0?0:100,s=setInterval(function(){return t.length<=0?void clearInterval(s):(n=t.shift(),void(n&&n.qid&&n.qid in i.commLog&&(o=\"type=\"+n.type+\"&fm=\"+n.key+\"&data=\"+n.data,i.send(o,n.host,n.qid),n.qid in i.sendNum&&(i.sendNum[n.qid]+=1))))\n},r)},startCycle:function(){var t=this;null===t.cycle&&(t.cycle=1),t.t=setTimeout(function(){var e=t.fetchData(0),n=e.length;-1===t.storeLen&&(t.storeLen=n),0!==t.storeLen&&n/t.storeLen>=2&&t.curSpeed>t.MIN_SPEED&&(t.curSpeed-=1e3),(0===n||t.storeLen/n>=2)&&t.curSpeed0&&new bds.util.setFootStyle,bds.comm.feedback=1,bds.comm.feedback?t()?$(document).delegate(\".feedback\",\"click\",function(){var t=this;$.getScript(\"https://ss1.bdstatic.com/5eN1bjq8AAUYm2zgoY3K/r/www/cache/static/protocol/https/plugins/feedback_67607cd.js\",function(){var e=t.getAttribute(\"data-feedbackid\")||1,n={product_id:18,entrance_id:e},o={username:bds.comm.username,query:bds.comm.query,fb_qid:bds.comm.qid};\nbds.qa.ShortCut.initRightBar(n,o)})}):$(\".feedback\").on(\"click\",function(){bds.se.ShortCut.initRightBar()}):$(document).delegate(\".feedback\",\"click\",function(){var t=this;$.getScript(\"https://ss1.bdstatic.com/5eN1bjq8AAUYm2zgoY3K/r/www/cache/static/protocol/https/plugins/feedback_67607cd.js\",function(){var e=t.getAttribute(\"data-feedbackid\")||1,n={product_id:18,entrance_id:e},o={username:bds.comm.username,query:bds.comm.query,fb_qid:bds.comm.qid};bds.qa.ShortCut.initRightBar(n,o)})});var e=$(\"#form\").find('input[type=\"hidden\"][name=rsv_t]');\ne.length?$(e).val(bds.comm.encTn):$(\"#form\").append(''),bds.comm.did=function(){for(var t=\"\",e=0;32>e;e++)t+=Math.floor(16*Math.random()).toString(16);return t}()}),!function(){$(window).one(\"swap_end\",function(){$(\"body\").on(\"mousedown\",\".se_common_hint a\",function(){var t=$(this),e=t.parents(\".se_common_hint\"),n=e.attr(\"data-id\")||\"\",o=e.attr(\"data-tpl\")||\"\",i=e.find(\"a\").index(t);ns_c_pj({hintId:n,hintTpl:o,title:t.html(),pos:i,qid:bds.comm.qid||\"\"},\"pj=hint&\")\n})})}(),$(function(){$(\"#u,#u1\").delegate(\".lb\",\"click\",function(){var t=$(this).attr(\"data-subpro\");t&&bds.se.login.setSubpro(t);try{bds.se.login.open()}catch(e){}})}),$.ajax({dataType:\"script\",cache:!0,url:\"https://ss1.bdstatic.com/5eN1bjq8AAUYm2zgoY3K/r/www/cache/static/protocol/https/home/js/nu_instant_search_08089ad.js\"}),window.PRE_CONN=function(){var t,e=function(t,e){var n=1*new Date;t=bds.util.domain&&bds.util.domain.get?bds.util.domain.get(t):t;var i=/^(http[s]?:\\/\\/)?([^\\/]+)(.*)/,r=t.match(i);if(r[2]&&!o[r[2]]){o.push(r[2]);\nvar s=new Image;s.src=t+\"?_t=\"+(e?e:n),s.onload=s.onerror=function(){s=null}}},n=0,o=[],i=function(){try{window.pageState&&0!=window.pageState&&1!=n||($(\"#kw1,#kw\").one(\"keydown\",function(){\"https:\"===location.protocol?(e(\"https://ss0.baidu.com/6ONWsjip0QIZ8tyhnq/ps_default.gif\"),e(\"https://ss1.baidu.com/6ONWsjip0QIZ8tyhnq/ps_default.gif\"),e(\"https://ss2.baidu.com/6ONWsjip0QIZ8tyhnq/ps_default.gif\"),e(\"https://ss3.baidu.com/6ONWsjip0QIZ8tyhnq/ps_default.gif\")):(e(\"http://b1.bdstatic.com/img/pc.gif\",parseInt(1e3*Math.random())),e(\"http://ecmb.bdimg.com/public03/pc.gif\"),$.each([\"i7\",\"i8\",\"i9\",\"t10\",\"t11\",\"t12\"],function(t,n){e(\"http://\"+n+\".baidu.com/ps_default.gif\")\n}))}),1==n&&$(\"#kw1,#kw\").one(\"focus\",function(){\"https:\"===location.protocol&&e(\"https://www.baidu.com/con?from=self\")}))}catch(t){}},r=function(){n=1,i(),a()},s=function(){a(),t=setTimeout(r,55e3)},a=function(){clearTimeout(t),n=0};return i(),{init:i,startTimer:s}}(),!function(){$.ajaxPrefilter(\"parts\",function(t,e,n){t.__partsCallback=[],t.__partsIndex=0,n.parts=function(e){t.__partsCallback.push(e)},t.parts&&n.parts(t.parts),t.converters[\"* parts\"]=function(t){return t}}),$.ajaxTransport(\"parts\",function(t){if(!t.crossDomain||support.cors){var e;\nreturn{send:function(n,o){var i,r=t.xhr();if(r.open(t.type,t.url,t.async,t.username,t.password),t.xhrFields)for(i in t.xhrFields)r[i]=t.xhrFields[i];t.mimeType&&r.overrideMimeType&&r.overrideMimeType(t.mimeType),t.crossDomain||n[\"X-Requested-With\"]||(n[\"X-Requested-With\"]=\"XMLHttpRequest\");for(i in n)void 0!==n[i]&&r.setRequestHeader(i,n[i]+\"\");r.send(t.hasContent&&t.data||null),e=function(n,i){var s,a,c;if(3!==r.readyState&&4!==r.readyState||i||!function(){var e=t.delimiter,n=\"\";try{n=r.responseText\n}catch(o){}if(\"\"!=n){var i,s,a=-1,c=0;if(e)for(;;){for(;c<=t.__partsIndex&&(i=-1==a?0:a+e.length,a=n.indexOf(e,i),-1!=a);c++);if(-1==a&&4!==r.readyState)return;for(s=0;s.2&&.201>i&&\"http:\"==location.protocol&&(t.url=n,t.headers=o,$.ajax({url:n,headers:o,success:e}))},o=function(e){if(\"string\"==typeof e&&\"object\"==typeof t.headers){if(t.headers.hasOwnProperty(\"content_syni\")&&12495!==e.length)return e;if(t.headers.hasOwnProperty(\"content_syns\")&&19295!==e.length)return e}return\"normal\"},i=function(t){$.ajax({url:\"//www.baidu.com/r/plog\",type:\"post\",data:{page_html:t}})};window.ctwin={sendRequest:n}}();var bds=bds||{};bds.se=bds.se||{},bds.se.speedTester=function(){function t(){}function e(t,e,i){i=i||19558,n(t,function(t){return function(e,n,i){o(t,n,i)\n}}(e),function(t){return function(){o(t)}}(e),i)}function n(e,n,o,i){n=n||t,o=o||t;var r=new Image;r.onload=function(){this.onload=this.onerror=null,i=this.fileSize||i;var t=new Date,e=t-s,o=i/e;n(this,e,o)},r.onerror=function(){this.onload=this.onerror=null,o(this)};var s=new Date;r.src=e}function o(t,e,n){var o=new Image;o.onload=o.onerror=function(){this.onload=this.onerror=null},o.src=t+(e?\"&t=\"+e+\"&v=\"+n:\"&t=-1&v=-1\")+\"&r=\"+Math.random()}return{start:e}}(),bds.se.speedMonitor=function(t){function e(){var t=d.pop();\nt&&n(t),a&&(c=window.setTimeout(e,s))}function n(t){var e=t.url,n=t.size||-1,o=[];o.push(\"id=\"+encodeURIComponent(t.id)),o.push(\"name=\"+encodeURIComponent(t.name)),o.push(\"url=\"+encodeURIComponent(t.url)),o.push(\"size=\"+encodeURIComponent(t.id));for(key in t.logData)o.push(key+\"=\"+encodeURIComponent(t.logData[key]));bds.se.speedTester.start(e,l+\"&\"+o.join(\"&\"),n)}function o(){return!0}var i=t.logPath||\"\",r=t.flag||\"default\",s=t.sleep||\"1000\",a=!1,c=null,d=[],l=i+\"?flag=\"+r;this.start=function(){this.stop(),a=!0,e()\n},this.stop=function(){a=!1,window.clearInterval(c)},this.addTask=function(t){o(t)&&d.push(t)},this.clear=function(){d=[]}},setTimeout(function(){var t=Math.random(),e=\"http://velocity.baidu.com/sp\";if(\"https:\"==location.protocol&&(e=\"https://sp0.baidu.com/6r1_czmhAB63otqbppnN2DJv/sp\"),.01>t){var n=document.createElement(\"script\");n.src=e,document.body.appendChild(n)}},1e3),!function(t){var t=t||{};t.se=t.se||{},t.se.QuickDelete=function(t,e){this.form=t,this.options=e,this._init()},t.se.QuickDelete.prototype={constructor:t.se.QuickDelete,_init:function(){this._create_elem(),this._bind_event()\n},_create_elem:function(){var t=this.form,e=this.options,n=e.top||0,o=e.right||0,i=$.trim(t.val())?\"block\":\"none\",r=\"quickdelete\",s=t.parent(),a=$('
                ').attr(\"id\",r).attr(\"title\",\"清空\").addClass(\"quickdelete\");s.addClass(\"quickdelete-wrap\").append(a),a.css({top:n+\"px\",right:o+\"px\",display:i}),e.wrapElem=s,e.elem=a},_show:function(){0===t.comm.ishome&&this.options.elem.show()},_hide:function(){this.options.elem.hide()},_bind_event:function(){var e=this.form,n=this.options.elem,o=this;\ne.on(\"focus\",function(){$.trim(e.val())?o._show():o._hide()}).on(\"keyup input propertychange\",function(){$.trim(e.val())?o._show():o._hide()}),n.on(\"click\",function(){var n=t.comm.supportis?2:0;return ns_c({input_clear:t.comm.ishome+n,delete_query:encodeURIComponent(e.val())}),e.val(\"\").focus(),o._hide(),!1}),$(window).on(\"swap_end index_off\",function(){$.trim(e.val())?o._show():o._hide()})}},new t.se.QuickDelete($(\"#kw\"),{top:0,right:0})}(bds),window.bds&&bds.comm&&bds.comm.ishome&&$(window).on(\"load\",function(){if(window.ctwin&&window.ctwin.sendRequest(\"//www.baidu.com/?tn=baidu\",{content_syni:1}),window.performance&&performance.timing){var t=function(){var t=n(\"navigation\"),e=n(\"domainLookup\"),o=n(\"connect\"),i=n(\"secureConnection\"),r=(n(\"redirect\"),n(\"request\")),s=n(\"responses\"),a={start:performance.timing.domLoading,end:performance.timing.domComplete},c=n(\"loadEvent\");\nreturn{navigation:o.start-t.start,dns:e.value,tcp:o.value,ssl:i.start>0?o.end-i.start:0,request:s.start-r.start,responses:s.value,dom:a.end-a.start,loadEvent:c.end-t.start}},e=Cookie.get(\"__bsi\"),n=function(t){var e=performance.timing,n=e[t+\"Start\"]?e[t+\"Start\"]:0,o=e[t+\"End\"]?e[t+\"End\"]:0;return{start:n,end:o,value:o-n>0?o-n:0}},o=function(){var n=[],o=t();for(var i in o)n.push(i+\"=\"+o[i]);n.push(\"protocol=\"+encodeURIComponent(location.protocol));var r=\"//www.baidu.com/nocache/fesplg/s.gif?log_type=hm&type=timing&\",s=\"\";\ns+=n.join(\"&\"),s+=\"&newindex=\"+(window.bds&&bds.comm?bds.comm.newindex:-1),e&&(s+=\"&bsi=\"+e);var a=r+s,c=new Image,d=\"_LOG_\"+(new Date).getTime();c.onload=function(){delete window[d]},window[d]=c,c.src=a},i=Math.random();/8498/.test(bds.comm.indexSid)&&.01>i&&setTimeout(o,500)}}),$(window).on(\"swap_end\",function(){bds.comm.search_tool&&(bds.comm.search_tool.init=!1)}),$(window).on(\"swap_begin\",function(){$(document).off(\"click.searchTool\")});var langfilterTip,timefilterTip,fileTypeTip,insideSearchTip;\n$(document).delegate(\".head_nums_cont_outer\",\"mousedown\",function(){if(\"undefined\"!=typeof bds.comm.search_tool){if(bds.comm.search_tool.init)return;bds.comm.search_tool.init=!0;var t=$(this),e=t.find(\".search_tool\").eq(0),n=t.find(\".search_tool_close\").eq(0),o=t.find(\".head_nums_cont_inner\").eq(0);e.on(\"click\",function(){o.animate({top:0},250),ns_c({fm:\"advTool\",qid:bds.comm.qid,title:encodeURI(\"搜索工具\"),rsv_advTool:0})}),n.on(\"click\",function(){o.animate({top:-42},250,function(){\"en\"==bds.comm.search_tool.sl_lang||bds.comm.search_tool.st||bds.comm.search_tool.et||bds.comm.search_tool.si||bds.comm.search_tool.ft||bds.comm.search_tool.exact?(ns_c({fm:\"advTool\",qid:bds.comm.qid,title:encodeURI(\"清除\"),rsv_advTool:2}),baseChangeUrl(\"wd=\"+encodeURIComponent($(\"#kw\").val().replace(/(filetype:[^\\s]* )|(site:[^\\s]*)/g,\"\").replace(/^\\\"+(.+)\\\"+$/,\"$1\"))+\"&sl_lang=cn&rsv_srlang=cn&rsv_rq=cn&ct=0&si=&tfflag=0&gpc=\"+encodeURIComponent(\"stf=\")),$(\"input[name='gpc'],input[name='si'],input[name='ct']\",\"form\").val(\"\")):ns_c({fm:\"advTool\",qid:bds.comm.qid,title:encodeURI(\"收起工具\"),rsv_advTool:1})\n})});var i=t.find(\".search_tool_la\").eq(0);if(i.length>0){var r=\"
                  \";\"en\"==bds.comm.search_tool.sl_lang?(r+=\"
                • 所有网页
                • \",r+=\"
                • 英文网页
                • \"):\"cn\"==bds.comm.search_tool.sl_lang&&(r+=\"
                • 所有网页
                • \",r+=\"
                • 英文网页
                • \"),r+=\"
                \",langfilterTip=new bds.se.tip({target:i,mode:\"none\",content:$(r),arrow:{has:0,offset:0},offset:{x:15,y:21}}),langfilterTip.hide()\n}var s=t.find(\".search_tool_tf\").eq(0);if(s.length>0){var a=\"
                  \";a+=bds.comm.search_tool.st||bds.comm.search_tool.et?\"
                • 时间不限
                • \":\"
                • 时间不限
                • \",a+=bds.comm.search_tool.st>=bds.comm.search_tool.thisDay&&\"1\"==bds.comm.search_tool.stftype?\"
                • 一天内
                • \":\"
                • 一天内
                • \",a+=bds.comm.search_tool.st>=bds.comm.search_tool.thisWeek&&bds.comm.search_tool.st一周内\":\"
                • 一周内
                • \",a+=bds.comm.search_tool.st>=bds.comm.search_tool.thisMonth&&bds.comm.search_tool.st一月内\":\"
                • 一月内
                • \",a+=bds.comm.search_tool.st>=bds.comm.search_tool.thisYear&&bds.comm.search_tool.st一年内\":\"
                • 一年内
                • \",a+=\"
                • \",a+=\"
                  自定义\",a+=\"

                  \":\"value='\"+formatDate(1e3*bds.comm.serverTime,\"-\")+\"' data-value='' class='c-tip-custom-input c-tip-custom-input-init'/>

                  \",a+=\"

                  \":\"value='\"+formatDate(1e3*bds.comm.serverTime,\"-\")+\"' data-value='' class='c-tip-custom-input c-tip-custom-input-init'/>

                  \",a+=\"
                  自定义时间错误!
                  \",a+=\"确认\",a+=\"
                \",timefilterTip=new bds.se.tip({target:s,mode:\"none\",content:$(a),arrow:{has:0,offset:0},offset:{x:15,y:21},onShow:function(){$(this.getTarget()).width()>95&&$(\"ul\",this.getDom()).width($(this.getTarget()).width()+20),$(\".c-tip-custom-input\").on(\"click\",function(t){var e=this,n=null,o=new Date,i=$(e).parents(\".c-tip-custom\"),r=i.find(\"input[name='st']\"),s=i.find(\"input[name='et']\");\n$(e).attr(\"data-value\")&&o.setTime($(e).attr(\"data-value\")),$(e).parents(\".c-tip-custom\").find(\".c-tip-custom-input\").removeClass(\"c-tip-custom-input-focus\"),$(e).addClass(\"c-tip-custom-input-focus\"),0==$(\"#c-tip-custom-calenderCont\").length&&$(e).parents(\".c-tip-custom\").append(\"
                \"),$(\"#c-tip-custom-calenderCont\").html(\"\");var a={element:\"c-tip-custom-calenderCont\",date:formatDate(o),between:[$(e).attr(\"date-min\")-0,$(e).attr(\"date-max\")-0],onSelectDay:function(t){if(t+=\"\",\"st\"==e.name){var n=new Date(t.substr(0,4),t.substr(4,2)-1,t.substr(6,2),0,0,0);\ns.attr(\"date-min\",t)}else{var n=new Date(t.substr(0,4),t.substr(4,2)-1,t.substr(6,2),23,59,59);r.attr(\"date-max\",t)}$(e).val(formatDate(n,\"-\")),$(e).attr(\"data-value\",n.getTime()),$(\"#c-tip-custom-calenderCont\").hide(),$(e).removeClass(\"c-tip-custom-input-focus\").removeClass(\"c-tip-custom-input-init\")}};\"undefined\"==typeof WCal?$.getScript(\"https://ss1.bdstatic.com/5eN1bjq8AAUYm2zgoY3K/r/www/cache/static/protocol/https/plugins/new_wcal_3426010.js\",function(){n=new WCal(a),o&&n.setDay(formatDate(o),function(t){t.className+=\" op_mon_day_selected\"\n})}):(n=new WCal(a),o&&n.setDay(formatDate(o),function(t){t.className+=\" op_mon_day_selected\"})),$(\"#c-tip-custom-calenderCont\").css({top:$(this).position().top-2,left:$(this).position().left+$(this).width()+15,display:\"block\"}),t.stopPropagation()}),$(\".c-tip-custom-input\").on(\"focus\",function(){$(this).removeClass(\"c-tip-custom-input-init\")}),$(\".c-tip-custom-input\").on(\"blur\",function(){function t(t){var e,n=/^\\s*(\\d{4})-(\\d\\d)-(\\d\\d)\\s*$/,o=new Date(0/0),i=n.exec(t);return i&&(e=+i[2],o.setFullYear(i[1],e-1,i[3]),e!=o.getMonth()+1&&o.setTime(0/0)),o\n}var e=this,n=t($(e).val());n instanceof Date&&n.getTime()?($(e).attr(\"data-value\",n.getTime()),$(\".c-tip-timerfilter-custom-error\").hide()):\"\"==$(e).val()?($(e).attr(\"data-value\",\"0\"),$(\".c-tip-timerfilter-custom-error\").hide()):($(e).attr(\"data-value\",\"\"),$(\".c-tip-timerfilter-custom-error\").show())});try{$(\".c-tip-custom-submit\").off(\"click.searchTool\").on(\"click.searchTool\",function(t){var e=this,n=$(e).parents(\".c-tip-custom\"),o=parseInt($(\".c-tip-custom-input\",n)[0].getAttribute(\"data-value\")/1e3),i=parseInt($(\".c-tip-custom-input\",n)[1].getAttribute(\"data-value\")/1e3);\nreturn $(\"#c-tip-custom-calenderCont\").hide(),\"\"!=o&&o||(o=0),\"\"!=i&&i||!o||\"\"==o||(i=parseInt((new Date).setHours(23,59,58)/1e3)),i>bds.comm.serverTime&&(0>=o?(o=\"\",i=\"\"):i=parseInt((new Date).setHours(23,59,58)/1e3)),o>i||o>bds.comm.serverTime?($(\".c-tip-timerfilter-custom-error\").show(),void t.stopPropagation()):(0==o&&0==i&&(o=\"\",i=\"\"),$(\".c-tip-timerfilter-custom-error\").hide(),void advChangeUrl(\"gpc\",\"stf=\"+o+\",\"+i+\"|stftype=2\",\"自定义时间:\"+o+\"|\"+i,5))})}catch(t){}}}),timefilterTip.hide()}var c=t.find(\".search_tool_ft\").eq(0);\nif(c.length>0){var d=\"
                \";\nvar l=new bds.se.tip({target:c,mode:\"none\",content:$(d),arrow:{has:0,offset:0},offset:{x:15,y:21}});l.hide()}var u=t.find(\".search_tool_si\").eq(0);u.length>0&&(insideSearchTip=new bds.se.tip({target:u,mode:\"none\",content:$(\"
                • 确认
                • 无法识别,正确格式:baidu.com

                \"),arrow:{has:0,offset:0},offset:{x:15,y:21},onShow:function(){$(\".c-tip-si-input\").on(\"focus\",function(){$(this).addClass(\"c-tip-si-input-focus\")\n}),$(\".c-tip-si-input\").on(\"blur\",function(){$(this).removeClass(\"c-tip-si-input-focus\")});try{$(\".c-tip-timerfilter-si-submit\").off(\"click.searchTool\").on(\"click.searchTool\",function(t){var e=this,n=$(e).parents(\".c-tip-timerfilter-si\"),o=$(\"input\",n).val(),i=queryReplace(\"site\");if(\"\"==o)ns_c({fm:\"advTool\",qid:bds.comm.qid,title:encodeURI(\"站内检索:\"+o),rsv_advTool_si:encodeURI(o)}),baseChangeUrl(\"wd=\"+encodeURIComponent(i)+\"&si=&ct=0\");else{if(!o.match(/^[\\w\\-_]+(\\.[\\w\\-_]+)+$/))return $(\".c-tip-timerfilter-si-error\").show(),t.stopPropagation(),t.preventDefault(),!1;\n$(\".c-tip-timerfilter-si-error\").hide(),ns_c({fm:\"advTool\",qid:bds.comm.qid,title:encodeURI(\"站内检索:\"+o),rsv_advTool_si:encodeURI(o)}),baseChangeUrl(\"wd=\"+encodeURIComponent(i)+\"&si=\"+encodeURIComponent(o)+\"&ct=2097152\")}})}catch(t){}}}),insideSearchTip.hide());var m=!0;i.on(\"click\",function(t){m?(langfilterTip&&langfilterTip.show(),m=!1,timefilterTip&&timefilterTip.hide(),p=!0,l&&l.hide(),f=!0,insideSearchTip&&insideSearchTip.hide(),h=!0,ns_c({fm:\"advTool\",qid:bds.comm.qid,title:encodeURI(\"语言筛选浮层展现\"),rsv_advTool_tip:1}),$(document).on(\"click.searchTool\",function(t){0==$(t.target).parents(\".c-tip-langfilter\").length&&langfilterTip&&(langfilterTip.hide(),m=!0,$(document).off(\"click.searchTool\"))\n})):(langfilterTip&&langfilterTip.hide(),m=!0,$(document).off(\"click.searchTool\")),t.stopPropagation()});var p=!0;s.on(\"click\",function(t){p?(langfilterTip&&langfilterTip.hide(),m=!0,timefilterTip&&timefilterTip.show(),p=!1,l&&l.hide(),f=!0,insideSearchTip&&insideSearchTip.hide(),h=!0,ns_c({fm:\"advTool\",qid:bds.comm.qid,title:encodeURI(\"时间筛选浮层展现\"),rsv_advTool_tip:0}),$(document).on(\"click.searchTool\",function(t){0==$(t.target).parents(\".c-tips-container,#c-tip-custom-calenderCont\").length&&timefilterTip&&(timefilterTip.hide(),$(\"#c-tip-custom-calenderCont\").hide(),timefilterTip.getDom().find(\".c-tip-custom-input-focus\").removeClass(\"c-tip-custom-input-focus\"),p=!0,$(document).off(\"click.searchTool\"))\n})):(timefilterTip&&timefilterTip.hide(),p=!0,$(document).off(\"click.searchTool\")),t.stopPropagation()});var f=!0;c.on(\"click\",function(t){f?(langfilterTip&&langfilterTip.hide(),m=!0,timefilterTip&&timefilterTip.hide(),p=!0,l&&l.show(),f=!1,insideSearchTip&&insideSearchTip.hide(),h=!0,ns_c({fm:\"advTool\",qid:bds.comm.qid,title:encodeURI(\"网页格式浮层展现\"),rsv_advTool_tip:2}),$(document).on(\"click.searchTool\",function(t){0==$(t.target).parents(\".c-tip-timerfilter-ft\").length&&l&&(l.hide(),f=!0,$(document).off(\"click.searchTool\"))\n})):(l&&l.hide(),f=!0,$(document).off(\"click.searchTool\")),t.stopPropagation()});var h=!0;u.on(\"click\",function(t){h?(langfilterTip&&langfilterTip.hide(),m=!0,timefilterTip&&timefilterTip.hide(),p=!0,l&&l.hide(),f=!0,insideSearchTip&&insideSearchTip.show(),h=!1,ns_c({fm:\"advTool\",qid:bds.comm.qid,title:encodeURI(\"站内搜索浮层展现\"),rsv_advTool_tip:3}),$(document).on(\"click.searchTool\",function(t){0==$(t.target).parents(\".c-tip-timerfilter-si\").length&&insideSearchTip&&(insideSearchTip.hide(),h=!0,$(document).off(\"click.searchTool\"))\n})):(insideSearchTip&&insideSearchTip.hide(),h=!0,$(document).off(\"click.searchTool\")),t.stopPropagation()})}}),!function(){function t(){function t(t,e){var n={top:e.offset().top,left:e.offset().left},o={width:e.width(),height:e.height()},i=function(){var t=e.attr(\"data-click\");if(t)try{return $.parseJSON(t)}catch(n){}}()||{},r=t+(i.p5||\"\");return{id:r,pos:n,size:o,dataClick:i,dom:e}}var e={},n={},o=$(\"#wrapper\");return e.topResult=o.find(\"#con-at\").find(\".result-op\"),e.rightResult=o.find(\"#con-ar\").find(\".result-op\"),e.leftResult=o.find(\"#content_left\").find(\".result, .result-op\"),e.topResult.length&&(n.T=[],e.topResult.each(function(){n.T.push(t(\"T\",$(this)))\n})),e.rightResult.length&&(n.R=[],e.rightResult.each(function(){n.R.push(t(\"R\",$(this)))})),e.leftResult.length&&(n.L=[],e.leftResult.each(function(){n.L.push(t(\"L\",$(this)))})),n}bds.se.skeleton=function(){var e;return function(){return e||(e=t(),$(window).one(\"swap_begin\",function(){e=null})),e}}()}(),!function(){$(window).on(\"swap_end\",function(){var t=function(){var t=[],e=bds.se.skeleton(),n=e.L;return n?($.each(n,function(e,n){var o={};o.dom=n.dom,o.id=n.id,o.itime=0,o.time=0,t.push(o)}),t):null\n};bds.comm.orderplay=t()})}(),!function(){function t(){var t=this;t.display={},t.expand={},t.dom={},t.init()}bds.se.display=function(){new t},t.prototype={init:function(){var t=this;t.dom=bds.se.skeleton();var e=$(\"#wrapper\");t.dom.rsResult=e.find(\"#rs a\"),t.dom.hintResult=e.find(\".se_common_hint\"),t.rs=t.dom.rsResult.length||0,t.hint=t.dom.hintResult.length||0,t.display.base=t.getBase(),t.dom.L&&t.getResult(t.dom.L),t.dom.R&&t.getResult(t.dom.R),t.dom.T&&t.getResult(t.dom.T),t.rs&&(t.display.rs=t.getRS()),t.hint&&(t.display.hint=t.getHint()),t.send()\n},send:function(){var t=this;for(var e in t.display){var n={};n[e]=t.display[e],bds.log.send.sendPack(\"new_disp\",n)}for(var o in t.expand)if(o&&t.expand[o])for(var i in t.expand[o])if(i&&t.expand[o][i]&&t.expand[o][i].length)for(var r=t.expand[o][i],s=0;so;o++){var r=n[o].id,s=e.getResultDisplay(n[o]);e.expand[r]=s.expand,delete s.expand,e.display[r]=s\n}},getResultDisplay:function(t){function e(){var e=t.size;return{w:e.width||0,h:e.height||0}}function n(){var e=t.pos;return{t:e.top||0,l:e.left||0}}function o(){return d.rsv_bdr&&0!=d.rsv_bdr?d.rsv_bdr:c.hasClass(\".c-border\")||c.find(\".c-border\").length?5:0}function i(){function t(t){var e;return t&&(e=c.find(t)),e&&e.length?!0:!1}var e={};return t(\".favurl\")&&(e.fi=1),t(\".c-text-public.c-text-mult\")&&(e.gwi=1),t(\".icon-unsafe-icon\")&&(e.fxi=1),t(\".c-icon-v\")&&(e.vi=1),t(\".c-icon-med\")&&(e.yjji=1),t(\".c-icon-air\")&&(e.hxi=1),t(\".c-recommend\")&&(e.cr=1),e\n}function r(){var t=c.find(\"a\").not(\":hidden\").not(\"h3 a, .m\"),e=[],n=/^((https?:)?\\/\\/)?([\\da-z\\.-]+)\\.([a-z\\.]{2,6})([\\/\\w \\.-]*)*(:\\d+)*(\\/.*)*/,o=/^(\\/s\\?)/;return t.each(function(){var t=this.getAttribute(\"href\");if(t&&n.test(t)){var i=t&&t.match(/.*\\/link\\?url=([^&]*).*/);e.push(i&&i.length&&i.length>0&&i[1]?i[1]:t)}else t&&o.test(t)&&e.push(t)}),e.length?e:!1}function s(){var t=[],e=c.find(\"img\").not(\":hidden\").not(\"[data-nolog]\");return e.length?(e.each(function(){var e={w:this.width,h:this.height};\nt.push({size:e})}),t):!1}function a(){var t=[],e=c.find(\"object, video, audio\");return e.length?(e.each(function(){var e=$(this),n={};n.type=e.is(\"object\")&&e.attr(\"type\")&&e.attr(\"type\").indexOf(\"flash\")>=0?1:e.is(\"video\")?2:e.is(\"audio\")?3:0,n.size={w:e.width(),h:e.height()},t.push(n)}),t):!1}var c=t.dom,d=t.dataClick,l={};if(l.id=d.p5||\"\",l.srcid=d.rsv_srcid||c.attr(\"srcid\")||0,l.tpl=c.attr(\"tpl\")||\"\",l.mu=d.mu||c.attr(\"mu\")||\"\",l.fm=d.fm||\"as\",c.is(\":hidden\")&&(l.show=0),0==l.show)return l;l.size=e(),l.pos=n(),o()&&(l.bdr=o()),l.com=i();\nvar u=r(),m=s(),p=a();return(u||m||p)&&(l.expand={},u&&(l.link=u.length,l.expand.links=u),m&&(l.img=m.length,l.expand.imgs=m),p&&(l.app=p.length,l.expand.apps=p)),l}}}(),!function(){function t(){this.pageElementsList=[],this.scrollTime=null,this.scrollChange=!1,this.resizeTime=null,this.resizeChange=!1,this.scrollTop=$(document).scrollTop(),this.scrollLeft=$(document).scrollLeft(),this.windowHeight=$(window).height(),this.windowWidth=$(window).width()}t.prototype={init:function(){var t=bds.se.skeleton(),e=this;\n$.each([\"L\",\"R\",\"T\"],function(n,o){t[o]&&($.merge(e.pageElementsList,e.getDom(t[o])),e.bindEvent(t[o]))})},getDom:function(t){var e=[];return $.each(t,function(t,n){var o={};o.top=n.pos.top,o.height=n.size.height,o.id=n.id,o.visible=0,e.push(o)}),e},sendLog:function(t,e){bds.comm.globalLogFlag&&1==bds.comm.globalLogFlag&&bds.log.send.sendPack(t,e)},bindEvent:function(t){var e=this;$.each(t,function(t,n){var o=200,i=!1,r=null;n.dom.bind(\"mouseenter.useraction\",function(){null!==r&&clearTimeout(r),r=setTimeout(function(){e.sendLog(\"new_view\",{type:\"mouseIn\",id:n.id,t:(new Date).getTime()}),i=!0,r=null\n},o)}).bind(\"mouseleave.useraction\",function(){null!==r&&(clearTimeout(r),r=null),i&&(e.sendLog(\"new_view\",{type:\"mouseOut\",id:n.id,t:(new Date).getTime()}),i=!1)})})},destroy:function(){$(window).unbind(\".useraction\"),this.pageElementsList.splice(0,this.pageElementsList.length)},sight:function(){var t=this;$.each(this.pageElementsList,function(e,n){var o=t.scrollTopn.top;if(1!==n.visible||o){if(0===n.visible&&o){if(t.sendLog(\"new_view\",{type:\"sight\",resid:n.id,action:\"in\",t:(new Date).getTime()}),bds.comm.orderplay&&bds.comm.orderplay.length&&\"L\"==n.id.substr(0,1)&&bds.comm.pageSize){var i=(parseInt(n.id.substr(1))-1)%bds.comm.pageSize,r=bds.comm.orderplay[i];\nr&&!r.itime&&(r.itime=(new Date).getTime())}n.visible=1}}else{if(t.sendLog(\"new_view\",{type:\"sight\",resid:n.id,action:\"out\",t:(new Date).getTime()}),bds.comm.orderplay&&bds.comm.orderplay.length&&\"L\"==n.id.substr(0,1)&&bds.comm.pageSize){var i=(parseInt(n.id.substr(1))-1)%bds.comm.pageSize,r=bds.comm.orderplay[i];r&&(r.time+=(new Date).getTime()-r.itime,r.itime=(new Date).getTime())}n.visible=0}})},collectPoint:function(t){function e(){r[o]=setTimeout(function(){r.sendLog(\"new_view\",n(t)),r[i]=!1,r.sight(),r[i]?e():r[o]=null\n},1e3)}function n(t){if(\"resize\"===t){var e=$(window);return r.windowHeight=e.height(),r.windowWidth=e.width(),{type:\"resize\",t:(new Date).getTime(),height:r.windowHeight,width:r.windowWidth}}if(\"scroll\"===t){var n=$(document);return r.scrollTop=n.scrollTop(),r.scrollLeft=n.scrollLeft(),{type:\"scroll\",t:(new Date).getTime(),offsetX:r.scrollTop,offsetY:r.scrollLeft}}}var o=t+\"Time\",i=t+\"Change\",r=this;null===r[o]&&e()},collect:function(){this.init();var t=this;null!==this.resizeTime&&clearTimeout(this.resizeTime),this.resizeTime=null,null!==this.scrollTime&&clearTimeout(this.scrollTime),this.scrollTime=null,$(window).bind(\"focus.useraction\",function(){t.sendLog(\"new_view\",{type:\"focus\",t:(new Date).getTime()})\n}).bind(\"blur.useraction\",function(){t.sendLog(\"new_view\",{type:\"blur\",t:(new Date).getTime()})}).bind(\"resize.useraction\",function(e){t.resizeChange=!0,t.collectPoint(\"resize\",e)}).bind(\"scroll.useraction\",function(e){t.scrollChange=!0,t.collectPoint(\"scroll\",e)}),this.sight()},outInterface:function(){var t=this;return{collect:function(){t.collect()},destroy:function(){t.destroy()}}}},bds.se.userAction=(new t).outInterface()}(),bds.comm.recommends={},bds.comm.recommends.recommWidth=0,bds.se.recommend=function(t){var e=this;\ne.op=$.extend({},e._default,t),e.id=e.op.target.attr(\"id\"),e.init()},bds.se.recommend.prototype={constructor:bds.se.recommend,__init__:!1,currInstance:null,recommDom:null,arrowDom:null,cssDom:null,loadDom:null,global:{},_default:{target:\"\",arrowOffset_s:-54,arrowOffset_l:-151,container_s:276,container_l:368,startOpacity:.3,endOpacity:1},init:function(){var t=this;t.currInstance&&t.currInstance.id==t.id||(t.delay={overIcon:null,loader:null,overArrow:null},t.doWhat(function(){t.__init__||(bds.se.recommend.prototype.__init__=!0,t.createRecommDom()),t.createArrowDom(),t.delay.overArrow=setTimeout(function(){var e=t.op.arrowDom.find(\".rrecom-btn\");\n\"none\"==e.css(\"display\")&&e.show(),t.moveArrow(function(){e.addClass(\"rrecom-btn-hover\"),t.showRecommDom()})},100)}))},dispose:function(){bds.se.recommend.prototype.currInstance=null,bds.se.recommend.prototype.recommDom&&bds.se.recommend.prototype.recommDom.remove(),bds.se.recommend.prototype.cssDom&&bds.se.recommend.prototype.cssDom.remove(),bds.comm.recommends={},bds.se.recommend.prototype.__init__=!1,$(window).off(\"resize.recommend container_resize.recommend scroll.recommend\")},createArrowDom:function(){var t=this,e=t.op.target.find(\".rrecom-btn-parent\");\nif(e.length)t.op.arrowDom=e;else{var n=['','',\"\",\"\",\"\"].join(\"\");t.op.arrowDom=$(n),t.op.arrowDom.on(\"click\",\".rrecom-btn\",function(){t.hideRecommDom()}),t.op.target.css({position:\"relative\"}).append(t.op.arrowDom)}},resetArrow:function(){var t=this;t.op.arrowDom.css({right:t.op.arrowOffset_s}).removeClass(\"rrecom-btn-click rrecom-btn-moving\").find(\".rrecom-btn\").stop().hide().removeClass(\"rrecom-btn-hover\")\n},setArrowPos:function(){var t=this;t.currInstance&&(\"l\"===bds.comm.containerSize?t.currInstance.op.arrowDom.css(\"right\",t.op.arrowOffset_l):t.currInstance.op.arrowDom.css(\"right\",t.op.arrowOffset_s))},moveArrow:function(t){var e=this,n={opacity:e.op.endOpacity};n.right=\"l\"===bds.comm.containerSize?e.op.arrowOffset_l:e.op.arrowOffset_s,e.op.arrowDom.stop().addClass(\"rrecom-btn-moving rrecom-btn-click\").animate(n,0,function(){e.currInstance&&e.currInstance!==e&&e.currInstance.resetArrow(),t()})},log:function(t){var e={},n=this.op.target.attr(\"data-click\"),o=this.op.target.attr(\"srcid\"),i=this.op.target.attr(\"tpl\"),r=this.op.target.attr(\"mu\");\nif(o&&(e.rsv_srcid=o),i&&(e.rsv_tpl=i),r&&(e.mu=r),n&&$.extend(e,$.parseJSON(n)),e.p1&&!e.p5&&(e.p5=e.p1),e.p5&&!e.p1&&(e.p1=e.p5),!e.p1&&!e.p5)for(var s=$(\"#content_left\").get(0),a=s.children,d=1,l=0,u=a.length;u>l;l++)if(1==a[l].nodeType&&a[l].className&&/\\bresult(\\-op)?\\b/.test(a[l].className)){if(a[l]===this.op.target.get(0)){e.p1=d,e.p5=d;break}d++}e.fm=\"beha\";var m=this.op.target.find(\".t>a\").eq(0);return e.rsv_re_fcurl=m.length?m.attr(\"href\"):r,e.rsv_re_fcurl=e.rsv_re_fcurl||\"\",e.rsv_re_fcurl=encodeURIComponent(e.rsv_re_fcurl),c($.extend(e,t))\n},getLeftP:function(){var t=this.op.target.attr(\"data-click\");return t=$.parseJSON(t)||{},t.p1&&!t.p5&&(t.p5=t.p1),t.p5&&!t.p1&&(t.p1=t.p5),t.p5||t.p1||(t.p1=1,t.p5=1),{p1:t.p1,p5:t.p5}},s_log:function(){this.log({rsv_re_fc:2})},setCacheData:function(t){bds.comm.recommends[this.id]=t},getCacheData:function(){return bds.comm.recommends[this.id]},doWhat:function(t){var e=this.getCacheData();\"[NO DATA]\"!==e&&(e?t():this.getRemoteData(t))},getJsonp:function(t){var e=this.op.target.find(\".t>a\").eq(0),n=(e.length?e.attr(\"href\"):this.op.target.attr(\"mu\"))||\"\",o=n&&n.match(/.*url=([^&]*).*/),i=bds.comm.query;\nif(o&&o.length&&o.length>0&&o[1]){n=o[1];var r=\"http://lcr.open.baidu.com/link?url=\"+encodeURIComponent(n)+\"&query=\"+encodeURIComponent(i),s=window.bds&&bds.util&&bds.util.domain&&bds.util.domain.get(r);return $.ajax({url:s,dataType:\"jsonp\",jsonp:\"cb\",data:{data_name:t,ie:\"utf-8\",oe:\"utf-8\",format:\"json\",t:Date.parse(new Date)}})}},getRemoteData:function(t){var e=this,n=\"recommend_common_merger_online\";$.when(this.getJsonp(n)).then(function(n){n&&n.data&&n.data.length&&n.data[0]?(n.data[0].hintData&&e.asynClkRcmd(n.data[0].hintData),(n.data[0].extData||n.data[0].tplData)&&(e.setCacheData(n.data),t())):e.setCacheData(\"[NO DATA]\")\n},function(){})},asynClkRcmd:function(t){var e=this,t=t[0]||{},n=$(\"#wrapper_wrapper\");if(t&&t.linkInfo){var o=e.op.target.find(\".c-recommend\"),i=o.find(\"a\"),r=t.tip||\"为您推荐:\";if(t.defaultHide,i&&i.length&&(i.remove(),o.append(e.buildRcmdDom(t))),!o||!o.length){var s=$('
                '+r+\"
                \");n.find(\".c-recommend\").hide(),s.append(e.buildRcmdDom(t)),e.op.target.append(s)}}},buildRcmdDom:function(t){for(var e=this,n=\"\",o=t.linkInfo,i=0,r=o.length;r>i;i++){var s=o[i].txt,a=o[i].wd,c=o[i].sa,d=\"c-gap-left-large\";\n0==i&&(d=\"\");var l=\"wd=\"+a+\"&rsv_crq=\"+c+\"&bs=\"+bds.comm.query,u=e.buildURL(l);n+=\"\"+s+\"\"}return n},buildURL:function(t){var e=\"/s?\",n={tn:bds.comm.tn},o=$(\"#form\"),i=o.find(\"input[name=rsv_idx]\"),r=\"\";n.rsv_idx=i.length?i.val():\"\";for(var s in n)n.hasOwnProperty(s)&&n[s]&&(r+=s+\"=\"+encodeURIComponent(n[s])+\"&\");return e+r+t},renderTpl:function(t,e){var n=this;if(t&&e){var o={};return o.right_recommends_merge=function(t){function o(e,o){var i,r='
                #{1}
                ',s='
                ',a='
                ',c=\"
                \",d=\"\",l=(e.showrow,e.shownums),u={rsv_srcid:t.StdStg||0};\ne.list&&!e.list.length&&(e.list=[e.list]),d+=$.format(r,e.subtitle,e.subtitle,$.stringify(u)),d+='
                ';for(var m=n.op.target.find(\".t>a\").eq(0),p=m.length?m.attr(\"href\"):n.op.target.attr(\"mu\"),f=0,h=e.list.length;h>f;f++){i=e.list[f];var g={rsv_re_ename:i.name,rsv_re_uri:i.uri,rsv_re_fcpoi:o+\"-\"+(f+1),rsv_clk_url:p},b=n.buildURL(i.params+\"&euri=\"+(i.uri||\"\"));if(f==l)break;f%4===0&&(d+=s),bds.util&&bds.util.domain&&bds.util.domain.get&&(i.img=bds.util.domain.get(i.img)),d+=$.format(a,b,i.img,i.name,b,$.subByte(i.name,20),(f+1)%4===0?\" c-span-last rrecom-item-rowLast\":(f+1)%4===3?\" rrecom-item-s\":\"\",$.stringify(g),i.attrpic),d+=c,((f+1)%4===0||f==h-1)&&(d+=c)\n}return d+=c,d+=c}var t=t||e,i=\"\",r=12,s=0;t.card&&!t.card.length&&(t.card=[t.card]);for(var a=0,c=t.card.length;c>a;a++){var d=t.card[a];if(s+=parseInt(d.shownums||0),s>r)break;i+=o(d,a+1)}return i},o[t]?o[t]():void 0}},render:function(t){for(var e=\"\",n=0;n','
                ','
                ','','
                ',\"
                \",\"
                \"].join(\"\"),e=\"https://ss1.bdstatic.com/5eN1bjq8AAUYm2zgoY3K/r/www/cache/static/protocol/https/global/img/rrecom_icon_e34d796.png\",n=[\"\"].join(\"\");\nbds.se.recommend.prototype.recommDom=$(t),bds.se.recommend.prototype.cssDom=$(n),bds.se.recommend.prototype.loadDom=this.recommDom.find(\".rrecom-ajax-loading\"),this.setRecommSize(),$(\"body\").append(this.cssDom).append(this.recommDom.hide()),this.bindRecommEvent(),$(window).trigger(\"container_resize.recommend\",bds.comm.containerSize);var o=$(\"#foot\");\"static\"===o.css(\"position\")&&o.css({position:\"relative\",\"z-index\":104})},setRecommSize:function(){var t=$(\"#content_right\"),e=$(\"#wrapper_wrapper\"),n=$(\"body\"),o=$(window),i=t.offset(),r={w:n.width()},s={h:o.height()},a=o.scrollTop();\ne.prevAll().each(function(){var t;return\"div\"===this.nodeName.toLowerCase()?(t=parseInt($(this).css(\"margin-bottom\")),bds.se.recommend.prototype.global.topGap=isNaN(t)?0:t,!1):void 0}),bds.se.recommend.prototype.global.topDom=e,bds.se.recommend.prototype.global.headDom=$(\"#head\");var c={top:this.global.topDom.offset().top-this.global.topGap},d=this.global.headDom.offset().top-a+56;this.recommDom.height(s.h),bds.comm.recommends.recommWidth=r.w-i.left-2,this.recommDom.css({width:r.w-i.left-2,top:a<=c.top-d?c.top:d,position:a<=c.top-d?\"absolute\":\"fixed\",left:i.left})\n},setRecommPosition:function(){this.setRecommTop(),this.setRecommLeft()},setRecommTop:function(){var t=$(window).scrollTop(),e={top:this.global.topDom.offset().top-this.global.topGap},n=this.global.headDom.offset().top-t+56;this.recommDom.css({top:t<=e.top-n?e.top:n,position:t<=e.top-n?\"absolute\":\"fixed\"}).find(\".rrecom-container\").css({\"margin-top\":\"0px\"}),bds.se.recommend.prototype.global.originalTop=t0?t.recommDom.find(\".rrecom-content\").css(\"width\",t.op.container_s-17+\"px\"):t.recommDom.find(\".rrecom-content\").css(\"width\",t.op.container_l-17+\"px\"),bds.se.recommend.prototype.currInstance=t,t.render(t.getCacheData())\n},showLoading:function(){this.loadDom.show()},hideLoading:function(){this.loadDom.hide()}},$(window).one(\"swap_end\",function(){bds.comm.upn.ie&&6==bds.comm.upn.ie||$(document).on(\"click\",\"#content_left .result .t>a, #content_left .result-op .t>a, .op-se-listen-recommend\",function(t){if(!t.ctrlKey&&\"0\"==bds.comm.urlRecFlag){var e=$(this).closest(\".result, .result-op\");new bds.se.recommend({target:e})}})}),$(window).on(\"swap_begin\",function(){bds.se.recommend.prototype.currInstance&&bds.se.recommend.prototype.hideRecommDom(),bds.se.recommend.prototype.currInstance=null,bds.se.recommend.prototype.__init__=!1,bds.comm.recommends={}\n}),bds.se.asynAds=function(t){var e=t.dom||\"\",n=t.id||\"\",o=t.tnp||\"\",i=t.wd||\"\",r=t.cb&&\"function\"==typeof t.cb?t.cb:null;if(e&&o&&i&&n){c({fm:\"inlo\",rsv_ad:\"ad_asyn_start\"});for(var s=[\"wd\",\"tnp\",\"tn\",\"pn\",\"bs\",\"fenlei\",\"adext\"],a=\"ie=utf-8&oe=utf-8&dsp=pc\",d=0;de.time?-1:t.time\"+o.css+\"\",i+=o.html,i+=\"\"}}),o.html(i),$(document).scrollTop()o.position().top&&c({fm:\"inlo\",rsv_ad:\"ad_asyn_shake\"}),r&&r()}else c({fm:\"inlo\",rsv_ad:\"ad_asyn_net_error\"})},error:function(){c({fm:\"inlo\",rsv_ad:\"ad_asyn_net_error\"})}})}else c({fm:\"inlo\",rsv_ad:\"ad_asyn_param_error\"})\n},!function(){function t(){c=Math.random()}function e(){d=1e3*(new Date).getTime()+Math.round(1e3*Math.random())-149e13,c>=.005&&.0051>c&&(o(),i(),r(),s())}function n(){var t=Math.round(1e3*Math.random())%u.length,e=new Image,n=new Image,o=u[t];e.onload=function(){n.src=\"//www.baidu.com/nocache/fesplg/s.gif?lid=\"+d+\"&url=\"+encodeURIComponent(o)+\"&time=\"+((new Date).getTime()-i)+\"&suc=1&type=aboard&dev=pc&protocol=\"+encodeURIComponent(location.protocol)+\"&ran=\"+(new Date).getTime()},e.onerror=function(){n.src=\"//www.baidu.com/nocache/fesplg/s.gif?lid=\"+d+\"&url=\"+encodeURIComponent(o)+\"&time=&suc=0&type=aboard&dev=pc&protocol=\"+encodeURIComponent(location.protocol)+\"&ran=\"+(new Date).getTime()\n};var i=(new Date).getTime();e.src=o+\"?ran=\"+(new Date).getTime()}function o(){var t=new Image;t.onload=function(){a(\"cndtestsuc\")},t.onerror=function(){a(\"cndtesterr\")},t.src=\"//ss0.bdstatic.com/5bd1bjqh_Q23odCf/static/wiseindex/img/w_icon2.png?ran\"}function i(){var t=new Image;t.onload=function(){a(\"cndgsstestsuc\")},t.onerror=function(){a(\"cndgsstesterr\")},t.src=\"//gss0.bdstatic.com/5bd1bjqh_Q23odCf/static/wiseindex/img/w_icon2.png?ran\"}function r(){var t=new Image;t.onload=function(){a(\"cndidctestsuc\")\n},t.onerror=function(){a(\"cndidctesterr\")},t.src=\"//m.baidu.com/logo.gif\"}function s(){var t=new Image;t.onload=function(){a(\"cndss0bdtestsuc\")},t.onerror=function(){a(\"cndss0bdtesterr\")},t.src=\"//ss0.baidu.com/5bd1bjqh_Q23odCf/static/wiseindex/img/w_icon2.png?ran\"}function a(t,e){if(t){e=e||{},e.st=t,e.fm=\"inlo\";var n=\"&terminal=pc\";for(var o in e)n+=\"&\"+o+\"=\"+e[o];var i=new Image;i.src=bds.util.domain.get(l+n)}}var c,d=\"\",l=\"http://sestat.baidu.com/cm.gif?type=cdnmonitor\",u=[\"https://sptidchk.baidu.com/s.gif\",\"https://sptidcsfo.baidu.com/s.gif\",\"https://sptidcjp.baidu.com/s.gif\",\"https://sptidcsin.baidu.com/s.gif\"];\nlocation.protocol.indexOf(\"https\")>-1&&$(window).on(\"swap_dom_ready\",function(){t()}).on(\"swap_end\",function(){e()}),\"70\"==bds.comm.bfe_sample&&$(window).on(\"swap_end\",function(){d=1e3*(new Date).getTime()+Math.round(1e3*Math.random())-149e13,n()})}(),!function(){var t,e,n=bds&&bds.util&&bds.util.domain&&bds.util.domain.get(\"http://sensearch.baidu.com/sensearch/selecttext\");$(window).one(\"swap_end\",function(){bds.comm.upn&&bds.comm.upn.ie&&6==bds.comm.upn.ie||$(document).on(\"mousedown\",function(n){t&&0==$(n.target).closest(t.getDom()).length&&(t.getDom().hide(),e&&e.abort())\n}).on(\"mouseup\",function(o){var i,r,s,a,c;if(!t||!$(o.target).closest(t.getDom()).length)try{setTimeout(function(){if(window.getSelection){if(i=window.getSelection(),0==i.rangeCount)return;r=i.getRangeAt(0),s=r.getBoundingClientRect(),a=$.trim(i.toString()),c=$(\"#text\"==r.commonAncestorContainer.nodeName?r.commonAncestorContainer.parentNode:r.commonAncestorContainer)}else document.selection&&(i=document.selection.createRange(),r=i,s=r.getBoundingClientRect(),a=$.trim(i.text.toString()),c=$(r.parentElement()));\nif(a&&a.length>1&&c.closest(\"#content_left .result .c-abstract,#content_left .result .t\").length){e&&e.abort();var o=/[^(\\u4E00-\\u9FA5)]+/i;if(!o.test(a))return;e=$.ajax({url:n,dataType:\"jsonp\",jsonp:\"cb\",timeout:5e3,data:{q:a},success:function(e){var n=\"\";if(e&&e.data&&e.data.type&&e.data.to&&\"zh\"==e.data.to&&e.data.result&&e.data.result.length&&e.data.result!=a)if(1==e.data.type)for(var o=e.data.result,i=0,r=Math.min(o.length,2);r>i;i++)n+=(0==i?\"\":\"
                \")+(o[i].pre?o[i].pre+\" \":\"\"),n+=o[i].cont?$.subByte(o[i].cont,46*(1==r?2:1)+1):\"\";\nelse 2==e.data.type&&(n='译:'+e.data.result);if(n){t=t||new bds.se.tip({target:$(\"body\"),mode:\"none\",content:'
                ',align:\"left\",arrow:{has:1,offset:10}});var c=t.getDom();c.find(\".translateContent\").html('

                '+n+\"

                \"),c.css({top:s.bottom+$(window).scrollTop()+8,left:(s.left+s.right)/2+$(window).scrollLeft()-20}).show(),ns_c({rsv_trans_type:\"showresult\",rsv_trans_st:encodeURIComponent(a),rsv_qid:bds.comm.qid||\"\"})\n}}})}},0)}catch(o){}})}),$(window).on(\"swap_begin\",function(){t=null,e&&e.abort()})}(),!function(){function t(t){return t=i(t),t.attr(\"id\")||t.attr(\"data-click\")&&$.parseJSON(t.attr(\"data-click\")).rsv_srcid||t.attr(\"class\")||\"-1\"}function e(t){var e=i(t),n=e.clone();n.unbind(),n.children(\".fb-list-container\").remove(),n.children(\".fb-list-container-first\").remove(),n.children(\".fb-hint-tip\").remove(),n.removeAttr(\"style\"),n.css(\"margin\",\"0\"),t.append(n),t.append(\"
                \"),t.addClass(\"fb-list-container-hover\")\n}function n(t){t.empty(),t.removeClass(\"fb-list-container-hover\")}function o(){$(\".fb-hint-tip\").remove(),$(\".fb-list-container-first\").remove(),bds.se.ShortCut.ldialog&&bds.se.ShortCut.ldialog.destory(),bds.se.ShortCut.rdialog&&bds.se.ShortCut.rdialog.destory(),bds.se.ShortCut.ldialog=0,bds.se.ShortCut.rdialog=0,$(\".fb-mask\").remove(),$(\".fb-list-container\").remove()}function i(t){return t.closest(t.closest(\"#rs\").length?\"#rs\":t.closest(\"#con-ar\").length?\".result-op\":\"#content_left > div\")}function r(){var t=$(\"#content_left > div\");\nt.append(\"
                \"),$(\"#content_left > div\").css(\"overflow\",\"visible\"),$(\".leftBlock .fb-list-container\").remove(),$(\".hit_top_new .fb-list-container\").remove(),t.each(function(){$(this).find(\".fb-list-container\").css(\"width\",$(this).width()+20),$(this).find(\".fb-list-container\").css(\"height\",$(this).height()+10)}),$(\".c-container\").first().append(\"
                \"),$(\".c-container\").first().find(\".fb-list-container-first\").css(\"width\",$(\".c-container\").first().width()+20),$(\".c-container\").first().find(\".fb-list-container-first\").css(\"height\",$(\".c-container\").first().height()+10),$(\".c-container\").first().append('
                鼠标点击,可对单条结果进行反馈
                ');\nvar e=$(\"#rs\");e.append(\"
                \"),e.find(\".fb-list-container\").css(\"width\",e.width()+20),e.find(\".fb-list-container\").css(\"height\",e.height()+10);var n=$(\"#con-ar .result-op\");n.append(\"
                \"),n.each(function(){$(this).find(\".fb-list-container\").css(\"width\",$(this).width()+20),$(this).find(\".fb-list-container\").css(\"height\",$(this).height()+10)})}function s(t){var e=\"\";e=e+'',e=e+'
                '+t[0].value+'
                ';\nfor(var n=0;n\"+t[n].value+\"
                \";return e+=\"
                \"}function a(t,e){this.init=function(){var n=new Date;return this.title=t,this.query=decodeURIComponent(bds.comm.query),this.srcid=e&&e.attr(\"srcid\")||\"-1\",this.tpl=e&&e.attr(\"tpl\")||\"\",this.url=window.location.href||\"\",this.time=n.getFullYear()+\"/\"+(n.getMonth()+1)+\"/\"+n.getDate()+\" \"+n.getHours()+\":\"+n.getMinutes()+\":\"+n.getSeconds(),this.username=bds.comm.username||\"\",this.order=e&&e.attr(\"id\")||\"\",this.entry=\"1\",this.build(),this.bindEvent(),this.render(),this\n},this.build=function(){var t=\"\",e=[{key:\"27468\",value:\"申请删除提示词\"},{key:\"27464\",value:\"内容或图片陈旧\"},{key:\"27465\",value:\"变形、错乱、乱码等问题\"},{key:\"27469\",value:\"页面结果与搜索词无关\"},{key:\"27467\",value:\"其他问题及建议\"}],n=s(e),o='
                ',i=\"\",r=\"\";bds.se.ShortCut.uploadImg&&(i='
                包含屏幕截图
                ',r='
                ');\nvar a='
                ';t='
                ×

                搜索结果反馈

                '+n+o+i+r+a+'
                请填写描述反馈
                请留下您的联系方式
                邮箱格式不正确
                提交反馈
                ×

                非常感谢

                提交成功
                感谢您的宝贵意见
                ';\nvar c=document.createElement(\"div\");c.id=\"fb_baidu_right_dialog\",c.className=\"fb-feedback-right-dialog\",c.className=\"fb-feedback-right-dialog\",c.setAttribute(\"data-html2canvas-ignore\",\"true\"),c.innerHTML=t,this.dom=c},this.bindEvent=function(){var t=this;$(this.dom).find(\".fb-close\").on(\"click\",function(){o()}),$(this.dom).find(\"#fb_right_post_save\").on(\"click\",function(){$(t.dom).find(\".fb-textarea textarea\").val()?-1==[27468].indexOf(Number($(t.dom).find(\".fb-select-value\").val()))||$(t.dom).find(\".fb-email\").val()?$(t.dom).find(\".fb-email\").val()&&!/^(\\w)+(\\.\\w+)*@(\\w)+((\\.\\w{2,3}){1,3})$/.test($(t.dom).find(\".fb-email\").val())?($(t.dom).find(\".fb-hint-error-email\").css(\"display\",\"block\"),setTimeout(function(){$(t.dom).find(\".fb-hint-error-email\").css(\"opacity\",\"1\"),setTimeout(function(){$(t.dom).find(\".fb-hint-error-email\").removeAttr(\"style\")\n},1500)},50)):t.post():($(t.dom).find(\".fb-hint-no-email\").css(\"display\",\"block\"),setTimeout(function(){$(t.dom).find(\".fb-hint-no-email\").css(\"opacity\",\"1\"),setTimeout(function(){$(t.dom).find(\".fb-hint-no-email\").removeAttr(\"style\")},1500)},50)):($(t.dom).find(\".fb-hint-no-content\").css(\"display\",\"block\"),setTimeout(function(){$(t.dom).find(\".fb-hint-no-content\").css(\"opacity\",\"1\"),setTimeout(function(){$(t.dom).find(\".fb-hint-no-content\").removeAttr(\"style\")},1500)},50))}),$(this.dom).find(\".fb-cut-input\").on(\"click\",function(){$(t.dom).find(\".fb-cut-input\").hasClass(\"c-icon\")?($(t.dom).find(\".fb-cut-input\").removeClass(\"c-icon\"),$(t.dom).find(\".fb-cut-input\").removeClass(\"c-icon-success\"),$(t.dom).find(\".fb-canvas-block\").css(\"display\",\"none\")):($(t.dom).find(\".fb-cut-input\").addClass(\"c-icon\"),$(t.dom).find(\".fb-cut-input\").addClass(\"c-icon-success\"),$(t.dom).find(\".fb-canvas-block\").css(\"display\",\"block\"))\n}),$(this.dom).find(\".fb-type-selected\").on(\"click\",function(){\"block\"==$(t.dom).find(\".fb-type-container\").css(\"display\")?$(t.dom).find(\".fb-type-container\").hide():$(t.dom).find(\".fb-type-container\").show()}),$(this.dom).find(\".fb-type-item\").on(\"click\",function(e){$(t.dom).find(\".fb-type-container\").hide(),$(t.dom).find(\".fb-type-selected\").html($(e.currentTarget).text()+\"
                \"),$(t.dom).find(\".fb-select-value\").val($(e.currentTarget).attr(\"value\"))}),$(this.dom).find(\".fb-des-content\").on(\"click\",function(){$(\".c-container\").first().children(\".fb-hint-tip\").remove(),$(\".c-container\").first().children(\".fb-list-container-first\").remove()\n})},this.render=function(){$(\"body\").append(this.dom)},this.grayed=function(t){t?$(this.dom).css(\"visibility\",\"hidden\"):$(this.dom).removeAttr(\"style\")},this.destory=function(){$(this.dom).remove(),$(document).off(\"scroll.feedback\")},this.post=function(){this.content=$(this.dom).find(\".fb-des-content\").val(),this.type=$(this.dom).find(\".fb-select-value\").val(),this.email=$(this.dom).find(\".fb-email\").val(),data={product_type:26138,content:this.content,type:this.type,img_base64:bds.se.ShortCut.img_base64,email:this.email,query:this.query,srcid:this.srcid,tpl:this.tpl,url:this.url,time:this.time,username:this.username,order:this.order,entry:this.entry,platform:\"pc\"},bds.se.ShortCut.uploadImg?$.post(bds.se.ShortCut.domain,data).success(function(t){\"Success\"==jQuery.parseJSON(t).status||alert(decodeURIComponent(jQuery.parseJSON(t).errors))\n}).error(function(){alert(\"fail\")}):$.ajax({url:bds.se.ShortCut.domain,dataType:\"jsonp\",data:data,jsonp:\"cb1\"}).success(function(t){\"Success\"==t.status||alert(decodeURIComponent(jQuery.parseJSON(t).errors))}).error(function(){alert(\"fail\")}),$(this.dom).find(\".fb-modal \").remove(),$(this.dom).find(\".fb-mask\").remove(),$(this.dom).find(\".fb-success\").css(\"display\",\"block\"),setTimeout(function(){o()},1e3)},this.init()}function c(t,e){this.init=function(){var e=new Date;if(this.query=decodeURIComponent(bds.comm.query),this.srcid=t&&t.attr(\"srcid\")||\"-1\",this.tpl=t&&t.attr(\"tpl\")||\"\",this.url=window.location.href||\"\",this.time=e.getFullYear()+\"/\"+(e.getMonth()+1)+\"/\"+e.getDate()+\" \"+e.getHours()+\":\"+e.getMinutes()+\":\"+e.getSeconds(),this.username=bds.comm.username||\"\",t)if(t.closest(\"#con-ar\").length){this.order=\"con-ar\";\nvar n=[{key:\"27468\",value:\"申请删除提示词\"},{key:\"27464\",value:\"内容或图片陈旧\"},{key:\"27465\",value:\"变形、错乱、乱码等问题\"},{key:\"27469\",value:\"页面结果与搜索词无关\"},{key:\"27467\",value:\"其他问题及建议\"}];this.content_tips_div=s(n)}else if(t.attr(\"id\")&&\"rs\"==t.attr(\"id\")){this.order=\"rs\";var n=[{key:\"27468\",value:\"申请删除提示词\"}];this.content_tips_div=s(n)}else if(t.attr(\"tpl\")&&\"se_com_default\"!=t.attr(\"tpl\")){this.order=t.attr(\"id\")||\"-1\";var n=[{key:\"27464\",value:\"内容或图片陈旧\"},{key:\"27465\",value:\"变形、错乱、乱码等问题\"},{key:\"27466\",value:\"这条结果与搜索词无关\"},{key:\"27467\",value:\"其他问题及建议\"}];\nthis.content_tips_div=s(n)}else if(t.attr(\"tpl\")){this.order=t.attr(\"id\")||\"-1\";var n=[{key:\"27463\",value:\"申请删除或更新这条信息\"},{key:\"27464\",value:\"内容或图片陈旧\"},{key:\"27465\",value:\"变形、错乱、乱码等问题\"},{key:\"27466\",value:\"这条结果与搜索词无关\"},{key:\"27467\",value:\"其他问题及建议\"}];this.content_tips_div=s(n)}else{this.order=\"ec\";var n=[{key:\"27470\",value:\"推广信息侵权\"},{key:\"27471\",value:\"推广信息质量差\"},{key:\"27472\",value:\"推广信息与搜索词无关\"},{key:\"27473\",value:\"其他问题及产品建议\"}];this.content_tips_div=s(n)}return this.entry=\"2\",this.top=t.offset().top-4,this.left=t.closest(\"#content_right\").length?t.offset().left-390-23:t.offset().left+t.width()+30,this.build(),this.bindEvent(),this.render(),this\n},this.build=function(){var t=\"\",e='
                ',n='
                ';t='
                ×

                单条结果反馈

                '+this.content_tips_div+e+n+'
                请填写描述反馈
                请留下您的联系方式
                邮箱格式不正确
                提交反馈
                ×

                非常感谢

                提交成功
                感谢您的宝贵意见
                ';\nvar o=document.createElement(\"div\");o.id=\"fb_baidu_list_dialog\",o.className=\"fb-feedback-list-dialog\",o.setAttribute(\"data-html2canvas-ignore\",\"true\"),o.innerHTML=t,this.dom=o,$(this.dom).css(\"top\",this.top),$(this.dom).css(\"left\",this.left),\"con-ar\"==this.order&&$(this.dom).attr(\"class\",\"fb-feedback-list-dialog-left\")},this.bindEvent=function(){var t=this;$(this.dom).find(\".fb-close\").on(\"click\",function(){t.destory(),n($(\".fb-list-container\")),bds.se.ShortCut.key=0,bds.se.ShortCut.rdialog&&bds.se.ShortCut.rdialog.grayed(0),bds.se.ShortCut.rdialog||o()\n}),$(this.dom).find(\"#fb_list_post_save\").on(\"click\",function(){$(t.dom).find(\".fb-textarea textarea\").val()?-1==[27468,27463].indexOf(Number($(t.dom).find(\".fb-select-value\").val()))||$(t.dom).find(\".fb-email\").val()?$(t.dom).find(\".fb-email\").val()&&!/^(\\w)+(\\.\\w+)*@(\\w)+((\\.\\w{2,3}){1,3})$/.test($(t.dom).find(\".fb-email\").val())?($(t.dom).find(\".fb-hint-error-email\").css(\"display\",\"block\"),setTimeout(function(){$(t.dom).find(\".fb-hint-error-email\").css(\"opacity\",\"1\"),setTimeout(function(){$(t.dom).find(\".fb-hint-error-email\").removeAttr(\"style\")\n},1500)},50)):t.post():($(t.dom).find(\".fb-hint-no-email\").css(\"display\",\"block\"),setTimeout(function(){$(t.dom).find(\".fb-hint-no-email\").css(\"opacity\",\"1\"),setTimeout(function(){$(t.dom).find(\".fb-hint-no-email\").removeAttr(\"style\")},1500)},50)):($(t.dom).find(\".fb-hint-no-content\").css(\"display\",\"block\"),setTimeout(function(){$(t.dom).find(\".fb-hint-no-content\").css(\"opacity\",\"1\"),setTimeout(function(){$(t.dom).find(\".fb-hint-no-content\").removeAttr(\"style\")},1500)},50))}),$(this.dom).find(\".fb-type-selected\").on(\"click\",function(){\"block\"==$(t.dom).find(\".fb-type-container\").css(\"display\")?$(t.dom).find(\".fb-type-container\").hide():$(t.dom).find(\".fb-type-container\").show()\n}),$(this.dom).find(\".fb-type-item\").on(\"click\",function(e){$(t.dom).find(\".fb-type-container\").hide(),$(t.dom).find(\".fb-type-selected\").html($(e.currentTarget).text()+\"
                \"),$(t.dom).find(\".fb-select-value\").val($(e.currentTarget).attr(\"value\"))})},this.render=function(){$(\"body\").append(this.dom)},this.destory=function(){$(this.dom).remove()},this.post=function(){var t=this;this.content=$(this.dom).find(\".fb-des-content\").val(),this.type=$(this.dom).find(\".fb-select-value\").val(),this.email=$(this.dom).find(\".fb-email\").val(),bds.se.ShortCut.get_Snapshot_list(-bds.se.ShortCut.curListDom.offset().left,-bds.se.ShortCut.curListDom.offset().top,bds.se.ShortCut.curListDom.width()+20,bds.se.ShortCut.curListDom.height()+12,function(){data={product_type:26138,content:t.content,type:t.type,img_base64:bds.se.ShortCut.img_base64_list,email:t.email,query:t.query,srcid:t.srcid,tpl:t.tpl,url:t.url,time:t.time,username:t.username,order:t.order,entry:t.entry,platform:\"pc\"},e&&(data.ala=1),bds.se.ShortCut.uploadImg?$.post(bds.se.ShortCut.domain,data).success(function(t){\"Success\"==jQuery.parseJSON(t).status||alert(decodeURIComponent(jQuery.parseJSON(t).errors))\n}).error(function(){alert(\"fail\")}):$.ajax({url:bds.se.ShortCut.domain,dataType:\"jsonp\",data:data,jsonp:\"cb1\"}).success(function(t){\"Success\"==t.status||alert(decodeURIComponent(t.errors))}).error(function(){alert(\"fail\")})}),$(this.dom).find(\".fb-modal \").remove(),$(this.dom).find(\".fb-mask\").remove(),$(this.dom).find(\".fb-success\").css(\"display\",\"block\"),setTimeout(function(){o()},1e3)},this.init()}bds&&bds.se&&(bds.se.ShortCut={base_url_path:\"http://f3.baidu.com\",up_file:!1,is_feedbacking:!1,product_id:0,entrance_id:0,send_img:!1,img_data:\"\",onlyUpFile:!1,pro_data:\"\",scrollTop:0,ldiaInf:{},rdiaInf:{},canvas_block_height:0,key:0,domain:bds.util.domain.get(\"api.open.baidu.com\")+\"/pae/common/api/feedback\",img_base64:\"\",img_base64_list:\"\",initRightBar:function(){this.html2canvas(),this._getCss(),this._identifyCanvas()&&this._identifyCors()?(bds.se.ShortCut.uploadImg=!0,this.get_Snapshot()):bds.se.ShortCut.uploadImg=!1\n},_getCss:function(){bds.util.addStyle(\"#content_left > div,#rs,#con-ar .result-op{position: relative;}\")},_identifyCanvas:function(){try{var t=document.createElement(\"canvas\").getContext(\"2d\");return t=null,!0}catch(e){return!1}},_identifyCors:function(){var t=new XMLHttpRequest;return\"withCredentials\"in t},init_ala:function(t){this.html2canvas(),bds.se.ShortCut.uploadImg=this._identifyCanvas()&&this._identifyCors()?!0:!1,$(\"#container\").append(\"
                \"),t.append(\"
                \"),t.find(\".fb-list-container\").css(\"width\",t.width()+20),t.find(\".fb-list-container\").css(\"height\",t.height()+10),e(t.find(\".fb-list-container\")),bds.se.ShortCut.ldialog=new c(t,1),bds.se.ShortCut.curListDom=t.find(\".fb-list-container\"),$(\".fb-mask\").on(\"click\",function(){o(),bds.se.ShortCut.ldialog&&bds.se.ShortCut.ldialog.destory()\n})},init_shade:function(){$(\"#container\").append(\"
                \"),r(),$(\".fb-list-container\").hover(function(t){i($(t.currentTarget)),$(t.currentTarget).children().length||e($(t.currentTarget))},function(e){t($(e.currentTarget))!=bds.se.ShortCut.key&&n($(e.currentTarget))}),$(\".fb-list-container\").on(\"click\",function(o){$(\".c-container\").first().children(\".fb-hint-tip\").remove(),$(\".c-container\").first().children(\".fb-list-container-first\").remove(),bds.se.ShortCut.ldialog&&bds.se.ShortCut.ldialog.destory(),n($(\".fb-list-container\")),t($(o.currentTarget))==bds.se.ShortCut.key?(bds.se.ShortCut.key=0,bds.se.ShortCut.rdialog&&bds.se.ShortCut.rdialog.grayed(0)):(bds.se.ShortCut.key=t($(o.currentTarget)),bds.se.ShortCut.curListDom=$(o.currentTarget),bds.se.ShortCut.ldialog=new c(i($(o.currentTarget))),bds.se.ShortCut.rdialog&&bds.se.ShortCut.rdialog.grayed(1),e($(o.currentTarget)))\n}),$(\".fb-mask\").on(\"click\",function(){bds.se.ShortCut.ldialog&&bds.se.ShortCut.ldialog.destory(),bds.se.ShortCut.key=0,bds.se.ShortCut.rdialog&&bds.se.ShortCut.rdialog.grayed(0),n($(\".fb-list-container\"))})},get_Snapshot:function(){$(window).scrollTop(0);var t=this;bds.se.ShortCut.rdialog=new a,t.init_shade(),$(\".fb-canvas-block\").addClass(\"c-loading\"),html2canvas(document.body,{proxy:bds.util.domain.get(\"f3.baidu.com\")+\"/getProxyImage.php\",onrendered:function(e){$(\".fb-canvas-block\").removeClass(\"c-loading\");\nvar n=document.createElement(\"canvas\");n.width=e.width,n.height=$(\"body\").height();var o=n.getContext(\"2d\");o.drawImage(e,0,0),bds.se.ShortCut.img_base64=n.toDataURL(\"image/png\"),$(\".fb-canvas-block img\").attr(\"src\",n.toDataURL(\"image/png\")),setTimeout(function(){t.canvas_block_height=$(\".fb-canvas-block img\").height()},50),$(document).on(\"scroll.feedback\",function(){var e=$(window).scrollTop(),n=$(document).height(),o=$(window).height();scrollPercent=e/(n-o),$(\".fb-canvas-block img\").css(\"top\",-(t.canvas_block_height-172)*scrollPercent)\n})}})},get_Snapshot_list:function(t,e,n,o,i){html2canvas(document.body,{proxy:bds.util.domain.get(\"f3.baidu.com\")+\"/getProxyImage.php\",onrendered:function(r){var s=document.createElement(\"canvas\");s.width=n,s.height=o;var a=s.getContext(\"2d\");a.drawImage(r,t,e),bds.se.ShortCut.img_base64_list=s.toDataURL(\"image/png\"),i()}})},html2canvas:function(){!function(t,e,n){\"use strict\";function o(e){d.logging&&t.console&&t.console.log&&t.console.log(e)}function i(t,e,n,o,i,r){var s,a,c,l,u=d.Util.getCSS(e,t,i);\nif(1===u.length&&(l=u[0],u=[],u[0]=l,u[1]=l),-1!==u[0].toString().indexOf(\"%\"))c=parseFloat(u[0])/100,a=n.width*c,\"backgroundSize\"!==t&&(a-=(r||o).width*c);else if(\"backgroundSize\"===t)if(\"auto\"===u[0])a=o.width;else if(u[0].match(/contain|cover/)){var m=d.Util.resizeBounds(o.width,o.height,n.width,n.height,u[0]);a=m.width,s=m.height}else a=parseInt(u[0],10);else a=parseInt(u[0],10);return\"auto\"===u[1]?s=a/o.width*o.height:-1!==u[1].toString().indexOf(\"%\")?(c=parseFloat(u[1])/100,s=n.height*c,\"backgroundSize\"!==t&&(s-=(r||o).height*c)):s=parseInt(u[1],10),[a,s]\n}function r(t,e){var n=[];return{storage:n,width:t,height:e,clip:function(){n.push({type:\"function\",name:\"clip\",arguments:arguments})},translate:function(){n.push({type:\"function\",name:\"translate\",arguments:arguments})},fill:function(){n.push({type:\"function\",name:\"fill\",arguments:arguments})},save:function(){n.push({type:\"function\",name:\"save\",arguments:arguments})},restore:function(){n.push({type:\"function\",name:\"restore\",arguments:arguments})},fillRect:function(){n.push({type:\"function\",name:\"fillRect\",arguments:arguments})\n},createPattern:function(){n.push({type:\"function\",name:\"createPattern\",arguments:arguments})},drawShape:function(){var t=[];return n.push({type:\"function\",name:\"drawShape\",arguments:t}),{moveTo:function(){t.push({name:\"moveTo\",arguments:arguments})},lineTo:function(){t.push({name:\"lineTo\",arguments:arguments})},arcTo:function(){t.push({name:\"arcTo\",arguments:arguments})},bezierCurveTo:function(){t.push({name:\"bezierCurveTo\",arguments:arguments})},quadraticCurveTo:function(){t.push({name:\"quadraticCurveTo\",arguments:arguments})\n}}},drawImage:function(){n.push({type:\"function\",name:\"drawImage\",arguments:arguments})},fillText:function(){n.push({type:\"function\",name:\"fillText\",arguments:arguments})},setVariable:function(t,e){n.push({type:\"variable\",name:t,arguments:e})}}}function s(t){return{zindex:t,children:[]}}var a,c,d={};d.Util={},d.Util.trimText=function(t){return function(e){return t?t.apply(e):((e||\"\")+\"\").replace(/^\\s+|\\s+$/g,\"\")}}(String.prototype.trim),d.Util.parseBackgroundImage=function(t){var e,n,o,i,r,s,a,c,d=\" \\r\\n\t\",l=[],u=0,m=0,p=function(){e&&('\"'===n.substr(0,1)&&(n=n.substr(1,n.length-2)),n&&c.push(n),\"-\"===e.substr(0,1)&&(i=e.indexOf(\"-\",1)+1)>0&&(o=e.substr(0,i),e=e.substr(i)),l.push({prefix:o,method:e.toLowerCase(),value:r,args:c})),c=[],e=o=n=r=\"\"\n};p();for(var f=0,h=t.length;h>f;f++)if(s=t[f],!(0===u&&d.indexOf(s)>-1)){switch(s){case'\"':a?a===s&&(a=null):a=s;break;case\"(\":if(a)break;if(0===u){u=1,r+=s;continue}m++;break;case\")\":if(a)break;if(1===u){if(0===m){u=0,r+=s,p();continue}m--}break;case\",\":if(a)break;if(0===u){p();continue}if(1===u&&0===m&&!e.match(/^url$/i)){c.push(n),n=\"\",r+=s;continue}}r+=s,0===u?e+=s:n+=s}return p(),l},d.Util.Bounds=function(t){var e,n={};return t.getBoundingClientRect?(e=t.getBoundingClientRect(),n.top=e.top,n.bottom=e.bottom||e.top+e.height,n.left=e.left,n.width=e.width||e.right-e.left,n.height=e.height||e.bottom-e.top,n):void 0\n},d.Util.getCSS=function(t,o,i){function r(e,n){var o,i=t.runtimeStyle&&t.runtimeStyle[e],r=t.style;return!/^-?[0-9]+\\.?[0-9]*(?:px)?$/i.test(n)&&/^-?\\d/.test(n)&&(o=r.left,i&&(t.runtimeStyle.left=t.currentStyle.left),r.left=\"fontSize\"===e?\"1em\":n||0,n=r.pixelLeft+\"px\",r.left=o,i&&(t.runtimeStyle.left=i)),/^(thin|medium|thick)$/i.test(n)?n:Math.round(parseFloat(n))+\"px\"}var s,l=o.match(/^background(Size|Position)$/);if(a!==t&&(c=e.defaultView.getComputedStyle(t,null)),s=c[o],l){if(s=(s||\"\").split(\",\"),s=s[i||0]||s[0]||\"auto\",s=d.Util.trimText(s).split(\" \"),\"backgroundSize\"!==o||s[0]&&!s[0].match(/cover|contain|auto/)){if(s[0]=-1===s[0].indexOf(\"%\")?r(o+\"X\",s[0]):s[0],s[1]===n){if(\"backgroundSize\"===o)return s[1]=\"auto\",s;\ns[1]=s[0]}s[1]=-1===s[1].indexOf(\"%\")?r(o+\"Y\",s[1]):s[1]}}else if(/border(Top|Bottom)(Left|Right)Radius/.test(o)){var u=s.split(\" \");u.length<=1&&(u[1]=u[0]),u[0]=parseInt(u[0],10),u[1]=parseInt(u[1],10),s=u}return s},d.Util.resizeBounds=function(t,e,n,o,i){var r,s,a=n/o,c=t/e;return i&&\"auto\"!==i?c>a^\"contain\"===i?(s=o,r=o*c):(r=n,s=n/c):(r=n,s=o),{width:r,height:s}},d.Util.BackgroundPosition=function(t,e,n,o,r){var s=i(\"backgroundPosition\",t,e,n,o,r);return{left:s[0],top:s[1]}},d.Util.BackgroundSize=function(t,e,n,o){var r=i(\"backgroundSize\",t,e,n,o);\nreturn{width:r[0],height:r[1]}},d.Util.Extend=function(t,e){for(var n in t)t.hasOwnProperty(n)&&(e[n]=t[n]);return e},d.Util.Children=function(t){var e;try{e=t.nodeName&&\"IFRAME\"===t.nodeName.toUpperCase()?t.contentDocument||t.contentWindow.document:function(t){var e=[];return null!==t&&!function(t,e){var o=t.length,i=0;if(\"number\"==typeof e.length)for(var r=e.length;r>i;i++)t[o++]=e[i];else for(;e[i]!==n;)t[o++]=e[i++];return t.length=o,t}(e,t),e}(t.childNodes)}catch(i){o(\"html2canvas.Util.Children failed with exception: \"+i.exceptionStackTrace),e=[]\n}return e},d.Util.Font=function(){var t={};return function(e,o,i){if(t[e+\"-\"+o]!==n)return t[e+\"-\"+o];var r,s,a,c=i.createElement(\"div\"),d=i.createElement(\"img\"),l=i.createElement(\"span\"),u=\"Hidden Text\";return c.style.visibility=\"hidden\",c.style.fontFamily=e,c.style.fontSize=o,c.style.margin=0,c.style.padding=0,i.body.appendChild(c),d.src=\"data:image/gif;base64,R0lGODlhAQABAIABAP///wAAACwAAAAAAQABAAACAkQBADs=\",d.width=1,d.height=1,d.style.margin=0,d.style.padding=0,d.style.verticalAlign=\"baseline\",l.style.fontFamily=e,l.style.fontSize=o,l.style.margin=0,l.style.padding=0,l.appendChild(i.createTextNode(u)),c.appendChild(l),c.appendChild(d),r=d.offsetTop-l.offsetTop+1,c.removeChild(l),c.appendChild(i.createTextNode(u)),c.style.lineHeight=\"normal\",d.style.verticalAlign=\"super\",s=d.offsetTop-c.offsetTop+1,a={baseline:r,lineWidth:1,middle:s},t[e+\"-\"+o]=a,i.body.removeChild(c),a\n}}(),function(){d.Generate={};var t=[/^(-webkit-linear-gradient)\\(([a-z\\s]+)([\\w\\d\\.\\s,%\\(\\)]+)\\)$/,/^(-o-linear-gradient)\\(([a-z\\s]+)([\\w\\d\\.\\s,%\\(\\)]+)\\)$/,/^(-webkit-gradient)\\((linear|radial),\\s((?:\\d{1,3}%?)\\s(?:\\d{1,3}%?),\\s(?:\\d{1,3}%?)\\s(?:\\d{1,3}%?))([\\w\\d\\.\\s,%\\(\\)\\-]+)\\)$/,/^(-moz-linear-gradient)\\(((?:\\d{1,3}%?)\\s(?:\\d{1,3}%?))([\\w\\d\\.\\s,%\\(\\)]+)\\)$/,/^(-webkit-radial-gradient)\\(((?:\\d{1,3}%?)\\s(?:\\d{1,3}%?)),\\s(\\w+)\\s([a-z\\-]+)([\\w\\d\\.\\s,%\\(\\)]+)\\)$/,/^(-moz-radial-gradient)\\(((?:\\d{1,3}%?)\\s(?:\\d{1,3}%?)),\\s(\\w+)\\s?([a-z\\-]*)([\\w\\d\\.\\s,%\\(\\)]+)\\)$/,/^(-o-radial-gradient)\\(((?:\\d{1,3}%?)\\s(?:\\d{1,3}%?)),\\s(\\w+)\\s([a-z\\-]+)([\\w\\d\\.\\s,%\\(\\)]+)\\)$/];\nd.Generate.parseGradient=function(e,n){var o,i,r,s,a,c,d,l,u,m,p,f,h=t.length;for(i=0;h>i&&!(r=e.match(t[i]));i+=1);if(r)switch(r[1]){case\"-webkit-linear-gradient\":case\"-o-linear-gradient\":if(o={type:\"linear\",x0:null,y0:null,x1:null,y1:null,colorStops:[]},a=r[2].match(/\\w+/g))for(c=a.length,i=0;c>i;i+=1)switch(a[i]){case\"top\":o.y0=0,o.y1=n.height;break;case\"right\":o.x0=n.width,o.x1=0;break;case\"bottom\":o.y0=n.height,o.y1=0;break;case\"left\":o.x0=0,o.x1=n.width}if(null===o.x0&&null===o.x1&&(o.x0=o.x1=n.width/2),null===o.y0&&null===o.y1&&(o.y0=o.y1=n.height/2),a=r[3].match(/((?:rgb|rgba)\\(\\d{1,3},\\s\\d{1,3},\\s\\d{1,3}(?:,\\s[0-9\\.]+)?\\)(?:\\s\\d{1,3}(?:%|px))?)+/g))for(c=a.length,d=1/Math.max(c-1,1),i=0;c>i;i+=1)l=a[i].match(/((?:rgb|rgba)\\(\\d{1,3},\\s\\d{1,3},\\s\\d{1,3}(?:,\\s[0-9\\.]+)?\\))\\s*(\\d{1,3})?(%|px)?/),l[2]?(s=parseFloat(l[2]),s/=\"%\"===l[3]?100:n.width):s=i*d,o.colorStops.push({color:l[1],stop:s});\nbreak;case\"-webkit-gradient\":if(o={type:\"radial\"===r[2]?\"circle\":r[2],x0:0,y0:0,x1:0,y1:0,colorStops:[]},a=r[3].match(/(\\d{1,3})%?\\s(\\d{1,3})%?,\\s(\\d{1,3})%?\\s(\\d{1,3})%?/),a&&(o.x0=a[1]*n.width/100,o.y0=a[2]*n.height/100,o.x1=a[3]*n.width/100,o.y1=a[4]*n.height/100),a=r[4].match(/((?:from|to|color-stop)\\((?:[0-9\\.]+,\\s)?(?:rgb|rgba)\\(\\d{1,3},\\s\\d{1,3},\\s\\d{1,3}(?:,\\s[0-9\\.]+)?\\)\\))+/g))for(c=a.length,i=0;c>i;i+=1)l=a[i].match(/(from|to|color-stop)\\(([0-9\\.]+)?(?:,\\s)?((?:rgb|rgba)\\(\\d{1,3},\\s\\d{1,3},\\s\\d{1,3}(?:,\\s[0-9\\.]+)?\\))\\)/),s=parseFloat(l[2]),\"from\"===l[1]&&(s=0),\"to\"===l[1]&&(s=1),o.colorStops.push({color:l[3],stop:s});\nbreak;case\"-moz-linear-gradient\":if(o={type:\"linear\",x0:0,y0:0,x1:0,y1:0,colorStops:[]},a=r[2].match(/(\\d{1,3})%?\\s(\\d{1,3})%?/),a&&(o.x0=a[1]*n.width/100,o.y0=a[2]*n.height/100,o.x1=n.width-o.x0,o.y1=n.height-o.y0),a=r[3].match(/((?:rgb|rgba)\\(\\d{1,3},\\s\\d{1,3},\\s\\d{1,3}(?:,\\s[0-9\\.]+)?\\)(?:\\s\\d{1,3}%)?)+/g))for(c=a.length,d=1/Math.max(c-1,1),i=0;c>i;i+=1)l=a[i].match(/((?:rgb|rgba)\\(\\d{1,3},\\s\\d{1,3},\\s\\d{1,3}(?:,\\s[0-9\\.]+)?\\))\\s*(\\d{1,3})?(%)?/),l[2]?(s=parseFloat(l[2]),l[3]&&(s/=100)):s=i*d,o.colorStops.push({color:l[1],stop:s});\nbreak;case\"-webkit-radial-gradient\":case\"-moz-radial-gradient\":case\"-o-radial-gradient\":if(o={type:\"circle\",x0:0,y0:0,x1:n.width,y1:n.height,cx:0,cy:0,rx:0,ry:0,colorStops:[]},a=r[2].match(/(\\d{1,3})%?\\s(\\d{1,3})%?/),a&&(o.cx=a[1]*n.width/100,o.cy=a[2]*n.height/100),a=r[3].match(/\\w+/),l=r[4].match(/[a-z\\-]*/),a&&l)switch(l[0]){case\"farthest-corner\":case\"cover\":case\"\":u=Math.sqrt(Math.pow(o.cx,2)+Math.pow(o.cy,2)),m=Math.sqrt(Math.pow(o.cx,2)+Math.pow(o.y1-o.cy,2)),p=Math.sqrt(Math.pow(o.x1-o.cx,2)+Math.pow(o.y1-o.cy,2)),f=Math.sqrt(Math.pow(o.x1-o.cx,2)+Math.pow(o.cy,2)),o.rx=o.ry=Math.max(u,m,p,f);\nbreak;case\"closest-corner\":u=Math.sqrt(Math.pow(o.cx,2)+Math.pow(o.cy,2)),m=Math.sqrt(Math.pow(o.cx,2)+Math.pow(o.y1-o.cy,2)),p=Math.sqrt(Math.pow(o.x1-o.cx,2)+Math.pow(o.y1-o.cy,2)),f=Math.sqrt(Math.pow(o.x1-o.cx,2)+Math.pow(o.cy,2)),o.rx=o.ry=Math.min(u,m,p,f);break;case\"farthest-side\":\"circle\"===a[0]?o.rx=o.ry=Math.max(o.cx,o.cy,o.x1-o.cx,o.y1-o.cy):(o.type=a[0],o.rx=Math.max(o.cx,o.x1-o.cx),o.ry=Math.max(o.cy,o.y1-o.cy));break;case\"closest-side\":case\"contain\":\"circle\"===a[0]?o.rx=o.ry=Math.min(o.cx,o.cy,o.x1-o.cx,o.y1-o.cy):(o.type=a[0],o.rx=Math.min(o.cx,o.x1-o.cx),o.ry=Math.min(o.cy,o.y1-o.cy))\n}if(a=r[5].match(/((?:rgb|rgba)\\(\\d{1,3},\\s\\d{1,3},\\s\\d{1,3}(?:,\\s[0-9\\.]+)?\\)(?:\\s\\d{1,3}(?:%|px))?)+/g))for(c=a.length,d=1/Math.max(c-1,1),i=0;c>i;i+=1)l=a[i].match(/((?:rgb|rgba)\\(\\d{1,3},\\s\\d{1,3},\\s\\d{1,3}(?:,\\s[0-9\\.]+)?\\))\\s*(\\d{1,3})?(%|px)?/),l[2]?(s=parseFloat(l[2]),s/=\"%\"===l[3]?100:n.width):s=i*d,o.colorStops.push({color:l[1],stop:s})}return o},d.Generate.Gradient=function(t,n){if(0!==n.width&&0!==n.height){var i,r,s,a,c=e.createElement(\"canvas\"),l=c.getContext(\"2d\");if(c.width=n.width,c.height=n.height,i=d.Generate.parseGradient(t,n))if(\"linear\"===i.type){for(r=l.createLinearGradient(i.x0,i.y0,i.x1,i.y1),s=0,a=i.colorStops.length;a>s;s+=1)try{r.addColorStop(i.colorStops[s].stop,i.colorStops[s].color)\n}catch(u){o([\"failed to add color stop: \",u,\"; tried to add: \",i.colorStops[s],\"; stop: \",s,\"; in: \",t])}l.fillStyle=r,l.fillRect(0,0,n.width,n.height)}else if(\"circle\"===i.type){for(r=l.createRadialGradient(i.cx,i.cy,0,i.cx,i.cy,i.rx),s=0,a=i.colorStops.length;a>s;s+=1)try{r.addColorStop(i.colorStops[s].stop,i.colorStops[s].color)}catch(u){o([\"failed to add color stop: \",u,\"; tried to add: \",i.colorStops[s],\"; stop: \",s,\"; in: \",t])}l.fillStyle=r,l.fillRect(0,0,n.width,n.height)}else if(\"ellipse\"===i.type){var m=e.createElement(\"canvas\"),p=m.getContext(\"2d\"),f=Math.max(i.rx,i.ry),h=2*f;\nfor(m.width=m.height=h,r=p.createRadialGradient(i.rx,i.ry,0,i.rx,i.ry,f),s=0,a=i.colorStops.length;a>s;s+=1)try{r.addColorStop(i.colorStops[s].stop,i.colorStops[s].color)}catch(u){o([\"failed to add color stop: \",u,\"; tried to add: \",i.colorStops[s],\"; stop: \",s,\"; in: \",t])}p.fillStyle=r,p.fillRect(0,0,h,h),l.fillStyle=i.colorStops[s-1].color,l.fillRect(0,0,c.width,c.height),l.drawImage(m,i.cx-i.rx,i.cy-i.ry,2*i.rx,2*i.ry)}return c}},d.Generate.ListAlpha=function(t){var e,n=\"\";do e=t%26,n=String.fromCharCode(e+64)+n,t/=26;\nwhile(26*t>26);return n},d.Generate.ListRoman=function(t){var e,n=[\"M\",\"CM\",\"D\",\"CD\",\"C\",\"XC\",\"L\",\"XL\",\"X\",\"IX\",\"V\",\"IV\",\"I\"],o=[1e3,900,500,400,100,90,50,40,10,9,5,4,1],i=\"\",r=n.length;if(0>=t||t>=4e3)return t;for(e=0;r>e;e+=1)for(;t>=o[e];)t-=o[e],i+=n[e];return i}}(),d.Parse=function(i,a){function c(){return Math.max(Math.max(ae.body.scrollWidth,ae.documentElement.scrollWidth),Math.max(ae.body.offsetWidth,ae.documentElement.offsetWidth),Math.max(ae.body.clientWidth,ae.documentElement.clientWidth))\n}function l(){return Math.max(Math.max(ae.body.scrollHeight,ae.documentElement.scrollHeight),Math.max(ae.body.offsetHeight,ae.documentElement.offsetHeight),Math.max(ae.body.clientHeight,ae.documentElement.clientHeight))}function u(t,e){var n=parseInt(ue(t,e),10);return isNaN(n)?0:n}function m(t,e,n,o,i,r){\"transparent\"!==r&&(t.setVariable(\"fillStyle\",r),t.fillRect(e,n,o,i),se+=1)}function p(t,e){switch(e){case\"lowercase\":return t.toLowerCase();case\"capitalize\":return t.replace(/(^|\\s|:|-|\\(|\\))([a-z])/g,function(t,e,n){return t.length>0?e+n.toUpperCase():void 0\n});case\"uppercase\":return t.toUpperCase();default:return t}}function f(t){return/^(normal|none|0px)$/.test(t)}function h(t,e,n,o){null!==t&&d.Util.trimText(t).length>0&&(o.fillText(t,e,n),se+=1)}function g(t,e,n,o){var i=!1,r=ue(e,\"fontWeight\"),s=ue(e,\"fontFamily\"),a=ue(e,\"fontSize\");switch(parseInt(r,10)){case 401:r=\"bold\";break;case 400:r=\"normal\"}return t.setVariable(\"fillStyle\",o),t.setVariable(\"font\",[ue(e,\"fontStyle\"),ue(e,\"fontVariant\"),r,a,s].join(\" \")),t.setVariable(\"textAlign\",i?\"right\":\"left\"),\"none\"!==n?d.Util.Font(s,a,ae):void 0\n}function b(t,e,n,o,i){switch(e){case\"underline\":m(t,n.left,Math.round(n.top+o.baseline+o.lineWidth),n.width,1,i);break;case\"overline\":m(t,n.left,Math.round(n.top),n.width,1,i);break;case\"line-through\":m(t,n.left,Math.ceil(n.top+o.middle+o.lineWidth),n.width,1,i)}}function v(t,e,n,o){var i;if(ce.rangeBounds)(\"none\"!==n||0!==d.Util.trimText(e).length)&&(i=w(e,t.node,t.textOffset)),t.textOffset+=e.length;else if(t.node&&\"string\"==typeof t.node.nodeValue){var r=o?t.node.splitText(e.length):null;i=_(t.node),t.node=r\n}return i}function w(t,e,n){var o=ae.createRange();return o.setStart(e,n),o.setEnd(e,n+t.length),o.getBoundingClientRect()}function _(t){var e=t.parentNode,n=ae.createElement(\"wrapper\"),o=t.cloneNode(!0);n.appendChild(t.cloneNode(!0)),e.replaceChild(n,t);var i=d.Util.Bounds(n);return e.replaceChild(o,n),i}function y(t,e,n){var o,i,r=n.ctx,s=ue(t,\"color\"),c=ue(t,\"textDecoration\"),l=ue(t,\"textAlign\"),u={node:e,textOffset:0};d.Util.trimText(e.nodeValue).length>0&&(e.nodeValue=p(e.nodeValue,ue(t,\"textTransform\")),l=l.replace([\"-webkit-auto\"],[\"auto\"]),i=e.nodeValue.split(!a.letterRendering&&/^(left|right|justify|auto)$/.test(l)&&f(ue(t,\"letterSpacing\"))?/(\\b| )/:\"\"),o=g(r,t,c,s),a.chinese&&i.forEach(function(t,e){/.*[\\u4E00-\\u9FA5].*$/.test(t)&&(t=t.split(\"\"),t.unshift(e,1),i.splice.apply(i,t))\n}),i.forEach(function(t,e){var n=v(u,t,c,e0||e[1]>0?(t.push([\"line\",o[0].start.x,o[0].start.y]),o[0].curveTo(t),o[1].curveTo(t)):t.push([\"line\",r,s]),(n[0]>0||n[1]>0)&&t.push([\"line\",i[0].start.x,i[0].start.y])}function q(t,e,n,o,i,r,s){var a=[];return e[0]>0||e[1]>0?(a.push([\"line\",o[1].start.x,o[1].start.y]),o[1].curveTo(a)):a.push([\"line\",t.c1[0],t.c1[1]]),n[0]>0||n[1]>0?(a.push([\"line\",r[0].start.x,r[0].start.y]),r[0].curveTo(a),a.push([\"line\",s[0].end.x,s[0].end.y]),s[0].curveToReversed(a)):(a.push([\"line\",t.c2[0],t.c2[1]]),a.push([\"line\",t.c3[0],t.c3[1]])),e[0]>0||e[1]>0?(a.push([\"line\",i[1].end.x,i[1].end.y]),i[1].curveToReversed(a)):a.push([\"line\",t.c4[0],t.c4[1]]),a\n}function U(t,e,n){var o=t.left,i=t.top,r=t.width,s=t.height,a=e[0][0],c=e[0][1],d=e[1][0],l=e[1][1],u=e[2][0],m=e[2][1],p=e[3][0],f=e[3][1],h=r-d,g=s-u,b=r-m,v=s-f;return{topLeftOuter:fe(o,i,a,c).topLeft.subdivide(.5),topLeftInner:fe(o+n[3].width,i+n[0].width,Math.max(0,a-n[3].width),Math.max(0,c-n[0].width)).topLeft.subdivide(.5),topRightOuter:fe(o+h,i,d,l).topRight.subdivide(.5),topRightInner:fe(o+Math.min(h,r+n[3].width),i+n[0].width,h>r+n[3].width?0:d-n[3].width,l-n[0].width).topRight.subdivide(.5),bottomRightOuter:fe(o+b,i+g,m,u).bottomRight.subdivide(.5),bottomRightInner:fe(o+Math.min(b,r+n[3].width),i+Math.min(g,s+n[0].width),Math.max(0,m-n[1].width),Math.max(0,u-n[2].width)).bottomRight.subdivide(.5),bottomLeftOuter:fe(o,i+v,p,f).bottomLeft.subdivide(.5),bottomLeftInner:fe(o+n[3].width,i+v,Math.max(0,p-n[3].width),Math.max(0,f-n[2].width)).bottomLeft.subdivide(.5)}\n}function O(t,e,n,o,i){var r=ue(t,\"backgroundClip\"),s=[];switch(r){case\"content-box\":case\"padding-box\":j(s,o[0],o[1],e.topLeftInner,e.topRightInner,i.left+n[3].width,i.top+n[0].width),j(s,o[1],o[2],e.topRightInner,e.bottomRightInner,i.left+i.width-n[1].width,i.top+n[0].width),j(s,o[2],o[3],e.bottomRightInner,e.bottomLeftInner,i.left+i.width-n[1].width,i.top+i.height-n[2].width),j(s,o[3],o[0],e.bottomLeftInner,e.topLeftInner,i.left+n[3].width,i.top+i.height-n[2].width);break;default:j(s,o[0],o[1],e.topLeftOuter,e.topRightOuter,i.left,i.top),j(s,o[1],o[2],e.topRightOuter,e.bottomRightOuter,i.left+i.width,i.top),j(s,o[2],o[3],e.bottomRightOuter,e.bottomLeftOuter,i.left+i.width,i.top+i.height),j(s,o[3],o[0],e.bottomLeftOuter,e.topLeftOuter,i.left,i.top+i.height)\n}return s}function E(t,e,n){var o,i,r,s,a,c,d=e.left,l=e.top,u=e.width,m=e.height,p=A(t),f=U(e,p,n),h={clip:O(t,f,n,p,e),borders:[]};for(o=0;4>o;o++)if(n[o].width>0){switch(i=d,r=l,s=u,a=m-n[2].width,o){case 0:a=n[0].width,c=q({c1:[i,r],c2:[i+s,r],c3:[i+s-n[1].width,r+a],c4:[i+n[3].width,r+a]},p[0],p[1],f.topLeftOuter,f.topLeftInner,f.topRightOuter,f.topRightInner);break;case 1:i=d+u-n[1].width,s=n[1].width,c=q({c1:[i+s,r],c2:[i+s,r+a+n[2].width],c3:[i,r+a],c4:[i,r+n[0].width]},p[1],p[2],f.topRightOuter,f.topRightInner,f.bottomRightOuter,f.bottomRightInner);\nbreak;case 2:r=r+m-n[2].width,a=n[2].width,c=q({c1:[i+s,r+a],c2:[i,r+a],c3:[i+n[3].width,r],c4:[i+s-n[2].width,r]},p[2],p[3],f.bottomRightOuter,f.bottomRightInner,f.bottomLeftOuter,f.bottomLeftInner);break;case 3:s=n[3].width,c=q({c1:[i,r+a+n[2].width],c2:[i,r],c3:[i+s,r+n[0].width],c4:[i+s,r+a]},p[3],p[0],f.bottomLeftOuter,f.bottomLeftInner,f.topLeftOuter,f.topLeftInner)}h.borders.push({args:c,color:n[o].color})}return h}function N(t,e){var n=t.drawShape();return e.forEach(function(t,e){n[0===e?\"moveTo\":t[0]+\"To\"].apply(null,t.slice(1))\n}),n}function P(t,e,n){\"transparent\"!==n&&(t.setVariable(\"fillStyle\",n),N(t,e),t.fill(),se+=1)}function M(t,e,n){var i,r,s=ae.createElement(\"valuewrap\"),a=[\"lineHeight\",\"textAlign\",\"fontFamily\",\"color\",\"fontSize\",\"paddingLeft\",\"paddingTop\",\"width\",\"height\",\"border\",\"borderLeftWidth\",\"borderTopWidth\"];a.forEach(function(e){try{s.style[e]=ue(t,e)}catch(n){o(\"html2canvas: Parse: Exception caught in renderFormValue: \"+n.exceptionStackTrace)}}),s.style.borderColor=\"black\",s.style.borderStyle=\"solid\",s.style.display=\"block\",s.style.position=\"absolute\",(/^(submit|reset|button|text|password)$/.test(t.type)||\"SELECT\"===t.nodeName)&&(s.style.lineHeight=ue(t,\"height\")),s.style.top=e.top+\"px\",s.style.left=e.left+\"px\",i=\"SELECT\"===t.nodeName?(t.options[t.selectedIndex]||0).text:t.value,i||(i=t.placeholder),r=ae.createTextNode(i),s.appendChild(r),le.appendChild(s),y(t,r,n),le.removeChild(s)\n}function z(t){t.drawImage.apply(t,Array.prototype.slice.call(arguments,1)),se+=1}function B(n,i){var r=t.getComputedStyle(n,i);if(r&&r.content&&\"none\"!==r.content&&\"-moz-alt-content\"!==r.content){var s=r.content+\"\",a=s.substr(0,1);a===s.substr(s.length-1)&&a.match(/'|\"/)&&(s=s.substr(1,s.length-2));var c=\"url\"===s.substr(0,3),l=e.createElement(c?\"img\":\"span\");return l.className=me+\"-before \"+me+\"-after\",Object.keys(r).filter(H).forEach(function(t){try{l.style[t]=r[t]}catch(e){o([\"Tried to assign readonly property \",t,\"Error:\",e])\n}}),c?l.src=d.Util.parseBackgroundImage(s)[0].args[0]:l.innerHTML=s,l}}function H(e){return isNaN(t.parseInt(e,10))}function F(t,e){var n=B(t,\":before\"),o=B(t,\":after\");(n||o)&&(n&&(t.className+=\" \"+me+\"-before\",t.parentNode.insertBefore(n,t),ne(n,e,!0),t.parentNode.removeChild(n),t.className=t.className.replace(me+\"-before\",\"\").trim()),o&&(t.className+=\" \"+me+\"-after\",t.appendChild(o),ne(o,e,!0),t.removeChild(o),t.className=t.className.replace(me+\"-after\",\"\").trim()))}function W(t,e,n,o){var i=Math.round(o.left+n.left),r=Math.round(o.top+n.top);\nt.createPattern(e),t.translate(i,r),t.fill(),t.translate(-i,-r)}function G(t,e,n,o,i,r,s,a){var c=[];c.push([\"line\",Math.round(i),Math.round(r)]),c.push([\"line\",Math.round(i+s),Math.round(r)]),c.push([\"line\",Math.round(i+s),Math.round(a+r)]),c.push([\"line\",Math.round(i),Math.round(a+r)]),N(t,c),t.save(),t.clip(),W(t,e,n,o),t.restore()}function Q(t,e,n){m(t,e.left,e.top,e.width,e.height,n)}function V(t,e,n,o,i){var r=d.Util.BackgroundSize(t,e,o,i),s=d.Util.BackgroundPosition(t,e,o,i,r),a=ue(t,\"backgroundRepeat\").split(\",\").map(function(t){return t.trim()\n});switch(o=X(o,r),a=a[i]||a[0]){case\"repeat-x\":G(n,o,s,e,e.left,e.top+s.top,99999,o.height);break;case\"repeat-y\":G(n,o,s,e,e.left+s.left,e.top,o.width,99999);break;case\"no-repeat\":G(n,o,s,e,e.left+s.left,e.top+s.top,o.width,o.height);break;default:W(n,o,s,{top:e.top,left:e.left,width:o.width,height:o.height})}}function J(t,e,n){for(var i,r=ue(t,\"backgroundImage\"),s=d.Util.parseBackgroundImage(r),a=s.length;a--;)if(r=s[a],r.args&&0!==r.args.length){var c=\"url\"===r.method?r.args[0]:r.value;i=C(c),i?V(t,e,n,i,a):o(\"html2canvas: Error loading background:\",r)\n}}function X(t,e){if(t.width===e.width&&t.height===e.height)return t;var n,o=ae.createElement(\"canvas\");return o.width=e.width,o.height=e.height,n=o.getContext(\"2d\"),z(n,t,0,0,t.width,t.height,0,0,e.width,e.height),o}function K(t,e,n){var o=ue(e,\"opacity\")*(n?n.opacity:1);return t.setVariable(\"globalAlpha\",o),o}function Y(t,e,n){var o=r(e?n.width:c(),e?n.height:l()),i={ctx:o,zIndex:I(ue(t,\"zIndex\"),e?e.zIndex:null),opacity:K(o,t,e),cssPosition:ue(t,\"position\"),borders:R(t),clip:e&&e.clip?d.Util.Extend({},e.clip):null};\nreturn a.useOverflow===!0&&/(hidden|scroll|auto)/.test(ue(t,\"overflow\"))===!0&&/(BODY)/i.test(t.nodeName)===!1&&(i.clip=i.clip?S(i.clip,n):n),i.zIndex.children.push(i),i}function Z(t,e,n){var o={left:e.left+t[3].width,top:e.top+t[0].width,width:e.width-(t[1].width+t[3].width),height:e.height-(t[0].width+t[2].width)};return n&&(o=S(o,n)),o}function te(t,e,n){var i,r=d.Util.Bounds(t),s=de.test(t.nodeName)?\"#efefef\":ue(t,\"backgroundColor\"),a=Y(t,e,r),c=a.borders,l=a.ctx,u=Z(c,r,a.clip),m=E(t,r,c);switch(N(l,m.clip),l.save(),l.clip(),u.height>0&&u.width>0&&(Q(l,r,s),J(t,u,l)),l.restore(),m.borders.forEach(function(t){P(l,t.args,t.color)\n}),n||F(t,a),t.nodeName){case\"IMG\":(i=C(t.getAttribute(\"src\")))?D(l,t,i,r,c):o(\"html2canvas: Error loading :\"+t.getAttribute(\"src\"));break;case\"INPUT\":/^(text|url|email|submit|button|reset)$/.test(t.type)&&(t.value||t.placeholder).length>0&&M(t,r,a);break;case\"TEXTAREA\":(t.value||t.placeholder||\"\").length>0&&M(t,r,a);break;case\"SELECT\":(t.options||t.placeholder||\"\").length>0&&M(t,r,a);break;case\"LI\":T(t,a,u);break;case\"CANVAS\":D(l,t,t,r,c)}return a}function ee(t){return\"none\"!==ue(t,\"display\")&&\"hidden\"!==ue(t,\"visibility\")&&!t.hasAttribute(\"data-html2canvas-ignore\")\n}function ne(t,e,n){ee(t)&&(e=te(t,e,n)||e,de.test(t.nodeName)||d.Util.Children(t).forEach(function(o){1===o.nodeType?ne(o,e,n):3===o.nodeType&&y(t,o,e)}))}function oe(t,e){function n(t){var e,o,i,r,a,c=d.Util.Children(t),l=c.length;for(a=0;l>a;a+=1)if(r=c[a],3===r.nodeType)s+=r.nodeValue.replace(//g,\">\");else if(1===r.nodeType&&!/^(script|meta|title)$/.test(r.nodeName.toLowerCase())){if(s+=\"<\"+r.nodeName.toLowerCase(),r.hasAttributes())for(e=r.attributes,i=e.length,o=0;i>o;o+=1)s+=\" \"+e[o].name+'=\"'+e[o].value+'\"';\ns+=\">\",n(r),s+=\"\"}}var o=new Image,i=c(),r=l(),s=\"\";n(t),o.src=[\"data:image/svg+xml,\",\"\",\"\",\"\",s.replace(/\\#/g,\"%23\"),\"\",\"\",\"\"].join(\"\"),o.onload=function(){e.svgRender=o}}function ie(){var t=te(re,null);return ce.svgRendering&&oe(e.documentElement,t),Array.prototype.slice.call(re.children,0).forEach(function(e){ne(e,t)\n}),t.backgroundColor=ue(e.documentElement,\"backgroundColor\"),le.removeChild(pe),t}bds.se.ShortCut.scrollTop=t.pageYOffset||e.documentElement.scrollTop||e.body.scrollTop,t.scroll(0,0);var re=a.elements===n?e.body:a.elements[0],se=0,ae=re.ownerDocument,ce=d.Util.Support(a,ae),de=new RegExp(\"(\"+a.ignoreElements+\")\"),le=ae.body,ue=d.Util.getCSS,me=\"___html2canvas___pseudoelement\",pe=ae.createElement(\"style\");pe.innerHTML=\".\"+me+'-before:before { content: \"\" !important; display: none !important; }.'+me+'-after:after { content: \"\" !important; display: none !important; }',le.appendChild(pe),i=i||{};\nvar fe=function(t){return function(e,n,o,i){var r=o*t,s=i*t,a=e+o,c=n+i;return{topLeft:L({x:e,y:c},{x:e,y:c-s},{x:a-r,y:n},{x:a,y:n}),topRight:L({x:e,y:n},{x:e+r,y:n},{x:a,y:c-s},{x:a,y:c}),bottomRight:L({x:a,y:n},{x:a,y:n+s},{x:e+r,y:c},{x:e,y:c}),bottomLeft:L({x:a,y:c},{x:a-r,y:c},{x:e,y:n+s},{x:e,y:n})}}}(4*((Math.sqrt(2)-1)/3));return ie()},d.Preload=function(i){function r(t){C.href=t,C.href=C.href;var e=C.protocol+C.host;return e===g}function s(){o(\"html2canvas: start: images: \"+_.numLoaded+\" / \"+_.numTotal+\" (failed: \"+_.numFailed+\")\"),!_.firstRun&&_.numLoaded>=_.numTotal&&(o(\"Finished loading images: # \"+_.numTotal+\" (failed: \"+_.numFailed+\")\"),\"function\"==typeof i.complete&&i.complete(_))\n}function a(e,o,r){var a,c,d=i.proxy;C.href=e,e=C.href,a=\"html2canvas_\"+y++,r.callbackname=a,d+=d.indexOf(\"?\")>-1?\"&\":\"?\",d+=\"url=\"+encodeURIComponent(e)+\"&callback=\"+a,c=$.createElement(\"script\"),t[a]=function(e){\"error:\"===e.substring(0,6)?(r.succeeded=!1,_.numLoaded++,_.numFailed++,s()):(h(o,r),o.src=e),t[a]=n;try{delete t[a]}catch(i){}c.parentNode.removeChild(c),c=null,delete r.script,delete r.callbackname},c.setAttribute(\"type\",\"text/javascript\"),c.setAttribute(\"src\",d),r.script=c,t.document.body.appendChild(c)\n}function c(e,n){var o=t.getComputedStyle(e,n),i=o.content;\"url\"===i.substr(0,3)&&b.loadImage(d.Util.parseBackgroundImage(i)[0].args[0]),p(o.backgroundImage,e)}function l(t){c(t,\":before\"),c(t,\":after\")}function u(t,e){var o=d.Generate.Gradient(t,e);o!==n&&(_[t]={img:o,succeeded:!0},_.numTotal++,_.numLoaded++,s())}function m(t){return t&&t.method&&t.args&&t.args.length>0}function p(t,e){var o;d.Util.parseBackgroundImage(t).filter(m).forEach(function(t){\"url\"===t.method?b.loadImage(t.args[0]):t.method.match(/\\-?gradient$/)&&(o===n&&(o=d.Util.Bounds(e)),u(t.value,o))\n})}function f(t){var e=!1;try{d.Util.Children(t).forEach(function(t){f(t)})}catch(i){}try{e=t.nodeType}catch(r){e=!1,o(\"html2canvas: failed to access some element's nodeType - Exception: \"+r.exceptionStackTrace)}if(1===e||e===n){l(t);try{p(d.Util.getCSS(t,\"backgroundImage\"),t)}catch(i){o(\"html2canvas: failed to get background-image - Exception: \"+i.exceptionStackTrace)}p(t)}}function h(e,o){e.onload=function(){o.timer!==n&&t.clearTimeout(o.timer),_.numLoaded++,o.succeeded=!0,e.onerror=e.onload=null,s()},e.onerror=function(){if(\"anonymous\"===e.crossOrigin&&(t.clearTimeout(o.timer),i.proxy)){var n=e.src;\nreturn e=new Image,o.img=e,e.src=n,void a(e.src,e,o)}_.numLoaded++,_.numFailed++,o.succeeded=!1,e.onerror=e.onload=null,s()}}var g,b,v,w,_={numLoaded:0,numFailed:0,numTotal:0,cleanupDone:!1},y=0,x=i.elements[0]||e.body,$=x.ownerDocument,k=$.images,T=k.length,C=$.createElement(\"a\"),S=function(t){return t.crossOrigin!==n}(new Image);for(C.href=t.location.href,g=C.protocol+C.host,b={loadImage:function(e){var o,s;e&&_[e]===n&&(o=new Image,e.match(/data:image\\/.*;base64,/i)?(o.src=e.replace(/url\\(['\"]{0,}|['\"]{0,}\\)$/gi,\"\"),s=_[e]={img:o},_.numTotal++,h(o,s)):r(e)||i.allowTaint===!0?(s=_[e]={img:o},_.numTotal++,h(o,s),o.src=e):S&&!i.allowTaint&&i.useCORS?(o.crossOrigin=\"anonymous\",s=_[e]={img:o},_.numTotal++,h(o,s),o.src=e,o.customComplete=function(){this.img.complete?this.img.onerror():this.timer=t.setTimeout(this.img.customComplete,100)\n}.bind(s),o.customComplete()):i.proxy&&(s=_[e]={img:o},_.numTotal++,a(e,o,s)))},cleanupDOM:function(r){var a,c;if(!_.cleanupDone){o(r&&\"string\"==typeof r?\"html2canvas: Cleanup because: \"+r:\"html2canvas: Cleanup after timeout: \"+i.timeout+\" ms.\");for(c in _)if(_.hasOwnProperty(c)&&(a=_[c],\"object\"==typeof a&&a.callbackname&&a.succeeded===n)){t[a.callbackname]=n;try{delete t[a.callbackname]}catch(d){}a.script&&a.script.parentNode&&(a.script.setAttribute(\"src\",\"about:blank\"),a.script.parentNode.removeChild(a.script)),_.numLoaded++,_.numFailed++,o(\"html2canvas: Cleaned up failed img: '\"+c+\"' Steps: \"+_.numLoaded+\" / \"+_.numTotal)\n}t.stop!==n?t.stop():e.execCommand!==n&&e.execCommand(\"Stop\",!1),e.close!==n&&e.close(),_.cleanupDone=!0,r&&\"string\"==typeof r||s()}},renderingDone:function(){w&&t.clearTimeout(w)}},i.timeout>0&&(w=t.setTimeout(b.cleanupDOM,i.timeout)),o(\"html2canvas: Preload starts: finding background-images\"),_.firstRun=!0,f(x),o(\"html2canvas: Preload: Finding images\"),v=0;T>v;v+=1)b.loadImage(k[v].getAttribute(\"src\"));return _.firstRun=!1,o(\"html2canvas: Preload: Done.\"),_.numTotal===_.numLoaded&&s(),b},d.Renderer=function(t,o){function i(t){var e=[],n=function(t){var o=[],i=[];\nt.children.forEach(function(t){t.children&&t.children.length>0?(o.push(t),i.push(t.zindex)):e.push(t)}),i.sort(function(t,e){return t-e}),i.forEach(function(t){var e;o.some(function(n,o){return e=o,n.zindex===t}),n(o.splice(e,1)[0])})};return t&&t.zIndex&&n(t.zIndex),e}function r(t){var e;if(\"string\"==typeof o.renderer&&d.Renderer[t]!==n)e=d.Renderer[t](o);else{if(\"function\"!=typeof t)throw new Error(\"Unknown renderer\");e=t(o)}if(\"function\"!=typeof e)throw new Error(\"Invalid renderer defined\");return e\n}return r(o.renderer)(t,o,e,i(t),d)},d.Util.Support=function(t,e){function i(){var t=new Image,i=e.createElement(\"canvas\"),r=i.getContext===n?!1:i.getContext(\"2d\");if(r===!1)return!1;i.width=i.height=10,t.src=[\"data:image/svg+xml,\",\"\",\"\",\"
                \",\"sup\",\"
                \",\"
                \",\"
                \"].join(\"\");try{r.drawImage(t,0,0),i.toDataURL()\n}catch(s){return!1}return o(\"html2canvas: Parse: SVG powered rendering available\"),!0}function r(){var t,n,o,i,r=!1;return e.createRange&&(t=e.createRange(),t.getBoundingClientRect&&(n=e.createElement(\"boundtest\"),n.style.height=\"123px\",n.style.display=\"block\",e.body.appendChild(n),t.selectNode(n),o=t.getBoundingClientRect(),i=o.height,123===i&&(r=!0),e.body.removeChild(n))),r}return{rangeBounds:r(),svgRendering:t.svgRendering&&i()}},t.html2canvas=function(e,n){e=e.length?e:[e];var i,r,s={logging:!1,elements:e,background:\"#fff\",proxy:null,timeout:0,useCORS:!1,allowTaint:!1,svgRendering:!1,ignoreElements:\"IFRAME|OBJECT|PARAM\",useOverflow:!0,letterRendering:!1,chinese:!1,width:null,height:null,taintTest:!0,renderer:\"Canvas\"};\nreturn s=d.Util.Extend(n,s),d.logging=s.logging,s.complete=function(t){(\"function\"!=typeof s.onpreloaded||s.onpreloaded(t)!==!1)&&(i=d.Parse(t,s),(\"function\"!=typeof s.onparsed||s.onparsed(i)!==!1)&&(r=d.Renderer(i,s),\"function\"==typeof s.onrendered&&s.onrendered(r)))},t.setTimeout(function(){d.Preload(s)},0),{render:function(t,e){return d.Renderer(t,d.Util.Extend(e,s))},parse:function(t,e){return d.Parse(t,d.Util.Extend(e,s))},preload:function(t){return d.Preload(d.Util.Extend(t,s))},log:o}},t.html2canvas.log=o,t.html2canvas.Renderer={Canvas:n},d.Renderer.Canvas=function(t){function i(t,e){t.beginPath(),e.forEach(function(e){t[e.name].apply(t,e.arguments)\n}),t.closePath()}function r(t){if(-1===d.indexOf(t.arguments[0].src)){u.drawImage(t.arguments[0],0,0);try{u.getImageData(0,0,1,1)}catch(e){return l=c.createElement(\"canvas\"),u=l.getContext(\"2d\"),!1}d.push(t.arguments[0].src)}return!0}function s(t){return\"transparent\"===t||\"rgba(0, 0, 0, 0)\"===t}function a(e,n){switch(n.type){case\"variable\":e[n.name]=n.arguments;break;case\"function\":if(\"createPattern\"===n.name){if(n.arguments[0].width>0&&n.arguments[0].height>0)try{e.fillStyle=e.createPattern(n.arguments[0],\"repeat\")\n}catch(s){o(\"html2canvas: Renderer: Error creating pattern\",s.exceptionStackTrace)}}else\"drawShape\"===n.name?i(e,n.arguments):\"drawImage\"===n.name?n.arguments[8]>0&&n.arguments[7]>0&&(!t.taintTest||t.taintTest&&r(n))&&e.drawImage.apply(e,n.arguments):e[n.name].apply(e,n.arguments)}}t=t||{};var c=e,d=[],l=e.createElement(\"canvas\"),u=l.getContext(\"2d\"),m=t.canvas||c.createElement(\"canvas\");return function(t,e,i,r,c){var d,l,u,p,f,h,g=m.getContext(\"2d\");if(m.width=m.style.width=e.width||t.ctx.width,m.height=m.style.height=e.height||t.ctx.height,h=g.fillStyle,g.fillStyle=s(t.backgroundColor)&&e.background!==n?e.background:t.backgroundColor,g.fillRect(0,0,m.width,m.height),g.fillStyle=h,e.svgRendering&&t.svgRender!==n)g.drawImage(t.svgRender,0,0);\nelse for(l=0,u=r.length;u>l;l+=1)d=r.splice(0,1)[0],d.canvasPosition=d.canvasPosition||{},g.textBaseline=\"bottom\",d.clip&&(g.save(),g.beginPath(),g.rect(d.clip.left,d.clip.top,d.clip.width,d.clip.height),g.clip()),d.ctx.storage&&d.ctx.storage.forEach(a.bind(null,g)),d.clip&&g.restore();return o(\"html2canvas: Renderer: Canvas renderer done - returning canvas obj\"),u=e.elements.length,1===u&&\"object\"==typeof e.elements[0]&&\"BODY\"!==e.elements[0].nodeName?(f=c.Util.Bounds(e.elements[0]),p=i.createElement(\"canvas\"),p.width=f.width,p.height=f.height,g=p.getContext(\"2d\"),g.drawImage(m,f.left,f.top,f.width,f.height,0,0,f.width,f.height),m=null,p):m\n}}}(window,document)}})}(),$(window).on(\"swap_begin\",function(){bds&&bds.se&&void 0!==bds.se.displayTime&&null!==bds.se.displayTime&&(clearTimeout(bds.se.displayTime),bds.se.displayTime=null)}).on(\"confirm\",function(){bds&&bds.comm&&bds.comm.globalLogFlag&&1==bds.comm.globalLogFlag&&(1==bds.comm.logFlagNoNetwork||1==bds.comm.logFlagNoIntegration||(bds.se.displayTime=setTimeout(function(){bds&&bds.se&&bds.se.display(),bds.se.displayTime=null},5e3))),bds&&bds.se.userAction.collect()}).on(\"swap_end\",function(t,e){!e&&bds&&bds.comm&&bds.comm.globalLogFlag&&1==bds.comm.globalLogFlag&&(1==bds.comm.logFlagNoNetwork||1==bds.comm.logFlagNoIntegration||(bds.se.displayTime=setTimeout(function(){bds&&bds.se&&bds.se.display(),bds.se.displayTime=null\n},5e3))),!e&&bds&&bds.se.userAction.collect(),bds.log.send.sendNow(\"flow_monitor\",{},{qid:bds.comm.qid,log:{},len:1})}),$(window).on(\"swap_end\",function(){bds.comm.__rdNum&&bds.comm.__rdNum>9e3&&setTimeout(function(){$.ajax({dataType:\"script\",cache:!0,url:\"https://ss1.bdstatic.com/5eN1bjq8AAUYm2zgoY3K/r/www/cache/static/protocol/https/plugins/clean_7973b0f.js\",success:function(){bds.se.cleanCookie.init()}})},0)}),!function(){var t=navigator.userAgent,e=t.match(/MSIE\\s*(\\d+)/),n=e&&e[1]&&+e[1]<=9;n||require([\"plugins/swfobject\",\"soutu/js/tu\"],function(t,e){if(/^\\/imgsearch/.test(location.pathname)){var n=$(\"#content_left\").find(\".result-op\"),o=[];\nn.each(function(){var t=$(this),e=t.attr(\"tpl\");\"tu_relate_site\"===e&&(e+=\"@\"+t.find(\".op-tu-relate-site-result\").length),o.push(e)}),e.log({rsv_imageshow:o.join(\":\")}),$(\"#page\").hide(),$(\"#wrapper\").outerHeight()<$(document).outerHeight()&&$(\"#foot\").addClass(\"foot_fixed_bottom\")}})}(),!function(){function t(t){var e=[\"voice_beha=1\"],n=window.bds&&bds.util&&bds.util.domain?bds.util.domain.get(\"http://nsclick.baidu.com\"):\"http://nsclick.baidu.com\";for(var o in t)t.hasOwnProperty(o)&&e.push(o+\"=\"+t[o]);\nvar i=window[\"nsIMG\"+ +new Date]=new Image;return i.src=n+\"/v.gif?pid=201&\"+e.join(\"&\"),!0}(location.href.match(/voice=1/)||navigator.userAgent.match(/mac os x/i))&&require([\"plugins/swfobject\",\"voice/js/voice\"],function(e,n){if(n.log=t,n&&n.support()){n.addStyle(),window.__supportvoice=!0;var o=$(\"#form .ipt_rec\");o.css(\"display\",\"block\"),o.click(function(){var t=n.init({url:bds.util.domain.get(\"http://vse.baidu.com\")+\"/echo.fcgi\"});t.done(function(t){t.openUI(),t.onfinish(function(t){var e=t.content.item[0],n=t&&t.result?t.result.corpus_no:\"\";\nchangeUrl(\"wd=\"+encodeURIComponent(e)+\"&rsv_voice=1&hsug_mtype=2&rsv_vcorpus=\"+encodeURIComponent(n)),bds.comm.lastVoiceQuery=e}),n.log({q:\"resolve\"})}).fail(function(){n.log({q:\"reject\"}),alert(\"不能获得麦克风的权限\")}),n.log({q:\"start\"})})}})}();" + "text": "function addEV(t,e,n){window.attachEvent?t.attachEvent(\"on\"+e,n):window.addEventListener&&t.addEventListener(e,n,!1)}function _aMC(t){for(var e=t,n=-1;e=e.parentNode;)if(n=parseInt(e.getAttribute(\"id\")),n>0)return n}function al_c(t){for(;\"TABLE\"!=t.tagName;)t=t.parentNode;return t.getAttribute(\"id\")}function al_c2(t,e){for(;e--;)for(;\"TABLE\"!=(t=t.parentNode).tagName;);return t.getAttribute(\"id\")}function c(t){var e=t.p1;if(!(\"alop\"!=t.fm||\"rsv_xpath\"in t||e&&\"6677\"==G(e).getAttribute(\"srcid\")))return!0;\n!e||\"p5\"in t||(t.p5=e);var n=window.document.location.href,o=\"\",i=\"\",r=\"\",s=window[\"BD_PS_C\"+(new Date).getTime()]=new Image;for(v in t){switch(v){case\"title\":i=t[v].replace(/<[^<>]+>/g,\"\"),i&&i.length>100&&(i=i.substring(0,100)),i=encodeURIComponent(i);break;case\"mu\":case\"url\":i=escape(t[v]);break;default:i=t[v]}o+=\"&\"+v+\"=\"+i}if(!(\"mu\"in t))try{\"p2\"in t&&G(t.p1).getAttribute(\"mu\")&&\"pl\"!=t.fm&&(r=\"&mu=\"+escape(G(t.p1).getAttribute(\"mu\")))}catch(a){}if(window.bds&&bds.comm){var c=bds.comm.ubsurl+\"?q=\"+bds.comm.queryEnc+o+r+\"&rsv_sid=\"+bds.comm.sid+\"&cid=\"+bds.comm.cid+\"&qid=\"+bds.comm.queryId+\"&t=\"+(new Date).getTime();\nif(bds.comm.inter&&(c=c+\"&rsv_inter=\"+bds.comm.inter),bds.comm.seinfo&&bds.comm.seinfo.rsv_pstg&&(c=c+\"&rsv_pstg=\"+bds.comm.seinfo.rsv_pstg),bds.comm.cftime&&0!=bds.comm.cftime&&(c=c+\"&rsv_cftime=\"+bds.comm.cftime),c+=bds.comm.resultPage?\"&rsv_iorr=1\":\"&rsv_iorr=0\",bds.comm.tn&&(c=c+\"&rsv_tn=\"+bds.comm.tn),bds.comm.indexSid&&(c+=\"&rsv_isid=\"+bds.comm.indexSid),bds.comm.lastVoiceQuery&&(c+=\"&rsv_lavo=\"+encodeURIComponent(bds.comm.lastVoiceQuery)),Cookie.get(\"ispeed\")&&(c+=\"&rsv_ispeed=\"+Cookie.get(\"ispeed\")),/ssl_sample/.test(location.href)){var d=location.href.match(/ssl_sample=[^=&]+/i);\nc+=\"&rsv_\"+d[0]}if(/ssl_s=/.test(location.href)){var d=location.href.match(/ssl_s=[^=&]+/i);c+=\"&rsv_\"+d[0]}c+=\"&rsv_ssl=\"+(\"https:\"===location.protocol?1:0),c+=\"&path=\"+encodeURIComponent(n),c+=\"&rsv_did=\"+(bds.comm.did?bds.comm.did:\"\"),s.src=c}return!0}function TagQ(t,e){return e.getElementsByTagName(t)}function h(t){t.style.behavior=\"url(#default#homepage)\",t.setHomePage(bds.comm.domain);var e=window[\"BD_PS_C\"+(new Date).getTime()]=new Image;e.src=bds.comm.ubsurl+\"?fm=hp&tn=\"+bds.comm.tn+\"&t=\"+(new Date).getTime()\n}function setHeadUrl(t){var e=G(\"kw\").value;e=encodeURIComponent(e);var n=t.href;n=n.replace(new RegExp(\"(\"+t.getAttribute(\"wdfield\")+\"=)[^&]*\"),\"$1\"+e),t.href=n}function G(t){return document.getElementById(t)}function ns_c_pj(t,e){var n=encodeURIComponent(window.document.location.href),o=\"\",i=\"\",r=\"\",s=bds&&bds.comm&&bds.comm.did?bds.comm.did:\"\";wd=bds.comm.queryEnc,nsclickDomain=bds&&bds.util&&bds.util.domain?bds.util.domain.get(\"http://nsclick.baidu.com\"):\"http://nsclick.baidu.com\",img=window[\"BD_PS_C\"+(new Date).getTime()]=new Image,src=\"\";\nfor(v in t){switch(v){case\"title\":i=encodeURIComponent(t[v].replace(/<[^<>]+>/g,\"\"));break;case\"url\":i=encodeURIComponent(t[v]);break;default:i=t[v]}o+=v+\"=\"+i+\"&\"}if(r=\"&mu=\"+n,src=nsclickDomain+\"/v.gif?pid=201&\"+(e||\"\")+o+\"path=\"+n+\"&wd=\"+wd+\"&rsv_sid=\"+(bds.comm.ishome&&bds.comm.indexSid?bds.comm.indexSid:bds.comm.sid)+\"&rsv_did=\"+s+\"&t=\"+(new Date).getTime(),\"undefined\"!=typeof Cookie&&\"undefined\"!=typeof Cookie.get)Cookie.get(\"H_PS_SKIN\")&&\"0\"!=Cookie.get(\"H_PS_SKIN\")&&(src+=\"&rsv_skin=1\");else{var a=\"\";\ntry{a=parseInt(document.cookie.match(new RegExp(\"(^| )H_PS_SKIN=([^;]*)(;|$)\"))[2])}catch(c){}a&&\"0\"!=a&&(src+=\"&rsv_skin=1\")}return img.src=src,!0}function ns_c(t,e){return e===!0?ns_c_pj(t,\"pj=www&rsv_sample=1&\"):ns_c_pj(t,\"pj=www&\")}function escapeHTML(t){return t.replace(/&/g,\"&\").replace(//g,\">\").replace(/ /g,\" \").replace(/\"/g,\""\").replace(/'/g,\"'\")}function initPreload(t){function e(){Cookie.set(\"ISSW\",\"1\",null,null,new Date((new Date).getTime()+3e5))\n}function n(t,e){e=e||3,Cookie.set(\"ISWR\",t,null,null,new Date((new Date).getTime()+1e3*e))}function o(t){t&&\"string\"==typeof t&&(t=$.parseJSON(t)),t&&t.length&&$.each(t,function(t,e){if(0===e.indexOf(ne.protocol)){var n=new Image;n.src=e}})}function i(t){return $.trim(t).replace(/\\s+/g,\" \")}function r(t){if(\"string\"==typeof t){var e,n=0;for(e=0;e-1?(o=t.split(\"?\"),i=o[1]):i=t,e=i.indexOf(\"&\")>-1?i.split(\"&\"):new Array(i);\nfor(var s=0;s-1?e[s]:e[s]+\"=\",n=e[s].split(\"=\"),r[n[0]]=decodeURIComponent(n[1].replace(/\\+/g,\" \"))}catch(a){}return r}function a(t){function e(t){if(document.all)$(\"style[data-for='result']\").get(0).styleSheet.cssText+=t;else{var e=document.createElement(\"style\");e.type=\"text/css\",e.appendChild(document.createTextNode(t)),e.setAttribute(\"data-for\",\"result\"),document.getElementsByTagName(\"HEAD\")[0].appendChild(e)}}function n(){B.css({filter:\"progid:DXImageTransform.Microsoft.Alpha(Opacity=95)\",opacity:.95}),H||(e(\".slowmsg{z-index:301;background-color:#fff;border:1px solid #f0f0f0;position:fixed;_position:absolute;top:144px;left:212px;height:95px;width:360px;box-shadow:0 0 5px rgba(0,0,0,0.05)}.slowmsg .ball{width:40px;margin:41px auto 0;position:relative;}.slowmsg .b{left:20px;position:absolute;width:10px;height:10px;-moz-border-radius: 50%;-webkit-border-radius: 50%;border-radius: 50%;}\"),H=$('
                '),H.find(\".b\").each(function(t,e){var n=[[0,40],[20,20],[40,0]][t],o=[\"rgb(55,137,250)\",\"rgb(99,99,99)\",\"rgb(235,67,70)\"],i=0;\n$(e).css({\"background-color\":o[t]}),function r(){return F?($(e).animate({left:n[i%2]},{duration:800,easing:\"swing\",progress:function(n,r){r>=.5&&$(e).css({\"background-color\":o[(i+t)%3]})},complete:function(){r()}}),void i++):void setTimeout(r,400)}()})),H.appendTo(Ye),ns_c({pj_name:\"loading_msg\"})}function o(){var t,e=(new Date).getTime();Cookie.set(\"rsv_jmp_slow\",e),Cookie.set(\"WWW_ST\",e,null,null,new Date(e+3e4)),t=ne.href+(ne.href.indexOf(\"?\")>0?\"&\":\"?\")+\"rsv_jmp=slow\",ne.replace(t)}if(!V){var t=$.extend({top:93,\"z-index\":300},t),i=$(window).height();\nB||(B=$(\"
                \")),B.css({filter:\"progid:DXImageTransform.Microsoft.Alpha(Opacity=30)\",opacity:.3,position:\"absolute\",background:\"#fff\",\"z-index\":t[\"z-index\"],top:t.top+\"px\",left:\"0\"}),V=!0,B.width(Ye.width()),B.height(Math.max(i,Ye.height())-t.top),B.appendTo(Ye),$(window).scrollTop(),F=setTimeout(n,3e3),G=setTimeout(o,7e3),Q=function(){F&&(clearTimeout(F),F=setTimeout(n,3e3)),G&&(clearTimeout(G),G=setTimeout(o,7e3))}}}function d(){B&&V&&(V=!1,B.remove(),H&&H.remove(),F&&(clearTimeout(F),F=!1),W&&W.remove(),G&&(clearTimeout(G),G=!1))\n}function l(t,e,n){n||(n=0);var o=t.length;for(0>n&&(n=o+n);o>n;n++)if(t[n]===e)return n;return-1}function u(t,e,n){var o=e.find(\"script:not([src])\"),i=0,r=$.globalEval;$.globalEval=function(t){window.currentScriptElem=o[i],i++;try{r.apply($,arguments)}catch(e){window.console&&console.debug&&(console.debug(t),console.debug(e))}},\"insertBefore\"==n?e.insertBefore(t):t.append(e),window.currentScriptElem=void 0,$.globalEval=r}function m(t){try{t()}catch(e){window.console&&console.debug&&console.debug(e),J(e.toString())\n}}function p(t,e){function n(t){if(\"object\"==typeof t){var e={};for(a in t)t.hasOwnProperty(a)&&(e[a]=t[a])}else e=t;return e}if(!p.__init){p.__init=!0;var o=[\"wd\",\"pn\",\"nojc\",\"cl\",\"cq\",\"srcid\",\"gpc\",\"tfflag\",\"si\",\"sl_lang\",\"rsv_srlang\",\"rqlang\"],i=[\"wd\",\"cl\",\"ct\",\"tn\",\"rn\",\"ie\",\"f\",\"lm\",\"si\",\"gpc\",\"tfflag\",\"usm\",\"z\",\"ch\",\"sts\",\"vit\",\"dsp\",\"trh\",\"trb\",\"tre\",\"la\",\"lo\",\"st\",\"nojc\",\"haobd\",\"rtt\",\"bsst\",\"gvideo\",\"__eis\",\"__eist\",\"oq\",\"fenlei\",\"sid\",\"rsv_idx\",\"rsv_stat\",\"rsv_bp\",\"rqlang\"],r=[\"w\",\"word\"];\np.prototype.clone=function(t){var e=new p(n(this.params));if(\"object\"==typeof t)for(var o in t)t.hasOwnProperty(o)&&l(i,o)>=0&&e.p(o,t[o]);return e},p.prototype.h=function(t){this.header_params=this.header_params||{};for(var e in t)this.header_params[e]=t[e];return this},p.prototype.buildHeaders=function(t){t&&this.setHeader(t);var e={};for(var n in this.header_params)if(\"object\"==typeof this.header_params[n]){var o=[];for(var i in this.header_params[n]){var r=this.header_params[n][i];r instanceof Array&&(r=r.join(\"|\")),o.push(i+\"=\"+r)\n}e[n]=o.join(\"&\")}else e[n]=this.header_params[n];return e},p.prototype.buildSearchUrl=function(t){return ne.protocol+\"//\"+ne.host+ne.pathname+ne.search+\"#\"+this.buildQueryString(t)},p.prototype.buildSyncSearchUrl=function(t){return ne.protocol+\"//\"+ne.host+\"/s?\"+this.buildQueryString(t)},p.prototype.buildQueryString=function(t){var e=n(this.params);if(\"object\"==typeof t)for(var o in t)t.hasOwnProperty(o)&&(e[o]=t[o]);var i=\"\";e.wd=$.limitWd(e.wd);for(param in e)param&&e.hasOwnProperty(param)&&\"\"!==e[param]&&(i+=param+\"=\"+encodeURIComponent(e[param]).replace(/'/g,\"%27\")+\"&\");\nreturn i.substr(0,i.length-1)},p.prototype.equals=function(t){if(!t||!t.p)return!1;for(var e=0;e=0&&(t=\"wd\"),void 0===e?this.params[t]:(this.params[t]=e,this)},p.prototype.hashCode=function(){var t=[];if(!this.p(\"wd\"))return\"\";for(var e=0;e_.st&&_.net-_.st-w.cus_srv>0?_.net-_.st-w.cus_srv:1,w.cus_tti2=_.dom>_.st?_.dom-_.st:1,w.cus_frdom=_.dom-_.pt,w.cus_fs=_.fs>_.st?_.fs-_.st:w.cus_tti2,w.cus_frext=w.cus_fs-w.cus_tti2}function i(t){var e=\"\";for(var n in t)n&&t.hasOwnProperty(n)&&\"\"!==t[n]&&(e+=\"&\"+n+\"=\"+encodeURIComponent(t[n]));return e}function r(t){var t=[];for(var e in k)t.push(k[e]);\nvar n=T=$.when.apply($,t);T.always(function(){n===T&&m()})}function s(){var t=Array.apply(null,arguments);if(!(!t.length>0))for(var e=0;e.51&&.52>t;S=S||bds.comm.bfe_sample;var s=S&&t>.6&&.9>t;if(t>.51&&.52>t||e.test(bds.comm.sid)&&t>0&&.2>t||bds.comm.intrSid||s){e.test(bds.comm.sid)&&(r?n(\"issam\",2):n(\"issam\",1)),s&&(n(\"issam\",3),n(\"bfesam\",bds.comm.bfe_sample)),o(),h(C),g(C),n(\"srvInfo\",f()),n(\"sysv\",navigator.appMinorVersion),a(),x.fire();var c=\"//www.baidu.com/nocache/fesplg/s.gif?log_type=sp\",d=\"\";\nd+=i(v)+i(w);var l=c+d,u=new Image,m=\"_LOG_\"+(new Date).getTime();u.onload=function(){delete window[m]},window[m]=u,u.src=l}}function p(t){C=t,t.find(\"img\").one(\"load\",function(){var t=$(this).offset(),o=t.top,i=t.left,r=\"\";if(I>o&&o>0){e(\"fs\");var s=_.fs-_.dom;y.push(o+\"_\"+i+\"_\"+s),r=$(this).attr(\"data-src\")||/^http/.test($(this).attr(\"src\"))?$(this).attr(\"data-src\")||$(this).attr(\"src\"):\"base64\",n(\"ic_lis\",r)}})}function f(){var t,e,n=$.parseJSON(bds.comm.speedInfo),o=[];for(var i in n){if(t=n[i],e=t.ModuleId+\"_\"+t.TimeCost+\"_\"+t.TimeSelf+\"_\"+t.Idc,t.hasOwnProperty(\"SubProcess\"))for(var r in t.SubProcess)e+=\",\"+t.SubProcess[r].ProcessId+\"_\"+t.SubProcess[r].TimeCost+\"_\"+t.SubProcess[r].isHitCache+\"_\"+t.SubProcess[r].Idc;\no.push(e)}return encodeURIComponent(o.join(\"|\"))}function h(t){for(var e=0,o=t.find(\"img\"),i=t.find(\"#content_left\").find(\"img\"),r=0,s=0,a=0;as&&s>0&&e++;n(\"cus_ic\",o.length),n(\"cus_extic\",e),n(\"cus_extlic\",r),n(\"cus_icl\",i.length),n(\"cus_icr\",t.find(\"#content_right\").find(\"img\").length),n(\"img_info\",y.join(\",\")),n(\"psize\",t.html().length)}function g(t){var e={},o=[],i=t.find(\"#content_left,#con-ar\").children(\"*[tpl]\"),r=\"\";if(i.length>0)for(var s=0;s0&&n(\"tplp\",o.join(\"|\"))}function b(t){x.add(t)}var v={product_id:45,page_id:317,page_type:0},w={},_={st:0,pt:0,net:0,dom:0,fs:0},y=[],x=$.Callbacks(),k={},T=null,C=null,S=null,I=600;return l(),{trigger:d,mark:e,setParam:n,onSendlog:b,bindImgLoad:p,destroy:c,init:u}}function h(t,e){t&&(e=$.extend(t.log,e))}function g(){if(bds.comm.seinfo){bds.comm.seinfo.rsv_pre=encodeURIComponent(b()),bds.comm.seinfo.rsv_reh=reh_rec(),bds.comm.seinfo.rsv_scr=scr_rec();var t=null;if(bds&&bds.comm&&bds.comm.personalData)try{\"string\"==typeof bds.comm.personalData&&(bds.comm.personalData=$.parseJSON(bds.comm.personalData)),t=bds.comm.personalData?bds.comm.personalData.fullSkinName&&bds.comm.personalData.fullSkinName.value:null\n}catch(e){t=null}if(t&&(bds.comm.seinfo.rsv_skin=t),bds.comm.seinfo.rsv_psid=$.getCookie(\"BIDUPSID\"),bds.comm.seinfo.rsv_pstm=$.getCookie(\"PSTM\"),bds.comm.seinfo.rsv_idc=function(){var t=bds.comm.speedInfo||[];try{t=$.parseJSON(t)}catch(e){t=[]}for(var n=0,o=t.length;o>n;n++)if(9540==t[n].ModuleId)return t[n].Idc||\"\";return\"\"}(),c(bds.comm.seinfo),\"ON\"===bds.comm._se_click_track_flag){var n=new Image,o=\"//www.baidu.com/s?wd=\"+bds.comm.queryEnc+\"&qid=\"+bds.comm.queryId+\"<s=91\";n.src=o}}!function(){var t=Math.random(),e=function(){function t(){var t=[],o=[],i={};\nfor(var r in n)!function(e){var r=\"_SSL_LOG_\"+e+\"_\"+ +new Date,s=new Image,a=new Date;i[e]=$.Deferred(),o.push(i[e]),s.onload=function(){t.push(e+\"_success=\"+(new Date-a)),i[e].resolve(),delete window[r]},s.onerror=function(){t.push(e+\"_error=\"+(new Date-a)),i[e].resolve(),delete window[r]},s.src=n[e]}(r);var s=$.when.apply($,o);s.always(function(){var n=\"//www.baidu.com/nocache/fesplg/s.gif?log_type=hm&type=ssl&\",o=t.join(\"&\"),i=new Image,r=\"_HM_LOG_\"+(new Date).getTime();i.onload=function(){delete window[r]\n},window[r]=i,i.src=n+o+\"&_tt=\"+e})}var e=+new Date,n={gt1:\"https://gt1.baidu.com/nocache/imgdata/sp613.gif?t=\"+e,gt2:\"https://gt2.baidu.com/nocache/imgdata/sp613.gif?t=\"+e};setTimeout(t,1e3)};t>.1&&.11>t&&e()}()}function b(){return Le.length}function v(t){$(document).delegate(\"a\",\"mousedown\",function(){return function(){var e=$(this);w(e,t)}}())}function w(t,e){var n,o=e.prefix,i=t.attr(\"href\");if(o&&i&&0==i.indexOf(o)&&(i=i.substring(o.length)),!o&&i){var r=i.match(/^http:\\/\\/[^\\/]+/);if(!r)return;\no=r[0],i=i.replace(/^http:\\/\\/[^\\/]+/,\"\")}if(i&&(n=i.match(/^\\/*(link|baidu.php)\\?(.*)$/),n=i.match(e.regex)),!(n&&n[2]&&n[2].match(/&(wd|word)=/))){if(i&&n){e.convertTable&&e.convertTable[n[1]]&&(n[1]=e.convertTable[n[1]]);var s=ie.getLinkParams(i);s&&(\"https:\"===ne.protocol&&/Chrome|Safari/.test(navigator.userAgent)&&(o=o.replace(/^http:\\/\\/www\\.baidu\\.com/,\"https://www.baidu.com\")),i=o+\"/\"+n[1]+\"?\"+n[2]+\"&\"+s,t.attr(\"href\",o+\"/\"+n[1]+\"?\"+n[2]+\"&\"+s),t.click(function(){window.PDC_ASYNC.setLinkData(\"click_t\",(new Date).getTime()),window.PDC_ASYNC.setLinkData(\"linkpreload\",$(this).attr(\"linkpreload\"))\n}))}return i}}function _(t){if(!window.__disable_is2||$.trim(t)!=$.trim($e.val())){if(Ze||!bds.comm.supportis)return void(ke&&ke.html(\"\"));if(0!=pageState&&!window.__disable_kw_tip)if(ke||(ke=$('
                ').insertBefore($e),ke.parent().click(function(t){var e=$e.get(0);if(t.target===e)return!0;e.focus();var n=e.value.length;if(document.selection){var o=e.createTextRange();o.moveStart(\"character\",n),o.collapse(),o.select()\n}else\"number\"==typeof e.selectionStart&&\"number\"==typeof e.selectionEnd&&(e.selectionStart=e.selectionEnd=n);return!1}),ke.get(0).onselectstart=function(){return!1}),ke.text(t),\"\"!=t){var e=$e.textWidth();ke.css({\"margin-left\":e+10+\"px\",\"max-width\":ke.parent().width()-e-14+\"px\"}).text(t),window.__disable_is2&&ke.css(\"z-index\",1),ke.show()}else ke.hide()}}function y(){Ze=!1}function x(){Ze=!0,ze&&ze.real_wd&&$.trim($e.val())?(_(ze.real_wd),k(ze)):(_(\"\"),k())}function k(t){var e=i($e.val());t&&e==t.real_wd&&$(\"#super_se_tip\").remove()\n}function T(t,e){var n=(new Date).getTime();if(e.force||h(e,{utime:(new Date).getTime()-qe}),!e||!e.loaded)return!1;\"string\"==typeof e.html&&(e.html=$(e.html)),$(e).trigger(\"swap_begin\"),m(function(){e.pdc.mark(\"pt\"),$(window).trigger(\"swap_begin\",[e,t]);var n=Ge&&Ge.getData();n&&(setTimeout(function(){e.pdc.setParam(\"ispeed\",Ge.monitor(n))},3e3),e.pdc.setParam(\"upm\",n.join(\",\")))}),m(function(){e.base64.restart();try{if(!e.base64_loaded){var t=$.parseJSON(e.html.find(\"#img_list\").text());e.base64.loadImg(t.right,t.left)\n}}catch(n){}e.base64.end()});var o=[$(window).scrollLeft(),$(window).scrollTop()];Ae.hide(),oldEnv=Me,Me=t,He=ze,ze=e,bds.comm.cur_disp_query=t.p(\"wd\"),S(),bds&&bds.se&&bds.se.certification&&bds.se.certification.data&&(bds.se.certification.data=[]),0==pageState&&N(t),m(function(){he()}),bds.clearReady(),Ae.empty();var i=e.html;if(X.use_cache_repeatedly&&(i=i.clone()),m(function(){i.find(\"#head_style\").children().removeAttr(\"data-for\").appendTo(\"head\")}),m(function(){$.globalEval(i.find(\"#head_script\").html())\n}),bds.comm&&bds.comm.jsversion&&\"006\"!=bds.comm.jsversion){var r=Me.buildSyncSearchUrl({jmp:\"jsver\",_vr:Math.random()});return void ne.replace(r)}m(function(){i.find(\"#content_script script\").each(function(t,e){$.globalEval($(e).html())})}),m(function(){var t=i.find(\"#s_tab\");if(t.size()){var e=$(\"#s_tab\");e.size()?e.replaceWith(t):t.insertBefore(Ae)}});var s=!1;!function(){var t=i.find(\"#con-at\"),n=$(\"#con-at\"),o=n.children().children();if(o.size())if(t.children().size()){var r=t.children().children();\no.attr(\"cq\")!=r.attr(\"cq\")||o.attr(\"srcid\")!=r.attr(\"srcid\")||e.force&&oldEnv&&oldEnv.equals(Me)||!Me.p(\"cq\")||!Me.p(\"srcid\")||1==Me.p(\"_trf\")?(n.remove(),$(window).trigger(\"top_result_removed\"),u(Ae,t,\"insertBefore\")):s=!0}else n.remove(),$(window).trigger(\"top_result_removed\");else t.children().size()&&u(Ae,t,\"insertBefore\")}();var a=i.find(\"#container\");if(e.pdc.bindImgLoad(a),u(Ae,a),!$(\"#footer\").size()){var c=i.find(\"#footer\").children();u(Ae,c)}m(function(){var t=(new Date).getTime();i&&$.globalEval(i.find(\"#jsMerge\").html()),h(e,{jsmergetime:(new Date).getTime()-t})\n}),bds&&bds.comm&&bds.comm.templateName==bds.comm.resTemplateName?bds.comm.seinfo&&(bds.comm.seinfo.rsv_tpfail=0):bds.comm.seinfo&&(bds.comm.seinfo.rsv_tpfail=1),0!=pageState&&bds&&bds.util&&bds.util.setContainerWidth&&bds.util.setContainerWidth(),document.title=t.p(\"wd\")+\"_百度搜索\",Ae.show(),d(),h(e,{domtime:(new Date).getTime()-n}),h(e,{waittime:(new Date).getTime()-Te}),e.pdc.mark(\"dom\"),$(window).trigger(\"swap_dom_ready\",[e,t]),window.__lazy_foot_js?setTimeout(function(){C(t,e,n)},0):C(t,e,n),s?window.scrollTo(o[0],o[1]):window.scrollTo(0,0),$(window).trigger(\"scroll\"),swap_wait=!1\n}function C(t,e,n){var o;n||(n=0),e&&(o=e.html),m(function(){_e.get(0).f.value=8}),m(function(){var t=(new Date).getTime();e&&e.base64&&(e.base64.setDomLoad(\"left\"),e.base64.setDomLoad(\"right\")),h(e,{base64time:(new Date).getTime()-t})}),$(\"#search\").find(\"form\").submit(function(){var t=$e;$e=$(this).find(\"[name='wd']\");var e=R.call(this);return $e=t,e}),m(function(){var t=(new Date).getTime();bds.doReady(),h(e,{bdstime:(new Date).getTime()-t})}),m(function(){var t=(new Date).getTime();o&&$.globalEval(o.find(\"#ecomScript\").html()),h(e,{ecomtime:(new Date).getTime()-t})\n}),m(function(){var t=(new Date).getTime();bds.se.tools&&(Ie&&clearTimeout(Ie),Ie=setTimeout(function(){bds.se.tools()},600)),bds&&bds.se&&bds.se.certification&&bds.se.certification.build&&(Se&&clearTimeout(Se),Se=setTimeout(function(){$(\".certification\").size()>0&&bds.se.certification.build.init()},1e3)),bds&&bds.se&&bds.se.safeTip&&(Ce&&clearTimeout(Ce),Ce=setTimeout(function(){$(\".unsafe_ico_new\").size()>0&&bds.se.safeTip.init()},1200)),h(e,{tiptime:(new Date).getTime()-t})}),m(function(){var t=(new Date).getTime();\nwindow.initResultClickLog(),h(e,{clicktime:(new Date).getTime()-t})}),m(function(){h(e,{rtime:(new Date).getTime()-n,used:1}),bds.comm.seinfo&&e&&(bds.comm.seinfo.rsv_pstg=e.type)}),m(function(){$(window).trigger(\"swap_end\",[e,t]),O(),qe=(new Date).getTime(),e&&e.pdc&&(e.pdc.mark(\"js\"),e.pdc.trigger(\"swap_end\"))})}function S(){m(function(){$.each(bds.comm.tips,function(t,e){e&&e.destroy&&e.destroy()}),$(\"#c-tips-container\").empty(),bds.comm.tips=[]}),m(function(){window.app&&window.app.dispose&&window.app.dispose()\n}),m(function(){bds.comm.resolveUnloadHandler()}),bds&&bds.se&&bds.se.certification&&bds.se.certification.data&&(bds.se.certification.data=[]),bds&&bds.se&&bds.se.userAction&&bds.se.userAction.destroy()}function I(){De&&Re&&(clearTimeout(De),De=setTimeout(Re,Z))}function D(t,e,n){return function(e){var o=$.extend({},e);if(t&&!t.confirm){bds.comm.cur_query=t.real_wd,!bds.comm.supportis&&t&&(n=t.pstg||0),t.confirm=!0,De=!1,Re=null;var i={};i.is_referer=oe,i.is_xhr=\"1\";var r=new p(s(ie.getQueryString()),!0);\nt.env.equals(r)||t.env.clone({wd:t.prw}).equals(r)||ie.setUrl(t.env),oe=ne.protocol+\"//\"+ne.host+ne.pathname+ne.search,t.seq?t.seq++:t.seq=1,t.pdc&&(20!=n&&bds.comm.supportis&&t.pdc.mark(\"st\"),t.pdc&&t.pdc.setParam&&t.pdc.setParam(\"cus_pstg\",n),t.force&&t.pdc.setParam(\"f4s\",1),t.pdc.trigger(\"confirm\"),window.PRE_CONN.startTimer()),m(function(){$(window).trigger(\"confirm\",[t,n])});var a=\"/s?ie=utf-8&csq=\"+t.seq+\"&pstg=\"+n+(o.tipConfirm?\"&_cktip=1\":\"\")+\"&mod=2\"+(bds.comm.supportis?\"&isbd=1\":\"\")+\"&cqid=\"+t.qid+\"&istc=\"+((new Date).getTime()-t.startTime)+\"&ver=\"+bds.comm.baiduis_verify+\"&chk=\"+t.chk+\"&isid=\"+ve+\"&\"+t.env.buildQueryString()+(t.force?\"&f4s=1\":\"\")+(\"function\"==typeof Ke?\"&_ck=\"+Ke(t.env.p(\"wd\")):\"\");\nif(bds.comm.indexSid&&(/9998_/.test(bds.comm.indexSid)&&\"https:\"===ne.protocol&&(bds.comm.indexSid=bds.comm.indexSid.replace(\"9998\",\"8499\")),a+=\"&rsv_isid=\"+bds.comm.indexSid),t.no_predict&&(a+=\"&isnop=\"+(1>=fe?0:1)),t&&t.pstg&&(a+=\"&isctg=\"+t.pstg),fe=0,Ue&&Ue.getRsvStatus)try{a+=\"&rsv_stat=\"+Ue.getRsvStatus(t.env.p(\"wd\"))}catch(c){}if(Fe.done(function(){Ue.getStat(\"rsv_sug6\")&&(a+=\"&rsv_sug6=\"+Ue.getStat(\"rsv_sug6\"),bds.comm.seinfo&&(bds.comm.seinfo.rsv_sug6=Ue.getStat(\"rsv_sug6\"))),Ue.getStat(\"rsv_sug7\")&&(a+=\"&rsv_sug7=\"+Ue.getStat(\"rsv_sug7\")),Ue.getStat(\"rsv_sug9\")&&(a+=\"&rsv_sug9=\"+Ue.getStat(\"rsv_sug9\")),Ue.getStat(\"rsv_bp\")&&(a+=\"&rsv_bp=\"+Ue.getStat(\"rsv_bp\"))\n}),$.ajax({headers:i,url:a}).done(function(t){$('#form input[name=\"rqlang\"]').val(bds.comm.search_tool.actualResultLang||\"cn\"),$('#form input[name=\"rsv_bp\"]').val(1),$(t)}).fail(function(){}),bds.comm.seinfo){bds.comm.seinfo.rsv_prw=encodeURIComponent($e.val()),bds.comm.seinfo.rsv_pstg=n,bds.comm.seinfo.rsv_svoice=window.__supportvoice?\"1\":\"0\",t.cftime+=1,bds.comm.cftime=t.cftime+\"\";var d=t.env.p(\"rsv_bak\");d&&(bds.comm.seinfo.rsv_bak=d)}bds.comm.confirmQuery=bds.comm.query,bds.comm.confirmQid=bds.comm.qid,g(),ve=t.qid,Fe.done(function(){20==n?Ue.updateInitData():22==n||bds.comm.supportis||n>=0&&5>=n&&Ue.updateInitData(),Ue.clearStat()\n}),window.cfpromise.resolve()}}}function R(t){if(!ie.support())return!0;if(nn)return!1;if(nn=!0,$e.blur(),_(\"\"),$(this).attr(\"target\"))return!0;en=!0,tn=setTimeout(function(){en=!1},1e3);try{var e=$(\"#kw\").attr(\"placeholder\")||$(\".kw-placeholder\").text();if(!$.trim($e.val())&&!e)return ne.href=\"/\",!1;var n,o=new p,i=$(this).serializeArray();for(n=0;n0&&(n.pstg=e.pstg),n.force&&n.pdc.mark(\"st\"),n.base64=isbase64(n.pdc),Le.push(n.log),pe++,fe++,U(n)}}function L(){var t=[];return Ne&&(t=$.map(Ne.slice(0,2),function(t){return t.value})),t.join(\"\t\")}function j(t){e(),ne.replace(t.buildSyncSearchUrl())}function q(t,e){e?(ae=!0,rn&&(clearTimeout(rn),rn=!1),rn=setTimeout(function(){ae=ce\n},t)):(re=!0,on&&(clearTimeout(on),on=!1),on=setTimeout(function(){re=se},t))}function U(t){var e,s,a=t.env,c={};c.is_referer=ze&&ze.env?ze.env.buildSyncSearchUrl():Be.replace(/\\#.*$/,\"\"),$.extend(c,a.buildHeaders()),c.is_xhr=\"1\",window.bds&&bds.comm&&bds.comm.cur_query?a.p(\"bs\",bds.comm.cur_query):a.p(\"bs\",\"\"),window.bds&&bds.comm&&bds.comm.cur_disp_query&&(c.is_pbs=encodeURIComponent(bds.comm.cur_disp_query));var d=t.no_predict||!bds.comm.supportis?1:11,l=t.pstg;if(!(1==d&&1==l||11==d&&3==l||11==d&&6==l||1==d&&4==l)){var u=\"ie=utf-8\"+(bds.comm.newindex?\"&newi=1\":\"\")+(ge.sid?\"&sid=\"+encodeURIComponent(ge.sid):\"\")+(ge.tnp?\"&tnp=\"+encodeURIComponent(ge.tnp):\"\")+\"&mod=\"+(t.no_predict||!bds.comm.supportis?\"1\":\"11\")+(bds.comm.supportis?\"&isbd=1\":\"\")+\"&isid=\"+ve+\"&\"+a.buildQueryString()+\"&rsv_sid=\"+bds.comm.indexSid+\"&_ss=1&clist=\"+encodeURIComponent(ee.getCacheList())+\"&hsug=\"+encodeURIComponent(L())+(t.force?\"&f4s=1\":\"\")+\"&csor=\"+getCursortPosition($e.get(0));\nt.pstg&&(u+=\"&pstg=\"+t.pstg);var m=\"/s?\"+u;if(m+=\"&_cr1=\"+r(m),!t.no_predict)for(s=ee.find(function(t){return t.loaded||t.no_predict?void 0:!0}),e=0;e0))){if(t.force&&t.shouldShow){var p=!1,f=(new Date).getTime();if(s=ee.find(function(e){var n=a.equals(e.env);return e.loaded||e.no_predict||!n||e===t||(e.shouldShow=!1),!e.loaded&&e.no_predict&&e.force&&n&&e!==t&&(e.shouldShow=e.shouldShow||t.shouldShow,e.startTime&&f-e.startTime<2e3&&(p=!0),window.__sam_backup_request||(p=!0)),e.loaded||n?void e.pdc.mark(\"st\"):!0\n}),p)return;for(e=0;e\")>10)return void(t.force?(n(11),j(a)):ee.deleteCache(t));\nh(t,{ntime:(new Date).getTime()-t.startTime,res:1});var s,c=\"\",d=e.indexOf(c);if(-1!=d){s=$(e.substr(0,d)),t.html=e.substr(d+c.length),window.__dom_pre_parse&&\"1\"==s.find(\"#__need_parse_dom\").html()&&(t.html=$(t.html));try{var l=$.parseJSON(s.find(\"#img_list\").text());t.base64.loadImg(l.right,l.left),t.base64_loaded=!0}catch(u){}try{o(s.find(\"#limg_list\").text())}catch(u){}}else s=t.html=$(e);var m=parseInt(s.find(\"#__status\").eq(0).html()),p=parseInt(s.find(\"#__switchtime\").eq(0).html()),f=parseInt(s.find(\"#__redirect\").eq(0).html()),g={};\ntry{g=$.parseJSON(s.find(\"#__sugPreInfo:eq(0)\").html()||\"{}\")||{}}catch(u){}t.real_wd=s.find(\"#__real_wd\").eq(0).text(),t.real_wd_org=s.find(\"#__real_wd_org\").eq(0).text(),t.real_wd_nosynx=s.find(\"#__real_wd_nosynx\").eq(0).text(),t.env&&t.env.p(\"nojc\")&&t.real_wd_nosynx&&(t.real_wd=t.real_wd_nosynx);var b=!1;(a.p(\"wd\")==i($e.val())||t.force)&&t.shouldShow&&(b=!0),t.real_wd&&(t.prw=a.p(\"wd\"),a.p(\"wd\",t.real_wd));var v=s.find(\"#__queryId\").html(),w=s.find(\"#__querySign\").html();t.querySign=w,h(t,{stat:m?m:0}),bds.comm.isDebug&&$(\"#isDebugInfo\").html(s.find(\"#__isDebugInfo\").html()),v&&(t.qid=v);\nvar C=s.find(\"#__chk\").html();if(t.chk=C?C:0,!e||!v&&!p&&!f&&!m||!w&&t.force)return t.force?(a.p(\"__eis\",1),a.p(\"__eist\",e?e.length:0),a.p(\"real_wd\",t.real_wd),n(13),void j(a)):void ee.deleteCache(t);if(p>0&&q(1e3*p,!t.no_predict),-11==m){var S=ee.getCacheBySign(w);if(!S)return A({env:t.env.clone({wd:t.real_wd}),force:t.force,use_cache:!1,no_predict:!0}),void ee.deleteCache(t);S.force=t.force,y(),_(S.real_wd),k(S),ee.deleteCache(t),t=S,ze&&t.real_wd==ze.real_wd||(b=!0)}else{if(0>m){if(1==f&&t.force)return h(t,{redirect:1}),n(14),void j(a);\nif(x(),-12==m&&g&&g.wait_time>0){var I=t.env.clone();Qe=setTimeout(function(){A({env:I,force:!1,use_cache:!0,no_predict:!0,shouldShow:!1,pstg:6})},g.wait_time)}return void ee.deleteCache(t)}if(m>0)return void ee.deleteCache(t)}for(var D=ee.find(function(e){return!e.loaded&&e!==t&&e.no_predict&&a.equals(e.env)?(e.shouldShow&&(b=!0),e.force&&(t.force=!0,t.no_predict=!0),!0):void 0}),R=0;R\"}),g.parts(function(t,e){b(t,e,g)}),g.fail(function(e,o){t.force&&t.shouldShow&&\"abort\"!=o&&t.env&&(n(12),ne.replace(t.env.buildSyncSearchUrl()+\"&rsv_jmp=fail\")),ee.deleteCache(t)}),t.xhr=g,ee.addCache(t)}}}function O(){Le=[],pe=0,en=!1,clearTimeout(tn)}function E(){window.index_off&&window.index_off(),xe[0]!==ye[0]&&xe.val(\"\"),$e=ye,pageState=1,bds.comm.ishome=0,bds.comm.cur_query=bds.comm.query,Me=new p,ze={env:Me,real_wd:bds.comm.query,force:!0,confirm:!0},Fe.done(function(){return function(){Ee.start()\n}}()),$(window).trigger(\"index_off\"),bds.util.setContainerWidth(),m(function(){$(window).trigger(\"swap_dom_ready\")}),window.__lazy_foot_js?setTimeout(function(){C()},0):C()}function N(t){window.index_off&&window.index_off(),xe.get(0)!==ye.get(0)&&(xe.val(\"\"),ye.val(t.p(\"wd\"))),$e=ye,pageState=1,bds.comm.ishome=0,Fe.done(function(){Oe!==Ee&&(Oe.stop(),Ee.hide(),Ee.setKey(t.p(\"wd\")),Ee.start())}),bds.util.setContainerWidth(),$(window).trigger(\"index_off\",t)}function P(){an=!1,cn=!1,ln=[],clearTimeout(un),un=!1\n}function M(t){an||(an={x:t.pageX,y:t.pageY}),dn={x:t.pageX,y:t.pageY},cn||an.x==t.pageX||an.y==t.pageY||(cn=!0,ln=[an],z())}function z(){ln.push(dn);var t=ln.length;if(Math.pow(dn.x-an.x,2)+Math.pow(dn.y-an.y,2)>=Math.pow(me,2)||t*ue>=le){var e=Ue,n=bds.comm.supportis?1:2;if(n&&e&&e.data()&&e.data()[0]&&e.visible()){var o=(new p).clone({wd:e.data()[0].value});A({env:o,force:!1,no_predict:!0,use_cache:!0,shouldShow:!1,pstg:1}),n--}if(n&&e&&e.data()&&e.data()[1]&&e.visible()){var o=(new p).clone({wd:e.data()[1].value});\nA({env:o,force:!1,no_predict:!0,use_cache:!0,shouldShow:!1,pstg:1}),n--}if(!bds.comm.supportis&&n&&$.trim($e.val())&&(!ze||ze.env.p(\"wd\")!=$.trim($e.val()))){var o=(new p).clone({wd:$.trim($e.val())});A({env:o,force:!1,no_predict:!0,use_cache:!0,shouldShow:!1,pstg:1}),n--}}else un=setTimeout(function(){z()},ue)}document.write=document.writeln=function(){},bds&&bds.comm&&\"clearissw\"==bds.comm.query&&Cookie.clear(\"ISSW\"),function(){var t=$.Deferred();bds.comm.registerUnloadHandler=function(e){t.done(e)\n},bds.comm.resolveUnloadHandler=function(){t.resolve(),t=$.Deferred()}}(),window.b_rec=function(t){var e;if(t)e=navigator.userAgent;else try{e=window.external&&window.external.twGetRunPath?window.external.twGetRunPath():\"\"}catch(n){e=\"\"}return e=e.replace(/:/,\"~\").replace(/\\t/,\"`\")},window.scr_rec=function(){var t=\"\";try{t+=[document.body.clientWidth,document.body.clientHeight,window.screenTop,window.screenLeft,window.screen.height,window.screen.width].join(\"_\")}catch(e){}return t},window.reh_rec=function(){var t=[],e=[];\ntry{$(\"#content_left\").children(\".result,.result-op\").each(function(e,n){t.push($(n).height())})}catch(n){}try{$(\"#con-ar\").children(\".result,.result-op\").each(function(t,n){e.push($(n).height())})}catch(n){}return t.join(\"_\")+\"|\"+e.join(\"_\")},window.onerror=function(){window.console&&console.debug&&console.debug(arguments),bds.comm.jserror=Array.prototype.slice.call(arguments).join(\"\t\"),J(bds.comm.jserror)},window.hash=function(t,e){return t?t&&!e&&Me?Me.p(t):void(t&&e&&Me&&(Me.p(t,e),ne.href=Me.buildSearchUrl())):void 0\n};var B,H,F,W,G,Q,V=!1;!function(){var t=$.globalEval;$.globalEval=function(){var e=(new Date).getTime();try{t.apply($,arguments)}catch(n){}(new Date).getTime()-e>500}}(),bds.comm.isDebug&&($('').appendTo(\"head\"),$('
                ').appendTo(\"#wrapper\"),$(window).on(\"swap_end\",function(t,e){if(e){var n=$(\"#isDebugInfo\");\nn.size()||(n=$('
                ').appendTo(\"#debug\")),n.html(e.html.find(\"#__isDebugInfo\").html());var o=\"\";for(var i in e.log)e.log.hasOwnProperty(i)&&(o+=\"\");o+=\"
                \"+i+\"\"+encodeURIComponent(e.log[i])+\"
                \",$(\"#debug\").html(o)}}));var J=function(){var t;return function(e){bds.comm.isDebug&&alert(e),bds&&bds.comm&&bds.comm.js_error_monitor&&(t=new Image,t.src=bds.comm.js_error_monitor+\"?\"+$.param({url:ne.href,time:bds.comm.serverTime,explore:navigator.userAgent,info:e,info_type:1}))\n}}();window.setSugKey=function(t){$e&&t&&(Ee&&Ee.setKey?Ee.setKey(t):$e.val(t))},window.getCursortPosition=function(t){var e=0;try{if(document.selection){var n=document.selection.createRange();n.moveStart(\"character\",-t.value.length),e=n.text.length}else(t.selectionStart||\"0\"==t.selectionStart)&&(e=t.selectionStart)}catch(o){e=t.value.length}return e},bds.comm.flagTranslateResult&&($(\"#wrapper_wrapper\").delegate(\".result\",\"mouseenter\",function(){$(\".c-fanyi\",$(this)).show()}),$(\"#wrapper_wrapper\").delegate(\".result\",\"mouseleave\",function(){$(\".c-fanyi\",$(this)).hide()\n}),$(\"#wrapper_wrapper\").delegate(\".result .c-fanyi\",\"click\",function(){var t=$(this).closest(\".result\"),e=$(\"h3 a:first\",t),n=$(\".c-abstract:first\",t),o=$(\".c-fanyi-abstract\",t).val(0).html(),i=$(\".c-fanyi-title\",t).val(0).html();$(\".c-fanyi-abstract\",t).val(0).html(n.html()),$(\".c-fanyi-title\",t).val(0).html(e.html()),e.html(i),n.html(o)}));var X={use_cache_repeatedly:!0,index_form:\"#form\",kw:\"#kw\",result_form:\"#form\"};t&&$.extend(X,t);var K=15,Y=6e4,Z=window.__confirm_timeout?window.__confirm_timeout:1e4,te=bds.comm.supportis?4:10,ee=function(){function t(t){\"object\"==typeof t&&null!=t&&(t.xhr&&t.xhr.abort&&t.xhr.abort(),t.base64&&t.base64.destroy(),t.pdc&&t.pdc.destroy(),t.backspace_preload_timeout_id&&clearTimeout(t.backspace_preload_timeout_id),delete t.xhr,delete t.html)\n}var e=[];return{find:function(t){return $.grep(e,t)},getCacheList:function(){var t=$.map(e,function(t){return t&&(new Date).getTime()-t.startTime>Y?!1:t.querySign});return t=$.grep(t,function(t){return!!t}),t.join(\"\t\")},hasCache:function(t,n){function o(t){var o,i;return(i=t.p(\"wd\"))?($.grep(e,function(e){return n.loaded&&!e.loaded?!1:void(t.equals(e.real_wd?e.env.clone({wd:e.real_wd}):e.env)&&(o=e))}),o?o:null):!1}n||(n={});var i=o(t);return i&&(new Date).getTime()-i.startTime>Y&&(this.deleteCache(i),i=null),i\n},shouldShow:function(t){if(t.force)return!0;if(!t.shouldShow&&!t.force&&t.no_predict)return!1;var e=i($e.val());return!e||ze&&t.env.equals(ze.env)?!1:0==t.env.p(\"wd\").indexOf(e)?!0:0==t.real_wd.indexOf(e)?!0:!1},getCacheBySign:function(t){var n=!1;return $.each(e,function(e,o){n||!o.loaded||o.querySign!=t||o.env.p(\"pn\")&&0!=o.env.p(\"pn\")||(n=o)}),n},addCache:function(n){if(-1==l(e,n)&&!n.env.p(\"srcid\")&&!n.env.p(\"cq\"))for(e.unshift(n);e.length>K;)t(e.pop())},deleteCache:function(n){t(n),e=$.grep(e,function(t){return t!==n\n})},deleteCacheByEnv:function(){e=$.grep(e,function(e){var n=e.env.equals(e.env);return n&&t(e),!n})},clearCache:function(){e=$.grep(e,function(e,n){return n!==ze?(t(n),!1):!0}),e=[]}}}(),ne=document.location,oe=ne.protocol+\"//\"+ne.host+ne.pathname+ne.search,ie={onurlchange:function(){}};!function(){function t(){var t=ne.href.match(/#+(.*)$/);return t?t[1].replace(/\\+/g,\"%2B\"):\"\"}function n(){var t=ne.href.match(/\\?([^#]+)/);return t?t[1].replace(/\\?/g,\"&\"):\"\"}function o(t,e){var n=\"\";if(\"1\"===window._thirdLinkSpeed&&(n=\"&qid=\"+bds.comm.queryId),window._bdlksmp>0&&(n=\"&bdlksmp=\"+window._bdlksmp),\"1\"===window._eclipse&&/^\\/link\\?/.test(e))return\"wd=&eqid=\"+bds.comm.eqid+i([\"pn\",\"rn\",\"ie\"],t)+n;\nvar o=new p(s(t));return o.p(\"wd\")?o.buildQueryString().replace(/&rsv[^=]*=[^&]*/g,\"\").replace(/[^a-zA-Z0-9]url=/g,\"\")+n:void 0}function i(t,e){var n=\"\",o=s(e);for(var i in t)o.hasOwnProperty(i)&&(n+=\"&\"+encodeURIComponent(o[i]));return n}function r(t){var e=new p(s(ie.getQueryString()),!0);e.hashCode()?0==pageState&&N(e):0!=pageState?ne.replace(ne.pathname+ne.search.replace(/([?&])isidx=[^&*]&?/,\"$1\")):ne.search!=ne.search.replace(/([?&])isidx=[^&*]&?/,\"$1\")&&ne.replace(ne.pathname+ne.search.replace(/([?&])isidx=[^&*]&?/,\"$1\")),ie.onurlchange(e,t)\n}var a=\"onhashchange\"in window,c=\"onpopstate\"in window;window.__disable_popstate&&(c=!1);var l=ne.pathname.length>1?ne.pathname:\"/s\";(navigator.userAgent.match(/MSIE (6|7)/)||document.documentMode<8)&&(a=!1,c=!1),X.disable_popstate&&(c=!1),a||c||e();var u=function(){var e=\"\";return function(n,o){o&&(e=o.buildQueryString(),ne.hash=e),(n||e!=t())&&(r(n),e=t())}}();ie.setUrl=function(t){c?m(!1,t):a&&u(!1,t)};var m=function(){var t=n();return function(e,o){o&&(t=o.buildQueryString(),window.history.pushState(o,\"\",o.buildSyncSearchUrl())),e||t!=n()?(r(e),t=n()):d()\n}}();ie.getQueryString=function(){return c?n():/wd=/.test(t())?t():n()},ie.init=function(){c?!function(){var e=ne.href,n=!1;$(window).on(\"swap_begin\",function(){n=!0}),$(window).bind(\"popstate\",function(){(n||!e||e!=ne.href)&&m(),e=null}),$(window).bind(\"hashchange\",function(){var e=t();/wd=/.test(e)&&ne.replace(l+\"?\"+e)})}():a&&($(window).bind(\"hashchange\",function(){u()}),$(function(){u()}));var e=t();/wd=/.test(e)&&(c?(window.history.replaceState(null,\"\",l+\"?\"+e),m()):a?u():ne.replace(l+\"?\"+e))\n},ie.support=function(){return(c||a)&&1!=Cookie.get(\"ISSW\")&&!window.__disable_preload},ie.getLinkParams=function(e){if(!c){var i=t();return\"\"==i&&(i=n()),o(i,e)}if(\"https:\"===ne.protocol||\"1\"===window._eclipse){var r=n();return r||(r=t()),o(r,e)}return!1},ie.clickResultLink=function(t,e,n){return c?(window.history.pushState(null,\"\",new p(n,!0).buildSyncSearchUrl()),m(),!1):void t.attr(\"href\",e.buildSearchUrl(n)).attr(\"target\",\"_self\")},ie.submit=function(t,e){setTimeout(function(){c?(window.history.pushState(t,\"\",t.buildSyncSearchUrl()),m(e)):a?(ne.href=t.buildSearchUrl(),u(e)):ne.href=t.buildSyncSearchUrl()\n},0)},window.changeUrl=function(t){var e=new p(s(t));ie.submit(e,!0)}}(),ie.onurlchange=function(t,e){Fe.done(function(){Ue.setKey(t.p(\"wd\")),Ue.hide()}),Te=(new Date).getTime(),$e.val(t.p(\"wd\")),_(\"\");var n=!0;e&&ze&&ze.env&&ze.env.equals(t)&&(n=!1),A({env:t,force:!0,use_cache:n,no_predict:!0})};var re=X.disable?X.disable:!1;window.__disable_preload&&(re=!0);var se=re,ae=!1;window.__disable_predict&&(ae=!0);var ce=ae,de=bds.comm.switchAddMask?bds.comm.switchAddMask:!1;de||(de=window.__switch_add_mask?window.__switch_add_mask:!1),de=!0;\nvar le=(bds.comm.preloadMouseMoveDistance?bds.comm.preloadMouseMoveDistance:5,300),ue=50,me=80,pe=0,fe=0,he=function(){},ge=s(ne.search);ie.support()||(!function(){function t(){ne.hash&&ne.hash.match(/[^a-zA-Z0-9](wd|word)=/)&&ne.replace(\"//www.baidu.com/s?\"+ne.href.match(/#(.*)$/)[1])}ne.hash.match(/[^a-zA-Z0-9](wd|word)=/)?(ne.replace(\"//www.baidu.com/s?\"+ne.href.match(/#(.*)$/)[1]),function(){throw new Error(\"redirect to sync\")}()):(document.getElementById(\"wrapper\").style.display=\"block\",\"onhashchange\"in window?window.onhashchange=t:setInterval(t,200))\n}(),se=re=!0);for(var be=Cookie.get(\"BAIDUID\",\"nobdid\").split(\":\")[0],ve=be.substr(0,6)+be.substr(be.length-5,5)+parseInt(99999*Math.random());ve.length<16;)ve+=\"0\";ve=encodeURIComponent(ve);var we,_e,ye,xe,$e,ke;ye=xe=$e=$(X.kw);var Te,Ce,Se,Ie,De,Re,Ae=$(\"#wrapper_wrapper\"),Le=[];window.__async_strategy,we=$(X.index_form),\"_blank\"==we.attr(\"target\")&&(window.__disable_index_predict=!0,se=re=!0);var je=we.serializeArray();_e=$(X.result_form);var qe=(new Date).getTime();window.pageState=0;var Ue,Oe,Ee,Ne,Pe,Me=null,ze=null,Be=document.location.href,He=!1,Fe=$.ajax({dataType:\"script\",cache:!0,url:1===bds.comm.logFlagSug?\"https://ss1.bdstatic.com/5eN1bjq8AAUYm2zgoY3K/r/www/cache/static/protocol/https/sug/js/bdsug_async_sam_sug_a97d823.js\":1===bds.comm.samSugApi?\"https://ss1.bdstatic.com/5eN1bjq8AAUYm2zgoY3K/r/www/cache/static/protocol/https/sug/js/bdsug_async_sam_api_437177b.js\":\"https://ss1.bdstatic.com/5eN1bjq8AAUYm2zgoY3K/r/www/cache/static/protocol/https/sug/js/bdsug_async_467a84d.js\"}),We=\"focus\";\n!function(){window.PDC_ASYNC={setParam:function(t,e){ze&&ze.pdc&&ze.pdc.setParam(t,e)},setLinkData:function(e,n){t[e]=n},sendLinkLog:function(){var e=\"//www.baidu.com/nocache/fesplg/s.gif?log_type=linksp\",n=\"\";n+=\"&link_t=\"+((new Date).getTime()-t.click_t)+\"&query=\"+bds.comm.queryEnc+\"&qid=\"+bds.comm.queryId+\"&linkpreload=\"+t.linkpreload;var o=Math.random();if(.01>o){var i=new Image,r=\"LINK_IMG_\"+new Date;window[r]=i,i.onload=function(){delete window[r]},i.src=e+n}}};var t=(window.PDC_ASYNC.log={},{});\nwindow.bds&&(bds.pdc=window.PDC_ASYNC)}();var Ge=function(t){function e(){if(c=1,n(),1==c){var e=new Date,i=!1,r=function(){var n=new Date,l=n-e-t,u=o();0>l&&(l=0),u||i||(s[a]=l,a=(a+1)%20),i=u,1==c&&(e=n,d=setTimeout(r,t))};d=setTimeout(r,t)}}function n(){window.clearTimeout(d)}function o(){var t=[\"webkit\",\"moz\",\"ms\",\"o\"];if(\"hidden\"in document)return document.hidden;for(var e=0;e1e3||e>150?(c=a?parseInt(a):0,c>=s-o&&s>c&&(l=1,Cookie.set(\"ispeed\",2,document.domain,\"/\",d)),i>c&&(c=c+o>i?i:c+o,Cookie.set(\"ispeed_lsm\",c,document.domain,\"/\",d))):(a&&parseInt(a)>s&&(r=5),a&&parseInt(a)>=r&&(parseInt(a)<=s+r&&parseInt(a)>s&&(l=2,Cookie.set(\"ispeed\",1,document.domain,\"/\",d)),c=parseInt(a)-r,Cookie.set(\"ispeed_lsm\",c,document.domain,\"/\",d))),l}catch(p){}return 0}function r(){return Cookie.get(\"ispeed\")&&1==UPS.get(\"isSwitch\")&&2==parseInt(Cookie.get(\"ispeed\"))?!0:!1\n}var s=[],a=0,c=0,d=!1,t=t||250;return{start:e,stop:function(){window.clearTimeout(d),c=0},getData:function(){return s.slice(a).concat(s.slice(0,a))},isSlow:r,monitor:i}}();bds.comm.supportis&&1==UPS.get(\"isSwitch\")&&Ge.start();var Qe;Fe.done(function(){Ue=Oe=Ee=bds.se.sug({maxNum:10,withoutRich:bds.comm.supportis,withoutZhixin:!0,form:_e[0],ipt:$e[0],cbname:\"bdsugresultcb\",submission:R}),$e.keydown(function(t){var e=getCursortPosition(this);(9==t.keyCode||39==t.keyCode&&e==this.value.length)&&bds.comm.supportis&&ze&&ke.text()&&(t.preventDefault(),ze.real_wd!=this.value&&($e.val(ze.real_wd),Ue.check()),Ue.show(),_(\"\"),D(ze,He,22)({tipConfirm:!0}))\n}),Ue.on(\"start\",function(){We=\"focus\"}),$(window).on(\"blur\",function(){Ue.hide()}),$(document).on(\"click\",function(t){return 2==t.isTrigger||3==t.isTrigger?!1:void Ue.hide()});var t,e;Ue.on(\"inputChange\",function(n,o){if(!(window.__sam_his_nopredict&&window.bds&&bds.comm&&0==bds.comm.supportis)){if(t||(t=$e.val()),_(\"\"),P(),clearTimeout(Qe),clearTimeout(sn),0==pageState&&window.__disable_index_predict||re||ae||Ge.isSlow())return void Ue.setMaxNum(10);Ue.setMaxNum(te);var i=new p({pn:\"\",wd:o.value});\nif(bds&&bds.comm&&bds.comm.logFlagSug&&1===bds.comm.logFlagSug&&i.p(\"rsv_slog\",\"ipt_change\"),0==pageState&&bds.comm.supportis&&$.trim($e.val())){N(i);var r=$(\"
                请按“回车”键发起检索
                \").insertBefore(\"#head\");$(window).one(\"swap_begin\",function(){r.remove()})}if(Pe)return void(Pe=!1);if(window.__restart_confirm_timeout&&I(),We=\"input\",Te=(new Date).getTime(),e&&(clearTimeout(e),e=!1),\"\"==$.trim(o.value))return void x();if(Ne=o.checkStore(),!/^[a-zA-Z0-9~!@#$%^&*()_+=-]$/.test(o.value)){var s=$e.val(),a=o.imt.getLog();\na.length>0&&a[a.length-1].type.indexOf(\"link\")>-1&&i.p(\"_sglink\",\"1\");var c=o.imt.diffLog();c&&c.length>1&&(c=c.slice(-15).join(\".\"),i.h({is_params:{imes:encodeURIComponent(c)}})),!window.__disable_is2&&t.length>s.length&&0===t.indexOf(s)?e=setTimeout(function(){A({env:i,use_cache:!0,force:!1,pstg:5,shouldShow:bds.comm.supportis}),e=!1},250):A({env:i,use_cache:!0,force:!1,pstg:5,shouldShow:bds.comm.supportis})}t=s}}),Ue.on(\"selectSug\",function(t,e,n,o){if(_(\"\"),clearTimeout(Qe),!(0==pageState&&window.__disable_index_predict||re||ae||Ge.isSlow()))if(-1==n){ze&&Ue.setVisibleSug(ze.real_wd);\nvar i=new p({pn:\"\",wd:e.value});bds&&bds.comm&&bds.comm.logFlagSug&&1===bds.comm.logFlagSug&&i.p(\"rsv_slog\",\"sug_select\"),A({env:i,use_cache:!0,force:!1,shouldShow:bds.comm.supportis,pstg:3})}else{Ue.setVisibleSug(),_(\"\");var i=new p({pn:\"\",wd:o});bds&&bds.comm&&bds.comm.logFlagSug&&1===bds.comm.logFlagSug&&i.p(\"rsv_slog\",\"sug_select\");var r=e.stopRefresh?!1:bds.comm.supportis;A({env:i,force:!1,use_cache:!0,no_predict:!0,shouldShow:r,pstg:3})}}),Ue.on(\"render\",function(){ze&&Ue.setVisibleSug(ze.real_wd)\n}),Ue.on(\"dataReady\",function(t,e){var n=e&&e.queryValue&&e.dataCached&&e.dataCached[e.queryValue];if(n&&n.gl)for(var o in n.gl)if(1*n.gl[o]>0){var i=new p({pn:\"\",wd:n.s[o]});A({env:i,force:!1,use_cache:!0,no_predict:!0,shouldShow:!1,pstg:7})}}),0==pageState&&Ue.start()});var Ve,Je,Xe,Ke;!function(){var t,e=-1,n=0,o=-1,i=-1,s=-1,a=-1,c=0;Ve=function(e){if(e){s=e.pageX,a=e.pageY,t=e.target;var r=$(e.target);\"submit\"==r.attr(\"type\")&&(c=1);var d=r.offset();o=s-d.left,i=a-d.top,n=(new Date).getTime()\n}},Je=function(o){o&&o.target==t&&(e=(new Date).getTime()-n)},Ke=function(t){bds&&bds.comm&&bds.comm.query&&(t=bds.comm.query);var n=c+\".\"+e+\".\"+o+\".\"+i+\".\"+s+\".\"+a;return n=r(n+t)+\".\"+n},Xe=function(){e=-1,n=0,o=-1,i=-1,s=-1,a=-1,c=0},$(window).on(\"confirm\",function(){setTimeout(Xe,0)})}(),$(function(){$(\"#head\").delegate(\".index_tab_top>a,.index_tab_bottom>a,#u1>a,#u>a\",\"mousedown\",function(){return $(this).attr(\"name\")?ns_c({fm:\"behs\",tab:$(this).attr(\"name\"),query:\"\",un:encodeURIComponent(bds.comm.user||\"\")}):void 0\n})}),$(document).delegate(\"a\",\"mousedown\",function(){D(ze,He,22)()}),v({prefix:\"http://www.baidu.com\",regex:/^\\/*(link)\\?(.*)$/}),v({prefix:\"//www.baidu.com\",regex:/^\\/*(link)\\?(.*)$/}),v({prefix:\"http://www.baidu.com\",convertTable:{\"baidu.php\":\"baidu.php\",\"aladdin.php\":\"aladdin.php\",\"siva.php\":\"siva.php\",\"adrc.php\":\"adrc.php\",\"zhixin.php\":\"zhixin.php\"},regex:/^\\/*(baidu\\.php|aladdin\\.php|siva\\.php|adrc\\.php|zhixin\\.php)\\?(.*)$/}),\"www.baidu.com\"!=ne.host&&v({prefix:\"\",convertTable:{\"baidu.php\":\"baidu.php\",\"aladdin.php\":\"aladdin.php\",\"siva.php\":\"siva.php\",\"adrc.php\":\"adrc.php\",\"zhixin.php\":\"zhixin.php\"},regex:/^\\/*(baidu\\.php|aladdin\\.php|siva\\.php|adrc\\.php|zhixin\\.php)\\?(.*)$/}),v({prefix:\"http://bzclk.baidu.com\",regex:/^\\/*(adrc\\.php)\\?(.*)$/}),v({prefix:\"https://sp0.baidu.com/9q9JcDHa2gU2pMbgoY3K\",regex:/^\\/*(adrc\\.php)\\?(.*)$/}),\"https:\"==ne.protocol&&bds.comm.ishome&&!/Chrome/.test(navigator.userAgent)&&$(document).delegate(\"a\",\"mousedown\",function(){var t=$(this),e=t.attr(\"href\"),n={\"http://v.baidu.com\":\"/?fr=bd\"};\nn&&n.hasOwnProperty(e)&&t.attr(\"href\",e+n[e])}),$(document).delegate(\"a\",\"mousedown\",function(){var t=$(this),e=t.attr(\"href\"),n=new Image,o=\"//www.baidu.com/nocache/fesplg/s.gif?log_type=hm\",i=Math.random();if(.01>i&&!/www\\.baidu\\.com\\//.test(e)&&/^http/.test(e)){var r=o+\"&c_url=\"+encodeURIComponent(e),n=new Image,s=\"_LOG_\"+(new Date).getTime();n.onload=function(){delete window[s]},window[s]=n,n.src=r}}),ie.support()&&$(document).delegate(\"a\",\"click\",function(){var t=ne.protocol+\"//\"+ne.host;return function(){var e=$(this);\nif(!e.attr(\"target\")||\"_self\"==e.attr(\"target\")){var n=$.trim(e.attr(\"href\"));if(n&&0==n.indexOf(t)&&(n=n.substring(t.length)),n&&(matched=n.match(/^\\/*s\\?(.*)/)),n&&matched){var o=s(matched[0]);if(o.pn||(o.pn=\"\"),l([\"baidurt\",\"baiduwb\",\"baidufir\",\"SE_baiduxueshu_c1gjeupa\"],o.tn)<0){var i=e.parents(\"#con-at\");i.size()>0&&a({top:i.offset().top+i.height()});var r=ie.clickResultLink(e,Me,o)}return r}}}}()),$(document).delegate(\"a\",\"mousedown\",function(t){Ve(t)}),$(document).delegate(\"a\",\"mouseup\",function(t){Je(t)\n}),$(document).delegate(\"#su,#su1\",\"mouseup\",function(t){Je(t)}),$(document).delegate(\"#su,#su1\",\"mousedown\",function(t){Ve(t)}),!function(){var t;window._bdlkc>=1&&($(document).delegate(\".c-container\",\"mouseenter\",function(){return function(){var e=$(this),n=300;2==window._bdlkc&&(n=100),t=setTimeout(function(){var t=e.find(\".t>a\"),n=w(t,{prefix:\"http://www.baidu.com\",regex:/^\\/*(link)\\?(.*)$/}),o=e.attr(\"mu\")||e.find(\".f13 .g\").text(),i=/^(http[s]?:\\/\\/)?([^\\/]+)(.*)/,r=o.match(i);n&&n.match(ne.protocol)&&/www\\.baidu\\.com\\/link/.test(n)&&!/bdlkc=1/.test(n)&&(r[2]&&(o=\"http://\"+r[2],e.append('')),$.ajax({url:n+\"&bdlkc=1\",type:\"GET\",contentType:\"text/html\",success:function(){t.attr(\"linkpreload\",\"1\")\n}}),t.attr(\"href\",n+\"&bdlkc=1\"))},300)}}()),$(document).delegate(\".c-container\",\"mouseleave\",function(){return function(){clearTimeout(t)}}()))}();var Ye=$(\"body\");document.title,!function(t){var e;t.fn.textWidth=function(){e||(e=t('
                ').appendTo(\"body\").find(\"span\")),e.html(escapeHTML(t(this).val()));var n=e.width();return n}}(jQuery);\nvar Ze=!1;$(window).on(\"swap_dom_ready\",function(t,e){var n=\"\";!e||!e.real_wd||e.no_predict&&6!=e.pstg||(n=e.real_wd),_(n),k(e)}),$(window).on(\"swap_end\",function(t,e){e&&(window.cfpromise=new $.Deferred,De&&(clearTimeout(De),De=!1,Re=null),e.confirm=!1,e.force?D(e,He,20)():(Re=D(e,He,21),De=setTimeout(Re,Z)))}),$(window).on(\"indexOff\",function(t,e){Fe.done(function(){_(e.p(\"wd\"))})}),ie.support()&&\"_blank\"!=we.attr(\"target\")&&Fe.done(function(){Ue.setMaxNum(te)});var tn,en=!1,nn=!1;_e.mousedown(function(){nn=!1\n}).delegate(\"a,input\",\"focus\",function(){nn=!1});var on,rn,sn;$(window).on(\"swap_end\",function(t,e){e||(bds.comm.confirmQuery=bds.comm.query,bds.comm.confirmQid=bds.comm.qid,g()),sn=setTimeout(function(){0==$(\"#content_left,.result,.content_none\").length&&n(15,86400)},1e4)}),ie.init(),$(function(){var t=$(\"script\").last(),e=$(\"head\");he=function(){t.nextAll().not(\"[data-for]\").not(\"#passport-login-pop\").remove(),e.find(\"*\").not(\"[data-for]\").not(\"meta\").not(\"title\").not(\"script[async]\").not('link[href*=\"passport\"]').not('link[rel*=\"icon\"]').not('link[rel*=\"shortcut icon\"]').remove()\n}}),bds.comm.resultPage&&E(),Ye.delegate(\"#s_tab a\",\"mousedown\",function(){setHeadUrl(this)}).delegate(\"#s_tab a\",\"focusin\",function(){setHeadUrl(this)}),Ae.delegate(\"#page strong+a,#page a.n\",\"mouseover\",function(){A({env:new p(s($(this).attr(\"href\"))),force:!1,use_cache:!0,no_predict:!0,shouldShow:!1,pstg:4})});var an,cn,dn,ln,un;Fe.done(function(){$(document).mousemove(M)}),$(\"#u .back_org\").click(function(){var t=new Date;t.setTime((new Date).getTime()+110376e7),Cookie.set(\"ORIGIN\",2,document.domain,\"/\",t),Me?ne.replace(Me.buildSyncSearchUrl({_r:Math.random()})):ne.href=\"/\"\n}),$(window).scroll(function(){var t,e=$(\"#head\"),n=$(window),o=40,i=e.offset().top,r=function(){t&&(clearTimeout(t),t=!1),t=setTimeout(function(){var r=n.scrollTop();r>o+i?t=setTimeout(function(){e.addClass(\"s_down\"),Fe.done(function(){Ee.hide()})},0):o+i>=r&&(t=setTimeout(function(){e.removeClass(\"s_down\")},0))},50)};return r(),r}()),$e.bind(\"paste\",function(){if(!(window.__disable_index_predict&&0==pageState||re||ae)){var t=this,e=this.value;Pe=!0,setTimeout(function(){t.value&&t.value!=e&&A({env:(new p).clone({wd:$.trim(t.value)}),force:!1,use_cache:!0,no_predict:!0,shouldShow:bds.comm.supportis,pstg:2})\n},0)}})}function addEV(t,e,n){window.attachEvent?t.attachEvent(\"on\"+e,n):window.addEventListener&&t.addEventListener(e,n,!1)}function user_c(t){var e=\"\",n=\"\",o=\"\",i=\"\",r=encodeURIComponent(window.document.location.href),s=window[\"BD_PS_C\"+(new Date).getTime()]=new Image,a=bds&&bds.util&&bds.util.domain?bds.util.domain.get(\"http://nsclick.baidu.com\"):\"http://nsclick.baidu.com\";for(v in t){switch(v){case\"title\":o=encodeURIComponent(t[v].replace(/<[^<>]+>/g,\"\"));break;case\"url\":o=encodeURIComponent(t[v]);\nbreak;default:o=t[v]}e+=v+\"=\"+o+\"&\"}return i=\"&mu=\"+r,s.src=a+\"/v.gif?pid=201&pj=psuser&\"+e+\"path=\"+r+\"&wd=\"+n+\"&t=\"+(new Date).getTime(),!0}function initPassV3(){var t=bds.comm.passnew?3:2;bds.se.passv3=passport.pop.init({apiOpt:{loginType:1,product:\"mn\",u:window.document.location.href,safeFlag:0,qrcode:t,staticPage:location.protocol+\"//www.baidu.com/cache/user/html/v3Jump.html\"},cache:!1,tangram:!0,authsite:[\"qzone\",\"tsina\"],authsiteCfg:{act:\"implicit\",display:\"popup\",jumpUrl:location.protocol+\"//www.baidu.com/cache/user/html/xd.html\",onBindSuccess:function(t,e){var n=decodeURIComponent(e.passport_uname||e.displayname);\nreturn bds.se.login.success(n),!1}},onLoginSuccess:function(t){t.returnValue=!1;var e=t.rsp.data.userName||t.rsp.data.mail||t.rsp.data.phoneNumber;bds.se.login.success(e)},onSubmitStart:function(){},onSubmitedErr:function(){},onSystemErr:function(){},onShow:function(){},onHide:function(){bds.se.login.setSubpro(\"\"),bds.se.login.setMakeText(\"\")},onDestroy:function(){}})}function isp_hijack(t){var e,n,o,i=document.getElementById(\"wrapper\"),r=!1;bds.comm.query||(r=!0),1==t.stat&&(e=document.createElement(\"div\"),e.innerHTML='
                百度提示您:
                我们发现当前您可能受到异常广告弹窗的影响,通常这是受第三方恶意劫持导致。使用 防恶意广告专版杀毒软件,可有效改善您的上网体验,免受恶意广告的困扰。
                ',r?i.insertBefore(e,i.children[0]):(i.style.position=\"relative\",document.getElementById(\"u\").style.top=0,e.style.margin=\"-6px 0 8px 0\",document.body.insertBefore(e,i)),n=document.getElementById(\"isp-close-btn\"),o=n.parentNode.getElementsByTagName(\"a\")[0],n.onclick=function(){r?i.removeChild(e):(document.body.removeChild(e),i.style.position=\"\",document.getElementById(\"u\").style.top=\"4px\")\n},n.onmousedown=function(){ns_c({fm:\"behs\",tab:\"tj_notice\",cont:\"jcbro\",action:\"close\",area:\"topbar\"})},o.onmousedown=function(){ns_c({fm:\"behs\",tab:\"tj_notice\",cont:\"jcbro\",action:\"click\",area:\"topbar\"})},ns_c({fm:\"behs\",tab:\"tj_notice\",cont:\"jcbro\",action:\"show\",area:\"topbar\"}))}function isbase64(t){function e(){p={left:$.Deferred(),right:$.Deferred()}}function n(t,e){g++;var t=t||[],e=e||[];if(t=$.grep(t,function(t){return f.right.hasOwnProperty(t)?!1:(f.right[t]=!1,!0)}),e=$.grep(e,function(t){return f.left.hasOwnProperty(t)?!1:(f.left[t]=!1,!0)\n}),2==c.b64Exp&&e.length>0&&(h=!0,r(e,\"left\",\"reql\")),t.length>0)if(t.length>12){var n=Math.round(t.length/2),o=[],i=[];$.each(t,function(t,e){n>t?o.push(e):i.push(e)}),r(o,\"right\",\"reqr2\"),r(i,\"right\",\"reqr1\")}else r(t,\"right\",\"reqr\")}function o(t){for(var e=t,n=0;__callback_names.hasOwnProperty(t)||window[t];)t=e+\"_\"+n,n++;return __callback_names[t]=1,t}function i(t){if(\"string\"==typeof t){var e,n=0,o=0;for(e=0;e9?t:\"0\"+t};return(\"number\"==typeof t||\"string\"==typeof t)&&(t=new Date(t)),[t.getFullYear(),n(t.getMonth()+1),n(t.getDate())].join(e||\"\")}function baseChangeUrl(t){bds.comm.search_tool.st&&bds.comm.search_tool.et&&bds.comm.search_tool.stftype&&t.indexOf(\"&gpc=\")<0&&(t+=\"&gpc=\"+encodeURIComponent(\"stf=\"+bds.comm.search_tool.st+\",\"+bds.comm.search_tool.et+\"|stftype=\"+bds.comm.search_tool.stftype)),bds.comm.search_tool.si&&t.indexOf(\"&si=\")<0&&(t+=\"&si=\"+encodeURIComponent(bds.comm.search_tool.si)+\"&ct=2097152\"),bds.comm.search_tool.sl_lang&&t.indexOf(\"&sl_lang=\")<0&&(t+=\"&rsv_srlang=\"+encodeURIComponent(bds.comm.search_tool.sl_lang),t+=\"&sl_lang=\"+encodeURIComponent(bds.comm.search_tool.sl_lang),t+=\"&rsv_rq=\"+encodeURIComponent(bds.comm.search_tool.sl_lang)),changeUrl(t)\n}function langChangeUrl(t,e,n){ns_c({fm:\"advTool\",qid:bds.comm.qid,title:encodeURI(n),rsv_advTool_lang:e}),baseChangeUrl(\"wd=\"+encodeURIComponent($(\"#kw\").val())+\"&\"+t+\"=\"+encodeURIComponent(e)+\"&rsv_srlang=\"+encodeURIComponent(e)+\"&rsv_rq=\"+encodeURIComponent(e))}function advChangeUrl(t,e,n,o){if(-1!=e.indexOf(\"=\"))var i=1;else var i=0;ns_c({fm:\"advTool\",qid:bds.comm.qid,title:encodeURI(n),rsv_advTool_time:o,rsv_advTool_stet:e.substr(4).replace(\",\",\"_\")}),baseChangeUrl(\"wd=\"+encodeURIComponent($(\"#kw\").val())+\"&\"+t+\"=\"+encodeURIComponent(e)+\"&tfflag=\"+i)\n}function fileChangeUrl(t,e,n){ns_c({fm:\"advTool\",qid:bds.comm.qid,title:encodeURI(e),rsv_advTool_ft:n}),baseChangeUrl(\"wd=\"+encodeURIComponent(queryReplace(\"filetype\",t)))}function queryReplace(t,e){if(!t||\"filetype\"!=t&&\"site\"!=t)return o;var n=new RegExp(\"(\"+t+\"):[^\\\\s]*[ ]?\"),o=$(\"#kw\").val();return\" \"==e||null==e?o.replace(n,\"\"):o.match(n)?o.replace(n,\"$1:\"+e+\" \"):t+\":\"+e+\" \"+o}function extChangeUrl(t){t?(ns_c({fm:\"advTool\",qid:bds.comm.qid,title:encodeURI(\"精确匹配\"),rsv_advTool_ext:1}),baseChangeUrl('wd=\"'+encodeURIComponent($(\"#kw\").val())+'\"')):(ns_c({fm:\"advTool\",qid:bds.comm.qid,title:encodeURI(\"智能匹配\"),rsv_advTool_ext:0}),baseChangeUrl(\"wd=\"+encodeURIComponent($(\"#kw\").val().replace(/^\\\"(.*)\\\"$/,\"$1\"))))\n}!function(){function getUA(){var t,e={},n=navigator.userAgent.toLowerCase();return e.mac=navigator.platform.toUpperCase().indexOf(\"MAC\")>=0,(t=n.match(/rv:([\\d.]+)\\) like gecko/))?e.ie=t[1]:(t=n.match(/(msie\\s|trident.*rv:)([\\w.]+)/))?e.ie=t[2]:(t=n.match(/firefox\\/([\\d.]+)/))?e.firefox=t[1]:(t=n.match(/chrome\\/([\\d.]+)/))?e.chrome=t[1]:(t=n.match(/opera.([\\d.]+)/))?e.opera=t[1]:(t=n.match(/version\\/([\\d.]+).*safari/))?e.safari=t[1]:0,e}function getDefaultQueryHis(){try{return JSON.parse(localStorage.getItem(\"index_ls_default_query\"))\n}catch(t){return{}}}function detectPlaceholder(t){var e=\"[object OperaMini]\"===Object.prototype.toString.call(window.operamini);return t.ie?!1:\"placeholder\"in document.createElement(\"input\")&&!e}function createPlaceHolder(t,e,n){if(e)t.attr(\"placeholder\",n);else{var o=\"
                \"+n+\"
                \";t.before(o),$(\".kw-placeholder\").on(\"click\",function(e){t.focus(),e.target=t.get(0),t.trigger(e)}),$(document).ready(function(){$(\".kw-placeholder\").toggleClass(\"placeholders-hidden\",t.val().length>0)\n}),t.on(\"keydown keyup cut paste setValue input\",checkInputValue)}}function checkInputValue(){var t=$input.val();setTimeout(function(){var e=$input.val();(e!==t||e.length>0)&&$(\".kw-placeholder\").toggleClass(\"placeholders-hidden\",e.length>0)},0)}function removePlaceHolder(t,e){e?t.removeAttr(\"placeholder\"):$(\".kw-placeholder\").remove()}function testLocalStorage(){var t=\"test\";try{return localStorage.setItem(t,t),localStorage.removeItem(t),!0}catch(e){return!1}}function getShowCount(t,e){var n=0;return e&&e.query&&e.query===t&&e.count&&(n=e.count),n\n}function recordDefaultQuery(t,e){var n={query:t,time:(new Date).getTime(),count:1};e&&e.query&&t===e.query&&e.count&&(n.count=e.count+1),setTimeout(function(){try{localStorage.removeItem(\"index_ls_default_query\"),localStorage.setItem(\"index_ls_default_query\",JSON.stringify(n))}catch(t){return!1}},0)}function jsonPolyfill(){var json={parse:function(sJSON){return eval(\"(\"+sJSON+\")\")},stringify:function(){var t=Object.prototype.toString,e=Object.prototype.hasOwnProperty,n=Array.isArray||function(e){return\"[object Array]\"===t.call(e)\n},o={'\"':'\\\\\"',\"\\\\\":\"\\\\\\\\\",\"\\b\":\"\\\\b\",\"\\f\":\"\\\\f\",\"\\n\":\"\\\\n\",\"\\r\":\"\\\\r\",\"\t\":\"\\\\t\"},i=function(t){return o[t]||\"\\\\u\"+(t.charCodeAt(0)+65536).toString(16).substr(1)},r=/[\\\\\"\\u0000-\\u001F\\u2028\\u2029]/g;return function s(o){if(null==o)return\"null\";if(\"number\"==typeof o)return isFinite(o)?o.toString():\"null\";if(\"boolean\"==typeof o)return o.toString();if(\"object\"==typeof o){if(\"function\"==typeof o.toJSON)return s(o.toJSON());if(n(o)){for(var a=\"[\",c=0;c9&&(defaultQuery=\"\"),defaultQuery){var UA=getUA(),isPlaceHolderSupported=detectPlaceholder(UA);\ncreatePlaceHolder($input,isPlaceHolderSupported,defaultQuery,UA),isSupportLocalStorage&&recordDefaultQuery(defaultQuery,defaultQueryHis),$(window).one(\"index_off\",function(){removePlaceHolder($input,isPlaceHolderSupported),bds.comm.dpquery=\"\"})}}();var define,require,esl;!function(t){function e(t){m(t,M)||(z[t]=1)}function n(t,e){function n(t){0===t.indexOf(\".\")&&i.push(t)}var i=[];if(\"string\"==typeof t?n(t):A(t,function(t){n(t)}),i.length>0)throw new Error(\"[REQUIRE_FATAL]Relative ID is not allowed in global require: \"+i.join(\", \"));\nvar r=F.waitSeconds;return r&&t instanceof Array&&(U&&clearTimeout(U),U=setTimeout(o,1e3*r)),H(t,e)}function o(){function t(s,a){if(!r[s]&&!m(s,M)){r[s]=1;var c=O[s];c?(a||!m(s,P)||c.hang)&&(o[s]||(o[s]=1,e.push(s)),A(c.depMs,function(e){t(e.absId,e.hard)})):i[s]||(i[s]=1,n.push(s))}}var e=[],n=[],o={},i={},r={};for(var s in z)t(s,1);if(e.length||n.length)throw new Error(\"[MODULE_TIMEOUT]Hang(\"+(e.join(\", \")||\"none\")+\") Miss(\"+(n.join(\", \")||\"none\")+\")\")}function i(t){A(W,function(e){a(t,e.deps,e.factory)\n}),W.length=0}function r(t,e,n){if(null==n&&(null==e?(n=t,t=null):(n=e,e=null,t instanceof Array&&(e=t,t=null))),null!=n){var o=window.opera;if(!t&&document.attachEvent&&(!o||\"[object Opera]\"!==o.toString())){var i=j();t=i&&i.getAttribute(\"data-require-id\")}t?a(t,e,n):W[0]={deps:e,factory:n}}}function s(){var t=F.config[this.id];return t&&\"object\"==typeof t?t:{}}function a(t,e,n){O[t]||(O[t]={id:t,depsDec:e,deps:e||[\"require\",\"exports\",\"module\"],factoryDeps:[],factory:n,exports:{},config:s,state:E,require:k(t),depMs:[],depMkv:{},depRs:[],hang:0})\n}function c(t){var e=O[t];if(e&&!m(t,N)){var n=e.deps,o=e.factory,i=0;\"function\"==typeof o&&(i=Math.min(o.length,n.length),!e.depsDec&&o.toString().replace(/(\\/\\*([\\s\\S]*?)\\*\\/|([^:]|^)\\/\\/(.*)$)/gm,\"\").replace(/require\\(\\s*(['\"])([^'\"]+)\\1\\s*\\)/g,function(t,e,o){n.push(o)}));var r=[],s=[];A(n,function(n,o){var a,c,d=I(n),l=T(d.mod,t);l&&!B[l]?(d.res&&(c={id:n,mod:l,res:d.res},s.push(n),e.depRs.push(c)),a=e.depMkv[l],a||(a={id:d.mod,absId:l,hard:i>o},e.depMs.push(a),e.depMkv[l]=a,r.push(l))):a={absId:l},i>o&&e.factoryDeps.push(c||a)\n}),e.state=N,u(t),b(r),s.length&&e.require(s,function(){A(e.depRs,function(e){e.absId||(e.absId=T(e.id,t))}),d()})}}function d(){for(var t in z)c(t),l(t),p(t)}function l(t){function e(t){if(c(t),!m(t,N))return!1;if(m(t,P)||n[t])return!0;n[t]=1;var o=O[t],i=!0;return A(o.depMs,function(t){i=e(t.absId)&&i}),i&&A(o.depRs,function(t){return i=!!t.absId}),i&&!m(t,P)&&(o.state=P),n[t]=0,i}var n={};e(t)}function u(e){function n(){if(!o&&i.state===P){o=1;var n=1;if(A(i.factoryDeps,function(t){var e=t.absId;\nreturn B[e]?void 0:(p(e),n=m(e,M))}),n){try{var r=i.factory,s=\"function\"==typeof r?r.apply(t,f(i.factoryDeps,{require:i.require,exports:i.exports,module:i})):r;null!=s&&(i.exports=s),i.invokeFactory=null}catch(a){throw i.hang=1,a}g(e)}}}var o,i=O[e];i.invokeFactory=n}function m(t,e){return O[t]&&O[t].state>=e}function p(t){var e=O[t];e&&e.invokeFactory&&e.invokeFactory()}function f(t,e){var n=[];return A(t,function(t,o){\"object\"==typeof t&&(t=t.absId),n[o]=e[t]||O[t].exports}),n}function h(t,e){if(m(t,M))return void e();\nvar n=G[t];n||(n=G[t]=[]),n.push(e)}function g(t){var e=O[t];e.state=M,delete z[t];for(var n=G[t]||[],o=n.length;o--;)n[o]();n.length=0,G[t]=null}function b(e,n,o){function i(){if(\"function\"==typeof n&&!r){var o=1;A(e,function(t){return B[t]?void 0:o=!!m(t,M)}),o&&(r=1,n.apply(t,f(e,B)))}}var r=0;A(e,function(t){B[t]||m(t,M)||(h(t,i),(t.indexOf(\"!\")>0?w:v)(t,o))}),i()}function v(e){function n(){var t=K[e];q(t||e,o)}function o(){if(s){var n;\"function\"==typeof s.init&&(n=s.init.apply(t,f(a,B))),null==n&&s.exports&&(n=t,A(s.exports.split(\".\"),function(t){return n=n[t],!!n\n})),r(e,a,function(){return n||{}})}else i(e);d()}if(!Q[e]&&!O[e]){Q[e]=1;var s=F.shim[e];s instanceof Array&&(F.shim[e]=s={deps:s});var a=s&&(s.deps||[]);a?(A(a,function(t){F.shim[t]||(F.shim[t]={})}),H(a,n)):n()}}function w(t,e){function n(e){c.exports=e||!0,g(t)}function o(o){var i=e?O[e].require:H;o.load(a.res,i,n,s.call({id:t}))}if(!O[t]){var r=K[t];if(r)return void v(r);var a=I(t),c={id:t,state:N};O[t]=c,n.fromText=function(t,e){new Function(e)(),i(t)},o(H(a.mod))}}function _(t,e){var n=D(t,1,e);\nreturn n.sort(L),n}function y(){function t(t){K[C(t)]=n}F.baseUrl=F.baseUrl.replace(/\\/$/,\"\")+\"/\",V=_(F.paths),X=_(F.map,1),A(X,function(t){t.v=_(t.v)});var e=X[X.length-1];e&&\"*\"===e.k&&A(X,function(t){t!=e&&(t.v=t.v.concat(e.v))}),J=[],A(F.packages,function(t){var e=t;\"string\"==typeof t&&(e={name:t.split(\"/\")[0],location:t,main:\"main\"}),e.location=e.location||e.name,e.main=(e.main||\"main\").replace(/\\.js$/i,\"\"),e.reg=R(e.name),J.push(e)}),J.sort(L),Y=_(F.urlArgs,1),K={};for(var n in F.bundles)A(F.bundles[n],t)\n}function x(t,e,n){A(e,function(e){return e.reg.test(t)?(n(e.v,e.k,e),!1):void 0})}function $(t,e){var n=/(\\.[a-z0-9]+)$/i,o=/(\\?[^#]*)$/,i=\"\",r=t,s=\"\";o.test(t)&&(s=RegExp.$1,t=t.replace(o,\"\")),n.test(t)&&(i=RegExp.$1,r=t.replace(n,\"\")),null!=e&&(r=T(r,e));var a,c=r;return x(r,V,function(t,e){c=c.replace(e,t),a=1}),a||x(r,J,function(t,e,n){c=c.replace(n.name,n.location)}),/^([a-z]{2,10}:\\/)?\\//i.test(c)||(c=F.baseUrl+c),c+=i+s,x(r,Y,function(t){c+=(c.indexOf(\"?\")>0?\"&\":\"?\")+t}),c}function k(t){function n(n,i){if(\"string\"==typeof n){if(!o[n]){var r=T(n,t);\nif(p(r),!m(r,M))throw new Error('[MODULE_MISS]\"'+r+'\" is not exists!');o[n]=O[r].exports}return o[n]}if(n instanceof Array){var s=[],a=[];A(n,function(n,o){var i=I(n),r=T(i.mod,t),c=i.res,d=r;if(c){var l=r+\"!\"+c;0!==c.indexOf(\".\")&&K[l]?r=d=l:d=null}a[o]=d,e(r),s.push(r)}),b(s,function(){A(a,function(o,i){null==o&&(o=a[i]=T(n[i],t),e(o))}),b(a,i,t),d()},t),d()}}var o={};return n.toUrl=function(e){return $(e,t||\"\")},n}function T(t,e){if(!t)return\"\";e=e||\"\";var n=I(t);if(!n)return t;var o=n.res,i=S(n.mod,e);\nif(x(e,X,function(t){x(i,t,function(t,e){i=i.replace(e,t)})}),i=C(i),o){var r=m(i,M)&&H(i);o=r&&r.normalize?r.normalize(o,function(t){return T(t,e)}):T(o,e),i+=\"!\"+o}return i}function C(t){return A(J,function(e){var n=e.name;return n===t?(t=n+\"/\"+e.main,!1):void 0}),t}function S(t,e){if(0!==t.indexOf(\".\"))return t;for(var n=e.split(\"/\").slice(0,-1).concat(t.split(\"/\")),o=[],i=0;in&&e(t[n],n)!==!1;n++);}function L(t,e){var n=t.k||t.name,o=e.k||e.name;return\"*\"===o?-1:\"*\"===n?1:o.length-n.length}function j(){if(Z)return Z;if(te&&\"interactive\"===te.readyState)return te;\nfor(var t=document.getElementsByTagName(\"script\"),e=t.length;e--;){var n=t[e];if(\"interactive\"===n.readyState)return te=n,n}}function q(t,e){function n(){var t=o.readyState;(\"undefined\"==typeof t||/^(loaded|complete)$/.test(t))&&(o.onload=o.onreadystatechange=null,o=null,e())}var o=document.createElement(\"script\");o.setAttribute(\"data-require-id\",t),o.src=$(t+\".js\"),o.async=!0,o.readyState?o.onreadystatechange=n:o.onload=n,Z=o,ne?ee.insertBefore(o,ne):ee.appendChild(o),Z=null}var U,O={},E=1,N=2,P=3,M=4,z={},B={require:n,exports:1,module:1},H=k(),F={baseUrl:\"./\",paths:{},config:{},map:{},packages:[],shim:{},waitSeconds:0,bundles:{},urlArgs:{}};\nn.version=\"2.1.4\",n.loader=\"esl\",n.toUrl=H.toUrl;var W=[];r.amd={};var G={},Q={};n.config=function(t){if(t){for(var e in F){var n=t[e],o=F[e];if(n)if(\"urlArgs\"===e&&\"string\"==typeof n)F.urlArgs[\"*\"]=n;else if(o instanceof Array)o.push.apply(o,n);else if(\"object\"==typeof o)for(var i in n)o[i]=n[i];else F[e]=n}y()}},y();var V,J,X,K,Y,Z,te,ee=document.getElementsByTagName(\"head\")[0],ne=document.getElementsByTagName(\"base\")[0];ne&&(ee=ne.parentNode),define||(define=r,require||(require=n),esl=n);var oe;\n!function(){for(var t=document.getElementsByTagName(\"script\"),e=t.length;e--;){var n=t[e];if(oe=n.getAttribute(\"data-main\"))break}}(),oe&&setTimeout(function(){n([oe])},4)}(this);var bds=window.bds||{};bds.amd={keys:{},addPaths:function(t){\"object\"==typeof t&&(require.config({paths:t}),$.extend(bds.amd.keys,t))},exist:function(t){return t&&\"undefined\"!=typeof bds.amd.keys[t]?!0:!1}},function(){var t=bds.util&&bds.util.domain?bds.util.domain.get(\"http://s1.bdstatic.com\"):\"http://s1.bdstatic.com\",e=bds.util&&bds.util.domain?bds.util.domain.get(\"http://ecmb.bdimg.com\"):\"http://ecmb.bdimg.com\";\nrequire.config({baseUrl:t+\"/r/www/cache/biz\",packages:[{name:\"ecma\",location:e+\"/public01\"},{name:\"ecmb\",location:e+\"/public01\"}],paths:{aladdin:t+\"/r/www/aladdin\",ui:t+\"/r/www/cache/amd/ui\",\"ui/config\":t+\"/r/www/cache/amd/ui/Control\",\"ui/lib\":t+\"/r/www/cache/amd/ui/Control\",\"ui/Control\":t+\"/r/www/cache/amd/ui/Control\"},urlArgs:{\"ui/ImgZoomHover\":\"20141104\",\"ui/ImgZoomHover1\":\"20141104\",\"ui/ImgZoomHover2\":\"20141104\",\"ui/ImgZoomHover3\":\"20141104\"}})}(),bds.amd.addPaths({\"voice/js/voice\":\"https://ss1.bdstatic.com/5eN1bjq8AAUYm2zgoY3K/r/www/cache/static/protocol/https/voice/js/voice_1672ed3\",\"plugins/swfobject\":\"https://ss1.bdstatic.com/5eN1bjq8AAUYm2zgoY3K/r/www/cache/static/protocol/https/plugins/swfobject_0178953\",\"soutu/js/tu\":\"https://ss1.bdstatic.com/5eN1bjq8AAUYm2zgoY3K/r/www/cache/static/protocol/https/soutu/js/tu_329aca4\"}),bds&&bds.comm&&(bds.comm.did=function(){for(var t=\"\",e=0;32>e;e++)t+=Math.floor(16*Math.random()).toString(16);\nreturn t}(),bds.comm.isAsync=function(){var t=\"onhashchange\"in window,e=\"onpopstate\"in window;return(e||t)&&1!=Cookie.get(\"ISSW\")&&!window.__disable_preload}());try{window.MutationObserver=window.WebKitMutationObserver=window.MozMutationObserver=null}catch(e){}jQuery&&jQuery.extend({stringify:function(t){function e(t){return/[\"\\\\\\x00-\\x1f]/.test(t)&&(t=t.replace(/[\"\\\\\\x00-\\x1f]/g,function(t){var e=i[t];return e?e:(e=t.charCodeAt(),\"\\\\u00\"+Math.floor(e/16).toString(16)+(e%16).toString(16))})),'\"'+t+'\"'\n}function n(t){var e,n,o,i=[\"[\"],r=t.length;for(n=0;r>n;n++)switch(o=t[n],typeof o){case\"undefined\":case\"function\":case\"unknown\":break;default:e&&i.push(\",\"),i.push($.stringify(o)),e=1}return i.push(\"]\"),i.join(\"\")}if(\"JSON\"in window)return JSON.stringify(t);var o=typeof t;if(\"object\"!=o||null===t)return\"string\"==o&&(t='\"'+t+'\"'),String(t);var i={\"\\b\":\"\\\\b\",\"\t\":\"\\\\t\",\"\\n\":\"\\\\n\",\"\\f\":\"\\\\f\",\"\\r\":\"\\\\r\",'\"':'\\\\\"',\"\\\\\":\"\\\\\\\\\"};switch(typeof t){case\"undefined\":return\"undefined\";case\"number\":return isFinite(t)?String(t):\"null\";\ncase\"string\":return e(t);case\"boolean\":return String(t);default:if(null===t)return\"null\";if(\"[object Array]\"===Object.prototype.toString.call(t))return n(t);var r,s,a=[\"{\"],c=$.stringify;for(var d in t)if(Object.prototype.hasOwnProperty.call(t,d))switch(s=t[d],typeof s){case\"undefined\":case\"unknown\":case\"function\":break;default:r&&a.push(\",\"),r=1,a.push(c(d)+\":\"+c(s))}return a.push(\"}\"),a.join(\"\")}},format:function(t,e){t=String(t);var n=Array.prototype.slice.call(arguments,1),o=Object.prototype.toString;\nreturn n.length?(n=1==n.length&&null!==e&&/\\[object Array\\]|\\[object Object\\]/.test(o.call(e))?e:n,t.replace(/#\\{(.+?)\\}/g,function(t,e){var i=n[e];return\"[object Function]\"==o.call(i)&&(i=i(e)),\"undefined\"==typeof i?\"\":i})):t},subByte:function(t,e,n){var o=[],i=t.split(\"\");n=n||\"…\";for(var r=0,s=i.length;s>r;r++)i[r].charCodeAt(0)>255&&o.push(\"*\"),o.push(i[r]);return e&&e>0&&o.length>e?i=o.join(\"\").substring(0,e-1).replace(/\\*/g,\"\")+n:t},getByteLength:function(t){for(var e=[],n=t.split(\"\"),o=0,i=n.length;i>o;o++)n[o].charCodeAt(0)>255&&e.push(\"*\"),e.push(n[o]);\nreturn e.length},_isValidKey:function(t){return new RegExp('^[^\\\\x00-\\\\x20\\\\x7f\\\\(\\\\)<>@,;:\\\\\\\\\\\\\"\\\\[\\\\]\\\\?=\\\\{\\\\}\\\\/\\\\u0080-\\\\uffff]+$').test(t)},setCookie:function(t,e,n){if(e=encodeURIComponent(e),jQuery._isValidKey(t)){n=n||{};var o=n.expires;\"number\"==typeof n.expires&&(o=new Date,o.setTime(o.getTime()+n.expires)),document.cookie=t+\"=\"+e+(n.path?\"; path=\"+n.path:\"\")+(o?\"; expires=\"+o.toGMTString():\"\")+(n.domain?\"; domain=\"+n.domain:\"\")+(n.secure?\"; secure\":\"\")}},getCookie:function(t){var e=\"\";\nif(jQuery._isValidKey(t)){var n=new RegExp(\"(^| )\"+t+\"=([^;]*)(;|$)\"),o=n.exec(document.cookie);if(o&&(e=o[2]||null,\"string\"==typeof e))return e=decodeURIComponent(e)}return null},removeCookie:function(t,e){e=e||{},e.expires=new Date(0),jQuery.setCookie(t,\"\",e)},limitWd:function(t,e){if(\"\"===t)return\"\";t+=\"\";var n=t.split(\"\"),o=n.length,i=0,r=e||255;if(o<=parseInt(r/2))return t;for(var s=0;o>s;s++){if(i+=n[s].charCodeAt(0)>255?2:1,i===r)return n=t.substring(0,s+1);if(i>r)return n=t.substring(0,s)\n}return t}}),$(window).on(\"resize\",function(){\"pageState\"in window&&0!=pageState&&(bds.util.setContainerWidth(),bds.event.trigger(\"se.window_resize\"))}),bds.util.addStyle=function(t){if(isIE){var e=document.createStyleSheet();e.cssText=t}else{var n=document.createElement(\"style\");n.type=\"text/css\",n.appendChild(document.createTextNode(t)),document.getElementsByTagName(\"HEAD\")[0].appendChild(n)}},bds.util.getContentRightHeight=function(){return $(\"#content_right\").get(0)?$(\"#content_right\").get(0).offsetHeight:0\n},bds.util.getContentLeftHeight=function(){return $(\"#content_left\").get(0)?$(\"#content_left\").get(0).offsetHeight:0},window.A||(window.bds=window.bds||{},bds.util=bds.util||{},bds.util.getWinWidth=function(){return window.document.documentElement.clientWidth},bds.util.setContainerWidth=function(){var t=G(\"container\"),e=G(\"wrapper\"),n=function(t,e){e.className=e.className.replace(t,\"\")},o=function(t,e){e.className=(e.className+\" \"+t).replace(/^\\s+/g,\"\")},i=function(t,e){return t.test(e.className)\n};bds.util.getWinWidth()<1207?(t&&(n(/\\bcontainer_l\\b/g,t),i(/\\bcontainer_s\\b/,t)||o(\"container_s\",t)),e&&(n(/\\bwrapper_l\\b/g,e),i(/\\bwrapper_s\\b/,e)||o(\"wrapper_s\",e)),bds.comm.containerSize=\"s\"):(t&&(n(/\\bcontainer_s\\b/g,t),i(/\\bcontainer_l\\b/,t)||o(\"container_l\",t)),e&&(n(/\\bwrapper_s\\b/g,e),i(/\\bwrapper_l\\b/,e)||o(\"wrapper_l\",e)),bds.comm.containerSize=\"l\")},function(){var t=[],e=!1,n=function(t,e){try{t.call(e)}catch(n){}},o=function(){this.ids=[],this.has=!0,this.list=[],this.logs=[],this.loadTimes=[],this.groupData=[],this.mergeFns=[],this._currentContainer=null\n};window.A=bds.aladdin={},n(o,window.A),bds.ready=function(o){\"function\"==typeof o&&(e?n(o):t.push(o))},bds.doReady=function(){for(e=!0;t.length;)n(t.shift())},bds.clearReady=function(){e=!1,t=[]},A.__reset=o;var i=function(){var t=document.getElementsByTagName(\"script\");return function(){var e=t[t.length-1];window.currentScriptElem&&(e=window.currentScriptElem);for(var n=e;n;){if(n.className&&/(?:^|\\s)result(?:-op)?(?:$|\\s)/.test(n.className)&&(tplname=n.getAttribute(\"tpl\")))return n;n=n.parentNode\n}}}(),r=function(t,e,n){var o;if(t.initIndex?o=A.groupData[t.initIndex-1]:(o={container:t,data:{},handlers:[]},t.initIndex=A.groupData.length+1,A.groupData.push(o)),\"function\"==typeof e)o.handlers.push(e);else if(\"object\"==typeof e)for(var i in e)e.hasOwnProperty(i)&&(o.data[i]=e[i]);else o.data[e]=n};A.init=A.setup=function(t,e){if(void 0!==t&&null!==t){var n=A._currentContainer||i();n&&r(n,t,e)}},A.merge=function(t,e){A.mergeFns.push({tplName:t,fn:e})}}()),A.uiPrefix=\"//www.baidu.com/cache/aladdin/ui/\",function(){var t=window.bds.aladdin,e=[],n={},o=0,i=function(t,e){try{t.call(e)\n}catch(n){}},r=function(t){t.ajaxId=++o,n[t.ajaxId]=t},s=function(t){delete n[t.ajaxId]},a=function(t){return t.ajaxId?n.hasOwnProperty(t.ajaxId):!1},c=function(t){var e={};if(t)try{var n=new Function(\"return \"+t)();n&&(e=n)}catch(o){}return e},d=function(){for(var t,e,n=$(\".result-op\").get().concat($(\".result\").get()),o={},i=0;e=n[i];i++)(t=e.getAttribute(\"tpl\"))&&(o[t]?o[t].push(e):o[t]=[e]);return o},l=[],u=[];t.addDisposeHandler=function(t){u.push(t)},t.dispose=function(){for(;l.length;){var t=l.shift();\ni(t.fn,t.obj)}for(var e=u,n=0;n1)if(s)t(a.shift(),function(){a.length>0&&t(a,s)\n});else for(;a.length;)t(a.shift());else{if(r=a[0],\"jquery\"===r&&window.jQuery)return!i.ui.jquery&&(i.ui.jquery=window.jQuery),void(s&&s());var c=r.replace(/\\./g,\"/\"),d=r.replace(/^[\\s\\S]*\\./,\"\"),l=i.uiPrefix+c+\"/\"+d;0==c.search(\"style/\")?e(l+\".css\",s):(l+=\".js\",m.hasOwnProperty(r)?\"function\"==typeof m[r]?l=m[r](r,l):\"string\"==typeof m[r]&&(l=m[r]):m.hasOwnProperty(\"*\")&&(l=m[\"*\"](r,l)),s?o(l,s):n(l))}}function e(t,e){if(e=e||u,t in r)return void e();var n=c.createElement(\"link\");n.rel=\"stylesheet\",n.type=\"text/css\",n.href=t,n.setAttribute(\"data-for\",\"A.ui\"),d.appendChild(n),r[t]=1,e()\n}function n(t){return l?void o(t,u):void(t in r||(c.write(''),r[t]=1))}function o(t,e){if(e=e||u,t in r)return void e();if(t in s)return void a[t].push(e);s[t]=1;var n=a[t]=[e],o=c.createElement(\"script\");o.type=\"text/javascript\",o.charset=\"gb2312\",o.onload=o.onreadystatechange=function(){if(!this.readyState||\"loaded\"===this.readyState||\"complete\"===this.readyState){for(;n.length;)n.shift()();delete s[t],r[t]=1,o.onload=o.onreadystatechange=null\n}},o.src=t,o.setAttribute(\"data-for\",\"A.ui\"),d.insertBefore(o,d.firstChild)}var i=window.A,r={},s={},a={},c=document,d=c.getElementsByTagName(\"head\")[0],l=!1,u=(i.baidu,function(){}),m={\"*\":function(t,e){return e+\"?v=20170208\"},scrollbarv:function(t,e){return e+\"?v=20170208\"},likeshare4:function(t,e){return e+\"?v=20170208\"},mboxsingleton:function(t,e){return e+\"?v=20170208\"},sms:function(t,e){return e+\"?v=20170208\"},tab:function(t,e){return e+\"?v=20170208\"},tabs:function(t,e){return e+\"?v=20170208\"\n},musicplayer:function(t,e){return e+\"?v=20170208\"},slider:function(t,e){return e+\"?v=20170208\"},suggestion:function(t,e){return e+\"?v=20170208\"},tabs5:function(t,e){return e+\"?v=20170208\"},tabx:function(t,e){return e+\"?v=20170208\"},dropdown1:function(t,e){return e+\"?v=20170208\"},dropdown21:function(t,e){return e+\"?v=20170208\"},advert:function(t,e){return e+\"?v=20170208\"},advert2:function(t,e){return e+\"?v=20170208\"},honourCard:function(t,e){return e+\"?v=20170208\"},honourCard3:function(t,e){return e+\"?v=20170208\"\n},honourCard4:function(t,e){return e+\"?v=20170208\"},share:function(t,e){return e+\"?v=20170208\"},qHotCity:function(t,e){return e+\"?v=20170208\"},mapapi:function(t,e){return e+\"?v=20170208\"},qunarfilters:function(t,e){return e+\"?v=20170208\"},renderIframe3:function(t,e){return e+\"?v=20170208\"},share2:function(t,e){return e+\"?v=20170208\"},ALD_feedback:function(t,e){return e+\"?v=20170208\"},addtohome:function(t,e){return e+\"?v=20170208\"},addtohome2:function(t,e){return e+\"?v=20170208\"},gpsApi:function(t,e){return e+\"?v=20170208\"\n},simGps:function(t,e){return e+\"?v=20170208\"}};$(document).ready(function(){l=!0}),i.addDisposeHandler({obj:i,fn:function(){for(var t in a)if(a.hasOwnProperty(t))for(var e=a[t];e.length;)e.pop()}}),t.cache=r,i.uicss=function(t){e(i.uiPrefix+t)},i.uijs=function(t,e){o(i.uiPrefix+t,e)},i.uijsPathMap=function(t){$.extend(m,t)},i.use=t,i.ui=i.ui||{},i.addCssText=function(t){var e=\"opui-style-tag-id\",n=\"data-for\",o=\"A.ui\",i=document.getElementById(e);i||(i=document.createElement(\"style\"),i.setAttribute(\"type\",\"text/css\"),i.setAttribute(n,o),i.id=e,document.getElementsByTagName(\"head\")[0].appendChild(i));\ntry{var r=document.createTextNode(t);i.appendChild(r)}catch(s){i.styleSheet&&(i.styleSheet.cssText+=t)}},$(window).on(\"swap_end\",function(){var t=/MSIE\\s?6/.test(window.navigator.userAgent),e=function(t,e,n){$(t).each(function(t,o){var i=$(o),r=new Image,s=i.attr(\"src\");r.onload=function(){var t=e,o=n,s=this.width,a=this.height,c=s/a/(t/o);c>1?(s=s>t?t:\"auto\",a=\"auto\"):(a=a>o?o:\"auto\",s=\"auto\"),i.css({height:a,width:s}),r.onload=null,r=null},r.src=s})};t&&e(\"img.result-left-img\",98,121),$(\".c-feedback\").bind(\"click\",function(){var t=this;\ni.use(\"ALD_feedback\",function(){var e,n,o=\"right\",r=$(t);r.parents(\"#content_left\").length?(o=\"left\",n=r.parents(\".result-op\"),e=n.attr(\"srcid\")):r.parents(\"#content_right\").length&&(n=r.parents(\"#con-ar\"));var s={query:bds.comm.query,srcid:e,target:n,username:bds.comm.username,flag:o},a=i.ui.ALD_feedback(s);i.addDisposeHandler({obj:a,fn:a.dispose})})})})}(),$(window).on(\"swap_begin\",function(){A.dispose(),A.__reset(),A.__clearDispose()}),$(window).on(\"swap_dom_ready\",function(){bds.ready(A.__runAla),bds.doReady()\n}),bds.event=new function(){function t(t,e){if(\"function\"==typeof e||e instanceof Function){var n=i(t);r[n.name]=r[n.name]||[],r[n.name].push({prod:n.prod,callback:e})}}function e(t,e){for(var n=i(t),s=r[n.name]||[],a=0;ac;c++){var l=s[c];try{o(l.prod,n.prod)&&l.callback.call(this,a)}catch(u){}}}function o(t,e){return new RegExp(\"^\"+t.replace(/\\./g,\"\\\\.\").replace(/\\*/g,\".+\")+\"$\").test(e)\n}function i(t){var e=t.match(/(.+)\\.(.+)/);return e&&e[2]?{prod:e[1],name:e[2]}:{}}var r={};this.on=t,this.off=e,this.trigger=n,this.events=r},bds.se.link=function(){function t(t,e){var n=\"/s?\",o={tn:bds.comm.tn},i=\"wd=\"+encodeURIComponent(t);e&&(o=$.extend(o,e));for(var r in o)o.hasOwnProperty(r)&&(i+=\"&\"+r+\"=\"+encodeURIComponent(o[r]));return n+i}return{getSearchUrl:t}}(),!function(A){function clickDebug(){}function bindP5(){var item,index=(bds.comm.pageNum-1)*bds.comm.pageSize+1,leftItems=contentLeft&&contentLeft.children||[],rightItems=contentRight&&contentRight.children||[],topItems=contentTop&&contentTop.children||[],isResult=function(t){return 1==t.nodeType&&t.className&&/\\bresult(\\-op)?\\b/.test(t.className)\n},isFrame=function(t){return 1==t.nodeType&&t.className&&/\\bc\\-frame\\b/.test(t.className)},setClickData=function(wrap,data){var sData=wrap.getAttribute(\"data-click\")||\"{}\";try{var oData=eval(\"(\"+sData+\")\");sData=$.stringify($.extend(oData,data)),wrap.setAttribute(\"data-click\",sData)}catch(e){clickDebug(e)}},bindP5ClickData=function(t){for(var e=0,n=t.length;n>e;e++)if(item=t[e],isResult(item))setClickData(item,{p5:index++});else if(isFrame(item))try{for(var o=item.children[0].children,i=0,r=o.length;r>i;i++){var s=o[i];\nisResult(s)&&setClickData(s,{p5:index++})}}catch(a){clickDebug(a)}index=(bds.comm.pageNum-1)*bds.comm.pageSize+1};bindP5ClickData(leftItems),bindP5ClickData(rightItems),bindP5ClickData(topItems)}function getXPath(t,e,n){if(n=n||[],e=e||document,t===e)return n;if(t.parentNode!==e&&(n=getXPath(t.parentNode,e,n)),t.previousSibling){var o=1,i=t.previousSibling;do 1==i.nodeType&&i.nodeName==t.nodeName&&o++,i=i.previousSibling;while(i)}return 1==t.nodeType&&n.push(t.nodeName.toLowerCase()+(o>1?o:\"\")),n\n}function bindLogEvent(){$body=$(\"body\"),$body.on(\"mousedown\",function(t){var t=window.event||t,e=t.srcElement||t.target,n=$(e);try{for(var o,i,r=n;r.length&&!(r.hasClass(\"result\")||r.hasClass(\"result-op\")||r.hasClass(\"xpath-log\"));)r=r.parent();if(!r.length)return;r.hasClass(\"result-op\")?o=\"alop\":r.hasClass(\"result\")&&(o=\"as\"),i=r.get(0);var s=getXPath(e,i);check(s,e,i)&&log(s,e,i,o)}catch(t){clickDebug(t)}})}function getType(t,e,n){for(var o=e,i=LOG_CLASS,r=i.length,s=C_LOG_CLASS,a=s.length,c=t.join(\" \"),d=0;o!==n;){for(d=0;r>d;d++)if($(o).hasClass(\"OP_LOG_\"+i[d]))return i[d].toLowerCase();\nfor(d=0;a>d;d++)if($(o).hasClass(\"c-\"+s[d]))return s[d];o=o.parentNode}return/\\bh3\\d*\\b/.test(c)?\"title\":/\\ba\\d*\\b/.test(c)?/\\bimg\\d*\\b/.test(c)?\"img\":\"link\":/\\b(input|select|button|textarea|datalist)\\d*\\b/.test(c)?\"input\":/\\blabel\\d*\\b/.test(c)&&e.getElementsByTagName(\"input\").length>0?\"input\":\"\"}function check(t,e,n){return A.LOGTOOL?(A.LOGTOOL.call(e,t,e,n),!1):!0}function log(t,e,n,o){if(null==e.getAttribute(\"data-nolog\")){var i=getType(t,e,n);if(!i)return!1;if(\"title\"==i&&!/\\ba\\d*\\b/.test(t))return!1;\nvar r=\"http://nourl.ubs.baidu.com\",s=n.getAttribute(\"mu\")||r;if(s==r){var a=n.getElementsByTagName(\"h3\");if(a&&a[0]){var c=a[0].getElementsByTagName(\"a\");s=c&&c[0]?c[0].href:s}}var d,l=t.length,u=e,m=n.getAttribute(\"srcid\"),p=\"\",f=1==e.nodeType?e.tagName.toLowerCase():\"\";if(\"input\"==i)if(/input|textarea/.test(f))p=e.value,e.type&&\"password\"==e.type.toLowerCase()&&(p=\"\");else if(/select|datalist/.test(f)){if(e.children.length>0){var h=e.selectedIndex||0;p=e.children[h>-1?h:0].innerHTML}}else p=e.innerHTML||e.value||\"\";\nelse if(\"img\"==f&&(p=e.title),!p)for(;l>0;){if(l--,/^a\\d*\\b/.test(t[l])){if(d=u.href,p=u.innerHTML,null!=u.getAttribute(\"data-nolog\"))return;break}if(u.className&&/OP_LOG_/.test(u.className)){p=u.innerHTML;break}u=u.parentNode}p=$.trim(p),d&&\"#\"!==d.slice(-1)&&/^http/.test(d)||(d=s);var g={rsv_xpath:t.join(\"-\")+\"(\"+i+\")\",title:p,url:d,rsv_height:n.offsetHeight,rsv_width:n.offsetWidth,rsv_tpl:n.getAttribute(\"tpl\")},b={url:1,title:1};n.id&&n.id.match(/^\\d+$/)&&(g.p1=n.id),m&&(g.rsv_srcid=m);var v,w,_;\nu=e;do{if(null!=u.getAttribute(\"data-nolog\"))return;if(v=u.getAttribute(\"data-click\"))try{v=new Function(\"return \"+v)();for(w in v)\"fm\"==w&&null===v.fm&&(_=!0),v.hasOwnProperty(w)&&(\"undefined\"==typeof g[w]||b[w])&&(g[w]=v[w])}catch(y){clickDebug(y)}u=u.parentNode}while(u&&u!==n.parentNode);for(var x in g)null===g[x]&&delete g[x];if(\"title\"==i?\"mu\"in g&&delete g.mu:g.mu||(g.mu=s),_)\"fm\"in g&&delete g.fm;else if(\"input\"==i&&(g.fm=\"beha\",g.url=r),g.fm||(g.fm=o),!g.fm)return;window.c(g)}}var baidu=window.baidu,LOG_CLASS=[\"TITLE\",\"LINK\",\"IMG\",\"BTN\",\"INPUT\",\"OTHERS\"],C_LOG_CLASS=[\"btn\"],contentLeft,contentRight,contentTop;\nwindow.initResultClickLog=function(){if(contentLeft=$(\"#content_left\").get(0),contentRight=$(\"#con-ar\").get(0),contentTop=$(\"#con-at\").get(0),A.has){var t,e=$(\".result-op\").get();$.each(e,function(e,n){(t=n.getAttribute(\"srcid\"))&&A.ids.push([n.id,t])})}bindP5()},$(document).ready(function(){bindLogEvent()})}(window.bds.aladdin);for(ai in al_arr)al_arr[ai]();$(document).ready(function(){var t;$(document).on(\"click\",\".t>a,.op-se-listen-recommend\",function(e){e=window.event||e;var n=$(\"#wrapper_wrapper\"),o=$(this).closest(\".c-container\"),i=o.length?o.find(\".c-recommend\").eq(0):[],r=o.length?o.find(\".wnor-fanli-wrap\"):[];\n!e.ctrlKey&&(i.length&&\"none\"===i.css(\"display\")||r.length&&\"none\"===r.css(\"display\"))&&(t=setTimeout(function(){n.find(\".c-recommend\").hide(),i.show(),n.find(\".wnor-fanli-wrap\").hide(),r.show()},150))}),$(window).on(\"swap_begin\",function(){this.clearTimeout(t)})}),window.onunload=function(){},bds.se.openime=function(t){window.bdime?openIme.set(\"py\",!0):$.ajax({cache:!0,dataType:\"script\",url:\"https://ss1.bdstatic.com/5eN1bjq8AAUYm2zgoY3K/r/www/cache/static/protocol/https/plugins/ime_c5abb66.js\",success:function(){t&&openIme.set(\"py\",!0)\n}})},function(){/\\bbdime=[12]/.test(document.cookie)||$(window).one(\"swap_end\",function(){})}(),bds&&bds.comm&&!bds.comm.containerSize&&(bds.comm.containerSize=\"s\"),bds.util.setContainerWidth=function(){var t=$(\"#container\"),e=$(\"#wrapper\"),n=bds.util.getWinWidth(),o=bds.comm.containerSize;if(1217>n)t.removeClass(\"container_l container_xl\").addClass(\"container_s\"),e.removeClass(\"wrapper_l\").addClass(\"wrapper_s\"),bds.comm.containerSize=\"s\";else{if(!(n>=1217))return;t.removeClass(\"container_s container_xl\").addClass(\"container_l\"),e.removeClass(\"wrapper_s\").addClass(\"wrapper_l\"),bds.comm.containerSize=\"l\"\n}o!=bds.comm.containerSize&&$(window).trigger(\"container_resize\",bds.comm.containerSize)},bds.util.setFootStyle=function(){this.init(),this.bindEvent()},$.extend(bds.util.setFootStyle.prototype,{ie6:bds.comm.upn&&\"msie\"===bds.comm.upn.browser&&6==bds.comm.upn.ie,init:function(){var t=$(\"#foot\");if(t.addClass(\"foot_fixed_bottom\"),this.ie6){var e=$(window).height()+$(window).scrollTop()-t.outerHeight(!0);t.css(\"top\",e+\"px\")}},setFixedIe6:function(){var t=$(\"#foot\"),e=$(window).height()+$(window).scrollTop()-t.outerHeight(!0);\nt.css(\"top\",e+\"px\")},bindEvent:function(){var t=this;t.ie6&&$(window).on(\"resize.setFootStyle, scroll.setFootStyle\",function(){t.setFixedIe6()})}});var bds=bds||{};bds.se=bds.se||{},bds.se.tip=bds.se.tip||{},bds.comm.tipZIndex=220,bds.comm.tips=[],bds.se.tip=function(t){this.init=function(){this.op={target:t.target||{},mode:t.mode||\"over\",title:t.title||null,content:t.content||null,uncontrolled:t.uncontrolled?!0:!1,arrow:{has:1,offset:10,r:!1,c:!1},close:t.close||0,align:t.align||\"left\",offset:{x:10,y:20},arrowSize:16},t.arrow&&(this.op.arrow.has=0==t.arrow.has?0:1,this.op.arrow.offset=t.arrow.offset>=0?t.arrow.offset:10,this.op.arrow.r=t.arrow.r,this.op.arrow.c=t.arrow.c),t.offset&&(this.op.offset.x=t.offset.x||0==t.offset.x?t.offset.x:10,this.op.offset.y=t.offset.y||0==t.offset.y?t.offset.y:20),this.ext=t.ext||{},this.dom=$(\"
                \",{\"class\":\"c-tip-con\"}),this.visible=!1,this.rendered=!1,this.isAuto=\"auto\"===this.op.align?!0:!1,this.bindEvent()\n},this.render=function(){this.op.close&&this.enableCloseIcon(),this.op.title&&this.setTitle(this.op.title),this.op.content&&this.setContent(this.op.content),this.op.arrow.has&&this.enableArrow(),$(\"#c-tips-container\").append(this.dom)},this.bindEvent=function(){if(this.delay={overIcon:null,outIcon:null,overDom:null,outDom:null},\"over\"==this.op.mode){var t=this;$(t.op.target).on(\"mouseenter\",function(){window.clearTimeout(t.delay.outIcon),window.clearTimeout(t.delay.outDom),t.delay.overIcon=setTimeout(function(){t.show()\n},200)}),t.dom.on(\"mouseenter\",function(){window.clearTimeout(t.delay.outIcon),window.clearTimeout(t.delay.outDom),t.delay.overDom=setTimeout(function(){t.show()},200)}),$(t.op.target).on(\"mouseleave\",function(){window.clearTimeout(t.delay.overIcon),window.clearTimeout(t.delay.overDom),t.delay.outIcon=setTimeout(function(){t.hide()},200)}),t.dom.on(\"mouseleave\",function(){window.clearTimeout(t.delay.overIcon),window.clearTimeout(t.delay.overDom),t.delay.outIcon=setTimeout(function(){t.hide()},200)\n})}else if(\"none\"==this.op.mode){var t=this;t.show()}},this.enableArrow=function(){if(this.op.arrow.r)var t=$(\"
                \",{\"class\":\"c-tip-arrow\"}).html(\"\").appendTo(this.dom);else if(this.op.arrow.c)var t=$(\"
                \",{\"class\":\"c-tip-arrow\"}).html(\"\").appendTo(this.dom);else var t=$(\"
                \",{\"class\":\"c-tip-arrow\"}).html(\"\").appendTo(this.dom);this.arrow=t},this.enableCloseIcon=function(){var t=this,e=$(\"
                \",{\"class\":\"c-tip-close\"}).html(\"\").appendTo(this.dom).click(function(){t.hide()\n});this.close=e},this.setTitle=function(t){if(t.nodeType)var e=$(\"

                \",{\"class\":\"c-tip-title\"}).append(t).appendTo(this.dom);else var e=$(\"

                \",{\"class\":\"c-tip-title\"}).html(t).appendTo(this.dom);this.title=e},this.setContent=function(t){var e=$(\"
                \").html(t).appendTo(this.dom);this.content=e},this.setArrow=function(t){if(t&&t.offset>=0&&(this.op.arrow.offset=t.offset),this.op.arrow.has&&this.arrow)switch(this.op.align){case\"left\":this.arrow.css({left:this.op.arrow.offset+\"px\"});break;case\"right\":this.arrow.css({right:this.op.arrow.offset+16+\"px\"})\n}},this.setOffset=function(t){switch(t&&(this.op.offset.x=t.x||0==t.x?t.x:this.op.offset.x,this.op.offset.y=t.y||0==t.y?t.y:this.op.offset.y),this.op.align){case\"left\":var e=$(this.getTarget()).offset();this.getDom().css({top:e.top+this.op.offset.y+\"px\",left:e.left-this.op.offset.x+\"px\"});break;case\"right\":var e=$(this.getTarget()).offset();this.getDom().css({top:e.top+this.op.offset.y+\"px\",left:e.left+this.op.offset.x+$(this.getTarget()).width()-this.getDom().width()+\"px\"})}},this.autoOffset=function(){var t,e={w:this.dom.outerWidth(),h:this.dom.outerHeight()},n=$(this.getTarget()),o=n.offset(),i={w:n.outerWidth(),h:n.outerHeight()},r=$(window),s=r.scrollTop(),a={w:r.width(),h:r.height()},c={left:0,top:0},d={};\na.h+s-i.h-o.top>e.h?(c.top=i.h+o.top+this.op.arrowSize/2,this.arrow&&this.arrow.removeClass(\"c-tip-arrow-down\")):o.top-s>e.h?(c.top=o.top-e.h-this.op.arrowSize/2,this.arrow&&this.arrow.addClass(\"c-tip-arrow-down\")):(c.top=i.h+o.top+this.op.arrowSize/2,this.arrow&&this.arrow.removeClass(\"c-tip-arrow-down\")),t=o.left+i.w/2-this.op.arrow.offset-this.op.arrowSize/2,c.left=t,c.left>0&&c.left+e.w>a.w?(c.left=o.left+i.w/2-e.w+this.op.arrow.offset+this.op.arrowSize/2,d.right=this.op.arrow.offset+this.op.arrowSize,d.left=\"auto\",c.left<0&&(c.left=t,d.left=this.op.arrow.offset,d.right=\"auto\")):(d.left=this.op.arrow.offset,d.right=\"auto\"),this.dom.css(c),this.arrow&&this.arrow.css(d)\n},this.enable=function(){},this.disable=function(){},this.destroy=function(){},this.show=function(){this.visible||(this.onShow(),this.rendered||(bds.comm.tips.push(this),this.render(),this.rendered=!0),this.isAuto?this.autoOffset():(this.setOffset(),this.setArrow()),this.dom.css({\"z-index\":bds.comm.tipZIndex}),bds.comm.tipZIndex++,this.dom.css({display:\"block\"}),this.visible=!0)},this.hide=function(){this.visible&&(this.dom.css({display:\"none\"}),this.onHide(),this.visible=!1)},this.onShow=t.onShow||function(){},this.onHide=t.onHide||function(){},this.getTarget=function(){return this.op.target\n},this.getDom=function(){return this.dom},this.init()},bds.event.trigger(\"se.api_tip_ready\"),$(document).mousedown(function(t){t=t||window.event;for(var e=t.target||t.srcElement;e&&e.tagName&&e!=document.body&&\"html\"!=e.tagName.toLowerCase()&&\"c-tip-con\"!=e.className;)e=e.parentNode;e&&\"c-tip-con\"!=e.className&&$(bds.comm.tips).each(function(){this.op.uncontrolled||this.op.close&&this.hide()})});var sethfPos=sethfPos||0;!function(){function t(t){if(t){var e=t.parentNode;e&&(e.style.marginBottom=\"20px\",e.style.marginTop=\"2px\")\n}}var e=\"//www.baidu.com/\",n=-1!=navigator.userAgent.indexOf(\"MSIE\")&&!window.opera,o=(100*Math.random(),\"百度一下,你就知道\"),i=\"\";if(window.fa=function(t){try{window.sidebar?window.sidebar.addPanel(o,e,\"\"):window.opera&&window.print?(t.setAttribute(\"rel\",\"sidebar\"),t.setAttribute(\"href\",e),t.setAttribute(\"title\",o),t.click()):window.external.AddFavorite(e,o)}catch(n){}},n)try{var r=/se /gi.test(navigator.userAgent),s=/AppleWebKit/gi.test(navigator.userAgent)&&/theworld/gi.test(navigator.userAgent),a=/theworld/gi.test(navigator.userAgent),c=/360se/gi.test(navigator.userAgent),d=/360chrome/gi.test(navigator.userAgent),l=/greenbrowser/gi.test(navigator.userAgent),u=/qqbrowser/gi.test(navigator.userAgent),m=/tencenttraveler/gi.test(navigator.userAgent),p=/maxthon/gi.test(navigator.userAgent),f=/krbrowser/gi.test(navigator.userAgent),h=!1;\ntry{h=+external.twGetVersion(external.twGetSecurityID(window)).replace(/\\./g,\"\")>1013}catch(g){}if(r||h||s||a||c||d||l||u||m||p||f){var b=document.getElementById(sethfPos?\"set_f\":\"setf\");b&&sethfPos&&(t(b),i=\"favorites\")}else{var v=document.getElementById(sethfPos?\"set_f\":\"setf\");v&&sethfPos&&(t(v),i=\"home\"),v.setAttribute(\"onClick\",\"h(this)\"),v.setAttribute(\"onmousedown\",\"return ns_c({'fm':'behs','tab':'homepage','pos':0})\"),v.href=\"/\",v.target=\"_self\",v.id=\"seth\"}}catch(g){}else{var b=document.getElementById(sethfPos?\"set_f\":\"setf\");\nsethfPos&&(t(b),i=\"favorites\")}i&&sethfPos&&ns_c({fm:\"sethf_show\",tab:i})}(),bds.se.loginCallbackFunc=null,bds.se.login=function(){var t=\"\",e=!1,n=\"\",o=function(t){var e=t||bds.comm.user;e&&$(\"#lb\").replaceWith(''+escapeHTML(bds.comm.username)+'')},i=function(o){e?(bds.se.passv3.setSubpro(t),bds.se.passv3.setMakeText(n),bds.se.loginCallbackFunc=o||function(){window.document.location.reload(!0)},bds.se.passv3.show()):$.getScript(location.protocol+\"//passport.baidu.com/passApi/js/uni_login_wrapper.js?cdnversion=\"+(new Date).getTime(),function(){initPassV3(),e=!0,bds.se.passv3.setSubpro(t),bds.se.passv3.setMakeText(n),bds.se.loginCallbackFunc=o||function(){window.document.location.reload(!0)\n},bds.se.passv3.show()})},r=function(t){if(bds.comm){bds.comm.user=t,bds.comm.username=t,window.bdUser=t,bds.se.passv3.hide(),bds.se.loginCallbackFunc.call(window,1,t);for(var e=0;e\",{\"class\":\"c-tip-menu\"}),toolsList=$(\"
                  \"),toolsFavo=$(\"
                • \"),toolsFavoLink=$(\"\").html(\"收藏\");toolsFavoLink.on(\"mousedown\",function(){bds.se.tool.favo(ops,item.getAttribute(\"id\")),ns_c({fm:\"tools\",tab:\"favo\"})}),toolsFavoLink.on(\"mouseover\",function(){$(this).css(\"background-color\",\"#ebebeb\")}),toolsFavoLink.on(\"mouseout\",function(){$(this).css(\"background-color\",\"#fff\")}),toolsFavo.append(toolsFavoLink),toolsList.append(toolsFavo);\nvar toolsShare=$(\"
                • \"),toolsShareLink=$(\"\").html(\"分享\");toolsShareLink.on(\"mousedown\",function(){bds.se.tool.share(ops,item),ns_c({fm:\"tools\",tab:\"share\"})}),toolsShareLink.on(\"mouseover\",function(){$(this).css(\"background-color\",\"#ebebeb\")}),toolsShareLink.on(\"mouseout\",function(){$(this).css(\"background-color\",\"#fff\")}),toolsShare.append(toolsShareLink),toolsList.append(toolsShare);var fromType;fromType=$(item).parent().find(\".c-pingjia a\").attr(\"data-from\")?$(item).parent().find(\".c-pingjia a\").attr(\"data-from\"):\"ps_pc\";\nvar toolsKoubei=$(\"
                • \").html(\"评价');toolsList.append(toolsKoubei);var officalLogo=$($(item).closest(\".c-container\").find(\"h3.t\").children()[1]),vLogo=$(item).parent().find(\".vstar\"),isOffical=0,vLevel=0;\nofficalLogo&&\"官网\"==officalLogo.html()&&(isOffical=1),vLogo&&vLogo.attr(\"hint-data\")&&(vLevel=$.parseJSON(vLogo.attr(\"hint-data\")).hint[0].vlevel);var toolsReport=$(\"
                • \").html(\"举报');\ntoolsList.append(toolsReport),toolsDom.append(toolsList);var tTip=new bds.se.tip({target:$(\".c-icon\",item)[0],mode:\"none\",align:\"left\",offset:{x:33},arrow:{has:1,offset:30},content:toolsDom,ext:{category:\"tools\"}});tTip.onShow=function(){ns_c({fm:\"tools\",tab:\"show\"})}},this.init()},bds.se.tool.share=function(t,e){this.op=t||{},this.init=function(t,e){$.getScript(bds.comm.host.share,function(){$(bds.comm.tips).each(function(){this.op.uncontrolled||this.hide()});var n=new bds.se.tip({target:$(\".c-icon\",e)[0],mode:\"none\",offset:{x:33},arrow:{has:0},close:1,content:'
                  '}),o=$(\".c-tools-share\",n.dom.get(0))[0];\n__bdshare.render({boxEle:o,url:t.url,txt:t.title+\" -- 分享自百度搜索\"})})}(this.op,e)},bds.se.tool.favo=function(t,e){if(this.op=t||{},this.init=function(t,e){if(t){var n=document.createElement(\"script\"),o=bds.comm.host.bfe,i=bds.comm.host.favo;n.src=o+\"?url=\"+encodeURIComponent(t.url)+\"&jump=\"+encodeURIComponent(i+\"/myfavorite/set?irt=1&t=\"+encodeURIComponent(t.title)+\"&id=\"+encodeURIComponent(e)+\"&c=bds.se.tool.favo.succ\")+\"&key=url\",document.body.appendChild(n)}},bds.comm.user)this.init(this.op,e);else if(bds.se.login&&bds.se.login.open){var n=this;\nbds.se.login.open(function(t){1==t&&n.init(n.op,e)})}},bds.se.tool.favo.succ=function(json){if(json.suc){if(json.status)switch(json.status){case 302:bds.se.login&&bds.se.login.open&&bds.se.login.open(function(stat,user){1==stat&&bds.se.tool.favo(eval(\"(\"+$(\"#\"+json.id)[0].getAttribute(\"data-tools\")+\")\"),json.id)});break;case 5:var succContent='
                  ';succContent+='

                  收藏失败,请稍后再试

                  ',succContent+=\"
                  \"}}else if(json.status){var succContent='
                  ';\nswitch(succContent+='

                  已收藏至:

                  ',succContent+=\"\",succContent+=\"
                  \"}$(bds.comm.tips).each(function(){this.op.uncontrolled||this.hide()}),succContent&&new bds.se.tip({target:$(\".c-icon\",document.getElementById(json.id))[0],offset:{x:33},arrow:{has:0},mode:\"none\",arrow:{has:0},close:1,content:succContent})\n};var bds=bds||{};bds.se=bds.se||{},bds.se.tools=bds.se.tools||{},bds.se.tools=function(){var t=delayHideOnIcon=delayShowOnTip=delayHideOnTip={};$(\"#container\").delegate(\".c-tools\",\"mouseover\",function(){var e=this;window.clearTimeout(delayHideOnIcon),window.clearTimeout(delayHideOnTip),t=setTimeout(function(){var t=1;$(bds.comm.tips).each(function(){return this.getTarget()==$(\".c-icon\",e)[0]?(t=0,this.show(),!1):void 0}),t&&(tools=new bds.se.tool(e))},200)}).delegate(\".c-tools\",\"mouseout\",function(){window.clearTimeout(t),window.clearTimeout(delayShowOnTip);\nvar e=this;delayHideOnIcon=setTimeout(function(){$(bds.comm.tips).each(function(){return this.getTarget()==$(\".c-icon\",e)[0]?(this.hide(),!1):void 0})},200)}),$(\"#c-tips-container\").delegate(\".c-tip-con\",\"mouseover\",function(){var t=this;window.clearTimeout(delayHideOnIcon),window.clearTimeout(delayHideOnTip),delayShowOnTip=setTimeout(function(){$(bds.comm.tips).each(function(){return this.getDom().get(0)==t&&this.ext.category&&\"tools\"==this.ext.category?(this.show(),!1):void 0})},200)}).delegate(\".c-tip-con\",\"mouseout\",function(){window.clearTimeout(t),window.clearTimeout(delayShowOnTip);\nvar e=this;delayHideOnTip=setTimeout(function(){$(bds.comm.tips).each(function(){return this.getDom().get(0)==e&&this.ext.category&&\"tools\"==this.ext.category?(this.hide(),!1):void 0})},200)})};var bds=bds||{};bds.se=bds.se||{},bds.se.slide=function(t){var e,n,o,i,r,s=this,a={},d=[],l=0,u=null;this._default={target:$(\"#lg\"),src:\"\",width:270,height:129,offsetLeft:0,isPad:!1,isRetina:!1,frames:103,animations:[{isAutoPlay:!0,frame_start:1,frame_end:30,delay:0,duration:100,repeats:0,process_before:function(){},event_loop:0,process_after:function(){}},{trigger_type:\"click\",trigger_duration:100,trigger_frame:31,trigger_fn:function(){},frame_start:32,frame_end:103,process_before:function(){},process_after:function(){},delay:0,duration:100,repeats:1,event_loop:0}]},this.timer=[],this.otherTimer=[],this.op=$.extend({},s._default,t),this.init=function(){return s.op.src?(s.createDom(),void(bds.comm.ishome&&s.op.target.length&&s.initAnimate())):void s.createPlayer()\n},this.createPlayer=function(){var t=s.op.target.find(\"map\"),e=t.length?t.find(\"area\").eq(0):\"\",o=s.op.play;o&&(n=$('\").appendTo(s.op.target),e.length?(n.wrap(''),e.attr(\"title\")&&n.attr(\"title\",e.attr(\"title\"))):n.wrap('
                  '),n.on(o.trigger_type,function(){return o.trigger_duration?s.timer.push(window.setTimeout(function(){o.trigger_fn.call(s.op)\n},o.trigger_duration)):o.trigger_fn.call(s.op),!1}))},this.createDom=function(){var t='
                  ',l=s.op.offsetLeft+\"px 0\",u=s.op.target.find(\"map\"),m=u.length?u.find(\"area\").eq(0):\"\",p=m?\"pointer\":p,f=s.op.animations instanceof Array?s.op.animations:[s.op.animations],h=s.op.width,g=s.op.height;d=f,i=h,r=g,t=$.format(t,s.op.src,l,p,s.op.width,s.op.height,s.op.width/2),\"static\"===s.op.target.css(\"position\")&&s.op.target.css({position:\"relative\",width:\"100%\"}),s.op.target.append(t),e=o=s.op.target.find(\"div\").eq(0),s.op.play&&(n=$('\").insertAfter(e),o=n),s.op.isPad&&e.css(\"background-size\",s.op.width*s.op.frames/2+\"px \"+s.op.height+\"px\"),window.devicePixelRatio&&window.devicePixelRatio>1&&s.op.isRetina&&e.css(\"background-size\",s.op.width*s.op.frames+\"px \"+s.op.height+\"px\"),m.length?(e.wrap(''),m.attr(\"title\")&&e.attr(\"title\",m.attr(\"title\"))):e.on(\"mousedown\",function(){c({tab:\"logo_button_click\"})\n});for(var b=0,v=d.length;v>b;b++){var w=d[b],_=w.frame_start;l=-((_-1)*h)+\"px 0\",a[b]={\"background-position\":l,cursor:p}}},this.initAnimate=function(){function t(){e.show(),s.play()}if(!(l>=d.length)){var n=d[l],i=n.isAutoPlay,r=n.trigger_type,a=n.trigger_fn,c=n.trigger_duration,m=n.trigger_frame,p=$(\"#lg area\");p.length&&p.attr(\"onmousedown\")&&e.on(\"mousedown\",function(){return new Function(p.attr(\"onmousedown\"))()}),u=new Image,u.src=s.op.src,e.bind(\"first_animate\",function(){u.complete?t():u.onload=t\n}),i?e.trigger(\"first_animate\"):r&&(s.enablePointer(),o.show().on(r,function(){a&&(m&&s.toPos(m),a.call(s.op),c?s.timer.push(setTimeout(function(){e.trigger(\"first_animate\")},c)):e.trigger(\"first_animate\"))}))}},this.enablePointer=function(){bds.comm.upn&&\"msie\"===bds.comm.upn.browser&&\"6\"===bds.comm.upn.ie?alert(\"pointer\"):e.css(\"cursor\",\"pointer\")},this.disablePointer=function(){e.css(\"cursor\",\"default\")},this.play=function(){if(l>=d.length)return void s.dispose();var t=d[l],e=t.process_before;\ns.dispose(),e&&e.call(s),s.animation()},this.toPos=function(t){var n=-((t-1)*i)+\"px 0\";e.css(\"background-position\",n)},this.animation=function(){var t,n=d[l],r=n.duration,a=n.frame_start,c=n.frame_end,u=n.delay,m=n.repeats,p=n.process_after,f=n.trigger_type,h=a-1>0?a-1:0,g=n.event_loop||0,b=0;if(t=g?d[l]:l+1>=d.length?d[l]:d[l+1]){var v=t.trigger_type,w=t.trigger_fn,_=t.trigger_duration,y=t.trigger_frame;v&&(f&&o.off(f),l=c?(s.dispose(),b++,0!==m&&b>=m?(h=null,b=null,p&&p.call(s),l++,l0?a-1:0,s.timer.push(setTimeout(arguments.callee,r)))):s.timer.push(setTimeout(arguments.callee,r))},u))}()},this.dispose=function(t){t=t||s.timer;for(var e=0,n=t.length;n>e;e++)window.clearTimeout(t[e]);t.length=0},this.disposeOther=function(t){t=t||s.otherTimer;\nfor(var e=0,n=t.length;n>e;e++)window.clearTimeout(t[e]);t.length=0},this.clear=function(){s.dispose(),s.disposeOther(),o.off(\"click\").off(\"hover\")},this.reset=function(t){t=t||0,e.css(a[t])},this.init()};var bds=bds||{};bds.se=bds.se||{},bds.se.banner=function(t,e,n){this.init=function(){n=n||{},this.$dom_panel=$(t),this.hintText=e,this.hintIcon=n.iconClass||\"\",this.downUrl=n.downUrl||\"\",this.hintCookie=n.cookie||\"\",this.showNum=this.hintCookie&&$.getCookie(this.hintCookie)?Number($.getCookie(this.hintCookie)):0,this.nscTab=n.nscTab||\"\",this.ishome=bds.comm&&1==bds.comm.ishome?1:0,this.bannerType=n.bannerType||\"\",t&&e&&this.showNum<5&&!$(\".baiduapp_banner\")[0]&&!$(\".res_top_banner\")[0]&&!$(\".res_top_banner_for_win\")[0]&&this.show()\n},this.show=function(){this.render(),this.showNum+=1,$.setCookie(this.hintCookie,this.showNum,{expires:2592e6}),this.$dom_panel.prepend(this.bannerHtml),1!=this.ishome&&this.headFloat(),this.bindEvent(),ns_c({fm:\"behs\",tab:(1==this.ishome?\"tj_\":\"\")+\"baidu_\"+(this.nscTab?this.nscTab:\"topbanner\")+\"show\"})},this.render=function(){var t=[];t=t.concat(\"WIN\"!==this.bannerType?['
                  ','',\"\"+this.hintText+\"\",this.downUrl?'立即体验':\"\",'',\"
                  \"]:['
                  ','',\"\"+this.hintText+\"\",this.downUrl?'立即体验':\"\",'',\"
                  \"]),this.bannerHtml=t.join(\"\")\n},this.headFloat=function(){var t=$(\"#head\"),e=$(window),n=$(\".res_top_banner\");t.css(\"position\"),$(window).scroll(function(){var o=n.height()||0,i=e.scrollTop();o>=i?t.attr(\"style\",\"position:absolute;\"):t.attr(\"style\",\"top:0px;_top:\"+o+\"px;\")})},this.bindEvent=function(){if(\"WIN\"!==this.bannerType){var t=$(\".res_top_banner\"),e=this;$(\".res_top_banner_download\",t).on(\"mousedown\",function(){e.hintCookie&&$.setCookie(e.hintCookie,5,{expires:2592e6}),ns_c({fm:\"behs\",tab:(1==e.ishome?\"tj_\":\"\")+\"baidu_\"+(e.nscTab?e.nscTab:\"topbanner\")+\"down\"})\n}),$(\".res_top_banner_close\",t).on(\"mousedown\",function(){t.detach(),e.hintCookie&&$.setCookie(e.hintCookie,5,{expires:2592e6}),ns_c({fm:\"behs\",tab:(1==e.ishome?\"tj_\":\"\")+\"baidu_\"+(e.nscTab?e.nscTab:\"topbanner\")+\"close\"})}),$(window).on(\"swap_begin\",function(){t.detach()})}else{var t=$(\".res_top_banner_for_win\"),e=this;$(\".res_top_banner_download\",t).on(\"mousedown\",function(){e.hintCookie&&$.setCookie(e.hintCookie,5,{expires:2592e6}),ns_c({fm:\"behs\",tab:(1==e.ishome?\"tj_\":\"\")+\"baidu_\"+(e.nscTab?e.nscTab:\"topbanner\")+\"down\"})\n}),$(\".res_top_banner_close\",t).on(\"mousedown\",function(){t.detach(),e.hintCookie&&$.setCookie(e.hintCookie,5,{expires:2592e6}),ns_c({fm:\"behs\",tab:(1==e.ishome?\"tj_\":\"\")+\"baidu_\"+(e.nscTab?e.nscTab:\"topbanner\")+\"close\"})}),$(window).on(\"swap_begin\",function(){t.detach()})}},this.init()},function(){$(window).on(\"swap_end\",function(){var t=[\"union\",\"union2baidu\",\"union_cpro\",\"union_nosearch\",\"redbull\",\"hao123\"],e=bds.comm.upn,n=navigator.userAgent.toLowerCase().search(/msie [6-7]/);if(winFilter=/NT 6.1|NT 6.2|NT 6.3/i.test(navigator.userAgent),bds.comm.topHijack)for(var o=0;o0){var i=\"6\"==e.ie?\"您的浏览器采用的IE6内核已停止维护,推荐升级到更快更安全的百度浏览器!\":\"您的IE浏览器版本较低,即将停止更新维护,建议升级到更快、更安全的百度浏览器。\";bds.se.banner($(\"body\")[0],i,{downUrl:\"http://j.br.baidu.com/v1/t/ui/p/browser/tn/10105001/ch_dl_url\",cookie:\"H_PS_BBANNER\",nscTab:\"browser\"})}})}(),bds.se.safeTip=function(){function t(){var t=0,e=[\"bd\"],n=\"\",o=[];$(\".unsafe_ico_new\").each(function(e,i){o.push(i.getAttribute(\"data-id\")),n=i.getAttribute(\"data-tpl\");\nvar r=$(i).attr(\"data-href\"),s=$(i).attr(\"href\"),a=r?r:s;$(\"h3 a\",$(i).parents(\".result\")).attr(\"href\",a),t++}),t>0&&ns_c({tab:\"safetip\",num_unsafe:t,prd:e.join(\"|\"),hintId:o,hintTpl:n})}return{init:t}}();var bds=bds||{};bds.se=bds.se||{},bds.se.trust=bds.se.trust||{},bds.se.trust=function(){function t(){d=[],l=[],$(\".c-trust\").each(function(){var t=$(this),e=this.getAttribute(\"data_key\");0==t.parent(\".c-icons-inner\").length&&t.wrap(\"\"),-1==$.inArray(e,d)&&d.push(this.getAttribute(\"data_key\")),-1==$.inArray(this,l)&&l.push(this)\n}),$(\".c-trust-as\").each(function(){p=$.parseJSON($(this).attr(\"hint-data\")),p&&!$(this).attr(\"render\")&&(m=$(this),s(p,$(this).attr(\"hint-type\")),$(this).attr(\"render\",\"render\"))}),d.length<1||(f&&g0&&o(p.vstar.hint[0].vlevel,p.vstar.url),p.medical&&i(),p.aviation&&r())\n})}function o(t,e){var n=$(\"\",{\"class\":\"c-vline\"}),o=$(\"\",{\"class\":\"c-icon c-icon-v\"+t,target:\"_blank\",onclick:\"return false\",href:\"#\"});e&&o.attr({href:e,onclick:\"\"}),m.append(n),m.append(o),s(p.vstar,\"vstar\")}function i(){var t=$(\"\",{\"class\":\"c-vline\"}),e=$(\"\",{\"class\":\"c-icon c-icon-med\",target:\"_blank\",onclick:\"return false\",href:\"#\"});m.append(t),m.append(e),s(p.medical,\"medical\")}function r(){var t=$(\"\",{\"class\":\"c-vline\"}),e=$(\"\",{\"class\":\"c-icon c-icon-air\",target:\"_blank\",onclick:\"return false\",href:\"#\"});\nm.append(t),m.append(e),s(p.aviation,\"aviation\")}function s(t,e){var n=t.hint,o=\"over\",i=t.url,r=t.webIMUrl;if(t&&n){if(\"vstar\"==e||\"baozhang\"==e||\"baozhang-v\"==e||\"chengqi\"==e||\"baozhang-v-auth\"==e)var s=\"
                    \";else var s=\"
                      \";for(var c=0;c\":\">\",s+=a(n[c].txt),s+=\"\"):o=\"none\";\ns+=\"
                    \";var d=!1,l=!1;\"baozhang-v\"==e||\"baozhang-v-auth\"==e?d=!0:\"chengqi\"==e&&(l=!0);var u=new bds.se.tip({target:m,mode:o,align:\"auto\",content:s,arrow:{has:1,offset:35,r:d,c:l},offset:{x:0,y:25}});u.onShow=function(){A.use(\"honourCard4\",function(){});var o=n[0].vlevel,a=n[0].unfixedInfo;ns_c({hintUrl:m.attr(\"data_key\"),hintTpl:e,hintId:o}),-1!=s.indexOf(\"ecard\")&&setTimeout(function(){A.use(\"honourCard4\",function(){var s=$(u.getDom()).find(\".c-trust-ecard4\"),c=0;\"baozhang\"==e&&(c=n[0].bzAppliCounts);\nvar d={compName:t.label,vLevel:o,centerPageUrl:i};a&&(d.unfixedInfo=a),r&&(d.webIMUrl=r),e&&(d.type=e),c&&(d.bzAppliCounts=c),t.brandName&&(d.brandName=t.brandName),t.brandLogo&&(d.brandLogo=t.brandLogo),t.brandScope&&(d.brandScope=t.brandScope),t.brandRelation&&(d.brandRelation=t.brandRelation),t.authBrandName&&(d.authBrandName=t.authBrandName),t.authBizScope&&(d.authBizScope=t.authBizScope),t.authBizType&&(d.authBizType=t.authBizType),A.ui.honourCard4(s,d)})},0),$(\"li\",this.dom).each(function(){$(\"a\",this).each(function(t){this.onmousedown=function(){ns_c({hintUrl:i,hintTpl:e,title:this.innerHTML,pos:t})\n}})})}}}function a(t){var e=t;return e=e.replace(//g,\">\").replace(/'/g,\"'\").replace(/\"/g,\""\"),e=e.replace(\"[/url]\",\"
                    \").replace(/\\[url ([^\\s]*)\\]/,\"\"),e=e.replace(/\\[img ([^\\s]*)\\]/,\"\"),e=e.replace(/\\[ecard (-?[\\d]{0,3})\\]/,\"
                    \")}var c=4,d=[],l=[];if(bds.util&&bds.util.domain&&bds.util.domain.get)var u=bds.util.domain.get(\"http://tag.baidu.com\");else var u=\"http://tag.baidu.com\";\nvar m=null,p=null,f=!1,h=null,g=0;return t(),{init:t,render:n}}();var __callback_names={};$(function(){bds.comm.user&&\"\"!=bds.comm.user&&setTimeout(function(){$.ajax({dataType:\"script\",cache:!0,url:(bds.su&&bds.su.urStatic?bds.su.urStatic:\"http://ss.bdimg.com\")+\"/static/exceptionStackTrace/js/mt_show_1.8.js\",success:function(){function t(){$(\"#imsg\")[0]&&$(\"#u\")[0]&&$(\"#user\")[0]&&(bds.se.exceptionStackTrace&&bds.se.exceptionStackTrace.init&&bds.se.exceptionStackTrace.init({button:$(\"#imsg\"),refer:$(\"#u\")}),$(\"#user\").on(\"mouseover\",function(){$(\"#s_mod_msg\").hide()\n})),$(\"#imsg1\")[0]&&$(\"#u1\")[0]&&$(\"#user1\")[0]&&(bds.se.exceptionStackTrace&&bds.se.exceptionStackTrace.init&&bds.se.exceptionStackTrace.init({button:$(\"#imsg1\"),refer:$(\"#u1\")}),$(\"#user1\").on(\"mouseover\",function(){$(\"#s_mod_msg\").hide()}))}function e(){bds.se.exceptionStackTrace&&bds.se.exceptionStackTrace.addStyle&&bds.se.exceptionStackTrace.addStyle()}bds.comm.loginAction.push(function(n){1==n&&(t(),e())}),bds.comm.newindex?$(window).on(\"index_off\",function(){setTimeout(function(){t(),e()},0)}):(t(),e()),$(window).on(\"swap_end\",e)}})},0)}),$(window).on(\"swap_end\",function(){var t='
                    ',e=\"//www.baidu.com/cache/fpid/ielib_0108.js\",n=\"//www.baidu.com/cache/fpid/chromelib_0108.js\",o=document.title,i={flashDomId:\"_FP_userDataDiv\",comDomId:\"_FP_comDiv\",IEStoreDomId:\"_FP_userDataDiv\"},r=navigator.userAgent.toLowerCase(),s=!1;\n(r.indexOf(\"msie\")>=0||new RegExp(\"trident(.*)rv.(\\\\d+)\\\\.(\\\\d+)\").test(r))&&(s=!0);var a,c=!1,d=new RegExp(\"chrome/(\\\\d+)\"),l=r.match(d);if(l&&(c=!0,a=l[1]),!(c&&a>=39)){$(\"body\").append(t);var u=function(t){s&&window.setTimeout(function(){document.title=o},0),window._FPID_CACHE=t,$(\"#_FP_userDataDiv\").remove(),$(\"#_FP_comDiv\").remove();var e=bds.comm.qid,n=\"_WWW_BR_API_\"+(new Date).getTime(),i=window[n]=new Image;i.onload=function(){window[n]=null};var r=$.getCookie(\"BAIDUID\"),a=$.getCookie(\"BIDUPSID\"),c=bds&&bds.util&&bds.util.domain?bds.util.domain.get(\"http://eclick.baidu.com/ps_fp.htm?\"):\"http://eclick.baidu.com/ps_fp.htm?\",d=c+\"pid=ps&fp=\"+t.data.fp+\"&im=\"+t.data.im+\"&wf=\"+t.data.wf+\"&br=\"+t.data.br+\"&qid=\"+e+\"&bi=\"+r+\"&psid=\"+a;\ni.src=d};return window._FPID_CACHE?void(window._FPIDTimer=window.setTimeout(function(){u(window._FPID_CACHE)},2500)):void(window._FPIDTimer=window.setTimeout(function(){var t=\"\";t=s?e:n,$.ajax({url:t,cache:!0,dataType:\"script\",success:function(){fpLib.getFp(u,i)}})},2500))}}),$(window).on(\"swap_begin\",function(){window._FPIDTimer&&(window.clearTimeout(window._FPIDTimer),$(\"#_FP_userDataDiv\").remove(),$(\"#_FP_comDiv\").remove())});var bds=bds||{};bds.se=bds.se||{},bds.se.upn={regexp:/BD_UPN=([\\w|\\d]*)/,cookieset:[],write:function(t){document.cookie=\"BD_UPN=\"+t+\"; expires=\"+new Date((new Date).getTime()+864e6).toGMTString()\n},set:function(t){var e=this;try{$.isArray(t)&&(e.cookieset=e.cookieset.concat(t))}catch(n){}},run:function(){var t=this;try{for(var e=\"\",n=0;n0?o.match(/lbbrowser/gi):o.indexOf(\"maxthon\")>0?o.match(/maxthon\\/[\\d.]+/gi):o.indexOf(\"bidubrowser\")>0?o.match(/bidubrowser/gi):o.indexOf(\"baiduclient\")>0?o.match(/baiduclient/gi):o.indexOf(\"metasr\")>0?o.match(/metasr/gi):o.indexOf(\"qqbrowser\")>0?o.match(/qqbrowser/gi):!function(){if(navigator.mimeTypes.length>0){var t;\nfor(t in navigator.mimeTypes)if(\"application/vnd.chromium.remoting-viewer\"==navigator.mimeTypes[t].type)return!0}return!1}()&&\"track\"in document.createElement(\"track\")&&!(\"scoped\"in document.createElement(\"style\"))&&!(\"v8Locale\"in window)&&/Gecko\\)\\s+Chrome/.test(navigator.appVersion)&&\"track\"in document.createElement(\"track\")&&\"scoped\"in document.createElement(\"style\")&&\"v8Locale\"in window?\"qihu\":o.indexOf(\"msie\")>0?o.match(/msie [\\d.]+;/gi):window.document.documentMode?\"msie\":o.indexOf(\"edge\")>0?o.match(/edge\\/[\\d.]+/gi):o.indexOf(\"firefox\")>0?o.match(/firefox\\/[\\d.]+/gi):o.indexOf(\"opr\")>0?o.match(/opr\\/[\\d.]+/gi):o.indexOf(\"chrome\")>0?o.match(/chrome\\/[\\d.]+/gi):o.indexOf(\"safari\")>0&&o.indexOf(\"chrome\")<0?o.match(/safari\\/[\\d.]+/gi):\"\"\n}function e(){var t=\"Win32\"==navigator.platform||\"Windows\"==navigator.platform,e=\"Mac68K\"==navigator.platform||\"MacPPC\"==navigator.platform||\"Macintosh\"==navigator.platform||\"MacIntel\"==navigator.platform;if(e)return\"mac\";var n=\"X11\"==navigator.platform&&!t&&!e;if(n)return\"unix\";var o=String(navigator.platform).indexOf(\"Linux\")>-1;return o?\"linux\":t?\"windows\":\"other\"}var n=navigator.userAgent,o=n.toLowerCase();browser=(t()+\"\").replace(/[0-9.\\/|;|\\s]/gi,\"\"),browserversion=function(){return\"msie\"==browser?n.search(/MSIE [2-5]/)>0?\"ie5\":n.indexOf(\"MSIE 6\")>0?\"ie6\":n.indexOf(\"MSIE 7\")>0?\"ie7\":n.indexOf(\"MSIE 8\")>0?\"ie8\":n.indexOf(\"MSIE 9\")>0?\"ie9\":n.indexOf(\"MSIE 10\")>0?\"ie10\":\"11\"==window.document.documentMode?\"ie11\":\"other\":\"\"\n}(),browsertype=function(){return o.indexOf(\"msie\")>0||new RegExp(\"trident(.*)rv.(\\\\d+)\\\\.(\\\\d+)\").test(o)?\"ie\":o.indexOf(\"firefox\")>0?\"firefox\":o.indexOf(\"chrome\")>0?\"chrome\":o.indexOf(\"safari\")>0&&o.indexOf(\"chrome\")<0?\"safari\":\"other\"}(),os=e(),osversion=function(){return\"windows\"==os?n.indexOf(\"Windows NT 5.1\")>-1||n.indexOf(\"Windows XP\")>-1?\"xp\":(isWinVista=n.indexOf(\"Windows NT 6.0\")>-1||n.indexOf(\"Windows Vista\")>-1)?\"vista\":n.indexOf(\"Windows NT 6.1\")>-1||n.indexOf(\"Windows 7\")>-1?\"win7\":n.indexOf(\"Windows NT 6.2\")>-1||n.indexOf(\"Windows 8\")>-1?\"win8\":n.indexOf(\"Windows NT 6.3\")>-1||n.indexOf(\"Windows 8.1\")>-1?\"win8.1\":n.indexOf(\"Windows NT 10\")>-1?\"win10\":\"other\":void 0\n}();var i=function(t){var e=0;switch(t){case\"msie\":e=1;break;case\"chrome\":e=2;break;case\"firefox\":e=3;break;case\"safari\":e=4;break;case\"opr\":e=5;break;case\"lbbrowser\":e=6;break;case\"maxthon\":e=7;break;case\"bidubrowser\":e=8;break;case\"metasr\":e=9;break;case\"qqbrowser\":e=\"a\";break;case\"qihu\":e=\"b\";break;case\"baiduclient\":e=\"c\";break;case\"edge\":e=\"d\"}return e}(browser),r=function(t){var e=0;switch(t){case\"ie6\":e=1;break;case\"ie7\":e=2;break;case\"ie8\":e=3;break;case\"ie9\":e=4;break;case\"ie10\":e=5;break;\ncase\"ie11\":e=6;break;case\"other\":e=7;break;case\"ie5\":e=8}return e}(browserversion),s=function(t){var e=0;switch(t){case\"windows\":e=1;break;case\"mac\":e=2;break;case\"linux\":e=3;break;case\"unix\":e=4}return e}(os),a=function(t){var e=0;switch(t){case\"xp\":e=1;break;case\"vista\":e=2;break;case\"win7\":e=3;break;case\"win8\":e=4;break;case\"win8.1\":e=5;break;case\"other\":e=6;break;case\"win10\":e=7}return e}(osversion),c=function(t){var e=0;switch(t){case\"ie\":e=1;break;case\"firefox\":e=2;break;case\"chrome\":e=3;break;\ncase\"safari\":e=4}return e}(browsertype);return[{k:1,v:i},{k:2,v:r},{k:3,v:s},{k:4,v:a},{k:5,v:c}]}()),bds.se.upn.run(),bds.se.heightControl={check:function(){return $(\"#content_right\").height()>$(\"#content_left\").height()},cleanEC:function(){var t=$(\".ec_bdtg\"),e=$(\"#ec_im_container\").children(\"div\"),n=e.length,o=n-1;for(bds.se.heightControl.check()&&t&&t.length&&t.css(\"display\",\"none\");bds.se.heightControl.check()&&o>=0;){var i=e[o];$(i).css(\"display\",\"none\"),o--}},cleanRes:function(){var t=$(\"#content_right\").find(\".result-op\"),e=t.length,n=e-1;\nif(0==n){var o=$(t[0]).parent();$(\"#content_right\").height()+t.height()<$(\"#content_left\").height()&&o.css({position:\"static\"})}else for(;bds.se.heightControl.check()&&n>0;){var i=t[n];$(i).css(\"display\",\"none\"),n--}},init:function(){bds.se.heightControl.cleanEC(),bds.se.heightControl.cleanRes()}},!function(){function t(){this.start=null,this.mouse=[],this.mouseTime=null,this.mouseSpeed=500,this.key=[],this.scroll=[],this.scrollTime=null,this.scrollSpeed=500,this.debug=!1,this.dataStore={},this.t=null,this.cycle=null,this.MIN_SPEED=2e3,this.MAX_SPEED=1e4,this.curSpeed=5e3,this.stayTime=0,this.heartTime=[],this.heartT=null,this.MAX_LEN=2e3,this.storeLen=-1,this.MAX_SEND=100,this.hostEnum={SCLICK:0,NSCLICK:1,SESTAT:2},this.keyMap={new_input:2,new_disp:2,new_view:2,new_user:2,new_heart:2,flow_monitor:2},this.hostAddr=[bds&&bds.comm&&bds.comm.ubsurl?bds.comm.ubsurl+\"?\":\"\",(bds&&bds.util&&bds.util.domain?bds.util.domain.get(\"http://nsclick.baidu.com\"):\"http://nsclick.baidu.com\")+\"/v.gif?\",(bds&&bds.util&&bds.util.domain?bds.util.domain.get(\"http://sestat.baidu.com\"):\"http://sestat.baidu.com\")+\"/wb.gif?\"],this.commLog={},this.isFirst=!0,this.sendNum={},this.init()\n}t.prototype={setCommLog:function(t,e,n){if(!bds||!bds.comm)return!1;if(!(t in this.commLog)){var o={};e&&n?(o.log=e,o.len=n):(o.log=\"&q=\"+bds.comm.queryEnc+\"&qid=\"+bds.comm.qid+\"&rsv_did=\"+bds.comm.did+\"&rsv_tn=\"+bds.comm.tn+\"&rsv_sid=\"+bds.comm.sid,o.len=(o.log+\"&t=\"+(new Date).getTime()).length),this.commLog[t]=o}return!0},fb:function(){var t,e=this.heartTime.length;return t=0===e||1===e?3e3:this.heartTime[e-1]+this.heartTime[e-2],this.heartTime.push(t),t},sendHeart:function(t){var e=0===t?this.stayTime:(new Date).getTime()-this.start,n=bds&&bds.comm&&bds.comm.qid;\nif(n&&n in this.commLog&&n in this.sendNum){var o=[{stay_time:e,send_num:this.sendNum[n]}];this.send({type:t,fm:\"new_heart\",data:o},this.keyMap.new_heart)}},startHeart:function(){var t=this,e=t.fb();t.stayTime+=e,t.heartT=setTimeout(function(){t.sendHeart(0),t.startHeart()},e)},preInit:function(){this.start=(new Date).getTime(),this.mouse=[],null!==this.mouseTime&&clearTimeout(this.mouseTime),this.mouseTime=null,this.key=[],this.scroll=[],null!==this.scrollTime&&clearTimeout(this.scrollTime),this.scrollTime=null,this.cycle=null,null!==this.t&&clearTimeout(this.t),this.t=null,this.storeLen=-1;\nvar t=bds&&bds.comm&&bds.comm.qid?bds.comm.qid:\"\";t&&(this.setCommLog(t),this.sendNum[t]=0),bds&&bds.comm&&(1===bds.comm.logFlagSug||1===bds.comm.globalLogFlag)&&0===bds.comm.ishome&&(null!==this.heartT&&clearTimeout(this.heartT),this.heartT=null,this.stayTime=0,this.heartTime=[],this.startHeart())},collectPoint:function(t,e){function n(t,e){var n=[];if(\"mouse\"===t)n[0]=e.pageX,n[1]=e.pageY;else if(\"scroll\"===t){var o=$(window);n[0]=o.scrollLeft(),n[1]=o.scrollTop()}return n}var o=t+\"Time\",i=this[t+\"Speed\"],r=this;\nif(0===r[t].length){var s=n(t,e);if(s.length<2)return;return void r[t].push([(new Date).getTime()-r.start,s[0],s[1]])}null===r[o]&&(r[o]=setTimeout(function(){var i=n(t,e);return i.length<2?void(r[o]=null):(r[t].push([(new Date).getTime()-r.start,i[0],i[1]]),void(r[o]=null))},i))},singleInit:function(){var t=this;$(\"body\").on(\"mousemove\",function(e){t.collectPoint(\"mouse\",e)}).on(\"keydown\",function(e){t.key.push([(new Date).getTime()-t.start,e.keyCode])}),$(window).on(\"scroll\",function(e){t.collectPoint(\"scroll\",e)\n}),t.singleInit=function(){}},flushData:function(t){null!==this.t&&(clearTimeout(this.t),this.t=null),this.startSend(this.fetchData(t,!0),!0),this.startSend(this.fetchData(t,!0)),bds&&bds.comm&&(1===bds.comm.logFlagSug||1===bds.comm.globalLogFlag)&&(null!==this.heartT&&(clearTimeout(this.heartT),this.heartT=null),this.sendHeart(t))},init:function(){var t=this;t.preInit(),$(window).on(\"swap_begin\",function(){null!==t.t&&(clearTimeout(t.t),t.t=null),bds&&bds.comm&&0===bds.comm.ishome&&(1===bds.comm.logFlag||1===bds.comm.globalLogFlag)&&t.isFirst===!1&&t.sendHeart(1)\n}).on(\"unload\",function(){bds&&bds.comm&&0===bds.comm.ishome&&(1===bds.comm.logFlagSug||1===bds.comm.globalLogFlag)&&t.flushData(2)}).on(\"swap_end\",function(){t.preInit(),t.isFirst===!0&&(t.isFirst=!1),!t.hostAddr[0]&&bds&&bds.comm&&bds.comm.ubsurl&&(t.hostAddr[0]=bds.comm.ubsurl+\"?\")})},getData:function(t,e,n){if(null===this.start||0===t.length)return{startTime:this.start,record:[]};var o={startTime:this.start,record:[]},i=e,r=n;void 0===i?(i=0,r=t[t.length-1][0]):void 0!==i&&\"number\"==typeof i&&void 0===r?(i-=this.start,r=t[t.length-1][0]):void 0!==i&&\"number\"==typeof i&&void 0!==r&&\"number\"==typeof r?(i-=this.start,r-=this.start):(i=0,r=0);\nfor(var s in t)if(!(t[s][0]=r))break;return o},send:function(t,e,n){if(!t)return!1;if(this.debug,0===e&&!this.hostAddr[0]){if(!(bds&&bds.comm&&bds.comm.ubsurl))return!1;this.hostAddr[0]=bds.comm.ubsurl+\"?\"}var o=\"\",i=\"\",r=\"\";if(\"object\"==typeof t){for(var s in t)o=t[s],\"object\"==typeof o&&(o=$.stringify(o)),i+=s+\"=\"+encodeURIComponent(o)+\"&\";i=i.substring(0,i.length-1)}else\"string\"==typeof t&&(i=t);if(!n&&bds&&bds.comm&&bds.comm.qid&&(n=bds.comm.qid),!(n&&n in this.commLog))return!1;\nif(i+=this.commLog[n].log,i+=\"&t=\"+(new Date).getTime(),(\"number\"!=typeof e||0>e||e>=this.hostAddr.length)&&(e=0),r=this.hostAddr[e]+i,r.length>this.MAX_LEN)return!1;var a=window[\"BD_PS_C\"+(new Date).getTime()]=new Image;return a.src=this.hostAddr[e]+i,!0},sendNow:function(t,e,n){if(t&&\"string\"==typeof t&&t in this.keyMap&&e){var o=\"type=3&fm=\"+t+\"&data=\"+encodeURIComponent($.stringify([e]));n&&n.qid&&n.log&&n.len?(this.setCommLog(n.qid,n.log,n),this.send(o,this.keyMap[t],n.qid)):send(o,this.keyMap[t])\n}},pushData:function(t,e,n){var o=bds&&bds.comm&&bds.comm.qid?bds.comm.qid:\"\";if(!o)return!1;n&&n.qid&&n.log&&n.len?(this.setCommLog(n.qid,n.log,n.len),o=n.qid):this.setCommLog(o),o in this.dataStore||(this.dataStore[o]={});var i=this.dataStore[o];t in i||(i[t]=[[],[]]),n&&n.level===!0?i[t][0].push(encodeURIComponent($.stringify(e))):i[t][1].push(encodeURIComponent($.stringify(e)))},fetchData:function(t,e){function n(){for(var e,n=0,o=[],r=!1,d=this.commLog[l].len,m=this.hostAddr[a].length,p=m+(\"type=\"+t+\"&fm=\"+u+\"&data=\").length+d,f=p+6,h=f;0!==i.length&&n=this.MAX_LEN||h>=this.MAX_LEN)&&(o.length>=2&&(o.pop(),r=!0),s.push({qid:l,key:u,type:t,data:\"%5B\"+o.join(\"%2C\")+\"%5D\",host:a}),o=[],r&&(o[0]=e,r=!1),h=o.length>0?p+3+e.length+3:p+6),f=h;\no.length>0&&s.push({qid:l,key:u,type:t,data:\"%5B\"+o.join(\"%2C\")+\"%5D\",host:a})}var o,i,r=this.dataStore,s=[],a=0,c=!1,d=bds&&bds.comm&&bds.comm.qid?bds.comm.qid:\"\";if(!d)return[];for(var l in r){c=l!==d?!0:!1,o=r[l];for(var u in o)u in this.keyMap&&(a=this.keyMap[u],\"number\"==typeof a&&void 0!==this.hostAddr[a]&&(i=o[u][0].length>0?o[u][0]:o[u][1],n.call(this),(c===!0||e!==!0)&&0===i.length&&o[u][1].length>0&&(i=o[u][1],n.call(this)),c===!0&&delete this.dataStore[l]))}return s},startSend:function(t,e){var n,o,i=this,r=e===!0?0:100,s=setInterval(function(){return t.length<=0?void clearInterval(s):(n=t.shift(),void(n&&n.qid&&n.qid in i.commLog&&(o=\"type=\"+n.type+\"&fm=\"+n.key+\"&data=\"+n.data,i.send(o,n.host,n.qid),n.qid in i.sendNum&&(i.sendNum[n.qid]+=1))))\n},r)},startCycle:function(){var t=this;null===t.cycle&&(t.cycle=1),t.t=setTimeout(function(){var e=t.fetchData(0),n=e.length;-1===t.storeLen&&(t.storeLen=n),0!==t.storeLen&&n/t.storeLen>=2&&t.curSpeed>t.MIN_SPEED&&(t.curSpeed-=1e3),(0===n||t.storeLen/n>=2)&&t.curSpeed0&&new bds.util.setFootStyle,bds.comm.feedback=1,bds.comm.feedback?t()?$(document).delegate(\".feedback\",\"click\",function(){var t=this;$.getScript(\"https://ss1.bdstatic.com/5eN1bjq8AAUYm2zgoY3K/r/www/cache/static/protocol/https/plugins/feedback_67607cd.js\",function(){var e=t.getAttribute(\"data-feedbackid\")||1,n={product_id:18,entrance_id:e},o={username:bds.comm.username,query:bds.comm.query,fb_qid:bds.comm.qid};\nbds.qa.ShortCut.initRightBar(n,o)})}):$(\".feedback\").on(\"click\",function(){bds.se.ShortCut.initRightBar()}):$(document).delegate(\".feedback\",\"click\",function(){var t=this;$.getScript(\"https://ss1.bdstatic.com/5eN1bjq8AAUYm2zgoY3K/r/www/cache/static/protocol/https/plugins/feedback_67607cd.js\",function(){var e=t.getAttribute(\"data-feedbackid\")||1,n={product_id:18,entrance_id:e},o={username:bds.comm.username,query:bds.comm.query,fb_qid:bds.comm.qid};bds.qa.ShortCut.initRightBar(n,o)})});var e=$(\"#form\").find('input[type=\"hidden\"][name=rsv_t]');\ne.length?$(e).val(bds.comm.encTn):$(\"#form\").append(''),bds.comm.did=function(){for(var t=\"\",e=0;32>e;e++)t+=Math.floor(16*Math.random()).toString(16);return t}()}),!function(){$(window).one(\"swap_end\",function(){$(\"body\").on(\"mousedown\",\".se_common_hint a\",function(){var t=$(this),e=t.parents(\".se_common_hint\"),n=e.attr(\"data-id\")||\"\",o=e.attr(\"data-tpl\")||\"\",i=e.find(\"a\").index(t);ns_c_pj({hintId:n,hintTpl:o,title:t.html(),pos:i,qid:bds.comm.qid||\"\"},\"pj=hint&\")\n})})}(),$(function(){$(\"#u,#u1\").delegate(\".lb\",\"click\",function(){var t=$(this).attr(\"data-subpro\");t&&bds.se.login.setSubpro(t);try{bds.se.login.open()}catch(e){}})}),$.ajax({dataType:\"script\",cache:!0,url:\"https://ss1.bdstatic.com/5eN1bjq8AAUYm2zgoY3K/r/www/cache/static/protocol/https/home/js/nu_instant_search_08089ad.js\"}),window.PRE_CONN=function(){var t,e=function(t,e){var n=1*new Date;t=bds.util.domain&&bds.util.domain.get?bds.util.domain.get(t):t;var i=/^(http[s]?:\\/\\/)?([^\\/]+)(.*)/,r=t.match(i);if(r[2]&&!o[r[2]]){o.push(r[2]);\nvar s=new Image;s.src=t+\"?_t=\"+(e?e:n),s.onload=s.onerror=function(){s=null}}},n=0,o=[],i=function(){try{window.pageState&&0!=window.pageState&&1!=n||($(\"#kw1,#kw\").one(\"keydown\",function(){\"https:\"===location.protocol?(e(\"https://ss0.baidu.com/6ONWsjip0QIZ8tyhnq/ps_default.gif\"),e(\"https://ss1.baidu.com/6ONWsjip0QIZ8tyhnq/ps_default.gif\"),e(\"https://ss2.baidu.com/6ONWsjip0QIZ8tyhnq/ps_default.gif\"),e(\"https://ss3.baidu.com/6ONWsjip0QIZ8tyhnq/ps_default.gif\")):(e(\"http://b1.bdstatic.com/img/pc.gif\",parseInt(1e3*Math.random())),e(\"http://ecmb.bdimg.com/public03/pc.gif\"),$.each([\"i7\",\"i8\",\"i9\",\"t10\",\"t11\",\"t12\"],function(t,n){e(\"http://\"+n+\".baidu.com/ps_default.gif\")\n}))}),1==n&&$(\"#kw1,#kw\").one(\"focus\",function(){\"https:\"===location.protocol&&e(\"https://www.baidu.com/con?from=self\")}))}catch(t){}},r=function(){n=1,i(),a()},s=function(){a(),t=setTimeout(r,55e3)},a=function(){clearTimeout(t),n=0};return i(),{init:i,startTimer:s}}(),!function(){$.ajaxPrefilter(\"parts\",function(t,e,n){t.__partsCallback=[],t.__partsIndex=0,n.parts=function(e){t.__partsCallback.push(e)},t.parts&&n.parts(t.parts),t.converters[\"* parts\"]=function(t){return t}}),$.ajaxTransport(\"parts\",function(t){if(!t.crossDomain||support.cors){var e;\nreturn{send:function(n,o){var i,r=t.xhr();if(r.open(t.type,t.url,t.async,t.username,t.password),t.xhrFields)for(i in t.xhrFields)r[i]=t.xhrFields[i];t.mimeType&&r.overrideMimeType&&r.overrideMimeType(t.mimeType),t.crossDomain||n[\"X-Requested-With\"]||(n[\"X-Requested-With\"]=\"XMLHttpRequest\");for(i in n)void 0!==n[i]&&r.setRequestHeader(i,n[i]+\"\");r.send(t.hasContent&&t.data||null),e=function(n,i){var s,a,c;if(3!==r.readyState&&4!==r.readyState||i||!function(){var e=t.delimiter,n=\"\";try{n=r.responseText\n}catch(o){}if(\"\"!=n){var i,s,a=-1,c=0;if(e)for(;;){for(;c<=t.__partsIndex&&(i=-1==a?0:a+e.length,a=n.indexOf(e,i),-1!=a);c++);if(-1==a&&4!==r.readyState)return;for(s=0;s.2&&.201>i&&\"http:\"==location.protocol&&(t.url=n,t.headers=o,$.ajax({url:n,headers:o,success:e}))},o=function(e){if(\"string\"==typeof e&&\"object\"==typeof t.headers){if(t.headers.hasOwnProperty(\"content_syni\")&&12495!==e.length)return e;if(t.headers.hasOwnProperty(\"content_syns\")&&19295!==e.length)return e}return\"normal\"},i=function(t){$.ajax({url:\"//www.baidu.com/r/plog\",type:\"post\",data:{page_html:t}})};window.ctwin={sendRequest:n}}();var bds=bds||{};bds.se=bds.se||{},bds.se.speedTester=function(){function t(){}function e(t,e,i){i=i||19558,n(t,function(t){return function(e,n,i){o(t,n,i)\n}}(e),function(t){return function(){o(t)}}(e),i)}function n(e,n,o,i){n=n||t,o=o||t;var r=new Image;r.onload=function(){this.onload=this.onerror=null,i=this.fileSize||i;var t=new Date,e=t-s,o=i/e;n(this,e,o)},r.onerror=function(){this.onload=this.onerror=null,o(this)};var s=new Date;r.src=e}function o(t,e,n){var o=new Image;o.onload=o.onerror=function(){this.onload=this.onerror=null},o.src=t+(e?\"&t=\"+e+\"&v=\"+n:\"&t=-1&v=-1\")+\"&r=\"+Math.random()}return{start:e}}(),bds.se.speedMonitor=function(t){function e(){var t=d.pop();\nt&&n(t),a&&(c=window.setTimeout(e,s))}function n(t){var e=t.url,n=t.size||-1,o=[];o.push(\"id=\"+encodeURIComponent(t.id)),o.push(\"name=\"+encodeURIComponent(t.name)),o.push(\"url=\"+encodeURIComponent(t.url)),o.push(\"size=\"+encodeURIComponent(t.id));for(key in t.logData)o.push(key+\"=\"+encodeURIComponent(t.logData[key]));bds.se.speedTester.start(e,l+\"&\"+o.join(\"&\"),n)}function o(){return!0}var i=t.logPath||\"\",r=t.flag||\"default\",s=t.sleep||\"1000\",a=!1,c=null,d=[],l=i+\"?flag=\"+r;this.start=function(){this.stop(),a=!0,e()\n},this.stop=function(){a=!1,window.clearInterval(c)},this.addTask=function(t){o(t)&&d.push(t)},this.clear=function(){d=[]}},setTimeout(function(){var t=Math.random(),e=\"http://velocity.baidu.com/sp\";if(\"https:\"==location.protocol&&(e=\"https://sp0.baidu.com/6r1_czmhAB63otqbppnN2DJv/sp\"),.01>t){var n=document.createElement(\"script\");n.src=e,document.body.appendChild(n)}},1e3),!function(t){var t=t||{};t.se=t.se||{},t.se.QuickDelete=function(t,e){this.form=t,this.options=e,this._init()},t.se.QuickDelete.prototype={constructor:t.se.QuickDelete,_init:function(){this._create_elem(),this._bind_event()\n},_create_elem:function(){var t=this.form,e=this.options,n=e.top||0,o=e.right||0,i=$.trim(t.val())?\"block\":\"none\",r=\"quickdelete\",s=t.parent(),a=$('
                    ').attr(\"id\",r).attr(\"title\",\"清空\").addClass(\"quickdelete\");s.addClass(\"quickdelete-wrap\").append(a),a.css({top:n+\"px\",right:o+\"px\",display:i}),e.wrapElem=s,e.elem=a},_show:function(){0===t.comm.ishome&&this.options.elem.show()},_hide:function(){this.options.elem.hide()},_bind_event:function(){var e=this.form,n=this.options.elem,o=this;\ne.on(\"focus\",function(){$.trim(e.val())?o._show():o._hide()}).on(\"keyup input propertychange\",function(){$.trim(e.val())?o._show():o._hide()}),n.on(\"click\",function(){var n=t.comm.supportis?2:0;return ns_c({input_clear:t.comm.ishome+n,delete_query:encodeURIComponent(e.val())}),e.val(\"\").focus(),o._hide(),!1}),$(window).on(\"swap_end index_off\",function(){$.trim(e.val())?o._show():o._hide()})}},new t.se.QuickDelete($(\"#kw\"),{top:0,right:0})}(bds),window.bds&&bds.comm&&bds.comm.ishome&&$(window).on(\"load\",function(){if(window.ctwin&&window.ctwin.sendRequest(\"//www.baidu.com/?tn=baidu\",{content_syni:1}),window.performance&&performance.timing){var t=function(){var t=n(\"navigation\"),e=n(\"domainLookup\"),o=n(\"connect\"),i=n(\"secureConnection\"),r=(n(\"redirect\"),n(\"request\")),s=n(\"responses\"),a={start:performance.timing.domLoading,end:performance.timing.domComplete},c=n(\"loadEvent\");\nreturn{navigation:o.start-t.start,dns:e.value,tcp:o.value,ssl:i.start>0?o.end-i.start:0,request:s.start-r.start,responses:s.value,dom:a.end-a.start,loadEvent:c.end-t.start}},e=Cookie.get(\"__bsi\"),n=function(t){var e=performance.timing,n=e[t+\"Start\"]?e[t+\"Start\"]:0,o=e[t+\"End\"]?e[t+\"End\"]:0;return{start:n,end:o,value:o-n>0?o-n:0}},o=function(){var n=[],o=t();for(var i in o)n.push(i+\"=\"+o[i]);n.push(\"protocol=\"+encodeURIComponent(location.protocol));var r=\"//www.baidu.com/nocache/fesplg/s.gif?log_type=hm&type=timing&\",s=\"\";\ns+=n.join(\"&\"),s+=\"&newindex=\"+(window.bds&&bds.comm?bds.comm.newindex:-1),e&&(s+=\"&bsi=\"+e);var a=r+s,c=new Image,d=\"_LOG_\"+(new Date).getTime();c.onload=function(){delete window[d]},window[d]=c,c.src=a},i=Math.random();/8498/.test(bds.comm.indexSid)&&.01>i&&setTimeout(o,500)}}),$(window).on(\"swap_end\",function(){bds.comm.search_tool&&(bds.comm.search_tool.init=!1)}),$(window).on(\"swap_begin\",function(){$(document).off(\"click.searchTool\")});var langfilterTip,timefilterTip,fileTypeTip,insideSearchTip;\n$(document).delegate(\".head_nums_cont_outer\",\"mousedown\",function(){if(\"undefined\"!=typeof bds.comm.search_tool){if(bds.comm.search_tool.init)return;bds.comm.search_tool.init=!0;var t=$(this),e=t.find(\".search_tool\").eq(0),n=t.find(\".search_tool_close\").eq(0),o=t.find(\".head_nums_cont_inner\").eq(0);e.on(\"click\",function(){o.animate({top:0},250),ns_c({fm:\"advTool\",qid:bds.comm.qid,title:encodeURI(\"搜索工具\"),rsv_advTool:0})}),n.on(\"click\",function(){o.animate({top:-42},250,function(){\"en\"==bds.comm.search_tool.sl_lang||bds.comm.search_tool.st||bds.comm.search_tool.et||bds.comm.search_tool.si||bds.comm.search_tool.ft||bds.comm.search_tool.exact?(ns_c({fm:\"advTool\",qid:bds.comm.qid,title:encodeURI(\"清除\"),rsv_advTool:2}),baseChangeUrl(\"wd=\"+encodeURIComponent($(\"#kw\").val().replace(/(filetype:[^\\s]* )|(site:[^\\s]*)/g,\"\").replace(/^\\\"+(.+)\\\"+$/,\"$1\"))+\"&sl_lang=cn&rsv_srlang=cn&rsv_rq=cn&ct=0&si=&tfflag=0&gpc=\"+encodeURIComponent(\"stf=\")),$(\"input[name='gpc'],input[name='si'],input[name='ct']\",\"form\").val(\"\")):ns_c({fm:\"advTool\",qid:bds.comm.qid,title:encodeURI(\"收起工具\"),rsv_advTool:1})\n})});var i=t.find(\".search_tool_la\").eq(0);if(i.length>0){var r=\"
                      \";\"en\"==bds.comm.search_tool.sl_lang?(r+=\"
                    • 所有网页
                    • \",r+=\"
                    • 英文网页
                    • \"):\"cn\"==bds.comm.search_tool.sl_lang&&(r+=\"
                    • 所有网页
                    • \",r+=\"
                    • 英文网页
                    • \"),r+=\"
                    \",langfilterTip=new bds.se.tip({target:i,mode:\"none\",content:$(r),arrow:{has:0,offset:0},offset:{x:15,y:21}}),langfilterTip.hide()\n}var s=t.find(\".search_tool_tf\").eq(0);if(s.length>0){var a=\"
                      \";a+=bds.comm.search_tool.st||bds.comm.search_tool.et?\"
                    • 时间不限
                    • \":\"
                    • 时间不限
                    • \",a+=bds.comm.search_tool.st>=bds.comm.search_tool.thisDay&&\"1\"==bds.comm.search_tool.stftype?\"
                    • 一天内
                    • \":\"
                    • 一天内
                    • \",a+=bds.comm.search_tool.st>=bds.comm.search_tool.thisWeek&&bds.comm.search_tool.st一周内\":\"
                    • 一周内
                    • \",a+=bds.comm.search_tool.st>=bds.comm.search_tool.thisMonth&&bds.comm.search_tool.st一月内\":\"
                    • 一月内
                    • \",a+=bds.comm.search_tool.st>=bds.comm.search_tool.thisYear&&bds.comm.search_tool.st一年内\":\"
                    • 一年内
                    • \",a+=\"
                    • \",a+=\"
                      自定义\",a+=\"

                      \":\"value='\"+formatDate(1e3*bds.comm.serverTime,\"-\")+\"' data-value='' class='c-tip-custom-input c-tip-custom-input-init'/>

                      \",a+=\"

                      \":\"value='\"+formatDate(1e3*bds.comm.serverTime,\"-\")+\"' data-value='' class='c-tip-custom-input c-tip-custom-input-init'/>

                      \",a+=\"
                      自定义时间错误!
                      \",a+=\"确认\",a+=\"
                    \",timefilterTip=new bds.se.tip({target:s,mode:\"none\",content:$(a),arrow:{has:0,offset:0},offset:{x:15,y:21},onShow:function(){$(this.getTarget()).width()>95&&$(\"ul\",this.getDom()).width($(this.getTarget()).width()+20),$(\".c-tip-custom-input\").on(\"click\",function(t){var e=this,n=null,o=new Date,i=$(e).parents(\".c-tip-custom\"),r=i.find(\"input[name='st']\"),s=i.find(\"input[name='et']\");\n$(e).attr(\"data-value\")&&o.setTime($(e).attr(\"data-value\")),$(e).parents(\".c-tip-custom\").find(\".c-tip-custom-input\").removeClass(\"c-tip-custom-input-focus\"),$(e).addClass(\"c-tip-custom-input-focus\"),0==$(\"#c-tip-custom-calenderCont\").length&&$(e).parents(\".c-tip-custom\").append(\"
                    \"),$(\"#c-tip-custom-calenderCont\").html(\"\");var a={element:\"c-tip-custom-calenderCont\",date:formatDate(o),between:[$(e).attr(\"date-min\")-0,$(e).attr(\"date-max\")-0],onSelectDay:function(t){if(t+=\"\",\"st\"==e.name){var n=new Date(t.substr(0,4),t.substr(4,2)-1,t.substr(6,2),0,0,0);\ns.attr(\"date-min\",t)}else{var n=new Date(t.substr(0,4),t.substr(4,2)-1,t.substr(6,2),23,59,59);r.attr(\"date-max\",t)}$(e).val(formatDate(n,\"-\")),$(e).attr(\"data-value\",n.getTime()),$(\"#c-tip-custom-calenderCont\").hide(),$(e).removeClass(\"c-tip-custom-input-focus\").removeClass(\"c-tip-custom-input-init\")}};\"undefined\"==typeof WCal?$.getScript(\"https://ss1.bdstatic.com/5eN1bjq8AAUYm2zgoY3K/r/www/cache/static/protocol/https/plugins/new_wcal_3426010.js\",function(){n=new WCal(a),o&&n.setDay(formatDate(o),function(t){t.className+=\" op_mon_day_selected\"\n})}):(n=new WCal(a),o&&n.setDay(formatDate(o),function(t){t.className+=\" op_mon_day_selected\"})),$(\"#c-tip-custom-calenderCont\").css({top:$(this).position().top-2,left:$(this).position().left+$(this).width()+15,display:\"block\"}),t.stopPropagation()}),$(\".c-tip-custom-input\").on(\"focus\",function(){$(this).removeClass(\"c-tip-custom-input-init\")}),$(\".c-tip-custom-input\").on(\"blur\",function(){function t(t){var e,n=/^\\s*(\\d{4})-(\\d\\d)-(\\d\\d)\\s*$/,o=new Date(0/0),i=n.exec(t);return i&&(e=+i[2],o.setFullYear(i[1],e-1,i[3]),e!=o.getMonth()+1&&o.setTime(0/0)),o\n}var e=this,n=t($(e).val());n instanceof Date&&n.getTime()?($(e).attr(\"data-value\",n.getTime()),$(\".c-tip-timerfilter-custom-error\").hide()):\"\"==$(e).val()?($(e).attr(\"data-value\",\"0\"),$(\".c-tip-timerfilter-custom-error\").hide()):($(e).attr(\"data-value\",\"\"),$(\".c-tip-timerfilter-custom-error\").show())});try{$(\".c-tip-custom-submit\").off(\"click.searchTool\").on(\"click.searchTool\",function(t){var e=this,n=$(e).parents(\".c-tip-custom\"),o=parseInt($(\".c-tip-custom-input\",n)[0].getAttribute(\"data-value\")/1e3),i=parseInt($(\".c-tip-custom-input\",n)[1].getAttribute(\"data-value\")/1e3);\nreturn $(\"#c-tip-custom-calenderCont\").hide(),\"\"!=o&&o||(o=0),\"\"!=i&&i||!o||\"\"==o||(i=parseInt((new Date).setHours(23,59,58)/1e3)),i>bds.comm.serverTime&&(0>=o?(o=\"\",i=\"\"):i=parseInt((new Date).setHours(23,59,58)/1e3)),o>i||o>bds.comm.serverTime?($(\".c-tip-timerfilter-custom-error\").show(),void t.stopPropagation()):(0==o&&0==i&&(o=\"\",i=\"\"),$(\".c-tip-timerfilter-custom-error\").hide(),void advChangeUrl(\"gpc\",\"stf=\"+o+\",\"+i+\"|stftype=2\",\"自定义时间:\"+o+\"|\"+i,5))})}catch(t){}}}),timefilterTip.hide()}var c=t.find(\".search_tool_ft\").eq(0);\nif(c.length>0){var d=\"
                    \";\nvar l=new bds.se.tip({target:c,mode:\"none\",content:$(d),arrow:{has:0,offset:0},offset:{x:15,y:21}});l.hide()}var u=t.find(\".search_tool_si\").eq(0);u.length>0&&(insideSearchTip=new bds.se.tip({target:u,mode:\"none\",content:$(\"
                    • 确认
                    • 无法识别,正确格式:baidu.com

                    \"),arrow:{has:0,offset:0},offset:{x:15,y:21},onShow:function(){$(\".c-tip-si-input\").on(\"focus\",function(){$(this).addClass(\"c-tip-si-input-focus\")\n}),$(\".c-tip-si-input\").on(\"blur\",function(){$(this).removeClass(\"c-tip-si-input-focus\")});try{$(\".c-tip-timerfilter-si-submit\").off(\"click.searchTool\").on(\"click.searchTool\",function(t){var e=this,n=$(e).parents(\".c-tip-timerfilter-si\"),o=$(\"input\",n).val(),i=queryReplace(\"site\");if(\"\"==o)ns_c({fm:\"advTool\",qid:bds.comm.qid,title:encodeURI(\"站内检索:\"+o),rsv_advTool_si:encodeURI(o)}),baseChangeUrl(\"wd=\"+encodeURIComponent(i)+\"&si=&ct=0\");else{if(!o.match(/^[\\w\\-_]+(\\.[\\w\\-_]+)+$/))return $(\".c-tip-timerfilter-si-error\").show(),t.stopPropagation(),t.preventDefault(),!1;\n$(\".c-tip-timerfilter-si-error\").hide(),ns_c({fm:\"advTool\",qid:bds.comm.qid,title:encodeURI(\"站内检索:\"+o),rsv_advTool_si:encodeURI(o)}),baseChangeUrl(\"wd=\"+encodeURIComponent(i)+\"&si=\"+encodeURIComponent(o)+\"&ct=2097152\")}})}catch(t){}}}),insideSearchTip.hide());var m=!0;i.on(\"click\",function(t){m?(langfilterTip&&langfilterTip.show(),m=!1,timefilterTip&&timefilterTip.hide(),p=!0,l&&l.hide(),f=!0,insideSearchTip&&insideSearchTip.hide(),h=!0,ns_c({fm:\"advTool\",qid:bds.comm.qid,title:encodeURI(\"语言筛选浮层展现\"),rsv_advTool_tip:1}),$(document).on(\"click.searchTool\",function(t){0==$(t.target).parents(\".c-tip-langfilter\").length&&langfilterTip&&(langfilterTip.hide(),m=!0,$(document).off(\"click.searchTool\"))\n})):(langfilterTip&&langfilterTip.hide(),m=!0,$(document).off(\"click.searchTool\")),t.stopPropagation()});var p=!0;s.on(\"click\",function(t){p?(langfilterTip&&langfilterTip.hide(),m=!0,timefilterTip&&timefilterTip.show(),p=!1,l&&l.hide(),f=!0,insideSearchTip&&insideSearchTip.hide(),h=!0,ns_c({fm:\"advTool\",qid:bds.comm.qid,title:encodeURI(\"时间筛选浮层展现\"),rsv_advTool_tip:0}),$(document).on(\"click.searchTool\",function(t){0==$(t.target).parents(\".c-tips-container,#c-tip-custom-calenderCont\").length&&timefilterTip&&(timefilterTip.hide(),$(\"#c-tip-custom-calenderCont\").hide(),timefilterTip.getDom().find(\".c-tip-custom-input-focus\").removeClass(\"c-tip-custom-input-focus\"),p=!0,$(document).off(\"click.searchTool\"))\n})):(timefilterTip&&timefilterTip.hide(),p=!0,$(document).off(\"click.searchTool\")),t.stopPropagation()});var f=!0;c.on(\"click\",function(t){f?(langfilterTip&&langfilterTip.hide(),m=!0,timefilterTip&&timefilterTip.hide(),p=!0,l&&l.show(),f=!1,insideSearchTip&&insideSearchTip.hide(),h=!0,ns_c({fm:\"advTool\",qid:bds.comm.qid,title:encodeURI(\"网页格式浮层展现\"),rsv_advTool_tip:2}),$(document).on(\"click.searchTool\",function(t){0==$(t.target).parents(\".c-tip-timerfilter-ft\").length&&l&&(l.hide(),f=!0,$(document).off(\"click.searchTool\"))\n})):(l&&l.hide(),f=!0,$(document).off(\"click.searchTool\")),t.stopPropagation()});var h=!0;u.on(\"click\",function(t){h?(langfilterTip&&langfilterTip.hide(),m=!0,timefilterTip&&timefilterTip.hide(),p=!0,l&&l.hide(),f=!0,insideSearchTip&&insideSearchTip.show(),h=!1,ns_c({fm:\"advTool\",qid:bds.comm.qid,title:encodeURI(\"站内搜索浮层展现\"),rsv_advTool_tip:3}),$(document).on(\"click.searchTool\",function(t){0==$(t.target).parents(\".c-tip-timerfilter-si\").length&&insideSearchTip&&(insideSearchTip.hide(),h=!0,$(document).off(\"click.searchTool\"))\n})):(insideSearchTip&&insideSearchTip.hide(),h=!0,$(document).off(\"click.searchTool\")),t.stopPropagation()})}}),!function(){function t(){function t(t,e){var n={top:e.offset().top,left:e.offset().left},o={width:e.width(),height:e.height()},i=function(){var t=e.attr(\"data-click\");if(t)try{return $.parseJSON(t)}catch(n){}}()||{},r=t+(i.p5||\"\");return{id:r,pos:n,size:o,dataClick:i,dom:e}}var e={},n={},o=$(\"#wrapper\");return e.topResult=o.find(\"#con-at\").find(\".result-op\"),e.rightResult=o.find(\"#con-ar\").find(\".result-op\"),e.leftResult=o.find(\"#content_left\").find(\".result, .result-op\"),e.topResult.length&&(n.T=[],e.topResult.each(function(){n.T.push(t(\"T\",$(this)))\n})),e.rightResult.length&&(n.R=[],e.rightResult.each(function(){n.R.push(t(\"R\",$(this)))})),e.leftResult.length&&(n.L=[],e.leftResult.each(function(){n.L.push(t(\"L\",$(this)))})),n}bds.se.skeleton=function(){var e;return function(){return e||(e=t(),$(window).one(\"swap_begin\",function(){e=null})),e}}()}(),!function(){$(window).on(\"swap_end\",function(){var t=function(){var t=[],e=bds.se.skeleton(),n=e.L;return n?($.each(n,function(e,n){var o={};o.dom=n.dom,o.id=n.id,o.itime=0,o.time=0,t.push(o)}),t):null\n};bds.comm.orderplay=t()})}(),!function(){function t(){var t=this;t.display={},t.expand={},t.dom={},t.init()}bds.se.display=function(){new t},t.prototype={init:function(){var t=this;t.dom=bds.se.skeleton();var e=$(\"#wrapper\");t.dom.rsResult=e.find(\"#rs a\"),t.dom.hintResult=e.find(\".se_common_hint\"),t.rs=t.dom.rsResult.length||0,t.hint=t.dom.hintResult.length||0,t.display.base=t.getBase(),t.dom.L&&t.getResult(t.dom.L),t.dom.R&&t.getResult(t.dom.R),t.dom.T&&t.getResult(t.dom.T),t.rs&&(t.display.rs=t.getRS()),t.hint&&(t.display.hint=t.getHint()),t.send()\n},send:function(){var t=this;for(var e in t.display){var n={};n[e]=t.display[e],bds.log.send.sendPack(\"new_disp\",n)}for(var o in t.expand)if(o&&t.expand[o])for(var i in t.expand[o])if(i&&t.expand[o][i]&&t.expand[o][i].length)for(var r=t.expand[o][i],s=0;so;o++){var r=n[o].id,s=e.getResultDisplay(n[o]);e.expand[r]=s.expand,delete s.expand,e.display[r]=s\n}},getResultDisplay:function(t){function e(){var e=t.size;return{w:e.width||0,h:e.height||0}}function n(){var e=t.pos;return{t:e.top||0,l:e.left||0}}function o(){return d.rsv_bdr&&0!=d.rsv_bdr?d.rsv_bdr:c.hasClass(\".c-border\")||c.find(\".c-border\").length?5:0}function i(){function t(t){var e;return t&&(e=c.find(t)),e&&e.length?!0:!1}var e={};return t(\".favurl\")&&(e.fi=1),t(\".c-text-public.c-text-mult\")&&(e.gwi=1),t(\".icon-unsafe-icon\")&&(e.fxi=1),t(\".c-icon-v\")&&(e.vi=1),t(\".c-icon-med\")&&(e.yjji=1),t(\".c-icon-air\")&&(e.hxi=1),t(\".c-recommend\")&&(e.cr=1),e\n}function r(){var t=c.find(\"a\").not(\":hidden\").not(\"h3 a, .m\"),e=[],n=/^((https?:)?\\/\\/)?([\\da-z\\.-]+)\\.([a-z\\.]{2,6})([\\/\\w \\.-]*)*(:\\d+)*(\\/.*)*/,o=/^(\\/s\\?)/;return t.each(function(){var t=this.getAttribute(\"href\");if(t&&n.test(t)){var i=t&&t.match(/.*\\/link\\?url=([^&]*).*/);e.push(i&&i.length&&i.length>0&&i[1]?i[1]:t)}else t&&o.test(t)&&e.push(t)}),e.length?e:!1}function s(){var t=[],e=c.find(\"img\").not(\":hidden\").not(\"[data-nolog]\");return e.length?(e.each(function(){var e={w:this.width,h:this.height};\nt.push({size:e})}),t):!1}function a(){var t=[],e=c.find(\"object, video, audio\");return e.length?(e.each(function(){var e=$(this),n={};n.type=e.is(\"object\")&&e.attr(\"type\")&&e.attr(\"type\").indexOf(\"flash\")>=0?1:e.is(\"video\")?2:e.is(\"audio\")?3:0,n.size={w:e.width(),h:e.height()},t.push(n)}),t):!1}var c=t.dom,d=t.dataClick,l={};if(l.id=d.p5||\"\",l.srcid=d.rsv_srcid||c.attr(\"srcid\")||0,l.tpl=c.attr(\"tpl\")||\"\",l.mu=d.mu||c.attr(\"mu\")||\"\",l.fm=d.fm||\"as\",c.is(\":hidden\")&&(l.show=0),0==l.show)return l;l.size=e(),l.pos=n(),o()&&(l.bdr=o()),l.com=i();\nvar u=r(),m=s(),p=a();return(u||m||p)&&(l.expand={},u&&(l.link=u.length,l.expand.links=u),m&&(l.img=m.length,l.expand.imgs=m),p&&(l.app=p.length,l.expand.apps=p)),l}}}(),!function(){function t(){this.pageElementsList=[],this.scrollTime=null,this.scrollChange=!1,this.resizeTime=null,this.resizeChange=!1,this.scrollTop=$(document).scrollTop(),this.scrollLeft=$(document).scrollLeft(),this.windowHeight=$(window).height(),this.windowWidth=$(window).width()}t.prototype={init:function(){var t=bds.se.skeleton(),e=this;\n$.each([\"L\",\"R\",\"T\"],function(n,o){t[o]&&($.merge(e.pageElementsList,e.getDom(t[o])),e.bindEvent(t[o]))})},getDom:function(t){var e=[];return $.each(t,function(t,n){var o={};o.top=n.pos.top,o.height=n.size.height,o.id=n.id,o.visible=0,e.push(o)}),e},sendLog:function(t,e){bds.comm.globalLogFlag&&1==bds.comm.globalLogFlag&&bds.log.send.sendPack(t,e)},bindEvent:function(t){var e=this;$.each(t,function(t,n){var o=200,i=!1,r=null;n.dom.bind(\"mouseenter.useraction\",function(){null!==r&&clearTimeout(r),r=setTimeout(function(){e.sendLog(\"new_view\",{type:\"mouseIn\",id:n.id,t:(new Date).getTime()}),i=!0,r=null\n},o)}).bind(\"mouseleave.useraction\",function(){null!==r&&(clearTimeout(r),r=null),i&&(e.sendLog(\"new_view\",{type:\"mouseOut\",id:n.id,t:(new Date).getTime()}),i=!1)})})},destroy:function(){$(window).unbind(\".useraction\"),this.pageElementsList.splice(0,this.pageElementsList.length)},sight:function(){var t=this;$.each(this.pageElementsList,function(e,n){var o=t.scrollTopn.top;if(1!==n.visible||o){if(0===n.visible&&o){if(t.sendLog(\"new_view\",{type:\"sight\",resid:n.id,action:\"in\",t:(new Date).getTime()}),bds.comm.orderplay&&bds.comm.orderplay.length&&\"L\"==n.id.substr(0,1)&&bds.comm.pageSize){var i=(parseInt(n.id.substr(1))-1)%bds.comm.pageSize,r=bds.comm.orderplay[i];\nr&&!r.itime&&(r.itime=(new Date).getTime())}n.visible=1}}else{if(t.sendLog(\"new_view\",{type:\"sight\",resid:n.id,action:\"out\",t:(new Date).getTime()}),bds.comm.orderplay&&bds.comm.orderplay.length&&\"L\"==n.id.substr(0,1)&&bds.comm.pageSize){var i=(parseInt(n.id.substr(1))-1)%bds.comm.pageSize,r=bds.comm.orderplay[i];r&&(r.time+=(new Date).getTime()-r.itime,r.itime=(new Date).getTime())}n.visible=0}})},collectPoint:function(t){function e(){r[o]=setTimeout(function(){r.sendLog(\"new_view\",n(t)),r[i]=!1,r.sight(),r[i]?e():r[o]=null\n},1e3)}function n(t){if(\"resize\"===t){var e=$(window);return r.windowHeight=e.height(),r.windowWidth=e.width(),{type:\"resize\",t:(new Date).getTime(),height:r.windowHeight,width:r.windowWidth}}if(\"scroll\"===t){var n=$(document);return r.scrollTop=n.scrollTop(),r.scrollLeft=n.scrollLeft(),{type:\"scroll\",t:(new Date).getTime(),offsetX:r.scrollTop,offsetY:r.scrollLeft}}}var o=t+\"Time\",i=t+\"Change\",r=this;null===r[o]&&e()},collect:function(){this.init();var t=this;null!==this.resizeTime&&clearTimeout(this.resizeTime),this.resizeTime=null,null!==this.scrollTime&&clearTimeout(this.scrollTime),this.scrollTime=null,$(window).bind(\"focus.useraction\",function(){t.sendLog(\"new_view\",{type:\"focus\",t:(new Date).getTime()})\n}).bind(\"blur.useraction\",function(){t.sendLog(\"new_view\",{type:\"blur\",t:(new Date).getTime()})}).bind(\"resize.useraction\",function(e){t.resizeChange=!0,t.collectPoint(\"resize\",e)}).bind(\"scroll.useraction\",function(e){t.scrollChange=!0,t.collectPoint(\"scroll\",e)}),this.sight()},outInterface:function(){var t=this;return{collect:function(){t.collect()},destroy:function(){t.destroy()}}}},bds.se.userAction=(new t).outInterface()}(),bds.comm.recommends={},bds.comm.recommends.recommWidth=0,bds.se.recommend=function(t){var e=this;\ne.op=$.extend({},e._default,t),e.id=e.op.target.attr(\"id\"),e.init()},bds.se.recommend.prototype={constructor:bds.se.recommend,__init__:!1,currInstance:null,recommDom:null,arrowDom:null,cssDom:null,loadDom:null,global:{},_default:{target:\"\",arrowOffset_s:-54,arrowOffset_l:-151,container_s:276,container_l:368,startOpacity:.3,endOpacity:1},init:function(){var t=this;t.currInstance&&t.currInstance.id==t.id||(t.delay={overIcon:null,loader:null,overArrow:null},t.doWhat(function(){t.__init__||(bds.se.recommend.prototype.__init__=!0,t.createRecommDom()),t.createArrowDom(),t.delay.overArrow=setTimeout(function(){var e=t.op.arrowDom.find(\".rrecom-btn\");\n\"none\"==e.css(\"display\")&&e.show(),t.moveArrow(function(){e.addClass(\"rrecom-btn-hover\"),t.showRecommDom()})},100)}))},dispose:function(){bds.se.recommend.prototype.currInstance=null,bds.se.recommend.prototype.recommDom&&bds.se.recommend.prototype.recommDom.remove(),bds.se.recommend.prototype.cssDom&&bds.se.recommend.prototype.cssDom.remove(),bds.comm.recommends={},bds.se.recommend.prototype.__init__=!1,$(window).off(\"resize.recommend container_resize.recommend scroll.recommend\")},createArrowDom:function(){var t=this,e=t.op.target.find(\".rrecom-btn-parent\");\nif(e.length)t.op.arrowDom=e;else{var n=['','',\"\",\"\",\"\"].join(\"\");t.op.arrowDom=$(n),t.op.arrowDom.on(\"click\",\".rrecom-btn\",function(){t.hideRecommDom()}),t.op.target.css({position:\"relative\"}).append(t.op.arrowDom)}},resetArrow:function(){var t=this;t.op.arrowDom.css({right:t.op.arrowOffset_s}).removeClass(\"rrecom-btn-click rrecom-btn-moving\").find(\".rrecom-btn\").stop().hide().removeClass(\"rrecom-btn-hover\")\n},setArrowPos:function(){var t=this;t.currInstance&&(\"l\"===bds.comm.containerSize?t.currInstance.op.arrowDom.css(\"right\",t.op.arrowOffset_l):t.currInstance.op.arrowDom.css(\"right\",t.op.arrowOffset_s))},moveArrow:function(t){var e=this,n={opacity:e.op.endOpacity};n.right=\"l\"===bds.comm.containerSize?e.op.arrowOffset_l:e.op.arrowOffset_s,e.op.arrowDom.stop().addClass(\"rrecom-btn-moving rrecom-btn-click\").animate(n,0,function(){e.currInstance&&e.currInstance!==e&&e.currInstance.resetArrow(),t()})},log:function(t){var e={},n=this.op.target.attr(\"data-click\"),o=this.op.target.attr(\"srcid\"),i=this.op.target.attr(\"tpl\"),r=this.op.target.attr(\"mu\");\nif(o&&(e.rsv_srcid=o),i&&(e.rsv_tpl=i),r&&(e.mu=r),n&&$.extend(e,$.parseJSON(n)),e.p1&&!e.p5&&(e.p5=e.p1),e.p5&&!e.p1&&(e.p1=e.p5),!e.p1&&!e.p5)for(var s=$(\"#content_left\").get(0),a=s.children,d=1,l=0,u=a.length;u>l;l++)if(1==a[l].nodeType&&a[l].className&&/\\bresult(\\-op)?\\b/.test(a[l].className)){if(a[l]===this.op.target.get(0)){e.p1=d,e.p5=d;break}d++}e.fm=\"beha\";var m=this.op.target.find(\".t>a\").eq(0);return e.rsv_re_fcurl=m.length?m.attr(\"href\"):r,e.rsv_re_fcurl=e.rsv_re_fcurl||\"\",e.rsv_re_fcurl=encodeURIComponent(e.rsv_re_fcurl),c($.extend(e,t))\n},getLeftP:function(){var t=this.op.target.attr(\"data-click\");return t=$.parseJSON(t)||{},t.p1&&!t.p5&&(t.p5=t.p1),t.p5&&!t.p1&&(t.p1=t.p5),t.p5||t.p1||(t.p1=1,t.p5=1),{p1:t.p1,p5:t.p5}},s_log:function(){this.log({rsv_re_fc:2})},setCacheData:function(t){bds.comm.recommends[this.id]=t},getCacheData:function(){return bds.comm.recommends[this.id]},doWhat:function(t){var e=this.getCacheData();\"[NO DATA]\"!==e&&(e?t():this.getRemoteData(t))},getJsonp:function(t){var e=this.op.target.find(\".t>a\").eq(0),n=(e.length?e.attr(\"href\"):this.op.target.attr(\"mu\"))||\"\",o=n&&n.match(/.*url=([^&]*).*/),i=bds.comm.query;\nif(o&&o.length&&o.length>0&&o[1]){n=o[1];var r=\"http://lcr.open.baidu.com/link?url=\"+encodeURIComponent(n)+\"&query=\"+encodeURIComponent(i),s=window.bds&&bds.util&&bds.util.domain&&bds.util.domain.get(r);return $.ajax({url:s,dataType:\"jsonp\",jsonp:\"cb\",data:{data_name:t,ie:\"utf-8\",oe:\"utf-8\",format:\"json\",t:Date.parse(new Date)}})}},getRemoteData:function(t){var e=this,n=\"recommend_common_merger_online\";$.when(this.getJsonp(n)).then(function(n){n&&n.data&&n.data.length&&n.data[0]?(n.data[0].hintData&&e.asynClkRcmd(n.data[0].hintData),(n.data[0].extData||n.data[0].tplData)&&(e.setCacheData(n.data),t())):e.setCacheData(\"[NO DATA]\")\n},function(){})},asynClkRcmd:function(t){var e=this,t=t[0]||{},n=$(\"#wrapper_wrapper\");if(t&&t.linkInfo){var o=e.op.target.find(\".c-recommend\"),i=o.find(\"a\"),r=t.tip||\"为您推荐:\";if(t.defaultHide,i&&i.length&&(i.remove(),o.append(e.buildRcmdDom(t))),!o||!o.length){var s=$('
                    '+r+\"
                    \");n.find(\".c-recommend\").hide(),s.append(e.buildRcmdDom(t)),e.op.target.append(s)}}},buildRcmdDom:function(t){for(var e=this,n=\"\",o=t.linkInfo,i=0,r=o.length;r>i;i++){var s=o[i].txt,a=o[i].wd,c=o[i].sa,d=\"c-gap-left-large\";\n0==i&&(d=\"\");var l=\"wd=\"+a+\"&rsv_crq=\"+c+\"&bs=\"+bds.comm.query,u=e.buildURL(l);n+=\"\"+s+\"\"}return n},buildURL:function(t){var e=\"/s?\",n={tn:bds.comm.tn},o=$(\"#form\"),i=o.find(\"input[name=rsv_idx]\"),r=\"\";n.rsv_idx=i.length?i.val():\"\";for(var s in n)n.hasOwnProperty(s)&&n[s]&&(r+=s+\"=\"+encodeURIComponent(n[s])+\"&\");return e+r+t},renderTpl:function(t,e){var n=this;if(t&&e){var o={};return o.right_recommends_merge=function(t){function o(e,o){var i,r='
                    #{1}
                    ',s='
                    ',a='
                    ',c=\"
                    \",d=\"\",l=(e.showrow,e.shownums),u={rsv_srcid:t.StdStg||0};\ne.list&&!e.list.length&&(e.list=[e.list]),d+=$.format(r,e.subtitle,e.subtitle,$.stringify(u)),d+='
                    ';for(var m=n.op.target.find(\".t>a\").eq(0),p=m.length?m.attr(\"href\"):n.op.target.attr(\"mu\"),f=0,h=e.list.length;h>f;f++){i=e.list[f];var g={rsv_re_ename:i.name,rsv_re_uri:i.uri,rsv_re_fcpoi:o+\"-\"+(f+1),rsv_clk_url:p},b=n.buildURL(i.params+\"&euri=\"+(i.uri||\"\"));if(f==l)break;f%4===0&&(d+=s),bds.util&&bds.util.domain&&bds.util.domain.get&&(i.img=bds.util.domain.get(i.img)),d+=$.format(a,b,i.img,i.name,b,$.subByte(i.name,20),(f+1)%4===0?\" c-span-last rrecom-item-rowLast\":(f+1)%4===3?\" rrecom-item-s\":\"\",$.stringify(g),i.attrpic),d+=c,((f+1)%4===0||f==h-1)&&(d+=c)\n}return d+=c,d+=c}var t=t||e,i=\"\",r=12,s=0;t.card&&!t.card.length&&(t.card=[t.card]);for(var a=0,c=t.card.length;c>a;a++){var d=t.card[a];if(s+=parseInt(d.shownums||0),s>r)break;i+=o(d,a+1)}return i},o[t]?o[t]():void 0}},render:function(t){for(var e=\"\",n=0;n','
                    ','
                    ','','
                    ',\"
                    \",\"
                    \"].join(\"\"),e=\"https://ss1.bdstatic.com/5eN1bjq8AAUYm2zgoY3K/r/www/cache/static/protocol/https/global/img/rrecom_icon_e34d796.png\",n=[\"\"].join(\"\");\nbds.se.recommend.prototype.recommDom=$(t),bds.se.recommend.prototype.cssDom=$(n),bds.se.recommend.prototype.loadDom=this.recommDom.find(\".rrecom-ajax-loading\"),this.setRecommSize(),$(\"body\").append(this.cssDom).append(this.recommDom.hide()),this.bindRecommEvent(),$(window).trigger(\"container_resize.recommend\",bds.comm.containerSize);var o=$(\"#foot\");\"static\"===o.css(\"position\")&&o.css({position:\"relative\",\"z-index\":104})},setRecommSize:function(){var t=$(\"#content_right\"),e=$(\"#wrapper_wrapper\"),n=$(\"body\"),o=$(window),i=t.offset(),r={w:n.width()},s={h:o.height()},a=o.scrollTop();\ne.prevAll().each(function(){var t;return\"div\"===this.nodeName.toLowerCase()?(t=parseInt($(this).css(\"margin-bottom\")),bds.se.recommend.prototype.global.topGap=isNaN(t)?0:t,!1):void 0}),bds.se.recommend.prototype.global.topDom=e,bds.se.recommend.prototype.global.headDom=$(\"#head\");var c={top:this.global.topDom.offset().top-this.global.topGap},d=this.global.headDom.offset().top-a+56;this.recommDom.height(s.h),bds.comm.recommends.recommWidth=r.w-i.left-2,this.recommDom.css({width:r.w-i.left-2,top:a<=c.top-d?c.top:d,position:a<=c.top-d?\"absolute\":\"fixed\",left:i.left})\n},setRecommPosition:function(){this.setRecommTop(),this.setRecommLeft()},setRecommTop:function(){var t=$(window).scrollTop(),e={top:this.global.topDom.offset().top-this.global.topGap},n=this.global.headDom.offset().top-t+56;this.recommDom.css({top:t<=e.top-n?e.top:n,position:t<=e.top-n?\"absolute\":\"fixed\"}).find(\".rrecom-container\").css({\"margin-top\":\"0px\"}),bds.se.recommend.prototype.global.originalTop=t0?t.recommDom.find(\".rrecom-content\").css(\"width\",t.op.container_s-17+\"px\"):t.recommDom.find(\".rrecom-content\").css(\"width\",t.op.container_l-17+\"px\"),bds.se.recommend.prototype.currInstance=t,t.render(t.getCacheData())\n},showLoading:function(){this.loadDom.show()},hideLoading:function(){this.loadDom.hide()}},$(window).one(\"swap_end\",function(){bds.comm.upn.ie&&6==bds.comm.upn.ie||$(document).on(\"click\",\"#content_left .result .t>a, #content_left .result-op .t>a, .op-se-listen-recommend\",function(t){if(!t.ctrlKey&&\"0\"==bds.comm.urlRecFlag){var e=$(this).closest(\".result, .result-op\");new bds.se.recommend({target:e})}})}),$(window).on(\"swap_begin\",function(){bds.se.recommend.prototype.currInstance&&bds.se.recommend.prototype.hideRecommDom(),bds.se.recommend.prototype.currInstance=null,bds.se.recommend.prototype.__init__=!1,bds.comm.recommends={}\n}),bds.se.asynAds=function(t){var e=t.dom||\"\",n=t.id||\"\",o=t.tnp||\"\",i=t.wd||\"\",r=t.cb&&\"function\"==typeof t.cb?t.cb:null;if(e&&o&&i&&n){c({fm:\"inlo\",rsv_ad:\"ad_asyn_start\"});for(var s=[\"wd\",\"tnp\",\"tn\",\"pn\",\"bs\",\"fenlei\",\"adext\"],a=\"ie=utf-8&oe=utf-8&dsp=pc\",d=0;de.time?-1:t.time\"+o.css+\"\",i+=o.html,i+=\"\"}}),o.html(i),$(document).scrollTop()o.position().top&&c({fm:\"inlo\",rsv_ad:\"ad_asyn_shake\"}),r&&r()}else c({fm:\"inlo\",rsv_ad:\"ad_asyn_net_error\"})},error:function(){c({fm:\"inlo\",rsv_ad:\"ad_asyn_net_error\"})}})}else c({fm:\"inlo\",rsv_ad:\"ad_asyn_param_error\"})\n},!function(){function t(){c=Math.random()}function e(){d=1e3*(new Date).getTime()+Math.round(1e3*Math.random())-149e13,c>=.005&&.0051>c&&(o(),i(),r(),s())}function n(){var t=Math.round(1e3*Math.random())%u.length,e=new Image,n=new Image,o=u[t];e.onload=function(){n.src=\"//www.baidu.com/nocache/fesplg/s.gif?lid=\"+d+\"&url=\"+encodeURIComponent(o)+\"&time=\"+((new Date).getTime()-i)+\"&suc=1&type=aboard&dev=pc&protocol=\"+encodeURIComponent(location.protocol)+\"&ran=\"+(new Date).getTime()},e.onerror=function(){n.src=\"//www.baidu.com/nocache/fesplg/s.gif?lid=\"+d+\"&url=\"+encodeURIComponent(o)+\"&time=&suc=0&type=aboard&dev=pc&protocol=\"+encodeURIComponent(location.protocol)+\"&ran=\"+(new Date).getTime()\n};var i=(new Date).getTime();e.src=o+\"?ran=\"+(new Date).getTime()}function o(){var t=new Image;t.onload=function(){a(\"cndtestsuc\")},t.onerror=function(){a(\"cndtesterr\")},t.src=\"//ss0.bdstatic.com/5bd1bjqh_Q23odCf/static/wiseindex/img/w_icon2.png?ran\"}function i(){var t=new Image;t.onload=function(){a(\"cndgsstestsuc\")},t.onerror=function(){a(\"cndgsstesterr\")},t.src=\"//gss0.bdstatic.com/5bd1bjqh_Q23odCf/static/wiseindex/img/w_icon2.png?ran\"}function r(){var t=new Image;t.onload=function(){a(\"cndidctestsuc\")\n},t.onerror=function(){a(\"cndidctesterr\")},t.src=\"//m.baidu.com/logo.gif\"}function s(){var t=new Image;t.onload=function(){a(\"cndss0bdtestsuc\")},t.onerror=function(){a(\"cndss0bdtesterr\")},t.src=\"//ss0.baidu.com/5bd1bjqh_Q23odCf/static/wiseindex/img/w_icon2.png?ran\"}function a(t,e){if(t){e=e||{},e.st=t,e.fm=\"inlo\";var n=\"&terminal=pc\";for(var o in e)n+=\"&\"+o+\"=\"+e[o];var i=new Image;i.src=bds.util.domain.get(l+n)}}var c,d=\"\",l=\"http://sestat.baidu.com/cm.gif?type=cdnmonitor\",u=[\"https://sptidchk.baidu.com/s.gif\",\"https://sptidcsfo.baidu.com/s.gif\",\"https://sptidcjp.baidu.com/s.gif\",\"https://sptidcsin.baidu.com/s.gif\"];\nlocation.protocol.indexOf(\"https\")>-1&&$(window).on(\"swap_dom_ready\",function(){t()}).on(\"swap_end\",function(){e()}),\"70\"==bds.comm.bfe_sample&&$(window).on(\"swap_end\",function(){d=1e3*(new Date).getTime()+Math.round(1e3*Math.random())-149e13,n()})}(),!function(){var t,e,n=bds&&bds.util&&bds.util.domain&&bds.util.domain.get(\"http://sensearch.baidu.com/sensearch/selecttext\");$(window).one(\"swap_end\",function(){bds.comm.upn&&bds.comm.upn.ie&&6==bds.comm.upn.ie||$(document).on(\"mousedown\",function(n){t&&0==$(n.target).closest(t.getDom()).length&&(t.getDom().hide(),e&&e.abort())\n}).on(\"mouseup\",function(o){var i,r,s,a,c;if(!t||!$(o.target).closest(t.getDom()).length)try{setTimeout(function(){if(window.getSelection){if(i=window.getSelection(),0==i.rangeCount)return;r=i.getRangeAt(0),s=r.getBoundingClientRect(),a=$.trim(i.toString()),c=$(\"#text\"==r.commonAncestorContainer.nodeName?r.commonAncestorContainer.parentNode:r.commonAncestorContainer)}else document.selection&&(i=document.selection.createRange(),r=i,s=r.getBoundingClientRect(),a=$.trim(i.text.toString()),c=$(r.parentElement()));\nif(a&&a.length>1&&c.closest(\"#content_left .result .c-abstract,#content_left .result .t\").length){e&&e.abort();var o=/[^(\\u4E00-\\u9FA5)]+/i;if(!o.test(a))return;e=$.ajax({url:n,dataType:\"jsonp\",jsonp:\"cb\",timeout:5e3,data:{q:a},success:function(e){var n=\"\";if(e&&e.data&&e.data.type&&e.data.to&&\"zh\"==e.data.to&&e.data.result&&e.data.result.length&&e.data.result!=a)if(1==e.data.type)for(var o=e.data.result,i=0,r=Math.min(o.length,2);r>i;i++)n+=(0==i?\"\":\"
                    \")+(o[i].pre?o[i].pre+\" \":\"\"),n+=o[i].cont?$.subByte(o[i].cont,46*(1==r?2:1)+1):\"\";\nelse 2==e.data.type&&(n='译:'+e.data.result);if(n){t=t||new bds.se.tip({target:$(\"body\"),mode:\"none\",content:'
                    ',align:\"left\",arrow:{has:1,offset:10}});var c=t.getDom();c.find(\".translateContent\").html('

                    '+n+\"

                    \"),c.css({top:s.bottom+$(window).scrollTop()+8,left:(s.left+s.right)/2+$(window).scrollLeft()-20}).show(),ns_c({rsv_trans_type:\"showresult\",rsv_trans_st:encodeURIComponent(a),rsv_qid:bds.comm.qid||\"\"})\n}}})}},0)}catch(o){}})}),$(window).on(\"swap_begin\",function(){t=null,e&&e.abort()})}(),!function(){function t(t){return t=i(t),t.attr(\"id\")||t.attr(\"data-click\")&&$.parseJSON(t.attr(\"data-click\")).rsv_srcid||t.attr(\"class\")||\"-1\"}function e(t){var e=i(t),n=e.clone();n.unbind(),n.children(\".fb-list-container\").remove(),n.children(\".fb-list-container-first\").remove(),n.children(\".fb-hint-tip\").remove(),n.removeAttr(\"style\"),n.css(\"margin\",\"0\"),t.append(n),t.append(\"
                    \"),t.addClass(\"fb-list-container-hover\")\n}function n(t){t.empty(),t.removeClass(\"fb-list-container-hover\")}function o(){$(\".fb-hint-tip\").remove(),$(\".fb-list-container-first\").remove(),bds.se.ShortCut.ldialog&&bds.se.ShortCut.ldialog.destory(),bds.se.ShortCut.rdialog&&bds.se.ShortCut.rdialog.destory(),bds.se.ShortCut.ldialog=0,bds.se.ShortCut.rdialog=0,$(\".fb-mask\").remove(),$(\".fb-list-container\").remove()}function i(t){return t.closest(t.closest(\"#rs\").length?\"#rs\":t.closest(\"#con-ar\").length?\".result-op\":\"#content_left > div\")}function r(){var t=$(\"#content_left > div\");\nt.append(\"
                    \"),$(\"#content_left > div\").css(\"overflow\",\"visible\"),$(\".leftBlock .fb-list-container\").remove(),$(\".hit_top_new .fb-list-container\").remove(),t.each(function(){$(this).find(\".fb-list-container\").css(\"width\",$(this).width()+20),$(this).find(\".fb-list-container\").css(\"height\",$(this).height()+10)}),$(\".c-container\").first().append(\"
                    \"),$(\".c-container\").first().find(\".fb-list-container-first\").css(\"width\",$(\".c-container\").first().width()+20),$(\".c-container\").first().find(\".fb-list-container-first\").css(\"height\",$(\".c-container\").first().height()+10),$(\".c-container\").first().append('
                    鼠标点击,可对单条结果进行反馈
                    ');\nvar e=$(\"#rs\");e.append(\"
                    \"),e.find(\".fb-list-container\").css(\"width\",e.width()+20),e.find(\".fb-list-container\").css(\"height\",e.height()+10);var n=$(\"#con-ar .result-op\");n.append(\"
                    \"),n.each(function(){$(this).find(\".fb-list-container\").css(\"width\",$(this).width()+20),$(this).find(\".fb-list-container\").css(\"height\",$(this).height()+10)})}function s(t){var e=\"\";e=e+'',e=e+'
                    '+t[0].value+'
                    ';\nfor(var n=0;n\"+t[n].value+\"
                    \";return e+=\"
                    \"}function a(t,e){this.init=function(){var n=new Date;return this.title=t,this.query=decodeURIComponent(bds.comm.query),this.srcid=e&&e.attr(\"srcid\")||\"-1\",this.tpl=e&&e.attr(\"tpl\")||\"\",this.url=window.location.href||\"\",this.time=n.getFullYear()+\"/\"+(n.getMonth()+1)+\"/\"+n.getDate()+\" \"+n.getHours()+\":\"+n.getMinutes()+\":\"+n.getSeconds(),this.username=bds.comm.username||\"\",this.order=e&&e.attr(\"id\")||\"\",this.entry=\"1\",this.build(),this.bindEvent(),this.render(),this\n},this.build=function(){var t=\"\",e=[{key:\"27468\",value:\"申请删除提示词\"},{key:\"27464\",value:\"内容或图片陈旧\"},{key:\"27465\",value:\"变形、错乱、乱码等问题\"},{key:\"27469\",value:\"页面结果与搜索词无关\"},{key:\"27467\",value:\"其他问题及建议\"}],n=s(e),o='
                    ',i=\"\",r=\"\";bds.se.ShortCut.uploadImg&&(i='
                    包含屏幕截图
                    ',r='
                    ');\nvar a='
                    ';t='
                    ×

                    搜索结果反馈

                    '+n+o+i+r+a+'
                    请填写描述反馈
                    请留下您的联系方式
                    邮箱格式不正确
                    提交反馈
                    ×

                    非常感谢

                    提交成功
                    感谢您的宝贵意见
                    ';\nvar c=document.createElement(\"div\");c.id=\"fb_baidu_right_dialog\",c.className=\"fb-feedback-right-dialog\",c.className=\"fb-feedback-right-dialog\",c.setAttribute(\"data-html2canvas-ignore\",\"true\"),c.innerHTML=t,this.dom=c},this.bindEvent=function(){var t=this;$(this.dom).find(\".fb-close\").on(\"click\",function(){o()}),$(this.dom).find(\"#fb_right_post_save\").on(\"click\",function(){$(t.dom).find(\".fb-textarea textarea\").val()?-1==[27468].indexOf(Number($(t.dom).find(\".fb-select-value\").val()))||$(t.dom).find(\".fb-email\").val()?$(t.dom).find(\".fb-email\").val()&&!/^(\\w)+(\\.\\w+)*@(\\w)+((\\.\\w{2,3}){1,3})$/.test($(t.dom).find(\".fb-email\").val())?($(t.dom).find(\".fb-hint-error-email\").css(\"display\",\"block\"),setTimeout(function(){$(t.dom).find(\".fb-hint-error-email\").css(\"opacity\",\"1\"),setTimeout(function(){$(t.dom).find(\".fb-hint-error-email\").removeAttr(\"style\")\n},1500)},50)):t.post():($(t.dom).find(\".fb-hint-no-email\").css(\"display\",\"block\"),setTimeout(function(){$(t.dom).find(\".fb-hint-no-email\").css(\"opacity\",\"1\"),setTimeout(function(){$(t.dom).find(\".fb-hint-no-email\").removeAttr(\"style\")},1500)},50)):($(t.dom).find(\".fb-hint-no-content\").css(\"display\",\"block\"),setTimeout(function(){$(t.dom).find(\".fb-hint-no-content\").css(\"opacity\",\"1\"),setTimeout(function(){$(t.dom).find(\".fb-hint-no-content\").removeAttr(\"style\")},1500)},50))}),$(this.dom).find(\".fb-cut-input\").on(\"click\",function(){$(t.dom).find(\".fb-cut-input\").hasClass(\"c-icon\")?($(t.dom).find(\".fb-cut-input\").removeClass(\"c-icon\"),$(t.dom).find(\".fb-cut-input\").removeClass(\"c-icon-success\"),$(t.dom).find(\".fb-canvas-block\").css(\"display\",\"none\")):($(t.dom).find(\".fb-cut-input\").addClass(\"c-icon\"),$(t.dom).find(\".fb-cut-input\").addClass(\"c-icon-success\"),$(t.dom).find(\".fb-canvas-block\").css(\"display\",\"block\"))\n}),$(this.dom).find(\".fb-type-selected\").on(\"click\",function(){\"block\"==$(t.dom).find(\".fb-type-container\").css(\"display\")?$(t.dom).find(\".fb-type-container\").hide():$(t.dom).find(\".fb-type-container\").show()}),$(this.dom).find(\".fb-type-item\").on(\"click\",function(e){$(t.dom).find(\".fb-type-container\").hide(),$(t.dom).find(\".fb-type-selected\").html($(e.currentTarget).text()+\"
                    \"),$(t.dom).find(\".fb-select-value\").val($(e.currentTarget).attr(\"value\"))}),$(this.dom).find(\".fb-des-content\").on(\"click\",function(){$(\".c-container\").first().children(\".fb-hint-tip\").remove(),$(\".c-container\").first().children(\".fb-list-container-first\").remove()\n})},this.render=function(){$(\"body\").append(this.dom)},this.grayed=function(t){t?$(this.dom).css(\"visibility\",\"hidden\"):$(this.dom).removeAttr(\"style\")},this.destory=function(){$(this.dom).remove(),$(document).off(\"scroll.feedback\")},this.post=function(){this.content=$(this.dom).find(\".fb-des-content\").val(),this.type=$(this.dom).find(\".fb-select-value\").val(),this.email=$(this.dom).find(\".fb-email\").val(),data={product_type:26138,content:this.content,type:this.type,img_base64:bds.se.ShortCut.img_base64,email:this.email,query:this.query,srcid:this.srcid,tpl:this.tpl,url:this.url,time:this.time,username:this.username,order:this.order,entry:this.entry,platform:\"pc\"},bds.se.ShortCut.uploadImg?$.post(bds.se.ShortCut.domain,data).success(function(t){\"Success\"==jQuery.parseJSON(t).status||alert(decodeURIComponent(jQuery.parseJSON(t).errors))\n}).error(function(){alert(\"fail\")}):$.ajax({url:bds.se.ShortCut.domain,dataType:\"jsonp\",data:data,jsonp:\"cb1\"}).success(function(t){\"Success\"==t.status||alert(decodeURIComponent(jQuery.parseJSON(t).errors))}).error(function(){alert(\"fail\")}),$(this.dom).find(\".fb-modal \").remove(),$(this.dom).find(\".fb-mask\").remove(),$(this.dom).find(\".fb-success\").css(\"display\",\"block\"),setTimeout(function(){o()},1e3)},this.init()}function c(t,e){this.init=function(){var e=new Date;if(this.query=decodeURIComponent(bds.comm.query),this.srcid=t&&t.attr(\"srcid\")||\"-1\",this.tpl=t&&t.attr(\"tpl\")||\"\",this.url=window.location.href||\"\",this.time=e.getFullYear()+\"/\"+(e.getMonth()+1)+\"/\"+e.getDate()+\" \"+e.getHours()+\":\"+e.getMinutes()+\":\"+e.getSeconds(),this.username=bds.comm.username||\"\",t)if(t.closest(\"#con-ar\").length){this.order=\"con-ar\";\nvar n=[{key:\"27468\",value:\"申请删除提示词\"},{key:\"27464\",value:\"内容或图片陈旧\"},{key:\"27465\",value:\"变形、错乱、乱码等问题\"},{key:\"27469\",value:\"页面结果与搜索词无关\"},{key:\"27467\",value:\"其他问题及建议\"}];this.content_tips_div=s(n)}else if(t.attr(\"id\")&&\"rs\"==t.attr(\"id\")){this.order=\"rs\";var n=[{key:\"27468\",value:\"申请删除提示词\"}];this.content_tips_div=s(n)}else if(t.attr(\"tpl\")&&\"se_com_default\"!=t.attr(\"tpl\")){this.order=t.attr(\"id\")||\"-1\";var n=[{key:\"27464\",value:\"内容或图片陈旧\"},{key:\"27465\",value:\"变形、错乱、乱码等问题\"},{key:\"27466\",value:\"这条结果与搜索词无关\"},{key:\"27467\",value:\"其他问题及建议\"}];\nthis.content_tips_div=s(n)}else if(t.attr(\"tpl\")){this.order=t.attr(\"id\")||\"-1\";var n=[{key:\"27463\",value:\"申请删除或更新这条信息\"},{key:\"27464\",value:\"内容或图片陈旧\"},{key:\"27465\",value:\"变形、错乱、乱码等问题\"},{key:\"27466\",value:\"这条结果与搜索词无关\"},{key:\"27467\",value:\"其他问题及建议\"}];this.content_tips_div=s(n)}else{this.order=\"ec\";var n=[{key:\"27470\",value:\"推广信息侵权\"},{key:\"27471\",value:\"推广信息质量差\"},{key:\"27472\",value:\"推广信息与搜索词无关\"},{key:\"27473\",value:\"其他问题及产品建议\"}];this.content_tips_div=s(n)}return this.entry=\"2\",this.top=t.offset().top-4,this.left=t.closest(\"#content_right\").length?t.offset().left-390-23:t.offset().left+t.width()+30,this.build(),this.bindEvent(),this.render(),this\n},this.build=function(){var t=\"\",e='
                    ',n='
                    ';t='
                    ×

                    单条结果反馈

                    '+this.content_tips_div+e+n+'
                    请填写描述反馈
                    请留下您的联系方式
                    邮箱格式不正确
                    提交反馈
                    ×

                    非常感谢

                    提交成功
                    感谢您的宝贵意见
                    ';\nvar o=document.createElement(\"div\");o.id=\"fb_baidu_list_dialog\",o.className=\"fb-feedback-list-dialog\",o.setAttribute(\"data-html2canvas-ignore\",\"true\"),o.innerHTML=t,this.dom=o,$(this.dom).css(\"top\",this.top),$(this.dom).css(\"left\",this.left),\"con-ar\"==this.order&&$(this.dom).attr(\"class\",\"fb-feedback-list-dialog-left\")},this.bindEvent=function(){var t=this;$(this.dom).find(\".fb-close\").on(\"click\",function(){t.destory(),n($(\".fb-list-container\")),bds.se.ShortCut.key=0,bds.se.ShortCut.rdialog&&bds.se.ShortCut.rdialog.grayed(0),bds.se.ShortCut.rdialog||o()\n}),$(this.dom).find(\"#fb_list_post_save\").on(\"click\",function(){$(t.dom).find(\".fb-textarea textarea\").val()?-1==[27468,27463].indexOf(Number($(t.dom).find(\".fb-select-value\").val()))||$(t.dom).find(\".fb-email\").val()?$(t.dom).find(\".fb-email\").val()&&!/^(\\w)+(\\.\\w+)*@(\\w)+((\\.\\w{2,3}){1,3})$/.test($(t.dom).find(\".fb-email\").val())?($(t.dom).find(\".fb-hint-error-email\").css(\"display\",\"block\"),setTimeout(function(){$(t.dom).find(\".fb-hint-error-email\").css(\"opacity\",\"1\"),setTimeout(function(){$(t.dom).find(\".fb-hint-error-email\").removeAttr(\"style\")\n},1500)},50)):t.post():($(t.dom).find(\".fb-hint-no-email\").css(\"display\",\"block\"),setTimeout(function(){$(t.dom).find(\".fb-hint-no-email\").css(\"opacity\",\"1\"),setTimeout(function(){$(t.dom).find(\".fb-hint-no-email\").removeAttr(\"style\")},1500)},50)):($(t.dom).find(\".fb-hint-no-content\").css(\"display\",\"block\"),setTimeout(function(){$(t.dom).find(\".fb-hint-no-content\").css(\"opacity\",\"1\"),setTimeout(function(){$(t.dom).find(\".fb-hint-no-content\").removeAttr(\"style\")},1500)},50))}),$(this.dom).find(\".fb-type-selected\").on(\"click\",function(){\"block\"==$(t.dom).find(\".fb-type-container\").css(\"display\")?$(t.dom).find(\".fb-type-container\").hide():$(t.dom).find(\".fb-type-container\").show()\n}),$(this.dom).find(\".fb-type-item\").on(\"click\",function(e){$(t.dom).find(\".fb-type-container\").hide(),$(t.dom).find(\".fb-type-selected\").html($(e.currentTarget).text()+\"
                    \"),$(t.dom).find(\".fb-select-value\").val($(e.currentTarget).attr(\"value\"))})},this.render=function(){$(\"body\").append(this.dom)},this.destory=function(){$(this.dom).remove()},this.post=function(){var t=this;this.content=$(this.dom).find(\".fb-des-content\").val(),this.type=$(this.dom).find(\".fb-select-value\").val(),this.email=$(this.dom).find(\".fb-email\").val(),bds.se.ShortCut.get_Snapshot_list(-bds.se.ShortCut.curListDom.offset().left,-bds.se.ShortCut.curListDom.offset().top,bds.se.ShortCut.curListDom.width()+20,bds.se.ShortCut.curListDom.height()+12,function(){data={product_type:26138,content:t.content,type:t.type,img_base64:bds.se.ShortCut.img_base64_list,email:t.email,query:t.query,srcid:t.srcid,tpl:t.tpl,url:t.url,time:t.time,username:t.username,order:t.order,entry:t.entry,platform:\"pc\"},e&&(data.ala=1),bds.se.ShortCut.uploadImg?$.post(bds.se.ShortCut.domain,data).success(function(t){\"Success\"==jQuery.parseJSON(t).status||alert(decodeURIComponent(jQuery.parseJSON(t).errors))\n}).error(function(){alert(\"fail\")}):$.ajax({url:bds.se.ShortCut.domain,dataType:\"jsonp\",data:data,jsonp:\"cb1\"}).success(function(t){\"Success\"==t.status||alert(decodeURIComponent(t.errors))}).error(function(){alert(\"fail\")})}),$(this.dom).find(\".fb-modal \").remove(),$(this.dom).find(\".fb-mask\").remove(),$(this.dom).find(\".fb-success\").css(\"display\",\"block\"),setTimeout(function(){o()},1e3)},this.init()}bds&&bds.se&&(bds.se.ShortCut={base_url_path:\"http://f3.baidu.com\",up_file:!1,is_feedbacking:!1,product_id:0,entrance_id:0,send_img:!1,img_data:\"\",onlyUpFile:!1,pro_data:\"\",scrollTop:0,ldiaInf:{},rdiaInf:{},canvas_block_height:0,key:0,domain:bds.util.domain.get(\"api.open.baidu.com\")+\"/pae/common/api/feedback\",img_base64:\"\",img_base64_list:\"\",initRightBar:function(){this.html2canvas(),this._getCss(),this._identifyCanvas()&&this._identifyCors()?(bds.se.ShortCut.uploadImg=!0,this.get_Snapshot()):bds.se.ShortCut.uploadImg=!1\n},_getCss:function(){bds.util.addStyle(\"#content_left > div,#rs,#con-ar .result-op{position: relative;}\")},_identifyCanvas:function(){try{var t=document.createElement(\"canvas\").getContext(\"2d\");return t=null,!0}catch(e){return!1}},_identifyCors:function(){var t=new XMLHttpRequest;return\"withCredentials\"in t},init_ala:function(t){this.html2canvas(),bds.se.ShortCut.uploadImg=this._identifyCanvas()&&this._identifyCors()?!0:!1,$(\"#container\").append(\"
                    \"),t.append(\"
                    \"),t.find(\".fb-list-container\").css(\"width\",t.width()+20),t.find(\".fb-list-container\").css(\"height\",t.height()+10),e(t.find(\".fb-list-container\")),bds.se.ShortCut.ldialog=new c(t,1),bds.se.ShortCut.curListDom=t.find(\".fb-list-container\"),$(\".fb-mask\").on(\"click\",function(){o(),bds.se.ShortCut.ldialog&&bds.se.ShortCut.ldialog.destory()\n})},init_shade:function(){$(\"#container\").append(\"
                    \"),r(),$(\".fb-list-container\").hover(function(t){i($(t.currentTarget)),$(t.currentTarget).children().length||e($(t.currentTarget))},function(e){t($(e.currentTarget))!=bds.se.ShortCut.key&&n($(e.currentTarget))}),$(\".fb-list-container\").on(\"click\",function(o){$(\".c-container\").first().children(\".fb-hint-tip\").remove(),$(\".c-container\").first().children(\".fb-list-container-first\").remove(),bds.se.ShortCut.ldialog&&bds.se.ShortCut.ldialog.destory(),n($(\".fb-list-container\")),t($(o.currentTarget))==bds.se.ShortCut.key?(bds.se.ShortCut.key=0,bds.se.ShortCut.rdialog&&bds.se.ShortCut.rdialog.grayed(0)):(bds.se.ShortCut.key=t($(o.currentTarget)),bds.se.ShortCut.curListDom=$(o.currentTarget),bds.se.ShortCut.ldialog=new c(i($(o.currentTarget))),bds.se.ShortCut.rdialog&&bds.se.ShortCut.rdialog.grayed(1),e($(o.currentTarget)))\n}),$(\".fb-mask\").on(\"click\",function(){bds.se.ShortCut.ldialog&&bds.se.ShortCut.ldialog.destory(),bds.se.ShortCut.key=0,bds.se.ShortCut.rdialog&&bds.se.ShortCut.rdialog.grayed(0),n($(\".fb-list-container\"))})},get_Snapshot:function(){$(window).scrollTop(0);var t=this;bds.se.ShortCut.rdialog=new a,t.init_shade(),$(\".fb-canvas-block\").addClass(\"c-loading\"),html2canvas(document.body,{proxy:bds.util.domain.get(\"f3.baidu.com\")+\"/getProxyImage.php\",onrendered:function(e){$(\".fb-canvas-block\").removeClass(\"c-loading\");\nvar n=document.createElement(\"canvas\");n.width=e.width,n.height=$(\"body\").height();var o=n.getContext(\"2d\");o.drawImage(e,0,0),bds.se.ShortCut.img_base64=n.toDataURL(\"image/png\"),$(\".fb-canvas-block img\").attr(\"src\",n.toDataURL(\"image/png\")),setTimeout(function(){t.canvas_block_height=$(\".fb-canvas-block img\").height()},50),$(document).on(\"scroll.feedback\",function(){var e=$(window).scrollTop(),n=$(document).height(),o=$(window).height();scrollPercent=e/(n-o),$(\".fb-canvas-block img\").css(\"top\",-(t.canvas_block_height-172)*scrollPercent)\n})}})},get_Snapshot_list:function(t,e,n,o,i){html2canvas(document.body,{proxy:bds.util.domain.get(\"f3.baidu.com\")+\"/getProxyImage.php\",onrendered:function(r){var s=document.createElement(\"canvas\");s.width=n,s.height=o;var a=s.getContext(\"2d\");a.drawImage(r,t,e),bds.se.ShortCut.img_base64_list=s.toDataURL(\"image/png\"),i()}})},html2canvas:function(){!function(t,e,n){\"use strict\";function o(e){d.logging&&t.console&&t.console.log&&t.console.log(e)}function i(t,e,n,o,i,r){var s,a,c,l,u=d.Util.getCSS(e,t,i);\nif(1===u.length&&(l=u[0],u=[],u[0]=l,u[1]=l),-1!==u[0].toString().indexOf(\"%\"))c=parseFloat(u[0])/100,a=n.width*c,\"backgroundSize\"!==t&&(a-=(r||o).width*c);else if(\"backgroundSize\"===t)if(\"auto\"===u[0])a=o.width;else if(u[0].match(/contain|cover/)){var m=d.Util.resizeBounds(o.width,o.height,n.width,n.height,u[0]);a=m.width,s=m.height}else a=parseInt(u[0],10);else a=parseInt(u[0],10);return\"auto\"===u[1]?s=a/o.width*o.height:-1!==u[1].toString().indexOf(\"%\")?(c=parseFloat(u[1])/100,s=n.height*c,\"backgroundSize\"!==t&&(s-=(r||o).height*c)):s=parseInt(u[1],10),[a,s]\n}function r(t,e){var n=[];return{storage:n,width:t,height:e,clip:function(){n.push({type:\"function\",name:\"clip\",arguments:arguments})},translate:function(){n.push({type:\"function\",name:\"translate\",arguments:arguments})},fill:function(){n.push({type:\"function\",name:\"fill\",arguments:arguments})},save:function(){n.push({type:\"function\",name:\"save\",arguments:arguments})},restore:function(){n.push({type:\"function\",name:\"restore\",arguments:arguments})},fillRect:function(){n.push({type:\"function\",name:\"fillRect\",arguments:arguments})\n},createPattern:function(){n.push({type:\"function\",name:\"createPattern\",arguments:arguments})},drawShape:function(){var t=[];return n.push({type:\"function\",name:\"drawShape\",arguments:t}),{moveTo:function(){t.push({name:\"moveTo\",arguments:arguments})},lineTo:function(){t.push({name:\"lineTo\",arguments:arguments})},arcTo:function(){t.push({name:\"arcTo\",arguments:arguments})},bezierCurveTo:function(){t.push({name:\"bezierCurveTo\",arguments:arguments})},quadraticCurveTo:function(){t.push({name:\"quadraticCurveTo\",arguments:arguments})\n}}},drawImage:function(){n.push({type:\"function\",name:\"drawImage\",arguments:arguments})},fillText:function(){n.push({type:\"function\",name:\"fillText\",arguments:arguments})},setVariable:function(t,e){n.push({type:\"variable\",name:t,arguments:e})}}}function s(t){return{zindex:t,children:[]}}var a,c,d={};d.Util={},d.Util.trimText=function(t){return function(e){return t?t.apply(e):((e||\"\")+\"\").replace(/^\\s+|\\s+$/g,\"\")}}(String.prototype.trim),d.Util.parseBackgroundImage=function(t){var e,n,o,i,r,s,a,c,d=\" \\r\\n\t\",l=[],u=0,m=0,p=function(){e&&('\"'===n.substr(0,1)&&(n=n.substr(1,n.length-2)),n&&c.push(n),\"-\"===e.substr(0,1)&&(i=e.indexOf(\"-\",1)+1)>0&&(o=e.substr(0,i),e=e.substr(i)),l.push({prefix:o,method:e.toLowerCase(),value:r,args:c})),c=[],e=o=n=r=\"\"\n};p();for(var f=0,h=t.length;h>f;f++)if(s=t[f],!(0===u&&d.indexOf(s)>-1)){switch(s){case'\"':a?a===s&&(a=null):a=s;break;case\"(\":if(a)break;if(0===u){u=1,r+=s;continue}m++;break;case\")\":if(a)break;if(1===u){if(0===m){u=0,r+=s,p();continue}m--}break;case\",\":if(a)break;if(0===u){p();continue}if(1===u&&0===m&&!e.match(/^url$/i)){c.push(n),n=\"\",r+=s;continue}}r+=s,0===u?e+=s:n+=s}return p(),l},d.Util.Bounds=function(t){var e,n={};return t.getBoundingClientRect?(e=t.getBoundingClientRect(),n.top=e.top,n.bottom=e.bottom||e.top+e.height,n.left=e.left,n.width=e.width||e.right-e.left,n.height=e.height||e.bottom-e.top,n):void 0\n},d.Util.getCSS=function(t,o,i){function r(e,n){var o,i=t.runtimeStyle&&t.runtimeStyle[e],r=t.style;return!/^-?[0-9]+\\.?[0-9]*(?:px)?$/i.test(n)&&/^-?\\d/.test(n)&&(o=r.left,i&&(t.runtimeStyle.left=t.currentStyle.left),r.left=\"fontSize\"===e?\"1em\":n||0,n=r.pixelLeft+\"px\",r.left=o,i&&(t.runtimeStyle.left=i)),/^(thin|medium|thick)$/i.test(n)?n:Math.round(parseFloat(n))+\"px\"}var s,l=o.match(/^background(Size|Position)$/);if(a!==t&&(c=e.defaultView.getComputedStyle(t,null)),s=c[o],l){if(s=(s||\"\").split(\",\"),s=s[i||0]||s[0]||\"auto\",s=d.Util.trimText(s).split(\" \"),\"backgroundSize\"!==o||s[0]&&!s[0].match(/cover|contain|auto/)){if(s[0]=-1===s[0].indexOf(\"%\")?r(o+\"X\",s[0]):s[0],s[1]===n){if(\"backgroundSize\"===o)return s[1]=\"auto\",s;\ns[1]=s[0]}s[1]=-1===s[1].indexOf(\"%\")?r(o+\"Y\",s[1]):s[1]}}else if(/border(Top|Bottom)(Left|Right)Radius/.test(o)){var u=s.split(\" \");u.length<=1&&(u[1]=u[0]),u[0]=parseInt(u[0],10),u[1]=parseInt(u[1],10),s=u}return s},d.Util.resizeBounds=function(t,e,n,o,i){var r,s,a=n/o,c=t/e;return i&&\"auto\"!==i?c>a^\"contain\"===i?(s=o,r=o*c):(r=n,s=n/c):(r=n,s=o),{width:r,height:s}},d.Util.BackgroundPosition=function(t,e,n,o,r){var s=i(\"backgroundPosition\",t,e,n,o,r);return{left:s[0],top:s[1]}},d.Util.BackgroundSize=function(t,e,n,o){var r=i(\"backgroundSize\",t,e,n,o);\nreturn{width:r[0],height:r[1]}},d.Util.Extend=function(t,e){for(var n in t)t.hasOwnProperty(n)&&(e[n]=t[n]);return e},d.Util.Children=function(t){var e;try{e=t.nodeName&&\"IFRAME\"===t.nodeName.toUpperCase()?t.contentDocument||t.contentWindow.document:function(t){var e=[];return null!==t&&!function(t,e){var o=t.length,i=0;if(\"number\"==typeof e.length)for(var r=e.length;r>i;i++)t[o++]=e[i];else for(;e[i]!==n;)t[o++]=e[i++];return t.length=o,t}(e,t),e}(t.childNodes)}catch(i){o(\"html2canvas.Util.Children failed with exception: \"+i.exceptionStackTrace),e=[]\n}return e},d.Util.Font=function(){var t={};return function(e,o,i){if(t[e+\"-\"+o]!==n)return t[e+\"-\"+o];var r,s,a,c=i.createElement(\"div\"),d=i.createElement(\"img\"),l=i.createElement(\"span\"),u=\"Hidden Text\";return c.style.visibility=\"hidden\",c.style.fontFamily=e,c.style.fontSize=o,c.style.margin=0,c.style.padding=0,i.body.appendChild(c),d.src=\"data:image/gif;base64,R0lGODlhAQABAIABAP///wAAACwAAAAAAQABAAACAkQBADs=\",d.width=1,d.height=1,d.style.margin=0,d.style.padding=0,d.style.verticalAlign=\"baseline\",l.style.fontFamily=e,l.style.fontSize=o,l.style.margin=0,l.style.padding=0,l.appendChild(i.createTextNode(u)),c.appendChild(l),c.appendChild(d),r=d.offsetTop-l.offsetTop+1,c.removeChild(l),c.appendChild(i.createTextNode(u)),c.style.lineHeight=\"normal\",d.style.verticalAlign=\"super\",s=d.offsetTop-c.offsetTop+1,a={baseline:r,lineWidth:1,middle:s},t[e+\"-\"+o]=a,i.body.removeChild(c),a\n}}(),function(){d.Generate={};var t=[/^(-webkit-linear-gradient)\\(([a-z\\s]+)([\\w\\d\\.\\s,%\\(\\)]+)\\)$/,/^(-o-linear-gradient)\\(([a-z\\s]+)([\\w\\d\\.\\s,%\\(\\)]+)\\)$/,/^(-webkit-gradient)\\((linear|radial),\\s((?:\\d{1,3}%?)\\s(?:\\d{1,3}%?),\\s(?:\\d{1,3}%?)\\s(?:\\d{1,3}%?))([\\w\\d\\.\\s,%\\(\\)\\-]+)\\)$/,/^(-moz-linear-gradient)\\(((?:\\d{1,3}%?)\\s(?:\\d{1,3}%?))([\\w\\d\\.\\s,%\\(\\)]+)\\)$/,/^(-webkit-radial-gradient)\\(((?:\\d{1,3}%?)\\s(?:\\d{1,3}%?)),\\s(\\w+)\\s([a-z\\-]+)([\\w\\d\\.\\s,%\\(\\)]+)\\)$/,/^(-moz-radial-gradient)\\(((?:\\d{1,3}%?)\\s(?:\\d{1,3}%?)),\\s(\\w+)\\s?([a-z\\-]*)([\\w\\d\\.\\s,%\\(\\)]+)\\)$/,/^(-o-radial-gradient)\\(((?:\\d{1,3}%?)\\s(?:\\d{1,3}%?)),\\s(\\w+)\\s([a-z\\-]+)([\\w\\d\\.\\s,%\\(\\)]+)\\)$/];\nd.Generate.parseGradient=function(e,n){var o,i,r,s,a,c,d,l,u,m,p,f,h=t.length;for(i=0;h>i&&!(r=e.match(t[i]));i+=1);if(r)switch(r[1]){case\"-webkit-linear-gradient\":case\"-o-linear-gradient\":if(o={type:\"linear\",x0:null,y0:null,x1:null,y1:null,colorStops:[]},a=r[2].match(/\\w+/g))for(c=a.length,i=0;c>i;i+=1)switch(a[i]){case\"top\":o.y0=0,o.y1=n.height;break;case\"right\":o.x0=n.width,o.x1=0;break;case\"bottom\":o.y0=n.height,o.y1=0;break;case\"left\":o.x0=0,o.x1=n.width}if(null===o.x0&&null===o.x1&&(o.x0=o.x1=n.width/2),null===o.y0&&null===o.y1&&(o.y0=o.y1=n.height/2),a=r[3].match(/((?:rgb|rgba)\\(\\d{1,3},\\s\\d{1,3},\\s\\d{1,3}(?:,\\s[0-9\\.]+)?\\)(?:\\s\\d{1,3}(?:%|px))?)+/g))for(c=a.length,d=1/Math.max(c-1,1),i=0;c>i;i+=1)l=a[i].match(/((?:rgb|rgba)\\(\\d{1,3},\\s\\d{1,3},\\s\\d{1,3}(?:,\\s[0-9\\.]+)?\\))\\s*(\\d{1,3})?(%|px)?/),l[2]?(s=parseFloat(l[2]),s/=\"%\"===l[3]?100:n.width):s=i*d,o.colorStops.push({color:l[1],stop:s});\nbreak;case\"-webkit-gradient\":if(o={type:\"radial\"===r[2]?\"circle\":r[2],x0:0,y0:0,x1:0,y1:0,colorStops:[]},a=r[3].match(/(\\d{1,3})%?\\s(\\d{1,3})%?,\\s(\\d{1,3})%?\\s(\\d{1,3})%?/),a&&(o.x0=a[1]*n.width/100,o.y0=a[2]*n.height/100,o.x1=a[3]*n.width/100,o.y1=a[4]*n.height/100),a=r[4].match(/((?:from|to|color-stop)\\((?:[0-9\\.]+,\\s)?(?:rgb|rgba)\\(\\d{1,3},\\s\\d{1,3},\\s\\d{1,3}(?:,\\s[0-9\\.]+)?\\)\\))+/g))for(c=a.length,i=0;c>i;i+=1)l=a[i].match(/(from|to|color-stop)\\(([0-9\\.]+)?(?:,\\s)?((?:rgb|rgba)\\(\\d{1,3},\\s\\d{1,3},\\s\\d{1,3}(?:,\\s[0-9\\.]+)?\\))\\)/),s=parseFloat(l[2]),\"from\"===l[1]&&(s=0),\"to\"===l[1]&&(s=1),o.colorStops.push({color:l[3],stop:s});\nbreak;case\"-moz-linear-gradient\":if(o={type:\"linear\",x0:0,y0:0,x1:0,y1:0,colorStops:[]},a=r[2].match(/(\\d{1,3})%?\\s(\\d{1,3})%?/),a&&(o.x0=a[1]*n.width/100,o.y0=a[2]*n.height/100,o.x1=n.width-o.x0,o.y1=n.height-o.y0),a=r[3].match(/((?:rgb|rgba)\\(\\d{1,3},\\s\\d{1,3},\\s\\d{1,3}(?:,\\s[0-9\\.]+)?\\)(?:\\s\\d{1,3}%)?)+/g))for(c=a.length,d=1/Math.max(c-1,1),i=0;c>i;i+=1)l=a[i].match(/((?:rgb|rgba)\\(\\d{1,3},\\s\\d{1,3},\\s\\d{1,3}(?:,\\s[0-9\\.]+)?\\))\\s*(\\d{1,3})?(%)?/),l[2]?(s=parseFloat(l[2]),l[3]&&(s/=100)):s=i*d,o.colorStops.push({color:l[1],stop:s});\nbreak;case\"-webkit-radial-gradient\":case\"-moz-radial-gradient\":case\"-o-radial-gradient\":if(o={type:\"circle\",x0:0,y0:0,x1:n.width,y1:n.height,cx:0,cy:0,rx:0,ry:0,colorStops:[]},a=r[2].match(/(\\d{1,3})%?\\s(\\d{1,3})%?/),a&&(o.cx=a[1]*n.width/100,o.cy=a[2]*n.height/100),a=r[3].match(/\\w+/),l=r[4].match(/[a-z\\-]*/),a&&l)switch(l[0]){case\"farthest-corner\":case\"cover\":case\"\":u=Math.sqrt(Math.pow(o.cx,2)+Math.pow(o.cy,2)),m=Math.sqrt(Math.pow(o.cx,2)+Math.pow(o.y1-o.cy,2)),p=Math.sqrt(Math.pow(o.x1-o.cx,2)+Math.pow(o.y1-o.cy,2)),f=Math.sqrt(Math.pow(o.x1-o.cx,2)+Math.pow(o.cy,2)),o.rx=o.ry=Math.max(u,m,p,f);\nbreak;case\"closest-corner\":u=Math.sqrt(Math.pow(o.cx,2)+Math.pow(o.cy,2)),m=Math.sqrt(Math.pow(o.cx,2)+Math.pow(o.y1-o.cy,2)),p=Math.sqrt(Math.pow(o.x1-o.cx,2)+Math.pow(o.y1-o.cy,2)),f=Math.sqrt(Math.pow(o.x1-o.cx,2)+Math.pow(o.cy,2)),o.rx=o.ry=Math.min(u,m,p,f);break;case\"farthest-side\":\"circle\"===a[0]?o.rx=o.ry=Math.max(o.cx,o.cy,o.x1-o.cx,o.y1-o.cy):(o.type=a[0],o.rx=Math.max(o.cx,o.x1-o.cx),o.ry=Math.max(o.cy,o.y1-o.cy));break;case\"closest-side\":case\"contain\":\"circle\"===a[0]?o.rx=o.ry=Math.min(o.cx,o.cy,o.x1-o.cx,o.y1-o.cy):(o.type=a[0],o.rx=Math.min(o.cx,o.x1-o.cx),o.ry=Math.min(o.cy,o.y1-o.cy))\n}if(a=r[5].match(/((?:rgb|rgba)\\(\\d{1,3},\\s\\d{1,3},\\s\\d{1,3}(?:,\\s[0-9\\.]+)?\\)(?:\\s\\d{1,3}(?:%|px))?)+/g))for(c=a.length,d=1/Math.max(c-1,1),i=0;c>i;i+=1)l=a[i].match(/((?:rgb|rgba)\\(\\d{1,3},\\s\\d{1,3},\\s\\d{1,3}(?:,\\s[0-9\\.]+)?\\))\\s*(\\d{1,3})?(%|px)?/),l[2]?(s=parseFloat(l[2]),s/=\"%\"===l[3]?100:n.width):s=i*d,o.colorStops.push({color:l[1],stop:s})}return o},d.Generate.Gradient=function(t,n){if(0!==n.width&&0!==n.height){var i,r,s,a,c=e.createElement(\"canvas\"),l=c.getContext(\"2d\");if(c.width=n.width,c.height=n.height,i=d.Generate.parseGradient(t,n))if(\"linear\"===i.type){for(r=l.createLinearGradient(i.x0,i.y0,i.x1,i.y1),s=0,a=i.colorStops.length;a>s;s+=1)try{r.addColorStop(i.colorStops[s].stop,i.colorStops[s].color)\n}catch(u){o([\"failed to add color stop: \",u,\"; tried to add: \",i.colorStops[s],\"; stop: \",s,\"; in: \",t])}l.fillStyle=r,l.fillRect(0,0,n.width,n.height)}else if(\"circle\"===i.type){for(r=l.createRadialGradient(i.cx,i.cy,0,i.cx,i.cy,i.rx),s=0,a=i.colorStops.length;a>s;s+=1)try{r.addColorStop(i.colorStops[s].stop,i.colorStops[s].color)}catch(u){o([\"failed to add color stop: \",u,\"; tried to add: \",i.colorStops[s],\"; stop: \",s,\"; in: \",t])}l.fillStyle=r,l.fillRect(0,0,n.width,n.height)}else if(\"ellipse\"===i.type){var m=e.createElement(\"canvas\"),p=m.getContext(\"2d\"),f=Math.max(i.rx,i.ry),h=2*f;\nfor(m.width=m.height=h,r=p.createRadialGradient(i.rx,i.ry,0,i.rx,i.ry,f),s=0,a=i.colorStops.length;a>s;s+=1)try{r.addColorStop(i.colorStops[s].stop,i.colorStops[s].color)}catch(u){o([\"failed to add color stop: \",u,\"; tried to add: \",i.colorStops[s],\"; stop: \",s,\"; in: \",t])}p.fillStyle=r,p.fillRect(0,0,h,h),l.fillStyle=i.colorStops[s-1].color,l.fillRect(0,0,c.width,c.height),l.drawImage(m,i.cx-i.rx,i.cy-i.ry,2*i.rx,2*i.ry)}return c}},d.Generate.ListAlpha=function(t){var e,n=\"\";do e=t%26,n=String.fromCharCode(e+64)+n,t/=26;\nwhile(26*t>26);return n},d.Generate.ListRoman=function(t){var e,n=[\"M\",\"CM\",\"D\",\"CD\",\"C\",\"XC\",\"L\",\"XL\",\"X\",\"IX\",\"V\",\"IV\",\"I\"],o=[1e3,900,500,400,100,90,50,40,10,9,5,4,1],i=\"\",r=n.length;if(0>=t||t>=4e3)return t;for(e=0;r>e;e+=1)for(;t>=o[e];)t-=o[e],i+=n[e];return i}}(),d.Parse=function(i,a){function c(){return Math.max(Math.max(ae.body.scrollWidth,ae.documentElement.scrollWidth),Math.max(ae.body.offsetWidth,ae.documentElement.offsetWidth),Math.max(ae.body.clientWidth,ae.documentElement.clientWidth))\n}function l(){return Math.max(Math.max(ae.body.scrollHeight,ae.documentElement.scrollHeight),Math.max(ae.body.offsetHeight,ae.documentElement.offsetHeight),Math.max(ae.body.clientHeight,ae.documentElement.clientHeight))}function u(t,e){var n=parseInt(ue(t,e),10);return isNaN(n)?0:n}function m(t,e,n,o,i,r){\"transparent\"!==r&&(t.setVariable(\"fillStyle\",r),t.fillRect(e,n,o,i),se+=1)}function p(t,e){switch(e){case\"lowercase\":return t.toLowerCase();case\"capitalize\":return t.replace(/(^|\\s|:|-|\\(|\\))([a-z])/g,function(t,e,n){return t.length>0?e+n.toUpperCase():void 0\n});case\"uppercase\":return t.toUpperCase();default:return t}}function f(t){return/^(normal|none|0px)$/.test(t)}function h(t,e,n,o){null!==t&&d.Util.trimText(t).length>0&&(o.fillText(t,e,n),se+=1)}function g(t,e,n,o){var i=!1,r=ue(e,\"fontWeight\"),s=ue(e,\"fontFamily\"),a=ue(e,\"fontSize\");switch(parseInt(r,10)){case 401:r=\"bold\";break;case 400:r=\"normal\"}return t.setVariable(\"fillStyle\",o),t.setVariable(\"font\",[ue(e,\"fontStyle\"),ue(e,\"fontVariant\"),r,a,s].join(\" \")),t.setVariable(\"textAlign\",i?\"right\":\"left\"),\"none\"!==n?d.Util.Font(s,a,ae):void 0\n}function b(t,e,n,o,i){switch(e){case\"underline\":m(t,n.left,Math.round(n.top+o.baseline+o.lineWidth),n.width,1,i);break;case\"overline\":m(t,n.left,Math.round(n.top),n.width,1,i);break;case\"line-through\":m(t,n.left,Math.ceil(n.top+o.middle+o.lineWidth),n.width,1,i)}}function v(t,e,n,o){var i;if(ce.rangeBounds)(\"none\"!==n||0!==d.Util.trimText(e).length)&&(i=w(e,t.node,t.textOffset)),t.textOffset+=e.length;else if(t.node&&\"string\"==typeof t.node.nodeValue){var r=o?t.node.splitText(e.length):null;i=_(t.node),t.node=r\n}return i}function w(t,e,n){var o=ae.createRange();return o.setStart(e,n),o.setEnd(e,n+t.length),o.getBoundingClientRect()}function _(t){var e=t.parentNode,n=ae.createElement(\"wrapper\"),o=t.cloneNode(!0);n.appendChild(t.cloneNode(!0)),e.replaceChild(n,t);var i=d.Util.Bounds(n);return e.replaceChild(o,n),i}function y(t,e,n){var o,i,r=n.ctx,s=ue(t,\"color\"),c=ue(t,\"textDecoration\"),l=ue(t,\"textAlign\"),u={node:e,textOffset:0};d.Util.trimText(e.nodeValue).length>0&&(e.nodeValue=p(e.nodeValue,ue(t,\"textTransform\")),l=l.replace([\"-webkit-auto\"],[\"auto\"]),i=e.nodeValue.split(!a.letterRendering&&/^(left|right|justify|auto)$/.test(l)&&f(ue(t,\"letterSpacing\"))?/(\\b| )/:\"\"),o=g(r,t,c,s),a.chinese&&i.forEach(function(t,e){/.*[\\u4E00-\\u9FA5].*$/.test(t)&&(t=t.split(\"\"),t.unshift(e,1),i.splice.apply(i,t))\n}),i.forEach(function(t,e){var n=v(u,t,c,e0||e[1]>0?(t.push([\"line\",o[0].start.x,o[0].start.y]),o[0].curveTo(t),o[1].curveTo(t)):t.push([\"line\",r,s]),(n[0]>0||n[1]>0)&&t.push([\"line\",i[0].start.x,i[0].start.y])}function q(t,e,n,o,i,r,s){var a=[];return e[0]>0||e[1]>0?(a.push([\"line\",o[1].start.x,o[1].start.y]),o[1].curveTo(a)):a.push([\"line\",t.c1[0],t.c1[1]]),n[0]>0||n[1]>0?(a.push([\"line\",r[0].start.x,r[0].start.y]),r[0].curveTo(a),a.push([\"line\",s[0].end.x,s[0].end.y]),s[0].curveToReversed(a)):(a.push([\"line\",t.c2[0],t.c2[1]]),a.push([\"line\",t.c3[0],t.c3[1]])),e[0]>0||e[1]>0?(a.push([\"line\",i[1].end.x,i[1].end.y]),i[1].curveToReversed(a)):a.push([\"line\",t.c4[0],t.c4[1]]),a\n}function U(t,e,n){var o=t.left,i=t.top,r=t.width,s=t.height,a=e[0][0],c=e[0][1],d=e[1][0],l=e[1][1],u=e[2][0],m=e[2][1],p=e[3][0],f=e[3][1],h=r-d,g=s-u,b=r-m,v=s-f;return{topLeftOuter:fe(o,i,a,c).topLeft.subdivide(.5),topLeftInner:fe(o+n[3].width,i+n[0].width,Math.max(0,a-n[3].width),Math.max(0,c-n[0].width)).topLeft.subdivide(.5),topRightOuter:fe(o+h,i,d,l).topRight.subdivide(.5),topRightInner:fe(o+Math.min(h,r+n[3].width),i+n[0].width,h>r+n[3].width?0:d-n[3].width,l-n[0].width).topRight.subdivide(.5),bottomRightOuter:fe(o+b,i+g,m,u).bottomRight.subdivide(.5),bottomRightInner:fe(o+Math.min(b,r+n[3].width),i+Math.min(g,s+n[0].width),Math.max(0,m-n[1].width),Math.max(0,u-n[2].width)).bottomRight.subdivide(.5),bottomLeftOuter:fe(o,i+v,p,f).bottomLeft.subdivide(.5),bottomLeftInner:fe(o+n[3].width,i+v,Math.max(0,p-n[3].width),Math.max(0,f-n[2].width)).bottomLeft.subdivide(.5)}\n}function O(t,e,n,o,i){var r=ue(t,\"backgroundClip\"),s=[];switch(r){case\"content-box\":case\"padding-box\":j(s,o[0],o[1],e.topLeftInner,e.topRightInner,i.left+n[3].width,i.top+n[0].width),j(s,o[1],o[2],e.topRightInner,e.bottomRightInner,i.left+i.width-n[1].width,i.top+n[0].width),j(s,o[2],o[3],e.bottomRightInner,e.bottomLeftInner,i.left+i.width-n[1].width,i.top+i.height-n[2].width),j(s,o[3],o[0],e.bottomLeftInner,e.topLeftInner,i.left+n[3].width,i.top+i.height-n[2].width);break;default:j(s,o[0],o[1],e.topLeftOuter,e.topRightOuter,i.left,i.top),j(s,o[1],o[2],e.topRightOuter,e.bottomRightOuter,i.left+i.width,i.top),j(s,o[2],o[3],e.bottomRightOuter,e.bottomLeftOuter,i.left+i.width,i.top+i.height),j(s,o[3],o[0],e.bottomLeftOuter,e.topLeftOuter,i.left,i.top+i.height)\n}return s}function E(t,e,n){var o,i,r,s,a,c,d=e.left,l=e.top,u=e.width,m=e.height,p=A(t),f=U(e,p,n),h={clip:O(t,f,n,p,e),borders:[]};for(o=0;4>o;o++)if(n[o].width>0){switch(i=d,r=l,s=u,a=m-n[2].width,o){case 0:a=n[0].width,c=q({c1:[i,r],c2:[i+s,r],c3:[i+s-n[1].width,r+a],c4:[i+n[3].width,r+a]},p[0],p[1],f.topLeftOuter,f.topLeftInner,f.topRightOuter,f.topRightInner);break;case 1:i=d+u-n[1].width,s=n[1].width,c=q({c1:[i+s,r],c2:[i+s,r+a+n[2].width],c3:[i,r+a],c4:[i,r+n[0].width]},p[1],p[2],f.topRightOuter,f.topRightInner,f.bottomRightOuter,f.bottomRightInner);\nbreak;case 2:r=r+m-n[2].width,a=n[2].width,c=q({c1:[i+s,r+a],c2:[i,r+a],c3:[i+n[3].width,r],c4:[i+s-n[2].width,r]},p[2],p[3],f.bottomRightOuter,f.bottomRightInner,f.bottomLeftOuter,f.bottomLeftInner);break;case 3:s=n[3].width,c=q({c1:[i,r+a+n[2].width],c2:[i,r],c3:[i+s,r+n[0].width],c4:[i+s,r+a]},p[3],p[0],f.bottomLeftOuter,f.bottomLeftInner,f.topLeftOuter,f.topLeftInner)}h.borders.push({args:c,color:n[o].color})}return h}function N(t,e){var n=t.drawShape();return e.forEach(function(t,e){n[0===e?\"moveTo\":t[0]+\"To\"].apply(null,t.slice(1))\n}),n}function P(t,e,n){\"transparent\"!==n&&(t.setVariable(\"fillStyle\",n),N(t,e),t.fill(),se+=1)}function M(t,e,n){var i,r,s=ae.createElement(\"valuewrap\"),a=[\"lineHeight\",\"textAlign\",\"fontFamily\",\"color\",\"fontSize\",\"paddingLeft\",\"paddingTop\",\"width\",\"height\",\"border\",\"borderLeftWidth\",\"borderTopWidth\"];a.forEach(function(e){try{s.style[e]=ue(t,e)}catch(n){o(\"html2canvas: Parse: Exception caught in renderFormValue: \"+n.exceptionStackTrace)}}),s.style.borderColor=\"black\",s.style.borderStyle=\"solid\",s.style.display=\"block\",s.style.position=\"absolute\",(/^(submit|reset|button|text|password)$/.test(t.type)||\"SELECT\"===t.nodeName)&&(s.style.lineHeight=ue(t,\"height\")),s.style.top=e.top+\"px\",s.style.left=e.left+\"px\",i=\"SELECT\"===t.nodeName?(t.options[t.selectedIndex]||0).text:t.value,i||(i=t.placeholder),r=ae.createTextNode(i),s.appendChild(r),le.appendChild(s),y(t,r,n),le.removeChild(s)\n}function z(t){t.drawImage.apply(t,Array.prototype.slice.call(arguments,1)),se+=1}function B(n,i){var r=t.getComputedStyle(n,i);if(r&&r.content&&\"none\"!==r.content&&\"-moz-alt-content\"!==r.content){var s=r.content+\"\",a=s.substr(0,1);a===s.substr(s.length-1)&&a.match(/'|\"/)&&(s=s.substr(1,s.length-2));var c=\"url\"===s.substr(0,3),l=e.createElement(c?\"img\":\"span\");return l.className=me+\"-before \"+me+\"-after\",Object.keys(r).filter(H).forEach(function(t){try{l.style[t]=r[t]}catch(e){o([\"Tried to assign readonly property \",t,\"Error:\",e])\n}}),c?l.src=d.Util.parseBackgroundImage(s)[0].args[0]:l.innerHTML=s,l}}function H(e){return isNaN(t.parseInt(e,10))}function F(t,e){var n=B(t,\":before\"),o=B(t,\":after\");(n||o)&&(n&&(t.className+=\" \"+me+\"-before\",t.parentNode.insertBefore(n,t),ne(n,e,!0),t.parentNode.removeChild(n),t.className=t.className.replace(me+\"-before\",\"\").trim()),o&&(t.className+=\" \"+me+\"-after\",t.appendChild(o),ne(o,e,!0),t.removeChild(o),t.className=t.className.replace(me+\"-after\",\"\").trim()))}function W(t,e,n,o){var i=Math.round(o.left+n.left),r=Math.round(o.top+n.top);\nt.createPattern(e),t.translate(i,r),t.fill(),t.translate(-i,-r)}function G(t,e,n,o,i,r,s,a){var c=[];c.push([\"line\",Math.round(i),Math.round(r)]),c.push([\"line\",Math.round(i+s),Math.round(r)]),c.push([\"line\",Math.round(i+s),Math.round(a+r)]),c.push([\"line\",Math.round(i),Math.round(a+r)]),N(t,c),t.save(),t.clip(),W(t,e,n,o),t.restore()}function Q(t,e,n){m(t,e.left,e.top,e.width,e.height,n)}function V(t,e,n,o,i){var r=d.Util.BackgroundSize(t,e,o,i),s=d.Util.BackgroundPosition(t,e,o,i,r),a=ue(t,\"backgroundRepeat\").split(\",\").map(function(t){return t.trim()\n});switch(o=X(o,r),a=a[i]||a[0]){case\"repeat-x\":G(n,o,s,e,e.left,e.top+s.top,99999,o.height);break;case\"repeat-y\":G(n,o,s,e,e.left+s.left,e.top,o.width,99999);break;case\"no-repeat\":G(n,o,s,e,e.left+s.left,e.top+s.top,o.width,o.height);break;default:W(n,o,s,{top:e.top,left:e.left,width:o.width,height:o.height})}}function J(t,e,n){for(var i,r=ue(t,\"backgroundImage\"),s=d.Util.parseBackgroundImage(r),a=s.length;a--;)if(r=s[a],r.args&&0!==r.args.length){var c=\"url\"===r.method?r.args[0]:r.value;i=C(c),i?V(t,e,n,i,a):o(\"html2canvas: Error loading background:\",r)\n}}function X(t,e){if(t.width===e.width&&t.height===e.height)return t;var n,o=ae.createElement(\"canvas\");return o.width=e.width,o.height=e.height,n=o.getContext(\"2d\"),z(n,t,0,0,t.width,t.height,0,0,e.width,e.height),o}function K(t,e,n){var o=ue(e,\"opacity\")*(n?n.opacity:1);return t.setVariable(\"globalAlpha\",o),o}function Y(t,e,n){var o=r(e?n.width:c(),e?n.height:l()),i={ctx:o,zIndex:I(ue(t,\"zIndex\"),e?e.zIndex:null),opacity:K(o,t,e),cssPosition:ue(t,\"position\"),borders:R(t),clip:e&&e.clip?d.Util.Extend({},e.clip):null};\nreturn a.useOverflow===!0&&/(hidden|scroll|auto)/.test(ue(t,\"overflow\"))===!0&&/(BODY)/i.test(t.nodeName)===!1&&(i.clip=i.clip?S(i.clip,n):n),i.zIndex.children.push(i),i}function Z(t,e,n){var o={left:e.left+t[3].width,top:e.top+t[0].width,width:e.width-(t[1].width+t[3].width),height:e.height-(t[0].width+t[2].width)};return n&&(o=S(o,n)),o}function te(t,e,n){var i,r=d.Util.Bounds(t),s=de.test(t.nodeName)?\"#efefef\":ue(t,\"backgroundColor\"),a=Y(t,e,r),c=a.borders,l=a.ctx,u=Z(c,r,a.clip),m=E(t,r,c);switch(N(l,m.clip),l.save(),l.clip(),u.height>0&&u.width>0&&(Q(l,r,s),J(t,u,l)),l.restore(),m.borders.forEach(function(t){P(l,t.args,t.color)\n}),n||F(t,a),t.nodeName){case\"IMG\":(i=C(t.getAttribute(\"src\")))?D(l,t,i,r,c):o(\"html2canvas: Error loading :\"+t.getAttribute(\"src\"));break;case\"INPUT\":/^(text|url|email|submit|button|reset)$/.test(t.type)&&(t.value||t.placeholder).length>0&&M(t,r,a);break;case\"TEXTAREA\":(t.value||t.placeholder||\"\").length>0&&M(t,r,a);break;case\"SELECT\":(t.options||t.placeholder||\"\").length>0&&M(t,r,a);break;case\"LI\":T(t,a,u);break;case\"CANVAS\":D(l,t,t,r,c)}return a}function ee(t){return\"none\"!==ue(t,\"display\")&&\"hidden\"!==ue(t,\"visibility\")&&!t.hasAttribute(\"data-html2canvas-ignore\")\n}function ne(t,e,n){ee(t)&&(e=te(t,e,n)||e,de.test(t.nodeName)||d.Util.Children(t).forEach(function(o){1===o.nodeType?ne(o,e,n):3===o.nodeType&&y(t,o,e)}))}function oe(t,e){function n(t){var e,o,i,r,a,c=d.Util.Children(t),l=c.length;for(a=0;l>a;a+=1)if(r=c[a],3===r.nodeType)s+=r.nodeValue.replace(//g,\">\");else if(1===r.nodeType&&!/^(script|meta|title)$/.test(r.nodeName.toLowerCase())){if(s+=\"<\"+r.nodeName.toLowerCase(),r.hasAttributes())for(e=r.attributes,i=e.length,o=0;i>o;o+=1)s+=\" \"+e[o].name+'=\"'+e[o].value+'\"';\ns+=\">\",n(r),s+=\"\"}}var o=new Image,i=c(),r=l(),s=\"\";n(t),o.src=[\"data:image/svg+xml,\",\"\",\"\",\"\",s.replace(/\\#/g,\"%23\"),\"\",\"\",\"\"].join(\"\"),o.onload=function(){e.svgRender=o}}function ie(){var t=te(re,null);return ce.svgRendering&&oe(e.documentElement,t),Array.prototype.slice.call(re.children,0).forEach(function(e){ne(e,t)\n}),t.backgroundColor=ue(e.documentElement,\"backgroundColor\"),le.removeChild(pe),t}bds.se.ShortCut.scrollTop=t.pageYOffset||e.documentElement.scrollTop||e.body.scrollTop,t.scroll(0,0);var re=a.elements===n?e.body:a.elements[0],se=0,ae=re.ownerDocument,ce=d.Util.Support(a,ae),de=new RegExp(\"(\"+a.ignoreElements+\")\"),le=ae.body,ue=d.Util.getCSS,me=\"___html2canvas___pseudoelement\",pe=ae.createElement(\"style\");pe.innerHTML=\".\"+me+'-before:before { content: \"\" !important; display: none !important; }.'+me+'-after:after { content: \"\" !important; display: none !important; }',le.appendChild(pe),i=i||{};\nvar fe=function(t){return function(e,n,o,i){var r=o*t,s=i*t,a=e+o,c=n+i;return{topLeft:L({x:e,y:c},{x:e,y:c-s},{x:a-r,y:n},{x:a,y:n}),topRight:L({x:e,y:n},{x:e+r,y:n},{x:a,y:c-s},{x:a,y:c}),bottomRight:L({x:a,y:n},{x:a,y:n+s},{x:e+r,y:c},{x:e,y:c}),bottomLeft:L({x:a,y:c},{x:a-r,y:c},{x:e,y:n+s},{x:e,y:n})}}}(4*((Math.sqrt(2)-1)/3));return ie()},d.Preload=function(i){function r(t){C.href=t,C.href=C.href;var e=C.protocol+C.host;return e===g}function s(){o(\"html2canvas: start: images: \"+_.numLoaded+\" / \"+_.numTotal+\" (failed: \"+_.numFailed+\")\"),!_.firstRun&&_.numLoaded>=_.numTotal&&(o(\"Finished loading images: # \"+_.numTotal+\" (failed: \"+_.numFailed+\")\"),\"function\"==typeof i.complete&&i.complete(_))\n}function a(e,o,r){var a,c,d=i.proxy;C.href=e,e=C.href,a=\"html2canvas_\"+y++,r.callbackname=a,d+=d.indexOf(\"?\")>-1?\"&\":\"?\",d+=\"url=\"+encodeURIComponent(e)+\"&callback=\"+a,c=$.createElement(\"script\"),t[a]=function(e){\"error:\"===e.substring(0,6)?(r.succeeded=!1,_.numLoaded++,_.numFailed++,s()):(h(o,r),o.src=e),t[a]=n;try{delete t[a]}catch(i){}c.parentNode.removeChild(c),c=null,delete r.script,delete r.callbackname},c.setAttribute(\"type\",\"text/javascript\"),c.setAttribute(\"src\",d),r.script=c,t.document.body.appendChild(c)\n}function c(e,n){var o=t.getComputedStyle(e,n),i=o.content;\"url\"===i.substr(0,3)&&b.loadImage(d.Util.parseBackgroundImage(i)[0].args[0]),p(o.backgroundImage,e)}function l(t){c(t,\":before\"),c(t,\":after\")}function u(t,e){var o=d.Generate.Gradient(t,e);o!==n&&(_[t]={img:o,succeeded:!0},_.numTotal++,_.numLoaded++,s())}function m(t){return t&&t.method&&t.args&&t.args.length>0}function p(t,e){var o;d.Util.parseBackgroundImage(t).filter(m).forEach(function(t){\"url\"===t.method?b.loadImage(t.args[0]):t.method.match(/\\-?gradient$/)&&(o===n&&(o=d.Util.Bounds(e)),u(t.value,o))\n})}function f(t){var e=!1;try{d.Util.Children(t).forEach(function(t){f(t)})}catch(i){}try{e=t.nodeType}catch(r){e=!1,o(\"html2canvas: failed to access some element's nodeType - Exception: \"+r.exceptionStackTrace)}if(1===e||e===n){l(t);try{p(d.Util.getCSS(t,\"backgroundImage\"),t)}catch(i){o(\"html2canvas: failed to get background-image - Exception: \"+i.exceptionStackTrace)}p(t)}}function h(e,o){e.onload=function(){o.timer!==n&&t.clearTimeout(o.timer),_.numLoaded++,o.succeeded=!0,e.onerror=e.onload=null,s()},e.onerror=function(){if(\"anonymous\"===e.crossOrigin&&(t.clearTimeout(o.timer),i.proxy)){var n=e.src;\nreturn e=new Image,o.img=e,e.src=n,void a(e.src,e,o)}_.numLoaded++,_.numFailed++,o.succeeded=!1,e.onerror=e.onload=null,s()}}var g,b,v,w,_={numLoaded:0,numFailed:0,numTotal:0,cleanupDone:!1},y=0,x=i.elements[0]||e.body,$=x.ownerDocument,k=$.images,T=k.length,C=$.createElement(\"a\"),S=function(t){return t.crossOrigin!==n}(new Image);for(C.href=t.location.href,g=C.protocol+C.host,b={loadImage:function(e){var o,s;e&&_[e]===n&&(o=new Image,e.match(/data:image\\/.*;base64,/i)?(o.src=e.replace(/url\\(['\"]{0,}|['\"]{0,}\\)$/gi,\"\"),s=_[e]={img:o},_.numTotal++,h(o,s)):r(e)||i.allowTaint===!0?(s=_[e]={img:o},_.numTotal++,h(o,s),o.src=e):S&&!i.allowTaint&&i.useCORS?(o.crossOrigin=\"anonymous\",s=_[e]={img:o},_.numTotal++,h(o,s),o.src=e,o.customComplete=function(){this.img.complete?this.img.onerror():this.timer=t.setTimeout(this.img.customComplete,100)\n}.bind(s),o.customComplete()):i.proxy&&(s=_[e]={img:o},_.numTotal++,a(e,o,s)))},cleanupDOM:function(r){var a,c;if(!_.cleanupDone){o(r&&\"string\"==typeof r?\"html2canvas: Cleanup because: \"+r:\"html2canvas: Cleanup after timeout: \"+i.timeout+\" ms.\");for(c in _)if(_.hasOwnProperty(c)&&(a=_[c],\"object\"==typeof a&&a.callbackname&&a.succeeded===n)){t[a.callbackname]=n;try{delete t[a.callbackname]}catch(d){}a.script&&a.script.parentNode&&(a.script.setAttribute(\"src\",\"about:blank\"),a.script.parentNode.removeChild(a.script)),_.numLoaded++,_.numFailed++,o(\"html2canvas: Cleaned up failed img: '\"+c+\"' Steps: \"+_.numLoaded+\" / \"+_.numTotal)\n}t.stop!==n?t.stop():e.execCommand!==n&&e.execCommand(\"Stop\",!1),e.close!==n&&e.close(),_.cleanupDone=!0,r&&\"string\"==typeof r||s()}},renderingDone:function(){w&&t.clearTimeout(w)}},i.timeout>0&&(w=t.setTimeout(b.cleanupDOM,i.timeout)),o(\"html2canvas: Preload starts: finding background-images\"),_.firstRun=!0,f(x),o(\"html2canvas: Preload: Finding images\"),v=0;T>v;v+=1)b.loadImage(k[v].getAttribute(\"src\"));return _.firstRun=!1,o(\"html2canvas: Preload: Done.\"),_.numTotal===_.numLoaded&&s(),b},d.Renderer=function(t,o){function i(t){var e=[],n=function(t){var o=[],i=[];\nt.children.forEach(function(t){t.children&&t.children.length>0?(o.push(t),i.push(t.zindex)):e.push(t)}),i.sort(function(t,e){return t-e}),i.forEach(function(t){var e;o.some(function(n,o){return e=o,n.zindex===t}),n(o.splice(e,1)[0])})};return t&&t.zIndex&&n(t.zIndex),e}function r(t){var e;if(\"string\"==typeof o.renderer&&d.Renderer[t]!==n)e=d.Renderer[t](o);else{if(\"function\"!=typeof t)throw new Error(\"Unknown renderer\");e=t(o)}if(\"function\"!=typeof e)throw new Error(\"Invalid renderer defined\");return e\n}return r(o.renderer)(t,o,e,i(t),d)},d.Util.Support=function(t,e){function i(){var t=new Image,i=e.createElement(\"canvas\"),r=i.getContext===n?!1:i.getContext(\"2d\");if(r===!1)return!1;i.width=i.height=10,t.src=[\"data:image/svg+xml,\",\"\",\"\",\"
                    \",\"sup\",\"
                    \",\"
                    \",\"
                    \"].join(\"\");try{r.drawImage(t,0,0),i.toDataURL()\n}catch(s){return!1}return o(\"html2canvas: Parse: SVG powered rendering available\"),!0}function r(){var t,n,o,i,r=!1;return e.createRange&&(t=e.createRange(),t.getBoundingClientRect&&(n=e.createElement(\"boundtest\"),n.style.height=\"123px\",n.style.display=\"block\",e.body.appendChild(n),t.selectNode(n),o=t.getBoundingClientRect(),i=o.height,123===i&&(r=!0),e.body.removeChild(n))),r}return{rangeBounds:r(),svgRendering:t.svgRendering&&i()}},t.html2canvas=function(e,n){e=e.length?e:[e];var i,r,s={logging:!1,elements:e,background:\"#fff\",proxy:null,timeout:0,useCORS:!1,allowTaint:!1,svgRendering:!1,ignoreElements:\"IFRAME|OBJECT|PARAM\",useOverflow:!0,letterRendering:!1,chinese:!1,width:null,height:null,taintTest:!0,renderer:\"Canvas\"};\nreturn s=d.Util.Extend(n,s),d.logging=s.logging,s.complete=function(t){(\"function\"!=typeof s.onpreloaded||s.onpreloaded(t)!==!1)&&(i=d.Parse(t,s),(\"function\"!=typeof s.onparsed||s.onparsed(i)!==!1)&&(r=d.Renderer(i,s),\"function\"==typeof s.onrendered&&s.onrendered(r)))},t.setTimeout(function(){d.Preload(s)},0),{render:function(t,e){return d.Renderer(t,d.Util.Extend(e,s))},parse:function(t,e){return d.Parse(t,d.Util.Extend(e,s))},preload:function(t){return d.Preload(d.Util.Extend(t,s))},log:o}},t.html2canvas.log=o,t.html2canvas.Renderer={Canvas:n},d.Renderer.Canvas=function(t){function i(t,e){t.beginPath(),e.forEach(function(e){t[e.name].apply(t,e.arguments)\n}),t.closePath()}function r(t){if(-1===d.indexOf(t.arguments[0].src)){u.drawImage(t.arguments[0],0,0);try{u.getImageData(0,0,1,1)}catch(e){return l=c.createElement(\"canvas\"),u=l.getContext(\"2d\"),!1}d.push(t.arguments[0].src)}return!0}function s(t){return\"transparent\"===t||\"rgba(0, 0, 0, 0)\"===t}function a(e,n){switch(n.type){case\"variable\":e[n.name]=n.arguments;break;case\"function\":if(\"createPattern\"===n.name){if(n.arguments[0].width>0&&n.arguments[0].height>0)try{e.fillStyle=e.createPattern(n.arguments[0],\"repeat\")\n}catch(s){o(\"html2canvas: Renderer: Error creating pattern\",s.exceptionStackTrace)}}else\"drawShape\"===n.name?i(e,n.arguments):\"drawImage\"===n.name?n.arguments[8]>0&&n.arguments[7]>0&&(!t.taintTest||t.taintTest&&r(n))&&e.drawImage.apply(e,n.arguments):e[n.name].apply(e,n.arguments)}}t=t||{};var c=e,d=[],l=e.createElement(\"canvas\"),u=l.getContext(\"2d\"),m=t.canvas||c.createElement(\"canvas\");return function(t,e,i,r,c){var d,l,u,p,f,h,g=m.getContext(\"2d\");if(m.width=m.style.width=e.width||t.ctx.width,m.height=m.style.height=e.height||t.ctx.height,h=g.fillStyle,g.fillStyle=s(t.backgroundColor)&&e.background!==n?e.background:t.backgroundColor,g.fillRect(0,0,m.width,m.height),g.fillStyle=h,e.svgRendering&&t.svgRender!==n)g.drawImage(t.svgRender,0,0);\nelse for(l=0,u=r.length;u>l;l+=1)d=r.splice(0,1)[0],d.canvasPosition=d.canvasPosition||{},g.textBaseline=\"bottom\",d.clip&&(g.save(),g.beginPath(),g.rect(d.clip.left,d.clip.top,d.clip.width,d.clip.height),g.clip()),d.ctx.storage&&d.ctx.storage.forEach(a.bind(null,g)),d.clip&&g.restore();return o(\"html2canvas: Renderer: Canvas renderer done - returning canvas obj\"),u=e.elements.length,1===u&&\"object\"==typeof e.elements[0]&&\"BODY\"!==e.elements[0].nodeName?(f=c.Util.Bounds(e.elements[0]),p=i.createElement(\"canvas\"),p.width=f.width,p.height=f.height,g=p.getContext(\"2d\"),g.drawImage(m,f.left,f.top,f.width,f.height,0,0,f.width,f.height),m=null,p):m\n}}}(window,document)}})}(),$(window).on(\"swap_begin\",function(){bds&&bds.se&&void 0!==bds.se.displayTime&&null!==bds.se.displayTime&&(clearTimeout(bds.se.displayTime),bds.se.displayTime=null)}).on(\"confirm\",function(){bds&&bds.comm&&bds.comm.globalLogFlag&&1==bds.comm.globalLogFlag&&(1==bds.comm.logFlagNoNetwork||1==bds.comm.logFlagNoIntegration||(bds.se.displayTime=setTimeout(function(){bds&&bds.se&&bds.se.display(),bds.se.displayTime=null},5e3))),bds&&bds.se.userAction.collect()}).on(\"swap_end\",function(t,e){!e&&bds&&bds.comm&&bds.comm.globalLogFlag&&1==bds.comm.globalLogFlag&&(1==bds.comm.logFlagNoNetwork||1==bds.comm.logFlagNoIntegration||(bds.se.displayTime=setTimeout(function(){bds&&bds.se&&bds.se.display(),bds.se.displayTime=null\n},5e3))),!e&&bds&&bds.se.userAction.collect(),bds.log.send.sendNow(\"flow_monitor\",{},{qid:bds.comm.qid,log:{},len:1})}),$(window).on(\"swap_end\",function(){bds.comm.__rdNum&&bds.comm.__rdNum>9e3&&setTimeout(function(){$.ajax({dataType:\"script\",cache:!0,url:\"https://ss1.bdstatic.com/5eN1bjq8AAUYm2zgoY3K/r/www/cache/static/protocol/https/plugins/clean_7973b0f.js\",success:function(){bds.se.cleanCookie.init()}})},0)}),!function(){var t=navigator.userAgent,e=t.match(/MSIE\\s*(\\d+)/),n=e&&e[1]&&+e[1]<=9;n||require([\"plugins/swfobject\",\"soutu/js/tu\"],function(t,e){if(/^\\/imgsearch/.test(location.pathname)){var n=$(\"#content_left\").find(\".result-op\"),o=[];\nn.each(function(){var t=$(this),e=t.attr(\"tpl\");\"tu_relate_site\"===e&&(e+=\"@\"+t.find(\".op-tu-relate-site-result\").length),o.push(e)}),e.log({rsv_imageshow:o.join(\":\")}),$(\"#page\").hide(),$(\"#wrapper\").outerHeight()<$(document).outerHeight()&&$(\"#foot\").addClass(\"foot_fixed_bottom\")}})}(),!function(){function t(t){var e=[\"voice_beha=1\"],n=window.bds&&bds.util&&bds.util.domain?bds.util.domain.get(\"http://nsclick.baidu.com\"):\"http://nsclick.baidu.com\";for(var o in t)t.hasOwnProperty(o)&&e.push(o+\"=\"+t[o]);\nvar i=window[\"nsIMG\"+ +new Date]=new Image;return i.src=n+\"/v.gif?pid=201&\"+e.join(\"&\"),!0}(location.href.match(/voice=1/)||navigator.userAgent.match(/mac os x/i))&&require([\"plugins/swfobject\",\"voice/js/voice\"],function(e,n){if(n.log=t,n&&n.support()){n.addStyle(),window.__supportvoice=!0;var o=$(\"#form .ipt_rec\");o.css(\"display\",\"block\"),o.click(function(){var t=n.init({url:bds.util.domain.get(\"http://vse.baidu.com\")+\"/echo.fcgi\"});t.done(function(t){t.openUI(),t.onfinish(function(t){var e=t.content.item[0],n=t&&t.result?t.result.corpus_no:\"\";\nchangeUrl(\"wd=\"+encodeURIComponent(e)+\"&rsv_voice=1&hsug_mtype=2&rsv_vcorpus=\"+encodeURIComponent(n)),bds.comm.lastVoiceQuery=e}),n.log({q:\"resolve\"})}).fail(function(){n.log({q:\"reject\"}),alert(\"不能获得麦克风的权限\")}),n.log({q:\"start\"})})}})}();" }, "redirectURL": "", "headersSize": 404, From f265283d776423a2d2a7be4f4bc051554bbc21c2 Mon Sep 17 00:00:00 2001 From: "xpcoder823@gmail.com" Date: Sat, 4 Aug 2018 00:28:31 +0800 Subject: [PATCH 136/417] remove build --- .../design/pattern/proxy/ConcreteSubject.java | 1 + framework/spring/pom.xml | 24 ---- framework/thirdparty/pom.xml | 22 ---- pom.xml | 106 +++++------------- production-component/crawler/pom.xml | 10 -- production-component/pom.xml | 32 ------ 6 files changed, 28 insertions(+), 167 deletions(-) diff --git a/design-pattern/java-design-pattern-learn/src/main/java/org/laidu/learn/design/pattern/proxy/ConcreteSubject.java b/design-pattern/java-design-pattern-learn/src/main/java/org/laidu/learn/design/pattern/proxy/ConcreteSubject.java index 7ea76e8af..aa41eaa4f 100644 --- a/design-pattern/java-design-pattern-learn/src/main/java/org/laidu/learn/design/pattern/proxy/ConcreteSubject.java +++ b/design-pattern/java-design-pattern-learn/src/main/java/org/laidu/learn/design/pattern/proxy/ConcreteSubject.java @@ -13,6 +13,7 @@ @EqualsAndHashCode public class ConcreteSubject extends AbstractSubject{ + @Override public void request(String name){ System.out.println(String.format("request %s ",name)); } diff --git a/framework/spring/pom.xml b/framework/spring/pom.xml index 2946d52d6..417cb63f3 100644 --- a/framework/spring/pom.xml +++ b/framework/spring/pom.xml @@ -96,28 +96,4 @@ - - - - - org.springframework.boot - spring-boot-maven-plugin - - - pre-integration-test - - start - - - - post-integration-test - - stop - - - - - - - \ No newline at end of file diff --git a/framework/thirdparty/pom.xml b/framework/thirdparty/pom.xml index b1bbad904..c3855dcbf 100644 --- a/framework/thirdparty/pom.xml +++ b/framework/thirdparty/pom.xml @@ -64,26 +64,4 @@ - - - - org.springframework.boot - spring-boot-maven-plugin - - - pre-integration-test - - start - - - - post-integration-test - - stop - - - - - - \ No newline at end of file diff --git a/pom.xml b/pom.xml index f16880a2a..b4db9e8c8 100644 --- a/pom.xml +++ b/pom.xml @@ -103,7 +103,6 @@ ${logstash-logback.version} - @@ -187,29 +186,6 @@ - - - - - org.apache.maven.plugins - maven-scm-publish-plugin - 3.0.0 - true - - - scm:git:git@github.com:laidu/java-learn.git - - - - org.apache.maven.plugins - maven-site-plugin - - true - - - - - org.apache.maven.plugins @@ -221,6 +197,15 @@ + + org.apache.maven.plugins + maven-resources-plugin + 3.1.0 + + UTF-8 + + + org.apache.maven.plugins maven-site-plugin @@ -248,61 +233,6 @@ - - - - - - - - - - - - - - - - org.apache.maven.plugins - maven-surefire-plugin - - true - - - - - maven-release-plugin - 2.2.1 - - true - deploy site site-deploy - - - - - com.jcabi - jcabi-maven-plugin - 0.14.1 - - - - ajc - - - - - - org.aspectj - aspectjtools - 1.9.1 - - - org.aspectj - aspectjweaver - 1.9.1 - - - com.github.github @@ -331,6 +261,24 @@ + + + + org.apache.maven.plugins + maven-project-info-reports-plugin + ${maven-project-info-reports-plugin.version} + + + + true + + + + + + + + \ No newline at end of file diff --git a/production-component/crawler/pom.xml b/production-component/crawler/pom.xml index d4b1f93a7..78fe06c7c 100644 --- a/production-component/crawler/pom.xml +++ b/production-component/crawler/pom.xml @@ -63,14 +63,4 @@ ${webmagic.version} - - - - - org.springframework.boot - spring-boot-maven-plugin - - - - \ No newline at end of file diff --git a/production-component/pom.xml b/production-component/pom.xml index 57d57a776..b44e73432 100644 --- a/production-component/pom.xml +++ b/production-component/pom.xml @@ -24,37 +24,5 @@ crawler - - - - - org.apache.maven.plugins - maven-compiler-plugin - ${maven-compiler-plugin.version} - - ${maven.compiler.source} - ${maven.compiler.target} - - - - - org.apache.maven.plugins - maven-shade-plugin - ${shade.version} - - - - - - package - - shade - - - - - - - \ No newline at end of file From 65b0195060fa38c4a2a9ef78d1dfc27f670ea8fd Mon Sep 17 00:00:00 2001 From: "xpcoder823@gmail.com" Date: Sat, 4 Aug 2018 00:29:15 +0800 Subject: [PATCH 137/417] remove build --- pom.xml | 1 + 1 file changed, 1 insertion(+) diff --git a/pom.xml b/pom.xml index b4db9e8c8..6a0620edc 100644 --- a/pom.xml +++ b/pom.xml @@ -72,6 +72,7 @@ github + ${env.GITHUB_OAUTH_TOKEN} ${project.artifactId} 0.12 From 2debc914a268b7b4ef4e0798a166ef6166bd3d1f Mon Sep 17 00:00:00 2001 From: Tiancai ZANG Date: Mon, 6 Aug 2018 14:47:19 +0800 Subject: [PATCH 138/417] =?UTF-8?q?=E6=B7=BB=E5=8A=A0web-client?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- framework/network/pom.xml | 1 + framework/network/web-client/pom.xml | 35 +++++++++++++++ .../framework/webclient/package-info.java | 10 +++++ .../framework/webclient/usage/Usage.java | 44 +++++++++++++++++++ 4 files changed, 90 insertions(+) create mode 100644 framework/network/web-client/pom.xml create mode 100644 framework/network/web-client/src/main/java/org/laidu/learn/framework/webclient/package-info.java create mode 100644 framework/network/web-client/src/main/java/org/laidu/learn/framework/webclient/usage/Usage.java diff --git a/framework/network/pom.xml b/framework/network/pom.xml index 1db478538..af3bb293a 100644 --- a/framework/network/pom.xml +++ b/framework/network/pom.xml @@ -16,5 +16,6 @@ async-http-client netty httpclient + web-client \ No newline at end of file diff --git a/framework/network/web-client/pom.xml b/framework/network/web-client/pom.xml new file mode 100644 index 000000000..f04a77bd2 --- /dev/null +++ b/framework/network/web-client/pom.xml @@ -0,0 +1,35 @@ + + + + network + org.laidu.learn + 1.0-SNAPSHOT + + 4.0.0 + + web-client + + + 5.0.8.RELEASE + 0.7.8.RELEASE + + + + + + io.projectreactor.ipc + reactor-netty + ${reactor-netty.version} + + + + org.springframework + spring-webflux + ${spring-webflux.version} + true + + + + \ No newline at end of file diff --git a/framework/network/web-client/src/main/java/org/laidu/learn/framework/webclient/package-info.java b/framework/network/web-client/src/main/java/org/laidu/learn/framework/webclient/package-info.java new file mode 100644 index 000000000..2871268b8 --- /dev/null +++ b/framework/network/web-client/src/main/java/org/laidu/learn/framework/webclient/package-info.java @@ -0,0 +1,10 @@ +/** + * spring webclient 使用 + *

                    + * Created by laidu + * on 2018-08-06 14:10. + * + * @author laidu + */ +// TODO: 2018-08-06 14:10 spring webclient 使用 +package org.laidu.learn.framework.webclient; \ No newline at end of file diff --git a/framework/network/web-client/src/main/java/org/laidu/learn/framework/webclient/usage/Usage.java b/framework/network/web-client/src/main/java/org/laidu/learn/framework/webclient/usage/Usage.java new file mode 100644 index 000000000..7111775ab --- /dev/null +++ b/framework/network/web-client/src/main/java/org/laidu/learn/framework/webclient/usage/Usage.java @@ -0,0 +1,44 @@ +package org.laidu.learn.framework.webclient.usage; + +import lombok.extern.slf4j.Slf4j; +import org.springframework.web.reactive.function.client.WebClient; + +import java.util.stream.IntStream; + +/** + * 使用 + *

                    + * Created by laidu + * on 2018-08-06 14:10. + * + * @author laidu + */ +@Slf4j +public class Usage { + + + + public static void main(String[] args) { + + IntStream.range(0,1000).parallel() + .forEach(index->{ + log.info("index : {}", index); + WebClient.create() + .get() + .uri(uriBuilder -> uriBuilder + .scheme("h ttp") + .host("www.baidu.com") + .path("/s") + .queryParam("wd", "北京天气") + .queryParam("other", "test") + .build()) + .retrieve() + .bodyToMono(String.class) + .subscribe(resp -> log.info(": {}", resp)); + }); + + + + } + +} \ No newline at end of file From 05732a916d143fca03ce4ff87dd86635a0564c18 Mon Sep 17 00:00:00 2001 From: Tiancai ZANG Date: Mon, 6 Aug 2018 19:28:51 +0800 Subject: [PATCH 139/417] sync --- .../framework/common/rxjava/usage/Usage.java | 48 +++++++++++++++++++ .../common/rxjava/wheel/Subscriber.java | 19 ++++++++ .../common/rxjava/wheel/package-info.java | 10 ++++ 3 files changed, 77 insertions(+) create mode 100644 framework/common/rxjava/src/main/java/org/laidu/learn/framework/common/rxjava/usage/Usage.java create mode 100644 framework/common/rxjava/src/main/java/org/laidu/learn/framework/common/rxjava/wheel/Subscriber.java create mode 100644 framework/common/rxjava/src/main/java/org/laidu/learn/framework/common/rxjava/wheel/package-info.java diff --git a/framework/common/rxjava/src/main/java/org/laidu/learn/framework/common/rxjava/usage/Usage.java b/framework/common/rxjava/src/main/java/org/laidu/learn/framework/common/rxjava/usage/Usage.java new file mode 100644 index 000000000..ae01c65a1 --- /dev/null +++ b/framework/common/rxjava/src/main/java/org/laidu/learn/framework/common/rxjava/usage/Usage.java @@ -0,0 +1,48 @@ +package org.laidu.learn.framework.common.rxjava.usage; + +import io.reactivex.Observable; +import io.reactivex.disposables.Disposable; +import io.reactivex.schedulers.Schedulers; +import lombok.extern.slf4j.Slf4j; + +import java.util.concurrent.TimeUnit; + +/** + * usage + *

                    + * Created by laidu + * on 2018-08-06 14:52. + * + * @author laidu + */ +@Slf4j +public class Usage { + + + public static void main(String[] args) throws InterruptedException { +// + + Disposable subscribe = Observable.interval(1, TimeUnit.MICROSECONDS) + .subscribeOn(Schedulers.newThread()) +// .observeOn(Schedulers.computation()) + .doOnNext(System.out::println) + .publish() + .subscribe(s -> { + System.out.println( Thread.activeCount()+" " + s.longValue()); + Thread.sleep(1000); + },s->{ + System.out.println("completed"); + }); + + + while (!subscribe.isDisposed()){ + try { + Thread.sleep(100); + } catch (Exception e) { + e.printStackTrace(); + } + } + + } + +} \ No newline at end of file diff --git a/framework/common/rxjava/src/main/java/org/laidu/learn/framework/common/rxjava/wheel/Subscriber.java b/framework/common/rxjava/src/main/java/org/laidu/learn/framework/common/rxjava/wheel/Subscriber.java new file mode 100644 index 000000000..6466db6df --- /dev/null +++ b/framework/common/rxjava/src/main/java/org/laidu/learn/framework/common/rxjava/wheel/Subscriber.java @@ -0,0 +1,19 @@ +package org.laidu.learn.framework.common.rxjava.wheel; + +import io.reactivex.Observer; +import lombok.extern.slf4j.Slf4j; + +/** + * 观察者 + *

                    + * Created by laidu + * on 2018-08-06 18:11. + * + * @author laidu + */ +// TODO: 2018-08-06 18:11 观察者 +@Slf4j +public abstract class Subscriber implements Observer { + + public void onStart(){} +} \ No newline at end of file diff --git a/framework/common/rxjava/src/main/java/org/laidu/learn/framework/common/rxjava/wheel/package-info.java b/framework/common/rxjava/src/main/java/org/laidu/learn/framework/common/rxjava/wheel/package-info.java new file mode 100644 index 000000000..cc43427de --- /dev/null +++ b/framework/common/rxjava/src/main/java/org/laidu/learn/framework/common/rxjava/wheel/package-info.java @@ -0,0 +1,10 @@ +/** + * 造轮子 + *

                    + * Created by laidu + * on 2018-08-06 17:53. + * + * @author laidu + */ +// TODO: 2018-08-06 17:53 造轮子 +package org.laidu.learn.framework.common.rxjava.wheel; \ No newline at end of file From 8a2078eae7cac4afeda662e33bf6fbfb2694112b Mon Sep 17 00:00:00 2001 From: Tiancai ZANG Date: Wed, 8 Aug 2018 18:42:45 +0800 Subject: [PATCH 140/417] =?UTF-8?q?=E7=BB=A7=E7=BB=ADpoi=E5=AD=A6=E4=B9=A0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../learn/apache/poi/create/CreateExcel.java | 49 +++++++++++++----- .../resources/excel/._createworkbook.xlsx | Bin 188 -> 0 bytes .../apache-poi/src/site/markdown/index.md | 14 +++++ 3 files changed, 49 insertions(+), 14 deletions(-) delete mode 100644 framework/common/apache-poi/src/main/resources/excel/._createworkbook.xlsx create mode 100644 framework/common/apache-poi/src/site/markdown/index.md diff --git a/framework/common/apache-poi/src/main/java/org/laidu/learn/apache/poi/create/CreateExcel.java b/framework/common/apache-poi/src/main/java/org/laidu/learn/apache/poi/create/CreateExcel.java index 38bc339d8..ec1d73656 100644 --- a/framework/common/apache-poi/src/main/java/org/laidu/learn/apache/poi/create/CreateExcel.java +++ b/framework/common/apache-poi/src/main/java/org/laidu/learn/apache/poi/create/CreateExcel.java @@ -1,13 +1,16 @@ package org.laidu.learn.apache.poi.create; +import jodd.io.FileUtil; import lombok.extern.slf4j.Slf4j; -import org.apache.poi.xssf.usermodel.XSSFRow; -import org.apache.poi.xssf.usermodel.XSSFSheet; -import org.apache.poi.xssf.usermodel.XSSFWorkbook; +import org.apache.poi.hssf.usermodel.HSSFCell; +import org.apache.poi.hssf.usermodel.HSSFRow; +import org.apache.poi.hssf.usermodel.HSSFSheet; +import org.apache.poi.hssf.usermodel.HSSFWorkbook; +import org.apache.poi.ss.usermodel.CellType; import java.io.File; -import java.io.FileOutputStream; import java.io.IOException; +import java.util.stream.IntStream; /** * create excel @@ -18,25 +21,43 @@ @Slf4j public class CreateExcel { + private static final String workDir = System.getProperty("user.home")+"/temp/excel/"; + + static { + if (!FileUtil.isExistingFolder(new File(workDir))) { + try { + FileUtil.mkdir(new File(workDir)); + System.out.println("成功创建 工作目录 : " + workDir); + } catch (IOException e) { + e.printStackTrace(); + } + } + } - public static void main(String[] args) throws IOException { + public static void createHSSFWorkbook() throws IOException { + + HSSFWorkbook workbook = new HSSFWorkbook(); + + HSSFSheet sheet0 = workbook.createSheet("sheet0"); - XSSFWorkbook workbook = new XSSFWorkbook(); + HSSFRow row0 = sheet0.createRow(0); - String excelPath = "/Users/laidu/IdeaProjects/java-learn/framework/common/apache-poi/src/main/resources/excel/"; - FileOutputStream out = new FileOutputStream(new File(excelPath +"createworkbook.xlsx")); + IntStream.range(0,10).parallel().forEach(i -> { + HSSFCell cell = row0.createCell(i, CellType.STRING); + cell.setCellValue(i+"da"); + }); - XSSFSheet defalut = workbook.createSheet("default1"); - XSSFRow row = defalut.createRow(1); -// IntStream.range(0,10).forEach(index -> row.createCell(index,CellType.NUMERIC)); + workbook.write(new File(workDir+"/HSSFWorkbook.xls")); + + } + public static void main(String[] args) throws IOException { + - workbook.write(out); - out.close(); - System.out.println("demo.xlsx written successfully"); + createHSSFWorkbook(); } } \ No newline at end of file diff --git a/framework/common/apache-poi/src/main/resources/excel/._createworkbook.xlsx b/framework/common/apache-poi/src/main/resources/excel/._createworkbook.xlsx deleted file mode 100644 index cd530322b50ccc40c76e972de114f0ec2e0d157d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 188 zcmZQz6=P>$Vqox1Ojhs@R)|o50+1L3ClDI}aTgGS_ Apache POI项目是用于开发基于Microsoft的OLE 2复合文档格式的纯Java文件格式端口的主项目。 OLE 2复合文档格式由Microsoft Office Documents以及使用MFC属性集来序列化其文档对象的程序使用。 + + +参考: +* [官方示例](https://poi.apache.org/components/index.html) +* [java doc](https://poi.apache.org/apidocs/index.html) +* []() +* [POI教程](https://wizardforcel.gitbooks.io/tutorialspoint-java/apache-poi/1.html) +* []() +* []() \ No newline at end of file From 6fffea5b643055e3d888ff7236c2f4e52df66eb0 Mon Sep 17 00:00:00 2001 From: Tiancai ZANG Date: Fri, 10 Aug 2018 17:05:51 +0800 Subject: [PATCH 141/417] sync --- .../learn/apache/poi/create/CreateExcel.java | 59 +++++++++++-- .../learn/commons/net/ftp/LinuxIDCBrower.java | 4 +- .../mybatis/{AmqpApp.java => MybatisApp.java} | 4 +- .../learn/mybatis/mapper/AppUserMapper.java | 1 - .../laidu/learn/mybatis/model/AppUser.java | 11 ++- .../src/main/resources/application.properties | 9 +- .../src/main/resources/logback-spring.xml | 24 ++++-- pom.xml | 7 +- .../commom/util/enums/BasicCodeEnum.java | 17 ---- .../commom/util/enums/BasicStringEnum.java | 14 ---- .../commom/util/enums/NameValueEnum.java | 38 +++++++++ .../org/laidu/commom/util/file/FileUtil.java | 68 +++++++++++++++ .../laidu/commom/util/file/MsOfficeType.java | 46 +++++++++++ .../laidu/commom/util/string/StringUtil.java | 78 +++++++++++++++++- .../org/laidu/commom/util/util/NameUtil.java | 82 ------------------- .../commom/util/string/StringUtilTest.java | 24 ++++++ .../org/laidu/crawler/enums/WebsiteEnum.java | 13 ++- 17 files changed, 349 insertions(+), 150 deletions(-) rename framework/spring/spring-data/spring-mybatis/src/main/java/org/laidu/learn/mybatis/{AmqpApp.java => MybatisApp.java} (85%) delete mode 100644 production-component/common-util/src/main/java/org/laidu/commom/util/enums/BasicCodeEnum.java delete mode 100644 production-component/common-util/src/main/java/org/laidu/commom/util/enums/BasicStringEnum.java create mode 100644 production-component/common-util/src/main/java/org/laidu/commom/util/enums/NameValueEnum.java create mode 100644 production-component/common-util/src/main/java/org/laidu/commom/util/file/FileUtil.java create mode 100644 production-component/common-util/src/main/java/org/laidu/commom/util/file/MsOfficeType.java delete mode 100644 production-component/common-util/src/main/java/org/laidu/commom/util/util/NameUtil.java create mode 100644 production-component/common-util/src/test/java/org/laidu/commom/util/string/StringUtilTest.java diff --git a/framework/common/apache-poi/src/main/java/org/laidu/learn/apache/poi/create/CreateExcel.java b/framework/common/apache-poi/src/main/java/org/laidu/learn/apache/poi/create/CreateExcel.java index ec1d73656..bca3baf0b 100644 --- a/framework/common/apache-poi/src/main/java/org/laidu/learn/apache/poi/create/CreateExcel.java +++ b/framework/common/apache-poi/src/main/java/org/laidu/learn/apache/poi/create/CreateExcel.java @@ -7,15 +7,23 @@ import org.apache.poi.hssf.usermodel.HSSFSheet; import org.apache.poi.hssf.usermodel.HSSFWorkbook; import org.apache.poi.ss.usermodel.CellType; +import org.apache.poi.xssf.usermodel.XSSFCell; +import org.apache.poi.xssf.usermodel.XSSFRow; +import org.apache.poi.xssf.usermodel.XSSFSheet; +import org.apache.poi.xssf.usermodel.XSSFWorkbook; +import org.laidu.commom.util.file.MsOfficeType; import java.io.File; +import java.io.FileInputStream; +import java.io.FileOutputStream; import java.io.IOException; import java.util.stream.IntStream; /** * create excel *

                    - * Created by tiancai.zang + * + * @author tiancai.zang * on 2018-04-28 15:11. */ @Slf4j @@ -39,13 +47,12 @@ public static void createHSSFWorkbook() throws IOException { HSSFWorkbook workbook = new HSSFWorkbook(); - HSSFSheet sheet0 = workbook.createSheet("sheet0"); - HSSFRow row0 = sheet0.createRow(0); - - IntStream.range(0,10).parallel().forEach(i -> { - HSSFCell cell = row0.createCell(i, CellType.STRING); - cell.setCellValue(i+"da"); + IntStream.range(0,10).forEach(i -> { + HSSFSheet sheet0 = workbook.createSheet("sheet"+i); + HSSFRow row0 = sheet0.createRow(0); + HSSFCell cell = row0.createCell(0, CellType.STRING); + cell.setCellValue(i+"测试数据"); }); workbook.write(new File(workDir+"/HSSFWorkbook.xls")); @@ -53,11 +60,47 @@ public static void createHSSFWorkbook() throws IOException { } + public static void createXSSFWorkbook() throws IOException { + + XSSFWorkbook xssfWorkbook = new XSSFWorkbook(); + + IntStream.range(0,10).forEach(i -> { + XSSFSheet sheet = xssfWorkbook.createSheet("sheet" + i); + XSSFRow row0 = sheet.createRow(0); + XSSFCell cell = row0.createCell(0, CellType.STRING); + cell.setCellValue(i+"测试数据"); + }); + + xssfWorkbook.write(new FileOutputStream(new File(workDir+"/HSSFWorkbook.xlsx"))); + } + + + public static void readWorkbook(String fileName) throws IOException{ + + try (FileInputStream excel = new FileInputStream(workDir+"/"+fileName)) { + + + String fileHead = org.laidu.commom.util.file.FileUtil.INSTANCE.getFileHead(excel); + + log.info("file head: {}", fileHead); + + String typeByValue = MsOfficeType.getTypeByValue(fileHead); + + log.info(": {}", typeByValue); + + + } + + } + public static void main(String[] args) throws IOException { - createHSSFWorkbook(); +// createHSSFWorkbook(); + +// createXSSFWorkbook(); + readWorkbook("0807合益进件名单.xlsx"); } } \ No newline at end of file diff --git a/framework/common/commons-net/src/main/java/org/laidu/learn/commons/net/ftp/LinuxIDCBrower.java b/framework/common/commons-net/src/main/java/org/laidu/learn/commons/net/ftp/LinuxIDCBrower.java index ba7a71838..5bffd8181 100644 --- a/framework/common/commons-net/src/main/java/org/laidu/learn/commons/net/ftp/LinuxIDCBrower.java +++ b/framework/common/commons-net/src/main/java/org/laidu/learn/commons/net/ftp/LinuxIDCBrower.java @@ -18,9 +18,9 @@ public class LinuxIDCBrower { //1~5 - private final static String HOST = "ftp1.linuxidc.com"; + private final static String HOST = "http://linux.linuxidc.com"; private final static int PORT = 21; - private final static String USER_NAME = "ftp1.linuxidc.com"; + private final static String USER_NAME = "www.linuxidc.com"; private final static String PASSWORD = "www.linuxidc.com"; private final static String encoding = "gb2312"; diff --git a/framework/spring/spring-data/spring-mybatis/src/main/java/org/laidu/learn/mybatis/AmqpApp.java b/framework/spring/spring-data/spring-mybatis/src/main/java/org/laidu/learn/mybatis/MybatisApp.java similarity index 85% rename from framework/spring/spring-data/spring-mybatis/src/main/java/org/laidu/learn/mybatis/AmqpApp.java rename to framework/spring/spring-data/spring-mybatis/src/main/java/org/laidu/learn/mybatis/MybatisApp.java index 169431e63..50ad7e2de 100644 --- a/framework/spring/spring-data/spring-mybatis/src/main/java/org/laidu/learn/mybatis/AmqpApp.java +++ b/framework/spring/spring-data/spring-mybatis/src/main/java/org/laidu/learn/mybatis/MybatisApp.java @@ -11,10 +11,10 @@ */ @MapperScan("org.laidu.learn.mybatis.mapper") @SpringBootApplication -public class AmqpApp { +public class MybatisApp { public static void main(String[] args){ - SpringApplication.run(AmqpApp.class); + SpringApplication.run(MybatisApp.class); } } \ No newline at end of file diff --git a/framework/spring/spring-data/spring-mybatis/src/main/java/org/laidu/learn/mybatis/mapper/AppUserMapper.java b/framework/spring/spring-data/spring-mybatis/src/main/java/org/laidu/learn/mybatis/mapper/AppUserMapper.java index 40070f22f..73a30d352 100644 --- a/framework/spring/spring-data/spring-mybatis/src/main/java/org/laidu/learn/mybatis/mapper/AppUserMapper.java +++ b/framework/spring/spring-data/spring-mybatis/src/main/java/org/laidu/learn/mybatis/mapper/AppUserMapper.java @@ -6,7 +6,6 @@ import java.util.List; -@Mapper public interface AppUserMapper { @Delete({ "delete from ca_app_user", diff --git a/framework/spring/spring-data/spring-mybatis/src/main/java/org/laidu/learn/mybatis/model/AppUser.java b/framework/spring/spring-data/spring-mybatis/src/main/java/org/laidu/learn/mybatis/model/AppUser.java index b683f605c..c2c6874ad 100644 --- a/framework/spring/spring-data/spring-mybatis/src/main/java/org/laidu/learn/mybatis/model/AppUser.java +++ b/framework/spring/spring-data/spring-mybatis/src/main/java/org/laidu/learn/mybatis/model/AppUser.java @@ -3,7 +3,14 @@ import java.io.Serializable; import java.util.Date; +/** + * @author laidu + */ public class AppUser implements Serializable { + + + private static final long serialVersionUID = 1L; + private Long id; private String openId; @@ -51,9 +58,7 @@ public class AppUser implements Serializable { private String remark; private String idCardPolice; - - private static final long serialVersionUID = 1L; - + public Long getId() { return id; } diff --git a/framework/spring/spring-data/spring-mybatis/src/main/resources/application.properties b/framework/spring/spring-data/spring-mybatis/src/main/resources/application.properties index 72874c4ea..ad012fe47 100644 --- a/framework/spring/spring-data/spring-mybatis/src/main/resources/application.properties +++ b/framework/spring/spring-data/spring-mybatis/src/main/resources/application.properties @@ -1,7 +1,9 @@ #spring date source config +spring.jackson.property-naming-strategy=SNAKE_CASE + spring.datasource.type=com.alibaba.druid.pool.DruidDataSource -spring.datasource.url= jdbc:mysql://local-dev:3306/o2o?useSSL=false +spring.datasource.url= jdbc:mysql://local-dev:3306/o2o-dev?useSSL=false spring.datasource.username=root spring.datasource.password=root spring.datasource.driver-class-name=com.mysql.jdbc.Driver @@ -34,9 +36,10 @@ spring.datasource.druid.filter.stat.log-slow-sql=true spring.datasource.druid.filter.stat.slow-sql-millis=2000 spring.datasource.druid.filter.stat.merge-sql=true +spring.datasource.druid.log-different-thread=true + spring.datasource.druid.filter.slf4j.enabled=true spring.datasource.druid.filter.slf4j.statement-log-enabled=true - spring.datasource.druid.filter.slf4j.statement-execute-after-log-enabled=false spring.datasource.druid.filter.slf4j.statement-parameter-set-log-enabled=true spring.datasource.druid.filter.slf4j.statement-execute-batch-after-log-enabled=false @@ -50,4 +53,4 @@ spring.datasource.druid.filter.slf4j.connection-log-enabled=false pagehelper.reasonable= true -pagehelper.support-methods-arguments=true \ No newline at end of file +pagehelper.support-methods-arguments=true diff --git a/framework/spring/spring-data/spring-mybatis/src/main/resources/logback-spring.xml b/framework/spring/spring-data/spring-mybatis/src/main/resources/logback-spring.xml index d83f84349..77b95419e 100644 --- a/framework/spring/spring-data/spring-mybatis/src/main/resources/logback-spring.xml +++ b/framework/spring/spring-data/spring-mybatis/src/main/resources/logback-spring.xml @@ -16,6 +16,7 @@ See here for more details: http://gordondickens.com/wordpress/2013/03/27/sawing- + @@ -39,7 +40,6 @@ See here for more details: http://gordondickens.com/wordpress/2013/03/27/sawing- ${LOG_HOME}/${APP_NAME}.log.%d{yyyy-MM-dd}.log - 30 @@ -93,17 +93,26 @@ See here for more details: http://gordondickens.com/wordpress/2013/03/27/sawing- - + + + ${LOG_HOME}/${APP_NAME}-query-sql.log - ${LOG_HOME}/${APP_NAME}-query.log-druid-%d{yyyy-MM-dd}.log + ${LOG_HOME}/${APP_NAME}-query-sql-%d{yyyy-MM-dd}.log 90 + - - %X{${MDC_UUID}} %d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n + + %d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n + + + {"app":"sql-log"} + + + @@ -118,9 +127,8 @@ See here for more details: http://gordondickens.com/wordpress/2013/03/27/sawing- - - - + + diff --git a/pom.xml b/pom.xml index 6a0620edc..2ef32d6ab 100644 --- a/pom.xml +++ b/pom.xml @@ -92,7 +92,7 @@ ${junit4.version}.0 1.0.2 - 5.1 + 5.2 @@ -133,6 +133,11 @@ logback-access ${logback.version} + + net.logstash.logback + logstash-logback-encoder + + diff --git a/production-component/common-util/src/main/java/org/laidu/commom/util/enums/BasicCodeEnum.java b/production-component/common-util/src/main/java/org/laidu/commom/util/enums/BasicCodeEnum.java deleted file mode 100644 index 8a3211713..000000000 --- a/production-component/common-util/src/main/java/org/laidu/commom/util/enums/BasicCodeEnum.java +++ /dev/null @@ -1,17 +0,0 @@ -package org.laidu.commom.util.enums; - -/** - * basic code enum - * - * @author tiancai.zang - * 2018-01-09 16:33. - */ -// : 2018-01-09 16:33 basic code enum -public interface BasicCodeEnum { - - String getCode(); - - String getMsg(); - - BasicCodeEnum getEnumByCode(String code); -} \ No newline at end of file diff --git a/production-component/common-util/src/main/java/org/laidu/commom/util/enums/BasicStringEnum.java b/production-component/common-util/src/main/java/org/laidu/commom/util/enums/BasicStringEnum.java deleted file mode 100644 index 0182eec7a..000000000 --- a/production-component/common-util/src/main/java/org/laidu/commom/util/enums/BasicStringEnum.java +++ /dev/null @@ -1,14 +0,0 @@ -package org.laidu.commom.util.enums; - -/** - * basic string enum - * - * @author tiancai.zang - * 2018-01-09 16:30. - */ -// : 2018-01-09 16:30 basic string enum -public interface BasicStringEnum { - String getName(); - String getValue(); - BasicStringEnum getEnumByName(); -} diff --git a/production-component/common-util/src/main/java/org/laidu/commom/util/enums/NameValueEnum.java b/production-component/common-util/src/main/java/org/laidu/commom/util/enums/NameValueEnum.java new file mode 100644 index 000000000..4d77e2ad0 --- /dev/null +++ b/production-component/common-util/src/main/java/org/laidu/commom/util/enums/NameValueEnum.java @@ -0,0 +1,38 @@ +package org.laidu.commom.util.enums; + +/** + * basic string enum + * + * @author tiancai.zang + * 2018-01-09 16:30. + */ +public interface NameValueEnum{ + + /** + * name + * @return + */ + T getName(); + + /** + * value + * @return + */ + V getValue(); + + + /** + * 通过name 通过name获取枚举 + * @param name + * @return + */ + NameValueEnum getEnumByName(T name); + + + /** + * 通过value 获取枚举 + * @param value + * @return + */ + NameValueEnum getEnumByValue(V value); +} diff --git a/production-component/common-util/src/main/java/org/laidu/commom/util/file/FileUtil.java b/production-component/common-util/src/main/java/org/laidu/commom/util/file/FileUtil.java new file mode 100644 index 000000000..f0c38f808 --- /dev/null +++ b/production-component/common-util/src/main/java/org/laidu/commom/util/file/FileUtil.java @@ -0,0 +1,68 @@ +package org.laidu.commom.util.file; + +import lombok.extern.slf4j.Slf4j; + +import java.io.File; +import java.io.FileInputStream; +import java.io.IOException; +import java.io.InputStream; + +/** + * 文件工具类 + *

                    + * Created by laidu + * on 2018-08-09 10:57. + * + * @author laidu + */ +@Slf4j +public enum FileUtil { + // instance + INSTANCE; + + public String getFileHead(File file) { + + String head = "未知文件"; + + try (InputStream in = new FileInputStream(file)) { + head = getFileHead(in); + } catch (IOException e) { + + log.error("文件打开失败 : {}", file.getName(), e); + } + + return head; + } + + public String getFileHead(InputStream in) throws IOException { + byte[] b = new byte[28]; + + in.read(b, 0, 28); + + return bytesToHexString(b); + } + + + /** + * 将文件头转换成16进制字符串 + * + * @param src + * @return + */ + private String bytesToHexString(byte[] src) { + + StringBuilder stringBuilder = new StringBuilder(); + if (src == null || src.length <= 0) { + return null; + } + for (byte aSrc : src) { + int v = aSrc & 0xFF; + String hv = Integer.toHexString(v); + if (hv.length() < 2) { + stringBuilder.append(0); + } + stringBuilder.append(hv); + } + return stringBuilder.toString(); + } +} \ No newline at end of file diff --git a/production-component/common-util/src/main/java/org/laidu/commom/util/file/MsOfficeType.java b/production-component/common-util/src/main/java/org/laidu/commom/util/file/MsOfficeType.java new file mode 100644 index 000000000..8fd674d57 --- /dev/null +++ b/production-component/common-util/src/main/java/org/laidu/commom/util/file/MsOfficeType.java @@ -0,0 +1,46 @@ +package org.laidu.commom.util.file; + +import lombok.AllArgsConstructor; +import lombok.Getter; +import lombok.extern.slf4j.Slf4j; + +/** + * MsOfficeType 文件类型 + * + * @author tiancai.zang + * on 2018-08-09 11:33. + */ +@Slf4j +@AllArgsConstructor +public enum MsOfficeType { + + /** + * 2003 + */ + MOW2003("d0cf11e"), + + /** + * 2007+ + */ + MOW2007("504b0"), + + ; + + @Getter + private String type; + + /** + * 根据文件头获取文件类型 + * + * @param value + * @return + */ + public static String getTypeByValue(String value) { + for (MsOfficeType mow : values()) { + if (value.toUpperCase().startsWith(mow.getType().toUpperCase())) { + return mow.name(); + } + } + return null; + } +} \ No newline at end of file diff --git a/production-component/common-util/src/main/java/org/laidu/commom/util/string/StringUtil.java b/production-component/common-util/src/main/java/org/laidu/commom/util/string/StringUtil.java index 2044aea4f..4918bcc23 100644 --- a/production-component/common-util/src/main/java/org/laidu/commom/util/string/StringUtil.java +++ b/production-component/common-util/src/main/java/org/laidu/commom/util/string/StringUtil.java @@ -1,6 +1,11 @@ package org.laidu.commom.util.string; import lombok.extern.slf4j.Slf4j; +import org.laidu.commom.util.annotation.Singleton; +import org.laidu.commom.util.xml.JAXBUtil; + +import java.util.ArrayList; +import java.util.List; /** * String util @@ -10,10 +15,79 @@ * * @author laidu */ -// TODO: 2018-07-31 17:53 String util @Slf4j -public class StringUtil extends jodd.util.StringUtil { +public enum StringUtil { + + /** + * 实例 + */ + INSTANCE; + + /** + * 驼峰转下划线 + * @param input + * @return + */ + public String toSnakeCase(String input) { + if (input == null) { + return input; + } else { + int length = input.length(); + StringBuilder result = new StringBuilder(length * 2); + int resultLength = 0; + boolean wasPrevTranslated = false; + + for (int i = 0; i < length; ++i) { + char c = input.charAt(i); + if (i > 0 || c != '_') { + if (Character.isUpperCase(c)) { + if (!wasPrevTranslated && resultLength > 0 && result.charAt(resultLength - 1) != '_') { + result.append('_'); + ++resultLength; + } + + c = Character.toLowerCase(c); + wasPrevTranslated = true; + } else { + wasPrevTranslated = false; + } + + result.append(c); + ++resultLength; + } + } + + return resultLength > 0 ? result.toString() : input; + } + } + + /** + * 下划线转头峰 + * + * @param name + * @return + */ + public String toCamelCase(String name) { + StringBuilder camelCase = new StringBuilder(); + String[] arr = name.split("_"); + List list = new ArrayList<>(); + for (String a : arr) { + if (a.length() > 0) { + list.add(a); + } + } + for (int i = 0; i < list.size(); i++) { + if (i > 0) { + char c = list.get(i).charAt(0); + String s = String.valueOf(c).toUpperCase() + list.get(i).substring(1).toLowerCase(); + camelCase.append(s); + } else { + camelCase.append(list.get(i).toLowerCase()); + } + } + return camelCase.toString(); + } } \ No newline at end of file diff --git a/production-component/common-util/src/main/java/org/laidu/commom/util/util/NameUtil.java b/production-component/common-util/src/main/java/org/laidu/commom/util/util/NameUtil.java deleted file mode 100644 index be505b567..000000000 --- a/production-component/common-util/src/main/java/org/laidu/commom/util/util/NameUtil.java +++ /dev/null @@ -1,82 +0,0 @@ -package org.laidu.commom.util.util; - -import java.util.ArrayList; -import java.util.List; - -/** - * name util - *

                    - * Created by tiancai.zang on 2017-12-18 16-07. - */ -public final class NameUtil { - - /** - * Private constructor. - */ - private NameUtil() { - } - - /** - * @return Singleton instance - */ - public static NameUtil getInstance() { - return NameUtilHolder.INSTANCE; - } - - /** - * Provides the lazy-loaded Singleton instance. - */ - private static class NameUtilHolder { - - private static final NameUtil INSTANCE = - new NameUtil(); - } - - - /** - * 头峰式转下划线 - * @param name - * @return - */ - public String to_(String name){ - StringBuilder stringBuilder = new StringBuilder(); - for(int i = 0; i < name.length() ; ++i){ - char c = name.charAt(i); - if (c >= 'A' && c <= 'Z'){ - stringBuilder.append("_").append(Character.toLowerCase(c)); - }else { - stringBuilder.append(c); - } - } - return stringBuilder.toString(); - } - - /** - * 下划线转头峰式 - * @param name - * @return - */ - public String toCamelCase (String name){ - String camelCase = ""; - String [] arr = name.split("_"); - List list = new ArrayList(); - - //将数组中非空字符串添加至list - for(String a : arr){ - if(a.length() > 0){ - list.add(a); - } - } - for(int i=0;i0){ //后面单词首字母大写 - char c = list.get(i).charAt(0); - String s = String.valueOf(c).toUpperCase() + list.get(i).substring(1).toLowerCase(); - camelCase+=s; - }else{ //首个单词小写 - camelCase+=list.get(i).toLowerCase(); - } - } - return camelCase; - } - -} \ No newline at end of file diff --git a/production-component/common-util/src/test/java/org/laidu/commom/util/string/StringUtilTest.java b/production-component/common-util/src/test/java/org/laidu/commom/util/string/StringUtilTest.java new file mode 100644 index 000000000..86e96e67f --- /dev/null +++ b/production-component/common-util/src/test/java/org/laidu/commom/util/string/StringUtilTest.java @@ -0,0 +1,24 @@ +package org.laidu.commom.util.string; + +import lombok.extern.slf4j.Slf4j; +import org.junit.jupiter.api.Test; + +import static org.junit.jupiter.api.Assertions.*; + +@Slf4j +class StringUtilTest { + + @Test + void snakeCasetranslate() { + + String input = "idCard"; + + String result = StringUtil.INSTANCE.toSnakeCase(input); + + log.info("result: {}", result); + + String result2 = StringUtil.INSTANCE.toCamelCase(result); + + log.info("result2: {}", result2); + } +} \ No newline at end of file diff --git a/production-component/crawler/src/main/java/org/laidu/crawler/enums/WebsiteEnum.java b/production-component/crawler/src/main/java/org/laidu/crawler/enums/WebsiteEnum.java index 9ec40cc59..6c1322e44 100644 --- a/production-component/crawler/src/main/java/org/laidu/crawler/enums/WebsiteEnum.java +++ b/production-component/crawler/src/main/java/org/laidu/crawler/enums/WebsiteEnum.java @@ -1,7 +1,5 @@ package org.laidu.crawler.enums; -import org.laidu.commom.util.enums.BasicCodeEnum; - import java.util.HashMap; import java.util.Map; @@ -12,7 +10,11 @@ * 2018-01-09 16:15. */ // : 2018-01-09 16:15 web site enum -public enum WebsiteEnum implements BasicCodeEnum{ +public enum WebsiteEnum { + + /** + * baidu + */ BAIDU("001","baidu"); private final String code; @@ -28,18 +30,15 @@ public enum WebsiteEnum implements BasicCodeEnum{ this.name = name; } - @Override public String getCode() { return code; } - @Override public String getMsg() { return name; } - @Override - public BasicCodeEnum getEnumByCode(String code) { + public WebsiteEnum getEnumByCode(String code) { return valueMap.get(code); } } From 256c9b255f924c59d07fd2cd21a31df735fab8bb Mon Sep 17 00:00:00 2001 From: Tiancai ZANG Date: Fri, 10 Aug 2018 18:42:52 +0800 Subject: [PATCH 142/417] =?UTF-8?q?=E7=94=9F=E4=BA=A7=E7=8E=AF=E5=A2=83?= =?UTF-8?q?=E7=A6=81=E7=94=A8=20swagger?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/main/resources/application.yml | 2 -- framework/spring/spring-web/pom.xml | 2 ++ .../spring/spring-web/spring-mvc/pom.xml | 10 +++++++ .../src/main/resources/application.yml | 22 +++++++++++++++- .../swagger/demo/SwaggerApplication.java | 11 ++++++-- .../swagger/demo/config/SwaggerConfig.java | 26 ++++++++++++++----- .../swagger/demo/config/package-info.java | 9 +++++++ .../demo/controller/HomeController.java | 18 +++---------- .../learn/swagger/demo/model/Product.java | 2 ++ .../resources/application-prod.properties | 5 ++++ 10 files changed, 81 insertions(+), 26 deletions(-) create mode 100644 framework/spring/swagger/src/main/java/org/laidu/learn/swagger/demo/config/package-info.java create mode 100644 framework/spring/swagger/src/main/resources/application-prod.properties diff --git a/framework/spring/spring-boot/spring-boot-app/src/main/resources/application.yml b/framework/spring/spring-boot/spring-boot-app/src/main/resources/application.yml index 04707af59..986ab404d 100644 --- a/framework/spring/spring-boot/spring-boot-app/src/main/resources/application.yml +++ b/framework/spring/spring-boot/spring-boot-app/src/main/resources/application.yml @@ -1,5 +1,3 @@ - - spring: devtools: livereload: diff --git a/framework/spring/spring-web/pom.xml b/framework/spring/spring-web/pom.xml index 4dc811193..54c4a4d6c 100644 --- a/framework/spring/spring-web/pom.xml +++ b/framework/spring/spring-web/pom.xml @@ -24,6 +24,8 @@ + + diff --git a/framework/spring/spring-web/spring-mvc/pom.xml b/framework/spring/spring-web/spring-mvc/pom.xml index 400992e7c..bce0e06e6 100644 --- a/framework/spring/spring-web/spring-mvc/pom.xml +++ b/framework/spring/spring-web/spring-mvc/pom.xml @@ -11,8 +11,18 @@ spring-mvc + + 1.9.0 + + + + org.zalando + logbook-spring-boot-starter + ${logbook.version} + + org.laidu.learn.swagger swagger diff --git a/framework/spring/spring-web/spring-mvc/src/main/resources/application.yml b/framework/spring/spring-web/spring-mvc/src/main/resources/application.yml index 93b3a7196..95783435d 100644 --- a/framework/spring/spring-web/spring-mvc/src/main/resources/application.yml +++ b/framework/spring/spring-web/spring-mvc/src/main/resources/application.yml @@ -27,4 +27,24 @@ management: endpoints: web: exposure: - include: "*" \ No newline at end of file + include: "*" + +logging.level.org.zalando.logbook: TRACE + +logbook: + exclude: + - /health + - /admin/** + filter.enabled: true + format.style: json + obfuscate: + headers: + - Authorization + - X-Secret + parameters: + - access_token + - password + write: + category: http.wire-log + level: INFO + chunk-size: 1000 \ No newline at end of file diff --git a/framework/spring/swagger/src/main/java/org/laidu/learn/swagger/demo/SwaggerApplication.java b/framework/spring/swagger/src/main/java/org/laidu/learn/swagger/demo/SwaggerApplication.java index bf1dec3d0..8e93fa75a 100644 --- a/framework/spring/swagger/src/main/java/org/laidu/learn/swagger/demo/SwaggerApplication.java +++ b/framework/spring/swagger/src/main/java/org/laidu/learn/swagger/demo/SwaggerApplication.java @@ -1,14 +1,21 @@ package org.laidu.learn.swagger.demo; -import org.springframework.boot.SpringApplication; +import org.springframework.boot.Banner; import org.springframework.boot.autoconfigure.SpringBootApplication; +import org.springframework.boot.builder.SpringApplicationBuilder; +import springfox.documentation.swagger2.annotations.EnableSwagger2; /** * @author laidu */ +@EnableSwagger2 @SpringBootApplication public class SwaggerApplication { public static void main(String[] args) { - SpringApplication.run(SwaggerApplication.class, args); + + new SpringApplicationBuilder(SwaggerApplication.class) + .bannerMode(Banner.Mode.OFF) + .logStartupInfo(false) + .run(args); } } diff --git a/framework/spring/swagger/src/main/java/org/laidu/learn/swagger/demo/config/SwaggerConfig.java b/framework/spring/swagger/src/main/java/org/laidu/learn/swagger/demo/config/SwaggerConfig.java index 85b8783b1..c6962ad5a 100644 --- a/framework/spring/swagger/src/main/java/org/laidu/learn/swagger/demo/config/SwaggerConfig.java +++ b/framework/spring/swagger/src/main/java/org/laidu/learn/swagger/demo/config/SwaggerConfig.java @@ -1,14 +1,12 @@ package org.laidu.learn.swagger.demo.config; -import org.springframework.boot.autoconfigure.condition.ConditionalOnBean; -import org.springframework.boot.autoconfigure.condition.ConditionalOnExpression; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; +import org.springframework.context.annotation.Profile; import springfox.documentation.builders.PathSelectors; import springfox.documentation.builders.RequestHandlerSelectors; import springfox.documentation.spi.DocumentationType; import springfox.documentation.spring.web.plugins.Docket; -import springfox.documentation.swagger2.annotations.EnableSwagger2; /** * SwaggerConfig @@ -18,12 +16,25 @@ * @date 2017-12-10 21:55 */ @Configuration -@EnableSwagger2 -@ConditionalOnExpression("'${spring.profiles.active}' == 'default' || '${spring.profiles.active}' == 'dev' || '${spring.profiles.active}' == 'test'") public class SwaggerConfig { + + + @Bean + @Profile("prod") + public Docket apiProd() { + return new Docket(DocumentationType.SWAGGER_2) + // 生产环境禁用swagger + .enable(false) + .select() + .apis(RequestHandlerSelectors.any()) + .paths(PathSelectors.any()) + .build(); + } + + @Bean - @ConditionalOnBean(SwaggerConfig.class) - public Docket api() { + @Profile({"default", "dev", "test"}) + public Docket apiDev() { return new Docket(DocumentationType.SWAGGER_2) .select() .apis(RequestHandlerSelectors.any()) @@ -31,4 +42,5 @@ public Docket api() { .build(); } + } \ No newline at end of file diff --git a/framework/spring/swagger/src/main/java/org/laidu/learn/swagger/demo/config/package-info.java b/framework/spring/swagger/src/main/java/org/laidu/learn/swagger/demo/config/package-info.java new file mode 100644 index 000000000..925dc8eb6 --- /dev/null +++ b/framework/spring/swagger/src/main/java/org/laidu/learn/swagger/demo/config/package-info.java @@ -0,0 +1,9 @@ +/** + * swagger config + *

                    + * Created by laidu + * on 2018-08-10 17:49. + * + * @author laidu + */ +package org.laidu.learn.swagger.demo.config; \ No newline at end of file diff --git a/framework/spring/swagger/src/main/java/org/laidu/learn/swagger/demo/controller/HomeController.java b/framework/spring/swagger/src/main/java/org/laidu/learn/swagger/demo/controller/HomeController.java index cc087f05e..eb1060d61 100644 --- a/framework/spring/swagger/src/main/java/org/laidu/learn/swagger/demo/controller/HomeController.java +++ b/framework/spring/swagger/src/main/java/org/laidu/learn/swagger/demo/controller/HomeController.java @@ -10,7 +10,9 @@ /** * home *

                    - * Created by tiancai.zang on 2017-12-10 21:43. + * + * @author tiancai.zang + * @date 2017-12-10 21:43 */ @Slf4j @RestController @@ -42,19 +44,7 @@ public Product add(Product product){ @PostMapping("/test") public String test(@RequestBody byte[] bodyByte){ -// byte[] entryptionByte = "MTczNDY1MTkxNDM6cTExMTExMTExMQ==".getBytes(); -// int index = ArraysUtil.indexOf(body,entryptionByte); -// -// byte[] byte1 = ArraysUtil.subarray(body,0,index); -//// byte[] byte2 = ArraysUtil.subarray(body,index+entryptionByte.length,body.length); -// byte[] byte2 = ArraysUtil.remove(body,0,170); -// -// System.out.println(Base64.encodeToString(byte1)); -// System.out.println(Base64.encodeToString(byte2)); -// -// -// return new String(body); - + log.info("body: {}", bodyByte); return new String(bodyByte); } diff --git a/framework/spring/swagger/src/main/java/org/laidu/learn/swagger/demo/model/Product.java b/framework/spring/swagger/src/main/java/org/laidu/learn/swagger/demo/model/Product.java index 35887419b..bf546eced 100644 --- a/framework/spring/swagger/src/main/java/org/laidu/learn/swagger/demo/model/Product.java +++ b/framework/spring/swagger/src/main/java/org/laidu/learn/swagger/demo/model/Product.java @@ -1,5 +1,6 @@ package org.laidu.learn.swagger.demo.model; +import io.swagger.annotations.ApiModel; import lombok.AllArgsConstructor; import lombok.Builder; import lombok.Data; @@ -16,6 +17,7 @@ @Builder @AllArgsConstructor @NoArgsConstructor +@ApiModel public class Product { /** diff --git a/framework/spring/swagger/src/main/resources/application-prod.properties b/framework/spring/swagger/src/main/resources/application-prod.properties new file mode 100644 index 000000000..7467cc18f --- /dev/null +++ b/framework/spring/swagger/src/main/resources/application-prod.properties @@ -0,0 +1,5 @@ +spring.jackson.property-naming-strategy=CAMEL_CASE_TO_LOWER_CASE_WITH_UNDERSCORES +server.address=0.0.0.0 + +spring.application.name=swagger-demo +spring.application.admin.enabled=true \ No newline at end of file From 7357b3b9fd7d291fed71966f48fcb3cdb0baea70 Mon Sep 17 00:00:00 2001 From: Tiancai ZANG Date: Fri, 10 Aug 2018 19:12:11 +0800 Subject: [PATCH 143/417] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E5=8D=95=E7=82=B9?= =?UTF-8?q?=E7=99=BB=E5=BD=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- framework/spring/spring-boot/pom.xml | 1 + .../spring-boot/spring-boot-sso/pom.xml | 35 +++++++++++++++++++ .../laidu/learn/spring/boot/sso/SSOApp.java | 27 ++++++++++++++ .../boot/sso/controller/SSOController.java | 25 +++++++++++++ .../learn/spring/boot/sso/package-info.java | 9 +++++ .../src/main/resources/application.yml | 13 +++++++ .../src/site/markdown/index.md | 1 + 7 files changed, 111 insertions(+) create mode 100644 framework/spring/spring-boot/spring-boot-sso/pom.xml create mode 100644 framework/spring/spring-boot/spring-boot-sso/src/main/java/org/laidu/learn/spring/boot/sso/SSOApp.java create mode 100644 framework/spring/spring-boot/spring-boot-sso/src/main/java/org/laidu/learn/spring/boot/sso/controller/SSOController.java create mode 100644 framework/spring/spring-boot/spring-boot-sso/src/main/java/org/laidu/learn/spring/boot/sso/package-info.java create mode 100644 framework/spring/spring-boot/spring-boot-sso/src/main/resources/application.yml create mode 100644 framework/spring/spring-boot/spring-boot-sso/src/site/markdown/index.md diff --git a/framework/spring/spring-boot/pom.xml b/framework/spring/spring-boot/pom.xml index 1ea1984d2..d8d43745e 100644 --- a/framework/spring/spring-boot/pom.xml +++ b/framework/spring/spring-boot/pom.xml @@ -16,6 +16,7 @@ spring-boot-app spring-boot-shiro + spring-boot-sso diff --git a/framework/spring/spring-boot/spring-boot-sso/pom.xml b/framework/spring/spring-boot/spring-boot-sso/pom.xml new file mode 100644 index 000000000..84d8c4fca --- /dev/null +++ b/framework/spring/spring-boot/spring-boot-sso/pom.xml @@ -0,0 +1,35 @@ + + + + spring-boot + org.laidu.learn + 1.0-SNAPSHOT + + 4.0.0 + + spring-boot-sso + + + + + org.springframework.boot + spring-boot-starter-web-services + + + + org.springframework.boot + spring-boot-starter-security + + + + org.springframework.security.oauth.boot + spring-security-oauth2-autoconfigure + 2.0.0.RELEASE + + + + + + \ No newline at end of file diff --git a/framework/spring/spring-boot/spring-boot-sso/src/main/java/org/laidu/learn/spring/boot/sso/SSOApp.java b/framework/spring/spring-boot/spring-boot-sso/src/main/java/org/laidu/learn/spring/boot/sso/SSOApp.java new file mode 100644 index 000000000..2f91a3db4 --- /dev/null +++ b/framework/spring/spring-boot/spring-boot-sso/src/main/java/org/laidu/learn/spring/boot/sso/SSOApp.java @@ -0,0 +1,27 @@ +package org.laidu.learn.spring.boot.sso; + +import lombok.extern.slf4j.Slf4j; +import org.springframework.boot.Banner; +import org.springframework.boot.autoconfigure.SpringBootApplication; +import org.springframework.boot.autoconfigure.security.oauth2.client.EnableOAuth2Sso; +import org.springframework.boot.builder.SpringApplicationBuilder; + +/** + * sso 启动类 + * + * @author tiancai.zang + * on 2018-08-10 18:54. + */ +// TODO: 2018-08-10 18:54 sso 启动类 +@Slf4j +@SpringBootApplication +@EnableOAuth2Sso +public class SSOApp { + + public static void main(String[] args) { + new SpringApplicationBuilder(SSOApp.class) + .logStartupInfo(false) + .bannerMode(Banner.Mode.OFF) + .run(args); + } +} \ No newline at end of file diff --git a/framework/spring/spring-boot/spring-boot-sso/src/main/java/org/laidu/learn/spring/boot/sso/controller/SSOController.java b/framework/spring/spring-boot/spring-boot-sso/src/main/java/org/laidu/learn/spring/boot/sso/controller/SSOController.java new file mode 100644 index 000000000..fee3b3099 --- /dev/null +++ b/framework/spring/spring-boot/spring-boot-sso/src/main/java/org/laidu/learn/spring/boot/sso/controller/SSOController.java @@ -0,0 +1,25 @@ +package org.laidu.learn.spring.boot.sso.controller; + +import lombok.extern.slf4j.Slf4j; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import java.security.Principal; + +/** + * 单点登录 + * + * @author tiancai.zang + * on 2018-08-10 19:00. + */ +// TODO: 2018-08-10 19:00 单点登录 +@Slf4j +@RestController +@RequestMapping("/") +public class SSOController { + + @RequestMapping("/user") + public Principal user(Principal principal) { + return principal; + } +} \ No newline at end of file diff --git a/framework/spring/spring-boot/spring-boot-sso/src/main/java/org/laidu/learn/spring/boot/sso/package-info.java b/framework/spring/spring-boot/spring-boot-sso/src/main/java/org/laidu/learn/spring/boot/sso/package-info.java new file mode 100644 index 000000000..83c29408f --- /dev/null +++ b/framework/spring/spring-boot/spring-boot-sso/src/main/java/org/laidu/learn/spring/boot/sso/package-info.java @@ -0,0 +1,9 @@ +/** + * sso + *

                    + * Created by laidu + * on 2018-08-10 18:58. + * + * @author laidu + */ +package org.laidu.learn.spring.boot.sso; \ No newline at end of file diff --git a/framework/spring/spring-boot/spring-boot-sso/src/main/resources/application.yml b/framework/spring/spring-boot/spring-boot-sso/src/main/resources/application.yml new file mode 100644 index 000000000..5407ff03d --- /dev/null +++ b/framework/spring/spring-boot/spring-boot-sso/src/main/resources/application.yml @@ -0,0 +1,13 @@ + +security: + oauth2: + client: + clientId: 233668646673605 + clientSecret: 33b17e044ee6a4fa383f46ec6e28ea1d + accessTokenUri: https://graph.facebook.com/oauth/access_token + userAuthorizationUri: https://www.facebook.com/dialog/oauth + tokenName: oauth_token + authenticationScheme: query + clientAuthenticationScheme: form + resource: + userInfoUri: https://graph.facebook.com/me \ No newline at end of file diff --git a/framework/spring/spring-boot/spring-boot-sso/src/site/markdown/index.md b/framework/spring/spring-boot/spring-boot-sso/src/site/markdown/index.md new file mode 100644 index 000000000..825150404 --- /dev/null +++ b/framework/spring/spring-boot/spring-boot-sso/src/site/markdown/index.md @@ -0,0 +1 @@ +# spring-boot-sso 学习 \ No newline at end of file From d3976ef0eb4fa9545b8c32a2b4c657b1a558646c Mon Sep 17 00:00:00 2001 From: "xpcoder823@gmail.com" Date: Tue, 14 Aug 2018 20:55:12 +0800 Subject: [PATCH 144/417] sync --- framework/spring/spring-boot/pom.xml | 2 +- .../spring-boot/spring-boot-sso/pom.xml | 20 +++++--- .../laidu/learn/spring/boot/sso/SSOApp.java | 3 +- .../sso/config/OAuth2AuthorizationConfig.java | 46 +++++++++++++++++++ .../boot/sso/config/SecurityConfig.java | 40 ++++++++++++++++ .../src/main/resources/application.yml | 26 +++++++---- 6 files changed, 118 insertions(+), 19 deletions(-) create mode 100644 framework/spring/spring-boot/spring-boot-sso/src/main/java/org/laidu/learn/spring/boot/sso/config/OAuth2AuthorizationConfig.java create mode 100644 framework/spring/spring-boot/spring-boot-sso/src/main/java/org/laidu/learn/spring/boot/sso/config/SecurityConfig.java diff --git a/framework/spring/spring-boot/pom.xml b/framework/spring/spring-boot/pom.xml index d8d43745e..e65a854b3 100644 --- a/framework/spring/spring-boot/pom.xml +++ b/framework/spring/spring-boot/pom.xml @@ -16,7 +16,7 @@ spring-boot-app spring-boot-shiro - spring-boot-sso + diff --git a/framework/spring/spring-boot/spring-boot-sso/pom.xml b/framework/spring/spring-boot/spring-boot-sso/pom.xml index 84d8c4fca..5d00500ab 100644 --- a/framework/spring/spring-boot/spring-boot-sso/pom.xml +++ b/framework/spring/spring-boot/spring-boot-sso/pom.xml @@ -13,20 +13,26 @@ - - org.springframework.boot - spring-boot-starter-web-services - - org.springframework.boot spring-boot-starter-security - org.springframework.security.oauth.boot spring-security-oauth2-autoconfigure - 2.0.0.RELEASE + 2.0.1.RELEASE + + + org.springframework.boot + spring-boot-starter-thymeleaf + + + org.thymeleaf.extras + thymeleaf-extras-springsecurity4 + + + org.springframework.boot + spring-boot-starter-web diff --git a/framework/spring/spring-boot/spring-boot-sso/src/main/java/org/laidu/learn/spring/boot/sso/SSOApp.java b/framework/spring/spring-boot/spring-boot-sso/src/main/java/org/laidu/learn/spring/boot/sso/SSOApp.java index 2f91a3db4..ec0d6d3ab 100644 --- a/framework/spring/spring-boot/spring-boot-sso/src/main/java/org/laidu/learn/spring/boot/sso/SSOApp.java +++ b/framework/spring/spring-boot/spring-boot-sso/src/main/java/org/laidu/learn/spring/boot/sso/SSOApp.java @@ -12,11 +12,10 @@ * @author tiancai.zang * on 2018-08-10 18:54. */ -// TODO: 2018-08-10 18:54 sso 启动类 @Slf4j @SpringBootApplication @EnableOAuth2Sso -public class SSOApp { +public class SSOApp{ public static void main(String[] args) { new SpringApplicationBuilder(SSOApp.class) diff --git a/framework/spring/spring-boot/spring-boot-sso/src/main/java/org/laidu/learn/spring/boot/sso/config/OAuth2AuthorizationConfig.java b/framework/spring/spring-boot/spring-boot-sso/src/main/java/org/laidu/learn/spring/boot/sso/config/OAuth2AuthorizationConfig.java new file mode 100644 index 000000000..76104eb7b --- /dev/null +++ b/framework/spring/spring-boot/spring-boot-sso/src/main/java/org/laidu/learn/spring/boot/sso/config/OAuth2AuthorizationConfig.java @@ -0,0 +1,46 @@ +package org.laidu.learn.spring.boot.sso.config; + +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.context.annotation.Configuration; +import org.springframework.security.authentication.AuthenticationManager; +import org.springframework.security.oauth2.config.annotation.configurers.ClientDetailsServiceConfigurer; +import org.springframework.security.oauth2.config.annotation.web.configuration.AuthorizationServerConfigurerAdapter; +import org.springframework.security.oauth2.config.annotation.web.configuration.EnableAuthorizationServer; +import org.springframework.security.oauth2.config.annotation.web.configurers.AuthorizationServerEndpointsConfigurer; +import org.springframework.security.oauth2.config.annotation.web.configurers.AuthorizationServerSecurityConfigurer; + +/** + * oauth2 认证配置 + *

                    + * Created by tiancai.zang + * on 2018-08-11 10:31. + */ +@Slf4j +@Configuration +@EnableAuthorizationServer +public class OAuth2AuthorizationConfig extends AuthorizationServerConfigurerAdapter { + @Autowired + private AuthenticationManager authenticationManager; + + @Override + public void configure(AuthorizationServerSecurityConfigurer oauthServer) throws Exception { + oauthServer.tokenKeyAccess("permitAll()") + .checkTokenAccess("isAuthenticated()"); + } + + @Override + public void configure(ClientDetailsServiceConfigurer clients) throws Exception { + clients.inMemory() + .withClient("SampleClientId") + .secret("secret") + .authorizedGrantTypes("authorization_code") + .scopes("user_info") + .autoApprove(true) ; + } + + @Override + public void configure(AuthorizationServerEndpointsConfigurer endpoints) throws Exception { + endpoints.authenticationManager(authenticationManager); + } +} \ No newline at end of file diff --git a/framework/spring/spring-boot/spring-boot-sso/src/main/java/org/laidu/learn/spring/boot/sso/config/SecurityConfig.java b/framework/spring/spring-boot/spring-boot-sso/src/main/java/org/laidu/learn/spring/boot/sso/config/SecurityConfig.java new file mode 100644 index 000000000..44230a8cb --- /dev/null +++ b/framework/spring/spring-boot/spring-boot-sso/src/main/java/org/laidu/learn/spring/boot/sso/config/SecurityConfig.java @@ -0,0 +1,40 @@ +package org.laidu.learn.spring.boot.sso.config; + +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.context.annotation.Configuration; +import org.springframework.security.authentication.AuthenticationManager; +import org.springframework.security.config.annotation.authentication.builders.AuthenticationManagerBuilder; +import org.springframework.security.config.annotation.web.builders.HttpSecurity; +import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter; + +/** + * SecurityConfig + *

                    + * Created by tiancai.zang + * on 2018-08-11 10:47. + */ +@Slf4j +@Configuration +public class SecurityConfig extends WebSecurityConfigurerAdapter { + @Autowired + private AuthenticationManager authenticationManager; + + @Override + protected void configure(HttpSecurity http) throws Exception { + http.requestMatchers() + .antMatchers("/login", "/oauth/authorize") + .and() + .authorizeRequests() + .anyRequest().authenticated() + .and() + .formLogin().permitAll(); + } + + @Override + protected void configure(AuthenticationManagerBuilder auth) throws Exception { + auth.parentAuthenticationManager(authenticationManager) + .inMemoryAuthentication() + .withUser("john").password("123").roles("USER"); + } +} \ No newline at end of file diff --git a/framework/spring/spring-boot/spring-boot-sso/src/main/resources/application.yml b/framework/spring/spring-boot/spring-boot-sso/src/main/resources/application.yml index 5407ff03d..b4886a16d 100644 --- a/framework/spring/spring-boot/spring-boot-sso/src/main/resources/application.yml +++ b/framework/spring/spring-boot/spring-boot-sso/src/main/resources/application.yml @@ -1,13 +1,21 @@ - +application.yml: +server: + port: 8082 + context-path: /ui + session: + cookie: + name: UISESSION security: + basic: + enabled: false oauth2: client: - clientId: 233668646673605 - clientSecret: 33b17e044ee6a4fa383f46ec6e28ea1d - accessTokenUri: https://graph.facebook.com/oauth/access_token - userAuthorizationUri: https://www.facebook.com/dialog/oauth - tokenName: oauth_token - authenticationScheme: query - clientAuthenticationScheme: form + clientId: SampleClientId + clientSecret: secret + accessTokenUri: http://localhost:8081/auth/oauth/token + userAuthorizationUri: http://localhost:8081/auth/oauth/authorize resource: - userInfoUri: https://graph.facebook.com/me \ No newline at end of file + userInfoUri: http://localhost:8081/auth/user/me +spring: + thymeleaf: + cache: false \ No newline at end of file From d120b82dca1e505cc747b4ebfd163c21421a4425 Mon Sep 17 00:00:00 2001 From: Tiancai ZANG Date: Wed, 15 Aug 2018 17:43:57 +0800 Subject: [PATCH 145/417] sync --- framework/webmagic/pom.xml | 4 +++ framework/webmagic/webmagic-learn/pom.xml | 11 +----- .../learn/language/feature/boxed/Boxing.java | 7 ++-- .../feature/compare/DoubleCompare.java | 34 +++++++++++++++++++ production-component/crawler/pom.xml | 1 - production-component/pom.xml | 10 +++--- 6 files changed, 48 insertions(+), 19 deletions(-) create mode 100644 language-feature/src/main/java/org/laidu/learn/language/feature/compare/DoubleCompare.java diff --git a/framework/webmagic/pom.xml b/framework/webmagic/pom.xml index 417ffe99d..961d196f3 100644 --- a/framework/webmagic/pom.xml +++ b/framework/webmagic/pom.xml @@ -15,5 +15,9 @@ webmagic-learn + + 0.7.3 + + \ No newline at end of file diff --git a/framework/webmagic/webmagic-learn/pom.xml b/framework/webmagic/webmagic-learn/pom.xml index 139f4ef3d..e30e03b8b 100644 --- a/framework/webmagic/webmagic-learn/pom.xml +++ b/framework/webmagic/webmagic-learn/pom.xml @@ -11,16 +11,7 @@ webmagic-learn - - 1.0.0 - - - - jitpack.io - https://jitpack.io - - @@ -32,7 +23,7 @@ us.codecraft webmagic-core - 0.7.3 + ${webmagic.version} diff --git a/language-feature/src/main/java/org/laidu/learn/language/feature/boxed/Boxing.java b/language-feature/src/main/java/org/laidu/learn/language/feature/boxed/Boxing.java index 0d46bd58a..ea3fac502 100644 --- a/language-feature/src/main/java/org/laidu/learn/language/feature/boxed/Boxing.java +++ b/language-feature/src/main/java/org/laidu/learn/language/feature/boxed/Boxing.java @@ -10,7 +10,10 @@ public class Boxing { public static void main(String[] args) { - Integer i = 10; // 装箱 - int n = i; //拆箱 + // 装箱 + Integer i = 10; + + //拆箱 + int n = i; } } diff --git a/language-feature/src/main/java/org/laidu/learn/language/feature/compare/DoubleCompare.java b/language-feature/src/main/java/org/laidu/learn/language/feature/compare/DoubleCompare.java new file mode 100644 index 000000000..2081f01d3 --- /dev/null +++ b/language-feature/src/main/java/org/laidu/learn/language/feature/compare/DoubleCompare.java @@ -0,0 +1,34 @@ +package org.laidu.learn.language.feature.compare; + +import lombok.extern.slf4j.Slf4j; + +import java.util.stream.IntStream; + +/** + * double 类型比较大小 + * + * @author tiancai.zang + * on 2018-08-13 10:47. + */ +@Slf4j +public class DoubleCompare { + public static void main(String[] args) { + + + double a = +0.00; + double b = -0.00; + + for (double balance = 10; balance > 0; balance -= .2) { System.out.println(balance); } + + + IntStream.range(0,100).parallel().forEach(i -> { + if (a == b) { + System.out.println(true); + }else { + System.out.println(false); + } + + }); + + } +} \ No newline at end of file diff --git a/production-component/crawler/pom.xml b/production-component/crawler/pom.xml index 78fe06c7c..1d7af8d02 100644 --- a/production-component/crawler/pom.xml +++ b/production-component/crawler/pom.xml @@ -20,7 +20,6 @@ - org.springframework.boot spring-boot-dependencies ${spring-boot.version} diff --git a/production-component/pom.xml b/production-component/pom.xml index b44e73432..bafffbed1 100644 --- a/production-component/pom.xml +++ b/production-component/pom.xml @@ -13,16 +13,14 @@ pom 可用于实际项目中的小工具 - - 1.5.9.RELEASE - 3.1.1 - - common-util crawler-helper crawler - + + 1.5.9.RELEASE + 3.1.1 + \ No newline at end of file From 9c9e31cc14fecae0181856fe70cfbea28e17a62c Mon Sep 17 00:00:00 2001 From: Tiancai ZANG Date: Wed, 15 Aug 2018 18:04:37 +0800 Subject: [PATCH 146/417] add s3 --- framework/aws/dynamoDB/pom.xml | 6 ------ framework/aws/pom.xml | 16 ++++++++++++++++ framework/aws/s3/pom.xml | 21 +++++++++++++++++++++ framework/spring/spring-boot/pom.xml | 2 +- 4 files changed, 38 insertions(+), 7 deletions(-) create mode 100644 framework/aws/s3/pom.xml diff --git a/framework/aws/dynamoDB/pom.xml b/framework/aws/dynamoDB/pom.xml index 4699672cb..90e52930f 100644 --- a/framework/aws/dynamoDB/pom.xml +++ b/framework/aws/dynamoDB/pom.xml @@ -12,15 +12,9 @@ dynamoDB - - org.laidu.learn - common-util - 1.0-SNAPSHOT - com.amazonaws aws-java-sdk-dynamodb - 1.11.297 diff --git a/framework/aws/pom.xml b/framework/aws/pom.xml index 44104e9b7..d9ceb47fd 100644 --- a/framework/aws/pom.xml +++ b/framework/aws/pom.xml @@ -13,7 +13,23 @@ pom dynamoDB + s3 + + 1.11.386 + + + + + + com.amazonaws + aws-java-sdk-bom + ${aws.sdk.version} + pom + import + + + \ No newline at end of file diff --git a/framework/aws/s3/pom.xml b/framework/aws/s3/pom.xml new file mode 100644 index 000000000..4f7b3e088 --- /dev/null +++ b/framework/aws/s3/pom.xml @@ -0,0 +1,21 @@ + + + + aws + org.laidu.learn + 1.0-SNAPSHOT + + 4.0.0 + + s3 + + + + + com.amazonaws + aws-java-sdk-s3 + + + \ No newline at end of file diff --git a/framework/spring/spring-boot/pom.xml b/framework/spring/spring-boot/pom.xml index e65a854b3..d8d43745e 100644 --- a/framework/spring/spring-boot/pom.xml +++ b/framework/spring/spring-boot/pom.xml @@ -16,7 +16,7 @@ spring-boot-app spring-boot-shiro - + spring-boot-sso From 8a9bcaf4212fd3dd1d58be8e317542b2606d506b Mon Sep 17 00:00:00 2001 From: Tiancai ZANG Date: Wed, 15 Aug 2018 19:22:28 +0800 Subject: [PATCH 147/417] add s3 --- .../org/laidu/learn/aws/s3/package-info.java | 9 ++++ .../org/laidu/learn/aws/s3/usage/Demo.java | 48 +++++++++++++++++++ framework/aws/s3/src/sites/markdown/index.md | 4 ++ 3 files changed, 61 insertions(+) create mode 100644 framework/aws/s3/src/main/java/org/laidu/learn/aws/s3/package-info.java create mode 100644 framework/aws/s3/src/main/java/org/laidu/learn/aws/s3/usage/Demo.java create mode 100644 framework/aws/s3/src/sites/markdown/index.md diff --git a/framework/aws/s3/src/main/java/org/laidu/learn/aws/s3/package-info.java b/framework/aws/s3/src/main/java/org/laidu/learn/aws/s3/package-info.java new file mode 100644 index 000000000..7c30b2c8b --- /dev/null +++ b/framework/aws/s3/src/main/java/org/laidu/learn/aws/s3/package-info.java @@ -0,0 +1,9 @@ +/** + * aws s3 使用 + *

                    + * Created by laidu + * on 2018-08-15 18:05. + * + * @author laidu + */ +// TODO: 2018-08-15 18:05 aws s3 使用 diff --git a/framework/aws/s3/src/main/java/org/laidu/learn/aws/s3/usage/Demo.java b/framework/aws/s3/src/main/java/org/laidu/learn/aws/s3/usage/Demo.java new file mode 100644 index 000000000..70303ed79 --- /dev/null +++ b/framework/aws/s3/src/main/java/org/laidu/learn/aws/s3/usage/Demo.java @@ -0,0 +1,48 @@ +package org.laidu.learn.aws.s3.usage; + +import com.amazonaws.auth.profile.ProfileCredentialsProvider; +import com.amazonaws.regions.Regions; +import com.amazonaws.services.s3.AmazonS3; +import com.amazonaws.services.s3.AmazonS3ClientBuilder; +import lombok.extern.slf4j.Slf4j; + +/** + * demo + * + * @author tiancai.zang + * on 2018-08-15 18:08. + */ +@Slf4j +public class Demo { + +// private static final String BUCKET_NAME = "demo-dev"; + private static final String BUCKET_NAME = "zhibaosuixing-test"; + private static final String PROFILE_NAME = "insurance"; + + + /** + * 使用同步接口访问 s3, 需要在运行时环境变量中指定配置 + */ + public static void syncClientWithProfineCred(){ + + AmazonS3 s3Client = AmazonS3ClientBuilder.standard() + + .withCredentials(new ProfileCredentialsProvider(PROFILE_NAME)) + .withRegion(Regions.CN_NORTH_1) + .build(); + + // list all objects + s3Client.listObjects(BUCKET_NAME).getObjectSummaries().forEach(s -> { + System.out.println(String.format("fileName: %s, fileSize: %.2fkb",s.getKey(),s.getSize()/1024.0)); + }); + + + } + + + public static void main(String[] args) { + + syncClientWithProfineCred(); + + } +} \ No newline at end of file diff --git a/framework/aws/s3/src/sites/markdown/index.md b/framework/aws/s3/src/sites/markdown/index.md new file mode 100644 index 000000000..cbbf86121 --- /dev/null +++ b/framework/aws/s3/src/sites/markdown/index.md @@ -0,0 +1,4 @@ +# + +参考文档 +> *[官方教程](http://docs.amazonaws.cn/zh_cn/sdk-for-java/v1/developer-guide/index.html) \ No newline at end of file From 3725d009edb632a14a0aad439bd76826efc34404 Mon Sep 17 00:00:00 2001 From: "xpcoder823@gmail.com" Date: Wed, 22 Aug 2018 23:52:42 +0800 Subject: [PATCH 148/417] add java se command tools --- .../spring-boot/spring-boot-app/dockerfile | 24 +++- .../spring-boot/spring-boot-app/pom.xml | 50 ++++--- .../markdown/JavaSEToolsReferenceforUNIX.md | 124 ++++++++++++++++++ 3 files changed, 180 insertions(+), 18 deletions(-) create mode 100644 language-advance/src/site/markdown/JavaSEToolsReferenceforUNIX.md diff --git a/framework/spring/spring-boot/spring-boot-app/dockerfile b/framework/spring/spring-boot/spring-boot-app/dockerfile index 1c2d5cb72..a26d004d7 100644 --- a/framework/spring/spring-boot/spring-boot-app/dockerfile +++ b/framework/spring/spring-boot/spring-boot-app/dockerfile @@ -1,5 +1,23 @@ +# Start with a base image containing Java runtime FROM openjdk:8-jdk-alpine + +# Add Maintainer Info +LABEL maintainer="laidu823@gmail.com" + +# Add a volume pointing to /tmp VOLUME /tmp -ARG JAR_FILE -ADD ${JAR_FILE} app.jar -ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/app.jar"] \ No newline at end of file + +# Make port 8080 available to the world outside this container +EXPOSE 8080 + +# using beijing timezone +RUN echo "Asia/Shanghai" > /etc/timezone + +# The application's jar file +ARG JAR_FILE=./target/spring-boot-app-0.0.1-SNAPSHOT.jar + +# Add the application's jar to the container +ADD ${JAR_FILE} app-demo.jar + +# Run the jar file +ENTRYPOINT ["java","-Dfile.encoding=UTF-8","-jar","/app-demo.jar"] \ No newline at end of file diff --git a/framework/spring/spring-boot/spring-boot-app/pom.xml b/framework/spring/spring-boot/spring-boot-app/pom.xml index 861435577..074a83eb7 100644 --- a/framework/spring/spring-boot/spring-boot-app/pom.xml +++ b/framework/spring/spring-boot/spring-boot-app/pom.xml @@ -16,6 +16,10 @@ 1.0-SNAPSHOT + + 1.4.4 + + @@ -23,15 +27,6 @@ spring-boot-starter-actuator - - - - - - - - - org.springframework.boot spring-boot-starter @@ -60,14 +55,39 @@ spring-boot-starter-test test - - org.springframework - spring-test - 5.0.6.RELEASE - compile - + + + + org.springframework.boot + spring-boot-maven-plugin + + + com.spotify + dockerfile-maven-plugin + ${dockerfile-maven-version} + + + default + + build + + + + + + spotify/foobar + ${project.version} + + ${project.build.finalName}.jar + + + + + + + diff --git a/language-advance/src/site/markdown/JavaSEToolsReferenceforUNIX.md b/language-advance/src/site/markdown/JavaSEToolsReferenceforUNIX.md new file mode 100644 index 000000000..0f4b05895 --- /dev/null +++ b/language-advance/src/site/markdown/JavaSEToolsReferenceforUNIX.md @@ -0,0 +1,124 @@ +# java unix 命令行工具 + +This section lists and describes the Java Platform Standard Edition, Java SE) commands. + +The Java SE commands provide a way for developers to handle development tasks such as compiling and running a program, packaging source files in to a JAR file, applying security policies to a JAR file, and more. + +## Command Reference Pages +This command reference describes the full set of JDK commands. The JDK commands that perform related functions are grouped into parts, as follows. + +## Create and Build Applications +appletviewer: Runs applets outside of a web browser. + +extcheck: Detects version conflicts between a target Java Archive (JAR) file and currently installed extension JAR files. + +jar: Combines multiple files into a single JAR file. + +java: Starts a Java application. + +javac: Reads Java class and interface definitions and compiles them into bytecode and class files. + +javadoc: Generates HTML pages of API documentation from Java source files. + +javah: Generates C header and source files from a Java class. + +javap: Disassembles one or more class files. + +jdb: Finds and fixes bugs in Java platform programs. + +## Security +These commands set security policies on your local system and create applications that can work within the scope of the security policies set at remote sites. + +keytool: Manages a keystore (database) of cryptographic keys, X.509 certificate chains, and trusted certificates. + +jarsigner: Signs and verifies JAR files. + +policytool: Reads and writes a plain text policy file based on user input through the utility GUI. + +## Internationalization +native2ascii: Creates localizable applications by converting a file with characters in any supported character encoding to one with ASCII and/or Unicode escapes (\uxxxx) notation for all characters that are not part of the ASCII character set, or vice versa. + +## Remote Method Invocation (RMI) +These commands create applications that interact over the web or with another network. + +rmic: Generates stub, skeleton, and tie classes for remote objects that use the Java Remote Method Protocol (JRMP) or Internet Inter-Orb protocol (IIOP). Also generates Object Management Group (OMG) Interface Definition Language (IDL). + +rmiregistry: Starts a remote object registry on the specified port on the current host. + +rmid: Starts the activation system daemon that enables objects to be registered and activated in a Java Virtual Machine (JVM). + +serialver: Returns the serial version UID for specified classes. + +## Java IDL and RMI-IIOP +These commands create applications that use OMG-standard IDL and CORBA/IIOP. + +tnameserv: Starts the Java Interface Definition Language (IDL) name server. + +idlj: Generates Java bindings for a given Interface Definition Language (IDL) file. + +orbd: Enables clients to locate and call persistent objects on servers in the CORBA environment. + +servertool: Provides an easy-to-use interface for the application programmers to register, unregister, start up, and shut down a server. + +## Deploy Applications and Applets +pack200: Packages a JAR file into a compressed pack200 file for web deployment. + +unpack200: Transforms a packed file produced by pack200(1) into a JAR file for web deployment. + +## Java Web Start +javaws: Starts Java Web Start. + +Monitor Java Applications +jconsole: Starts a graphical console that lets you monitor and manage Java applications. + +jvisualvm: Visually monitors, troubleshoots, and profiles Java applications. + +## Monitor the Java Virtual Machine +Most of these these commands are unsupported and experimental and might not be available in future JDK release. + +jps: Experimental. Lists the instrumented Java Virtual Machines (JVMs) on the target system. + +jstat: Experimental. Monitors JVM statistics + +jstatd: Experimental. Monitors JVMs and enables remote monitoring tools to attach to JVMs. + +jmc: Starts Java Mission Controla tool for monitoring and managing running Java applications and JVMs. + +## Web Services +schemagen: Generates a schema for every name space that is referenced in your Java classes. + +wsgen: Reads a web service endpoint implementation (SEI) class and generates all of the required artifacts for web service deployment, and invocation. + +wsimport: Generates JAX-WS portable artifacts that can be packaged in a web application archive (WAR) file and provides an Ant task. + +xjc: Compiles an XML schema file into fully annotated Java classes. + +## Troubleshooting +Most of these commands are unsupported and experimental and might not be available in future JDK releases. + +jcmd: Sends diagnostic command requests to a running JVM. + +jinfo: Experimental. Generates configuration information. + +jhat: Experimental. Analyzes the Java heap. + +jmap: Experimental. Prints shared object memory maps or heap memory details for a process, core file, or remote debug server. + +jsadebugd: Experimental. Attaches to a Java process or core file and acts as a debug server. + +jstack: Experimental. Prints Java thread stack traces for a Java process, core file, or remote debug server. + +## Scripting +This command is unsupported and experimental and might not be available in future JDK releases. + +jrunscript: Experimental. Runs a command-line script shell that supports interactive and batch modes. + + + + +参考: +> * [Java SE Tools Reference for UNIX](https://docs.oracle.com/javase/8/docs/technotes/tools/unix/index.html) +> * []() +> * []() +> * []() +> * []() \ No newline at end of file From 71cd318b7057d1febf121c21252992ece9f17e43 Mon Sep 17 00:00:00 2001 From: Tiancai ZANG Date: Thu, 23 Aug 2018 14:07:10 +0800 Subject: [PATCH 149/417] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=20enum=20converter?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../spring-boot/spring-boot-app/pom.xml | 2 +- ...uration.java => MvcAtuoConfiguration.java} | 11 +++- .../conf/UniversalEnumConverterFactory.java | 62 +++++++++++++++++++ .../mvc/controller/GoodsController.java | 55 ++++++++++++++++ .../learn/spring/mvc/dto/AddGoodsReqDTO.java | 33 ++++++++++ .../learn/spring/mvc/dto/GetGoodsResDTO.java | 32 ++++++++++ .../learn/spring/mvc/enums/GoodsTypeEnum.java | 58 +++++++++++++++++ .../laidu/learn/spring/mvc/model/Goods.java | 30 +++++++++ .../spring/mvc/service/GoodsService.java | 16 +++++ .../mvc/service/impl/GoodsServiceImpl.java | 24 +++++++ .../main/resources/META-INF/spring.factories | 2 +- 11 files changed, 321 insertions(+), 4 deletions(-) rename framework/spring/spring-web/spring-mvc/src/main/java/org/laidu/learn/spring/mvc/conf/{MvnAtuoConfiguration.java => MvcAtuoConfiguration.java} (79%) create mode 100644 framework/spring/spring-web/spring-mvc/src/main/java/org/laidu/learn/spring/mvc/conf/UniversalEnumConverterFactory.java create mode 100644 framework/spring/spring-web/spring-mvc/src/main/java/org/laidu/learn/spring/mvc/controller/GoodsController.java create mode 100644 framework/spring/spring-web/spring-mvc/src/main/java/org/laidu/learn/spring/mvc/dto/AddGoodsReqDTO.java create mode 100644 framework/spring/spring-web/spring-mvc/src/main/java/org/laidu/learn/spring/mvc/dto/GetGoodsResDTO.java create mode 100644 framework/spring/spring-web/spring-mvc/src/main/java/org/laidu/learn/spring/mvc/enums/GoodsTypeEnum.java create mode 100644 framework/spring/spring-web/spring-mvc/src/main/java/org/laidu/learn/spring/mvc/model/Goods.java create mode 100644 framework/spring/spring-web/spring-mvc/src/main/java/org/laidu/learn/spring/mvc/service/GoodsService.java create mode 100644 framework/spring/spring-web/spring-mvc/src/main/java/org/laidu/learn/spring/mvc/service/impl/GoodsServiceImpl.java diff --git a/framework/spring/spring-boot/spring-boot-app/pom.xml b/framework/spring/spring-boot/spring-boot-app/pom.xml index 074a83eb7..0fd3b75d3 100644 --- a/framework/spring/spring-boot/spring-boot-app/pom.xml +++ b/framework/spring/spring-boot/spring-boot-app/pom.xml @@ -71,7 +71,7 @@ default - build + diff --git a/framework/spring/spring-web/spring-mvc/src/main/java/org/laidu/learn/spring/mvc/conf/MvnAtuoConfiguration.java b/framework/spring/spring-web/spring-mvc/src/main/java/org/laidu/learn/spring/mvc/conf/MvcAtuoConfiguration.java similarity index 79% rename from framework/spring/spring-web/spring-mvc/src/main/java/org/laidu/learn/spring/mvc/conf/MvnAtuoConfiguration.java rename to framework/spring/spring-web/spring-mvc/src/main/java/org/laidu/learn/spring/mvc/conf/MvcAtuoConfiguration.java index d34b2a4ed..bc6f0fdf5 100644 --- a/framework/spring/spring-web/spring-mvc/src/main/java/org/laidu/learn/spring/mvc/conf/MvnAtuoConfiguration.java +++ b/framework/spring/spring-web/spring-mvc/src/main/java/org/laidu/learn/spring/mvc/conf/MvcAtuoConfiguration.java @@ -8,6 +8,7 @@ import org.springframework.boot.context.properties.EnableConfigurationProperties; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; +import org.springframework.format.FormatterRegistry; import org.springframework.web.servlet.config.annotation.InterceptorRegistry; import org.springframework.web.servlet.config.annotation.WebMvcConfigurer; @@ -20,13 +21,13 @@ @Configuration @ConditionalOnClass(CommonFilter.class) @EnableConfigurationProperties(MvcProperties.class) -public class MvnAtuoConfiguration implements WebMvcConfigurer { +public class MvcAtuoConfiguration implements WebMvcConfigurer { private final MvcProperties properties; @Autowired - public MvnAtuoConfiguration(MvcProperties properties) { + public MvcAtuoConfiguration(MvcProperties properties) { this.properties = properties; } @@ -42,4 +43,10 @@ public CommonFilter commonFilter(){ public void addInterceptors(InterceptorRegistry registry) { registry.addInterceptor(commonFilter()); } + + @Override + public void addFormatters(FormatterRegistry registry) { + registry.addConverterFactory(new UniversalEnumConverterFactory()); + } + } \ No newline at end of file diff --git a/framework/spring/spring-web/spring-mvc/src/main/java/org/laidu/learn/spring/mvc/conf/UniversalEnumConverterFactory.java b/framework/spring/spring-web/spring-mvc/src/main/java/org/laidu/learn/spring/mvc/conf/UniversalEnumConverterFactory.java new file mode 100644 index 000000000..864238e63 --- /dev/null +++ b/framework/spring/spring-web/spring-mvc/src/main/java/org/laidu/learn/spring/mvc/conf/UniversalEnumConverterFactory.java @@ -0,0 +1,62 @@ +package org.laidu.learn.spring.mvc.conf; + +import lombok.extern.slf4j.Slf4j; +import org.laidu.commom.util.enums.NameValueEnum; +import org.springframework.core.convert.converter.Converter; +import org.springframework.core.convert.converter.ConverterFactory; + +import java.util.HashMap; +import java.util.Map; +import java.util.WeakHashMap; + +/** + * UniversalEnumConverterFactory + * + * 实现enum 2 int 转换 + * + * @author tiancai.zang + * on 2018-08-23 12:40. + */ +@Slf4j +public class UniversalEnumConverterFactory implements ConverterFactory { + + private static final Map CONVERTER_MAP = new WeakHashMap<>(); + + @Override + public Converter getConverter(Class targetType) { + Converter result = CONVERTER_MAP.get(targetType); + if(result == null) { + result = new IntegerStrToEnum(targetType); + CONVERTER_MAP.put(targetType, result); + } + return result; + } + + class IntegerStrToEnum implements Converter { + + private final Class enumType; + private Map enumMap = new HashMap<>(); + + public IntegerStrToEnum(Class enumType) { + this.enumType = enumType; + + T[] enums = enumType.getEnumConstants(); + + for(T e : enums) { + enumMap.put(String.valueOf(e.getValue()), e); + } + } + + + @Override + public T convert(String source) { + + T result = enumMap.get(source); + + if(result == null) { + throw new IllegalArgumentException("No element matches " + source); + } + return result; + } + } +} diff --git a/framework/spring/spring-web/spring-mvc/src/main/java/org/laidu/learn/spring/mvc/controller/GoodsController.java b/framework/spring/spring-web/spring-mvc/src/main/java/org/laidu/learn/spring/mvc/controller/GoodsController.java new file mode 100644 index 000000000..4ca6a6536 --- /dev/null +++ b/framework/spring/spring-web/spring-mvc/src/main/java/org/laidu/learn/spring/mvc/controller/GoodsController.java @@ -0,0 +1,55 @@ +package org.laidu.learn.spring.mvc.controller; + +import io.swagger.annotations.ApiOperation; +import lombok.extern.slf4j.Slf4j; +import org.laidu.learn.spring.mvc.dto.AddGoodsReqDTO; +import org.laidu.learn.spring.mvc.dto.GetGoodsResDTO; +import org.laidu.learn.spring.mvc.enums.GoodsTypeEnum; +import org.laidu.learn.spring.mvc.model.Goods; +import org.laidu.learn.spring.mvc.model.Result; +import org.laidu.learn.spring.mvc.service.GoodsService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +/** + * 商品接口 + * + * @author tiancai.zang + * on 2018-08-23 11:44. + */ +// TODO: 2018-08-23 11:44 商品接口 +@Slf4j +@RestController +@RequestMapping("/goods") +public class GoodsController { + + private final GoodsService goodsService; + + @Autowired + public GoodsController(GoodsService goodsService) { + this.goodsService = goodsService; + } + + @PostMapping("/add") + @ApiOperation("添加商品") + public Result add(@RequestBody AddGoodsReqDTO reqDTO){ + + return Result.ok(goodsService.addGoods(Goods.builder() + .goodsName(reqDTO.getGoodsName()) + .goodsId(reqDTO.getGoodsId()) + .goodsType(reqDTO.getGoodsType()) + .build())); + } + + @GetMapping("/query/{goodId}") + @ApiOperation("查询商品") + public Result query(@PathVariable("goodId") Long goodId){ + + return Result.ok(GetGoodsResDTO.builder() + .goodsName("name") + .goodsId(goodId) + .goodsType(GoodsTypeEnum.BOOK) + .build()); + } + +} \ No newline at end of file diff --git a/framework/spring/spring-web/spring-mvc/src/main/java/org/laidu/learn/spring/mvc/dto/AddGoodsReqDTO.java b/framework/spring/spring-web/spring-mvc/src/main/java/org/laidu/learn/spring/mvc/dto/AddGoodsReqDTO.java new file mode 100644 index 000000000..f4bff6b03 --- /dev/null +++ b/framework/spring/spring-web/spring-mvc/src/main/java/org/laidu/learn/spring/mvc/dto/AddGoodsReqDTO.java @@ -0,0 +1,33 @@ +package org.laidu.learn.spring.mvc.dto; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; +import org.laidu.learn.spring.mvc.enums.GoodsTypeEnum; + +/** + * 添加商品DTO + * + * @author tiancai.zang + * on 2018-08-23 11:41. + */ +@Data +@Builder +@AllArgsConstructor +@NoArgsConstructor +@ApiModel("添加商品请求") +public class AddGoodsReqDTO { + + @ApiModelProperty("商品ID") + private Long goodsId; + + @ApiModelProperty("商品名称") + private String goodsName; + + @ApiModelProperty("商品类型") + private GoodsTypeEnum goodsType; + +} \ No newline at end of file diff --git a/framework/spring/spring-web/spring-mvc/src/main/java/org/laidu/learn/spring/mvc/dto/GetGoodsResDTO.java b/framework/spring/spring-web/spring-mvc/src/main/java/org/laidu/learn/spring/mvc/dto/GetGoodsResDTO.java new file mode 100644 index 000000000..1b06a6033 --- /dev/null +++ b/framework/spring/spring-web/spring-mvc/src/main/java/org/laidu/learn/spring/mvc/dto/GetGoodsResDTO.java @@ -0,0 +1,32 @@ +package org.laidu.learn.spring.mvc.dto; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; +import org.laidu.learn.spring.mvc.enums.GoodsTypeEnum; + +/** + * 添加商品DTO + * + * @author tiancai.zang + * on 2018-08-23 11:41. + */ +@Data +@Builder +@AllArgsConstructor +@NoArgsConstructor +@ApiModel("添加商品请求") +public class GetGoodsResDTO { + + @ApiModelProperty("商品ID") + private Long goodsId; + + @ApiModelProperty("商品名称") + private String goodsName; + + @ApiModelProperty("商品类型") + private GoodsTypeEnum goodsType; +} \ No newline at end of file diff --git a/framework/spring/spring-web/spring-mvc/src/main/java/org/laidu/learn/spring/mvc/enums/GoodsTypeEnum.java b/framework/spring/spring-web/spring-mvc/src/main/java/org/laidu/learn/spring/mvc/enums/GoodsTypeEnum.java new file mode 100644 index 000000000..2d68298ca --- /dev/null +++ b/framework/spring/spring-web/spring-mvc/src/main/java/org/laidu/learn/spring/mvc/enums/GoodsTypeEnum.java @@ -0,0 +1,58 @@ +package org.laidu.learn.spring.mvc.enums; + +import lombok.AllArgsConstructor; +import lombok.Getter; +import lombok.extern.slf4j.Slf4j; +import org.laidu.commom.util.enums.NameValueEnum; + +/** + * 商品类型 + * + * @author tiancai.zang + * on 2018-08-23 11:35. + */ +@Slf4j +@Getter +@AllArgsConstructor +public enum GoodsTypeEnum implements NameValueEnum { + + /** + * 书籍 + */ + BOOK(0,"书籍"), + + /** + * 手机 + */ + PHONE(1,"手机"), + + ; + + private Integer value; + private String name; + + + @Override + public GoodsTypeEnum getEnumByName(String name) { + + for (GoodsTypeEnum typeEnum : GoodsTypeEnum.values()) { + if (name.equalsIgnoreCase(typeEnum.name)){ + return typeEnum; + } + } + + return null; + } + + @Override + public GoodsTypeEnum getEnumByValue(Integer value) { + + for (GoodsTypeEnum typeEnum : GoodsTypeEnum.values()) { + if (value.equals(typeEnum.value)){ + return typeEnum; + } + } + + return null; + } +} \ No newline at end of file diff --git a/framework/spring/spring-web/spring-mvc/src/main/java/org/laidu/learn/spring/mvc/model/Goods.java b/framework/spring/spring-web/spring-mvc/src/main/java/org/laidu/learn/spring/mvc/model/Goods.java new file mode 100644 index 000000000..d816a1bb6 --- /dev/null +++ b/framework/spring/spring-web/spring-mvc/src/main/java/org/laidu/learn/spring/mvc/model/Goods.java @@ -0,0 +1,30 @@ +package org.laidu.learn.spring.mvc.model; + +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; +import org.laidu.learn.spring.mvc.enums.GoodsTypeEnum; + +import java.io.Serializable; + +/** + * 商品 + * + * @author tiancai.zang + * on 2018-08-23 11:41. + */ +@Data +@Builder +@AllArgsConstructor +@NoArgsConstructor +public class Goods implements Serializable { + + private static final long serialVersionUID = 4770621416246563806L; + + private Long goodsId; + + private String goodsName; + + private GoodsTypeEnum goodsType; +} \ No newline at end of file diff --git a/framework/spring/spring-web/spring-mvc/src/main/java/org/laidu/learn/spring/mvc/service/GoodsService.java b/framework/spring/spring-web/spring-mvc/src/main/java/org/laidu/learn/spring/mvc/service/GoodsService.java new file mode 100644 index 000000000..5704b754d --- /dev/null +++ b/framework/spring/spring-web/spring-mvc/src/main/java/org/laidu/learn/spring/mvc/service/GoodsService.java @@ -0,0 +1,16 @@ +package org.laidu.learn.spring.mvc.service; + +import org.laidu.learn.spring.mvc.model.Goods; + +/** + * 商品service + *

                    + * Created by laidu + * on 2018-08-23 11:52. + * + * @author laidu + */ +public interface GoodsService { + + Long addGoods(Goods goods); +} diff --git a/framework/spring/spring-web/spring-mvc/src/main/java/org/laidu/learn/spring/mvc/service/impl/GoodsServiceImpl.java b/framework/spring/spring-web/spring-mvc/src/main/java/org/laidu/learn/spring/mvc/service/impl/GoodsServiceImpl.java new file mode 100644 index 000000000..47a91db59 --- /dev/null +++ b/framework/spring/spring-web/spring-mvc/src/main/java/org/laidu/learn/spring/mvc/service/impl/GoodsServiceImpl.java @@ -0,0 +1,24 @@ +package org.laidu.learn.spring.mvc.service.impl; + +import lombok.extern.slf4j.Slf4j; +import org.apache.commons.lang3.RandomUtils; +import org.laidu.learn.spring.mvc.model.Goods; +import org.laidu.learn.spring.mvc.service.GoodsService; +import org.springframework.stereotype.Service; + +/** + * @author tiancai.zang + * on 2018-08-23 11:54. + */ +@Slf4j +@Service +public class GoodsServiceImpl implements GoodsService { + + @Override + public Long addGoods(Goods goods) { + + System.out.println("add goods: "+ goods); + + return RandomUtils.nextLong(); + } +} \ No newline at end of file diff --git a/framework/spring/spring-web/spring-mvc/src/main/resources/META-INF/spring.factories b/framework/spring/spring-web/spring-mvc/src/main/resources/META-INF/spring.factories index afbc287ba..f6afee54d 100644 --- a/framework/spring/spring-web/spring-mvc/src/main/resources/META-INF/spring.factories +++ b/framework/spring/spring-web/spring-mvc/src/main/resources/META-INF/spring.factories @@ -1 +1 @@ -org.springframework.boot.autoconfigure.EnableAutoConfiguration=org.laidu.learn.spring.mvc.conf.MvnAtuoConfiguration \ No newline at end of file +org.springframework.boot.autoconfigure.EnableAutoConfiguration=org.laidu.learn.spring.mvc.conf.MvcAtuoConfiguration \ No newline at end of file From 4585f4539faf3baddec69dc0707714ce14e9eb4c Mon Sep 17 00:00:00 2001 From: Tiancai ZANG Date: Thu, 23 Aug 2018 14:53:10 +0800 Subject: [PATCH 150/417] sync --- framework/spring/pom.xml | 18 ++++++++++++++++++ .../spring-boot/spring-boot-app/dockerfile | 6 +++--- .../spring/spring-boot/spring-boot-app/pom.xml | 8 +------- .../spring/spring-cloud/service-hello/pom.xml | 10 ---------- framework/spring/swagger/pom.xml | 10 ---------- 5 files changed, 22 insertions(+), 30 deletions(-) diff --git a/framework/spring/pom.xml b/framework/spring/pom.xml index 417cb63f3..e7054f422 100644 --- a/framework/spring/pom.xml +++ b/framework/spring/pom.xml @@ -96,4 +96,22 @@ + + + + + + org.springframework.boot + spring-boot-maven-plugin + + + + repackage + + + + + + + \ No newline at end of file diff --git a/framework/spring/spring-boot/spring-boot-app/dockerfile b/framework/spring/spring-boot/spring-boot-app/dockerfile index a26d004d7..1d1ae012d 100644 --- a/framework/spring/spring-boot/spring-boot-app/dockerfile +++ b/framework/spring/spring-boot/spring-boot-app/dockerfile @@ -14,10 +14,10 @@ EXPOSE 8080 RUN echo "Asia/Shanghai" > /etc/timezone # The application's jar file -ARG JAR_FILE=./target/spring-boot-app-0.0.1-SNAPSHOT.jar +ARG JAR_FILE=target/spring-boot-app-0.0.1-SNAPSHOT.jar # Add the application's jar to the container -ADD ${JAR_FILE} app-demo.jar +ADD ${JAR_FILE} spring-boot-app-0.0.1-SNAPSHOT.jar # Run the jar file -ENTRYPOINT ["java","-Dfile.encoding=UTF-8","-jar","/app-demo.jar"] \ No newline at end of file +ENTRYPOINT ["java","-Dfile.encoding=UTF-8","-jar","spring-boot-app-0.0.1-SNAPSHOT.jar"] \ No newline at end of file diff --git a/framework/spring/spring-boot/spring-boot-app/pom.xml b/framework/spring/spring-boot/spring-boot-app/pom.xml index 0fd3b75d3..1eaf6b067 100644 --- a/framework/spring/spring-boot/spring-boot-app/pom.xml +++ b/framework/spring/spring-boot/spring-boot-app/pom.xml @@ -63,6 +63,7 @@ org.springframework.boot spring-boot-maven-plugin + com.spotify dockerfile-maven-plugin @@ -76,13 +77,6 @@ - - spotify/foobar - ${project.version} - - ${project.build.finalName}.jar - - diff --git a/framework/spring/spring-cloud/service-hello/pom.xml b/framework/spring/spring-cloud/service-hello/pom.xml index 220461844..230518b75 100644 --- a/framework/spring/spring-cloud/service-hello/pom.xml +++ b/framework/spring/spring-cloud/service-hello/pom.xml @@ -46,14 +46,4 @@ - - - - org.springframework.boot - spring-boot-maven-plugin - - - - - diff --git a/framework/spring/swagger/pom.xml b/framework/spring/swagger/pom.xml index 310a570fe..e0eebe878 100644 --- a/framework/spring/swagger/pom.xml +++ b/framework/spring/swagger/pom.xml @@ -75,14 +75,4 @@ - - - - org.springframework.boot - spring-boot-maven-plugin - - - - - From 2740de1c5a5ff6917a585b79fbfe1f5b9637edc1 Mon Sep 17 00:00:00 2001 From: Tiancai ZANG Date: Thu, 23 Aug 2018 19:33:13 +0800 Subject: [PATCH 151/417] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=20spring=20boot=20ad?= =?UTF-8?q?min?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- framework/spring/spring-boot/pom.xml | 23 +++++++ .../spring-boot/spring-boot-admin/pom.xml | 60 +++++++++++++++++++ .../learn/spring/boot/admin/AdminApp.java | 31 ++++++++++ .../src/main/resources/application.yml | 52 ++++++++++++++++ .../spring-boot/spring-boot-app/pom.xml | 26 ++++++-- .../boot/app/SpringBootAppApplication.java | 13 ++++ .../boot/app/controller/DemoController.java | 3 +- .../boot/app/controller/package-info.java | 9 +++ .../learn/spring/boot/app/dto/DemoDTO.java | 1 + .../src/main/resources/application.yml | 38 ++++-------- .../spring/spring-cloud/config-server/pom.xml | 2 + .../cloud/eureka/server/EurekaServer.java | 15 ----- .../src/main/resources/application.properties | 6 -- framework/spring/spring-cloud/pom.xml | 2 +- .../.gitignore | 0 .../{eureka-server => register-center}/mvnw | 0 .../mvnw.cmd | 0 .../pom.xml | 8 ++- .../cloud/eureka/RegisterCenterApp.java} | 4 +- .../src/main/resources/application.yml | 34 +++++++++++ .../server/RegisterCenterAppTests.java} | 2 +- 21 files changed, 270 insertions(+), 59 deletions(-) create mode 100644 framework/spring/spring-boot/spring-boot-admin/pom.xml create mode 100644 framework/spring/spring-boot/spring-boot-admin/src/main/java/org/laidu/learn/spring/boot/admin/AdminApp.java create mode 100644 framework/spring/spring-boot/spring-boot-admin/src/main/resources/application.yml create mode 100644 framework/spring/spring-boot/spring-boot-app/src/main/java/org/laidu/learn/spring/boot/app/controller/package-info.java delete mode 100644 framework/spring/spring-cloud/eureka-server/src/main/java/org/laidu/learn/spring/cloud/eureka/server/EurekaServer.java delete mode 100644 framework/spring/spring-cloud/eureka-server/src/main/resources/application.properties rename framework/spring/spring-cloud/{eureka-server => register-center}/.gitignore (100%) rename framework/spring/spring-cloud/{eureka-server => register-center}/mvnw (100%) rename framework/spring/spring-cloud/{eureka-server => register-center}/mvnw.cmd (100%) rename framework/spring/spring-cloud/{eureka-server => register-center}/pom.xml (91%) rename framework/spring/spring-cloud/{eureka-server/src/main/java/org/laidu/learn/spring/cloud/eureka/EurekaServerApplication.java => register-center/src/main/java/org/laidu/learn/spring/cloud/eureka/RegisterCenterApp.java} (82%) create mode 100644 framework/spring/spring-cloud/register-center/src/main/resources/application.yml rename framework/spring/spring-cloud/{eureka-server/src/test/java/org/laidu/learn/spring/cloud/eureka/server/EurekaServerApplicationTests.java => register-center/src/test/java/org/laidu/learn/spring/cloud/eureka/server/RegisterCenterAppTests.java} (87%) diff --git a/framework/spring/spring-boot/pom.xml b/framework/spring/spring-boot/pom.xml index d8d43745e..14be5aacd 100644 --- a/framework/spring/spring-boot/pom.xml +++ b/framework/spring/spring-boot/pom.xml @@ -17,6 +17,7 @@ spring-boot-app spring-boot-shiro spring-boot-sso + spring-boot-admin @@ -24,9 +25,31 @@ UTF-8 1.8 springio + 2.0.2 + + + + + + de.codecentric + spring-boot-admin-starter-server + ${spring-boot-admin.version} + + + + de.codecentric + spring-boot-admin-starter-client + ${spring-boot-admin.version} + + + + + + + org.springframework.boot spring-boot-starter diff --git a/framework/spring/spring-boot/spring-boot-admin/pom.xml b/framework/spring/spring-boot/spring-boot-admin/pom.xml new file mode 100644 index 000000000..6fb191fc9 --- /dev/null +++ b/framework/spring/spring-boot/spring-boot-admin/pom.xml @@ -0,0 +1,60 @@ + + + + spring-boot + org.laidu.learn + 1.0-SNAPSHOT + + 4.0.0 + + spring-boot-admin + + + + + de.codecentric + spring-boot-admin-sample-custom-ui + + + de.codecentric + spring-boot-admin-starter-server + + + + de.codecentric + spring-boot-admin-starter-client + 2.0.0 + + + + org.springframework.boot + spring-boot-starter-web + + + + + + + + + + org.springframework.boot + spring-boot-starter-actuator + + + + org.springframework.boot + spring-boot-starter-test + test + + + + org.jolokia + jolokia-core + + + + + \ No newline at end of file diff --git a/framework/spring/spring-boot/spring-boot-admin/src/main/java/org/laidu/learn/spring/boot/admin/AdminApp.java b/framework/spring/spring-boot/spring-boot-admin/src/main/java/org/laidu/learn/spring/boot/admin/AdminApp.java new file mode 100644 index 000000000..feb6bbb72 --- /dev/null +++ b/framework/spring/spring-boot/spring-boot-admin/src/main/java/org/laidu/learn/spring/boot/admin/AdminApp.java @@ -0,0 +1,31 @@ +package org.laidu.learn.spring.boot.admin; + +import de.codecentric.boot.admin.server.config.EnableAdminServer; +import lombok.extern.slf4j.Slf4j; +import org.springframework.boot.Banner; +import org.springframework.boot.autoconfigure.EnableAutoConfiguration; +import org.springframework.boot.builder.SpringApplicationBuilder; +import org.springframework.context.annotation.Configuration; + +/** + * spring boot admin + * + * @author tiancai.zang + * on 2018-08-23 17:19. + */ +@Slf4j +@Configuration +@EnableAutoConfiguration +@EnableAdminServer +public class AdminApp { + + public static void main(String[] args) { + + new SpringApplicationBuilder(AdminApp.class) + .bannerMode(Banner.Mode.OFF) + .registerShutdownHook(true) + .logStartupInfo(false) + .run(args); + + } +} \ No newline at end of file diff --git a/framework/spring/spring-boot/spring-boot-admin/src/main/resources/application.yml b/framework/spring/spring-boot/spring-boot-admin/src/main/resources/application.yml new file mode 100644 index 000000000..fe6506bb4 --- /dev/null +++ b/framework/spring/spring-boot/spring-boot-admin/src/main/resources/application.yml @@ -0,0 +1,52 @@ +spring: +# jackson: +# property-naming-strategy: SNAKE_CASE + boot: + admin: + client: + enabled: true + auto-registration: true + url: "http://localhost:2222" + api-path: instances + ui: + cache: + no-store: true + +management: + server: + port: 9998 + address: localhost + endpoint: + health: + show-details: always + shutdown: + enabled: true + metrics: + enabled: true + info: + enabled: true + endpoints: + enabled-by-default: true + jmx: + exposure: + include: "*" + web: + exposure: + include: "*" + # METRICS + metrics: + export: + atlas: + enabled: true + step: 1s + graphite: + host: localhost + port: 2004 + enabled: true + step: 1s + protocol: pickled + binders: + jvm: + enabled: true +server: + port: 2222 diff --git a/framework/spring/spring-boot/spring-boot-app/pom.xml b/framework/spring/spring-boot/spring-boot-app/pom.xml index 1eaf6b067..271f5278b 100644 --- a/framework/spring/spring-boot/spring-boot-app/pom.xml +++ b/framework/spring/spring-boot/spring-boot-app/pom.xml @@ -22,22 +22,33 @@ + + org.jolokia + jolokia-core + + + + de.codecentric + spring-boot-admin-starter-client + ${spring-boot-admin.version} + org.springframework.boot - spring-boot-starter-actuator + spring-boot-starter-security org.springframework.boot - spring-boot-starter + spring-boot-starter-actuator + org.springframework.boot - spring-boot-starter-web + spring-boot-starter org.springframework.boot - spring-boot-starter-web-services + spring-boot-starter-web @@ -62,6 +73,13 @@ org.springframework.boot spring-boot-maven-plugin + + + + build-info + + + diff --git a/framework/spring/spring-boot/spring-boot-app/src/main/java/org/laidu/learn/spring/boot/app/SpringBootAppApplication.java b/framework/spring/spring-boot/spring-boot-app/src/main/java/org/laidu/learn/spring/boot/app/SpringBootAppApplication.java index 557f8ddf6..8e3dfa68d 100644 --- a/framework/spring/spring-boot/spring-boot-app/src/main/java/org/laidu/learn/spring/boot/app/SpringBootAppApplication.java +++ b/framework/spring/spring-boot/spring-boot-app/src/main/java/org/laidu/learn/spring/boot/app/SpringBootAppApplication.java @@ -3,6 +3,9 @@ import lombok.extern.slf4j.Slf4j; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.boot.builder.SpringApplicationBuilder; +import org.springframework.context.annotation.Configuration; +import org.springframework.security.config.annotation.web.builders.HttpSecurity; +import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter; /** * @author laidu @@ -11,6 +14,16 @@ @SpringBootApplication public class SpringBootAppApplication { + + @Configuration + public static class SecurityPermitAllConfig extends WebSecurityConfigurerAdapter { + @Override + protected void configure(HttpSecurity http) throws Exception { + http.authorizeRequests().anyRequest().permitAll() + .and().csrf().disable(); + } + } + public static void main(String[] args) { new SpringApplicationBuilder() diff --git a/framework/spring/spring-boot/spring-boot-app/src/main/java/org/laidu/learn/spring/boot/app/controller/DemoController.java b/framework/spring/spring-boot/spring-boot-app/src/main/java/org/laidu/learn/spring/boot/app/controller/DemoController.java index 524c5409b..eeffcdb9d 100644 --- a/framework/spring/spring-boot/spring-boot-app/src/main/java/org/laidu/learn/spring/boot/app/controller/DemoController.java +++ b/framework/spring/spring-boot/spring-boot-app/src/main/java/org/laidu/learn/spring/boot/app/controller/DemoController.java @@ -10,6 +10,7 @@ *

                    * Created by tiancai.zang * on 2018-05-09 22:48. + * @author laidu */ @Slf4j @Timed @@ -27,7 +28,7 @@ public DemoDTO demo(@RequestBody DemoDTO demoDTO){ @GetMapping("/hello") @Timed(extraTags = { "region", "us-east-1" }) @Timed(value = "all.people", longTask = true) - public String demo(){ + public String hello(){ return "hello"; } } \ No newline at end of file diff --git a/framework/spring/spring-boot/spring-boot-app/src/main/java/org/laidu/learn/spring/boot/app/controller/package-info.java b/framework/spring/spring-boot/spring-boot-app/src/main/java/org/laidu/learn/spring/boot/app/controller/package-info.java new file mode 100644 index 000000000..cac38f407 --- /dev/null +++ b/framework/spring/spring-boot/spring-boot-app/src/main/java/org/laidu/learn/spring/boot/app/controller/package-info.java @@ -0,0 +1,9 @@ +/** + * controller + *

                    + * Created by laidu + * on 2018-08-23 16:23. + * + * @author laidu + */ +package org.laidu.learn.spring.boot.app.controller; \ No newline at end of file diff --git a/framework/spring/spring-boot/spring-boot-app/src/main/java/org/laidu/learn/spring/boot/app/dto/DemoDTO.java b/framework/spring/spring-boot/spring-boot-app/src/main/java/org/laidu/learn/spring/boot/app/dto/DemoDTO.java index edbcb8bf7..ab40d26e8 100644 --- a/framework/spring/spring-boot/spring-boot-app/src/main/java/org/laidu/learn/spring/boot/app/dto/DemoDTO.java +++ b/framework/spring/spring-boot/spring-boot-app/src/main/java/org/laidu/learn/spring/boot/app/dto/DemoDTO.java @@ -10,6 +10,7 @@ *

                    * Created by tiancai.zang * on 2018-05-09 22:57. + * @author laidu */ @Data @Builder diff --git a/framework/spring/spring-boot/spring-boot-app/src/main/resources/application.yml b/framework/spring/spring-boot/spring-boot-app/src/main/resources/application.yml index 986ab404d..4237dc26b 100644 --- a/framework/spring/spring-boot/spring-boot-app/src/main/resources/application.yml +++ b/framework/spring/spring-boot/spring-boot-app/src/main/resources/application.yml @@ -1,16 +1,14 @@ spring: - devtools: - livereload: - enabled: true - port: 8081 - restart: - enabled: false - jackson: - property-naming-strategy: SNAKE_CASE + boot: + admin: + client: + url: http://localhost:2222 +# jackson: +# property-naming-strategy: SNAKE_CASE + application: + name: spring-boot-app-1 + management: - server: - port: 9999 - address: local-dev endpoint: health: show-details: always @@ -24,6 +22,7 @@ management: enabled-by-default: true jmx: exposure: + include: "*" web: exposure: @@ -34,21 +33,6 @@ management: atlas: enabled: true step: 1s - graphite: - host: local-dev - port: 2004 - enabled: true - step: 1s - protocol: pickled binders: jvm: - enabled: true - -debug: false -trace: false - -monitor: - project-name: app - - - + enabled: true \ No newline at end of file diff --git a/framework/spring/spring-cloud/config-server/pom.xml b/framework/spring/spring-cloud/config-server/pom.xml index 17c822925..d414c076b 100644 --- a/framework/spring/spring-cloud/config-server/pom.xml +++ b/framework/spring/spring-cloud/config-server/pom.xml @@ -11,7 +11,9 @@ config-server + + org.springframework.cloud spring-cloud-config-server diff --git a/framework/spring/spring-cloud/eureka-server/src/main/java/org/laidu/learn/spring/cloud/eureka/server/EurekaServer.java b/framework/spring/spring-cloud/eureka-server/src/main/java/org/laidu/learn/spring/cloud/eureka/server/EurekaServer.java deleted file mode 100644 index 8f900d368..000000000 --- a/framework/spring/spring-cloud/eureka-server/src/main/java/org/laidu/learn/spring/cloud/eureka/server/EurekaServer.java +++ /dev/null @@ -1,15 +0,0 @@ -package org.laidu.learn.spring.cloud.eureka.server; - -import lombok.extern.slf4j.Slf4j; - -/** - * eurrka server - * - * @author tiancai.zang - * @date 2018-03-05 11:35. - */ -@Slf4j -public class EurekaServer { - - -} \ No newline at end of file diff --git a/framework/spring/spring-cloud/eureka-server/src/main/resources/application.properties b/framework/spring/spring-cloud/eureka-server/src/main/resources/application.properties deleted file mode 100644 index c65b6fc36..000000000 --- a/framework/spring/spring-cloud/eureka-server/src/main/resources/application.properties +++ /dev/null @@ -1,6 +0,0 @@ -server.port=1111 - -eureka.instance.hostname=localhost -eureka.client.register-with-eureka=false -eureka.client.fetch-registry=false -eureka.client.service-url.defaultZone=http://${eureka.instance.hostname}:${server.port}/eureka/ \ No newline at end of file diff --git a/framework/spring/spring-cloud/pom.xml b/framework/spring/spring-cloud/pom.xml index 34b9db615..860907ab9 100644 --- a/framework/spring/spring-cloud/pom.xml +++ b/framework/spring/spring-cloud/pom.xml @@ -14,7 +14,7 @@ consumer-hello - eureka-server + register-center service-hello hystrix-dashboard config-server diff --git a/framework/spring/spring-cloud/eureka-server/.gitignore b/framework/spring/spring-cloud/register-center/.gitignore similarity index 100% rename from framework/spring/spring-cloud/eureka-server/.gitignore rename to framework/spring/spring-cloud/register-center/.gitignore diff --git a/framework/spring/spring-cloud/eureka-server/mvnw b/framework/spring/spring-cloud/register-center/mvnw similarity index 100% rename from framework/spring/spring-cloud/eureka-server/mvnw rename to framework/spring/spring-cloud/register-center/mvnw diff --git a/framework/spring/spring-cloud/eureka-server/mvnw.cmd b/framework/spring/spring-cloud/register-center/mvnw.cmd similarity index 100% rename from framework/spring/spring-cloud/eureka-server/mvnw.cmd rename to framework/spring/spring-cloud/register-center/mvnw.cmd diff --git a/framework/spring/spring-cloud/eureka-server/pom.xml b/framework/spring/spring-cloud/register-center/pom.xml similarity index 91% rename from framework/spring/spring-cloud/eureka-server/pom.xml rename to framework/spring/spring-cloud/register-center/pom.xml index 9c221efef..d181ef4f1 100644 --- a/framework/spring/spring-cloud/eureka-server/pom.xml +++ b/framework/spring/spring-cloud/register-center/pom.xml @@ -4,11 +4,11 @@ 4.0.0 org.laidu.learn.spring.cloud - eureka-server + register-center 0.0.1-SNAPSHOT jar - eureka-server + register-center Demo project for Spring Boot @@ -17,8 +17,12 @@ 1.0-SNAPSHOT + + + + org.springframework.cloud spring-cloud-starter-netflix-eureka-server diff --git a/framework/spring/spring-cloud/eureka-server/src/main/java/org/laidu/learn/spring/cloud/eureka/EurekaServerApplication.java b/framework/spring/spring-cloud/register-center/src/main/java/org/laidu/learn/spring/cloud/eureka/RegisterCenterApp.java similarity index 82% rename from framework/spring/spring-cloud/eureka-server/src/main/java/org/laidu/learn/spring/cloud/eureka/EurekaServerApplication.java rename to framework/spring/spring-cloud/register-center/src/main/java/org/laidu/learn/spring/cloud/eureka/RegisterCenterApp.java index 116466413..f37f2201f 100644 --- a/framework/spring/spring-cloud/eureka-server/src/main/java/org/laidu/learn/spring/cloud/eureka/EurekaServerApplication.java +++ b/framework/spring/spring-cloud/register-center/src/main/java/org/laidu/learn/spring/cloud/eureka/RegisterCenterApp.java @@ -10,10 +10,10 @@ */ @EnableEurekaServer @SpringBootApplication -public class EurekaServerApplication { +public class RegisterCenterApp { public static void main(String[] args) { - new SpringApplicationBuilder(EurekaServerApplication.class) + new SpringApplicationBuilder(RegisterCenterApp.class) .bannerMode(Banner.Mode.OFF) .logStartupInfo(false) .run(args); diff --git a/framework/spring/spring-cloud/register-center/src/main/resources/application.yml b/framework/spring/spring-cloud/register-center/src/main/resources/application.yml new file mode 100644 index 000000000..932b62ab7 --- /dev/null +++ b/framework/spring/spring-cloud/register-center/src/main/resources/application.yml @@ -0,0 +1,34 @@ + + +eureka: + instance: + hostname: localhost + client: + register-with-eureka: false + fetch-registry: false + service-url: + defaultZone: http://${eureka.instance.hostname}:${server.port}/eureka/ + +management: + server: + port: 9999 + address: local-dev + endpoint: + health: + show-details: always + shutdown: + enabled: true + metrics: + enabled: true + info: + enabled: true + endpoints: + enabled-by-default: true + jmx: + exposure: + include: "*" + web: + exposure: + include: "*" +server: + port: 1111 diff --git a/framework/spring/spring-cloud/eureka-server/src/test/java/org/laidu/learn/spring/cloud/eureka/server/EurekaServerApplicationTests.java b/framework/spring/spring-cloud/register-center/src/test/java/org/laidu/learn/spring/cloud/eureka/server/RegisterCenterAppTests.java similarity index 87% rename from framework/spring/spring-cloud/eureka-server/src/test/java/org/laidu/learn/spring/cloud/eureka/server/EurekaServerApplicationTests.java rename to framework/spring/spring-cloud/register-center/src/test/java/org/laidu/learn/spring/cloud/eureka/server/RegisterCenterAppTests.java index f7a8c87b4..55601aaa6 100644 --- a/framework/spring/spring-cloud/eureka-server/src/test/java/org/laidu/learn/spring/cloud/eureka/server/EurekaServerApplicationTests.java +++ b/framework/spring/spring-cloud/register-center/src/test/java/org/laidu/learn/spring/cloud/eureka/server/RegisterCenterAppTests.java @@ -7,7 +7,7 @@ @RunWith(SpringRunner.class) @SpringBootTest -public class EurekaServerApplicationTests { +public class RegisterCenterAppTests { @Test public void contextLoads() { From 30ae4a700f1eb52069f19f69d67f566162e4f00f Mon Sep 17 00:00:00 2001 From: "xpcoder823@gmail.com" Date: Thu, 23 Aug 2018 22:57:29 +0800 Subject: [PATCH 152/417] sync --- .../spring/spring-boot/spring-boot-admin/pom.xml | 4 ---- .../spring/boot/app/SpringBootAppApplication.java | 12 ------------ .../spring/spring-cloud/register-center/pom.xml | 3 --- 3 files changed, 19 deletions(-) diff --git a/framework/spring/spring-boot/spring-boot-admin/pom.xml b/framework/spring/spring-boot/spring-boot-admin/pom.xml index 6fb191fc9..cf3dabdcf 100644 --- a/framework/spring/spring-boot/spring-boot-admin/pom.xml +++ b/framework/spring/spring-boot/spring-boot-admin/pom.xml @@ -13,10 +13,6 @@ - - de.codecentric - spring-boot-admin-sample-custom-ui - de.codecentric spring-boot-admin-starter-server diff --git a/framework/spring/spring-boot/spring-boot-app/src/main/java/org/laidu/learn/spring/boot/app/SpringBootAppApplication.java b/framework/spring/spring-boot/spring-boot-app/src/main/java/org/laidu/learn/spring/boot/app/SpringBootAppApplication.java index 8e3dfa68d..2e0894d50 100644 --- a/framework/spring/spring-boot/spring-boot-app/src/main/java/org/laidu/learn/spring/boot/app/SpringBootAppApplication.java +++ b/framework/spring/spring-boot/spring-boot-app/src/main/java/org/laidu/learn/spring/boot/app/SpringBootAppApplication.java @@ -3,9 +3,6 @@ import lombok.extern.slf4j.Slf4j; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.boot.builder.SpringApplicationBuilder; -import org.springframework.context.annotation.Configuration; -import org.springframework.security.config.annotation.web.builders.HttpSecurity; -import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter; /** * @author laidu @@ -15,15 +12,6 @@ public class SpringBootAppApplication { - @Configuration - public static class SecurityPermitAllConfig extends WebSecurityConfigurerAdapter { - @Override - protected void configure(HttpSecurity http) throws Exception { - http.authorizeRequests().anyRequest().permitAll() - .and().csrf().disable(); - } - } - public static void main(String[] args) { new SpringApplicationBuilder() diff --git a/framework/spring/spring-cloud/register-center/pom.xml b/framework/spring/spring-cloud/register-center/pom.xml index d181ef4f1..788b06cce 100644 --- a/framework/spring/spring-cloud/register-center/pom.xml +++ b/framework/spring/spring-cloud/register-center/pom.xml @@ -20,9 +20,6 @@ - - - org.springframework.cloud spring-cloud-starter-netflix-eureka-server From cb31743717bc05c79f2a7cc2c1588cc5523f4fce Mon Sep 17 00:00:00 2001 From: Tiancai ZANG Date: Fri, 24 Aug 2018 10:50:43 +0800 Subject: [PATCH 153/417] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=20jrebel=20license?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../docker/elk/elasticsearch/Dockerfile | 2 +- .../resources/docker/elk/kafka/Dockerfile | 2 +- .../resources/docker/elk/kibana/Dockerfile | 2 +- .../resources/docker/elk/logstash/Dockerfile | 2 +- .../resources/docker/image/basic/Dockerfile | 2 +- .../resources/docker/image/demo/Dockerfile | 2 +- .../resources/docker/image/jrebel/Dockerfile | 26 +++++++++++++++++++ 7 files changed, 32 insertions(+), 6 deletions(-) create mode 100644 dev-ops/src/main/resources/docker/image/jrebel/Dockerfile diff --git a/dev-ops/src/main/resources/docker/elk/elasticsearch/Dockerfile b/dev-ops/src/main/resources/docker/elk/elasticsearch/Dockerfile index f0368f2e8..5fdea6f8c 100644 --- a/dev-ops/src/main/resources/docker/elk/elasticsearch/Dockerfile +++ b/dev-ops/src/main/resources/docker/elk/elasticsearch/Dockerfile @@ -1,4 +1,4 @@ -# This dockerfile uses the elasticsearch-platinum:6.2.2 image +# This Dockerfile uses the elasticsearch-platinum:6.2.2 image # VERSION 1 - EDITION 1 # Author: laidu diff --git a/dev-ops/src/main/resources/docker/elk/kafka/Dockerfile b/dev-ops/src/main/resources/docker/elk/kafka/Dockerfile index 10201433a..0b92fc4a7 100755 --- a/dev-ops/src/main/resources/docker/elk/kafka/Dockerfile +++ b/dev-ops/src/main/resources/docker/elk/kafka/Dockerfile @@ -1,4 +1,4 @@ -# This dockerfile for apache kafka 1.1.0 +# This Dockerfile for apache kafka 1.1.0 # Requirement: zookeeper # VERSION 1 - EDITION 1 # Author: laidu diff --git a/dev-ops/src/main/resources/docker/elk/kibana/Dockerfile b/dev-ops/src/main/resources/docker/elk/kibana/Dockerfile index baf4cb7ad..4d4d04d83 100644 --- a/dev-ops/src/main/resources/docker/elk/kibana/Dockerfile +++ b/dev-ops/src/main/resources/docker/elk/kibana/Dockerfile @@ -1,4 +1,4 @@ -# This dockerfile uses the kibana:6.2.2 image +# This Dockerfile uses the kibana:6.2.2 image # VERSION 1 - EDITION 1 # Author: laidu diff --git a/dev-ops/src/main/resources/docker/elk/logstash/Dockerfile b/dev-ops/src/main/resources/docker/elk/logstash/Dockerfile index b726bf8f2..9972422a7 100644 --- a/dev-ops/src/main/resources/docker/elk/logstash/Dockerfile +++ b/dev-ops/src/main/resources/docker/elk/logstash/Dockerfile @@ -1,4 +1,4 @@ -# This dockerfile uses the logstash:6.2.2 image +# This Dockerfile uses the logstash:6.2.2 image # VERSION 1 - EDITION 1 # Author: laidu diff --git a/dev-ops/src/main/resources/docker/image/basic/Dockerfile b/dev-ops/src/main/resources/docker/image/basic/Dockerfile index a70378fb6..a5866768f 100644 --- a/dev-ops/src/main/resources/docker/image/basic/Dockerfile +++ b/dev-ops/src/main/resources/docker/image/basic/Dockerfile @@ -1,4 +1,4 @@ -# This dockerfile uses the ubuntu image +# This Dockerfile uses the ubuntu image # VERSION 2 - EDITION 1 # Author: docker_user # Command format: Instruction [arguments / command] .. diff --git a/dev-ops/src/main/resources/docker/image/demo/Dockerfile b/dev-ops/src/main/resources/docker/image/demo/Dockerfile index b55cf0dc5..a450cc6e7 100644 --- a/dev-ops/src/main/resources/docker/image/demo/Dockerfile +++ b/dev-ops/src/main/resources/docker/image/demo/Dockerfile @@ -1,4 +1,4 @@ -# This dockerfile uses the ubuntu image +# This Dockerfile uses the ubuntu image # VERSION 2 - EDITION 1 # Author: docker_user # Command format: Instruction [arguments / command] .. diff --git a/dev-ops/src/main/resources/docker/image/jrebel/Dockerfile b/dev-ops/src/main/resources/docker/image/jrebel/Dockerfile new file mode 100644 index 000000000..eff40d62a --- /dev/null +++ b/dev-ops/src/main/resources/docker/image/jrebel/Dockerfile @@ -0,0 +1,26 @@ +# Start with a base image containing Java runtime +FROM openjdk:8-jdk-alpine + +# Add Maintainer Info +LABEL maintainer="laidu823@gmail.com" + +# Add a volume pointing to /tmp +VOLUME /tmp + +# Make port 8080 available to the world outside this container +EXPOSE 8081 + +# using beijing timezone +RUN echo "Asia/Shanghai" > /etc/timezone + +WORKDIR /data +# The application's jar file +RUN wget https://terwer.oss-cn-qingdao.aliyuncs.com/active/JrebelBrainsLicenseServerforJava-1.0-SNAPSHOT-jar-with-dependencies.jar +ARG JAR_FILE=JrebelBrainsLicenseServerforJava-1.0-SNAPSHOT-jar-with-dependencies.jar + +# Add the application's jar to the container +RUN echo ${jar_FILE} +#ADD ${JAR_FILE} JrebelBrainsLicenseServerforJava-1.0-SNAPSHOT-jar-with-dependencies.jar + +# Run the jar file +ENTRYPOINT ["java","-jar","JrebelBrainsLicenseServerforJava-1.0-SNAPSHOT-jar-with-dependencies.jar"] \ No newline at end of file From 765283dc8ee2abc3bc789115d78e52f59cbf41ba Mon Sep 17 00:00:00 2001 From: Tiancai ZANG Date: Fri, 24 Aug 2018 17:35:54 +0800 Subject: [PATCH 154/417] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=20email=20notify?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../spring-boot/spring-boot-admin/pom.xml | 6 +++++ .../src/main/resources/application.yml | 21 +++++++++++++++ .../spring-boot/spring-boot-app/pom.xml | 26 +++++++++++++++---- .../learn/spring/boot/app/dto/DemoDTO.java | 3 +++ 4 files changed, 51 insertions(+), 5 deletions(-) diff --git a/framework/spring/spring-boot/spring-boot-admin/pom.xml b/framework/spring/spring-boot/spring-boot-admin/pom.xml index cf3dabdcf..f8d7bd671 100644 --- a/framework/spring/spring-boot/spring-boot-admin/pom.xml +++ b/framework/spring/spring-boot/spring-boot-admin/pom.xml @@ -13,6 +13,12 @@ + + + org.springframework.boot + spring-boot-starter-mail + + de.codecentric spring-boot-admin-starter-server diff --git a/framework/spring/spring-boot/spring-boot-admin/src/main/resources/application.yml b/framework/spring/spring-boot/spring-boot-admin/src/main/resources/application.yml index fe6506bb4..650a3033d 100644 --- a/framework/spring/spring-boot/spring-boot-admin/src/main/resources/application.yml +++ b/framework/spring/spring-boot/spring-boot-admin/src/main/resources/application.yml @@ -11,6 +11,27 @@ spring: ui: cache: no-store: true + notify: + mail: + to: tiancai.zang@finlink.net.cn + from: laidu823@sina.com + mail: + host: smtp.sina.com + username: laidu823@sina.com + password: ${sina_password} + default-encoding: utf-8 + port: 465 + test-connection: true + properties: + mail: + smtp: + auth: true + starttls: + required: false + enable: false + ssl: + enable: true + management: server: diff --git a/framework/spring/spring-boot/spring-boot-app/pom.xml b/framework/spring/spring-boot/spring-boot-app/pom.xml index 271f5278b..f26f6d859 100644 --- a/framework/spring/spring-boot/spring-boot-app/pom.xml +++ b/framework/spring/spring-boot/spring-boot-app/pom.xml @@ -32,10 +32,10 @@ spring-boot-admin-starter-client ${spring-boot-admin.version} - - org.springframework.boot - spring-boot-starter-security - + + + + org.springframework.boot @@ -48,9 +48,25 @@ org.springframework.boot - spring-boot-starter-web + spring-boot-starter-web-services + + + org.springframework.boot + spring-boot-starter-tomcat + + + + + + org.springframework.boot + spring-boot-starter-undertow + + + + + org.springframework.boot spring-boot-devtools diff --git a/framework/spring/spring-boot/spring-boot-app/src/main/java/org/laidu/learn/spring/boot/app/dto/DemoDTO.java b/framework/spring/spring-boot/spring-boot-app/src/main/java/org/laidu/learn/spring/boot/app/dto/DemoDTO.java index ab40d26e8..bf69fe357 100644 --- a/framework/spring/spring-boot/spring-boot-app/src/main/java/org/laidu/learn/spring/boot/app/dto/DemoDTO.java +++ b/framework/spring/spring-boot/spring-boot-app/src/main/java/org/laidu/learn/spring/boot/app/dto/DemoDTO.java @@ -1,5 +1,7 @@ package org.laidu.learn.spring.boot.app.dto; +import com.fasterxml.jackson.databind.PropertyNamingStrategy; +import com.fasterxml.jackson.databind.annotation.JsonNaming; import lombok.AllArgsConstructor; import lombok.Builder; import lombok.Data; @@ -16,6 +18,7 @@ @Builder @AllArgsConstructor @NoArgsConstructor +@JsonNaming(value = PropertyNamingStrategy.SnakeCaseStrategy.class) public class DemoDTO { private String username; From 6603f9e90ceec436111c75042c81ca12afb78bd8 Mon Sep 17 00:00:00 2001 From: Tiancai ZANG Date: Fri, 24 Aug 2018 18:08:42 +0800 Subject: [PATCH 155/417] sync --- .../admin/conf/NotifierConfiguration.java | 45 +++++++++++++++++++ .../src/main/resources/application.yml | 6 +-- 2 files changed, 48 insertions(+), 3 deletions(-) create mode 100644 framework/spring/spring-boot/spring-boot-admin/src/main/java/org/laidu/learn/spring/boot/admin/conf/NotifierConfiguration.java diff --git a/framework/spring/spring-boot/spring-boot-admin/src/main/java/org/laidu/learn/spring/boot/admin/conf/NotifierConfiguration.java b/framework/spring/spring-boot/spring-boot-admin/src/main/java/org/laidu/learn/spring/boot/admin/conf/NotifierConfiguration.java new file mode 100644 index 000000000..a3339aaa8 --- /dev/null +++ b/framework/spring/spring-boot/spring-boot-admin/src/main/java/org/laidu/learn/spring/boot/admin/conf/NotifierConfiguration.java @@ -0,0 +1,45 @@ +package org.laidu.learn.spring.boot.admin.conf; + +import de.codecentric.boot.admin.server.domain.entities.Instance; +import de.codecentric.boot.admin.server.domain.entities.InstanceRepository; +import de.codecentric.boot.admin.server.domain.events.InstanceEvent; +import de.codecentric.boot.admin.server.domain.events.InstanceStatusChangedEvent; +import de.codecentric.boot.admin.server.notify.AbstractEventNotifier; +import de.codecentric.boot.admin.server.notify.Notifier; +import de.codecentric.boot.admin.server.notify.RemindingNotifier; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; +import org.springframework.context.annotation.Primary; +import reactor.core.publisher.Mono; + +import java.time.Duration; + +/** + * notify conf + * + * @author tiancai.zang + * on 2018-08-24 17:53. + */ +@Slf4j +@Configuration +public class NotifierConfiguration extends AbstractEventNotifier { + + public NotifierConfiguration(InstanceRepository repository) { + super(repository); + } + + @Override + protected Mono doNotify(InstanceEvent event, Instance instance) { + return Mono.fromRunnable(() -> { + if (event instanceof InstanceStatusChangedEvent) { + log.info("Instance {} ({}) is {}", instance.getRegistration().getName(), event.getInstance(), + ((InstanceStatusChangedEvent) event).getStatusInfo().getStatus()); + } else { + log.info("Instance {} ({}) {}", instance.getRegistration().getName(), event.getInstance(), + event.getType()); + } + }); + } +} \ No newline at end of file diff --git a/framework/spring/spring-boot/spring-boot-admin/src/main/resources/application.yml b/framework/spring/spring-boot/spring-boot-admin/src/main/resources/application.yml index 650a3033d..cf8a0c3cc 100644 --- a/framework/spring/spring-boot/spring-boot-admin/src/main/resources/application.yml +++ b/framework/spring/spring-boot/spring-boot-admin/src/main/resources/application.yml @@ -1,6 +1,6 @@ spring: -# jackson: -# property-naming-strategy: SNAKE_CASE + jackson: + property-naming-strategy: SNAKE_CASE boot: admin: client: @@ -18,7 +18,7 @@ spring: mail: host: smtp.sina.com username: laidu823@sina.com - password: ${sina_password} + password: ${sina_password} # 通过环境变量获取 default-encoding: utf-8 port: 465 test-connection: true From 132f8d69db46c58fa4bfd62418fe93a08b817d84 Mon Sep 17 00:00:00 2001 From: Tiancai ZANG Date: Mon, 27 Aug 2018 17:30:43 +0800 Subject: [PATCH 156/417] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=20retrofit?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- framework/network/pom.xml | 49 +++ framework/network/retrofit/pom.xml | 25 ++ .../learn/network/retrofit/package-info.java | 9 + .../network/retrofit/usage/BasicUsage.java | 113 +++++++ .../usage/api/ZhongminbaoxianService.java | 31 ++ .../network/retrofit/usage/mode/BaoeList.java | 42 +++ .../network/retrofit/usage/mode/Data.java | 283 ++++++++++++++++++ .../network/retrofit/usage/mode/PriceQes.java | 44 +++ .../network/retrofit/usage/mode/PriceReq.java | 144 +++++++++ framework/network/web-client/pom.xml | 5 +- framework/pom.xml | 8 - 11 files changed, 741 insertions(+), 12 deletions(-) create mode 100644 framework/network/retrofit/pom.xml create mode 100644 framework/network/retrofit/src/main/java/org/laidu/learn/network/retrofit/package-info.java create mode 100644 framework/network/retrofit/src/main/java/org/laidu/learn/network/retrofit/usage/BasicUsage.java create mode 100644 framework/network/retrofit/src/main/java/org/laidu/learn/network/retrofit/usage/api/ZhongminbaoxianService.java create mode 100644 framework/network/retrofit/src/main/java/org/laidu/learn/network/retrofit/usage/mode/BaoeList.java create mode 100644 framework/network/retrofit/src/main/java/org/laidu/learn/network/retrofit/usage/mode/Data.java create mode 100644 framework/network/retrofit/src/main/java/org/laidu/learn/network/retrofit/usage/mode/PriceQes.java create mode 100644 framework/network/retrofit/src/main/java/org/laidu/learn/network/retrofit/usage/mode/PriceReq.java diff --git a/framework/network/pom.xml b/framework/network/pom.xml index af3bb293a..317827553 100644 --- a/framework/network/pom.xml +++ b/framework/network/pom.xml @@ -17,5 +17,54 @@ netty httpclient web-client + retrofit + + + + 2.4.0 + 2.1.0-alpha24 + + 5.0.8.RELEASE + 0.7.8.RELEASE + + + + + + + + com.squareup.retrofit2 + retrofit + ${retrofit.version} + + + com.squareup.retrofit2 + converter-jackson + ${retrofit.version} + + + + + org.asynchttpclient + async-http-client + ${async-http-client.version} + + + + + io.projectreactor.ipc + reactor-netty + ${reactor-netty.version} + + + + org.springframework + spring-webflux + ${spring-webflux.version} + true + + + + \ No newline at end of file diff --git a/framework/network/retrofit/pom.xml b/framework/network/retrofit/pom.xml new file mode 100644 index 000000000..d8919d508 --- /dev/null +++ b/framework/network/retrofit/pom.xml @@ -0,0 +1,25 @@ + + + + network + org.laidu.learn + 1.0-SNAPSHOT + + 4.0.0 + + retrofit + + + + + com.squareup.retrofit2 + retrofit + + + com.squareup.retrofit2 + converter-jackson + + + \ No newline at end of file diff --git a/framework/network/retrofit/src/main/java/org/laidu/learn/network/retrofit/package-info.java b/framework/network/retrofit/src/main/java/org/laidu/learn/network/retrofit/package-info.java new file mode 100644 index 000000000..94a406118 --- /dev/null +++ b/framework/network/retrofit/src/main/java/org/laidu/learn/network/retrofit/package-info.java @@ -0,0 +1,9 @@ +/** + * retrofit 学习 + *

                    + * Created by laidu + * on 2018-08-27 11:33. + * + * @author laidu + */ +package org.laidu.learn.network.retrofit; \ No newline at end of file diff --git a/framework/network/retrofit/src/main/java/org/laidu/learn/network/retrofit/usage/BasicUsage.java b/framework/network/retrofit/src/main/java/org/laidu/learn/network/retrofit/usage/BasicUsage.java new file mode 100644 index 000000000..57039e302 --- /dev/null +++ b/framework/network/retrofit/src/main/java/org/laidu/learn/network/retrofit/usage/BasicUsage.java @@ -0,0 +1,113 @@ +package org.laidu.learn.network.retrofit.usage; + +import com.alibaba.fastjson.JSON; +import lombok.extern.slf4j.Slf4j; +import org.laidu.learn.network.retrofit.usage.api.ZhongminbaoxianService; +import org.laidu.learn.network.retrofit.usage.mode.PriceQes; +import org.laidu.learn.network.retrofit.usage.mode.PriceReq; +import retrofit2.Call; +import retrofit2.Callback; +import retrofit2.Response; +import retrofit2.Retrofit; +import retrofit2.converter.jackson.JacksonConverterFactory; + +import java.util.HashMap; +import java.util.Map; +import java.util.stream.IntStream; + +/** + * 使用 + * + * @author tiancai.zang + * on 2018-08-27 11:33. + */ +@Slf4j +public class BasicUsage { + + + private final static int[] DURATIONS = {5, 10, 15, 20, 30}; + private final static int[] QUOTA = {5, 10, 15, 20, 25, 30}; + + + + public static void main(String[] args) { + + Retrofit retrofit = getRetrofit(); + + + ZhongminbaoxianService service = retrofit.create(ZhongminbaoxianService.class); + + + PriceReq req = JSON.parseObject(" {\n" + + " \"pid\": 10059,\n" + + " \"sid\": 1,\n" + + " \"bid\": 12,\n" + + " \"typeStr\": \"LongMain\",\n" + + " \"birthday\": \"2012-07-01\",\n" + + " \"proType\": 0,\n" + + " \"age\": 0,\n" + // 年龄 + " \"male\": 1,\n" + // 性别 男0 女1 + " \"baoeList\": [\n" + + " {\n" + + " \"code\": \"MajorDis\",\n" + + " \"value\": \"100000\",\n" + // 保额 5 10 15 20 25 30万 QUOTA + " \"comCode\": \"110021-110221 \"\n" + + " }\n" + + " ],\n" + + " \"socialSecurity\": 0,\n" + + " \"policyTerm\": 120,\n" + + " \"policyTermType\": 4,\n" + + " \"periods\": 30,\n" + // 期限 DURATIONS + " \"periodType\": 1\n" + + " }", PriceReq.class); + + + getPrice(service, req); + + + } + + private static void getPrice(ZhongminbaoxianService service, PriceReq req) { + + + Map> plan1 = initPlan(); + + + Call call = service.getPrice(new PriceReq[]{req}); + + call.enqueue(new Callback() { + @Override + public void onResponse(Call call, Response response) { + try { + PriceQes res = JSON.parseObject(response.body(),PriceQes.class); + System.out.println(response.body()); + } catch (Exception e) { + e.printStackTrace(); + } + } + + @Override + public void onFailure(Call call, Throwable t) { + log.error("call.request().body()'s value : {}", call.request().body()); + } + }); + } + + private static Map> initPlan() { + Map> plan = new HashMap<>(); + + IntStream.range(0,50).forEach(i -> { + + }); + + + return plan; + } + + private static Retrofit getRetrofit() { + return new Retrofit.Builder() + .baseUrl("https://www.zhongmin.cn/") + .addConverterFactory(JacksonConverterFactory.create()) + .build(); + } +} \ No newline at end of file diff --git a/framework/network/retrofit/src/main/java/org/laidu/learn/network/retrofit/usage/api/ZhongminbaoxianService.java b/framework/network/retrofit/src/main/java/org/laidu/learn/network/retrofit/usage/api/ZhongminbaoxianService.java new file mode 100644 index 000000000..f514d8cc5 --- /dev/null +++ b/framework/network/retrofit/src/main/java/org/laidu/learn/network/retrofit/usage/api/ZhongminbaoxianService.java @@ -0,0 +1,31 @@ +package org.laidu.learn.network.retrofit.usage.api; + +import org.laidu.learn.network.retrofit.usage.mode.PriceReq; +import retrofit2.Call; +import retrofit2.http.Body; +import retrofit2.http.POST; + +/** + * 测试使用的json服务 + *

                    + * Created by laidu + * on 2018-08-27 11:35. + * + * curl 'https://www.zhongmin.cn/product/price/getPrice' + * -H 'Cookie: JSESSIONID=0F828CBC9B367B5FF50BDC0167446BC3; __jsluid=a62852f6bb75ee5cdff823e3e356bd9b; PIDDAB666666=2018082710081357094289; FVTDAB666666=636709612939928688; LVTDAB666666=636709612939928688; VTSDAB666666=1; MSTSDAB666666=0; SIDDAB666666=7c4a63dfee9e4f58b0d8ddaa1780ed5c; cookieUserName=cookie3c83ee2c153f3782b1336e57b348144e; Hm_lvt_9634323798be51b19359016bdfd65b32=1535335696; browseInfo=%5B%7B%22url%22%3A%22https%3A//www.zhongmin.cn/health/detail/ip10059_is1.html%22%2C%22productImg%22%3A%22//images.zhongmin.cn/images/2018/320/10059.jpg%22%2C%22productName%22%3A%22%u590D%u661F%u8054%u5408%u5EB7%u4E50%u4E00%u751F%u91CD%u5927%u75BE%u75C5%u4FDD%u9669B%u6B3E%u5347%u7EA7%u6B3E%22%2C%22price%22%3A%22129%22%2C%22pid%22%3A%2210059%22%7D%5D; VPSDAB666666=2; Hm_lpvt_9634323798be51b19359016bdfd65b32=1535335776' + * -H 'Origin: https://www.zhongmin.cn' + * -H 'Accept-Encoding: gzip, deflate, br' -H 'Accept-Language: zh-CN,zh;q=0.9' -H 'User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/68.0.3440.106 Safari/537.36' + * -H 'Content-Type: application/json' -H 'Accept: application/json, text/javascript, **; q=0.01' + * -H 'Referer: https://www.zhongmin.cn/health/detail/ip10059_is1.html' + * -H 'X-Requested-With: XMLHttpRequest' + * -H 'Connection: keep-alive' + * --data-binary '[{"pid":10059,"sid":1,"bid":12,"typeStr":"LongMain","proType":0,"age":0,"male":1,"baoeList":[{"code":"MajorDis","value":"100000","comCode":"110021-110221 "}],"socialSecurity":0,"policyTerm":70,"policyTermType":3,"periods":30,"periodType":1}]' + * --compressed + * + * @author laidu + */ +public interface ZhongminbaoxianService { + + @POST("product/price/getPrice") + Call getPrice(@Body PriceReq[] req); +} diff --git a/framework/network/retrofit/src/main/java/org/laidu/learn/network/retrofit/usage/mode/BaoeList.java b/framework/network/retrofit/src/main/java/org/laidu/learn/network/retrofit/usage/mode/BaoeList.java new file mode 100644 index 000000000..bffcbc165 --- /dev/null +++ b/framework/network/retrofit/src/main/java/org/laidu/learn/network/retrofit/usage/mode/BaoeList.java @@ -0,0 +1,42 @@ + +package org.laidu.learn.network.retrofit.usage.mode; + +import javax.annotation.Generated; +import com.google.gson.annotations.SerializedName; + +@Generated("net.hexar.json2pojo") +@SuppressWarnings("unused") +public class BaoeList { + + @SerializedName("code") + private String mCode; + @SerializedName("comCode") + private String mComCode; + @SerializedName("value") + private String mValue; + + public String getCode() { + return mCode; + } + + public void setCode(String code) { + mCode = code; + } + + public String getComCode() { + return mComCode; + } + + public void setComCode(String comCode) { + mComCode = comCode; + } + + public String getValue() { + return mValue; + } + + public void setValue(String value) { + mValue = value; + } + +} diff --git a/framework/network/retrofit/src/main/java/org/laidu/learn/network/retrofit/usage/mode/Data.java b/framework/network/retrofit/src/main/java/org/laidu/learn/network/retrofit/usage/mode/Data.java new file mode 100644 index 000000000..fd5609c3c --- /dev/null +++ b/framework/network/retrofit/src/main/java/org/laidu/learn/network/retrofit/usage/mode/Data.java @@ -0,0 +1,283 @@ + +package org.laidu.learn.network.retrofit.usage.mode; + +import java.util.List; +import javax.annotation.Generated; +import com.google.gson.annotations.SerializedName; + +@Generated("net.hexar.json2pojo") +@SuppressWarnings("unused") +public class Data { + + @SerializedName("age") + private Long mAge; + @SerializedName("baoeList") + private List mBaoeList; + @SerializedName("bid") + private Long mBid; + @SerializedName("disCount") + private Long mDisCount; + @SerializedName("dycRate") + private Long mDycRate; + @SerializedName("isBaoQuan") + private Long mIsBaoQuan; + @SerializedName("isSpecial") + private Long mIsSpecial; + @SerializedName("male") + private Long mMale; + @SerializedName("maxNum") + private Long mMaxNum; + @SerializedName("minNum") + private Long mMinNum; + @SerializedName("onlyMainRiskChoise") + private Long mOnlyMainRiskChoise; + @SerializedName("periodType") + private Long mPeriodType; + @SerializedName("periods") + private Long mPeriods; + @SerializedName("pid") + private Long mPid; + @SerializedName("policyNumber") + private Long mPolicyNumber; + @SerializedName("policyTerm") + private Long mPolicyTerm; + @SerializedName("policyTermType") + private Long mPolicyTermType; + @SerializedName("priceFactorAge") + private Long mPriceFactorAge; + @SerializedName("priceType") + private Long mPriceType; + @SerializedName("proType") + private Long mProType; + @SerializedName("sellType") + private Long mSellType; + @SerializedName("sid") + private Long mSid; + @SerializedName("socialSecurity") + private Long mSocialSecurity; + @SerializedName("sumPrice") + private Long mSumPrice; + @SerializedName("sumSpecialPrice") + private Long mSumSpecialPrice; + @SerializedName("typeStr") + private String mTypeStr; + @SerializedName("upDownType") + private Long mUpDownType; + + public Long getAge() { + return mAge; + } + + public void setAge(Long age) { + mAge = age; + } + + public List getBaoeList() { + return mBaoeList; + } + + public void setBaoeList(List baoeList) { + mBaoeList = baoeList; + } + + public Long getBid() { + return mBid; + } + + public void setBid(Long bid) { + mBid = bid; + } + + public Long getDisCount() { + return mDisCount; + } + + public void setDisCount(Long disCount) { + mDisCount = disCount; + } + + public Long getDycRate() { + return mDycRate; + } + + public void setDycRate(Long dycRate) { + mDycRate = dycRate; + } + + public Long getIsBaoQuan() { + return mIsBaoQuan; + } + + public void setIsBaoQuan(Long isBaoQuan) { + mIsBaoQuan = isBaoQuan; + } + + public Long getIsSpecial() { + return mIsSpecial; + } + + public void setIsSpecial(Long isSpecial) { + mIsSpecial = isSpecial; + } + + public Long getMale() { + return mMale; + } + + public void setMale(Long male) { + mMale = male; + } + + public Long getMaxNum() { + return mMaxNum; + } + + public void setMaxNum(Long maxNum) { + mMaxNum = maxNum; + } + + public Long getMinNum() { + return mMinNum; + } + + public void setMinNum(Long minNum) { + mMinNum = minNum; + } + + public Long getOnlyMainRiskChoise() { + return mOnlyMainRiskChoise; + } + + public void setOnlyMainRiskChoise(Long onlyMainRiskChoise) { + mOnlyMainRiskChoise = onlyMainRiskChoise; + } + + public Long getPeriodType() { + return mPeriodType; + } + + public void setPeriodType(Long periodType) { + mPeriodType = periodType; + } + + public Long getPeriods() { + return mPeriods; + } + + public void setPeriods(Long periods) { + mPeriods = periods; + } + + public Long getPid() { + return mPid; + } + + public void setPid(Long pid) { + mPid = pid; + } + + public Long getPolicyNumber() { + return mPolicyNumber; + } + + public void setPolicyNumber(Long policyNumber) { + mPolicyNumber = policyNumber; + } + + public Long getPolicyTerm() { + return mPolicyTerm; + } + + public void setPolicyTerm(Long policyTerm) { + mPolicyTerm = policyTerm; + } + + public Long getPolicyTermType() { + return mPolicyTermType; + } + + public void setPolicyTermType(Long policyTermType) { + mPolicyTermType = policyTermType; + } + + public Long getPriceFactorAge() { + return mPriceFactorAge; + } + + public void setPriceFactorAge(Long priceFactorAge) { + mPriceFactorAge = priceFactorAge; + } + + public Long getPriceType() { + return mPriceType; + } + + public void setPriceType(Long priceType) { + mPriceType = priceType; + } + + public Long getProType() { + return mProType; + } + + public void setProType(Long proType) { + mProType = proType; + } + + public Long getSellType() { + return mSellType; + } + + public void setSellType(Long sellType) { + mSellType = sellType; + } + + public Long getSid() { + return mSid; + } + + public void setSid(Long sid) { + mSid = sid; + } + + public Long getSocialSecurity() { + return mSocialSecurity; + } + + public void setSocialSecurity(Long socialSecurity) { + mSocialSecurity = socialSecurity; + } + + public Long getSumPrice() { + return mSumPrice; + } + + public void setSumPrice(Long sumPrice) { + mSumPrice = sumPrice; + } + + public Long getSumSpecialPrice() { + return mSumSpecialPrice; + } + + public void setSumSpecialPrice(Long sumSpecialPrice) { + mSumSpecialPrice = sumSpecialPrice; + } + + public String getTypeStr() { + return mTypeStr; + } + + public void setTypeStr(String typeStr) { + mTypeStr = typeStr; + } + + public Long getUpDownType() { + return mUpDownType; + } + + public void setUpDownType(Long upDownType) { + mUpDownType = upDownType; + } + +} diff --git a/framework/network/retrofit/src/main/java/org/laidu/learn/network/retrofit/usage/mode/PriceQes.java b/framework/network/retrofit/src/main/java/org/laidu/learn/network/retrofit/usage/mode/PriceQes.java new file mode 100644 index 000000000..c28048f47 --- /dev/null +++ b/framework/network/retrofit/src/main/java/org/laidu/learn/network/retrofit/usage/mode/PriceQes.java @@ -0,0 +1,44 @@ + +package org.laidu.learn.network.retrofit.usage.mode; + +import com.google.gson.annotations.SerializedName; + +import javax.annotation.Generated; +import java.io.Serializable; + +@Generated("net.hexar.json2pojo") +@SuppressWarnings("unused") +public class PriceQes implements Serializable { + + @SerializedName("code") + private Long mCode; + @SerializedName("data") + private Data mData; + @SerializedName("message") + private String mMessage; + + public Long getCode() { + return mCode; + } + + public void setCode(Long code) { + mCode = code; + } + + public Data getData() { + return mData; + } + + public void setData(Data data) { + mData = data; + } + + public String getMessage() { + return mMessage; + } + + public void setMessage(String message) { + mMessage = message; + } + +} diff --git a/framework/network/retrofit/src/main/java/org/laidu/learn/network/retrofit/usage/mode/PriceReq.java b/framework/network/retrofit/src/main/java/org/laidu/learn/network/retrofit/usage/mode/PriceReq.java new file mode 100644 index 000000000..a88579b5f --- /dev/null +++ b/framework/network/retrofit/src/main/java/org/laidu/learn/network/retrofit/usage/mode/PriceReq.java @@ -0,0 +1,144 @@ + +package org.laidu.learn.network.retrofit.usage.mode; + +import com.google.gson.annotations.SerializedName; + +import javax.annotation.Generated; +import java.util.List; + +@Generated("net.hexar.json2pojo") +@SuppressWarnings("unused") +public class PriceReq { + + @SerializedName("age") + private Long mAge; + @SerializedName("baoeList") + private List mBaoeList; + @SerializedName("bid") + private Long mBid; + @SerializedName("male") + private Long mMale; + @SerializedName("periodType") + private Long mPeriodType; + @SerializedName("periods") + private Long mPeriods; + @SerializedName("pid") + private Long mPid; + @SerializedName("policyTerm") + private Long mPolicyTerm; + @SerializedName("policyTermType") + private Long mPolicyTermType; + @SerializedName("proType") + private Long mProType; + @SerializedName("sid") + private Long mSid; + @SerializedName("socialSecurity") + private Long mSocialSecurity; + @SerializedName("typeStr") + private String mTypeStr; + + public Long getAge() { + return mAge; + } + + public void setAge(Long age) { + mAge = age; + } + + public List getBaoeList() { + return mBaoeList; + } + + public void setBaoeList(List baoeList) { + mBaoeList = baoeList; + } + + public Long getBid() { + return mBid; + } + + public void setBid(Long bid) { + mBid = bid; + } + + public Long getMale() { + return mMale; + } + + public void setMale(Long male) { + mMale = male; + } + + public Long getPeriodType() { + return mPeriodType; + } + + public void setPeriodType(Long periodType) { + mPeriodType = periodType; + } + + public Long getPeriods() { + return mPeriods; + } + + public void setPeriods(Long periods) { + mPeriods = periods; + } + + public Long getPid() { + return mPid; + } + + public void setPid(Long pid) { + mPid = pid; + } + + public Long getPolicyTerm() { + return mPolicyTerm; + } + + public void setPolicyTerm(Long policyTerm) { + mPolicyTerm = policyTerm; + } + + public Long getPolicyTermType() { + return mPolicyTermType; + } + + public void setPolicyTermType(Long policyTermType) { + mPolicyTermType = policyTermType; + } + + public Long getProType() { + return mProType; + } + + public void setProType(Long proType) { + mProType = proType; + } + + public Long getSid() { + return mSid; + } + + public void setSid(Long sid) { + mSid = sid; + } + + public Long getSocialSecurity() { + return mSocialSecurity; + } + + public void setSocialSecurity(Long socialSecurity) { + mSocialSecurity = socialSecurity; + } + + public String getTypeStr() { + return mTypeStr; + } + + public void setTypeStr(String typeStr) { + mTypeStr = typeStr; + } + +} diff --git a/framework/network/web-client/pom.xml b/framework/network/web-client/pom.xml index f04a77bd2..b0f79cd92 100644 --- a/framework/network/web-client/pom.xml +++ b/framework/network/web-client/pom.xml @@ -12,8 +12,7 @@ web-client - 5.0.8.RELEASE - 0.7.8.RELEASE + @@ -21,13 +20,11 @@ io.projectreactor.ipc reactor-netty - ${reactor-netty.version} org.springframework spring-webflux - ${spring-webflux.version} true diff --git a/framework/pom.xml b/framework/pom.xml index c5283c3fc..d27d167cf 100644 --- a/framework/pom.xml +++ b/framework/pom.xml @@ -32,9 +32,6 @@ 3.6 1.1 - - 2.1.0-alpha24 - 1.5 @@ -48,11 +45,6 @@ - - org.asynchttpclient - async-http-client - ${async-http-client.version} - com.typesafe.play From 94f9aa66f6d7531c7ae99966e7d578b7410a3b3c Mon Sep 17 00:00:00 2001 From: Tiancai ZANG Date: Tue, 28 Aug 2018 13:50:17 +0800 Subject: [PATCH 157/417] add jodd --- framework/common/jodd/pom.xml | 28 ++++++ .../org/laidu/learn/jodd/package-info.java | 10 +++ .../laidu/learn/jodd/usage/BeansUtilDemo.java | 87 +++++++++++++++++++ .../org/laidu/learn/jodd/usage/NetDemo.java | 18 ++++ framework/common/pom.xml | 16 ++++ .../framework/common/rxjava/hello/Demo.java | 6 +- .../cyclic/barrier/CyclicBarrierWorker.java | 1 - .../feature/collection/VectorUsage.java | 33 +++++++ .../src/site/markdown/collection.md | 6 +- production-component/common-util/pom.xml | 2 +- .../commom/util/http/curl/CurlParserUtil.java | 2 +- .../util/http/curl/CurlParserUtilV2.java | 2 +- .../encryption/AESEncryptionUtilTest.java | 2 +- 13 files changed, 202 insertions(+), 11 deletions(-) create mode 100644 framework/common/jodd/pom.xml create mode 100644 framework/common/jodd/src/main/java/org/laidu/learn/jodd/package-info.java create mode 100644 framework/common/jodd/src/main/java/org/laidu/learn/jodd/usage/BeansUtilDemo.java create mode 100644 framework/common/jodd/src/main/java/org/laidu/learn/jodd/usage/NetDemo.java create mode 100644 language-feature/src/main/java/org/laidu/learn/language/feature/collection/VectorUsage.java diff --git a/framework/common/jodd/pom.xml b/framework/common/jodd/pom.xml new file mode 100644 index 000000000..04f24c708 --- /dev/null +++ b/framework/common/jodd/pom.xml @@ -0,0 +1,28 @@ + + + + common + org.laidu.learn + 1.0-SNAPSHOT + + 4.0.0 + + jodd + + + + + org.jodd + jodd-core + + + org.jodd + jodd-bean + + + + + + \ No newline at end of file diff --git a/framework/common/jodd/src/main/java/org/laidu/learn/jodd/package-info.java b/framework/common/jodd/src/main/java/org/laidu/learn/jodd/package-info.java new file mode 100644 index 000000000..5d0c64d2e --- /dev/null +++ b/framework/common/jodd/src/main/java/org/laidu/learn/jodd/package-info.java @@ -0,0 +1,10 @@ +/** + * jodd learn + *

                    + * Created by laidu + * on 2018-08-28 11:50. + * + * @author laidu + */ +// TODO: 2018-08-28 11:50 jodd learn +package org.laidu.learn.jodd; \ No newline at end of file diff --git a/framework/common/jodd/src/main/java/org/laidu/learn/jodd/usage/BeansUtilDemo.java b/framework/common/jodd/src/main/java/org/laidu/learn/jodd/usage/BeansUtilDemo.java new file mode 100644 index 000000000..ff61b0ce7 --- /dev/null +++ b/framework/common/jodd/src/main/java/org/laidu/learn/jodd/usage/BeansUtilDemo.java @@ -0,0 +1,87 @@ +package org.laidu.learn.jodd.usage; + +import jodd.bean.BeanCopy; +import lombok.Builder; +import lombok.Data; +import lombok.extern.slf4j.Slf4j; + +import java.util.Collections; +import java.util.List; + +/** + * beantutil + * + * @author tiancai.zang + * on 2018-08-28 11:50. + */ +// TODO: 2018-08-28 11:50 beantutil +@Slf4j +public class BeansUtilDemo { + + public static void main(String[] args) { + + Person a = Person.builder() + .name("a") + .male(1) + .age(12) + .build(); + + Person b = Person.builder().build(); + BeanCopy.beans(a,b).copy(); + + Student student1 = Student.studengBuilder().build(); + BeanCopy.beans(a,student1).copy(); + + Animal animal = Animal.builder().build(); + BeanCopy.beans(a,animal).copy(); + + + School school1 = School.builder() + .name("aaa") + .students(Collections.singletonList(student1)) + .build(); + + School school2 = School.builder().build(); + + BeanCopy.beans(school2,school1).copy(); + + System.out.println(b); + } + + @Data + @Builder + static class Person{ + String name; + Integer male; + Integer age; + } + + + @Data + @Builder + static class Animal{ + String name1; + Integer male11; + Integer age; + } + + @Data + static class Student extends Person{ + + @Builder(builderMethodName = "studengBuilder") + public Student(String name, Integer male, Integer age, Integer score) { + super(name, male, age); + this.score = score; + } + + Integer score; + } + + @Data + @Builder + static class School{ + + private String name; + List students; + } +} \ No newline at end of file diff --git a/framework/common/jodd/src/main/java/org/laidu/learn/jodd/usage/NetDemo.java b/framework/common/jodd/src/main/java/org/laidu/learn/jodd/usage/NetDemo.java new file mode 100644 index 000000000..2badf502d --- /dev/null +++ b/framework/common/jodd/src/main/java/org/laidu/learn/jodd/usage/NetDemo.java @@ -0,0 +1,18 @@ +package org.laidu.learn.jodd.usage; + +import lombok.extern.slf4j.Slf4j; + +/** + * @author tiancai.zang + * on 2018-08-28 13:37. + */ +// TODO: 2018-08-28 13:37 +@Slf4j +public class NetDemo { + + public static void main(String[] args) { + + + } + +} \ No newline at end of file diff --git a/framework/common/pom.xml b/framework/common/pom.xml index 32b8b62b9..62aa367ef 100644 --- a/framework/common/pom.xml +++ b/framework/common/pom.xml @@ -20,6 +20,7 @@ apache-poi shiro rxjava + jodd @@ -28,6 +29,7 @@ 3.17 1.3.2 2.1.17 + 5.0.4 @@ -69,6 +71,20 @@ + + + org.jodd + jodd-core + ${jodd.version} + + + + org.jodd + jodd-bean + ${jodd.version} + + + diff --git a/framework/common/rxjava/src/main/java/org/laidu/learn/framework/common/rxjava/hello/Demo.java b/framework/common/rxjava/src/main/java/org/laidu/learn/framework/common/rxjava/hello/Demo.java index 261541a1b..68ac473d4 100644 --- a/framework/common/rxjava/src/main/java/org/laidu/learn/framework/common/rxjava/hello/Demo.java +++ b/framework/common/rxjava/src/main/java/org/laidu/learn/framework/common/rxjava/hello/Demo.java @@ -5,9 +5,9 @@ import io.reactivex.disposables.Disposable; import io.reactivex.functions.Consumer; import io.reactivex.schedulers.Schedulers; -import jodd.datetime.JStopWatch; import jodd.io.FileUtil; import lombok.extern.slf4j.Slf4j; +import org.apache.commons.lang3.time.StopWatch; import java.io.File; import java.util.List; @@ -28,7 +28,7 @@ public class Demo { public static void main(String[] args) throws InterruptedException { - JStopWatch stopWatch = new JStopWatch(); + StopWatch stopWatch = new StopWatch(); stopWatch.start(); int bufferSize = 16*1024*10240; @@ -57,7 +57,7 @@ public static void main(String[] args) throws InterruptedException { stopWatch.stop(); - System.out.println(stopWatch.elapsed()); + System.out.println(stopWatch.getNanoTime()); for (int i = 0; i < 600; i++) { diff --git a/language-advance/concurrent/src/main/java/org/laidu/learn/concurrent/cyclic/barrier/CyclicBarrierWorker.java b/language-advance/concurrent/src/main/java/org/laidu/learn/concurrent/cyclic/barrier/CyclicBarrierWorker.java index 57504e957..689d05f61 100644 --- a/language-advance/concurrent/src/main/java/org/laidu/learn/concurrent/cyclic/barrier/CyclicBarrierWorker.java +++ b/language-advance/concurrent/src/main/java/org/laidu/learn/concurrent/cyclic/barrier/CyclicBarrierWorker.java @@ -9,7 +9,6 @@ *

                    * Created by 臧天才 on 2017-09-21 18:16. */ - // : 2017-09-21 18:16 cyclicBarrier worker public class CyclicBarrierWorker implements Runnable { diff --git a/language-feature/src/main/java/org/laidu/learn/language/feature/collection/VectorUsage.java b/language-feature/src/main/java/org/laidu/learn/language/feature/collection/VectorUsage.java new file mode 100644 index 000000000..9e70aea54 --- /dev/null +++ b/language-feature/src/main/java/org/laidu/learn/language/feature/collection/VectorUsage.java @@ -0,0 +1,33 @@ +package org.laidu.learn.language.feature.collection; + +import lombok.extern.slf4j.Slf4j; + +import java.util.Vector; +import java.util.stream.IntStream; + +/** + * vector 使用 + * + * @see java.util.Vector + * @author tiancai.zang + * on 2018-08-27 17:33. + */ +@Slf4j +public class VectorUsage { + + public static void main(String[] args) { + + Vector strings = new Vector<>(100,200); + + IntStream.range(0,1000) + .boxed() + .map(String::valueOf) + .forEach(strings::add); + + System.out.println(strings.size()); + + strings.forEach(System.out::println); + + + } +} \ No newline at end of file diff --git a/language-feature/src/site/markdown/collection.md b/language-feature/src/site/markdown/collection.md index b68593884..a597888c2 100644 --- a/language-feature/src/site/markdown/collection.md +++ b/language-feature/src/site/markdown/collection.md @@ -7,10 +7,10 @@ ### 1.1 Collection 子接口 -* ![__List__]() List是一个有序集合。元素会增加到容器的指定位置。可以采用 __两种__ 方式访问元素:a,使用迭代器访问 +* [__List__]() List是一个有序集合。元素会增加到容器的指定位置。可以采用 __两种__ 方式访问元素:a,使用迭代器访问 b,使用整数索引访问(random access) -* ![ListIterator]() ListIterator 接口是Iterator的一个子接口,它提供一个方法用于在迭代器前添加一个元素。 -* ![Set]() Set等同于Collection接口。不过其方法又更加严谨的定义。Set中不允许添加重复元素。要适当的 __定义Set的equals方法__ :只要两个Set具有相同的元素就认为两个Set是相等的,而不要求元素的顺序; __hashCode__ 方法的定义要保证包含相同元素的两个集合会得到相同的散列值。 +* [ListIterator]() ListIterator 接口是Iterator的一个子接口,它提供一个方法用于在迭代器前添加一个元素。 +* [Set]() Set等同于Collection接口。不过其方法又更加严谨的定义。Set中不允许添加重复元素。要适当的 __定义Set的equals方法__ :只要两个Set具有相同的元素就认为两个Set是相等的,而不要求元素的顺序; __hashCode__ 方法的定义要保证包含相同元素的两个集合会得到相同的散列值。 ### 1.2 Map 子接口 diff --git a/production-component/common-util/pom.xml b/production-component/common-util/pom.xml index b6b4c3f9a..05b6bcb59 100644 --- a/production-component/common-util/pom.xml +++ b/production-component/common-util/pom.xml @@ -29,7 +29,7 @@ 25.0-jre 1.11.2 - 3.9.1 + 5.0.4 1.2.45 2.9.1 diff --git a/production-component/common-util/src/main/java/org/laidu/commom/util/http/curl/CurlParserUtil.java b/production-component/common-util/src/main/java/org/laidu/commom/util/http/curl/CurlParserUtil.java index aaf6b7089..7e06e30b6 100644 --- a/production-component/common-util/src/main/java/org/laidu/commom/util/http/curl/CurlParserUtil.java +++ b/production-component/common-util/src/main/java/org/laidu/commom/util/http/curl/CurlParserUtil.java @@ -1,7 +1,7 @@ package org.laidu.commom.util.http.curl; +import jodd.net.URLDecoder; import jodd.util.StringUtil; -import jodd.util.URLDecoder; import org.laidu.commom.util.regex.RegexUtil; import java.util.HashMap; diff --git a/production-component/common-util/src/main/java/org/laidu/commom/util/http/curl/CurlParserUtilV2.java b/production-component/common-util/src/main/java/org/laidu/commom/util/http/curl/CurlParserUtilV2.java index 34258e3ae..595aaa6ab 100644 --- a/production-component/common-util/src/main/java/org/laidu/commom/util/http/curl/CurlParserUtilV2.java +++ b/production-component/common-util/src/main/java/org/laidu/commom/util/http/curl/CurlParserUtilV2.java @@ -1,7 +1,7 @@ package org.laidu.commom.util.http.curl; import jodd.util.StringUtil; -import jodd.util.URLDecoder; +import jodd.net.URLDecoder; import org.laidu.commom.util.regex.RegexUtil; import java.util.HashMap; diff --git a/production-component/common-util/src/test/java/org/laidu/commom/util/encryption/AESEncryptionUtilTest.java b/production-component/common-util/src/test/java/org/laidu/commom/util/encryption/AESEncryptionUtilTest.java index e2086a030..78eb413dc 100644 --- a/production-component/common-util/src/test/java/org/laidu/commom/util/encryption/AESEncryptionUtilTest.java +++ b/production-component/common-util/src/test/java/org/laidu/commom/util/encryption/AESEncryptionUtilTest.java @@ -1,7 +1,7 @@ package org.laidu.commom.util.encryption; import jodd.util.Base64; -import jodd.util.URLDecoder; +import jodd.net.URLDecoder; import lombok.extern.slf4j.Slf4j; import org.apache.commons.codec.DecoderException; import org.apache.commons.codec.binary.Hex; From c393b71c8cd52ccd9822b6a54434f83e8bad2be2 Mon Sep 17 00:00:00 2001 From: Tiancai ZANG Date: Tue, 28 Aug 2018 19:28:17 +0800 Subject: [PATCH 158/417] add bytecode --- framework/common/jodd/pom.xml | 5 ++ .../org/laidu/learn/jodd/usage/HttpDemo.java | 55 +++++++++++++++++++ framework/common/pom.xml | 7 +++ .../conf/UniversalEnumConverterFactory.java | 1 + language-advance/bytecode/pom.xml | 44 +++++++++++++++ .../advance/bytecode/aspectj/AopDemo.java | 34 ++++++++++++ .../bytecode/aspectj/LogStartTime.java | 18 ++++++ .../bytecode/aspectj/MethodStartAspect.java | 37 +++++++++++++ .../bytecode/aspectj/package-info.java | 10 ++++ .../learn/advance/bytecode/package-info.java | 10 ++++ .../bytecode/src/site/markdown/index.md | 1 + language-advance/pom.xml | 13 ++++- 12 files changed, 234 insertions(+), 1 deletion(-) create mode 100644 framework/common/jodd/src/main/java/org/laidu/learn/jodd/usage/HttpDemo.java create mode 100644 language-advance/bytecode/pom.xml create mode 100644 language-advance/bytecode/src/main/java/org/laidu/learn/advance/bytecode/aspectj/AopDemo.java create mode 100644 language-advance/bytecode/src/main/java/org/laidu/learn/advance/bytecode/aspectj/LogStartTime.java create mode 100644 language-advance/bytecode/src/main/java/org/laidu/learn/advance/bytecode/aspectj/MethodStartAspect.java create mode 100644 language-advance/bytecode/src/main/java/org/laidu/learn/advance/bytecode/aspectj/package-info.java create mode 100644 language-advance/bytecode/src/main/java/org/laidu/learn/advance/bytecode/package-info.java create mode 100644 language-advance/bytecode/src/site/markdown/index.md diff --git a/framework/common/jodd/pom.xml b/framework/common/jodd/pom.xml index 04f24c708..d15cb1c84 100644 --- a/framework/common/jodd/pom.xml +++ b/framework/common/jodd/pom.xml @@ -22,6 +22,11 @@ jodd-bean + + org.jodd + jodd-http + + diff --git a/framework/common/jodd/src/main/java/org/laidu/learn/jodd/usage/HttpDemo.java b/framework/common/jodd/src/main/java/org/laidu/learn/jodd/usage/HttpDemo.java new file mode 100644 index 000000000..95d89e3dc --- /dev/null +++ b/framework/common/jodd/src/main/java/org/laidu/learn/jodd/usage/HttpDemo.java @@ -0,0 +1,55 @@ +package org.laidu.learn.jodd.usage; + +import jodd.http.HttpBrowser; +import jodd.http.HttpRequest; +import jodd.http.HttpResponse; +import jodd.net.HttpMethod; +import lombok.extern.slf4j.Slf4j; + +/** + * httpdemo + * + * @author tiancai.zang + * on 2018-08-28 17:45. + */ +// TODO: 2018-08-28 17:45 httpdemo +@Slf4j +public class HttpDemo { + + + public static void main(String[] args) { + +// brower(); + + HttpResponse response = HttpRequest.create(HttpMethod.GET.name(), "首页") + .followRedirects(true) + .accept("text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8") + .acceptEncoding("gzip, deflate, br") + .path("http://www.baidu.com/") + .host("www.baidu.com") + .header("User-Agent", "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/68.0.3440.106 Safari/537.36") + .header("Accept-Language", "zh-CN,zh;q=0.9").send(); + + + } + + private static void brower() { + HttpBrowser browser = new HttpBrowser(); + + + HttpRequest request = HttpRequest.create(HttpMethod.GET.name(),"首页") + .followRedirects(true) + .accept("text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8") + .acceptEncoding("gzip, deflate, br") + .path("https://www.baidu.com/") + .host("www.baidu.com") + .header("User-Agent","Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/68.0.3440.106 Safari/537.36") + .header("Accept-Language","zh-CN,zh;q=0.9"); + + browser.sendRequest(request); + + + System.out.println(browser.getPage()); + } + +} \ No newline at end of file diff --git a/framework/common/pom.xml b/framework/common/pom.xml index 62aa367ef..dba6165f1 100644 --- a/framework/common/pom.xml +++ b/framework/common/pom.xml @@ -84,6 +84,13 @@ ${jodd.version} + + org.jodd + jodd-http + ${jodd.version} + + + diff --git a/framework/spring/spring-web/spring-mvc/src/main/java/org/laidu/learn/spring/mvc/conf/UniversalEnumConverterFactory.java b/framework/spring/spring-web/spring-mvc/src/main/java/org/laidu/learn/spring/mvc/conf/UniversalEnumConverterFactory.java index 864238e63..9ad8d3033 100644 --- a/framework/spring/spring-web/spring-mvc/src/main/java/org/laidu/learn/spring/mvc/conf/UniversalEnumConverterFactory.java +++ b/framework/spring/spring-web/spring-mvc/src/main/java/org/laidu/learn/spring/mvc/conf/UniversalEnumConverterFactory.java @@ -35,6 +35,7 @@ public Converter getConverter(Class targ class IntegerStrToEnum implements Converter { private final Class enumType; + private Map enumMap = new HashMap<>(); public IntegerStrToEnum(Class enumType) { diff --git a/language-advance/bytecode/pom.xml b/language-advance/bytecode/pom.xml new file mode 100644 index 000000000..db38ba0de --- /dev/null +++ b/language-advance/bytecode/pom.xml @@ -0,0 +1,44 @@ + + + + language-advance + org.laidu.learn + 1.0-SNAPSHOT + + 4.0.0 + + bytecode + + + + org.aspectj + aspectjweaver + + + + + + + org.codehaus.mojo + aspectj-maven-plugin + 1.11 + + ${maven.compiler.source} + ${maven.compiler.source} + ${maven.compiler.target} + + + + + compile + test-compile + + + + + + + + \ No newline at end of file diff --git a/language-advance/bytecode/src/main/java/org/laidu/learn/advance/bytecode/aspectj/AopDemo.java b/language-advance/bytecode/src/main/java/org/laidu/learn/advance/bytecode/aspectj/AopDemo.java new file mode 100644 index 000000000..68335479a --- /dev/null +++ b/language-advance/bytecode/src/main/java/org/laidu/learn/advance/bytecode/aspectj/AopDemo.java @@ -0,0 +1,34 @@ +package org.laidu.learn.advance.bytecode.aspectj; + +import lombok.extern.slf4j.Slf4j; + +/** + * @author tiancai.zang + * on 2018-08-28 19:09. + */ +// TODO: 2018-08-28 19:09 +@Slf4j +public class AopDemo { + + + public static void main(String[] args) { + UserService userService = new UserService(); + System.out.println(userService.fetchUserById(234)); + } + + public static class UserService { + + @LogStartTime("Hello World") + public String fetchUserById(int userId) { + try { + Thread.sleep(1000); + } catch (InterruptedException e) { + e.printStackTrace(); + } + + System.out.println("start time: " + MethodStartAspect.getStartTime()); + + return "nameOf" + userId; + } + } +} \ No newline at end of file diff --git a/language-advance/bytecode/src/main/java/org/laidu/learn/advance/bytecode/aspectj/LogStartTime.java b/language-advance/bytecode/src/main/java/org/laidu/learn/advance/bytecode/aspectj/LogStartTime.java new file mode 100644 index 000000000..0eea32ffa --- /dev/null +++ b/language-advance/bytecode/src/main/java/org/laidu/learn/advance/bytecode/aspectj/LogStartTime.java @@ -0,0 +1,18 @@ +package org.laidu.learn.advance.bytecode.aspectj; + +import java.lang.annotation.ElementType; +import java.lang.annotation.Retention; +import java.lang.annotation.RetentionPolicy; +import java.lang.annotation.Target; + +/** + * LogStartTime + * + * @author tiancai.zang + * on 2018-08-28 19:04. + */ +@Target(ElementType.METHOD) +@Retention(RetentionPolicy.RUNTIME) +public @interface LogStartTime { + String value() default ""; +} \ No newline at end of file diff --git a/language-advance/bytecode/src/main/java/org/laidu/learn/advance/bytecode/aspectj/MethodStartAspect.java b/language-advance/bytecode/src/main/java/org/laidu/learn/advance/bytecode/aspectj/MethodStartAspect.java new file mode 100644 index 000000000..62b14cd9c --- /dev/null +++ b/language-advance/bytecode/src/main/java/org/laidu/learn/advance/bytecode/aspectj/MethodStartAspect.java @@ -0,0 +1,37 @@ +package org.laidu.learn.advance.bytecode.aspectj; + +import org.aspectj.lang.annotation.Aspect; +import org.aspectj.lang.annotation.Before; +import org.aspectj.lang.annotation.Pointcut; + +/** + * MethodStartAspect + * + * @author tiancai.zang + * on 2018-08-28 19:05. + */ +@Aspect +public class MethodStartAspect { + + private static ThreadLocal startTime = new ThreadLocal<>(); + + @Pointcut("@annotation(logStartTime)") + private void logStartTimePointcut(LogStartTime logStartTime) { + + } + + @Before("logStartTimePointcut(logStartTime)") + public void setStartTimeInThreadLocal(LogStartTime logStartTime) { + System.out.println(logStartTime.value()); + startTime.set(System.currentTimeMillis()); + System.out.println("saved method start time in threadLocal"); + } + + public static Long getStartTime() { + return startTime.get(); + } + + public static void clearStartTime() { + startTime.set(null); + } +} \ No newline at end of file diff --git a/language-advance/bytecode/src/main/java/org/laidu/learn/advance/bytecode/aspectj/package-info.java b/language-advance/bytecode/src/main/java/org/laidu/learn/advance/bytecode/aspectj/package-info.java new file mode 100644 index 000000000..a30d9e043 --- /dev/null +++ b/language-advance/bytecode/src/main/java/org/laidu/learn/advance/bytecode/aspectj/package-info.java @@ -0,0 +1,10 @@ +/** + * java aop + *

                    + * Created by laidu + * on 2018-08-28 18:56. + * + * @author laidu + */ +// TODO: 2018-08-28 18:56 java aop +package org.laidu.learn.advance.bytecode.aspectj; \ No newline at end of file diff --git a/language-advance/bytecode/src/main/java/org/laidu/learn/advance/bytecode/package-info.java b/language-advance/bytecode/src/main/java/org/laidu/learn/advance/bytecode/package-info.java new file mode 100644 index 000000000..6ad94b2d6 --- /dev/null +++ b/language-advance/bytecode/src/main/java/org/laidu/learn/advance/bytecode/package-info.java @@ -0,0 +1,10 @@ +/** + * java 字节码 + *

                    + * Created by laidu + * on 2018-08-28 18:56. + * + * @author laidu + */ +// TODO: 2018-08-28 18:56 java 字节码 +package org.laidu.learn.advance.bytecode; \ No newline at end of file diff --git a/language-advance/bytecode/src/site/markdown/index.md b/language-advance/bytecode/src/site/markdown/index.md new file mode 100644 index 000000000..957d68dbb --- /dev/null +++ b/language-advance/bytecode/src/site/markdown/index.md @@ -0,0 +1 @@ +# java 字节码技术 \ No newline at end of file diff --git a/language-advance/pom.xml b/language-advance/pom.xml index 18f7bddd7..87e1e1dfb 100644 --- a/language-advance/pom.xml +++ b/language-advance/pom.xml @@ -20,14 +20,25 @@ script xml gui + bytecode - + 1.9.1 + + org.aspectj + aspectjweaver + ${aspectj.version} + + + org.aspectj + aspectjrt + ${aspectj.version} + From 8506a21c7fdd0126c9bde675a397b2bd1dc92795 Mon Sep 17 00:00:00 2001 From: Tiancai ZANG Date: Tue, 28 Aug 2018 19:34:53 +0800 Subject: [PATCH 159/417] add reference --- language-advance/bytecode/src/site/markdown/index.md | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/language-advance/bytecode/src/site/markdown/index.md b/language-advance/bytecode/src/site/markdown/index.md index 957d68dbb..2a7840f63 100644 --- a/language-advance/bytecode/src/site/markdown/index.md +++ b/language-advance/bytecode/src/site/markdown/index.md @@ -1 +1,5 @@ -# java 字节码技术 \ No newline at end of file +# java 字节码技术 + + +参考: +* [使用插件 aspectj-maven-plugin 织入 AspectJ AOP](https://yanbin.blog/maven-plugin-aspectj-weaving/) \ No newline at end of file From 5b437064ab29c0bcdef28484cdb1864c8222b2ae Mon Sep 17 00:00:00 2001 From: Tiancai ZANG Date: Tue, 28 Aug 2018 19:36:20 +0800 Subject: [PATCH 160/417] add reference --- language-advance/bytecode/pom.xml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/language-advance/bytecode/pom.xml b/language-advance/bytecode/pom.xml index db38ba0de..7ee750efd 100644 --- a/language-advance/bytecode/pom.xml +++ b/language-advance/bytecode/pom.xml @@ -25,9 +25,9 @@ aspectj-maven-plugin 1.11 - ${maven.compiler.source} - ${maven.compiler.source} - ${maven.compiler.target} + ${java.version} + ${java.version} + ${java.version} From c265a013af3f7699761dcb08e26715acfea6d8cb Mon Sep 17 00:00:00 2001 From: Tiancai ZANG Date: Wed, 29 Aug 2018 13:36:37 +0800 Subject: [PATCH 161/417] add reference --- language-advance/bytecode/src/site/markdown/index.md | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/language-advance/bytecode/src/site/markdown/index.md b/language-advance/bytecode/src/site/markdown/index.md index 2a7840f63..705afcd05 100644 --- a/language-advance/bytecode/src/site/markdown/index.md +++ b/language-advance/bytecode/src/site/markdown/index.md @@ -2,4 +2,10 @@ 参考: -* [使用插件 aspectj-maven-plugin 织入 AspectJ AOP](https://yanbin.blog/maven-plugin-aspectj-weaving/) \ No newline at end of file +* [字节码操纵技术探秘](http://www.infoq.com/cn/articles/Living-Matrix-Bytecode-Manipulation) +* [使用插件 aspectj-maven-plugin 织入 AspectJ AOP](https://yanbin.blog/maven-plugin-aspectj-weaving/) +* []() +* []() +* []() +* []() +* []() From 9926bba2418e12777e824566d6350c950f761169 Mon Sep 17 00:00:00 2001 From: Tiancai ZANG Date: Thu, 6 Sep 2018 19:33:27 +0800 Subject: [PATCH 162/417] =?UTF-8?q?=E6=B5=8B=E8=AF=95aop=20=E4=BC=98?= =?UTF-8?q?=E5=85=88=E7=BA=A7?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../resources/docker/cdh/centos/Dockerfile | 23 ++++++++++++ .../advance/bytecode/aspectj/AopDemo.java | 3 ++ .../bytecode/aspectj/LogStartTime0.java | 18 +++++++++ .../bytecode/aspectj/LogStartTime1.java | 18 +++++++++ .../bytecode/aspectj/MethodStartAspect0.java | 37 +++++++++++++++++++ .../bytecode/aspectj/MethodStartAspect1.java | 37 +++++++++++++++++++ src/site/markdown/problem.md | 4 ++ 7 files changed, 140 insertions(+) create mode 100644 dev-ops/src/main/resources/docker/cdh/centos/Dockerfile create mode 100644 language-advance/bytecode/src/main/java/org/laidu/learn/advance/bytecode/aspectj/LogStartTime0.java create mode 100644 language-advance/bytecode/src/main/java/org/laidu/learn/advance/bytecode/aspectj/LogStartTime1.java create mode 100644 language-advance/bytecode/src/main/java/org/laidu/learn/advance/bytecode/aspectj/MethodStartAspect0.java create mode 100644 language-advance/bytecode/src/main/java/org/laidu/learn/advance/bytecode/aspectj/MethodStartAspect1.java diff --git a/dev-ops/src/main/resources/docker/cdh/centos/Dockerfile b/dev-ops/src/main/resources/docker/cdh/centos/Dockerfile new file mode 100644 index 000000000..931df4673 --- /dev/null +++ b/dev-ops/src/main/resources/docker/cdh/centos/Dockerfile @@ -0,0 +1,23 @@ +# This Dockerfile uses the elasticsearch-platinum:6.2.2 image +# VERSION 1 - EDITION 1 +# Author: laidu + +FROM centos:7 + +MAINTAINER laidu laidu823@gmail.com + +USER root + +# time zone +ENV TZ=Asia/Shanghai +RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone + + +# Define working directory. +WORKDIR /data + +# Define commonly used JAVA_HOME variable +ENV JAVA_HOME /usr/lib/jvm/java-8-oracle + +# Define default command. +CMD ["bash"] diff --git a/language-advance/bytecode/src/main/java/org/laidu/learn/advance/bytecode/aspectj/AopDemo.java b/language-advance/bytecode/src/main/java/org/laidu/learn/advance/bytecode/aspectj/AopDemo.java index 68335479a..e917d6ecb 100644 --- a/language-advance/bytecode/src/main/java/org/laidu/learn/advance/bytecode/aspectj/AopDemo.java +++ b/language-advance/bytecode/src/main/java/org/laidu/learn/advance/bytecode/aspectj/AopDemo.java @@ -12,6 +12,7 @@ public class AopDemo { public static void main(String[] args) { + UserService userService = new UserService(); System.out.println(userService.fetchUserById(234)); } @@ -19,6 +20,8 @@ public static void main(String[] args) { public static class UserService { @LogStartTime("Hello World") + @LogStartTime1("Hello 1") + @LogStartTime0("Hello 0") public String fetchUserById(int userId) { try { Thread.sleep(1000); diff --git a/language-advance/bytecode/src/main/java/org/laidu/learn/advance/bytecode/aspectj/LogStartTime0.java b/language-advance/bytecode/src/main/java/org/laidu/learn/advance/bytecode/aspectj/LogStartTime0.java new file mode 100644 index 000000000..0e36ed6fd --- /dev/null +++ b/language-advance/bytecode/src/main/java/org/laidu/learn/advance/bytecode/aspectj/LogStartTime0.java @@ -0,0 +1,18 @@ +package org.laidu.learn.advance.bytecode.aspectj; + +import java.lang.annotation.ElementType; +import java.lang.annotation.Retention; +import java.lang.annotation.RetentionPolicy; +import java.lang.annotation.Target; + +/** + * LogStartTime + * + * @author tiancai.zang + * on 2018-08-28 19:04. + */ +@Target(ElementType.METHOD) +@Retention(RetentionPolicy.RUNTIME) +public @interface LogStartTime0 { + String value() default ""; +} \ No newline at end of file diff --git a/language-advance/bytecode/src/main/java/org/laidu/learn/advance/bytecode/aspectj/LogStartTime1.java b/language-advance/bytecode/src/main/java/org/laidu/learn/advance/bytecode/aspectj/LogStartTime1.java new file mode 100644 index 000000000..67b9b244b --- /dev/null +++ b/language-advance/bytecode/src/main/java/org/laidu/learn/advance/bytecode/aspectj/LogStartTime1.java @@ -0,0 +1,18 @@ +package org.laidu.learn.advance.bytecode.aspectj; + +import java.lang.annotation.ElementType; +import java.lang.annotation.Retention; +import java.lang.annotation.RetentionPolicy; +import java.lang.annotation.Target; + +/** + * LogStartTime + * + * @author tiancai.zang + * on 2018-08-28 19:04. + */ +@Target(ElementType.METHOD) +@Retention(RetentionPolicy.RUNTIME) +public @interface LogStartTime1 { + String value() default ""; +} \ No newline at end of file diff --git a/language-advance/bytecode/src/main/java/org/laidu/learn/advance/bytecode/aspectj/MethodStartAspect0.java b/language-advance/bytecode/src/main/java/org/laidu/learn/advance/bytecode/aspectj/MethodStartAspect0.java new file mode 100644 index 000000000..c9fa58c5c --- /dev/null +++ b/language-advance/bytecode/src/main/java/org/laidu/learn/advance/bytecode/aspectj/MethodStartAspect0.java @@ -0,0 +1,37 @@ +package org.laidu.learn.advance.bytecode.aspectj; + +import org.aspectj.lang.annotation.Aspect; +import org.aspectj.lang.annotation.Before; +import org.aspectj.lang.annotation.Pointcut; + +/** + * MethodStartAspect + * + * @author tiancai.zang + * on 2018-08-28 19:05. + */ +@Aspect +public class MethodStartAspect0 { + + private static ThreadLocal startTime = new ThreadLocal<>(); + + @Pointcut("@annotation(logStartTime0)") + private void logStartTimePointcut(LogStartTime0 logStartTime0) { + + } + + @Before("logStartTimePointcut(logStartTime0)") + public void setStartTimeInThreadLocal(LogStartTime0 logStartTime0) { + System.out.println(logStartTime0.value()); + startTime.set(System.currentTimeMillis()); + System.out.println("saved method start time in threadLocal"); + } + + public static Long getStartTime() { + return startTime.get(); + } + + public static void clearStartTime() { + startTime.set(null); + } +} \ No newline at end of file diff --git a/language-advance/bytecode/src/main/java/org/laidu/learn/advance/bytecode/aspectj/MethodStartAspect1.java b/language-advance/bytecode/src/main/java/org/laidu/learn/advance/bytecode/aspectj/MethodStartAspect1.java new file mode 100644 index 000000000..d25e20425 --- /dev/null +++ b/language-advance/bytecode/src/main/java/org/laidu/learn/advance/bytecode/aspectj/MethodStartAspect1.java @@ -0,0 +1,37 @@ +package org.laidu.learn.advance.bytecode.aspectj; + +import org.aspectj.lang.annotation.Aspect; +import org.aspectj.lang.annotation.Before; +import org.aspectj.lang.annotation.Pointcut; + +/** + * MethodStartAspect + * + * @author tiancai.zang + * on 2018-08-28 19:05. + */ +@Aspect +public class MethodStartAspect1 { + + private static ThreadLocal startTime = new ThreadLocal<>(); + + @Pointcut("@annotation(logStartTime1)") + private void logStartTimePointcut(LogStartTime1 logStartTime1) { + + } + + @Before("logStartTimePointcut(logStartTime1)") + public void setStartTimeInThreadLocal(LogStartTime1 logStartTime1) { + System.out.println(logStartTime1.value()); + startTime.set(System.currentTimeMillis()); + System.out.println("saved method start time in threadLocal"); + } + + public static Long getStartTime() { + return startTime.get(); + } + + public static void clearStartTime() { + startTime.set(null); + } +} \ No newline at end of file diff --git a/src/site/markdown/problem.md b/src/site/markdown/problem.md index 0749837c0..d0f32694f 100644 --- a/src/site/markdown/problem.md +++ b/src/site/markdown/problem.md @@ -3,3 +3,7 @@ 1、排序应该在数据库还是在应用程序中进行? [参考1](http://www.infoq.com/cn/news/2008/09/sort-in-database-applications) + + +2、java 创建对象的方式 + From 391cddfc23b0fb4fd2b654c3277554053f6b5402 Mon Sep 17 00:00:00 2001 From: "xpcoder823@gmail.com" Date: Thu, 6 Sep 2018 21:54:48 +0800 Subject: [PATCH 163/417] sync --- .../java/org/laidu/commom/util/http/curl/CurlParserUtil.java | 2 +- .../java/org/laidu/commom/util/http/curl/CurlParserUtilV2.java | 2 +- .../org/laidu/commom/util/encryption/AESEncryptionUtilTest.java | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/production-component/common-util/src/main/java/org/laidu/commom/util/http/curl/CurlParserUtil.java b/production-component/common-util/src/main/java/org/laidu/commom/util/http/curl/CurlParserUtil.java index 7e06e30b6..fecdbf9f7 100644 --- a/production-component/common-util/src/main/java/org/laidu/commom/util/http/curl/CurlParserUtil.java +++ b/production-component/common-util/src/main/java/org/laidu/commom/util/http/curl/CurlParserUtil.java @@ -1,9 +1,9 @@ package org.laidu.commom.util.http.curl; -import jodd.net.URLDecoder; import jodd.util.StringUtil; import org.laidu.commom.util.regex.RegexUtil; +import java.net.URLDecoder; import java.util.HashMap; import java.util.List; import java.util.Map; diff --git a/production-component/common-util/src/main/java/org/laidu/commom/util/http/curl/CurlParserUtilV2.java b/production-component/common-util/src/main/java/org/laidu/commom/util/http/curl/CurlParserUtilV2.java index 595aaa6ab..066fe1635 100644 --- a/production-component/common-util/src/main/java/org/laidu/commom/util/http/curl/CurlParserUtilV2.java +++ b/production-component/common-util/src/main/java/org/laidu/commom/util/http/curl/CurlParserUtilV2.java @@ -1,7 +1,7 @@ package org.laidu.commom.util.http.curl; -import jodd.util.StringUtil; import jodd.net.URLDecoder; +import jodd.util.StringUtil; import org.laidu.commom.util.regex.RegexUtil; import java.util.HashMap; diff --git a/production-component/common-util/src/test/java/org/laidu/commom/util/encryption/AESEncryptionUtilTest.java b/production-component/common-util/src/test/java/org/laidu/commom/util/encryption/AESEncryptionUtilTest.java index 78eb413dc..99b0ab122 100644 --- a/production-component/common-util/src/test/java/org/laidu/commom/util/encryption/AESEncryptionUtilTest.java +++ b/production-component/common-util/src/test/java/org/laidu/commom/util/encryption/AESEncryptionUtilTest.java @@ -1,7 +1,7 @@ package org.laidu.commom.util.encryption; -import jodd.util.Base64; import jodd.net.URLDecoder; +import jodd.util.Base64; import lombok.extern.slf4j.Slf4j; import org.apache.commons.codec.DecoderException; import org.apache.commons.codec.binary.Hex; From 53cbbdbd1f5adebb6440d90c0af8a2e1da78a7d4 Mon Sep 17 00:00:00 2001 From: "xpcoder823@gmail.com" Date: Sun, 9 Sep 2018 22:27:22 +0800 Subject: [PATCH 164/417] sync --- language-feature/pom.xml | 10 ---------- .../laidu/learn/language/feature/date/DateUsage.java | 6 ------ 2 files changed, 16 deletions(-) diff --git a/language-feature/pom.xml b/language-feature/pom.xml index cfb21b6a6..c2d5b0704 100644 --- a/language-feature/pom.xml +++ b/language-feature/pom.xml @@ -14,14 +14,4 @@ jar language-feature - - - - - - - - - - \ No newline at end of file diff --git a/language-feature/src/main/java/org/laidu/learn/language/feature/date/DateUsage.java b/language-feature/src/main/java/org/laidu/learn/language/feature/date/DateUsage.java index ed90b23e6..64f5218eb 100644 --- a/language-feature/src/main/java/org/laidu/learn/language/feature/date/DateUsage.java +++ b/language-feature/src/main/java/org/laidu/learn/language/feature/date/DateUsage.java @@ -11,12 +11,6 @@ @Slf4j public class DateUsage { - public void text(){ - - - } - - public static void main(String[] args) { // LocalDate usage From 2e81d666550ae79013b59d54e39eb3b4526e03cc Mon Sep 17 00:00:00 2001 From: Tiancai ZANG Date: Mon, 10 Sep 2018 19:48:57 +0800 Subject: [PATCH 165/417] sync --- .../framework/common/rxjava/usage/Usage.java | 17 +++++++++++++++-- 1 file changed, 15 insertions(+), 2 deletions(-) diff --git a/framework/common/rxjava/src/main/java/org/laidu/learn/framework/common/rxjava/usage/Usage.java b/framework/common/rxjava/src/main/java/org/laidu/learn/framework/common/rxjava/usage/Usage.java index ae01c65a1..54cc988c2 100644 --- a/framework/common/rxjava/src/main/java/org/laidu/learn/framework/common/rxjava/usage/Usage.java +++ b/framework/common/rxjava/src/main/java/org/laidu/learn/framework/common/rxjava/usage/Usage.java @@ -5,6 +5,7 @@ import io.reactivex.schedulers.Schedulers; import lombok.extern.slf4j.Slf4j; +import java.util.Arrays; import java.util.concurrent.TimeUnit; /** @@ -20,8 +21,21 @@ public class Usage { public static void main(String[] args) throws InterruptedException { -// + + Observable.rangeLong(0L,10000L) +// .subscribeOn(Schedulers.computation()) + .filter(i -> i%50 == 0) + .map(i -> { + Thread.sleep(100); + return Arrays.asList("aaa"+i,"bbb"+i); + + }) + .forEach(list -> list.forEach(System.out::println)); + + } + + private static void intervalUsage() { Disposable subscribe = Observable.interval(1, TimeUnit.MICROSECONDS) .subscribeOn(Schedulers.newThread()) // .observeOn(Schedulers.computation()) @@ -42,7 +56,6 @@ public static void main(String[] args) throws InterruptedException { e.printStackTrace(); } } - } } \ No newline at end of file From 31ef23b4d0ef42f22aeed26836ee9d977322aa63 Mon Sep 17 00:00:00 2001 From: Tiancai ZANG Date: Tue, 11 Sep 2018 18:32:24 +0800 Subject: [PATCH 166/417] sync --- .../framework/common/rxjava/usage/Usage.java | 14 +++++------ .../language/feature/exception/Demo.java | 25 +++++++++++++++++++ 2 files changed, 32 insertions(+), 7 deletions(-) create mode 100644 language-feature/src/main/java/org/laidu/learn/language/feature/exception/Demo.java diff --git a/framework/common/rxjava/src/main/java/org/laidu/learn/framework/common/rxjava/usage/Usage.java b/framework/common/rxjava/src/main/java/org/laidu/learn/framework/common/rxjava/usage/Usage.java index 54cc988c2..f8836cf3f 100644 --- a/framework/common/rxjava/src/main/java/org/laidu/learn/framework/common/rxjava/usage/Usage.java +++ b/framework/common/rxjava/src/main/java/org/laidu/learn/framework/common/rxjava/usage/Usage.java @@ -23,15 +23,15 @@ public class Usage { public static void main(String[] args) throws InterruptedException { - Observable.rangeLong(0L,10000L) + Observable.rangeLong(0L,1000L) // .subscribeOn(Schedulers.computation()) - .filter(i -> i%50 == 0) - .map(i -> { - Thread.sleep(100); - return Arrays.asList("aaa"+i,"bbb"+i); + .filter(i -> i % 50 == 0) + .map(i -> i / 50) + .map(i -> Arrays.asList("aaa"+i,"bbb"+i)) + .flatMap(strings -> null) + .subscribe(); - }) - .forEach(list -> list.forEach(System.out::println)); + Thread.sleep(3000); } diff --git a/language-feature/src/main/java/org/laidu/learn/language/feature/exception/Demo.java b/language-feature/src/main/java/org/laidu/learn/language/feature/exception/Demo.java new file mode 100644 index 000000000..dbcb54256 --- /dev/null +++ b/language-feature/src/main/java/org/laidu/learn/language/feature/exception/Demo.java @@ -0,0 +1,25 @@ +package org.laidu.learn.language.feature.exception; + +import lombok.extern.slf4j.Slf4j; + +import java.util.List; + +/** + * demo + * + * @author tiancai.zang + * on 2018-09-11 10:28. + */ +// TODO: 2018-09-11 10:28 demo +@Slf4j +public class Demo { + + public static void main(String[] args) { + + List list = null; + + list.size(); + + } + +} \ No newline at end of file From 2a73fb11f052eaea0aeb2eda215b77ae1833ec90 Mon Sep 17 00:00:00 2001 From: Tiancai ZANG Date: Thu, 13 Sep 2018 18:42:19 +0800 Subject: [PATCH 167/417] add spring spel module --- framework/spring/pom.xml | 9 +++ framework/spring/spring-spel/pom.xml | 21 +++++++ .../laidu/learn/spring/spel/demo/Demo.java | 62 +++++++++++++++++++ .../laidu/learn/spring/spel/package-info.java | 10 +++ 4 files changed, 102 insertions(+) create mode 100644 framework/spring/spring-spel/pom.xml create mode 100644 framework/spring/spring-spel/src/main/java/org/laidu/learn/spring/spel/demo/Demo.java create mode 100644 framework/spring/spring-spel/src/main/java/org/laidu/learn/spring/spel/package-info.java diff --git a/framework/spring/pom.xml b/framework/spring/pom.xml index e7054f422..83ea17008 100644 --- a/framework/spring/pom.xml +++ b/framework/spring/pom.xml @@ -22,6 +22,7 @@ spring-web spring-transaction spring-aop + spring-spel @@ -45,6 +46,14 @@ + + + org.springframework + spring-expression + ${spring.version} + + + org.springframework.boot spring-boot-dependencies diff --git a/framework/spring/spring-spel/pom.xml b/framework/spring/spring-spel/pom.xml new file mode 100644 index 000000000..8611d8e71 --- /dev/null +++ b/framework/spring/spring-spel/pom.xml @@ -0,0 +1,21 @@ + + + + spring + org.laidu.learn + 1.0-SNAPSHOT + + 4.0.0 + + spring-spel + + + + org.springframework + spring-expression + + + + \ No newline at end of file diff --git a/framework/spring/spring-spel/src/main/java/org/laidu/learn/spring/spel/demo/Demo.java b/framework/spring/spring-spel/src/main/java/org/laidu/learn/spring/spel/demo/Demo.java new file mode 100644 index 000000000..12300bad0 --- /dev/null +++ b/framework/spring/spring-spel/src/main/java/org/laidu/learn/spring/spel/demo/Demo.java @@ -0,0 +1,62 @@ +package org.laidu.learn.spring.spel.demo; + +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.extern.slf4j.Slf4j; +import org.springframework.expression.EvaluationContext; +import org.springframework.expression.Expression; +import org.springframework.expression.ExpressionParser; +import org.springframework.expression.ParserContext; +import org.springframework.expression.spel.standard.SpelExpressionParser; +import org.springframework.expression.spel.support.StandardEvaluationContext; + +/** + * spel DEMO + * + * @author tiancai.zang + * on 2018-09-13 14:25. + */ +@Slf4j +public class Demo { + + public static final String DEMO = "DEMO"; + + public static void main(String[] args) { + + String spelString = "SELECT COUNT(*) FROM fact_ca_order WHERE deliver_status=2 AND cancel_status = 0 AND flag = #{flag} AND flag1 = '#{flagName}';"; +// String spelString = "${sql:SELECT COUNT(*) FROM fact_ca_order WHERE deliver_status=2 AND cancel_status = 0}"; + + ExpressionParser parser = new SpelExpressionParser(); + EvaluationContext context = new StandardEvaluationContext(); + + + Expression expression = parser.parseExpression(spelString,new TemplateParserContext()); + + System.out.println(expression.getValue(new Flag(123,"flagName"))); + } + + @AllArgsConstructor + @Data + public static class Flag{ + private int flag; + private String flagName; + } + + public static class TemplateParserContext implements ParserContext { + + @Override + public boolean isTemplate() { + return true; + } + + @Override + public String getExpressionPrefix() { + return "#{"; + } + + @Override + public String getExpressionSuffix() { + return "}"; + } + } +} \ No newline at end of file diff --git a/framework/spring/spring-spel/src/main/java/org/laidu/learn/spring/spel/package-info.java b/framework/spring/spring-spel/src/main/java/org/laidu/learn/spring/spel/package-info.java new file mode 100644 index 000000000..0466949b5 --- /dev/null +++ b/framework/spring/spring-spel/src/main/java/org/laidu/learn/spring/spel/package-info.java @@ -0,0 +1,10 @@ +/** + * spring spel 表达式 + *

                    + * Created by laidu + * on 2018-09-13 14:25. + * + * @author laidu + */ +// TODO: 2018-09-13 14:25 spring spel 表达式 +package org.laidu.learn.spring.spel; \ No newline at end of file From db3fa47e9553325fa2743338c7b0df3fbb660fb1 Mon Sep 17 00:00:00 2001 From: "xpcoder823@gmail.com" Date: Tue, 25 Sep 2018 22:40:47 +0800 Subject: [PATCH 168/417] sync --- .../org/laidu/learn/framework/common/rxjava/usage/Usage.java | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/framework/common/rxjava/src/main/java/org/laidu/learn/framework/common/rxjava/usage/Usage.java b/framework/common/rxjava/src/main/java/org/laidu/learn/framework/common/rxjava/usage/Usage.java index f8836cf3f..7527e9fdc 100644 --- a/framework/common/rxjava/src/main/java/org/laidu/learn/framework/common/rxjava/usage/Usage.java +++ b/framework/common/rxjava/src/main/java/org/laidu/learn/framework/common/rxjava/usage/Usage.java @@ -24,11 +24,11 @@ public static void main(String[] args) throws InterruptedException { Observable.rangeLong(0L,1000L) -// .subscribeOn(Schedulers.computation()) + .subscribeOn(Schedulers.computation()) .filter(i -> i % 50 == 0) .map(i -> i / 50) .map(i -> Arrays.asList("aaa"+i,"bbb"+i)) - .flatMap(strings -> null) + .doOnNext(System.out::println) .subscribe(); Thread.sleep(3000); @@ -38,7 +38,6 @@ public static void main(String[] args) throws InterruptedException { private static void intervalUsage() { Disposable subscribe = Observable.interval(1, TimeUnit.MICROSECONDS) .subscribeOn(Schedulers.newThread()) -// .observeOn(Schedulers.computation()) .doOnNext(System.out::println) .publish() .subscribe(s -> { From 59b4bebc01bca1c4f513bc9f5cec366f5c93b5a8 Mon Sep 17 00:00:00 2001 From: "xpcoder823@gmail.com" Date: Tue, 25 Sep 2018 23:23:37 +0800 Subject: [PATCH 169/417] sync --- framework/gui-lib/jfoenix/pom.xml | 21 ++++++++++++ .../laidu/learn/gui/jfoenix/JfoenixApp.java | 20 +++++++++++ framework/gui-lib/pom.xml | 33 +++++++++++++++++++ framework/pom.xml | 1 + 4 files changed, 75 insertions(+) create mode 100644 framework/gui-lib/jfoenix/pom.xml create mode 100644 framework/gui-lib/jfoenix/src/main/java/org/laidu/learn/gui/jfoenix/JfoenixApp.java create mode 100644 framework/gui-lib/pom.xml diff --git a/framework/gui-lib/jfoenix/pom.xml b/framework/gui-lib/jfoenix/pom.xml new file mode 100644 index 000000000..b6e4fc359 --- /dev/null +++ b/framework/gui-lib/jfoenix/pom.xml @@ -0,0 +1,21 @@ + + + + gui-lib + org.laidu.learn + 1.0-SNAPSHOT + + 4.0.0 + + jfoenix + + + + + com.jfoenix + jfoenix + + + \ No newline at end of file diff --git a/framework/gui-lib/jfoenix/src/main/java/org/laidu/learn/gui/jfoenix/JfoenixApp.java b/framework/gui-lib/jfoenix/src/main/java/org/laidu/learn/gui/jfoenix/JfoenixApp.java new file mode 100644 index 000000000..5a3eba2da --- /dev/null +++ b/framework/gui-lib/jfoenix/src/main/java/org/laidu/learn/gui/jfoenix/JfoenixApp.java @@ -0,0 +1,20 @@ +package org.laidu.learn.gui.jfoenix; + +import javafx.embed.swing.JFXPanel; +import lombok.extern.slf4j.Slf4j; + +/** + * jfoenix gui app + *

                    + * Created by tiancai.zang + * on 2018-09-25 23:02. + */ +@Slf4j +public class JfoenixApp { + + public static void main(String[] args) { + + JFXPanel jfxPanel = new JFXPanel(); + + } +} \ No newline at end of file diff --git a/framework/gui-lib/pom.xml b/framework/gui-lib/pom.xml new file mode 100644 index 000000000..4e0c1401e --- /dev/null +++ b/framework/gui-lib/pom.xml @@ -0,0 +1,33 @@ + + + + framework + org.laidu.learn + 1.0-SNAPSHOT + + 4.0.0 + + gui-lib + pom + + jfoenix + + + + 9.0.4 + + + + + + + com.jfoenix + jfoenix + ${jfoenix.version} + + + + + \ No newline at end of file diff --git a/framework/pom.xml b/framework/pom.xml index d27d167cf..153c4fc9a 100644 --- a/framework/pom.xml +++ b/framework/pom.xml @@ -25,6 +25,7 @@ compress task-scheduler thirdparty + gui-lib From e53075df3bc57ad5e985b9b7fd1fc32151954726 Mon Sep 17 00:00:00 2001 From: Tiancai ZANG Date: Wed, 26 Sep 2018 19:36:43 +0800 Subject: [PATCH 170/417] sync --- .../shell/openvpn/openvpn-install.sh | 4 +- .../admin/conf/NotifierConfiguration.java | 2 +- framework/spring/spring-data/pom.xml | 24 +- .../spring/spring-data/spring-mybatis/pom.xml | 31 + ...Config.java => DruidWebMonitorConfig.java} | 3 +- .../controller/UserInfoController.java | 2 +- .../learn/mybatis/mapper/AppUserMapper.java | 63 +- .../mybatis/mapper/AppUserSqlProvider.java | 64 + .../laidu/learn/mybatis/model/AppUser.java | 241 +- .../learn/mybatis/model/AppUserExample.java | 2294 +++++++++++++++++ .../src/main/resources/application.properties | 7 + .../{ => config}/generatorConfig.xml | 43 +- .../resources/{ => config}/logback-spring.xml | 0 .../config/mappers/AppUserMapper.xml | 594 +++++ .../spring-mybatis/src/site/markdown/index.md | 5 + .../mybatis/mapper/AppUserMapperTest.java | 2 - language-feature/src/site/markdown/index.md | 11 + 17 files changed, 3111 insertions(+), 279 deletions(-) rename framework/spring/spring-data/spring-mybatis/src/main/java/org/laidu/learn/mybatis/config/{DruidConfig.java => DruidWebMonitorConfig.java} (97%) create mode 100644 framework/spring/spring-data/spring-mybatis/src/main/java/org/laidu/learn/mybatis/model/AppUserExample.java rename framework/spring/spring-data/spring-mybatis/src/main/resources/{ => config}/generatorConfig.xml (64%) rename framework/spring/spring-data/spring-mybatis/src/main/resources/{ => config}/logback-spring.xml (100%) create mode 100644 framework/spring/spring-data/spring-mybatis/src/main/resources/config/mappers/AppUserMapper.xml create mode 100644 framework/spring/spring-data/spring-mybatis/src/site/markdown/index.md diff --git a/dev-ops/src/main/resources/shell/openvpn/openvpn-install.sh b/dev-ops/src/main/resources/shell/openvpn/openvpn-install.sh index 3025cbd10..2fe107e1c 100644 --- a/dev-ops/src/main/resources/shell/openvpn/openvpn-install.sh +++ b/dev-ops/src/main/resources/shell/openvpn/openvpn-install.sh @@ -256,7 +256,7 @@ else chown nobody:$GROUPNAME /etc/openvpn/crl.pem # Generate key for tls-auth openvpn --genkey --secret /etc/openvpn/ta.key - # Generate server.conf + # Generate server.config echo "port $PORT proto $PROTOCOL dev tun @@ -275,7 +275,7 @@ ifconfig-pool-persist ipp.txt" > /etc/openvpn/server.conf # DNS case $DNS in 1) - # Obtain the resolvers from resolv.conf and use them for OpenVPN + # Obtain the resolvers from resolv.config and use them for OpenVPN grep -v '#' /etc/resolv.conf | grep 'nameserver' | grep -E -o '[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}' | while read line; do echo "push \"dhcp-option DNS $line\"" >> /etc/openvpn/server.conf done diff --git a/framework/spring/spring-boot/spring-boot-admin/src/main/java/org/laidu/learn/spring/boot/admin/conf/NotifierConfiguration.java b/framework/spring/spring-boot/spring-boot-admin/src/main/java/org/laidu/learn/spring/boot/admin/conf/NotifierConfiguration.java index a3339aaa8..65aa322d1 100644 --- a/framework/spring/spring-boot/spring-boot-admin/src/main/java/org/laidu/learn/spring/boot/admin/conf/NotifierConfiguration.java +++ b/framework/spring/spring-boot/spring-boot-admin/src/main/java/org/laidu/learn/spring/boot/admin/conf/NotifierConfiguration.java @@ -17,7 +17,7 @@ import java.time.Duration; /** - * notify conf + * notify config * * @author tiancai.zang * on 2018-08-24 17:53. diff --git a/framework/spring/spring-data/pom.xml b/framework/spring/spring-data/pom.xml index cc98b70d9..691c9136c 100644 --- a/framework/spring/spring-data/pom.xml +++ b/framework/spring/spring-data/pom.xml @@ -75,29 +75,7 @@ - - - org.mybatis.generator - mybatis-generator-maven-plugin - 1.3.5 - - - Generate MyBatis Artifacts - - - - generate-sources - - - - - mysql - mysql-connector-java - ${mysql-connect.version} - - - - + diff --git a/framework/spring/spring-data/spring-mybatis/pom.xml b/framework/spring/spring-data/spring-mybatis/pom.xml index 350d3a09c..a92fe9365 100644 --- a/framework/spring/spring-data/spring-mybatis/pom.xml +++ b/framework/spring/spring-data/spring-mybatis/pom.xml @@ -53,6 +53,37 @@ org.mybatis.generator mybatis-generator-maven-plugin + 1.3.5 + + src/main/resources/config/generatorConfig.xml + true + + + + Generate MyBatis Artifacts + + generate + + generate-sources + + + + + mysql + mysql-connector-java + ${mysql-connect.version} + + + com.softwareloop + mybatis-generator-lombok-plugin + 1.0 + + + com.itfsw + mybatis-generator-plugin + 1.2.10 + + diff --git a/framework/spring/spring-data/spring-mybatis/src/main/java/org/laidu/learn/mybatis/config/DruidConfig.java b/framework/spring/spring-data/spring-mybatis/src/main/java/org/laidu/learn/mybatis/config/DruidWebMonitorConfig.java similarity index 97% rename from framework/spring/spring-data/spring-mybatis/src/main/java/org/laidu/learn/mybatis/config/DruidConfig.java rename to framework/spring/spring-data/spring-mybatis/src/main/java/org/laidu/learn/mybatis/config/DruidWebMonitorConfig.java index f5f11cfb7..276221fbe 100644 --- a/framework/spring/spring-data/spring-mybatis/src/main/java/org/laidu/learn/mybatis/config/DruidConfig.java +++ b/framework/spring/spring-data/spring-mybatis/src/main/java/org/laidu/learn/mybatis/config/DruidWebMonitorConfig.java @@ -16,10 +16,11 @@ *

                    * Created by tiancai.zang * on 2018-04-22 16:22. + * @author laidu */ @Slf4j @Configuration -public class DruidConfig { +public class DruidWebMonitorConfig { @Bean public ServletRegistrationBean druidServlet() { diff --git a/framework/spring/spring-data/spring-mybatis/src/main/java/org/laidu/learn/mybatis/controller/UserInfoController.java b/framework/spring/spring-data/spring-mybatis/src/main/java/org/laidu/learn/mybatis/controller/UserInfoController.java index 7512ea538..4b0eb9f1c 100644 --- a/framework/spring/spring-data/spring-mybatis/src/main/java/org/laidu/learn/mybatis/controller/UserInfoController.java +++ b/framework/spring/spring-data/spring-mybatis/src/main/java/org/laidu/learn/mybatis/controller/UserInfoController.java @@ -42,7 +42,7 @@ public AppUser queryById(@PathVariable("id") Long id){ @GetMapping("/query/{index}/{size}") public List queryById(@PathVariable("index") int index, @PathVariable("size") int size){ - return userMapper.selectAppUserList(index,size); + return null; } } \ No newline at end of file diff --git a/framework/spring/spring-data/spring-mybatis/src/main/java/org/laidu/learn/mybatis/mapper/AppUserMapper.java b/framework/spring/spring-data/spring-mybatis/src/main/java/org/laidu/learn/mybatis/mapper/AppUserMapper.java index 73a30d352..db78c6dde 100644 --- a/framework/spring/spring-data/spring-mybatis/src/main/java/org/laidu/learn/mybatis/mapper/AppUserMapper.java +++ b/framework/spring/spring-data/spring-mybatis/src/main/java/org/laidu/learn/mybatis/mapper/AppUserMapper.java @@ -1,11 +1,18 @@ package org.laidu.learn.mybatis.mapper; -import org.apache.ibatis.annotations.*; +import org.apache.ibatis.annotations.Delete; +import org.apache.ibatis.annotations.Insert; +import org.apache.ibatis.annotations.InsertProvider; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Result; +import org.apache.ibatis.annotations.Results; +import org.apache.ibatis.annotations.Select; +import org.apache.ibatis.annotations.Update; +import org.apache.ibatis.annotations.UpdateProvider; import org.apache.ibatis.type.JdbcType; import org.laidu.learn.mybatis.model.AppUser; -import java.util.List; - +@Mapper public interface AppUserMapper { @Delete({ "delete from ca_app_user", @@ -25,6 +32,10 @@ public interface AppUserMapper { "email, address, ", "user_status, create_time, ", "update_time, remark, ", + "black_status, audit_time, ", + "cash_black_status, cash_quota, ", + "frozen_cash_quota, credit_quota, ", + "frozen_credit_quota, audit_status, ", "id_card_police)", "values (#{id,jdbcType=BIGINT}, #{openId,jdbcType=VARCHAR}, ", "#{registerChannel,jdbcType=BIGINT}, #{username,jdbcType=VARCHAR}, ", @@ -37,6 +48,10 @@ public interface AppUserMapper { "#{email,jdbcType=VARCHAR}, #{address,jdbcType=VARCHAR}, ", "#{userStatus,jdbcType=INTEGER}, #{createTime,jdbcType=TIMESTAMP}, ", "#{updateTime,jdbcType=TIMESTAMP}, #{remark,jdbcType=VARCHAR}, ", + "#{blackStatus,jdbcType=INTEGER}, #{auditTime,jdbcType=TIMESTAMP}, ", + "#{cashBlackStatus,jdbcType=INTEGER}, #{cashQuota,jdbcType=DECIMAL}, ", + "#{frozenCashQuota,jdbcType=DECIMAL}, #{creditQuota,jdbcType=DECIMAL}, ", + "#{frozenCreditQuota,jdbcType=DECIMAL}, #{auditStatus,jdbcType=INTEGER}, ", "#{idCardPolice,jdbcType=LONGVARCHAR})" }) int insert(AppUser record); @@ -49,7 +64,9 @@ public interface AppUserMapper { "id, open_id, register_channel, username, id_card, name, id_card_detail_address, ", "is_verify_id_card, id_card_coverup, id_card_coverdown, id_card_hold, is_other_picture_auth, ", "is_bankcard_auth, signature_pic, is_additional_auth, is_emergency_auth, phone, ", - "email, address, user_status, create_time, update_time, remark, id_card_police", + "email, address, user_status, create_time, update_time, remark, black_status, ", + "audit_time, cash_black_status, cash_quota, frozen_cash_quota, credit_quota, ", + "frozen_credit_quota, audit_status, id_card_police", "from ca_app_user", "where id = #{id,jdbcType=BIGINT}" }) @@ -77,6 +94,14 @@ public interface AppUserMapper { @Result(column="create_time", property="createTime", jdbcType=JdbcType.TIMESTAMP), @Result(column="update_time", property="updateTime", jdbcType=JdbcType.TIMESTAMP), @Result(column="remark", property="remark", jdbcType=JdbcType.VARCHAR), + @Result(column="black_status", property="blackStatus", jdbcType=JdbcType.INTEGER), + @Result(column="audit_time", property="auditTime", jdbcType=JdbcType.TIMESTAMP), + @Result(column="cash_black_status", property="cashBlackStatus", jdbcType=JdbcType.INTEGER), + @Result(column="cash_quota", property="cashQuota", jdbcType=JdbcType.DECIMAL), + @Result(column="frozen_cash_quota", property="frozenCashQuota", jdbcType=JdbcType.DECIMAL), + @Result(column="credit_quota", property="creditQuota", jdbcType=JdbcType.DECIMAL), + @Result(column="frozen_credit_quota", property="frozenCreditQuota", jdbcType=JdbcType.DECIMAL), + @Result(column="audit_status", property="auditStatus", jdbcType=JdbcType.INTEGER), @Result(column="id_card_police", property="idCardPolice", jdbcType=JdbcType.LONGVARCHAR) }) AppUser selectByPrimaryKey(Long id); @@ -108,6 +133,14 @@ public interface AppUserMapper { "create_time = #{createTime,jdbcType=TIMESTAMP},", "update_time = #{updateTime,jdbcType=TIMESTAMP},", "remark = #{remark,jdbcType=VARCHAR},", + "black_status = #{blackStatus,jdbcType=INTEGER},", + "audit_time = #{auditTime,jdbcType=TIMESTAMP},", + "cash_black_status = #{cashBlackStatus,jdbcType=INTEGER},", + "cash_quota = #{cashQuota,jdbcType=DECIMAL},", + "frozen_cash_quota = #{frozenCashQuota,jdbcType=DECIMAL},", + "credit_quota = #{creditQuota,jdbcType=DECIMAL},", + "frozen_credit_quota = #{frozenCreditQuota,jdbcType=DECIMAL},", + "audit_status = #{auditStatus,jdbcType=INTEGER},", "id_card_police = #{idCardPolice,jdbcType=LONGVARCHAR}", "where id = #{id,jdbcType=BIGINT}" }) @@ -136,20 +169,16 @@ public interface AppUserMapper { "user_status = #{userStatus,jdbcType=INTEGER},", "create_time = #{createTime,jdbcType=TIMESTAMP},", "update_time = #{updateTime,jdbcType=TIMESTAMP},", - "remark = #{remark,jdbcType=VARCHAR}", + "remark = #{remark,jdbcType=VARCHAR},", + "black_status = #{blackStatus,jdbcType=INTEGER},", + "audit_time = #{auditTime,jdbcType=TIMESTAMP},", + "cash_black_status = #{cashBlackStatus,jdbcType=INTEGER},", + "cash_quota = #{cashQuota,jdbcType=DECIMAL},", + "frozen_cash_quota = #{frozenCashQuota,jdbcType=DECIMAL},", + "credit_quota = #{creditQuota,jdbcType=DECIMAL},", + "frozen_credit_quota = #{frozenCreditQuota,jdbcType=DECIMAL},", + "audit_status = #{auditStatus,jdbcType=INTEGER}", "where id = #{id,jdbcType=BIGINT}" }) int updateByPrimaryKey(AppUser record); - - - @Select({ - "select", - "id, open_id, register_channel, username, id_card, name, id_card_detail_address, ", - "is_verify_id_card, id_card_coverup, id_card_coverdown, id_card_hold, is_other_picture_auth, ", - "is_bankcard_auth, signature_pic, is_additional_auth, is_emergency_auth, phone, ", - "email, address, user_status, create_time, update_time, remark, id_card_police", - "from ca_app_user", - "where 1=1 " - }) - List selectAppUserList(@Param("pageNum") int pageNum, @Param("pageSize") int pageSize); } \ No newline at end of file diff --git a/framework/spring/spring-data/spring-mybatis/src/main/java/org/laidu/learn/mybatis/mapper/AppUserSqlProvider.java b/framework/spring/spring-data/spring-mybatis/src/main/java/org/laidu/learn/mybatis/mapper/AppUserSqlProvider.java index 00e00eb58..bb9c215a3 100644 --- a/framework/spring/spring-data/spring-mybatis/src/main/java/org/laidu/learn/mybatis/mapper/AppUserSqlProvider.java +++ b/framework/spring/spring-data/spring-mybatis/src/main/java/org/laidu/learn/mybatis/mapper/AppUserSqlProvider.java @@ -101,6 +101,38 @@ public String insertSelective(AppUser record) { sql.VALUES("remark", "#{remark,jdbcType=VARCHAR}"); } + if (record.getBlackStatus() != null) { + sql.VALUES("black_status", "#{blackStatus,jdbcType=INTEGER}"); + } + + if (record.getAuditTime() != null) { + sql.VALUES("audit_time", "#{auditTime,jdbcType=TIMESTAMP}"); + } + + if (record.getCashBlackStatus() != null) { + sql.VALUES("cash_black_status", "#{cashBlackStatus,jdbcType=INTEGER}"); + } + + if (record.getCashQuota() != null) { + sql.VALUES("cash_quota", "#{cashQuota,jdbcType=DECIMAL}"); + } + + if (record.getFrozenCashQuota() != null) { + sql.VALUES("frozen_cash_quota", "#{frozenCashQuota,jdbcType=DECIMAL}"); + } + + if (record.getCreditQuota() != null) { + sql.VALUES("credit_quota", "#{creditQuota,jdbcType=DECIMAL}"); + } + + if (record.getFrozenCreditQuota() != null) { + sql.VALUES("frozen_credit_quota", "#{frozenCreditQuota,jdbcType=DECIMAL}"); + } + + if (record.getAuditStatus() != null) { + sql.VALUES("audit_status", "#{auditStatus,jdbcType=INTEGER}"); + } + if (record.getIdCardPolice() != null) { sql.VALUES("id_card_police", "#{idCardPolice,jdbcType=LONGVARCHAR}"); } @@ -200,6 +232,38 @@ public String updateByPrimaryKeySelective(AppUser record) { sql.SET("remark = #{remark,jdbcType=VARCHAR}"); } + if (record.getBlackStatus() != null) { + sql.SET("black_status = #{blackStatus,jdbcType=INTEGER}"); + } + + if (record.getAuditTime() != null) { + sql.SET("audit_time = #{auditTime,jdbcType=TIMESTAMP}"); + } + + if (record.getCashBlackStatus() != null) { + sql.SET("cash_black_status = #{cashBlackStatus,jdbcType=INTEGER}"); + } + + if (record.getCashQuota() != null) { + sql.SET("cash_quota = #{cashQuota,jdbcType=DECIMAL}"); + } + + if (record.getFrozenCashQuota() != null) { + sql.SET("frozen_cash_quota = #{frozenCashQuota,jdbcType=DECIMAL}"); + } + + if (record.getCreditQuota() != null) { + sql.SET("credit_quota = #{creditQuota,jdbcType=DECIMAL}"); + } + + if (record.getFrozenCreditQuota() != null) { + sql.SET("frozen_credit_quota = #{frozenCreditQuota,jdbcType=DECIMAL}"); + } + + if (record.getAuditStatus() != null) { + sql.SET("audit_status = #{auditStatus,jdbcType=INTEGER}"); + } + if (record.getIdCardPolice() != null) { sql.SET("id_card_police = #{idCardPolice,jdbcType=LONGVARCHAR}"); } diff --git a/framework/spring/spring-data/spring-mybatis/src/main/java/org/laidu/learn/mybatis/model/AppUser.java b/framework/spring/spring-data/spring-mybatis/src/main/java/org/laidu/learn/mybatis/model/AppUser.java index c2c6874ad..5aee7ebbc 100644 --- a/framework/spring/spring-data/spring-mybatis/src/main/java/org/laidu/learn/mybatis/model/AppUser.java +++ b/framework/spring/spring-data/spring-mybatis/src/main/java/org/laidu/learn/mybatis/model/AppUser.java @@ -1,16 +1,14 @@ package org.laidu.learn.mybatis.model; import java.io.Serializable; +import java.math.BigDecimal; import java.util.Date; +import lombok.Builder; +import lombok.Data; -/** - * @author laidu - */ +@Data +@Builder public class AppUser implements Serializable { - - - private static final long serialVersionUID = 1L; - private Long id; private String openId; @@ -57,232 +55,23 @@ public class AppUser implements Serializable { private String remark; - private String idCardPolice; - - public Long getId() { - return id; - } - - public void setId(Long id) { - this.id = id; - } - - public String getOpenId() { - return openId; - } - - public void setOpenId(String openId) { - this.openId = openId == null ? null : openId.trim(); - } - - public Long getRegisterChannel() { - return registerChannel; - } - - public void setRegisterChannel(Long registerChannel) { - this.registerChannel = registerChannel; - } - - public String getUsername() { - return username; - } + private Integer blackStatus; - public void setUsername(String username) { - this.username = username == null ? null : username.trim(); - } + private Date auditTime; - public String getIdCard() { - return idCard; - } + private Integer cashBlackStatus; - public void setIdCard(String idCard) { - this.idCard = idCard == null ? null : idCard.trim(); - } + private BigDecimal cashQuota; - public String getName() { - return name; - } + private BigDecimal frozenCashQuota; - public void setName(String name) { - this.name = name == null ? null : name.trim(); - } + private BigDecimal creditQuota; - public String getIdCardDetailAddress() { - return idCardDetailAddress; - } + private BigDecimal frozenCreditQuota; - public void setIdCardDetailAddress(String idCardDetailAddress) { - this.idCardDetailAddress = idCardDetailAddress == null ? null : idCardDetailAddress.trim(); - } + private Integer auditStatus; - public Boolean getIsVerifyIdCard() { - return isVerifyIdCard; - } - - public void setIsVerifyIdCard(Boolean isVerifyIdCard) { - this.isVerifyIdCard = isVerifyIdCard; - } - - public String getIdCardCoverup() { - return idCardCoverup; - } - - public void setIdCardCoverup(String idCardCoverup) { - this.idCardCoverup = idCardCoverup == null ? null : idCardCoverup.trim(); - } - - public String getIdCardCoverdown() { - return idCardCoverdown; - } - - public void setIdCardCoverdown(String idCardCoverdown) { - this.idCardCoverdown = idCardCoverdown == null ? null : idCardCoverdown.trim(); - } - - public String getIdCardHold() { - return idCardHold; - } - - public void setIdCardHold(String idCardHold) { - this.idCardHold = idCardHold == null ? null : idCardHold.trim(); - } - - public Boolean getIsOtherPictureAuth() { - return isOtherPictureAuth; - } + private String idCardPolice; - public void setIsOtherPictureAuth(Boolean isOtherPictureAuth) { - this.isOtherPictureAuth = isOtherPictureAuth; - } - - public Boolean getIsBankcardAuth() { - return isBankcardAuth; - } - - public void setIsBankcardAuth(Boolean isBankcardAuth) { - this.isBankcardAuth = isBankcardAuth; - } - - public String getSignaturePic() { - return signaturePic; - } - - public void setSignaturePic(String signaturePic) { - this.signaturePic = signaturePic == null ? null : signaturePic.trim(); - } - - public Boolean getIsAdditionalAuth() { - return isAdditionalAuth; - } - - public void setIsAdditionalAuth(Boolean isAdditionalAuth) { - this.isAdditionalAuth = isAdditionalAuth; - } - - public Boolean getIsEmergencyAuth() { - return isEmergencyAuth; - } - - public void setIsEmergencyAuth(Boolean isEmergencyAuth) { - this.isEmergencyAuth = isEmergencyAuth; - } - - public String getPhone() { - return phone; - } - - public void setPhone(String phone) { - this.phone = phone == null ? null : phone.trim(); - } - - public String getEmail() { - return email; - } - - public void setEmail(String email) { - this.email = email == null ? null : email.trim(); - } - - public String getAddress() { - return address; - } - - public void setAddress(String address) { - this.address = address == null ? null : address.trim(); - } - - public Integer getUserStatus() { - return userStatus; - } - - public void setUserStatus(Integer userStatus) { - this.userStatus = userStatus; - } - - public Date getCreateTime() { - return createTime; - } - - public void setCreateTime(Date createTime) { - this.createTime = createTime; - } - - public Date getUpdateTime() { - return updateTime; - } - - public void setUpdateTime(Date updateTime) { - this.updateTime = updateTime; - } - - public String getRemark() { - return remark; - } - - public void setRemark(String remark) { - this.remark = remark == null ? null : remark.trim(); - } - - public String getIdCardPolice() { - return idCardPolice; - } - - public void setIdCardPolice(String idCardPolice) { - this.idCardPolice = idCardPolice == null ? null : idCardPolice.trim(); - } - - @Override - public String toString() { - StringBuilder sb = new StringBuilder(); - sb.append(getClass().getSimpleName()); - sb.append(" ["); - sb.append("Hash = ").append(hashCode()); - sb.append(", id=").append(id); - sb.append(", openId=").append(openId); - sb.append(", registerChannel=").append(registerChannel); - sb.append(", username=").append(username); - sb.append(", idCard=").append(idCard); - sb.append(", name=").append(name); - sb.append(", idCardDetailAddress=").append(idCardDetailAddress); - sb.append(", isVerifyIdCard=").append(isVerifyIdCard); - sb.append(", idCardCoverup=").append(idCardCoverup); - sb.append(", idCardCoverdown=").append(idCardCoverdown); - sb.append(", idCardHold=").append(idCardHold); - sb.append(", isOtherPictureAuth=").append(isOtherPictureAuth); - sb.append(", isBankcardAuth=").append(isBankcardAuth); - sb.append(", signaturePic=").append(signaturePic); - sb.append(", isAdditionalAuth=").append(isAdditionalAuth); - sb.append(", isEmergencyAuth=").append(isEmergencyAuth); - sb.append(", phone=").append(phone); - sb.append(", email=").append(email); - sb.append(", address=").append(address); - sb.append(", userStatus=").append(userStatus); - sb.append(", createTime=").append(createTime); - sb.append(", updateTime=").append(updateTime); - sb.append(", remark=").append(remark); - sb.append(", idCardPolice=").append(idCardPolice); - sb.append(", serialVersionUID=").append(serialVersionUID); - sb.append("]"); - return sb.toString(); - } + private static final long serialVersionUID = 1L; } \ No newline at end of file diff --git a/framework/spring/spring-data/spring-mybatis/src/main/java/org/laidu/learn/mybatis/model/AppUserExample.java b/framework/spring/spring-data/spring-mybatis/src/main/java/org/laidu/learn/mybatis/model/AppUserExample.java new file mode 100644 index 000000000..a65b78b90 --- /dev/null +++ b/framework/spring/spring-data/spring-mybatis/src/main/java/org/laidu/learn/mybatis/model/AppUserExample.java @@ -0,0 +1,2294 @@ +package org.laidu.learn.mybatis.model; + +import java.math.BigDecimal; +import java.util.ArrayList; +import java.util.Date; +import java.util.List; + +public class AppUserExample { + protected String orderByClause; + + protected boolean distinct; + + protected List oredCriteria; + + /** + * This field was generated by MyBatis Generator. + * This field corresponds to the database table ca_app_user + * + * @mbg.generated + * @project https://github.com/itfsw/mybatis-generator-plugin + */ + protected Integer offset; + + /** + * This field was generated by MyBatis Generator. + * This field corresponds to the database table ca_app_user + * + * @mbg.generated + * @project https://github.com/itfsw/mybatis-generator-plugin + */ + protected Integer rows; + + public AppUserExample() { + oredCriteria = new ArrayList(); + } + + public void setOrderByClause(String orderByClause) { + this.orderByClause = orderByClause; + } + + public String getOrderByClause() { + return orderByClause; + } + + public void setDistinct(boolean distinct) { + this.distinct = distinct; + } + + public boolean isDistinct() { + return distinct; + } + + public List getOredCriteria() { + return oredCriteria; + } + + public void or(Criteria criteria) { + oredCriteria.add(criteria); + } + + public Criteria or() { + Criteria criteria = createCriteriaInternal(); + oredCriteria.add(criteria); + return criteria; + } + + public Criteria createCriteria() { + Criteria criteria = createCriteriaInternal(); + if (oredCriteria.size() == 0) { + oredCriteria.add(criteria); + } + return criteria; + } + + protected Criteria createCriteriaInternal() { + Criteria criteria = new Criteria(); + return criteria; + } + + public void clear() { + oredCriteria.clear(); + orderByClause = null; + distinct = false; + rows = null; + offset = null; + } + + /** + * This method was generated by MyBatis Generator. + * This method corresponds to the database table ca_app_user + * + * @mbg.generated + * @project https://github.com/itfsw/mybatis-generator-plugin + */ + public void setOffset(Integer offset) { + this.offset = offset; + } + + /** + * This method was generated by MyBatis Generator. + * This method corresponds to the database table ca_app_user + * + * @mbg.generated + * @project https://github.com/itfsw/mybatis-generator-plugin + */ + public Integer getOffset() { + return this.offset; + } + + /** + * This method was generated by MyBatis Generator. + * This method corresponds to the database table ca_app_user + * + * @mbg.generated + * @project https://github.com/itfsw/mybatis-generator-plugin + */ + public void setRows(Integer rows) { + this.rows = rows; + } + + /** + * This method was generated by MyBatis Generator. + * This method corresponds to the database table ca_app_user + * + * @mbg.generated + * @project https://github.com/itfsw/mybatis-generator-plugin + */ + public Integer getRows() { + return this.rows; + } + + /** + * This method was generated by MyBatis Generator. + * This method corresponds to the database table ca_app_user + * + * @mbg.generated + * @project https://github.com/itfsw/mybatis-generator-plugin + */ + public AppUserExample limit(Integer rows) { + this.rows = rows; + return this; + } + + /** + * This method was generated by MyBatis Generator. + * This method corresponds to the database table ca_app_user + * + * @mbg.generated + * @project https://github.com/itfsw/mybatis-generator-plugin + */ + public AppUserExample limit(Integer offset, Integer rows) { + this.offset = offset; + this.rows = rows; + return this; + } + + /** + * This method was generated by MyBatis Generator. + * This method corresponds to the database table ca_app_user + * + * @mbg.generated + * @project https://github.com/itfsw/mybatis-generator-plugin + */ + public AppUserExample page(Integer page, Integer pageSize) { + this.offset = page * pageSize; + this.rows = pageSize; + return this; + } + + protected abstract static class GeneratedCriteria { + protected List criteria; + + protected GeneratedCriteria() { + super(); + criteria = new ArrayList(); + } + + public boolean isValid() { + return criteria.size() > 0; + } + + public List getAllCriteria() { + return criteria; + } + + public List getCriteria() { + return criteria; + } + + protected void addCriterion(String condition) { + if (condition == null) { + throw new RuntimeException("Value for condition cannot be null"); + } + criteria.add(new Criterion(condition)); + } + + protected void addCriterion(String condition, Object value, String property) { + if (value == null) { + throw new RuntimeException("Value for " + property + " cannot be null"); + } + criteria.add(new Criterion(condition, value)); + } + + protected void addCriterion(String condition, Object value1, Object value2, String property) { + if (value1 == null || value2 == null) { + throw new RuntimeException("Between values for " + property + " cannot be null"); + } + criteria.add(new Criterion(condition, value1, value2)); + } + + public Criteria andIdIsNull() { + addCriterion("id is null"); + return (Criteria) this; + } + + public Criteria andIdIsNotNull() { + addCriterion("id is not null"); + return (Criteria) this; + } + + public Criteria andIdEqualTo(Long value) { + addCriterion("id =", value, "id"); + return (Criteria) this; + } + + public Criteria andIdNotEqualTo(Long value) { + addCriterion("id <>", value, "id"); + return (Criteria) this; + } + + public Criteria andIdGreaterThan(Long value) { + addCriterion("id >", value, "id"); + return (Criteria) this; + } + + public Criteria andIdGreaterThanOrEqualTo(Long value) { + addCriterion("id >=", value, "id"); + return (Criteria) this; + } + + public Criteria andIdLessThan(Long value) { + addCriterion("id <", value, "id"); + return (Criteria) this; + } + + public Criteria andIdLessThanOrEqualTo(Long value) { + addCriterion("id <=", value, "id"); + return (Criteria) this; + } + + public Criteria andIdIn(List values) { + addCriterion("id in", values, "id"); + return (Criteria) this; + } + + public Criteria andIdNotIn(List values) { + addCriterion("id not in", values, "id"); + return (Criteria) this; + } + + public Criteria andIdBetween(Long value1, Long value2) { + addCriterion("id between", value1, value2, "id"); + return (Criteria) this; + } + + public Criteria andIdNotBetween(Long value1, Long value2) { + addCriterion("id not between", value1, value2, "id"); + return (Criteria) this; + } + + public Criteria andOpenIdIsNull() { + addCriterion("open_id is null"); + return (Criteria) this; + } + + public Criteria andOpenIdIsNotNull() { + addCriterion("open_id is not null"); + return (Criteria) this; + } + + public Criteria andOpenIdEqualTo(String value) { + addCriterion("open_id =", value, "openId"); + return (Criteria) this; + } + + public Criteria andOpenIdNotEqualTo(String value) { + addCriterion("open_id <>", value, "openId"); + return (Criteria) this; + } + + public Criteria andOpenIdGreaterThan(String value) { + addCriterion("open_id >", value, "openId"); + return (Criteria) this; + } + + public Criteria andOpenIdGreaterThanOrEqualTo(String value) { + addCriterion("open_id >=", value, "openId"); + return (Criteria) this; + } + + public Criteria andOpenIdLessThan(String value) { + addCriterion("open_id <", value, "openId"); + return (Criteria) this; + } + + public Criteria andOpenIdLessThanOrEqualTo(String value) { + addCriterion("open_id <=", value, "openId"); + return (Criteria) this; + } + + public Criteria andOpenIdLike(String value) { + addCriterion("open_id like", value, "openId"); + return (Criteria) this; + } + + public Criteria andOpenIdNotLike(String value) { + addCriterion("open_id not like", value, "openId"); + return (Criteria) this; + } + + public Criteria andOpenIdIn(List values) { + addCriterion("open_id in", values, "openId"); + return (Criteria) this; + } + + public Criteria andOpenIdNotIn(List values) { + addCriterion("open_id not in", values, "openId"); + return (Criteria) this; + } + + public Criteria andOpenIdBetween(String value1, String value2) { + addCriterion("open_id between", value1, value2, "openId"); + return (Criteria) this; + } + + public Criteria andOpenIdNotBetween(String value1, String value2) { + addCriterion("open_id not between", value1, value2, "openId"); + return (Criteria) this; + } + + public Criteria andRegisterChannelIsNull() { + addCriterion("register_channel is null"); + return (Criteria) this; + } + + public Criteria andRegisterChannelIsNotNull() { + addCriterion("register_channel is not null"); + return (Criteria) this; + } + + public Criteria andRegisterChannelEqualTo(Long value) { + addCriterion("register_channel =", value, "registerChannel"); + return (Criteria) this; + } + + public Criteria andRegisterChannelNotEqualTo(Long value) { + addCriterion("register_channel <>", value, "registerChannel"); + return (Criteria) this; + } + + public Criteria andRegisterChannelGreaterThan(Long value) { + addCriterion("register_channel >", value, "registerChannel"); + return (Criteria) this; + } + + public Criteria andRegisterChannelGreaterThanOrEqualTo(Long value) { + addCriterion("register_channel >=", value, "registerChannel"); + return (Criteria) this; + } + + public Criteria andRegisterChannelLessThan(Long value) { + addCriterion("register_channel <", value, "registerChannel"); + return (Criteria) this; + } + + public Criteria andRegisterChannelLessThanOrEqualTo(Long value) { + addCriterion("register_channel <=", value, "registerChannel"); + return (Criteria) this; + } + + public Criteria andRegisterChannelIn(List values) { + addCriterion("register_channel in", values, "registerChannel"); + return (Criteria) this; + } + + public Criteria andRegisterChannelNotIn(List values) { + addCriterion("register_channel not in", values, "registerChannel"); + return (Criteria) this; + } + + public Criteria andRegisterChannelBetween(Long value1, Long value2) { + addCriterion("register_channel between", value1, value2, "registerChannel"); + return (Criteria) this; + } + + public Criteria andRegisterChannelNotBetween(Long value1, Long value2) { + addCriterion("register_channel not between", value1, value2, "registerChannel"); + return (Criteria) this; + } + + public Criteria andUsernameIsNull() { + addCriterion("username is null"); + return (Criteria) this; + } + + public Criteria andUsernameIsNotNull() { + addCriterion("username is not null"); + return (Criteria) this; + } + + public Criteria andUsernameEqualTo(String value) { + addCriterion("username =", value, "username"); + return (Criteria) this; + } + + public Criteria andUsernameNotEqualTo(String value) { + addCriterion("username <>", value, "username"); + return (Criteria) this; + } + + public Criteria andUsernameGreaterThan(String value) { + addCriterion("username >", value, "username"); + return (Criteria) this; + } + + public Criteria andUsernameGreaterThanOrEqualTo(String value) { + addCriterion("username >=", value, "username"); + return (Criteria) this; + } + + public Criteria andUsernameLessThan(String value) { + addCriterion("username <", value, "username"); + return (Criteria) this; + } + + public Criteria andUsernameLessThanOrEqualTo(String value) { + addCriterion("username <=", value, "username"); + return (Criteria) this; + } + + public Criteria andUsernameLike(String value) { + addCriterion("username like", value, "username"); + return (Criteria) this; + } + + public Criteria andUsernameNotLike(String value) { + addCriterion("username not like", value, "username"); + return (Criteria) this; + } + + public Criteria andUsernameIn(List values) { + addCriterion("username in", values, "username"); + return (Criteria) this; + } + + public Criteria andUsernameNotIn(List values) { + addCriterion("username not in", values, "username"); + return (Criteria) this; + } + + public Criteria andUsernameBetween(String value1, String value2) { + addCriterion("username between", value1, value2, "username"); + return (Criteria) this; + } + + public Criteria andUsernameNotBetween(String value1, String value2) { + addCriterion("username not between", value1, value2, "username"); + return (Criteria) this; + } + + public Criteria andIdCardIsNull() { + addCriterion("id_card is null"); + return (Criteria) this; + } + + public Criteria andIdCardIsNotNull() { + addCriterion("id_card is not null"); + return (Criteria) this; + } + + public Criteria andIdCardEqualTo(String value) { + addCriterion("id_card =", value, "idCard"); + return (Criteria) this; + } + + public Criteria andIdCardNotEqualTo(String value) { + addCriterion("id_card <>", value, "idCard"); + return (Criteria) this; + } + + public Criteria andIdCardGreaterThan(String value) { + addCriterion("id_card >", value, "idCard"); + return (Criteria) this; + } + + public Criteria andIdCardGreaterThanOrEqualTo(String value) { + addCriterion("id_card >=", value, "idCard"); + return (Criteria) this; + } + + public Criteria andIdCardLessThan(String value) { + addCriterion("id_card <", value, "idCard"); + return (Criteria) this; + } + + public Criteria andIdCardLessThanOrEqualTo(String value) { + addCriterion("id_card <=", value, "idCard"); + return (Criteria) this; + } + + public Criteria andIdCardLike(String value) { + addCriterion("id_card like", value, "idCard"); + return (Criteria) this; + } + + public Criteria andIdCardNotLike(String value) { + addCriterion("id_card not like", value, "idCard"); + return (Criteria) this; + } + + public Criteria andIdCardIn(List values) { + addCriterion("id_card in", values, "idCard"); + return (Criteria) this; + } + + public Criteria andIdCardNotIn(List values) { + addCriterion("id_card not in", values, "idCard"); + return (Criteria) this; + } + + public Criteria andIdCardBetween(String value1, String value2) { + addCriterion("id_card between", value1, value2, "idCard"); + return (Criteria) this; + } + + public Criteria andIdCardNotBetween(String value1, String value2) { + addCriterion("id_card not between", value1, value2, "idCard"); + return (Criteria) this; + } + + public Criteria andNameIsNull() { + addCriterion("name is null"); + return (Criteria) this; + } + + public Criteria andNameIsNotNull() { + addCriterion("name is not null"); + return (Criteria) this; + } + + public Criteria andNameEqualTo(String value) { + addCriterion("name =", value, "name"); + return (Criteria) this; + } + + public Criteria andNameNotEqualTo(String value) { + addCriterion("name <>", value, "name"); + return (Criteria) this; + } + + public Criteria andNameGreaterThan(String value) { + addCriterion("name >", value, "name"); + return (Criteria) this; + } + + public Criteria andNameGreaterThanOrEqualTo(String value) { + addCriterion("name >=", value, "name"); + return (Criteria) this; + } + + public Criteria andNameLessThan(String value) { + addCriterion("name <", value, "name"); + return (Criteria) this; + } + + public Criteria andNameLessThanOrEqualTo(String value) { + addCriterion("name <=", value, "name"); + return (Criteria) this; + } + + public Criteria andNameLike(String value) { + addCriterion("name like", value, "name"); + return (Criteria) this; + } + + public Criteria andNameNotLike(String value) { + addCriterion("name not like", value, "name"); + return (Criteria) this; + } + + public Criteria andNameIn(List values) { + addCriterion("name in", values, "name"); + return (Criteria) this; + } + + public Criteria andNameNotIn(List values) { + addCriterion("name not in", values, "name"); + return (Criteria) this; + } + + public Criteria andNameBetween(String value1, String value2) { + addCriterion("name between", value1, value2, "name"); + return (Criteria) this; + } + + public Criteria andNameNotBetween(String value1, String value2) { + addCriterion("name not between", value1, value2, "name"); + return (Criteria) this; + } + + public Criteria andIdCardDetailAddressIsNull() { + addCriterion("id_card_detail_address is null"); + return (Criteria) this; + } + + public Criteria andIdCardDetailAddressIsNotNull() { + addCriterion("id_card_detail_address is not null"); + return (Criteria) this; + } + + public Criteria andIdCardDetailAddressEqualTo(String value) { + addCriterion("id_card_detail_address =", value, "idCardDetailAddress"); + return (Criteria) this; + } + + public Criteria andIdCardDetailAddressNotEqualTo(String value) { + addCriterion("id_card_detail_address <>", value, "idCardDetailAddress"); + return (Criteria) this; + } + + public Criteria andIdCardDetailAddressGreaterThan(String value) { + addCriterion("id_card_detail_address >", value, "idCardDetailAddress"); + return (Criteria) this; + } + + public Criteria andIdCardDetailAddressGreaterThanOrEqualTo(String value) { + addCriterion("id_card_detail_address >=", value, "idCardDetailAddress"); + return (Criteria) this; + } + + public Criteria andIdCardDetailAddressLessThan(String value) { + addCriterion("id_card_detail_address <", value, "idCardDetailAddress"); + return (Criteria) this; + } + + public Criteria andIdCardDetailAddressLessThanOrEqualTo(String value) { + addCriterion("id_card_detail_address <=", value, "idCardDetailAddress"); + return (Criteria) this; + } + + public Criteria andIdCardDetailAddressLike(String value) { + addCriterion("id_card_detail_address like", value, "idCardDetailAddress"); + return (Criteria) this; + } + + public Criteria andIdCardDetailAddressNotLike(String value) { + addCriterion("id_card_detail_address not like", value, "idCardDetailAddress"); + return (Criteria) this; + } + + public Criteria andIdCardDetailAddressIn(List values) { + addCriterion("id_card_detail_address in", values, "idCardDetailAddress"); + return (Criteria) this; + } + + public Criteria andIdCardDetailAddressNotIn(List values) { + addCriterion("id_card_detail_address not in", values, "idCardDetailAddress"); + return (Criteria) this; + } + + public Criteria andIdCardDetailAddressBetween(String value1, String value2) { + addCriterion("id_card_detail_address between", value1, value2, "idCardDetailAddress"); + return (Criteria) this; + } + + public Criteria andIdCardDetailAddressNotBetween(String value1, String value2) { + addCriterion("id_card_detail_address not between", value1, value2, "idCardDetailAddress"); + return (Criteria) this; + } + + public Criteria andIsVerifyIdCardIsNull() { + addCriterion("is_verify_id_card is null"); + return (Criteria) this; + } + + public Criteria andIsVerifyIdCardIsNotNull() { + addCriterion("is_verify_id_card is not null"); + return (Criteria) this; + } + + public Criteria andIsVerifyIdCardEqualTo(Boolean value) { + addCriterion("is_verify_id_card =", value, "isVerifyIdCard"); + return (Criteria) this; + } + + public Criteria andIsVerifyIdCardNotEqualTo(Boolean value) { + addCriterion("is_verify_id_card <>", value, "isVerifyIdCard"); + return (Criteria) this; + } + + public Criteria andIsVerifyIdCardGreaterThan(Boolean value) { + addCriterion("is_verify_id_card >", value, "isVerifyIdCard"); + return (Criteria) this; + } + + public Criteria andIsVerifyIdCardGreaterThanOrEqualTo(Boolean value) { + addCriterion("is_verify_id_card >=", value, "isVerifyIdCard"); + return (Criteria) this; + } + + public Criteria andIsVerifyIdCardLessThan(Boolean value) { + addCriterion("is_verify_id_card <", value, "isVerifyIdCard"); + return (Criteria) this; + } + + public Criteria andIsVerifyIdCardLessThanOrEqualTo(Boolean value) { + addCriterion("is_verify_id_card <=", value, "isVerifyIdCard"); + return (Criteria) this; + } + + public Criteria andIsVerifyIdCardIn(List values) { + addCriterion("is_verify_id_card in", values, "isVerifyIdCard"); + return (Criteria) this; + } + + public Criteria andIsVerifyIdCardNotIn(List values) { + addCriterion("is_verify_id_card not in", values, "isVerifyIdCard"); + return (Criteria) this; + } + + public Criteria andIsVerifyIdCardBetween(Boolean value1, Boolean value2) { + addCriterion("is_verify_id_card between", value1, value2, "isVerifyIdCard"); + return (Criteria) this; + } + + public Criteria andIsVerifyIdCardNotBetween(Boolean value1, Boolean value2) { + addCriterion("is_verify_id_card not between", value1, value2, "isVerifyIdCard"); + return (Criteria) this; + } + + public Criteria andIdCardCoverupIsNull() { + addCriterion("id_card_coverup is null"); + return (Criteria) this; + } + + public Criteria andIdCardCoverupIsNotNull() { + addCriterion("id_card_coverup is not null"); + return (Criteria) this; + } + + public Criteria andIdCardCoverupEqualTo(String value) { + addCriterion("id_card_coverup =", value, "idCardCoverup"); + return (Criteria) this; + } + + public Criteria andIdCardCoverupNotEqualTo(String value) { + addCriterion("id_card_coverup <>", value, "idCardCoverup"); + return (Criteria) this; + } + + public Criteria andIdCardCoverupGreaterThan(String value) { + addCriterion("id_card_coverup >", value, "idCardCoverup"); + return (Criteria) this; + } + + public Criteria andIdCardCoverupGreaterThanOrEqualTo(String value) { + addCriterion("id_card_coverup >=", value, "idCardCoverup"); + return (Criteria) this; + } + + public Criteria andIdCardCoverupLessThan(String value) { + addCriterion("id_card_coverup <", value, "idCardCoverup"); + return (Criteria) this; + } + + public Criteria andIdCardCoverupLessThanOrEqualTo(String value) { + addCriterion("id_card_coverup <=", value, "idCardCoverup"); + return (Criteria) this; + } + + public Criteria andIdCardCoverupLike(String value) { + addCriterion("id_card_coverup like", value, "idCardCoverup"); + return (Criteria) this; + } + + public Criteria andIdCardCoverupNotLike(String value) { + addCriterion("id_card_coverup not like", value, "idCardCoverup"); + return (Criteria) this; + } + + public Criteria andIdCardCoverupIn(List values) { + addCriterion("id_card_coverup in", values, "idCardCoverup"); + return (Criteria) this; + } + + public Criteria andIdCardCoverupNotIn(List values) { + addCriterion("id_card_coverup not in", values, "idCardCoverup"); + return (Criteria) this; + } + + public Criteria andIdCardCoverupBetween(String value1, String value2) { + addCriterion("id_card_coverup between", value1, value2, "idCardCoverup"); + return (Criteria) this; + } + + public Criteria andIdCardCoverupNotBetween(String value1, String value2) { + addCriterion("id_card_coverup not between", value1, value2, "idCardCoverup"); + return (Criteria) this; + } + + public Criteria andIdCardCoverdownIsNull() { + addCriterion("id_card_coverdown is null"); + return (Criteria) this; + } + + public Criteria andIdCardCoverdownIsNotNull() { + addCriterion("id_card_coverdown is not null"); + return (Criteria) this; + } + + public Criteria andIdCardCoverdownEqualTo(String value) { + addCriterion("id_card_coverdown =", value, "idCardCoverdown"); + return (Criteria) this; + } + + public Criteria andIdCardCoverdownNotEqualTo(String value) { + addCriterion("id_card_coverdown <>", value, "idCardCoverdown"); + return (Criteria) this; + } + + public Criteria andIdCardCoverdownGreaterThan(String value) { + addCriterion("id_card_coverdown >", value, "idCardCoverdown"); + return (Criteria) this; + } + + public Criteria andIdCardCoverdownGreaterThanOrEqualTo(String value) { + addCriterion("id_card_coverdown >=", value, "idCardCoverdown"); + return (Criteria) this; + } + + public Criteria andIdCardCoverdownLessThan(String value) { + addCriterion("id_card_coverdown <", value, "idCardCoverdown"); + return (Criteria) this; + } + + public Criteria andIdCardCoverdownLessThanOrEqualTo(String value) { + addCriterion("id_card_coverdown <=", value, "idCardCoverdown"); + return (Criteria) this; + } + + public Criteria andIdCardCoverdownLike(String value) { + addCriterion("id_card_coverdown like", value, "idCardCoverdown"); + return (Criteria) this; + } + + public Criteria andIdCardCoverdownNotLike(String value) { + addCriterion("id_card_coverdown not like", value, "idCardCoverdown"); + return (Criteria) this; + } + + public Criteria andIdCardCoverdownIn(List values) { + addCriterion("id_card_coverdown in", values, "idCardCoverdown"); + return (Criteria) this; + } + + public Criteria andIdCardCoverdownNotIn(List values) { + addCriterion("id_card_coverdown not in", values, "idCardCoverdown"); + return (Criteria) this; + } + + public Criteria andIdCardCoverdownBetween(String value1, String value2) { + addCriterion("id_card_coverdown between", value1, value2, "idCardCoverdown"); + return (Criteria) this; + } + + public Criteria andIdCardCoverdownNotBetween(String value1, String value2) { + addCriterion("id_card_coverdown not between", value1, value2, "idCardCoverdown"); + return (Criteria) this; + } + + public Criteria andIdCardHoldIsNull() { + addCriterion("id_card_hold is null"); + return (Criteria) this; + } + + public Criteria andIdCardHoldIsNotNull() { + addCriterion("id_card_hold is not null"); + return (Criteria) this; + } + + public Criteria andIdCardHoldEqualTo(String value) { + addCriterion("id_card_hold =", value, "idCardHold"); + return (Criteria) this; + } + + public Criteria andIdCardHoldNotEqualTo(String value) { + addCriterion("id_card_hold <>", value, "idCardHold"); + return (Criteria) this; + } + + public Criteria andIdCardHoldGreaterThan(String value) { + addCriterion("id_card_hold >", value, "idCardHold"); + return (Criteria) this; + } + + public Criteria andIdCardHoldGreaterThanOrEqualTo(String value) { + addCriterion("id_card_hold >=", value, "idCardHold"); + return (Criteria) this; + } + + public Criteria andIdCardHoldLessThan(String value) { + addCriterion("id_card_hold <", value, "idCardHold"); + return (Criteria) this; + } + + public Criteria andIdCardHoldLessThanOrEqualTo(String value) { + addCriterion("id_card_hold <=", value, "idCardHold"); + return (Criteria) this; + } + + public Criteria andIdCardHoldLike(String value) { + addCriterion("id_card_hold like", value, "idCardHold"); + return (Criteria) this; + } + + public Criteria andIdCardHoldNotLike(String value) { + addCriterion("id_card_hold not like", value, "idCardHold"); + return (Criteria) this; + } + + public Criteria andIdCardHoldIn(List values) { + addCriterion("id_card_hold in", values, "idCardHold"); + return (Criteria) this; + } + + public Criteria andIdCardHoldNotIn(List values) { + addCriterion("id_card_hold not in", values, "idCardHold"); + return (Criteria) this; + } + + public Criteria andIdCardHoldBetween(String value1, String value2) { + addCriterion("id_card_hold between", value1, value2, "idCardHold"); + return (Criteria) this; + } + + public Criteria andIdCardHoldNotBetween(String value1, String value2) { + addCriterion("id_card_hold not between", value1, value2, "idCardHold"); + return (Criteria) this; + } + + public Criteria andIsOtherPictureAuthIsNull() { + addCriterion("is_other_picture_auth is null"); + return (Criteria) this; + } + + public Criteria andIsOtherPictureAuthIsNotNull() { + addCriterion("is_other_picture_auth is not null"); + return (Criteria) this; + } + + public Criteria andIsOtherPictureAuthEqualTo(Boolean value) { + addCriterion("is_other_picture_auth =", value, "isOtherPictureAuth"); + return (Criteria) this; + } + + public Criteria andIsOtherPictureAuthNotEqualTo(Boolean value) { + addCriterion("is_other_picture_auth <>", value, "isOtherPictureAuth"); + return (Criteria) this; + } + + public Criteria andIsOtherPictureAuthGreaterThan(Boolean value) { + addCriterion("is_other_picture_auth >", value, "isOtherPictureAuth"); + return (Criteria) this; + } + + public Criteria andIsOtherPictureAuthGreaterThanOrEqualTo(Boolean value) { + addCriterion("is_other_picture_auth >=", value, "isOtherPictureAuth"); + return (Criteria) this; + } + + public Criteria andIsOtherPictureAuthLessThan(Boolean value) { + addCriterion("is_other_picture_auth <", value, "isOtherPictureAuth"); + return (Criteria) this; + } + + public Criteria andIsOtherPictureAuthLessThanOrEqualTo(Boolean value) { + addCriterion("is_other_picture_auth <=", value, "isOtherPictureAuth"); + return (Criteria) this; + } + + public Criteria andIsOtherPictureAuthIn(List values) { + addCriterion("is_other_picture_auth in", values, "isOtherPictureAuth"); + return (Criteria) this; + } + + public Criteria andIsOtherPictureAuthNotIn(List values) { + addCriterion("is_other_picture_auth not in", values, "isOtherPictureAuth"); + return (Criteria) this; + } + + public Criteria andIsOtherPictureAuthBetween(Boolean value1, Boolean value2) { + addCriterion("is_other_picture_auth between", value1, value2, "isOtherPictureAuth"); + return (Criteria) this; + } + + public Criteria andIsOtherPictureAuthNotBetween(Boolean value1, Boolean value2) { + addCriterion("is_other_picture_auth not between", value1, value2, "isOtherPictureAuth"); + return (Criteria) this; + } + + public Criteria andIsBankcardAuthIsNull() { + addCriterion("is_bankcard_auth is null"); + return (Criteria) this; + } + + public Criteria andIsBankcardAuthIsNotNull() { + addCriterion("is_bankcard_auth is not null"); + return (Criteria) this; + } + + public Criteria andIsBankcardAuthEqualTo(Boolean value) { + addCriterion("is_bankcard_auth =", value, "isBankcardAuth"); + return (Criteria) this; + } + + public Criteria andIsBankcardAuthNotEqualTo(Boolean value) { + addCriterion("is_bankcard_auth <>", value, "isBankcardAuth"); + return (Criteria) this; + } + + public Criteria andIsBankcardAuthGreaterThan(Boolean value) { + addCriterion("is_bankcard_auth >", value, "isBankcardAuth"); + return (Criteria) this; + } + + public Criteria andIsBankcardAuthGreaterThanOrEqualTo(Boolean value) { + addCriterion("is_bankcard_auth >=", value, "isBankcardAuth"); + return (Criteria) this; + } + + public Criteria andIsBankcardAuthLessThan(Boolean value) { + addCriterion("is_bankcard_auth <", value, "isBankcardAuth"); + return (Criteria) this; + } + + public Criteria andIsBankcardAuthLessThanOrEqualTo(Boolean value) { + addCriterion("is_bankcard_auth <=", value, "isBankcardAuth"); + return (Criteria) this; + } + + public Criteria andIsBankcardAuthIn(List values) { + addCriterion("is_bankcard_auth in", values, "isBankcardAuth"); + return (Criteria) this; + } + + public Criteria andIsBankcardAuthNotIn(List values) { + addCriterion("is_bankcard_auth not in", values, "isBankcardAuth"); + return (Criteria) this; + } + + public Criteria andIsBankcardAuthBetween(Boolean value1, Boolean value2) { + addCriterion("is_bankcard_auth between", value1, value2, "isBankcardAuth"); + return (Criteria) this; + } + + public Criteria andIsBankcardAuthNotBetween(Boolean value1, Boolean value2) { + addCriterion("is_bankcard_auth not between", value1, value2, "isBankcardAuth"); + return (Criteria) this; + } + + public Criteria andSignaturePicIsNull() { + addCriterion("signature_pic is null"); + return (Criteria) this; + } + + public Criteria andSignaturePicIsNotNull() { + addCriterion("signature_pic is not null"); + return (Criteria) this; + } + + public Criteria andSignaturePicEqualTo(String value) { + addCriterion("signature_pic =", value, "signaturePic"); + return (Criteria) this; + } + + public Criteria andSignaturePicNotEqualTo(String value) { + addCriterion("signature_pic <>", value, "signaturePic"); + return (Criteria) this; + } + + public Criteria andSignaturePicGreaterThan(String value) { + addCriterion("signature_pic >", value, "signaturePic"); + return (Criteria) this; + } + + public Criteria andSignaturePicGreaterThanOrEqualTo(String value) { + addCriterion("signature_pic >=", value, "signaturePic"); + return (Criteria) this; + } + + public Criteria andSignaturePicLessThan(String value) { + addCriterion("signature_pic <", value, "signaturePic"); + return (Criteria) this; + } + + public Criteria andSignaturePicLessThanOrEqualTo(String value) { + addCriterion("signature_pic <=", value, "signaturePic"); + return (Criteria) this; + } + + public Criteria andSignaturePicLike(String value) { + addCriterion("signature_pic like", value, "signaturePic"); + return (Criteria) this; + } + + public Criteria andSignaturePicNotLike(String value) { + addCriterion("signature_pic not like", value, "signaturePic"); + return (Criteria) this; + } + + public Criteria andSignaturePicIn(List values) { + addCriterion("signature_pic in", values, "signaturePic"); + return (Criteria) this; + } + + public Criteria andSignaturePicNotIn(List values) { + addCriterion("signature_pic not in", values, "signaturePic"); + return (Criteria) this; + } + + public Criteria andSignaturePicBetween(String value1, String value2) { + addCriterion("signature_pic between", value1, value2, "signaturePic"); + return (Criteria) this; + } + + public Criteria andSignaturePicNotBetween(String value1, String value2) { + addCriterion("signature_pic not between", value1, value2, "signaturePic"); + return (Criteria) this; + } + + public Criteria andIsAdditionalAuthIsNull() { + addCriterion("is_additional_auth is null"); + return (Criteria) this; + } + + public Criteria andIsAdditionalAuthIsNotNull() { + addCriterion("is_additional_auth is not null"); + return (Criteria) this; + } + + public Criteria andIsAdditionalAuthEqualTo(Boolean value) { + addCriterion("is_additional_auth =", value, "isAdditionalAuth"); + return (Criteria) this; + } + + public Criteria andIsAdditionalAuthNotEqualTo(Boolean value) { + addCriterion("is_additional_auth <>", value, "isAdditionalAuth"); + return (Criteria) this; + } + + public Criteria andIsAdditionalAuthGreaterThan(Boolean value) { + addCriterion("is_additional_auth >", value, "isAdditionalAuth"); + return (Criteria) this; + } + + public Criteria andIsAdditionalAuthGreaterThanOrEqualTo(Boolean value) { + addCriterion("is_additional_auth >=", value, "isAdditionalAuth"); + return (Criteria) this; + } + + public Criteria andIsAdditionalAuthLessThan(Boolean value) { + addCriterion("is_additional_auth <", value, "isAdditionalAuth"); + return (Criteria) this; + } + + public Criteria andIsAdditionalAuthLessThanOrEqualTo(Boolean value) { + addCriterion("is_additional_auth <=", value, "isAdditionalAuth"); + return (Criteria) this; + } + + public Criteria andIsAdditionalAuthIn(List values) { + addCriterion("is_additional_auth in", values, "isAdditionalAuth"); + return (Criteria) this; + } + + public Criteria andIsAdditionalAuthNotIn(List values) { + addCriterion("is_additional_auth not in", values, "isAdditionalAuth"); + return (Criteria) this; + } + + public Criteria andIsAdditionalAuthBetween(Boolean value1, Boolean value2) { + addCriterion("is_additional_auth between", value1, value2, "isAdditionalAuth"); + return (Criteria) this; + } + + public Criteria andIsAdditionalAuthNotBetween(Boolean value1, Boolean value2) { + addCriterion("is_additional_auth not between", value1, value2, "isAdditionalAuth"); + return (Criteria) this; + } + + public Criteria andIsEmergencyAuthIsNull() { + addCriterion("is_emergency_auth is null"); + return (Criteria) this; + } + + public Criteria andIsEmergencyAuthIsNotNull() { + addCriterion("is_emergency_auth is not null"); + return (Criteria) this; + } + + public Criteria andIsEmergencyAuthEqualTo(Boolean value) { + addCriterion("is_emergency_auth =", value, "isEmergencyAuth"); + return (Criteria) this; + } + + public Criteria andIsEmergencyAuthNotEqualTo(Boolean value) { + addCriterion("is_emergency_auth <>", value, "isEmergencyAuth"); + return (Criteria) this; + } + + public Criteria andIsEmergencyAuthGreaterThan(Boolean value) { + addCriterion("is_emergency_auth >", value, "isEmergencyAuth"); + return (Criteria) this; + } + + public Criteria andIsEmergencyAuthGreaterThanOrEqualTo(Boolean value) { + addCriterion("is_emergency_auth >=", value, "isEmergencyAuth"); + return (Criteria) this; + } + + public Criteria andIsEmergencyAuthLessThan(Boolean value) { + addCriterion("is_emergency_auth <", value, "isEmergencyAuth"); + return (Criteria) this; + } + + public Criteria andIsEmergencyAuthLessThanOrEqualTo(Boolean value) { + addCriterion("is_emergency_auth <=", value, "isEmergencyAuth"); + return (Criteria) this; + } + + public Criteria andIsEmergencyAuthIn(List values) { + addCriterion("is_emergency_auth in", values, "isEmergencyAuth"); + return (Criteria) this; + } + + public Criteria andIsEmergencyAuthNotIn(List values) { + addCriterion("is_emergency_auth not in", values, "isEmergencyAuth"); + return (Criteria) this; + } + + public Criteria andIsEmergencyAuthBetween(Boolean value1, Boolean value2) { + addCriterion("is_emergency_auth between", value1, value2, "isEmergencyAuth"); + return (Criteria) this; + } + + public Criteria andIsEmergencyAuthNotBetween(Boolean value1, Boolean value2) { + addCriterion("is_emergency_auth not between", value1, value2, "isEmergencyAuth"); + return (Criteria) this; + } + + public Criteria andPhoneIsNull() { + addCriterion("phone is null"); + return (Criteria) this; + } + + public Criteria andPhoneIsNotNull() { + addCriterion("phone is not null"); + return (Criteria) this; + } + + public Criteria andPhoneEqualTo(String value) { + addCriterion("phone =", value, "phone"); + return (Criteria) this; + } + + public Criteria andPhoneNotEqualTo(String value) { + addCriterion("phone <>", value, "phone"); + return (Criteria) this; + } + + public Criteria andPhoneGreaterThan(String value) { + addCriterion("phone >", value, "phone"); + return (Criteria) this; + } + + public Criteria andPhoneGreaterThanOrEqualTo(String value) { + addCriterion("phone >=", value, "phone"); + return (Criteria) this; + } + + public Criteria andPhoneLessThan(String value) { + addCriterion("phone <", value, "phone"); + return (Criteria) this; + } + + public Criteria andPhoneLessThanOrEqualTo(String value) { + addCriterion("phone <=", value, "phone"); + return (Criteria) this; + } + + public Criteria andPhoneLike(String value) { + addCriterion("phone like", value, "phone"); + return (Criteria) this; + } + + public Criteria andPhoneNotLike(String value) { + addCriterion("phone not like", value, "phone"); + return (Criteria) this; + } + + public Criteria andPhoneIn(List values) { + addCriterion("phone in", values, "phone"); + return (Criteria) this; + } + + public Criteria andPhoneNotIn(List values) { + addCriterion("phone not in", values, "phone"); + return (Criteria) this; + } + + public Criteria andPhoneBetween(String value1, String value2) { + addCriterion("phone between", value1, value2, "phone"); + return (Criteria) this; + } + + public Criteria andPhoneNotBetween(String value1, String value2) { + addCriterion("phone not between", value1, value2, "phone"); + return (Criteria) this; + } + + public Criteria andEmailIsNull() { + addCriterion("email is null"); + return (Criteria) this; + } + + public Criteria andEmailIsNotNull() { + addCriterion("email is not null"); + return (Criteria) this; + } + + public Criteria andEmailEqualTo(String value) { + addCriterion("email =", value, "email"); + return (Criteria) this; + } + + public Criteria andEmailNotEqualTo(String value) { + addCriterion("email <>", value, "email"); + return (Criteria) this; + } + + public Criteria andEmailGreaterThan(String value) { + addCriterion("email >", value, "email"); + return (Criteria) this; + } + + public Criteria andEmailGreaterThanOrEqualTo(String value) { + addCriterion("email >=", value, "email"); + return (Criteria) this; + } + + public Criteria andEmailLessThan(String value) { + addCriterion("email <", value, "email"); + return (Criteria) this; + } + + public Criteria andEmailLessThanOrEqualTo(String value) { + addCriterion("email <=", value, "email"); + return (Criteria) this; + } + + public Criteria andEmailLike(String value) { + addCriterion("email like", value, "email"); + return (Criteria) this; + } + + public Criteria andEmailNotLike(String value) { + addCriterion("email not like", value, "email"); + return (Criteria) this; + } + + public Criteria andEmailIn(List values) { + addCriterion("email in", values, "email"); + return (Criteria) this; + } + + public Criteria andEmailNotIn(List values) { + addCriterion("email not in", values, "email"); + return (Criteria) this; + } + + public Criteria andEmailBetween(String value1, String value2) { + addCriterion("email between", value1, value2, "email"); + return (Criteria) this; + } + + public Criteria andEmailNotBetween(String value1, String value2) { + addCriterion("email not between", value1, value2, "email"); + return (Criteria) this; + } + + public Criteria andAddressIsNull() { + addCriterion("address is null"); + return (Criteria) this; + } + + public Criteria andAddressIsNotNull() { + addCriterion("address is not null"); + return (Criteria) this; + } + + public Criteria andAddressEqualTo(String value) { + addCriterion("address =", value, "address"); + return (Criteria) this; + } + + public Criteria andAddressNotEqualTo(String value) { + addCriterion("address <>", value, "address"); + return (Criteria) this; + } + + public Criteria andAddressGreaterThan(String value) { + addCriterion("address >", value, "address"); + return (Criteria) this; + } + + public Criteria andAddressGreaterThanOrEqualTo(String value) { + addCriterion("address >=", value, "address"); + return (Criteria) this; + } + + public Criteria andAddressLessThan(String value) { + addCriterion("address <", value, "address"); + return (Criteria) this; + } + + public Criteria andAddressLessThanOrEqualTo(String value) { + addCriterion("address <=", value, "address"); + return (Criteria) this; + } + + public Criteria andAddressLike(String value) { + addCriterion("address like", value, "address"); + return (Criteria) this; + } + + public Criteria andAddressNotLike(String value) { + addCriterion("address not like", value, "address"); + return (Criteria) this; + } + + public Criteria andAddressIn(List values) { + addCriterion("address in", values, "address"); + return (Criteria) this; + } + + public Criteria andAddressNotIn(List values) { + addCriterion("address not in", values, "address"); + return (Criteria) this; + } + + public Criteria andAddressBetween(String value1, String value2) { + addCriterion("address between", value1, value2, "address"); + return (Criteria) this; + } + + public Criteria andAddressNotBetween(String value1, String value2) { + addCriterion("address not between", value1, value2, "address"); + return (Criteria) this; + } + + public Criteria andUserStatusIsNull() { + addCriterion("user_status is null"); + return (Criteria) this; + } + + public Criteria andUserStatusIsNotNull() { + addCriterion("user_status is not null"); + return (Criteria) this; + } + + public Criteria andUserStatusEqualTo(Integer value) { + addCriterion("user_status =", value, "userStatus"); + return (Criteria) this; + } + + public Criteria andUserStatusNotEqualTo(Integer value) { + addCriterion("user_status <>", value, "userStatus"); + return (Criteria) this; + } + + public Criteria andUserStatusGreaterThan(Integer value) { + addCriterion("user_status >", value, "userStatus"); + return (Criteria) this; + } + + public Criteria andUserStatusGreaterThanOrEqualTo(Integer value) { + addCriterion("user_status >=", value, "userStatus"); + return (Criteria) this; + } + + public Criteria andUserStatusLessThan(Integer value) { + addCriterion("user_status <", value, "userStatus"); + return (Criteria) this; + } + + public Criteria andUserStatusLessThanOrEqualTo(Integer value) { + addCriterion("user_status <=", value, "userStatus"); + return (Criteria) this; + } + + public Criteria andUserStatusIn(List values) { + addCriterion("user_status in", values, "userStatus"); + return (Criteria) this; + } + + public Criteria andUserStatusNotIn(List values) { + addCriterion("user_status not in", values, "userStatus"); + return (Criteria) this; + } + + public Criteria andUserStatusBetween(Integer value1, Integer value2) { + addCriterion("user_status between", value1, value2, "userStatus"); + return (Criteria) this; + } + + public Criteria andUserStatusNotBetween(Integer value1, Integer value2) { + addCriterion("user_status not between", value1, value2, "userStatus"); + return (Criteria) this; + } + + public Criteria andCreateTimeIsNull() { + addCriterion("create_time is null"); + return (Criteria) this; + } + + public Criteria andCreateTimeIsNotNull() { + addCriterion("create_time is not null"); + return (Criteria) this; + } + + public Criteria andCreateTimeEqualTo(Date value) { + addCriterion("create_time =", value, "createTime"); + return (Criteria) this; + } + + public Criteria andCreateTimeNotEqualTo(Date value) { + addCriterion("create_time <>", value, "createTime"); + return (Criteria) this; + } + + public Criteria andCreateTimeGreaterThan(Date value) { + addCriterion("create_time >", value, "createTime"); + return (Criteria) this; + } + + public Criteria andCreateTimeGreaterThanOrEqualTo(Date value) { + addCriterion("create_time >=", value, "createTime"); + return (Criteria) this; + } + + public Criteria andCreateTimeLessThan(Date value) { + addCriterion("create_time <", value, "createTime"); + return (Criteria) this; + } + + public Criteria andCreateTimeLessThanOrEqualTo(Date value) { + addCriterion("create_time <=", value, "createTime"); + return (Criteria) this; + } + + public Criteria andCreateTimeIn(List values) { + addCriterion("create_time in", values, "createTime"); + return (Criteria) this; + } + + public Criteria andCreateTimeNotIn(List values) { + addCriterion("create_time not in", values, "createTime"); + return (Criteria) this; + } + + public Criteria andCreateTimeBetween(Date value1, Date value2) { + addCriterion("create_time between", value1, value2, "createTime"); + return (Criteria) this; + } + + public Criteria andCreateTimeNotBetween(Date value1, Date value2) { + addCriterion("create_time not between", value1, value2, "createTime"); + return (Criteria) this; + } + + public Criteria andUpdateTimeIsNull() { + addCriterion("update_time is null"); + return (Criteria) this; + } + + public Criteria andUpdateTimeIsNotNull() { + addCriterion("update_time is not null"); + return (Criteria) this; + } + + public Criteria andUpdateTimeEqualTo(Date value) { + addCriterion("update_time =", value, "updateTime"); + return (Criteria) this; + } + + public Criteria andUpdateTimeNotEqualTo(Date value) { + addCriterion("update_time <>", value, "updateTime"); + return (Criteria) this; + } + + public Criteria andUpdateTimeGreaterThan(Date value) { + addCriterion("update_time >", value, "updateTime"); + return (Criteria) this; + } + + public Criteria andUpdateTimeGreaterThanOrEqualTo(Date value) { + addCriterion("update_time >=", value, "updateTime"); + return (Criteria) this; + } + + public Criteria andUpdateTimeLessThan(Date value) { + addCriterion("update_time <", value, "updateTime"); + return (Criteria) this; + } + + public Criteria andUpdateTimeLessThanOrEqualTo(Date value) { + addCriterion("update_time <=", value, "updateTime"); + return (Criteria) this; + } + + public Criteria andUpdateTimeIn(List values) { + addCriterion("update_time in", values, "updateTime"); + return (Criteria) this; + } + + public Criteria andUpdateTimeNotIn(List values) { + addCriterion("update_time not in", values, "updateTime"); + return (Criteria) this; + } + + public Criteria andUpdateTimeBetween(Date value1, Date value2) { + addCriterion("update_time between", value1, value2, "updateTime"); + return (Criteria) this; + } + + public Criteria andUpdateTimeNotBetween(Date value1, Date value2) { + addCriterion("update_time not between", value1, value2, "updateTime"); + return (Criteria) this; + } + + public Criteria andRemarkIsNull() { + addCriterion("remark is null"); + return (Criteria) this; + } + + public Criteria andRemarkIsNotNull() { + addCriterion("remark is not null"); + return (Criteria) this; + } + + public Criteria andRemarkEqualTo(String value) { + addCriterion("remark =", value, "remark"); + return (Criteria) this; + } + + public Criteria andRemarkNotEqualTo(String value) { + addCriterion("remark <>", value, "remark"); + return (Criteria) this; + } + + public Criteria andRemarkGreaterThan(String value) { + addCriterion("remark >", value, "remark"); + return (Criteria) this; + } + + public Criteria andRemarkGreaterThanOrEqualTo(String value) { + addCriterion("remark >=", value, "remark"); + return (Criteria) this; + } + + public Criteria andRemarkLessThan(String value) { + addCriterion("remark <", value, "remark"); + return (Criteria) this; + } + + public Criteria andRemarkLessThanOrEqualTo(String value) { + addCriterion("remark <=", value, "remark"); + return (Criteria) this; + } + + public Criteria andRemarkLike(String value) { + addCriterion("remark like", value, "remark"); + return (Criteria) this; + } + + public Criteria andRemarkNotLike(String value) { + addCriterion("remark not like", value, "remark"); + return (Criteria) this; + } + + public Criteria andRemarkIn(List values) { + addCriterion("remark in", values, "remark"); + return (Criteria) this; + } + + public Criteria andRemarkNotIn(List values) { + addCriterion("remark not in", values, "remark"); + return (Criteria) this; + } + + public Criteria andRemarkBetween(String value1, String value2) { + addCriterion("remark between", value1, value2, "remark"); + return (Criteria) this; + } + + public Criteria andRemarkNotBetween(String value1, String value2) { + addCriterion("remark not between", value1, value2, "remark"); + return (Criteria) this; + } + + public Criteria andBlackStatusIsNull() { + addCriterion("black_status is null"); + return (Criteria) this; + } + + public Criteria andBlackStatusIsNotNull() { + addCriterion("black_status is not null"); + return (Criteria) this; + } + + public Criteria andBlackStatusEqualTo(Integer value) { + addCriterion("black_status =", value, "blackStatus"); + return (Criteria) this; + } + + public Criteria andBlackStatusNotEqualTo(Integer value) { + addCriterion("black_status <>", value, "blackStatus"); + return (Criteria) this; + } + + public Criteria andBlackStatusGreaterThan(Integer value) { + addCriterion("black_status >", value, "blackStatus"); + return (Criteria) this; + } + + public Criteria andBlackStatusGreaterThanOrEqualTo(Integer value) { + addCriterion("black_status >=", value, "blackStatus"); + return (Criteria) this; + } + + public Criteria andBlackStatusLessThan(Integer value) { + addCriterion("black_status <", value, "blackStatus"); + return (Criteria) this; + } + + public Criteria andBlackStatusLessThanOrEqualTo(Integer value) { + addCriterion("black_status <=", value, "blackStatus"); + return (Criteria) this; + } + + public Criteria andBlackStatusIn(List values) { + addCriterion("black_status in", values, "blackStatus"); + return (Criteria) this; + } + + public Criteria andBlackStatusNotIn(List values) { + addCriterion("black_status not in", values, "blackStatus"); + return (Criteria) this; + } + + public Criteria andBlackStatusBetween(Integer value1, Integer value2) { + addCriterion("black_status between", value1, value2, "blackStatus"); + return (Criteria) this; + } + + public Criteria andBlackStatusNotBetween(Integer value1, Integer value2) { + addCriterion("black_status not between", value1, value2, "blackStatus"); + return (Criteria) this; + } + + public Criteria andAuditTimeIsNull() { + addCriterion("audit_time is null"); + return (Criteria) this; + } + + public Criteria andAuditTimeIsNotNull() { + addCriterion("audit_time is not null"); + return (Criteria) this; + } + + public Criteria andAuditTimeEqualTo(Date value) { + addCriterion("audit_time =", value, "auditTime"); + return (Criteria) this; + } + + public Criteria andAuditTimeNotEqualTo(Date value) { + addCriterion("audit_time <>", value, "auditTime"); + return (Criteria) this; + } + + public Criteria andAuditTimeGreaterThan(Date value) { + addCriterion("audit_time >", value, "auditTime"); + return (Criteria) this; + } + + public Criteria andAuditTimeGreaterThanOrEqualTo(Date value) { + addCriterion("audit_time >=", value, "auditTime"); + return (Criteria) this; + } + + public Criteria andAuditTimeLessThan(Date value) { + addCriterion("audit_time <", value, "auditTime"); + return (Criteria) this; + } + + public Criteria andAuditTimeLessThanOrEqualTo(Date value) { + addCriterion("audit_time <=", value, "auditTime"); + return (Criteria) this; + } + + public Criteria andAuditTimeIn(List values) { + addCriterion("audit_time in", values, "auditTime"); + return (Criteria) this; + } + + public Criteria andAuditTimeNotIn(List values) { + addCriterion("audit_time not in", values, "auditTime"); + return (Criteria) this; + } + + public Criteria andAuditTimeBetween(Date value1, Date value2) { + addCriterion("audit_time between", value1, value2, "auditTime"); + return (Criteria) this; + } + + public Criteria andAuditTimeNotBetween(Date value1, Date value2) { + addCriterion("audit_time not between", value1, value2, "auditTime"); + return (Criteria) this; + } + + public Criteria andCashBlackStatusIsNull() { + addCriterion("cash_black_status is null"); + return (Criteria) this; + } + + public Criteria andCashBlackStatusIsNotNull() { + addCriterion("cash_black_status is not null"); + return (Criteria) this; + } + + public Criteria andCashBlackStatusEqualTo(Integer value) { + addCriterion("cash_black_status =", value, "cashBlackStatus"); + return (Criteria) this; + } + + public Criteria andCashBlackStatusNotEqualTo(Integer value) { + addCriterion("cash_black_status <>", value, "cashBlackStatus"); + return (Criteria) this; + } + + public Criteria andCashBlackStatusGreaterThan(Integer value) { + addCriterion("cash_black_status >", value, "cashBlackStatus"); + return (Criteria) this; + } + + public Criteria andCashBlackStatusGreaterThanOrEqualTo(Integer value) { + addCriterion("cash_black_status >=", value, "cashBlackStatus"); + return (Criteria) this; + } + + public Criteria andCashBlackStatusLessThan(Integer value) { + addCriterion("cash_black_status <", value, "cashBlackStatus"); + return (Criteria) this; + } + + public Criteria andCashBlackStatusLessThanOrEqualTo(Integer value) { + addCriterion("cash_black_status <=", value, "cashBlackStatus"); + return (Criteria) this; + } + + public Criteria andCashBlackStatusIn(List values) { + addCriterion("cash_black_status in", values, "cashBlackStatus"); + return (Criteria) this; + } + + public Criteria andCashBlackStatusNotIn(List values) { + addCriterion("cash_black_status not in", values, "cashBlackStatus"); + return (Criteria) this; + } + + public Criteria andCashBlackStatusBetween(Integer value1, Integer value2) { + addCriterion("cash_black_status between", value1, value2, "cashBlackStatus"); + return (Criteria) this; + } + + public Criteria andCashBlackStatusNotBetween(Integer value1, Integer value2) { + addCriterion("cash_black_status not between", value1, value2, "cashBlackStatus"); + return (Criteria) this; + } + + public Criteria andCashQuotaIsNull() { + addCriterion("cash_quota is null"); + return (Criteria) this; + } + + public Criteria andCashQuotaIsNotNull() { + addCriterion("cash_quota is not null"); + return (Criteria) this; + } + + public Criteria andCashQuotaEqualTo(BigDecimal value) { + addCriterion("cash_quota =", value, "cashQuota"); + return (Criteria) this; + } + + public Criteria andCashQuotaNotEqualTo(BigDecimal value) { + addCriterion("cash_quota <>", value, "cashQuota"); + return (Criteria) this; + } + + public Criteria andCashQuotaGreaterThan(BigDecimal value) { + addCriterion("cash_quota >", value, "cashQuota"); + return (Criteria) this; + } + + public Criteria andCashQuotaGreaterThanOrEqualTo(BigDecimal value) { + addCriterion("cash_quota >=", value, "cashQuota"); + return (Criteria) this; + } + + public Criteria andCashQuotaLessThan(BigDecimal value) { + addCriterion("cash_quota <", value, "cashQuota"); + return (Criteria) this; + } + + public Criteria andCashQuotaLessThanOrEqualTo(BigDecimal value) { + addCriterion("cash_quota <=", value, "cashQuota"); + return (Criteria) this; + } + + public Criteria andCashQuotaIn(List values) { + addCriterion("cash_quota in", values, "cashQuota"); + return (Criteria) this; + } + + public Criteria andCashQuotaNotIn(List values) { + addCriterion("cash_quota not in", values, "cashQuota"); + return (Criteria) this; + } + + public Criteria andCashQuotaBetween(BigDecimal value1, BigDecimal value2) { + addCriterion("cash_quota between", value1, value2, "cashQuota"); + return (Criteria) this; + } + + public Criteria andCashQuotaNotBetween(BigDecimal value1, BigDecimal value2) { + addCriterion("cash_quota not between", value1, value2, "cashQuota"); + return (Criteria) this; + } + + public Criteria andFrozenCashQuotaIsNull() { + addCriterion("frozen_cash_quota is null"); + return (Criteria) this; + } + + public Criteria andFrozenCashQuotaIsNotNull() { + addCriterion("frozen_cash_quota is not null"); + return (Criteria) this; + } + + public Criteria andFrozenCashQuotaEqualTo(BigDecimal value) { + addCriterion("frozen_cash_quota =", value, "frozenCashQuota"); + return (Criteria) this; + } + + public Criteria andFrozenCashQuotaNotEqualTo(BigDecimal value) { + addCriterion("frozen_cash_quota <>", value, "frozenCashQuota"); + return (Criteria) this; + } + + public Criteria andFrozenCashQuotaGreaterThan(BigDecimal value) { + addCriterion("frozen_cash_quota >", value, "frozenCashQuota"); + return (Criteria) this; + } + + public Criteria andFrozenCashQuotaGreaterThanOrEqualTo(BigDecimal value) { + addCriterion("frozen_cash_quota >=", value, "frozenCashQuota"); + return (Criteria) this; + } + + public Criteria andFrozenCashQuotaLessThan(BigDecimal value) { + addCriterion("frozen_cash_quota <", value, "frozenCashQuota"); + return (Criteria) this; + } + + public Criteria andFrozenCashQuotaLessThanOrEqualTo(BigDecimal value) { + addCriterion("frozen_cash_quota <=", value, "frozenCashQuota"); + return (Criteria) this; + } + + public Criteria andFrozenCashQuotaIn(List values) { + addCriterion("frozen_cash_quota in", values, "frozenCashQuota"); + return (Criteria) this; + } + + public Criteria andFrozenCashQuotaNotIn(List values) { + addCriterion("frozen_cash_quota not in", values, "frozenCashQuota"); + return (Criteria) this; + } + + public Criteria andFrozenCashQuotaBetween(BigDecimal value1, BigDecimal value2) { + addCriterion("frozen_cash_quota between", value1, value2, "frozenCashQuota"); + return (Criteria) this; + } + + public Criteria andFrozenCashQuotaNotBetween(BigDecimal value1, BigDecimal value2) { + addCriterion("frozen_cash_quota not between", value1, value2, "frozenCashQuota"); + return (Criteria) this; + } + + public Criteria andCreditQuotaIsNull() { + addCriterion("credit_quota is null"); + return (Criteria) this; + } + + public Criteria andCreditQuotaIsNotNull() { + addCriterion("credit_quota is not null"); + return (Criteria) this; + } + + public Criteria andCreditQuotaEqualTo(BigDecimal value) { + addCriterion("credit_quota =", value, "creditQuota"); + return (Criteria) this; + } + + public Criteria andCreditQuotaNotEqualTo(BigDecimal value) { + addCriterion("credit_quota <>", value, "creditQuota"); + return (Criteria) this; + } + + public Criteria andCreditQuotaGreaterThan(BigDecimal value) { + addCriterion("credit_quota >", value, "creditQuota"); + return (Criteria) this; + } + + public Criteria andCreditQuotaGreaterThanOrEqualTo(BigDecimal value) { + addCriterion("credit_quota >=", value, "creditQuota"); + return (Criteria) this; + } + + public Criteria andCreditQuotaLessThan(BigDecimal value) { + addCriterion("credit_quota <", value, "creditQuota"); + return (Criteria) this; + } + + public Criteria andCreditQuotaLessThanOrEqualTo(BigDecimal value) { + addCriterion("credit_quota <=", value, "creditQuota"); + return (Criteria) this; + } + + public Criteria andCreditQuotaIn(List values) { + addCriterion("credit_quota in", values, "creditQuota"); + return (Criteria) this; + } + + public Criteria andCreditQuotaNotIn(List values) { + addCriterion("credit_quota not in", values, "creditQuota"); + return (Criteria) this; + } + + public Criteria andCreditQuotaBetween(BigDecimal value1, BigDecimal value2) { + addCriterion("credit_quota between", value1, value2, "creditQuota"); + return (Criteria) this; + } + + public Criteria andCreditQuotaNotBetween(BigDecimal value1, BigDecimal value2) { + addCriterion("credit_quota not between", value1, value2, "creditQuota"); + return (Criteria) this; + } + + public Criteria andFrozenCreditQuotaIsNull() { + addCriterion("frozen_credit_quota is null"); + return (Criteria) this; + } + + public Criteria andFrozenCreditQuotaIsNotNull() { + addCriterion("frozen_credit_quota is not null"); + return (Criteria) this; + } + + public Criteria andFrozenCreditQuotaEqualTo(BigDecimal value) { + addCriterion("frozen_credit_quota =", value, "frozenCreditQuota"); + return (Criteria) this; + } + + public Criteria andFrozenCreditQuotaNotEqualTo(BigDecimal value) { + addCriterion("frozen_credit_quota <>", value, "frozenCreditQuota"); + return (Criteria) this; + } + + public Criteria andFrozenCreditQuotaGreaterThan(BigDecimal value) { + addCriterion("frozen_credit_quota >", value, "frozenCreditQuota"); + return (Criteria) this; + } + + public Criteria andFrozenCreditQuotaGreaterThanOrEqualTo(BigDecimal value) { + addCriterion("frozen_credit_quota >=", value, "frozenCreditQuota"); + return (Criteria) this; + } + + public Criteria andFrozenCreditQuotaLessThan(BigDecimal value) { + addCriterion("frozen_credit_quota <", value, "frozenCreditQuota"); + return (Criteria) this; + } + + public Criteria andFrozenCreditQuotaLessThanOrEqualTo(BigDecimal value) { + addCriterion("frozen_credit_quota <=", value, "frozenCreditQuota"); + return (Criteria) this; + } + + public Criteria andFrozenCreditQuotaIn(List values) { + addCriterion("frozen_credit_quota in", values, "frozenCreditQuota"); + return (Criteria) this; + } + + public Criteria andFrozenCreditQuotaNotIn(List values) { + addCriterion("frozen_credit_quota not in", values, "frozenCreditQuota"); + return (Criteria) this; + } + + public Criteria andFrozenCreditQuotaBetween(BigDecimal value1, BigDecimal value2) { + addCriterion("frozen_credit_quota between", value1, value2, "frozenCreditQuota"); + return (Criteria) this; + } + + public Criteria andFrozenCreditQuotaNotBetween(BigDecimal value1, BigDecimal value2) { + addCriterion("frozen_credit_quota not between", value1, value2, "frozenCreditQuota"); + return (Criteria) this; + } + + public Criteria andAuditStatusIsNull() { + addCriterion("audit_status is null"); + return (Criteria) this; + } + + public Criteria andAuditStatusIsNotNull() { + addCriterion("audit_status is not null"); + return (Criteria) this; + } + + public Criteria andAuditStatusEqualTo(Integer value) { + addCriterion("audit_status =", value, "auditStatus"); + return (Criteria) this; + } + + public Criteria andAuditStatusNotEqualTo(Integer value) { + addCriterion("audit_status <>", value, "auditStatus"); + return (Criteria) this; + } + + public Criteria andAuditStatusGreaterThan(Integer value) { + addCriterion("audit_status >", value, "auditStatus"); + return (Criteria) this; + } + + public Criteria andAuditStatusGreaterThanOrEqualTo(Integer value) { + addCriterion("audit_status >=", value, "auditStatus"); + return (Criteria) this; + } + + public Criteria andAuditStatusLessThan(Integer value) { + addCriterion("audit_status <", value, "auditStatus"); + return (Criteria) this; + } + + public Criteria andAuditStatusLessThanOrEqualTo(Integer value) { + addCriterion("audit_status <=", value, "auditStatus"); + return (Criteria) this; + } + + public Criteria andAuditStatusIn(List values) { + addCriterion("audit_status in", values, "auditStatus"); + return (Criteria) this; + } + + public Criteria andAuditStatusNotIn(List values) { + addCriterion("audit_status not in", values, "auditStatus"); + return (Criteria) this; + } + + public Criteria andAuditStatusBetween(Integer value1, Integer value2) { + addCriterion("audit_status between", value1, value2, "auditStatus"); + return (Criteria) this; + } + + public Criteria andAuditStatusNotBetween(Integer value1, Integer value2) { + addCriterion("audit_status not between", value1, value2, "auditStatus"); + return (Criteria) this; + } + } + + public static class Criteria extends GeneratedCriteria { + + protected Criteria() { + super(); + } + } + + public static class Criterion { + private String condition; + + private Object value; + + private Object secondValue; + + private boolean noValue; + + private boolean singleValue; + + private boolean betweenValue; + + private boolean listValue; + + private String typeHandler; + + public String getCondition() { + return condition; + } + + public Object getValue() { + return value; + } + + public Object getSecondValue() { + return secondValue; + } + + public boolean isNoValue() { + return noValue; + } + + public boolean isSingleValue() { + return singleValue; + } + + public boolean isBetweenValue() { + return betweenValue; + } + + public boolean isListValue() { + return listValue; + } + + public String getTypeHandler() { + return typeHandler; + } + + protected Criterion(String condition) { + super(); + this.condition = condition; + this.typeHandler = null; + this.noValue = true; + } + + protected Criterion(String condition, Object value, String typeHandler) { + super(); + this.condition = condition; + this.value = value; + this.typeHandler = typeHandler; + if (value instanceof List) { + this.listValue = true; + } else { + this.singleValue = true; + } + } + + protected Criterion(String condition, Object value) { + this(condition, value, null); + } + + protected Criterion(String condition, Object value, Object secondValue, String typeHandler) { + super(); + this.condition = condition; + this.value = value; + this.secondValue = secondValue; + this.typeHandler = typeHandler; + this.betweenValue = true; + } + + protected Criterion(String condition, Object value, Object secondValue) { + this(condition, value, secondValue, null); + } + } +} \ No newline at end of file diff --git a/framework/spring/spring-data/spring-mybatis/src/main/resources/application.properties b/framework/spring/spring-data/spring-mybatis/src/main/resources/application.properties index ad012fe47..4b0a46aca 100644 --- a/framework/spring/spring-data/spring-mybatis/src/main/resources/application.properties +++ b/framework/spring/spring-data/spring-mybatis/src/main/resources/application.properties @@ -54,3 +54,10 @@ spring.datasource.druid.filter.slf4j.connection-log-enabled=false pagehelper.reasonable= true pagehelper.support-methods-arguments=true + + +logging.config=classpath:config/logback-spring.xml + +#mybatis 配置 +#mybatis.generator.configurationFile=config/generatorConfig.xml +mybatis.configuration.use-generated-keys=true \ No newline at end of file diff --git a/framework/spring/spring-data/spring-mybatis/src/main/resources/generatorConfig.xml b/framework/spring/spring-data/spring-mybatis/src/main/resources/config/generatorConfig.xml similarity index 64% rename from framework/spring/spring-data/spring-mybatis/src/main/resources/generatorConfig.xml rename to framework/spring/spring-data/spring-mybatis/src/main/resources/config/generatorConfig.xml index c7489ebf0..b87595ca5 100644 --- a/framework/spring/spring-data/spring-mybatis/src/main/resources/generatorConfig.xml +++ b/framework/spring/spring-data/spring-mybatis/src/main/resources/config/generatorConfig.xml @@ -11,7 +11,33 @@ - + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -42,11 +68,11 @@ - - - - - + + + + + @@ -54,6 +80,11 @@ + + + + + diff --git a/framework/spring/spring-data/spring-mybatis/src/main/resources/logback-spring.xml b/framework/spring/spring-data/spring-mybatis/src/main/resources/config/logback-spring.xml similarity index 100% rename from framework/spring/spring-data/spring-mybatis/src/main/resources/logback-spring.xml rename to framework/spring/spring-data/spring-mybatis/src/main/resources/config/logback-spring.xml diff --git a/framework/spring/spring-data/spring-mybatis/src/main/resources/config/mappers/AppUserMapper.xml b/framework/spring/spring-data/spring-mybatis/src/main/resources/config/mappers/AppUserMapper.xml new file mode 100644 index 000000000..bc450623e --- /dev/null +++ b/framework/spring/spring-data/spring-mybatis/src/main/resources/config/mappers/AppUserMapper.xml @@ -0,0 +1,594 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + and ${criterion.condition} + + + and ${criterion.condition} #{criterion.value} + + + and ${criterion.condition} #{criterion.value} and #{criterion.secondValue} + + + and ${criterion.condition} + + #{listItem} + + + + + + + + + + + id, open_id, register_channel, username, id_card, name, id_card_detail_address, is_verify_id_card, + id_card_coverup, id_card_coverdown, id_card_hold, is_other_picture_auth, is_bankcard_auth, + signature_pic, is_additional_auth, is_emergency_auth, phone, email, address, user_status, + create_time, update_time, remark, black_status, audit_time, cash_black_status, cash_quota, + frozen_cash_quota, credit_quota, frozen_credit_quota, audit_status + + + id_card_police + + + + + + delete from ca_app_user + where id = #{id,jdbcType=BIGINT} + + + insert into ca_app_user (id, open_id, register_channel, + username, id_card, name, + id_card_detail_address, is_verify_id_card, id_card_coverup, + id_card_coverdown, id_card_hold, is_other_picture_auth, + is_bankcard_auth, signature_pic, is_additional_auth, + is_emergency_auth, phone, email, + address, user_status, create_time, + update_time, remark, black_status, + audit_time, cash_black_status, cash_quota, + frozen_cash_quota, credit_quota, frozen_credit_quota, + audit_status, id_card_police) + values (#{id,jdbcType=BIGINT}, #{openId,jdbcType=VARCHAR}, #{registerChannel,jdbcType=BIGINT}, + #{username,jdbcType=VARCHAR}, #{idCard,jdbcType=VARCHAR}, #{name,jdbcType=VARCHAR}, + #{idCardDetailAddress,jdbcType=VARCHAR}, #{isVerifyIdCard,jdbcType=BIT}, #{idCardCoverup,jdbcType=VARCHAR}, + #{idCardCoverdown,jdbcType=VARCHAR}, #{idCardHold,jdbcType=VARCHAR}, #{isOtherPictureAuth,jdbcType=BIT}, + #{isBankcardAuth,jdbcType=BIT}, #{signaturePic,jdbcType=VARCHAR}, #{isAdditionalAuth,jdbcType=BIT}, + #{isEmergencyAuth,jdbcType=BIT}, #{phone,jdbcType=VARCHAR}, #{email,jdbcType=VARCHAR}, + #{address,jdbcType=VARCHAR}, #{userStatus,jdbcType=INTEGER}, #{createTime,jdbcType=TIMESTAMP}, + #{updateTime,jdbcType=TIMESTAMP}, #{remark,jdbcType=VARCHAR}, #{blackStatus,jdbcType=INTEGER}, + #{auditTime,jdbcType=TIMESTAMP}, #{cashBlackStatus,jdbcType=INTEGER}, #{cashQuota,jdbcType=DECIMAL}, + #{frozenCashQuota,jdbcType=DECIMAL}, #{creditQuota,jdbcType=DECIMAL}, #{frozenCreditQuota,jdbcType=DECIMAL}, + #{auditStatus,jdbcType=INTEGER}, #{idCardPolice,jdbcType=LONGVARCHAR}) + + + insert into ca_app_user + + + id, + + + open_id, + + + register_channel, + + + username, + + + id_card, + + + name, + + + id_card_detail_address, + + + is_verify_id_card, + + + id_card_coverup, + + + id_card_coverdown, + + + id_card_hold, + + + is_other_picture_auth, + + + is_bankcard_auth, + + + signature_pic, + + + is_additional_auth, + + + is_emergency_auth, + + + phone, + + + email, + + + address, + + + user_status, + + + create_time, + + + update_time, + + + remark, + + + black_status, + + + audit_time, + + + cash_black_status, + + + cash_quota, + + + frozen_cash_quota, + + + credit_quota, + + + frozen_credit_quota, + + + audit_status, + + + id_card_police, + + + + + #{id,jdbcType=BIGINT}, + + + #{openId,jdbcType=VARCHAR}, + + + #{registerChannel,jdbcType=BIGINT}, + + + #{username,jdbcType=VARCHAR}, + + + #{idCard,jdbcType=VARCHAR}, + + + #{name,jdbcType=VARCHAR}, + + + #{idCardDetailAddress,jdbcType=VARCHAR}, + + + #{isVerifyIdCard,jdbcType=BIT}, + + + #{idCardCoverup,jdbcType=VARCHAR}, + + + #{idCardCoverdown,jdbcType=VARCHAR}, + + + #{idCardHold,jdbcType=VARCHAR}, + + + #{isOtherPictureAuth,jdbcType=BIT}, + + + #{isBankcardAuth,jdbcType=BIT}, + + + #{signaturePic,jdbcType=VARCHAR}, + + + #{isAdditionalAuth,jdbcType=BIT}, + + + #{isEmergencyAuth,jdbcType=BIT}, + + + #{phone,jdbcType=VARCHAR}, + + + #{email,jdbcType=VARCHAR}, + + + #{address,jdbcType=VARCHAR}, + + + #{userStatus,jdbcType=INTEGER}, + + + #{createTime,jdbcType=TIMESTAMP}, + + + #{updateTime,jdbcType=TIMESTAMP}, + + + #{remark,jdbcType=VARCHAR}, + + + #{blackStatus,jdbcType=INTEGER}, + + + #{auditTime,jdbcType=TIMESTAMP}, + + + #{cashBlackStatus,jdbcType=INTEGER}, + + + #{cashQuota,jdbcType=DECIMAL}, + + + #{frozenCashQuota,jdbcType=DECIMAL}, + + + #{creditQuota,jdbcType=DECIMAL}, + + + #{frozenCreditQuota,jdbcType=DECIMAL}, + + + #{auditStatus,jdbcType=INTEGER}, + + + #{idCardPolice,jdbcType=LONGVARCHAR}, + + + + + update ca_app_user + + + open_id = #{openId,jdbcType=VARCHAR}, + + + register_channel = #{registerChannel,jdbcType=BIGINT}, + + + username = #{username,jdbcType=VARCHAR}, + + + id_card = #{idCard,jdbcType=VARCHAR}, + + + name = #{name,jdbcType=VARCHAR}, + + + id_card_detail_address = #{idCardDetailAddress,jdbcType=VARCHAR}, + + + is_verify_id_card = #{isVerifyIdCard,jdbcType=BIT}, + + + id_card_coverup = #{idCardCoverup,jdbcType=VARCHAR}, + + + id_card_coverdown = #{idCardCoverdown,jdbcType=VARCHAR}, + + + id_card_hold = #{idCardHold,jdbcType=VARCHAR}, + + + is_other_picture_auth = #{isOtherPictureAuth,jdbcType=BIT}, + + + is_bankcard_auth = #{isBankcardAuth,jdbcType=BIT}, + + + signature_pic = #{signaturePic,jdbcType=VARCHAR}, + + + is_additional_auth = #{isAdditionalAuth,jdbcType=BIT}, + + + is_emergency_auth = #{isEmergencyAuth,jdbcType=BIT}, + + + phone = #{phone,jdbcType=VARCHAR}, + + + email = #{email,jdbcType=VARCHAR}, + + + address = #{address,jdbcType=VARCHAR}, + + + user_status = #{userStatus,jdbcType=INTEGER}, + + + create_time = #{createTime,jdbcType=TIMESTAMP}, + + + update_time = #{updateTime,jdbcType=TIMESTAMP}, + + + remark = #{remark,jdbcType=VARCHAR}, + + + black_status = #{blackStatus,jdbcType=INTEGER}, + + + audit_time = #{auditTime,jdbcType=TIMESTAMP}, + + + cash_black_status = #{cashBlackStatus,jdbcType=INTEGER}, + + + cash_quota = #{cashQuota,jdbcType=DECIMAL}, + + + frozen_cash_quota = #{frozenCashQuota,jdbcType=DECIMAL}, + + + credit_quota = #{creditQuota,jdbcType=DECIMAL}, + + + frozen_credit_quota = #{frozenCreditQuota,jdbcType=DECIMAL}, + + + audit_status = #{auditStatus,jdbcType=INTEGER}, + + + id_card_police = #{idCardPolice,jdbcType=LONGVARCHAR}, + + + where id = #{id,jdbcType=BIGINT} + + + update ca_app_user + set open_id = #{openId,jdbcType=VARCHAR}, + register_channel = #{registerChannel,jdbcType=BIGINT}, + username = #{username,jdbcType=VARCHAR}, + id_card = #{idCard,jdbcType=VARCHAR}, + name = #{name,jdbcType=VARCHAR}, + id_card_detail_address = #{idCardDetailAddress,jdbcType=VARCHAR}, + is_verify_id_card = #{isVerifyIdCard,jdbcType=BIT}, + id_card_coverup = #{idCardCoverup,jdbcType=VARCHAR}, + id_card_coverdown = #{idCardCoverdown,jdbcType=VARCHAR}, + id_card_hold = #{idCardHold,jdbcType=VARCHAR}, + is_other_picture_auth = #{isOtherPictureAuth,jdbcType=BIT}, + is_bankcard_auth = #{isBankcardAuth,jdbcType=BIT}, + signature_pic = #{signaturePic,jdbcType=VARCHAR}, + is_additional_auth = #{isAdditionalAuth,jdbcType=BIT}, + is_emergency_auth = #{isEmergencyAuth,jdbcType=BIT}, + phone = #{phone,jdbcType=VARCHAR}, + email = #{email,jdbcType=VARCHAR}, + address = #{address,jdbcType=VARCHAR}, + user_status = #{userStatus,jdbcType=INTEGER}, + create_time = #{createTime,jdbcType=TIMESTAMP}, + update_time = #{updateTime,jdbcType=TIMESTAMP}, + remark = #{remark,jdbcType=VARCHAR}, + black_status = #{blackStatus,jdbcType=INTEGER}, + audit_time = #{auditTime,jdbcType=TIMESTAMP}, + cash_black_status = #{cashBlackStatus,jdbcType=INTEGER}, + cash_quota = #{cashQuota,jdbcType=DECIMAL}, + frozen_cash_quota = #{frozenCashQuota,jdbcType=DECIMAL}, + credit_quota = #{creditQuota,jdbcType=DECIMAL}, + frozen_credit_quota = #{frozenCreditQuota,jdbcType=DECIMAL}, + audit_status = #{auditStatus,jdbcType=INTEGER}, + id_card_police = #{idCardPolice,jdbcType=LONGVARCHAR} + where id = #{id,jdbcType=BIGINT} + + + update ca_app_user + set open_id = #{openId,jdbcType=VARCHAR}, + register_channel = #{registerChannel,jdbcType=BIGINT}, + username = #{username,jdbcType=VARCHAR}, + id_card = #{idCard,jdbcType=VARCHAR}, + name = #{name,jdbcType=VARCHAR}, + id_card_detail_address = #{idCardDetailAddress,jdbcType=VARCHAR}, + is_verify_id_card = #{isVerifyIdCard,jdbcType=BIT}, + id_card_coverup = #{idCardCoverup,jdbcType=VARCHAR}, + id_card_coverdown = #{idCardCoverdown,jdbcType=VARCHAR}, + id_card_hold = #{idCardHold,jdbcType=VARCHAR}, + is_other_picture_auth = #{isOtherPictureAuth,jdbcType=BIT}, + is_bankcard_auth = #{isBankcardAuth,jdbcType=BIT}, + signature_pic = #{signaturePic,jdbcType=VARCHAR}, + is_additional_auth = #{isAdditionalAuth,jdbcType=BIT}, + is_emergency_auth = #{isEmergencyAuth,jdbcType=BIT}, + phone = #{phone,jdbcType=VARCHAR}, + email = #{email,jdbcType=VARCHAR}, + address = #{address,jdbcType=VARCHAR}, + user_status = #{userStatus,jdbcType=INTEGER}, + create_time = #{createTime,jdbcType=TIMESTAMP}, + update_time = #{updateTime,jdbcType=TIMESTAMP}, + remark = #{remark,jdbcType=VARCHAR}, + black_status = #{blackStatus,jdbcType=INTEGER}, + audit_time = #{auditTime,jdbcType=TIMESTAMP}, + cash_black_status = #{cashBlackStatus,jdbcType=INTEGER}, + cash_quota = #{cashQuota,jdbcType=DECIMAL}, + frozen_cash_quota = #{frozenCashQuota,jdbcType=DECIMAL}, + credit_quota = #{creditQuota,jdbcType=DECIMAL}, + frozen_credit_quota = #{frozenCreditQuota,jdbcType=DECIMAL}, + audit_status = #{auditStatus,jdbcType=INTEGER} + where id = #{id,jdbcType=BIGINT} + + + + + + \ No newline at end of file diff --git a/framework/spring/spring-data/spring-mybatis/src/site/markdown/index.md b/framework/spring/spring-data/spring-mybatis/src/site/markdown/index.md new file mode 100644 index 000000000..61c7c3152 --- /dev/null +++ b/framework/spring/spring-data/spring-mybatis/src/site/markdown/index.md @@ -0,0 +1,5 @@ +# mybatis 学习 + +参考: +* [mybatis中文简介](http://www.mybatis.org/mybatis-3/zh/index.html) +* [mybatis-generator](http://www.mybatis.org/generator/) \ No newline at end of file diff --git a/framework/spring/spring-data/spring-mybatis/src/test/java/org/laidu/learn/mybatis/mapper/AppUserMapperTest.java b/framework/spring/spring-data/spring-mybatis/src/test/java/org/laidu/learn/mybatis/mapper/AppUserMapperTest.java index d9d7d12a9..d5770a017 100644 --- a/framework/spring/spring-data/spring-mybatis/src/test/java/org/laidu/learn/mybatis/mapper/AppUserMapperTest.java +++ b/framework/spring/spring-data/spring-mybatis/src/test/java/org/laidu/learn/mybatis/mapper/AppUserMapperTest.java @@ -4,7 +4,6 @@ import org.junit.jupiter.api.Test; import org.junit.jupiter.api.extension.ExtendWith; import org.junit.runner.RunWith; -import org.mybatis.spring.boot.test.autoconfigure.MybatisTest; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.jdbc.EmbeddedDatabaseConnection; import org.springframework.boot.test.autoconfigure.jdbc.AutoConfigureTestDatabase; @@ -15,7 +14,6 @@ @RunWith(SpringRunner.class) @SpringBootTest -@MybatisTest @AutoConfigureTestDatabase(replace = AutoConfigureTestDatabase.Replace.AUTO_CONFIGURED,connection = EmbeddedDatabaseConnection.H2) @ExtendWith(SpringExtension.class) class AppUserMapperTest { diff --git a/language-feature/src/site/markdown/index.md b/language-feature/src/site/markdown/index.md index c6f794077..8502eaa16 100644 --- a/language-feature/src/site/markdown/index.md +++ b/language-feature/src/site/markdown/index.md @@ -15,3 +15,14 @@ * [java语法糖](syntactic-sugar.md) +* [序列化](serialize.md) +* [拆装箱](boxed-unboxed.md) +* [正则表达式](regex.md) +* [字符串](string.md) +* [Thread-Local](thread-local.md) +* [volatile](volatile.md) +* []() +* []() +* []() +* []() + From 6196c3d97a48c031945d596b981d5f98d46f92d5 Mon Sep 17 00:00:00 2001 From: "xpcoder823@gmail.com" Date: Wed, 26 Sep 2018 23:37:12 +0800 Subject: [PATCH 171/417] sync --- .../spring/spring-data/spring-mybatis/pom.xml | 15 +- .../org/laidu/learn/mybatis/MybatisApp.java | 2 + .../controller/UserInfoController.java | 6 + .../learn/mybatis/mapper/AppUserMapper.java | 29 +- .../mybatis/mapper/AppUserSqlProvider.java | 48 - .../laidu/learn/mybatis/model/AppUser.java | 22 +- .../learn/mybatis/model/AppUserExample.java | 2294 ----------------- .../src/main/resources/application.properties | 24 +- .../main/resources/config/generatorConfig.xml | 3 +- .../main/resources/config/logback-spring.xml | 12 +- 10 files changed, 61 insertions(+), 2394 deletions(-) delete mode 100644 framework/spring/spring-data/spring-mybatis/src/main/java/org/laidu/learn/mybatis/model/AppUserExample.java diff --git a/framework/spring/spring-data/spring-mybatis/pom.xml b/framework/spring/spring-data/spring-mybatis/pom.xml index a92fe9365..291e2e6b4 100644 --- a/framework/spring/spring-data/spring-mybatis/pom.xml +++ b/framework/spring/spring-data/spring-mybatis/pom.xml @@ -31,6 +31,19 @@ org.mybatis.spring.boot mybatis-spring-boot-starter-test + + org.springframework.boot + spring-boot-starter-cache + + + org.springframework.boot + spring-boot-starter-data-redis + + + org.apache.commons + commons-pool2 + + com.github.pagehelper pagehelper-spring-boot-starter @@ -62,7 +75,7 @@ Generate MyBatis Artifacts - generate + generate-sources diff --git a/framework/spring/spring-data/spring-mybatis/src/main/java/org/laidu/learn/mybatis/MybatisApp.java b/framework/spring/spring-data/spring-mybatis/src/main/java/org/laidu/learn/mybatis/MybatisApp.java index 50ad7e2de..3ac7d65a8 100644 --- a/framework/spring/spring-data/spring-mybatis/src/main/java/org/laidu/learn/mybatis/MybatisApp.java +++ b/framework/spring/spring-data/spring-mybatis/src/main/java/org/laidu/learn/mybatis/MybatisApp.java @@ -3,6 +3,7 @@ import org.mybatis.spring.annotation.MapperScan; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; +import org.springframework.cache.annotation.EnableCaching; /** * org.laidu.learn.amqp.Application @@ -11,6 +12,7 @@ */ @MapperScan("org.laidu.learn.mybatis.mapper") @SpringBootApplication +@EnableCaching(proxyTargetClass = true) public class MybatisApp { public static void main(String[] args){ diff --git a/framework/spring/spring-data/spring-mybatis/src/main/java/org/laidu/learn/mybatis/controller/UserInfoController.java b/framework/spring/spring-data/spring-mybatis/src/main/java/org/laidu/learn/mybatis/controller/UserInfoController.java index 4b0eb9f1c..921972897 100644 --- a/framework/spring/spring-data/spring-mybatis/src/main/java/org/laidu/learn/mybatis/controller/UserInfoController.java +++ b/framework/spring/spring-data/spring-mybatis/src/main/java/org/laidu/learn/mybatis/controller/UserInfoController.java @@ -4,6 +4,7 @@ import org.laidu.learn.mybatis.mapper.AppUserMapper; import org.laidu.learn.mybatis.model.AppUser; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.transaction.annotation.Transactional; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.bind.annotation.RequestMapping; @@ -31,10 +32,15 @@ public UserInfoController(AppUserMapper userMapper) { } @GetMapping("/query/{id}") + @Transactional public AppUser queryById(@PathVariable("id") Long id){ AppUser user = userMapper.selectByPrimaryKey(id); + System.out.println(user.getId()); + + user = userMapper.selectByPrimaryKey(id); + return user; } diff --git a/framework/spring/spring-data/spring-mybatis/src/main/java/org/laidu/learn/mybatis/mapper/AppUserMapper.java b/framework/spring/spring-data/spring-mybatis/src/main/java/org/laidu/learn/mybatis/mapper/AppUserMapper.java index db78c6dde..ff7faaee1 100644 --- a/framework/spring/spring-data/spring-mybatis/src/main/java/org/laidu/learn/mybatis/mapper/AppUserMapper.java +++ b/framework/spring/spring-data/spring-mybatis/src/main/java/org/laidu/learn/mybatis/mapper/AppUserMapper.java @@ -33,9 +33,6 @@ public interface AppUserMapper { "user_status, create_time, ", "update_time, remark, ", "black_status, audit_time, ", - "cash_black_status, cash_quota, ", - "frozen_cash_quota, credit_quota, ", - "frozen_credit_quota, audit_status, ", "id_card_police)", "values (#{id,jdbcType=BIGINT}, #{openId,jdbcType=VARCHAR}, ", "#{registerChannel,jdbcType=BIGINT}, #{username,jdbcType=VARCHAR}, ", @@ -49,9 +46,6 @@ public interface AppUserMapper { "#{userStatus,jdbcType=INTEGER}, #{createTime,jdbcType=TIMESTAMP}, ", "#{updateTime,jdbcType=TIMESTAMP}, #{remark,jdbcType=VARCHAR}, ", "#{blackStatus,jdbcType=INTEGER}, #{auditTime,jdbcType=TIMESTAMP}, ", - "#{cashBlackStatus,jdbcType=INTEGER}, #{cashQuota,jdbcType=DECIMAL}, ", - "#{frozenCashQuota,jdbcType=DECIMAL}, #{creditQuota,jdbcType=DECIMAL}, ", - "#{frozenCreditQuota,jdbcType=DECIMAL}, #{auditStatus,jdbcType=INTEGER}, ", "#{idCardPolice,jdbcType=LONGVARCHAR})" }) int insert(AppUser record); @@ -65,8 +59,7 @@ public interface AppUserMapper { "is_verify_id_card, id_card_coverup, id_card_coverdown, id_card_hold, is_other_picture_auth, ", "is_bankcard_auth, signature_pic, is_additional_auth, is_emergency_auth, phone, ", "email, address, user_status, create_time, update_time, remark, black_status, ", - "audit_time, cash_black_status, cash_quota, frozen_cash_quota, credit_quota, ", - "frozen_credit_quota, audit_status, id_card_police", + "audit_time, id_card_police", "from ca_app_user", "where id = #{id,jdbcType=BIGINT}" }) @@ -96,12 +89,6 @@ public interface AppUserMapper { @Result(column="remark", property="remark", jdbcType=JdbcType.VARCHAR), @Result(column="black_status", property="blackStatus", jdbcType=JdbcType.INTEGER), @Result(column="audit_time", property="auditTime", jdbcType=JdbcType.TIMESTAMP), - @Result(column="cash_black_status", property="cashBlackStatus", jdbcType=JdbcType.INTEGER), - @Result(column="cash_quota", property="cashQuota", jdbcType=JdbcType.DECIMAL), - @Result(column="frozen_cash_quota", property="frozenCashQuota", jdbcType=JdbcType.DECIMAL), - @Result(column="credit_quota", property="creditQuota", jdbcType=JdbcType.DECIMAL), - @Result(column="frozen_credit_quota", property="frozenCreditQuota", jdbcType=JdbcType.DECIMAL), - @Result(column="audit_status", property="auditStatus", jdbcType=JdbcType.INTEGER), @Result(column="id_card_police", property="idCardPolice", jdbcType=JdbcType.LONGVARCHAR) }) AppUser selectByPrimaryKey(Long id); @@ -135,12 +122,6 @@ public interface AppUserMapper { "remark = #{remark,jdbcType=VARCHAR},", "black_status = #{blackStatus,jdbcType=INTEGER},", "audit_time = #{auditTime,jdbcType=TIMESTAMP},", - "cash_black_status = #{cashBlackStatus,jdbcType=INTEGER},", - "cash_quota = #{cashQuota,jdbcType=DECIMAL},", - "frozen_cash_quota = #{frozenCashQuota,jdbcType=DECIMAL},", - "credit_quota = #{creditQuota,jdbcType=DECIMAL},", - "frozen_credit_quota = #{frozenCreditQuota,jdbcType=DECIMAL},", - "audit_status = #{auditStatus,jdbcType=INTEGER},", "id_card_police = #{idCardPolice,jdbcType=LONGVARCHAR}", "where id = #{id,jdbcType=BIGINT}" }) @@ -171,13 +152,7 @@ public interface AppUserMapper { "update_time = #{updateTime,jdbcType=TIMESTAMP},", "remark = #{remark,jdbcType=VARCHAR},", "black_status = #{blackStatus,jdbcType=INTEGER},", - "audit_time = #{auditTime,jdbcType=TIMESTAMP},", - "cash_black_status = #{cashBlackStatus,jdbcType=INTEGER},", - "cash_quota = #{cashQuota,jdbcType=DECIMAL},", - "frozen_cash_quota = #{frozenCashQuota,jdbcType=DECIMAL},", - "credit_quota = #{creditQuota,jdbcType=DECIMAL},", - "frozen_credit_quota = #{frozenCreditQuota,jdbcType=DECIMAL},", - "audit_status = #{auditStatus,jdbcType=INTEGER}", + "audit_time = #{auditTime,jdbcType=TIMESTAMP}", "where id = #{id,jdbcType=BIGINT}" }) int updateByPrimaryKey(AppUser record); diff --git a/framework/spring/spring-data/spring-mybatis/src/main/java/org/laidu/learn/mybatis/mapper/AppUserSqlProvider.java b/framework/spring/spring-data/spring-mybatis/src/main/java/org/laidu/learn/mybatis/mapper/AppUserSqlProvider.java index bb9c215a3..27edf018a 100644 --- a/framework/spring/spring-data/spring-mybatis/src/main/java/org/laidu/learn/mybatis/mapper/AppUserSqlProvider.java +++ b/framework/spring/spring-data/spring-mybatis/src/main/java/org/laidu/learn/mybatis/mapper/AppUserSqlProvider.java @@ -109,30 +109,6 @@ public String insertSelective(AppUser record) { sql.VALUES("audit_time", "#{auditTime,jdbcType=TIMESTAMP}"); } - if (record.getCashBlackStatus() != null) { - sql.VALUES("cash_black_status", "#{cashBlackStatus,jdbcType=INTEGER}"); - } - - if (record.getCashQuota() != null) { - sql.VALUES("cash_quota", "#{cashQuota,jdbcType=DECIMAL}"); - } - - if (record.getFrozenCashQuota() != null) { - sql.VALUES("frozen_cash_quota", "#{frozenCashQuota,jdbcType=DECIMAL}"); - } - - if (record.getCreditQuota() != null) { - sql.VALUES("credit_quota", "#{creditQuota,jdbcType=DECIMAL}"); - } - - if (record.getFrozenCreditQuota() != null) { - sql.VALUES("frozen_credit_quota", "#{frozenCreditQuota,jdbcType=DECIMAL}"); - } - - if (record.getAuditStatus() != null) { - sql.VALUES("audit_status", "#{auditStatus,jdbcType=INTEGER}"); - } - if (record.getIdCardPolice() != null) { sql.VALUES("id_card_police", "#{idCardPolice,jdbcType=LONGVARCHAR}"); } @@ -240,30 +216,6 @@ public String updateByPrimaryKeySelective(AppUser record) { sql.SET("audit_time = #{auditTime,jdbcType=TIMESTAMP}"); } - if (record.getCashBlackStatus() != null) { - sql.SET("cash_black_status = #{cashBlackStatus,jdbcType=INTEGER}"); - } - - if (record.getCashQuota() != null) { - sql.SET("cash_quota = #{cashQuota,jdbcType=DECIMAL}"); - } - - if (record.getFrozenCashQuota() != null) { - sql.SET("frozen_cash_quota = #{frozenCashQuota,jdbcType=DECIMAL}"); - } - - if (record.getCreditQuota() != null) { - sql.SET("credit_quota = #{creditQuota,jdbcType=DECIMAL}"); - } - - if (record.getFrozenCreditQuota() != null) { - sql.SET("frozen_credit_quota = #{frozenCreditQuota,jdbcType=DECIMAL}"); - } - - if (record.getAuditStatus() != null) { - sql.SET("audit_status = #{auditStatus,jdbcType=INTEGER}"); - } - if (record.getIdCardPolice() != null) { sql.SET("id_card_police = #{idCardPolice,jdbcType=LONGVARCHAR}"); } diff --git a/framework/spring/spring-data/spring-mybatis/src/main/java/org/laidu/learn/mybatis/model/AppUser.java b/framework/spring/spring-data/spring-mybatis/src/main/java/org/laidu/learn/mybatis/model/AppUser.java index 5aee7ebbc..2fe8df1ba 100644 --- a/framework/spring/spring-data/spring-mybatis/src/main/java/org/laidu/learn/mybatis/model/AppUser.java +++ b/framework/spring/spring-data/spring-mybatis/src/main/java/org/laidu/learn/mybatis/model/AppUser.java @@ -1,13 +1,17 @@ package org.laidu.learn.mybatis.model; -import java.io.Serializable; -import java.math.BigDecimal; -import java.util.Date; +import lombok.AllArgsConstructor; import lombok.Builder; import lombok.Data; +import lombok.NoArgsConstructor; + +import java.io.Serializable; +import java.util.Date; @Data @Builder +@NoArgsConstructor +@AllArgsConstructor public class AppUser implements Serializable { private Long id; @@ -59,18 +63,6 @@ public class AppUser implements Serializable { private Date auditTime; - private Integer cashBlackStatus; - - private BigDecimal cashQuota; - - private BigDecimal frozenCashQuota; - - private BigDecimal creditQuota; - - private BigDecimal frozenCreditQuota; - - private Integer auditStatus; - private String idCardPolice; private static final long serialVersionUID = 1L; diff --git a/framework/spring/spring-data/spring-mybatis/src/main/java/org/laidu/learn/mybatis/model/AppUserExample.java b/framework/spring/spring-data/spring-mybatis/src/main/java/org/laidu/learn/mybatis/model/AppUserExample.java deleted file mode 100644 index a65b78b90..000000000 --- a/framework/spring/spring-data/spring-mybatis/src/main/java/org/laidu/learn/mybatis/model/AppUserExample.java +++ /dev/null @@ -1,2294 +0,0 @@ -package org.laidu.learn.mybatis.model; - -import java.math.BigDecimal; -import java.util.ArrayList; -import java.util.Date; -import java.util.List; - -public class AppUserExample { - protected String orderByClause; - - protected boolean distinct; - - protected List oredCriteria; - - /** - * This field was generated by MyBatis Generator. - * This field corresponds to the database table ca_app_user - * - * @mbg.generated - * @project https://github.com/itfsw/mybatis-generator-plugin - */ - protected Integer offset; - - /** - * This field was generated by MyBatis Generator. - * This field corresponds to the database table ca_app_user - * - * @mbg.generated - * @project https://github.com/itfsw/mybatis-generator-plugin - */ - protected Integer rows; - - public AppUserExample() { - oredCriteria = new ArrayList(); - } - - public void setOrderByClause(String orderByClause) { - this.orderByClause = orderByClause; - } - - public String getOrderByClause() { - return orderByClause; - } - - public void setDistinct(boolean distinct) { - this.distinct = distinct; - } - - public boolean isDistinct() { - return distinct; - } - - public List getOredCriteria() { - return oredCriteria; - } - - public void or(Criteria criteria) { - oredCriteria.add(criteria); - } - - public Criteria or() { - Criteria criteria = createCriteriaInternal(); - oredCriteria.add(criteria); - return criteria; - } - - public Criteria createCriteria() { - Criteria criteria = createCriteriaInternal(); - if (oredCriteria.size() == 0) { - oredCriteria.add(criteria); - } - return criteria; - } - - protected Criteria createCriteriaInternal() { - Criteria criteria = new Criteria(); - return criteria; - } - - public void clear() { - oredCriteria.clear(); - orderByClause = null; - distinct = false; - rows = null; - offset = null; - } - - /** - * This method was generated by MyBatis Generator. - * This method corresponds to the database table ca_app_user - * - * @mbg.generated - * @project https://github.com/itfsw/mybatis-generator-plugin - */ - public void setOffset(Integer offset) { - this.offset = offset; - } - - /** - * This method was generated by MyBatis Generator. - * This method corresponds to the database table ca_app_user - * - * @mbg.generated - * @project https://github.com/itfsw/mybatis-generator-plugin - */ - public Integer getOffset() { - return this.offset; - } - - /** - * This method was generated by MyBatis Generator. - * This method corresponds to the database table ca_app_user - * - * @mbg.generated - * @project https://github.com/itfsw/mybatis-generator-plugin - */ - public void setRows(Integer rows) { - this.rows = rows; - } - - /** - * This method was generated by MyBatis Generator. - * This method corresponds to the database table ca_app_user - * - * @mbg.generated - * @project https://github.com/itfsw/mybatis-generator-plugin - */ - public Integer getRows() { - return this.rows; - } - - /** - * This method was generated by MyBatis Generator. - * This method corresponds to the database table ca_app_user - * - * @mbg.generated - * @project https://github.com/itfsw/mybatis-generator-plugin - */ - public AppUserExample limit(Integer rows) { - this.rows = rows; - return this; - } - - /** - * This method was generated by MyBatis Generator. - * This method corresponds to the database table ca_app_user - * - * @mbg.generated - * @project https://github.com/itfsw/mybatis-generator-plugin - */ - public AppUserExample limit(Integer offset, Integer rows) { - this.offset = offset; - this.rows = rows; - return this; - } - - /** - * This method was generated by MyBatis Generator. - * This method corresponds to the database table ca_app_user - * - * @mbg.generated - * @project https://github.com/itfsw/mybatis-generator-plugin - */ - public AppUserExample page(Integer page, Integer pageSize) { - this.offset = page * pageSize; - this.rows = pageSize; - return this; - } - - protected abstract static class GeneratedCriteria { - protected List criteria; - - protected GeneratedCriteria() { - super(); - criteria = new ArrayList(); - } - - public boolean isValid() { - return criteria.size() > 0; - } - - public List getAllCriteria() { - return criteria; - } - - public List getCriteria() { - return criteria; - } - - protected void addCriterion(String condition) { - if (condition == null) { - throw new RuntimeException("Value for condition cannot be null"); - } - criteria.add(new Criterion(condition)); - } - - protected void addCriterion(String condition, Object value, String property) { - if (value == null) { - throw new RuntimeException("Value for " + property + " cannot be null"); - } - criteria.add(new Criterion(condition, value)); - } - - protected void addCriterion(String condition, Object value1, Object value2, String property) { - if (value1 == null || value2 == null) { - throw new RuntimeException("Between values for " + property + " cannot be null"); - } - criteria.add(new Criterion(condition, value1, value2)); - } - - public Criteria andIdIsNull() { - addCriterion("id is null"); - return (Criteria) this; - } - - public Criteria andIdIsNotNull() { - addCriterion("id is not null"); - return (Criteria) this; - } - - public Criteria andIdEqualTo(Long value) { - addCriterion("id =", value, "id"); - return (Criteria) this; - } - - public Criteria andIdNotEqualTo(Long value) { - addCriterion("id <>", value, "id"); - return (Criteria) this; - } - - public Criteria andIdGreaterThan(Long value) { - addCriterion("id >", value, "id"); - return (Criteria) this; - } - - public Criteria andIdGreaterThanOrEqualTo(Long value) { - addCriterion("id >=", value, "id"); - return (Criteria) this; - } - - public Criteria andIdLessThan(Long value) { - addCriterion("id <", value, "id"); - return (Criteria) this; - } - - public Criteria andIdLessThanOrEqualTo(Long value) { - addCriterion("id <=", value, "id"); - return (Criteria) this; - } - - public Criteria andIdIn(List values) { - addCriterion("id in", values, "id"); - return (Criteria) this; - } - - public Criteria andIdNotIn(List values) { - addCriterion("id not in", values, "id"); - return (Criteria) this; - } - - public Criteria andIdBetween(Long value1, Long value2) { - addCriterion("id between", value1, value2, "id"); - return (Criteria) this; - } - - public Criteria andIdNotBetween(Long value1, Long value2) { - addCriterion("id not between", value1, value2, "id"); - return (Criteria) this; - } - - public Criteria andOpenIdIsNull() { - addCriterion("open_id is null"); - return (Criteria) this; - } - - public Criteria andOpenIdIsNotNull() { - addCriterion("open_id is not null"); - return (Criteria) this; - } - - public Criteria andOpenIdEqualTo(String value) { - addCriterion("open_id =", value, "openId"); - return (Criteria) this; - } - - public Criteria andOpenIdNotEqualTo(String value) { - addCriterion("open_id <>", value, "openId"); - return (Criteria) this; - } - - public Criteria andOpenIdGreaterThan(String value) { - addCriterion("open_id >", value, "openId"); - return (Criteria) this; - } - - public Criteria andOpenIdGreaterThanOrEqualTo(String value) { - addCriterion("open_id >=", value, "openId"); - return (Criteria) this; - } - - public Criteria andOpenIdLessThan(String value) { - addCriterion("open_id <", value, "openId"); - return (Criteria) this; - } - - public Criteria andOpenIdLessThanOrEqualTo(String value) { - addCriterion("open_id <=", value, "openId"); - return (Criteria) this; - } - - public Criteria andOpenIdLike(String value) { - addCriterion("open_id like", value, "openId"); - return (Criteria) this; - } - - public Criteria andOpenIdNotLike(String value) { - addCriterion("open_id not like", value, "openId"); - return (Criteria) this; - } - - public Criteria andOpenIdIn(List values) { - addCriterion("open_id in", values, "openId"); - return (Criteria) this; - } - - public Criteria andOpenIdNotIn(List values) { - addCriterion("open_id not in", values, "openId"); - return (Criteria) this; - } - - public Criteria andOpenIdBetween(String value1, String value2) { - addCriterion("open_id between", value1, value2, "openId"); - return (Criteria) this; - } - - public Criteria andOpenIdNotBetween(String value1, String value2) { - addCriterion("open_id not between", value1, value2, "openId"); - return (Criteria) this; - } - - public Criteria andRegisterChannelIsNull() { - addCriterion("register_channel is null"); - return (Criteria) this; - } - - public Criteria andRegisterChannelIsNotNull() { - addCriterion("register_channel is not null"); - return (Criteria) this; - } - - public Criteria andRegisterChannelEqualTo(Long value) { - addCriterion("register_channel =", value, "registerChannel"); - return (Criteria) this; - } - - public Criteria andRegisterChannelNotEqualTo(Long value) { - addCriterion("register_channel <>", value, "registerChannel"); - return (Criteria) this; - } - - public Criteria andRegisterChannelGreaterThan(Long value) { - addCriterion("register_channel >", value, "registerChannel"); - return (Criteria) this; - } - - public Criteria andRegisterChannelGreaterThanOrEqualTo(Long value) { - addCriterion("register_channel >=", value, "registerChannel"); - return (Criteria) this; - } - - public Criteria andRegisterChannelLessThan(Long value) { - addCriterion("register_channel <", value, "registerChannel"); - return (Criteria) this; - } - - public Criteria andRegisterChannelLessThanOrEqualTo(Long value) { - addCriterion("register_channel <=", value, "registerChannel"); - return (Criteria) this; - } - - public Criteria andRegisterChannelIn(List values) { - addCriterion("register_channel in", values, "registerChannel"); - return (Criteria) this; - } - - public Criteria andRegisterChannelNotIn(List values) { - addCriterion("register_channel not in", values, "registerChannel"); - return (Criteria) this; - } - - public Criteria andRegisterChannelBetween(Long value1, Long value2) { - addCriterion("register_channel between", value1, value2, "registerChannel"); - return (Criteria) this; - } - - public Criteria andRegisterChannelNotBetween(Long value1, Long value2) { - addCriterion("register_channel not between", value1, value2, "registerChannel"); - return (Criteria) this; - } - - public Criteria andUsernameIsNull() { - addCriterion("username is null"); - return (Criteria) this; - } - - public Criteria andUsernameIsNotNull() { - addCriterion("username is not null"); - return (Criteria) this; - } - - public Criteria andUsernameEqualTo(String value) { - addCriterion("username =", value, "username"); - return (Criteria) this; - } - - public Criteria andUsernameNotEqualTo(String value) { - addCriterion("username <>", value, "username"); - return (Criteria) this; - } - - public Criteria andUsernameGreaterThan(String value) { - addCriterion("username >", value, "username"); - return (Criteria) this; - } - - public Criteria andUsernameGreaterThanOrEqualTo(String value) { - addCriterion("username >=", value, "username"); - return (Criteria) this; - } - - public Criteria andUsernameLessThan(String value) { - addCriterion("username <", value, "username"); - return (Criteria) this; - } - - public Criteria andUsernameLessThanOrEqualTo(String value) { - addCriterion("username <=", value, "username"); - return (Criteria) this; - } - - public Criteria andUsernameLike(String value) { - addCriterion("username like", value, "username"); - return (Criteria) this; - } - - public Criteria andUsernameNotLike(String value) { - addCriterion("username not like", value, "username"); - return (Criteria) this; - } - - public Criteria andUsernameIn(List values) { - addCriterion("username in", values, "username"); - return (Criteria) this; - } - - public Criteria andUsernameNotIn(List values) { - addCriterion("username not in", values, "username"); - return (Criteria) this; - } - - public Criteria andUsernameBetween(String value1, String value2) { - addCriterion("username between", value1, value2, "username"); - return (Criteria) this; - } - - public Criteria andUsernameNotBetween(String value1, String value2) { - addCriterion("username not between", value1, value2, "username"); - return (Criteria) this; - } - - public Criteria andIdCardIsNull() { - addCriterion("id_card is null"); - return (Criteria) this; - } - - public Criteria andIdCardIsNotNull() { - addCriterion("id_card is not null"); - return (Criteria) this; - } - - public Criteria andIdCardEqualTo(String value) { - addCriterion("id_card =", value, "idCard"); - return (Criteria) this; - } - - public Criteria andIdCardNotEqualTo(String value) { - addCriterion("id_card <>", value, "idCard"); - return (Criteria) this; - } - - public Criteria andIdCardGreaterThan(String value) { - addCriterion("id_card >", value, "idCard"); - return (Criteria) this; - } - - public Criteria andIdCardGreaterThanOrEqualTo(String value) { - addCriterion("id_card >=", value, "idCard"); - return (Criteria) this; - } - - public Criteria andIdCardLessThan(String value) { - addCriterion("id_card <", value, "idCard"); - return (Criteria) this; - } - - public Criteria andIdCardLessThanOrEqualTo(String value) { - addCriterion("id_card <=", value, "idCard"); - return (Criteria) this; - } - - public Criteria andIdCardLike(String value) { - addCriterion("id_card like", value, "idCard"); - return (Criteria) this; - } - - public Criteria andIdCardNotLike(String value) { - addCriterion("id_card not like", value, "idCard"); - return (Criteria) this; - } - - public Criteria andIdCardIn(List values) { - addCriterion("id_card in", values, "idCard"); - return (Criteria) this; - } - - public Criteria andIdCardNotIn(List values) { - addCriterion("id_card not in", values, "idCard"); - return (Criteria) this; - } - - public Criteria andIdCardBetween(String value1, String value2) { - addCriterion("id_card between", value1, value2, "idCard"); - return (Criteria) this; - } - - public Criteria andIdCardNotBetween(String value1, String value2) { - addCriterion("id_card not between", value1, value2, "idCard"); - return (Criteria) this; - } - - public Criteria andNameIsNull() { - addCriterion("name is null"); - return (Criteria) this; - } - - public Criteria andNameIsNotNull() { - addCriterion("name is not null"); - return (Criteria) this; - } - - public Criteria andNameEqualTo(String value) { - addCriterion("name =", value, "name"); - return (Criteria) this; - } - - public Criteria andNameNotEqualTo(String value) { - addCriterion("name <>", value, "name"); - return (Criteria) this; - } - - public Criteria andNameGreaterThan(String value) { - addCriterion("name >", value, "name"); - return (Criteria) this; - } - - public Criteria andNameGreaterThanOrEqualTo(String value) { - addCriterion("name >=", value, "name"); - return (Criteria) this; - } - - public Criteria andNameLessThan(String value) { - addCriterion("name <", value, "name"); - return (Criteria) this; - } - - public Criteria andNameLessThanOrEqualTo(String value) { - addCriterion("name <=", value, "name"); - return (Criteria) this; - } - - public Criteria andNameLike(String value) { - addCriterion("name like", value, "name"); - return (Criteria) this; - } - - public Criteria andNameNotLike(String value) { - addCriterion("name not like", value, "name"); - return (Criteria) this; - } - - public Criteria andNameIn(List values) { - addCriterion("name in", values, "name"); - return (Criteria) this; - } - - public Criteria andNameNotIn(List values) { - addCriterion("name not in", values, "name"); - return (Criteria) this; - } - - public Criteria andNameBetween(String value1, String value2) { - addCriterion("name between", value1, value2, "name"); - return (Criteria) this; - } - - public Criteria andNameNotBetween(String value1, String value2) { - addCriterion("name not between", value1, value2, "name"); - return (Criteria) this; - } - - public Criteria andIdCardDetailAddressIsNull() { - addCriterion("id_card_detail_address is null"); - return (Criteria) this; - } - - public Criteria andIdCardDetailAddressIsNotNull() { - addCriterion("id_card_detail_address is not null"); - return (Criteria) this; - } - - public Criteria andIdCardDetailAddressEqualTo(String value) { - addCriterion("id_card_detail_address =", value, "idCardDetailAddress"); - return (Criteria) this; - } - - public Criteria andIdCardDetailAddressNotEqualTo(String value) { - addCriterion("id_card_detail_address <>", value, "idCardDetailAddress"); - return (Criteria) this; - } - - public Criteria andIdCardDetailAddressGreaterThan(String value) { - addCriterion("id_card_detail_address >", value, "idCardDetailAddress"); - return (Criteria) this; - } - - public Criteria andIdCardDetailAddressGreaterThanOrEqualTo(String value) { - addCriterion("id_card_detail_address >=", value, "idCardDetailAddress"); - return (Criteria) this; - } - - public Criteria andIdCardDetailAddressLessThan(String value) { - addCriterion("id_card_detail_address <", value, "idCardDetailAddress"); - return (Criteria) this; - } - - public Criteria andIdCardDetailAddressLessThanOrEqualTo(String value) { - addCriterion("id_card_detail_address <=", value, "idCardDetailAddress"); - return (Criteria) this; - } - - public Criteria andIdCardDetailAddressLike(String value) { - addCriterion("id_card_detail_address like", value, "idCardDetailAddress"); - return (Criteria) this; - } - - public Criteria andIdCardDetailAddressNotLike(String value) { - addCriterion("id_card_detail_address not like", value, "idCardDetailAddress"); - return (Criteria) this; - } - - public Criteria andIdCardDetailAddressIn(List values) { - addCriterion("id_card_detail_address in", values, "idCardDetailAddress"); - return (Criteria) this; - } - - public Criteria andIdCardDetailAddressNotIn(List values) { - addCriterion("id_card_detail_address not in", values, "idCardDetailAddress"); - return (Criteria) this; - } - - public Criteria andIdCardDetailAddressBetween(String value1, String value2) { - addCriterion("id_card_detail_address between", value1, value2, "idCardDetailAddress"); - return (Criteria) this; - } - - public Criteria andIdCardDetailAddressNotBetween(String value1, String value2) { - addCriterion("id_card_detail_address not between", value1, value2, "idCardDetailAddress"); - return (Criteria) this; - } - - public Criteria andIsVerifyIdCardIsNull() { - addCriterion("is_verify_id_card is null"); - return (Criteria) this; - } - - public Criteria andIsVerifyIdCardIsNotNull() { - addCriterion("is_verify_id_card is not null"); - return (Criteria) this; - } - - public Criteria andIsVerifyIdCardEqualTo(Boolean value) { - addCriterion("is_verify_id_card =", value, "isVerifyIdCard"); - return (Criteria) this; - } - - public Criteria andIsVerifyIdCardNotEqualTo(Boolean value) { - addCriterion("is_verify_id_card <>", value, "isVerifyIdCard"); - return (Criteria) this; - } - - public Criteria andIsVerifyIdCardGreaterThan(Boolean value) { - addCriterion("is_verify_id_card >", value, "isVerifyIdCard"); - return (Criteria) this; - } - - public Criteria andIsVerifyIdCardGreaterThanOrEqualTo(Boolean value) { - addCriterion("is_verify_id_card >=", value, "isVerifyIdCard"); - return (Criteria) this; - } - - public Criteria andIsVerifyIdCardLessThan(Boolean value) { - addCriterion("is_verify_id_card <", value, "isVerifyIdCard"); - return (Criteria) this; - } - - public Criteria andIsVerifyIdCardLessThanOrEqualTo(Boolean value) { - addCriterion("is_verify_id_card <=", value, "isVerifyIdCard"); - return (Criteria) this; - } - - public Criteria andIsVerifyIdCardIn(List values) { - addCriterion("is_verify_id_card in", values, "isVerifyIdCard"); - return (Criteria) this; - } - - public Criteria andIsVerifyIdCardNotIn(List values) { - addCriterion("is_verify_id_card not in", values, "isVerifyIdCard"); - return (Criteria) this; - } - - public Criteria andIsVerifyIdCardBetween(Boolean value1, Boolean value2) { - addCriterion("is_verify_id_card between", value1, value2, "isVerifyIdCard"); - return (Criteria) this; - } - - public Criteria andIsVerifyIdCardNotBetween(Boolean value1, Boolean value2) { - addCriterion("is_verify_id_card not between", value1, value2, "isVerifyIdCard"); - return (Criteria) this; - } - - public Criteria andIdCardCoverupIsNull() { - addCriterion("id_card_coverup is null"); - return (Criteria) this; - } - - public Criteria andIdCardCoverupIsNotNull() { - addCriterion("id_card_coverup is not null"); - return (Criteria) this; - } - - public Criteria andIdCardCoverupEqualTo(String value) { - addCriterion("id_card_coverup =", value, "idCardCoverup"); - return (Criteria) this; - } - - public Criteria andIdCardCoverupNotEqualTo(String value) { - addCriterion("id_card_coverup <>", value, "idCardCoverup"); - return (Criteria) this; - } - - public Criteria andIdCardCoverupGreaterThan(String value) { - addCriterion("id_card_coverup >", value, "idCardCoverup"); - return (Criteria) this; - } - - public Criteria andIdCardCoverupGreaterThanOrEqualTo(String value) { - addCriterion("id_card_coverup >=", value, "idCardCoverup"); - return (Criteria) this; - } - - public Criteria andIdCardCoverupLessThan(String value) { - addCriterion("id_card_coverup <", value, "idCardCoverup"); - return (Criteria) this; - } - - public Criteria andIdCardCoverupLessThanOrEqualTo(String value) { - addCriterion("id_card_coverup <=", value, "idCardCoverup"); - return (Criteria) this; - } - - public Criteria andIdCardCoverupLike(String value) { - addCriterion("id_card_coverup like", value, "idCardCoverup"); - return (Criteria) this; - } - - public Criteria andIdCardCoverupNotLike(String value) { - addCriterion("id_card_coverup not like", value, "idCardCoverup"); - return (Criteria) this; - } - - public Criteria andIdCardCoverupIn(List values) { - addCriterion("id_card_coverup in", values, "idCardCoverup"); - return (Criteria) this; - } - - public Criteria andIdCardCoverupNotIn(List values) { - addCriterion("id_card_coverup not in", values, "idCardCoverup"); - return (Criteria) this; - } - - public Criteria andIdCardCoverupBetween(String value1, String value2) { - addCriterion("id_card_coverup between", value1, value2, "idCardCoverup"); - return (Criteria) this; - } - - public Criteria andIdCardCoverupNotBetween(String value1, String value2) { - addCriterion("id_card_coverup not between", value1, value2, "idCardCoverup"); - return (Criteria) this; - } - - public Criteria andIdCardCoverdownIsNull() { - addCriterion("id_card_coverdown is null"); - return (Criteria) this; - } - - public Criteria andIdCardCoverdownIsNotNull() { - addCriterion("id_card_coverdown is not null"); - return (Criteria) this; - } - - public Criteria andIdCardCoverdownEqualTo(String value) { - addCriterion("id_card_coverdown =", value, "idCardCoverdown"); - return (Criteria) this; - } - - public Criteria andIdCardCoverdownNotEqualTo(String value) { - addCriterion("id_card_coverdown <>", value, "idCardCoverdown"); - return (Criteria) this; - } - - public Criteria andIdCardCoverdownGreaterThan(String value) { - addCriterion("id_card_coverdown >", value, "idCardCoverdown"); - return (Criteria) this; - } - - public Criteria andIdCardCoverdownGreaterThanOrEqualTo(String value) { - addCriterion("id_card_coverdown >=", value, "idCardCoverdown"); - return (Criteria) this; - } - - public Criteria andIdCardCoverdownLessThan(String value) { - addCriterion("id_card_coverdown <", value, "idCardCoverdown"); - return (Criteria) this; - } - - public Criteria andIdCardCoverdownLessThanOrEqualTo(String value) { - addCriterion("id_card_coverdown <=", value, "idCardCoverdown"); - return (Criteria) this; - } - - public Criteria andIdCardCoverdownLike(String value) { - addCriterion("id_card_coverdown like", value, "idCardCoverdown"); - return (Criteria) this; - } - - public Criteria andIdCardCoverdownNotLike(String value) { - addCriterion("id_card_coverdown not like", value, "idCardCoverdown"); - return (Criteria) this; - } - - public Criteria andIdCardCoverdownIn(List values) { - addCriterion("id_card_coverdown in", values, "idCardCoverdown"); - return (Criteria) this; - } - - public Criteria andIdCardCoverdownNotIn(List values) { - addCriterion("id_card_coverdown not in", values, "idCardCoverdown"); - return (Criteria) this; - } - - public Criteria andIdCardCoverdownBetween(String value1, String value2) { - addCriterion("id_card_coverdown between", value1, value2, "idCardCoverdown"); - return (Criteria) this; - } - - public Criteria andIdCardCoverdownNotBetween(String value1, String value2) { - addCriterion("id_card_coverdown not between", value1, value2, "idCardCoverdown"); - return (Criteria) this; - } - - public Criteria andIdCardHoldIsNull() { - addCriterion("id_card_hold is null"); - return (Criteria) this; - } - - public Criteria andIdCardHoldIsNotNull() { - addCriterion("id_card_hold is not null"); - return (Criteria) this; - } - - public Criteria andIdCardHoldEqualTo(String value) { - addCriterion("id_card_hold =", value, "idCardHold"); - return (Criteria) this; - } - - public Criteria andIdCardHoldNotEqualTo(String value) { - addCriterion("id_card_hold <>", value, "idCardHold"); - return (Criteria) this; - } - - public Criteria andIdCardHoldGreaterThan(String value) { - addCriterion("id_card_hold >", value, "idCardHold"); - return (Criteria) this; - } - - public Criteria andIdCardHoldGreaterThanOrEqualTo(String value) { - addCriterion("id_card_hold >=", value, "idCardHold"); - return (Criteria) this; - } - - public Criteria andIdCardHoldLessThan(String value) { - addCriterion("id_card_hold <", value, "idCardHold"); - return (Criteria) this; - } - - public Criteria andIdCardHoldLessThanOrEqualTo(String value) { - addCriterion("id_card_hold <=", value, "idCardHold"); - return (Criteria) this; - } - - public Criteria andIdCardHoldLike(String value) { - addCriterion("id_card_hold like", value, "idCardHold"); - return (Criteria) this; - } - - public Criteria andIdCardHoldNotLike(String value) { - addCriterion("id_card_hold not like", value, "idCardHold"); - return (Criteria) this; - } - - public Criteria andIdCardHoldIn(List values) { - addCriterion("id_card_hold in", values, "idCardHold"); - return (Criteria) this; - } - - public Criteria andIdCardHoldNotIn(List values) { - addCriterion("id_card_hold not in", values, "idCardHold"); - return (Criteria) this; - } - - public Criteria andIdCardHoldBetween(String value1, String value2) { - addCriterion("id_card_hold between", value1, value2, "idCardHold"); - return (Criteria) this; - } - - public Criteria andIdCardHoldNotBetween(String value1, String value2) { - addCriterion("id_card_hold not between", value1, value2, "idCardHold"); - return (Criteria) this; - } - - public Criteria andIsOtherPictureAuthIsNull() { - addCriterion("is_other_picture_auth is null"); - return (Criteria) this; - } - - public Criteria andIsOtherPictureAuthIsNotNull() { - addCriterion("is_other_picture_auth is not null"); - return (Criteria) this; - } - - public Criteria andIsOtherPictureAuthEqualTo(Boolean value) { - addCriterion("is_other_picture_auth =", value, "isOtherPictureAuth"); - return (Criteria) this; - } - - public Criteria andIsOtherPictureAuthNotEqualTo(Boolean value) { - addCriterion("is_other_picture_auth <>", value, "isOtherPictureAuth"); - return (Criteria) this; - } - - public Criteria andIsOtherPictureAuthGreaterThan(Boolean value) { - addCriterion("is_other_picture_auth >", value, "isOtherPictureAuth"); - return (Criteria) this; - } - - public Criteria andIsOtherPictureAuthGreaterThanOrEqualTo(Boolean value) { - addCriterion("is_other_picture_auth >=", value, "isOtherPictureAuth"); - return (Criteria) this; - } - - public Criteria andIsOtherPictureAuthLessThan(Boolean value) { - addCriterion("is_other_picture_auth <", value, "isOtherPictureAuth"); - return (Criteria) this; - } - - public Criteria andIsOtherPictureAuthLessThanOrEqualTo(Boolean value) { - addCriterion("is_other_picture_auth <=", value, "isOtherPictureAuth"); - return (Criteria) this; - } - - public Criteria andIsOtherPictureAuthIn(List values) { - addCriterion("is_other_picture_auth in", values, "isOtherPictureAuth"); - return (Criteria) this; - } - - public Criteria andIsOtherPictureAuthNotIn(List values) { - addCriterion("is_other_picture_auth not in", values, "isOtherPictureAuth"); - return (Criteria) this; - } - - public Criteria andIsOtherPictureAuthBetween(Boolean value1, Boolean value2) { - addCriterion("is_other_picture_auth between", value1, value2, "isOtherPictureAuth"); - return (Criteria) this; - } - - public Criteria andIsOtherPictureAuthNotBetween(Boolean value1, Boolean value2) { - addCriterion("is_other_picture_auth not between", value1, value2, "isOtherPictureAuth"); - return (Criteria) this; - } - - public Criteria andIsBankcardAuthIsNull() { - addCriterion("is_bankcard_auth is null"); - return (Criteria) this; - } - - public Criteria andIsBankcardAuthIsNotNull() { - addCriterion("is_bankcard_auth is not null"); - return (Criteria) this; - } - - public Criteria andIsBankcardAuthEqualTo(Boolean value) { - addCriterion("is_bankcard_auth =", value, "isBankcardAuth"); - return (Criteria) this; - } - - public Criteria andIsBankcardAuthNotEqualTo(Boolean value) { - addCriterion("is_bankcard_auth <>", value, "isBankcardAuth"); - return (Criteria) this; - } - - public Criteria andIsBankcardAuthGreaterThan(Boolean value) { - addCriterion("is_bankcard_auth >", value, "isBankcardAuth"); - return (Criteria) this; - } - - public Criteria andIsBankcardAuthGreaterThanOrEqualTo(Boolean value) { - addCriterion("is_bankcard_auth >=", value, "isBankcardAuth"); - return (Criteria) this; - } - - public Criteria andIsBankcardAuthLessThan(Boolean value) { - addCriterion("is_bankcard_auth <", value, "isBankcardAuth"); - return (Criteria) this; - } - - public Criteria andIsBankcardAuthLessThanOrEqualTo(Boolean value) { - addCriterion("is_bankcard_auth <=", value, "isBankcardAuth"); - return (Criteria) this; - } - - public Criteria andIsBankcardAuthIn(List values) { - addCriterion("is_bankcard_auth in", values, "isBankcardAuth"); - return (Criteria) this; - } - - public Criteria andIsBankcardAuthNotIn(List values) { - addCriterion("is_bankcard_auth not in", values, "isBankcardAuth"); - return (Criteria) this; - } - - public Criteria andIsBankcardAuthBetween(Boolean value1, Boolean value2) { - addCriterion("is_bankcard_auth between", value1, value2, "isBankcardAuth"); - return (Criteria) this; - } - - public Criteria andIsBankcardAuthNotBetween(Boolean value1, Boolean value2) { - addCriterion("is_bankcard_auth not between", value1, value2, "isBankcardAuth"); - return (Criteria) this; - } - - public Criteria andSignaturePicIsNull() { - addCriterion("signature_pic is null"); - return (Criteria) this; - } - - public Criteria andSignaturePicIsNotNull() { - addCriterion("signature_pic is not null"); - return (Criteria) this; - } - - public Criteria andSignaturePicEqualTo(String value) { - addCriterion("signature_pic =", value, "signaturePic"); - return (Criteria) this; - } - - public Criteria andSignaturePicNotEqualTo(String value) { - addCriterion("signature_pic <>", value, "signaturePic"); - return (Criteria) this; - } - - public Criteria andSignaturePicGreaterThan(String value) { - addCriterion("signature_pic >", value, "signaturePic"); - return (Criteria) this; - } - - public Criteria andSignaturePicGreaterThanOrEqualTo(String value) { - addCriterion("signature_pic >=", value, "signaturePic"); - return (Criteria) this; - } - - public Criteria andSignaturePicLessThan(String value) { - addCriterion("signature_pic <", value, "signaturePic"); - return (Criteria) this; - } - - public Criteria andSignaturePicLessThanOrEqualTo(String value) { - addCriterion("signature_pic <=", value, "signaturePic"); - return (Criteria) this; - } - - public Criteria andSignaturePicLike(String value) { - addCriterion("signature_pic like", value, "signaturePic"); - return (Criteria) this; - } - - public Criteria andSignaturePicNotLike(String value) { - addCriterion("signature_pic not like", value, "signaturePic"); - return (Criteria) this; - } - - public Criteria andSignaturePicIn(List values) { - addCriterion("signature_pic in", values, "signaturePic"); - return (Criteria) this; - } - - public Criteria andSignaturePicNotIn(List values) { - addCriterion("signature_pic not in", values, "signaturePic"); - return (Criteria) this; - } - - public Criteria andSignaturePicBetween(String value1, String value2) { - addCriterion("signature_pic between", value1, value2, "signaturePic"); - return (Criteria) this; - } - - public Criteria andSignaturePicNotBetween(String value1, String value2) { - addCriterion("signature_pic not between", value1, value2, "signaturePic"); - return (Criteria) this; - } - - public Criteria andIsAdditionalAuthIsNull() { - addCriterion("is_additional_auth is null"); - return (Criteria) this; - } - - public Criteria andIsAdditionalAuthIsNotNull() { - addCriterion("is_additional_auth is not null"); - return (Criteria) this; - } - - public Criteria andIsAdditionalAuthEqualTo(Boolean value) { - addCriterion("is_additional_auth =", value, "isAdditionalAuth"); - return (Criteria) this; - } - - public Criteria andIsAdditionalAuthNotEqualTo(Boolean value) { - addCriterion("is_additional_auth <>", value, "isAdditionalAuth"); - return (Criteria) this; - } - - public Criteria andIsAdditionalAuthGreaterThan(Boolean value) { - addCriterion("is_additional_auth >", value, "isAdditionalAuth"); - return (Criteria) this; - } - - public Criteria andIsAdditionalAuthGreaterThanOrEqualTo(Boolean value) { - addCriterion("is_additional_auth >=", value, "isAdditionalAuth"); - return (Criteria) this; - } - - public Criteria andIsAdditionalAuthLessThan(Boolean value) { - addCriterion("is_additional_auth <", value, "isAdditionalAuth"); - return (Criteria) this; - } - - public Criteria andIsAdditionalAuthLessThanOrEqualTo(Boolean value) { - addCriterion("is_additional_auth <=", value, "isAdditionalAuth"); - return (Criteria) this; - } - - public Criteria andIsAdditionalAuthIn(List values) { - addCriterion("is_additional_auth in", values, "isAdditionalAuth"); - return (Criteria) this; - } - - public Criteria andIsAdditionalAuthNotIn(List values) { - addCriterion("is_additional_auth not in", values, "isAdditionalAuth"); - return (Criteria) this; - } - - public Criteria andIsAdditionalAuthBetween(Boolean value1, Boolean value2) { - addCriterion("is_additional_auth between", value1, value2, "isAdditionalAuth"); - return (Criteria) this; - } - - public Criteria andIsAdditionalAuthNotBetween(Boolean value1, Boolean value2) { - addCriterion("is_additional_auth not between", value1, value2, "isAdditionalAuth"); - return (Criteria) this; - } - - public Criteria andIsEmergencyAuthIsNull() { - addCriterion("is_emergency_auth is null"); - return (Criteria) this; - } - - public Criteria andIsEmergencyAuthIsNotNull() { - addCriterion("is_emergency_auth is not null"); - return (Criteria) this; - } - - public Criteria andIsEmergencyAuthEqualTo(Boolean value) { - addCriterion("is_emergency_auth =", value, "isEmergencyAuth"); - return (Criteria) this; - } - - public Criteria andIsEmergencyAuthNotEqualTo(Boolean value) { - addCriterion("is_emergency_auth <>", value, "isEmergencyAuth"); - return (Criteria) this; - } - - public Criteria andIsEmergencyAuthGreaterThan(Boolean value) { - addCriterion("is_emergency_auth >", value, "isEmergencyAuth"); - return (Criteria) this; - } - - public Criteria andIsEmergencyAuthGreaterThanOrEqualTo(Boolean value) { - addCriterion("is_emergency_auth >=", value, "isEmergencyAuth"); - return (Criteria) this; - } - - public Criteria andIsEmergencyAuthLessThan(Boolean value) { - addCriterion("is_emergency_auth <", value, "isEmergencyAuth"); - return (Criteria) this; - } - - public Criteria andIsEmergencyAuthLessThanOrEqualTo(Boolean value) { - addCriterion("is_emergency_auth <=", value, "isEmergencyAuth"); - return (Criteria) this; - } - - public Criteria andIsEmergencyAuthIn(List values) { - addCriterion("is_emergency_auth in", values, "isEmergencyAuth"); - return (Criteria) this; - } - - public Criteria andIsEmergencyAuthNotIn(List values) { - addCriterion("is_emergency_auth not in", values, "isEmergencyAuth"); - return (Criteria) this; - } - - public Criteria andIsEmergencyAuthBetween(Boolean value1, Boolean value2) { - addCriterion("is_emergency_auth between", value1, value2, "isEmergencyAuth"); - return (Criteria) this; - } - - public Criteria andIsEmergencyAuthNotBetween(Boolean value1, Boolean value2) { - addCriterion("is_emergency_auth not between", value1, value2, "isEmergencyAuth"); - return (Criteria) this; - } - - public Criteria andPhoneIsNull() { - addCriterion("phone is null"); - return (Criteria) this; - } - - public Criteria andPhoneIsNotNull() { - addCriterion("phone is not null"); - return (Criteria) this; - } - - public Criteria andPhoneEqualTo(String value) { - addCriterion("phone =", value, "phone"); - return (Criteria) this; - } - - public Criteria andPhoneNotEqualTo(String value) { - addCriterion("phone <>", value, "phone"); - return (Criteria) this; - } - - public Criteria andPhoneGreaterThan(String value) { - addCriterion("phone >", value, "phone"); - return (Criteria) this; - } - - public Criteria andPhoneGreaterThanOrEqualTo(String value) { - addCriterion("phone >=", value, "phone"); - return (Criteria) this; - } - - public Criteria andPhoneLessThan(String value) { - addCriterion("phone <", value, "phone"); - return (Criteria) this; - } - - public Criteria andPhoneLessThanOrEqualTo(String value) { - addCriterion("phone <=", value, "phone"); - return (Criteria) this; - } - - public Criteria andPhoneLike(String value) { - addCriterion("phone like", value, "phone"); - return (Criteria) this; - } - - public Criteria andPhoneNotLike(String value) { - addCriterion("phone not like", value, "phone"); - return (Criteria) this; - } - - public Criteria andPhoneIn(List values) { - addCriterion("phone in", values, "phone"); - return (Criteria) this; - } - - public Criteria andPhoneNotIn(List values) { - addCriterion("phone not in", values, "phone"); - return (Criteria) this; - } - - public Criteria andPhoneBetween(String value1, String value2) { - addCriterion("phone between", value1, value2, "phone"); - return (Criteria) this; - } - - public Criteria andPhoneNotBetween(String value1, String value2) { - addCriterion("phone not between", value1, value2, "phone"); - return (Criteria) this; - } - - public Criteria andEmailIsNull() { - addCriterion("email is null"); - return (Criteria) this; - } - - public Criteria andEmailIsNotNull() { - addCriterion("email is not null"); - return (Criteria) this; - } - - public Criteria andEmailEqualTo(String value) { - addCriterion("email =", value, "email"); - return (Criteria) this; - } - - public Criteria andEmailNotEqualTo(String value) { - addCriterion("email <>", value, "email"); - return (Criteria) this; - } - - public Criteria andEmailGreaterThan(String value) { - addCriterion("email >", value, "email"); - return (Criteria) this; - } - - public Criteria andEmailGreaterThanOrEqualTo(String value) { - addCriterion("email >=", value, "email"); - return (Criteria) this; - } - - public Criteria andEmailLessThan(String value) { - addCriterion("email <", value, "email"); - return (Criteria) this; - } - - public Criteria andEmailLessThanOrEqualTo(String value) { - addCriterion("email <=", value, "email"); - return (Criteria) this; - } - - public Criteria andEmailLike(String value) { - addCriterion("email like", value, "email"); - return (Criteria) this; - } - - public Criteria andEmailNotLike(String value) { - addCriterion("email not like", value, "email"); - return (Criteria) this; - } - - public Criteria andEmailIn(List values) { - addCriterion("email in", values, "email"); - return (Criteria) this; - } - - public Criteria andEmailNotIn(List values) { - addCriterion("email not in", values, "email"); - return (Criteria) this; - } - - public Criteria andEmailBetween(String value1, String value2) { - addCriterion("email between", value1, value2, "email"); - return (Criteria) this; - } - - public Criteria andEmailNotBetween(String value1, String value2) { - addCriterion("email not between", value1, value2, "email"); - return (Criteria) this; - } - - public Criteria andAddressIsNull() { - addCriterion("address is null"); - return (Criteria) this; - } - - public Criteria andAddressIsNotNull() { - addCriterion("address is not null"); - return (Criteria) this; - } - - public Criteria andAddressEqualTo(String value) { - addCriterion("address =", value, "address"); - return (Criteria) this; - } - - public Criteria andAddressNotEqualTo(String value) { - addCriterion("address <>", value, "address"); - return (Criteria) this; - } - - public Criteria andAddressGreaterThan(String value) { - addCriterion("address >", value, "address"); - return (Criteria) this; - } - - public Criteria andAddressGreaterThanOrEqualTo(String value) { - addCriterion("address >=", value, "address"); - return (Criteria) this; - } - - public Criteria andAddressLessThan(String value) { - addCriterion("address <", value, "address"); - return (Criteria) this; - } - - public Criteria andAddressLessThanOrEqualTo(String value) { - addCriterion("address <=", value, "address"); - return (Criteria) this; - } - - public Criteria andAddressLike(String value) { - addCriterion("address like", value, "address"); - return (Criteria) this; - } - - public Criteria andAddressNotLike(String value) { - addCriterion("address not like", value, "address"); - return (Criteria) this; - } - - public Criteria andAddressIn(List values) { - addCriterion("address in", values, "address"); - return (Criteria) this; - } - - public Criteria andAddressNotIn(List values) { - addCriterion("address not in", values, "address"); - return (Criteria) this; - } - - public Criteria andAddressBetween(String value1, String value2) { - addCriterion("address between", value1, value2, "address"); - return (Criteria) this; - } - - public Criteria andAddressNotBetween(String value1, String value2) { - addCriterion("address not between", value1, value2, "address"); - return (Criteria) this; - } - - public Criteria andUserStatusIsNull() { - addCriterion("user_status is null"); - return (Criteria) this; - } - - public Criteria andUserStatusIsNotNull() { - addCriterion("user_status is not null"); - return (Criteria) this; - } - - public Criteria andUserStatusEqualTo(Integer value) { - addCriterion("user_status =", value, "userStatus"); - return (Criteria) this; - } - - public Criteria andUserStatusNotEqualTo(Integer value) { - addCriterion("user_status <>", value, "userStatus"); - return (Criteria) this; - } - - public Criteria andUserStatusGreaterThan(Integer value) { - addCriterion("user_status >", value, "userStatus"); - return (Criteria) this; - } - - public Criteria andUserStatusGreaterThanOrEqualTo(Integer value) { - addCriterion("user_status >=", value, "userStatus"); - return (Criteria) this; - } - - public Criteria andUserStatusLessThan(Integer value) { - addCriterion("user_status <", value, "userStatus"); - return (Criteria) this; - } - - public Criteria andUserStatusLessThanOrEqualTo(Integer value) { - addCriterion("user_status <=", value, "userStatus"); - return (Criteria) this; - } - - public Criteria andUserStatusIn(List values) { - addCriterion("user_status in", values, "userStatus"); - return (Criteria) this; - } - - public Criteria andUserStatusNotIn(List values) { - addCriterion("user_status not in", values, "userStatus"); - return (Criteria) this; - } - - public Criteria andUserStatusBetween(Integer value1, Integer value2) { - addCriterion("user_status between", value1, value2, "userStatus"); - return (Criteria) this; - } - - public Criteria andUserStatusNotBetween(Integer value1, Integer value2) { - addCriterion("user_status not between", value1, value2, "userStatus"); - return (Criteria) this; - } - - public Criteria andCreateTimeIsNull() { - addCriterion("create_time is null"); - return (Criteria) this; - } - - public Criteria andCreateTimeIsNotNull() { - addCriterion("create_time is not null"); - return (Criteria) this; - } - - public Criteria andCreateTimeEqualTo(Date value) { - addCriterion("create_time =", value, "createTime"); - return (Criteria) this; - } - - public Criteria andCreateTimeNotEqualTo(Date value) { - addCriterion("create_time <>", value, "createTime"); - return (Criteria) this; - } - - public Criteria andCreateTimeGreaterThan(Date value) { - addCriterion("create_time >", value, "createTime"); - return (Criteria) this; - } - - public Criteria andCreateTimeGreaterThanOrEqualTo(Date value) { - addCriterion("create_time >=", value, "createTime"); - return (Criteria) this; - } - - public Criteria andCreateTimeLessThan(Date value) { - addCriterion("create_time <", value, "createTime"); - return (Criteria) this; - } - - public Criteria andCreateTimeLessThanOrEqualTo(Date value) { - addCriterion("create_time <=", value, "createTime"); - return (Criteria) this; - } - - public Criteria andCreateTimeIn(List values) { - addCriterion("create_time in", values, "createTime"); - return (Criteria) this; - } - - public Criteria andCreateTimeNotIn(List values) { - addCriterion("create_time not in", values, "createTime"); - return (Criteria) this; - } - - public Criteria andCreateTimeBetween(Date value1, Date value2) { - addCriterion("create_time between", value1, value2, "createTime"); - return (Criteria) this; - } - - public Criteria andCreateTimeNotBetween(Date value1, Date value2) { - addCriterion("create_time not between", value1, value2, "createTime"); - return (Criteria) this; - } - - public Criteria andUpdateTimeIsNull() { - addCriterion("update_time is null"); - return (Criteria) this; - } - - public Criteria andUpdateTimeIsNotNull() { - addCriterion("update_time is not null"); - return (Criteria) this; - } - - public Criteria andUpdateTimeEqualTo(Date value) { - addCriterion("update_time =", value, "updateTime"); - return (Criteria) this; - } - - public Criteria andUpdateTimeNotEqualTo(Date value) { - addCriterion("update_time <>", value, "updateTime"); - return (Criteria) this; - } - - public Criteria andUpdateTimeGreaterThan(Date value) { - addCriterion("update_time >", value, "updateTime"); - return (Criteria) this; - } - - public Criteria andUpdateTimeGreaterThanOrEqualTo(Date value) { - addCriterion("update_time >=", value, "updateTime"); - return (Criteria) this; - } - - public Criteria andUpdateTimeLessThan(Date value) { - addCriterion("update_time <", value, "updateTime"); - return (Criteria) this; - } - - public Criteria andUpdateTimeLessThanOrEqualTo(Date value) { - addCriterion("update_time <=", value, "updateTime"); - return (Criteria) this; - } - - public Criteria andUpdateTimeIn(List values) { - addCriterion("update_time in", values, "updateTime"); - return (Criteria) this; - } - - public Criteria andUpdateTimeNotIn(List values) { - addCriterion("update_time not in", values, "updateTime"); - return (Criteria) this; - } - - public Criteria andUpdateTimeBetween(Date value1, Date value2) { - addCriterion("update_time between", value1, value2, "updateTime"); - return (Criteria) this; - } - - public Criteria andUpdateTimeNotBetween(Date value1, Date value2) { - addCriterion("update_time not between", value1, value2, "updateTime"); - return (Criteria) this; - } - - public Criteria andRemarkIsNull() { - addCriterion("remark is null"); - return (Criteria) this; - } - - public Criteria andRemarkIsNotNull() { - addCriterion("remark is not null"); - return (Criteria) this; - } - - public Criteria andRemarkEqualTo(String value) { - addCriterion("remark =", value, "remark"); - return (Criteria) this; - } - - public Criteria andRemarkNotEqualTo(String value) { - addCriterion("remark <>", value, "remark"); - return (Criteria) this; - } - - public Criteria andRemarkGreaterThan(String value) { - addCriterion("remark >", value, "remark"); - return (Criteria) this; - } - - public Criteria andRemarkGreaterThanOrEqualTo(String value) { - addCriterion("remark >=", value, "remark"); - return (Criteria) this; - } - - public Criteria andRemarkLessThan(String value) { - addCriterion("remark <", value, "remark"); - return (Criteria) this; - } - - public Criteria andRemarkLessThanOrEqualTo(String value) { - addCriterion("remark <=", value, "remark"); - return (Criteria) this; - } - - public Criteria andRemarkLike(String value) { - addCriterion("remark like", value, "remark"); - return (Criteria) this; - } - - public Criteria andRemarkNotLike(String value) { - addCriterion("remark not like", value, "remark"); - return (Criteria) this; - } - - public Criteria andRemarkIn(List values) { - addCriterion("remark in", values, "remark"); - return (Criteria) this; - } - - public Criteria andRemarkNotIn(List values) { - addCriterion("remark not in", values, "remark"); - return (Criteria) this; - } - - public Criteria andRemarkBetween(String value1, String value2) { - addCriterion("remark between", value1, value2, "remark"); - return (Criteria) this; - } - - public Criteria andRemarkNotBetween(String value1, String value2) { - addCriterion("remark not between", value1, value2, "remark"); - return (Criteria) this; - } - - public Criteria andBlackStatusIsNull() { - addCriterion("black_status is null"); - return (Criteria) this; - } - - public Criteria andBlackStatusIsNotNull() { - addCriterion("black_status is not null"); - return (Criteria) this; - } - - public Criteria andBlackStatusEqualTo(Integer value) { - addCriterion("black_status =", value, "blackStatus"); - return (Criteria) this; - } - - public Criteria andBlackStatusNotEqualTo(Integer value) { - addCriterion("black_status <>", value, "blackStatus"); - return (Criteria) this; - } - - public Criteria andBlackStatusGreaterThan(Integer value) { - addCriterion("black_status >", value, "blackStatus"); - return (Criteria) this; - } - - public Criteria andBlackStatusGreaterThanOrEqualTo(Integer value) { - addCriterion("black_status >=", value, "blackStatus"); - return (Criteria) this; - } - - public Criteria andBlackStatusLessThan(Integer value) { - addCriterion("black_status <", value, "blackStatus"); - return (Criteria) this; - } - - public Criteria andBlackStatusLessThanOrEqualTo(Integer value) { - addCriterion("black_status <=", value, "blackStatus"); - return (Criteria) this; - } - - public Criteria andBlackStatusIn(List values) { - addCriterion("black_status in", values, "blackStatus"); - return (Criteria) this; - } - - public Criteria andBlackStatusNotIn(List values) { - addCriterion("black_status not in", values, "blackStatus"); - return (Criteria) this; - } - - public Criteria andBlackStatusBetween(Integer value1, Integer value2) { - addCriterion("black_status between", value1, value2, "blackStatus"); - return (Criteria) this; - } - - public Criteria andBlackStatusNotBetween(Integer value1, Integer value2) { - addCriterion("black_status not between", value1, value2, "blackStatus"); - return (Criteria) this; - } - - public Criteria andAuditTimeIsNull() { - addCriterion("audit_time is null"); - return (Criteria) this; - } - - public Criteria andAuditTimeIsNotNull() { - addCriterion("audit_time is not null"); - return (Criteria) this; - } - - public Criteria andAuditTimeEqualTo(Date value) { - addCriterion("audit_time =", value, "auditTime"); - return (Criteria) this; - } - - public Criteria andAuditTimeNotEqualTo(Date value) { - addCriterion("audit_time <>", value, "auditTime"); - return (Criteria) this; - } - - public Criteria andAuditTimeGreaterThan(Date value) { - addCriterion("audit_time >", value, "auditTime"); - return (Criteria) this; - } - - public Criteria andAuditTimeGreaterThanOrEqualTo(Date value) { - addCriterion("audit_time >=", value, "auditTime"); - return (Criteria) this; - } - - public Criteria andAuditTimeLessThan(Date value) { - addCriterion("audit_time <", value, "auditTime"); - return (Criteria) this; - } - - public Criteria andAuditTimeLessThanOrEqualTo(Date value) { - addCriterion("audit_time <=", value, "auditTime"); - return (Criteria) this; - } - - public Criteria andAuditTimeIn(List values) { - addCriterion("audit_time in", values, "auditTime"); - return (Criteria) this; - } - - public Criteria andAuditTimeNotIn(List values) { - addCriterion("audit_time not in", values, "auditTime"); - return (Criteria) this; - } - - public Criteria andAuditTimeBetween(Date value1, Date value2) { - addCriterion("audit_time between", value1, value2, "auditTime"); - return (Criteria) this; - } - - public Criteria andAuditTimeNotBetween(Date value1, Date value2) { - addCriterion("audit_time not between", value1, value2, "auditTime"); - return (Criteria) this; - } - - public Criteria andCashBlackStatusIsNull() { - addCriterion("cash_black_status is null"); - return (Criteria) this; - } - - public Criteria andCashBlackStatusIsNotNull() { - addCriterion("cash_black_status is not null"); - return (Criteria) this; - } - - public Criteria andCashBlackStatusEqualTo(Integer value) { - addCriterion("cash_black_status =", value, "cashBlackStatus"); - return (Criteria) this; - } - - public Criteria andCashBlackStatusNotEqualTo(Integer value) { - addCriterion("cash_black_status <>", value, "cashBlackStatus"); - return (Criteria) this; - } - - public Criteria andCashBlackStatusGreaterThan(Integer value) { - addCriterion("cash_black_status >", value, "cashBlackStatus"); - return (Criteria) this; - } - - public Criteria andCashBlackStatusGreaterThanOrEqualTo(Integer value) { - addCriterion("cash_black_status >=", value, "cashBlackStatus"); - return (Criteria) this; - } - - public Criteria andCashBlackStatusLessThan(Integer value) { - addCriterion("cash_black_status <", value, "cashBlackStatus"); - return (Criteria) this; - } - - public Criteria andCashBlackStatusLessThanOrEqualTo(Integer value) { - addCriterion("cash_black_status <=", value, "cashBlackStatus"); - return (Criteria) this; - } - - public Criteria andCashBlackStatusIn(List values) { - addCriterion("cash_black_status in", values, "cashBlackStatus"); - return (Criteria) this; - } - - public Criteria andCashBlackStatusNotIn(List values) { - addCriterion("cash_black_status not in", values, "cashBlackStatus"); - return (Criteria) this; - } - - public Criteria andCashBlackStatusBetween(Integer value1, Integer value2) { - addCriterion("cash_black_status between", value1, value2, "cashBlackStatus"); - return (Criteria) this; - } - - public Criteria andCashBlackStatusNotBetween(Integer value1, Integer value2) { - addCriterion("cash_black_status not between", value1, value2, "cashBlackStatus"); - return (Criteria) this; - } - - public Criteria andCashQuotaIsNull() { - addCriterion("cash_quota is null"); - return (Criteria) this; - } - - public Criteria andCashQuotaIsNotNull() { - addCriterion("cash_quota is not null"); - return (Criteria) this; - } - - public Criteria andCashQuotaEqualTo(BigDecimal value) { - addCriterion("cash_quota =", value, "cashQuota"); - return (Criteria) this; - } - - public Criteria andCashQuotaNotEqualTo(BigDecimal value) { - addCriterion("cash_quota <>", value, "cashQuota"); - return (Criteria) this; - } - - public Criteria andCashQuotaGreaterThan(BigDecimal value) { - addCriterion("cash_quota >", value, "cashQuota"); - return (Criteria) this; - } - - public Criteria andCashQuotaGreaterThanOrEqualTo(BigDecimal value) { - addCriterion("cash_quota >=", value, "cashQuota"); - return (Criteria) this; - } - - public Criteria andCashQuotaLessThan(BigDecimal value) { - addCriterion("cash_quota <", value, "cashQuota"); - return (Criteria) this; - } - - public Criteria andCashQuotaLessThanOrEqualTo(BigDecimal value) { - addCriterion("cash_quota <=", value, "cashQuota"); - return (Criteria) this; - } - - public Criteria andCashQuotaIn(List values) { - addCriterion("cash_quota in", values, "cashQuota"); - return (Criteria) this; - } - - public Criteria andCashQuotaNotIn(List values) { - addCriterion("cash_quota not in", values, "cashQuota"); - return (Criteria) this; - } - - public Criteria andCashQuotaBetween(BigDecimal value1, BigDecimal value2) { - addCriterion("cash_quota between", value1, value2, "cashQuota"); - return (Criteria) this; - } - - public Criteria andCashQuotaNotBetween(BigDecimal value1, BigDecimal value2) { - addCriterion("cash_quota not between", value1, value2, "cashQuota"); - return (Criteria) this; - } - - public Criteria andFrozenCashQuotaIsNull() { - addCriterion("frozen_cash_quota is null"); - return (Criteria) this; - } - - public Criteria andFrozenCashQuotaIsNotNull() { - addCriterion("frozen_cash_quota is not null"); - return (Criteria) this; - } - - public Criteria andFrozenCashQuotaEqualTo(BigDecimal value) { - addCriterion("frozen_cash_quota =", value, "frozenCashQuota"); - return (Criteria) this; - } - - public Criteria andFrozenCashQuotaNotEqualTo(BigDecimal value) { - addCriterion("frozen_cash_quota <>", value, "frozenCashQuota"); - return (Criteria) this; - } - - public Criteria andFrozenCashQuotaGreaterThan(BigDecimal value) { - addCriterion("frozen_cash_quota >", value, "frozenCashQuota"); - return (Criteria) this; - } - - public Criteria andFrozenCashQuotaGreaterThanOrEqualTo(BigDecimal value) { - addCriterion("frozen_cash_quota >=", value, "frozenCashQuota"); - return (Criteria) this; - } - - public Criteria andFrozenCashQuotaLessThan(BigDecimal value) { - addCriterion("frozen_cash_quota <", value, "frozenCashQuota"); - return (Criteria) this; - } - - public Criteria andFrozenCashQuotaLessThanOrEqualTo(BigDecimal value) { - addCriterion("frozen_cash_quota <=", value, "frozenCashQuota"); - return (Criteria) this; - } - - public Criteria andFrozenCashQuotaIn(List values) { - addCriterion("frozen_cash_quota in", values, "frozenCashQuota"); - return (Criteria) this; - } - - public Criteria andFrozenCashQuotaNotIn(List values) { - addCriterion("frozen_cash_quota not in", values, "frozenCashQuota"); - return (Criteria) this; - } - - public Criteria andFrozenCashQuotaBetween(BigDecimal value1, BigDecimal value2) { - addCriterion("frozen_cash_quota between", value1, value2, "frozenCashQuota"); - return (Criteria) this; - } - - public Criteria andFrozenCashQuotaNotBetween(BigDecimal value1, BigDecimal value2) { - addCriterion("frozen_cash_quota not between", value1, value2, "frozenCashQuota"); - return (Criteria) this; - } - - public Criteria andCreditQuotaIsNull() { - addCriterion("credit_quota is null"); - return (Criteria) this; - } - - public Criteria andCreditQuotaIsNotNull() { - addCriterion("credit_quota is not null"); - return (Criteria) this; - } - - public Criteria andCreditQuotaEqualTo(BigDecimal value) { - addCriterion("credit_quota =", value, "creditQuota"); - return (Criteria) this; - } - - public Criteria andCreditQuotaNotEqualTo(BigDecimal value) { - addCriterion("credit_quota <>", value, "creditQuota"); - return (Criteria) this; - } - - public Criteria andCreditQuotaGreaterThan(BigDecimal value) { - addCriterion("credit_quota >", value, "creditQuota"); - return (Criteria) this; - } - - public Criteria andCreditQuotaGreaterThanOrEqualTo(BigDecimal value) { - addCriterion("credit_quota >=", value, "creditQuota"); - return (Criteria) this; - } - - public Criteria andCreditQuotaLessThan(BigDecimal value) { - addCriterion("credit_quota <", value, "creditQuota"); - return (Criteria) this; - } - - public Criteria andCreditQuotaLessThanOrEqualTo(BigDecimal value) { - addCriterion("credit_quota <=", value, "creditQuota"); - return (Criteria) this; - } - - public Criteria andCreditQuotaIn(List values) { - addCriterion("credit_quota in", values, "creditQuota"); - return (Criteria) this; - } - - public Criteria andCreditQuotaNotIn(List values) { - addCriterion("credit_quota not in", values, "creditQuota"); - return (Criteria) this; - } - - public Criteria andCreditQuotaBetween(BigDecimal value1, BigDecimal value2) { - addCriterion("credit_quota between", value1, value2, "creditQuota"); - return (Criteria) this; - } - - public Criteria andCreditQuotaNotBetween(BigDecimal value1, BigDecimal value2) { - addCriterion("credit_quota not between", value1, value2, "creditQuota"); - return (Criteria) this; - } - - public Criteria andFrozenCreditQuotaIsNull() { - addCriterion("frozen_credit_quota is null"); - return (Criteria) this; - } - - public Criteria andFrozenCreditQuotaIsNotNull() { - addCriterion("frozen_credit_quota is not null"); - return (Criteria) this; - } - - public Criteria andFrozenCreditQuotaEqualTo(BigDecimal value) { - addCriterion("frozen_credit_quota =", value, "frozenCreditQuota"); - return (Criteria) this; - } - - public Criteria andFrozenCreditQuotaNotEqualTo(BigDecimal value) { - addCriterion("frozen_credit_quota <>", value, "frozenCreditQuota"); - return (Criteria) this; - } - - public Criteria andFrozenCreditQuotaGreaterThan(BigDecimal value) { - addCriterion("frozen_credit_quota >", value, "frozenCreditQuota"); - return (Criteria) this; - } - - public Criteria andFrozenCreditQuotaGreaterThanOrEqualTo(BigDecimal value) { - addCriterion("frozen_credit_quota >=", value, "frozenCreditQuota"); - return (Criteria) this; - } - - public Criteria andFrozenCreditQuotaLessThan(BigDecimal value) { - addCriterion("frozen_credit_quota <", value, "frozenCreditQuota"); - return (Criteria) this; - } - - public Criteria andFrozenCreditQuotaLessThanOrEqualTo(BigDecimal value) { - addCriterion("frozen_credit_quota <=", value, "frozenCreditQuota"); - return (Criteria) this; - } - - public Criteria andFrozenCreditQuotaIn(List values) { - addCriterion("frozen_credit_quota in", values, "frozenCreditQuota"); - return (Criteria) this; - } - - public Criteria andFrozenCreditQuotaNotIn(List values) { - addCriterion("frozen_credit_quota not in", values, "frozenCreditQuota"); - return (Criteria) this; - } - - public Criteria andFrozenCreditQuotaBetween(BigDecimal value1, BigDecimal value2) { - addCriterion("frozen_credit_quota between", value1, value2, "frozenCreditQuota"); - return (Criteria) this; - } - - public Criteria andFrozenCreditQuotaNotBetween(BigDecimal value1, BigDecimal value2) { - addCriterion("frozen_credit_quota not between", value1, value2, "frozenCreditQuota"); - return (Criteria) this; - } - - public Criteria andAuditStatusIsNull() { - addCriterion("audit_status is null"); - return (Criteria) this; - } - - public Criteria andAuditStatusIsNotNull() { - addCriterion("audit_status is not null"); - return (Criteria) this; - } - - public Criteria andAuditStatusEqualTo(Integer value) { - addCriterion("audit_status =", value, "auditStatus"); - return (Criteria) this; - } - - public Criteria andAuditStatusNotEqualTo(Integer value) { - addCriterion("audit_status <>", value, "auditStatus"); - return (Criteria) this; - } - - public Criteria andAuditStatusGreaterThan(Integer value) { - addCriterion("audit_status >", value, "auditStatus"); - return (Criteria) this; - } - - public Criteria andAuditStatusGreaterThanOrEqualTo(Integer value) { - addCriterion("audit_status >=", value, "auditStatus"); - return (Criteria) this; - } - - public Criteria andAuditStatusLessThan(Integer value) { - addCriterion("audit_status <", value, "auditStatus"); - return (Criteria) this; - } - - public Criteria andAuditStatusLessThanOrEqualTo(Integer value) { - addCriterion("audit_status <=", value, "auditStatus"); - return (Criteria) this; - } - - public Criteria andAuditStatusIn(List values) { - addCriterion("audit_status in", values, "auditStatus"); - return (Criteria) this; - } - - public Criteria andAuditStatusNotIn(List values) { - addCriterion("audit_status not in", values, "auditStatus"); - return (Criteria) this; - } - - public Criteria andAuditStatusBetween(Integer value1, Integer value2) { - addCriterion("audit_status between", value1, value2, "auditStatus"); - return (Criteria) this; - } - - public Criteria andAuditStatusNotBetween(Integer value1, Integer value2) { - addCriterion("audit_status not between", value1, value2, "auditStatus"); - return (Criteria) this; - } - } - - public static class Criteria extends GeneratedCriteria { - - protected Criteria() { - super(); - } - } - - public static class Criterion { - private String condition; - - private Object value; - - private Object secondValue; - - private boolean noValue; - - private boolean singleValue; - - private boolean betweenValue; - - private boolean listValue; - - private String typeHandler; - - public String getCondition() { - return condition; - } - - public Object getValue() { - return value; - } - - public Object getSecondValue() { - return secondValue; - } - - public boolean isNoValue() { - return noValue; - } - - public boolean isSingleValue() { - return singleValue; - } - - public boolean isBetweenValue() { - return betweenValue; - } - - public boolean isListValue() { - return listValue; - } - - public String getTypeHandler() { - return typeHandler; - } - - protected Criterion(String condition) { - super(); - this.condition = condition; - this.typeHandler = null; - this.noValue = true; - } - - protected Criterion(String condition, Object value, String typeHandler) { - super(); - this.condition = condition; - this.value = value; - this.typeHandler = typeHandler; - if (value instanceof List) { - this.listValue = true; - } else { - this.singleValue = true; - } - } - - protected Criterion(String condition, Object value) { - this(condition, value, null); - } - - protected Criterion(String condition, Object value, Object secondValue, String typeHandler) { - super(); - this.condition = condition; - this.value = value; - this.secondValue = secondValue; - this.typeHandler = typeHandler; - this.betweenValue = true; - } - - protected Criterion(String condition, Object value, Object secondValue) { - this(condition, value, secondValue, null); - } - } -} \ No newline at end of file diff --git a/framework/spring/spring-data/spring-mybatis/src/main/resources/application.properties b/framework/spring/spring-data/spring-mybatis/src/main/resources/application.properties index 4b0a46aca..417990a4b 100644 --- a/framework/spring/spring-data/spring-mybatis/src/main/resources/application.properties +++ b/framework/spring/spring-data/spring-mybatis/src/main/resources/application.properties @@ -3,7 +3,7 @@ spring.jackson.property-naming-strategy=SNAKE_CASE spring.datasource.type=com.alibaba.druid.pool.DruidDataSource -spring.datasource.url= jdbc:mysql://local-dev:3306/o2o-dev?useSSL=false +spring.datasource.url= jdbc:mysql://local-dev:3306/o2o?useSSL=false spring.datasource.username=root spring.datasource.password=root spring.datasource.driver-class-name=com.mysql.jdbc.Driver @@ -56,8 +56,28 @@ pagehelper.reasonable= true pagehelper.support-methods-arguments=true +logging.level.org.laidu.learn.mybatis.mapper=debug logging.config=classpath:config/logback-spring.xml #mybatis 配置 #mybatis.generator.configurationFile=config/generatorConfig.xml -mybatis.configuration.use-generated-keys=true \ No newline at end of file +mybatis.configuration.use-generated-keys=true +mybatis.configuration.local-cache-scope=session +mybatis.configuration.cache-enabled=true + +#redis config +spring.redis.database=0 +spring.redis.host=localhost +spring.redis.password= +spring.redis.port=6379 +spring.redis.jedis.pool.max-active=8 +spring.redis.jedis.pool.max-idle=8 +spring.redis.jedis.pool.max-wait=-1ms +spring.redis.jedis.pool.min-idle=0 +spring.redis.lettuce.pool.max-active=8 +spring.redis.lettuce.pool.max-idle=8 +spring.redis.lettuce.pool.max-wait=-1ms +spring.redis.lettuce.pool.min-idle=0 +spring.redis.lettuce.shutdown-timeout=100ms +spring.redis.ssl=false +spring.redis.timeout= \ No newline at end of file diff --git a/framework/spring/spring-data/spring-mybatis/src/main/resources/config/generatorConfig.xml b/framework/spring/spring-data/spring-mybatis/src/main/resources/config/generatorConfig.xml index b87595ca5..032f6e9b0 100644 --- a/framework/spring/spring-data/spring-mybatis/src/main/resources/config/generatorConfig.xml +++ b/framework/spring/spring-data/spring-mybatis/src/main/resources/config/generatorConfig.xml @@ -29,7 +29,8 @@ - + + diff --git a/framework/spring/spring-data/spring-mybatis/src/main/resources/config/logback-spring.xml b/framework/spring/spring-data/spring-mybatis/src/main/resources/config/logback-spring.xml index 77b95419e..3ea011c2b 100644 --- a/framework/spring/spring-data/spring-mybatis/src/main/resources/config/logback-spring.xml +++ b/framework/spring/spring-data/spring-mybatis/src/main/resources/config/logback-spring.xml @@ -27,11 +27,11 @@ See here for more details: http://gordondickens.com/wordpress/2013/03/27/sawing- ${CONSOLE_LOG_PATTERN} utf8 - - debug - DENY - NEUTRAL - + + + + + @@ -127,7 +127,7 @@ See here for more details: http://gordondickens.com/wordpress/2013/03/27/sawing- - + From 08df6e97d5b06867ebc0e12363590096a367098c Mon Sep 17 00:00:00 2001 From: "xpcoder823@gmail.com" Date: Fri, 28 Sep 2018 08:10:47 +0800 Subject: [PATCH 172/417] sync --- .../httpclient/demo/HttpFileDownloadDemo.java | 66 +++++++++++++++++++ .../spring/spring-data/spring-mybatis/pom.xml | 16 ++--- .../org/laidu/learn/mybatis/MybatisApp.java | 3 +- .../controller/UserInfoController.java | 2 +- .../src/main/resources/application.properties | 31 +++++---- 5 files changed, 91 insertions(+), 27 deletions(-) create mode 100644 framework/network/httpclient/src/main/java/org/laidu/learn/apache/httpclient/demo/HttpFileDownloadDemo.java diff --git a/framework/network/httpclient/src/main/java/org/laidu/learn/apache/httpclient/demo/HttpFileDownloadDemo.java b/framework/network/httpclient/src/main/java/org/laidu/learn/apache/httpclient/demo/HttpFileDownloadDemo.java new file mode 100644 index 000000000..641d78d0c --- /dev/null +++ b/framework/network/httpclient/src/main/java/org/laidu/learn/apache/httpclient/demo/HttpFileDownloadDemo.java @@ -0,0 +1,66 @@ +package org.laidu.learn.apache.httpclient.demo; + +import jodd.io.FileUtil; +import lombok.extern.slf4j.Slf4j; +import org.apache.commons.lang3.time.StopWatch; +import org.apache.http.HttpEntity; +import org.apache.http.client.ClientProtocolException; +import org.apache.http.client.ResponseHandler; +import org.apache.http.client.methods.HttpGet; +import org.apache.http.impl.client.CloseableHttpClient; +import org.apache.http.impl.client.HttpClients; +import org.apache.http.util.EntityUtils; + +import java.io.File; +import java.io.IOException; +import java.util.concurrent.TimeUnit; + +/** + * 使用 httpclient 进行文件下载 + *

                    + * Created by tiancai.zang + * on 2018-09-27 23:28. + */ +@Slf4j +public class HttpFileDownloadDemo { + + public static void main(String[] args) { + + String fileUrl = "https://mirrors.tuna.tsinghua.edu.cn/centos/7.5.1804/isos/x86_64/CentOS-7-x86_64-NetInstall-1804.iso"; + + try(CloseableHttpClient httpclient = HttpClients.createDefault()) { + + HttpGet httpget = new HttpGet(fileUrl); + + System.out.println("Executing request " + httpget.getRequestLine()); + + ResponseHandler responseHandler = response -> { + int status = response.getStatusLine().getStatusCode(); + if (status >= 200 && status < 300) { + HttpEntity entity = response.getEntity(); + return entity != null ? EntityUtils.toByteArray(entity) : null; + } else { + throw new ClientProtocolException("Unexpected response status: " + status); + } + }; + + StopWatch started = StopWatch.createStarted(); +// started.start(); + byte[] bytes = httpclient.execute(httpget, responseHandler); + started.stop(); + + log.info("started.getTime(TimeUnit.MICROSECONDS)'s value : {}", started.getTime(TimeUnit.MICROSECONDS)); + File tempFile = FileUtil.createTempFile(); + FileUtil.writeBytes(tempFile,bytes); + + log.info("tempFile.getPath()'s value : {}", tempFile.getPath()); + + + } catch (ClientProtocolException e) { + e.printStackTrace(); + } catch (IOException e) { + e.printStackTrace(); + } + + } +} \ No newline at end of file diff --git a/framework/spring/spring-data/spring-mybatis/pom.xml b/framework/spring/spring-data/spring-mybatis/pom.xml index 291e2e6b4..22e2619ec 100644 --- a/framework/spring/spring-data/spring-mybatis/pom.xml +++ b/framework/spring/spring-data/spring-mybatis/pom.xml @@ -31,14 +31,14 @@ org.mybatis.spring.boot mybatis-spring-boot-starter-test - - org.springframework.boot - spring-boot-starter-cache - - - org.springframework.boot - spring-boot-starter-data-redis - + + + + + + + + org.apache.commons commons-pool2 diff --git a/framework/spring/spring-data/spring-mybatis/src/main/java/org/laidu/learn/mybatis/MybatisApp.java b/framework/spring/spring-data/spring-mybatis/src/main/java/org/laidu/learn/mybatis/MybatisApp.java index 3ac7d65a8..2da7dc366 100644 --- a/framework/spring/spring-data/spring-mybatis/src/main/java/org/laidu/learn/mybatis/MybatisApp.java +++ b/framework/spring/spring-data/spring-mybatis/src/main/java/org/laidu/learn/mybatis/MybatisApp.java @@ -3,7 +3,6 @@ import org.mybatis.spring.annotation.MapperScan; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; -import org.springframework.cache.annotation.EnableCaching; /** * org.laidu.learn.amqp.Application @@ -12,7 +11,7 @@ */ @MapperScan("org.laidu.learn.mybatis.mapper") @SpringBootApplication -@EnableCaching(proxyTargetClass = true) +//@EnableCaching(proxyTargetClass = true) public class MybatisApp { public static void main(String[] args){ diff --git a/framework/spring/spring-data/spring-mybatis/src/main/java/org/laidu/learn/mybatis/controller/UserInfoController.java b/framework/spring/spring-data/spring-mybatis/src/main/java/org/laidu/learn/mybatis/controller/UserInfoController.java index 921972897..2f2cb992c 100644 --- a/framework/spring/spring-data/spring-mybatis/src/main/java/org/laidu/learn/mybatis/controller/UserInfoController.java +++ b/framework/spring/spring-data/spring-mybatis/src/main/java/org/laidu/learn/mybatis/controller/UserInfoController.java @@ -32,7 +32,7 @@ public UserInfoController(AppUserMapper userMapper) { } @GetMapping("/query/{id}") - @Transactional + @Transactional(rollbackFor = Exception.class) public AppUser queryById(@PathVariable("id") Long id){ AppUser user = userMapper.selectByPrimaryKey(id); diff --git a/framework/spring/spring-data/spring-mybatis/src/main/resources/application.properties b/framework/spring/spring-data/spring-mybatis/src/main/resources/application.properties index 417990a4b..a4e9f8faf 100644 --- a/framework/spring/spring-data/spring-mybatis/src/main/resources/application.properties +++ b/framework/spring/spring-data/spring-mybatis/src/main/resources/application.properties @@ -63,21 +63,20 @@ logging.config=classpath:config/logback-spring.xml #mybatis.generator.configurationFile=config/generatorConfig.xml mybatis.configuration.use-generated-keys=true mybatis.configuration.local-cache-scope=session -mybatis.configuration.cache-enabled=true #redis config -spring.redis.database=0 -spring.redis.host=localhost -spring.redis.password= -spring.redis.port=6379 -spring.redis.jedis.pool.max-active=8 -spring.redis.jedis.pool.max-idle=8 -spring.redis.jedis.pool.max-wait=-1ms -spring.redis.jedis.pool.min-idle=0 -spring.redis.lettuce.pool.max-active=8 -spring.redis.lettuce.pool.max-idle=8 -spring.redis.lettuce.pool.max-wait=-1ms -spring.redis.lettuce.pool.min-idle=0 -spring.redis.lettuce.shutdown-timeout=100ms -spring.redis.ssl=false -spring.redis.timeout= \ No newline at end of file +#spring.redis.database=0 +#spring.redis.host=localhost +#spring.redis.password= +#spring.redis.port=6379 +#spring.redis.jedis.pool.max-active=8 +#spring.redis.jedis.pool.max-idle=8 +#spring.redis.jedis.pool.max-wait=-1ms +#spring.redis.jedis.pool.min-idle=0 +#spring.redis.lettuce.pool.max-active=8 +#spring.redis.lettuce.pool.max-idle=8 +#spring.redis.lettuce.pool.max-wait=-1ms +#spring.redis.lettuce.pool.min-idle=0 +#spring.redis.lettuce.shutdown-timeout=100ms +#spring.redis.ssl=false +#spring.redis.timeout= \ No newline at end of file From c608d25ec43ffffaeed1ad26cbdeb34e42e0e4d7 Mon Sep 17 00:00:00 2001 From: Tiancai ZANG Date: Fri, 28 Sep 2018 19:52:26 +0800 Subject: [PATCH 173/417] sync --- .../laidu/learn/jvm/classloader/ClassLoaderDemo.java | 9 ++++++++- .../laidu/learn/language/feature/date/DateUsage.java | 10 +++++++++- src/main/resources/logback-spring.xml | 10 +++++++++- 3 files changed, 26 insertions(+), 3 deletions(-) diff --git a/language-advance/jvm/src/main/java/org/laidu/learn/jvm/classloader/ClassLoaderDemo.java b/language-advance/jvm/src/main/java/org/laidu/learn/jvm/classloader/ClassLoaderDemo.java index d014248a6..b43957a89 100644 --- a/language-advance/jvm/src/main/java/org/laidu/learn/jvm/classloader/ClassLoaderDemo.java +++ b/language-advance/jvm/src/main/java/org/laidu/learn/jvm/classloader/ClassLoaderDemo.java @@ -1,5 +1,6 @@ package org.laidu.learn.jvm.classloader; +import lombok.Data; import lombok.extern.slf4j.Slf4j; /** @@ -11,10 +12,16 @@ @Slf4j public class ClassLoaderDemo { - public static void main(String[] args) { + public static void main(String[] args) throws ClassNotFoundException, IllegalAccessException, InstantiationException { + } + + @Data + public static class Person { + private String name; + private int grander; } } \ No newline at end of file diff --git a/language-feature/src/main/java/org/laidu/learn/language/feature/date/DateUsage.java b/language-feature/src/main/java/org/laidu/learn/language/feature/date/DateUsage.java index 64f5218eb..7fb374056 100644 --- a/language-feature/src/main/java/org/laidu/learn/language/feature/date/DateUsage.java +++ b/language-feature/src/main/java/org/laidu/learn/language/feature/date/DateUsage.java @@ -3,7 +3,9 @@ import lombok.extern.slf4j.Slf4j; import java.time.*; +import java.util.Calendar; import java.util.Date; +import java.util.TimeZone; /** * Created by 臧天才 on 2017/8/23 下午4:49. @@ -11,6 +13,12 @@ @Slf4j public class DateUsage { + + static Date now(){ + return Calendar.getInstance(TimeZone.getTimeZone(ZoneId.of("Asia/Shanghai"))).getTime(); + } + + public static void main(String[] args) { // LocalDate usage @@ -46,7 +54,7 @@ public static void main(String[] args) { log.info("-*--*--*--*-zonedDateTime : {}-*--*--*--*--",zonedDateTime.toLocalTime()); - Date date = new Date(); + Date date = now(); } diff --git a/src/main/resources/logback-spring.xml b/src/main/resources/logback-spring.xml index 666aaef18..6f76e8b07 100644 --- a/src/main/resources/logback-spring.xml +++ b/src/main/resources/logback-spring.xml @@ -43,6 +43,8 @@ See here for more details: http://gordondickens.com/wordpress/2013/03/27/sawing- 30 + 1MB + 10MB @@ -59,6 +61,8 @@ See here for more details: http://gordondickens.com/wordpress/2013/03/27/sawing- 30 + 1MB + 10MB @@ -81,6 +85,8 @@ See here for more details: http://gordondickens.com/wordpress/2013/03/27/sawing- 30 + 1MB + 10MB @@ -99,7 +105,9 @@ See here for more details: http://gordondickens.com/wordpress/2013/03/27/sawing- ${LOG_PATH}/${APP_NAME}-query.log-druid-%d{yyyy-MM-dd}.log - 90 + 30 + 1MB + 10MB From df5528162f1948415b48368701d122f9bf66e152 Mon Sep 17 00:00:00 2001 From: Tiancai ZANG Date: Mon, 8 Oct 2018 14:09:54 +0800 Subject: [PATCH 174/417] sync --- .../learn/language/feature/thread/local/ThreadA.java | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) diff --git a/language-feature/src/main/java/org/laidu/learn/language/feature/thread/local/ThreadA.java b/language-feature/src/main/java/org/laidu/learn/language/feature/thread/local/ThreadA.java index 8f43907f7..942b6b37a 100644 --- a/language-feature/src/main/java/org/laidu/learn/language/feature/thread/local/ThreadA.java +++ b/language-feature/src/main/java/org/laidu/learn/language/feature/thread/local/ThreadA.java @@ -18,13 +18,10 @@ @Slf4j public class ThreadA implements Runnable { - // Atomic integer containing the next thread ID to be assigned private static final AtomicInteger nextId = new AtomicInteger(0); - // Thread local variable containing each thread's ID private static final ThreadLocal threadId = ThreadLocal.withInitial(() -> nextId.getAndIncrement()); - // Returns the current thread's unique ID, assigning it if necessary public static int get() { return threadId.get(); } @@ -38,8 +35,10 @@ public static void main(String[] args) { ExecutorService executorService = Executors.newFixedThreadPool(4); - for (int ignored : IntStream.range(0,100).toArray()){ - executorService.submit(new ThreadA()); - } + IntStream.range(0,100) + .boxed() + .forEach(i -> executorService.submit(new ThreadA())); + + executorService.shutdown(); } } \ No newline at end of file From 98986f96a6a9d0659c2931a999bc4e0903754d35 Mon Sep 17 00:00:00 2001 From: Tiancai ZANG Date: Mon, 8 Oct 2018 19:31:55 +0800 Subject: [PATCH 175/417] start druid sql parser learn --- .../spring/spring-data/spring-mybatis/pom.xml | 4 ++ .../org/laidu/learn/mybatis/MybatisApp.java | 3 +- .../laidu/learn/mybatis/annotation/Query.java | 29 ++++++++++++ .../mybatis/annotation/package-info.java | 10 +++++ .../annotation/processor/QueryProcessor.java | 45 +++++++++++++++++++ .../controller/UserInfoController.java | 2 +- .../mybatis/{model => entity}/AppUser.java | 2 +- .../learn/mybatis/mapper/AppUserMapper.java | 2 +- .../mybatis/mapper/AppUserSqlProvider.java | 2 +- .../learn/mybatis/model/package-info.java | 10 +++++ .../learn/mybatis/model/var/VarAppUser.java | 27 +++++++++++ .../src/main/resources/application.properties | 2 +- .../main/resources/config/generatorConfig.xml | 2 +- .../config/mappers/AppUserMapper.xml | 14 +++--- 14 files changed, 140 insertions(+), 14 deletions(-) create mode 100644 framework/spring/spring-data/spring-mybatis/src/main/java/org/laidu/learn/mybatis/annotation/Query.java create mode 100644 framework/spring/spring-data/spring-mybatis/src/main/java/org/laidu/learn/mybatis/annotation/package-info.java create mode 100644 framework/spring/spring-data/spring-mybatis/src/main/java/org/laidu/learn/mybatis/annotation/processor/QueryProcessor.java rename framework/spring/spring-data/spring-mybatis/src/main/java/org/laidu/learn/mybatis/{model => entity}/AppUser.java (96%) create mode 100644 framework/spring/spring-data/spring-mybatis/src/main/java/org/laidu/learn/mybatis/model/package-info.java create mode 100644 framework/spring/spring-data/spring-mybatis/src/main/java/org/laidu/learn/mybatis/model/var/VarAppUser.java diff --git a/framework/spring/spring-data/spring-mybatis/pom.xml b/framework/spring/spring-data/spring-mybatis/pom.xml index 22e2619ec..cdb1ac970 100644 --- a/framework/spring/spring-data/spring-mybatis/pom.xml +++ b/framework/spring/spring-data/spring-mybatis/pom.xml @@ -31,6 +31,10 @@ org.mybatis.spring.boot mybatis-spring-boot-starter-test + + org.springframework.boot + spring-boot-starter-aop + diff --git a/framework/spring/spring-data/spring-mybatis/src/main/java/org/laidu/learn/mybatis/MybatisApp.java b/framework/spring/spring-data/spring-mybatis/src/main/java/org/laidu/learn/mybatis/MybatisApp.java index 2da7dc366..7685effe8 100644 --- a/framework/spring/spring-data/spring-mybatis/src/main/java/org/laidu/learn/mybatis/MybatisApp.java +++ b/framework/spring/spring-data/spring-mybatis/src/main/java/org/laidu/learn/mybatis/MybatisApp.java @@ -3,6 +3,7 @@ import org.mybatis.spring.annotation.MapperScan; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; +import org.springframework.context.annotation.EnableAspectJAutoProxy; /** * org.laidu.learn.amqp.Application @@ -11,7 +12,7 @@ */ @MapperScan("org.laidu.learn.mybatis.mapper") @SpringBootApplication -//@EnableCaching(proxyTargetClass = true) +@EnableAspectJAutoProxy(proxyTargetClass = true) public class MybatisApp { public static void main(String[] args){ diff --git a/framework/spring/spring-data/spring-mybatis/src/main/java/org/laidu/learn/mybatis/annotation/Query.java b/framework/spring/spring-data/spring-mybatis/src/main/java/org/laidu/learn/mybatis/annotation/Query.java new file mode 100644 index 000000000..37aff4b24 --- /dev/null +++ b/framework/spring/spring-data/spring-mybatis/src/main/java/org/laidu/learn/mybatis/annotation/Query.java @@ -0,0 +1,29 @@ +package org.laidu.learn.mybatis.annotation; + +import org.springframework.core.annotation.AliasFor; + +import java.lang.annotation.*; + +/** + * 查询sql + *

                    + * Created by laidu + * on 2018-10-08 18:57. + * + * @author laidu + */ +@Target(ElementType.FIELD) +@Documented +@Retention(RetentionPolicy.RUNTIME) +public @interface Query { + + /** + * @return 执行的sql语句 + */ + @AliasFor("value") + String sql() default ""; + + @AliasFor("sql") + String value(); + +} diff --git a/framework/spring/spring-data/spring-mybatis/src/main/java/org/laidu/learn/mybatis/annotation/package-info.java b/framework/spring/spring-data/spring-mybatis/src/main/java/org/laidu/learn/mybatis/annotation/package-info.java new file mode 100644 index 000000000..dab900454 --- /dev/null +++ b/framework/spring/spring-data/spring-mybatis/src/main/java/org/laidu/learn/mybatis/annotation/package-info.java @@ -0,0 +1,10 @@ +/** + * 自定义注解 + *

                    + * Created by laidu + * on 2018-10-08 18:56. + * + * @author laidu + */ +// TODO: 2018-10-08 18:56 自定义注解 +package org.laidu.learn.mybatis.annotation; \ No newline at end of file diff --git a/framework/spring/spring-data/spring-mybatis/src/main/java/org/laidu/learn/mybatis/annotation/processor/QueryProcessor.java b/framework/spring/spring-data/spring-mybatis/src/main/java/org/laidu/learn/mybatis/annotation/processor/QueryProcessor.java new file mode 100644 index 000000000..b93f0d4eb --- /dev/null +++ b/framework/spring/spring-data/spring-mybatis/src/main/java/org/laidu/learn/mybatis/annotation/processor/QueryProcessor.java @@ -0,0 +1,45 @@ +package org.laidu.learn.mybatis.annotation.processor; + +import com.alibaba.druid.sql.parser.SQLExprParser; +import com.alibaba.druid.sql.parser.SQLParserUtils; +import com.alibaba.druid.util.JdbcUtils; +import lombok.extern.slf4j.Slf4j; +import org.aspectj.lang.ProceedingJoinPoint; +import org.aspectj.lang.annotation.Around; +import org.aspectj.lang.annotation.Aspect; +import org.aspectj.lang.annotation.Pointcut; +import org.laidu.learn.mybatis.annotation.Query; +import org.springframework.stereotype.Component; + +/** + * query 注解处理器 + * + * @author tiancai.zang + * on 2018-10-08 19:03. + */ +@Slf4j +@Aspect +@Component +public class QueryProcessor{ + + + @Pointcut("@annotation(org.laidu.learn.mybatis.annotation.Query)") + private void pointcut() { + } + + @Around("pointcut() && @annotation(query)") + public Object processor(ProceedingJoinPoint joinPoint, Query query) throws Throwable { + + Object result = null; + + String sql = query.sql(); + + SQLExprParser sqlParser = SQLParserUtils.createExprParser(sql, JdbcUtils.MYSQL); + + + result = joinPoint.proceed(); + + return result; + + } +} \ No newline at end of file diff --git a/framework/spring/spring-data/spring-mybatis/src/main/java/org/laidu/learn/mybatis/controller/UserInfoController.java b/framework/spring/spring-data/spring-mybatis/src/main/java/org/laidu/learn/mybatis/controller/UserInfoController.java index 2f2cb992c..dd763d2f5 100644 --- a/framework/spring/spring-data/spring-mybatis/src/main/java/org/laidu/learn/mybatis/controller/UserInfoController.java +++ b/framework/spring/spring-data/spring-mybatis/src/main/java/org/laidu/learn/mybatis/controller/UserInfoController.java @@ -2,7 +2,7 @@ import lombok.extern.slf4j.Slf4j; import org.laidu.learn.mybatis.mapper.AppUserMapper; -import org.laidu.learn.mybatis.model.AppUser; +import org.laidu.learn.mybatis.entity.AppUser; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.transaction.annotation.Transactional; import org.springframework.web.bind.annotation.GetMapping; diff --git a/framework/spring/spring-data/spring-mybatis/src/main/java/org/laidu/learn/mybatis/model/AppUser.java b/framework/spring/spring-data/spring-mybatis/src/main/java/org/laidu/learn/mybatis/entity/AppUser.java similarity index 96% rename from framework/spring/spring-data/spring-mybatis/src/main/java/org/laidu/learn/mybatis/model/AppUser.java rename to framework/spring/spring-data/spring-mybatis/src/main/java/org/laidu/learn/mybatis/entity/AppUser.java index 2fe8df1ba..2221a879c 100644 --- a/framework/spring/spring-data/spring-mybatis/src/main/java/org/laidu/learn/mybatis/model/AppUser.java +++ b/framework/spring/spring-data/spring-mybatis/src/main/java/org/laidu/learn/mybatis/entity/AppUser.java @@ -1,4 +1,4 @@ -package org.laidu.learn.mybatis.model; +package org.laidu.learn.mybatis.entity; import lombok.AllArgsConstructor; import lombok.Builder; diff --git a/framework/spring/spring-data/spring-mybatis/src/main/java/org/laidu/learn/mybatis/mapper/AppUserMapper.java b/framework/spring/spring-data/spring-mybatis/src/main/java/org/laidu/learn/mybatis/mapper/AppUserMapper.java index ff7faaee1..a1b3b3f77 100644 --- a/framework/spring/spring-data/spring-mybatis/src/main/java/org/laidu/learn/mybatis/mapper/AppUserMapper.java +++ b/framework/spring/spring-data/spring-mybatis/src/main/java/org/laidu/learn/mybatis/mapper/AppUserMapper.java @@ -10,7 +10,7 @@ import org.apache.ibatis.annotations.Update; import org.apache.ibatis.annotations.UpdateProvider; import org.apache.ibatis.type.JdbcType; -import org.laidu.learn.mybatis.model.AppUser; +import org.laidu.learn.mybatis.entity.AppUser; @Mapper public interface AppUserMapper { diff --git a/framework/spring/spring-data/spring-mybatis/src/main/java/org/laidu/learn/mybatis/mapper/AppUserSqlProvider.java b/framework/spring/spring-data/spring-mybatis/src/main/java/org/laidu/learn/mybatis/mapper/AppUserSqlProvider.java index 27edf018a..c21255074 100644 --- a/framework/spring/spring-data/spring-mybatis/src/main/java/org/laidu/learn/mybatis/mapper/AppUserSqlProvider.java +++ b/framework/spring/spring-data/spring-mybatis/src/main/java/org/laidu/learn/mybatis/mapper/AppUserSqlProvider.java @@ -1,7 +1,7 @@ package org.laidu.learn.mybatis.mapper; import org.apache.ibatis.jdbc.SQL; -import org.laidu.learn.mybatis.model.AppUser; +import org.laidu.learn.mybatis.entity.AppUser; public class AppUserSqlProvider { diff --git a/framework/spring/spring-data/spring-mybatis/src/main/java/org/laidu/learn/mybatis/model/package-info.java b/framework/spring/spring-data/spring-mybatis/src/main/java/org/laidu/learn/mybatis/model/package-info.java new file mode 100644 index 000000000..8b91cf5d0 --- /dev/null +++ b/framework/spring/spring-data/spring-mybatis/src/main/java/org/laidu/learn/mybatis/model/package-info.java @@ -0,0 +1,10 @@ +/** + * model + *

                    + * Created by laidu + * on 2018-10-08 18:53. + * + * @author laidu + */ +// TODO: 2018-10-08 18:53 model +package org.laidu.learn.mybatis.model; \ No newline at end of file diff --git a/framework/spring/spring-data/spring-mybatis/src/main/java/org/laidu/learn/mybatis/model/var/VarAppUser.java b/framework/spring/spring-data/spring-mybatis/src/main/java/org/laidu/learn/mybatis/model/var/VarAppUser.java new file mode 100644 index 000000000..13f15dd71 --- /dev/null +++ b/framework/spring/spring-data/spring-mybatis/src/main/java/org/laidu/learn/mybatis/model/var/VarAppUser.java @@ -0,0 +1,27 @@ +package org.laidu.learn.mybatis.model.var; + +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; +import org.laidu.learn.mybatis.annotation.Query; + +/** + * 用户变量 + * + * @author tiancai.zang + * on 2018-10-08 18:54. + */ +@Data +@Builder +@AllArgsConstructor +@NoArgsConstructor +public class VarAppUser { + + /** + * 已注册用户数量 + */ + @Query("SELECT COUNT(*) FROM ca_app_user") + private Integer userCount; + +} \ No newline at end of file diff --git a/framework/spring/spring-data/spring-mybatis/src/main/resources/application.properties b/framework/spring/spring-data/spring-mybatis/src/main/resources/application.properties index a4e9f8faf..d601f1523 100644 --- a/framework/spring/spring-data/spring-mybatis/src/main/resources/application.properties +++ b/framework/spring/spring-data/spring-mybatis/src/main/resources/application.properties @@ -3,7 +3,7 @@ spring.jackson.property-naming-strategy=SNAKE_CASE spring.datasource.type=com.alibaba.druid.pool.DruidDataSource -spring.datasource.url= jdbc:mysql://local-dev:3306/o2o?useSSL=false +spring.datasource.url= jdbc:mysql://local-dev:3306/o2o-dev?useSSL=false spring.datasource.username=root spring.datasource.password=root spring.datasource.driver-class-name=com.mysql.jdbc.Driver diff --git a/framework/spring/spring-data/spring-mybatis/src/main/resources/config/generatorConfig.xml b/framework/spring/spring-data/spring-mybatis/src/main/resources/config/generatorConfig.xml index 032f6e9b0..fd2365fb2 100644 --- a/framework/spring/spring-data/spring-mybatis/src/main/resources/config/generatorConfig.xml +++ b/framework/spring/spring-data/spring-mybatis/src/main/resources/config/generatorConfig.xml @@ -62,7 +62,7 @@ - + diff --git a/framework/spring/spring-data/spring-mybatis/src/main/resources/config/mappers/AppUserMapper.xml b/framework/spring/spring-data/spring-mybatis/src/main/resources/config/mappers/AppUserMapper.xml index bc450623e..9be87a7e6 100644 --- a/framework/spring/spring-data/spring-mybatis/src/main/resources/config/mappers/AppUserMapper.xml +++ b/framework/spring/spring-data/spring-mybatis/src/main/resources/config/mappers/AppUserMapper.xml @@ -1,7 +1,7 @@ - + @@ -34,7 +34,7 @@ - + @@ -134,7 +134,7 @@ delete from ca_app_user where id = #{id,jdbcType=BIGINT} - + insert into ca_app_user (id, open_id, register_channel, username, id_card, name, id_card_detail_address, is_verify_id_card, id_card_coverup, @@ -158,7 +158,7 @@ #{frozenCashQuota,jdbcType=DECIMAL}, #{creditQuota,jdbcType=DECIMAL}, #{frozenCreditQuota,jdbcType=DECIMAL}, #{auditStatus,jdbcType=INTEGER}, #{idCardPolice,jdbcType=LONGVARCHAR}) - + insert into ca_app_user @@ -357,7 +357,7 @@ - + update ca_app_user @@ -456,7 +456,7 @@ where id = #{id,jdbcType=BIGINT} - + update ca_app_user set open_id = #{openId,jdbcType=VARCHAR}, register_channel = #{registerChannel,jdbcType=BIGINT}, @@ -491,7 +491,7 @@ id_card_police = #{idCardPolice,jdbcType=LONGVARCHAR} where id = #{id,jdbcType=BIGINT} - + update ca_app_user set open_id = #{openId,jdbcType=VARCHAR}, register_channel = #{registerChannel,jdbcType=BIGINT}, From 296c948cfda1cb2fb976500e2fac01b89fb88c5c Mon Sep 17 00:00:00 2001 From: Tiancai ZANG Date: Tue, 9 Oct 2018 11:50:01 +0800 Subject: [PATCH 176/417] start druid sql parser learn --- big-data/calcite/pom.xml | 15 +++++++++++++++ big-data/calcite/src/site.markdown/index.md | 14 ++++++++++++++ big-data/pom.xml | 1 + 3 files changed, 30 insertions(+) create mode 100644 big-data/calcite/pom.xml create mode 100644 big-data/calcite/src/site.markdown/index.md diff --git a/big-data/calcite/pom.xml b/big-data/calcite/pom.xml new file mode 100644 index 000000000..ea3d8771c --- /dev/null +++ b/big-data/calcite/pom.xml @@ -0,0 +1,15 @@ + + + + big-data + org.laidu.learn + 1.0-SNAPSHOT + + 4.0.0 + + calcite + + + \ No newline at end of file diff --git a/big-data/calcite/src/site.markdown/index.md b/big-data/calcite/src/site.markdown/index.md new file mode 100644 index 000000000..81a60b3ac --- /dev/null +++ b/big-data/calcite/src/site.markdown/index.md @@ -0,0 +1,14 @@ +# apache calsite 学习 + +参考: +* [官网](https://calcite.apache.org/) +* [用 Apache Calcite 构建强大的实时流式应用](https://linux.cn/article-8375-1.html) +* []() +* []() +* []() +* []() +* []() +* []() +* []() +* []() +* []() \ No newline at end of file diff --git a/big-data/pom.xml b/big-data/pom.xml index 41cc3013c..b5c7ca866 100644 --- a/big-data/pom.xml +++ b/big-data/pom.xml @@ -15,6 +15,7 @@ hadoop + calcite From 193cc8f232e35e74aeb5f4cea754e849852f4364 Mon Sep 17 00:00:00 2001 From: Tiancai ZANG Date: Tue, 9 Oct 2018 12:56:57 +0800 Subject: [PATCH 177/417] upgrade java 11 --- framework/aws/pom.xml | 27 ++++++++-- framework/gui-lib/pom.xml | 2 +- framework/network/retrofit/pom.xml | 5 ++ .../network/retrofit/usage/mode/BaoeList.java | 3 +- .../rabbitmq/java/RabbitmqClientDemo.java | 2 - language-advance/bytecode/pom.xml | 44 ++++++++-------- pom.xml | 50 +++++++++++++++++-- production-component/common-util/pom.xml | 28 +++++++---- production-component/crawler-helper/pom.xml | 7 --- 9 files changed, 115 insertions(+), 53 deletions(-) diff --git a/framework/aws/pom.xml b/framework/aws/pom.xml index d9ceb47fd..3b232d922 100644 --- a/framework/aws/pom.xml +++ b/framework/aws/pom.xml @@ -13,22 +13,39 @@ pom dynamoDB - s3 + - 1.11.386 + 1.11.423 + + + + + + + + + + + + com.amazonaws - aws-java-sdk-bom + aws-java-sdk-s3 ${aws.sdk.version} - pom - import + + com.amazonaws + aws-java-sdk-dynamodb + ${aws.sdk.version} + + + diff --git a/framework/gui-lib/pom.xml b/framework/gui-lib/pom.xml index 4e0c1401e..1f32e94d3 100644 --- a/framework/gui-lib/pom.xml +++ b/framework/gui-lib/pom.xml @@ -12,7 +12,7 @@ gui-lib pom - jfoenix + diff --git a/framework/network/retrofit/pom.xml b/framework/network/retrofit/pom.xml index d8919d508..b40e53cf3 100644 --- a/framework/network/retrofit/pom.xml +++ b/framework/network/retrofit/pom.xml @@ -13,6 +13,11 @@ + + javax.annotation + jsr250-api + 1.0 + com.squareup.retrofit2 retrofit diff --git a/framework/network/retrofit/src/main/java/org/laidu/learn/network/retrofit/usage/mode/BaoeList.java b/framework/network/retrofit/src/main/java/org/laidu/learn/network/retrofit/usage/mode/BaoeList.java index bffcbc165..9ea40b939 100644 --- a/framework/network/retrofit/src/main/java/org/laidu/learn/network/retrofit/usage/mode/BaoeList.java +++ b/framework/network/retrofit/src/main/java/org/laidu/learn/network/retrofit/usage/mode/BaoeList.java @@ -1,9 +1,10 @@ package org.laidu.learn.network.retrofit.usage.mode; -import javax.annotation.Generated; import com.google.gson.annotations.SerializedName; +import javax.annotation.Generated; + @Generated("net.hexar.json2pojo") @SuppressWarnings("unused") public class BaoeList { diff --git a/framework/spring/spring-amqp/src/main/java/org/laidu/learn/amqp/rabbitmq/java/RabbitmqClientDemo.java b/framework/spring/spring-amqp/src/main/java/org/laidu/learn/amqp/rabbitmq/java/RabbitmqClientDemo.java index c647596e4..eca775938 100644 --- a/framework/spring/spring-amqp/src/main/java/org/laidu/learn/amqp/rabbitmq/java/RabbitmqClientDemo.java +++ b/framework/spring/spring-amqp/src/main/java/org/laidu/learn/amqp/rabbitmq/java/RabbitmqClientDemo.java @@ -8,7 +8,6 @@ import lombok.extern.slf4j.Slf4j; import java.io.IOException; -import java.util.concurrent.TimeoutException; /** * client usage demo @@ -16,7 +15,6 @@ * @author tiancai.zang * 2018-01-11 16:24. */ -// TODO: 2018-01-11 16:24 client usage demo @Slf4j public class RabbitmqClientDemo implements ClientDemo { diff --git a/language-advance/bytecode/pom.xml b/language-advance/bytecode/pom.xml index 7ee750efd..1ace11376 100644 --- a/language-advance/bytecode/pom.xml +++ b/language-advance/bytecode/pom.xml @@ -18,27 +18,27 @@ - - - - org.codehaus.mojo - aspectj-maven-plugin - 1.11 - - ${java.version} - ${java.version} - ${java.version} - - - - - compile - test-compile - - - - + + + + + + + + + + + + + + + + + + + + - - + + \ No newline at end of file diff --git a/pom.xml b/pom.xml index 2ef32d6ab..a2b6eda59 100644 --- a/pom.xml +++ b/pom.xml @@ -64,10 +64,10 @@ - 1.8 - 1.8 - 1.8 - 3.6.2 + 11 + ${java.version} + ${java.version} + 3.8.0 UTF-8 @@ -83,7 +83,7 @@ 2.1.0 - 1.16.18 + 1.18.2 1.2.3 @@ -193,6 +193,37 @@ + + + org.codehaus.mojo + versions-maven-plugin + 2.5 + + false + + + + + org.apache.maven.plugins + maven-toolchains-plugin + 1.1 + + + + 11 + oracle + + + + + + + toolchain + + + + + org.apache.maven.plugins maven-compiler-plugin @@ -200,7 +231,16 @@ ${maven.compiler.source} ${maven.compiler.target} + + + + org.projectlombok + lombok + ${lombok.version} + + + diff --git a/production-component/common-util/pom.xml b/production-component/common-util/pom.xml index 05b6bcb59..c4fed7790 100644 --- a/production-component/common-util/pom.xml +++ b/production-component/common-util/pom.xml @@ -15,11 +15,6 @@ - 1.8 - 1.8 - 1.8 - 3.6.2 - UTF-8 2.5 1.4 @@ -42,7 +37,6 @@ 1.1.8 1.0.0 - 1.16.20 1.2.3 2.57 @@ -51,11 +45,25 @@ - - org.projectlombok - lombok - ${lombok.version} + javax.xml.bind + jaxb-api + 2.3.0 + + + com.sun.xml.bind + jaxb-impl + 2.3.0 + + + org.glassfish.jaxb + jaxb-runtime + 2.3.0 + + + javax.activation + activation + 1.1.1 diff --git a/production-component/crawler-helper/pom.xml b/production-component/crawler-helper/pom.xml index ab843342b..abfb11313 100644 --- a/production-component/crawler-helper/pom.xml +++ b/production-component/crawler-helper/pom.xml @@ -14,13 +14,6 @@ 1.0-SNAPSHOT 4.0.0 - - 1.8 - 1.8 - 1.8 - 3.6.2 - UTF-8 - 爬虫小工具 From 106d324c52c60f0e5d231b515c3b2ca2409f8a77 Mon Sep 17 00:00:00 2001 From: Tiancai ZANG Date: Tue, 9 Oct 2018 19:10:54 +0800 Subject: [PATCH 178/417] upgrade java 11 --- big-data/calcite/src/site.markdown/index.md | 2 +- big-data/hadoop/pom.xml | 6 ++ big-data/pom.xml | 11 +++- framework/spring/pom.xml | 2 +- framework/thirdparty/pom.xml | 2 +- language-advance/bytecode/pom.xml | 63 ++++++++++++------- .../advance/bytecode/aspectj/AopDemo.java | 1 - language-feature/pom.xml | 1 + .../language/feature/collection/ListDemo.java | 25 +++++++- .../feature/httpclient/HttpclientDemo.java | 44 +++++++++++++ .../src/site/markdown/collection.md | 6 +- 11 files changed, 133 insertions(+), 30 deletions(-) create mode 100644 language-feature/src/main/java/org/laidu/learn/language/feature/httpclient/HttpclientDemo.java diff --git a/big-data/calcite/src/site.markdown/index.md b/big-data/calcite/src/site.markdown/index.md index 81a60b3ac..bb1aaa277 100644 --- a/big-data/calcite/src/site.markdown/index.md +++ b/big-data/calcite/src/site.markdown/index.md @@ -3,7 +3,7 @@ 参考: * [官网](https://calcite.apache.org/) * [用 Apache Calcite 构建强大的实时流式应用](https://linux.cn/article-8375-1.html) -* []() +* [Apache Calcite 简介](https://www.jianshu.com/p/2dfbd71b7f0f) * []() * []() * []() diff --git a/big-data/hadoop/pom.xml b/big-data/hadoop/pom.xml index 5d586623e..b79485f0d 100644 --- a/big-data/hadoop/pom.xml +++ b/big-data/hadoop/pom.xml @@ -16,6 +16,12 @@ org.apache.hadoop hadoop-common + + + org.apache.hadoop + hadoop-annotations + + org.apache.hadoop diff --git a/big-data/pom.xml b/big-data/pom.xml index b5c7ca866..d9d32db53 100644 --- a/big-data/pom.xml +++ b/big-data/pom.xml @@ -20,14 +20,21 @@ 2.8.1 - - + 2.8.1 + 2.8.1 + 1.17.0 + + org.apache.calcite + calcite-core + ${apache-calcite.version} + + org.apache.hadoop hadoop-common diff --git a/framework/spring/pom.xml b/framework/spring/pom.xml index 83ea17008..2392e8e76 100644 --- a/framework/spring/pom.xml +++ b/framework/spring/pom.xml @@ -33,7 +33,7 @@ 5.1.1 5.0.6.RELEASE - 2.0.2.RELEASE + 2.0.5.RELEASE Finchley.SR1 1.4.0 diff --git a/framework/thirdparty/pom.xml b/framework/thirdparty/pom.xml index c3855dcbf..08b980474 100644 --- a/framework/thirdparty/pom.xml +++ b/framework/thirdparty/pom.xml @@ -17,7 +17,7 @@ 3.1.0 - 2.0.2.RELEASE + 2.0.5.RELEASE diff --git a/language-advance/bytecode/pom.xml b/language-advance/bytecode/pom.xml index 1ace11376..62a3409c4 100644 --- a/language-advance/bytecode/pom.xml +++ b/language-advance/bytecode/pom.xml @@ -11,6 +11,10 @@ bytecode + + 1.8 + + org.aspectj @@ -18,27 +22,42 @@ - - - - - - - - - - - - - - - - - - - - + + + + + org.codehaus.mojo + aspectj-maven-plugin + 1.11 + + ${java.version} + ${java.version} + ${java.version} + + + + + process-sources + + compile + test-compile + + + + + + org.aspectj + aspectjrt + ${aspectj.version} + + + org.aspectj + aspectjtools + ${aspectj.version} + + + - - + + \ No newline at end of file diff --git a/language-advance/bytecode/src/main/java/org/laidu/learn/advance/bytecode/aspectj/AopDemo.java b/language-advance/bytecode/src/main/java/org/laidu/learn/advance/bytecode/aspectj/AopDemo.java index e917d6ecb..13380d82d 100644 --- a/language-advance/bytecode/src/main/java/org/laidu/learn/advance/bytecode/aspectj/AopDemo.java +++ b/language-advance/bytecode/src/main/java/org/laidu/learn/advance/bytecode/aspectj/AopDemo.java @@ -6,7 +6,6 @@ * @author tiancai.zang * on 2018-08-28 19:09. */ -// TODO: 2018-08-28 19:09 @Slf4j public class AopDemo { diff --git a/language-feature/pom.xml b/language-feature/pom.xml index c2d5b0704..1133a38f3 100644 --- a/language-feature/pom.xml +++ b/language-feature/pom.xml @@ -14,4 +14,5 @@ jar language-feature + \ No newline at end of file diff --git a/language-feature/src/main/java/org/laidu/learn/language/feature/collection/ListDemo.java b/language-feature/src/main/java/org/laidu/learn/language/feature/collection/ListDemo.java index 4e0575c45..37fdea91c 100644 --- a/language-feature/src/main/java/org/laidu/learn/language/feature/collection/ListDemo.java +++ b/language-feature/src/main/java/org/laidu/learn/language/feature/collection/ListDemo.java @@ -2,14 +2,37 @@ import lombok.extern.slf4j.Slf4j; +import java.util.ArrayList; +import java.util.List; +import java.util.stream.IntStream; + /** * list learn * * @author tiancai.zang * 2018-01-19 15:40. */ -// TODO: 2018-01-19 15:40 list learn @Slf4j public class ListDemo { + + public static void main(String[] args) { + + + int initSize = 8; + + List lsit = new ArrayList<>(initSize); + + IntStream.range(0,99999).boxed() + .forEach(e -> { + + try { + Thread.sleep(500); + } catch (InterruptedException e1) { + } + lsit.add(e << 1,e); + }); + + + } } \ No newline at end of file diff --git a/language-feature/src/main/java/org/laidu/learn/language/feature/httpclient/HttpclientDemo.java b/language-feature/src/main/java/org/laidu/learn/language/feature/httpclient/HttpclientDemo.java new file mode 100644 index 000000000..eef8a5045 --- /dev/null +++ b/language-feature/src/main/java/org/laidu/learn/language/feature/httpclient/HttpclientDemo.java @@ -0,0 +1,44 @@ +package org.laidu.learn.language.feature.httpclient; + +import lombok.extern.slf4j.Slf4j; + +import java.io.IOException; +import java.net.URI; +import java.net.http.HttpClient; +import java.net.http.HttpRequest; +import java.net.http.HttpResponse; + +/** + * java 11 http client demo + * + * @since java 11 + * @author tiancai.zang + * on 2018-10-09 14:21. + */ +@Slf4j +public class HttpclientDemo { + + + public static void main(String[] args) throws IOException, InterruptedException { + + + String url = "https://api.github.com"; + + HttpClient client = HttpClient.newBuilder() + .build(); + + HttpRequest request = HttpRequest.newBuilder() + .uri(URI.create(url)) + .build(); + + client.sendAsync(request, HttpResponse.BodyHandlers.ofString()) + .thenApply(HttpResponse::body) + .thenAccept(System.out::println); + + + Thread.sleep(2000); + + + } + +} \ No newline at end of file diff --git a/language-feature/src/site/markdown/collection.md b/language-feature/src/site/markdown/collection.md index a597888c2..0e8be52b5 100644 --- a/language-feature/src/site/markdown/collection.md +++ b/language-feature/src/site/markdown/collection.md @@ -22,4 +22,8 @@ b,使用整数索引访问(random access) 参考: * [java 核心技术(第10版)]() -* [java8 编程官方参考教程(第9版)]() \ No newline at end of file +* [java8 编程官方参考教程(第9版)]() +* [Java集合类: Set、List、Map、Queue使用场景梳理](http://www.cnblogs.com/LittleHann/p/3690187.html) +* []() +* []() +* []() \ No newline at end of file From 3426b4fcb1951a707e491eed34cafd487869c856 Mon Sep 17 00:00:00 2001 From: Tiancai ZANG Date: Wed, 10 Oct 2018 19:25:00 +0800 Subject: [PATCH 179/417] start calcite --- .../algorithm/bloom/BloomFilterDemo.java | 4 - big-data/calcite/pom.xml | 6 + .../java/org/laidu/learn/calcite/Demo.java | 99 ++++++++++++++++ .../org/laidu/learn/calcite/package-info.java | 10 ++ big-data/calcite/src/site.markdown/index.md | 14 --- big-data/calcite/src/site/markdown/index.md | 1 + .../jianzhioffer/ReConstructBinaryTree.java | 10 +- .../structure/tree/Binarytree/BtreeBasic.java | 51 --------- .../structure/tree/basic/ListAllFiles.java | 3 +- .../structure/tree/binarytree/BtreeBuild.java | 46 ++++++++ .../tree/binarytree/package-info.java | 10 ++ .../date/structure/tree/model/TreeNode.java | 20 ++++ .../date/structure/util/BtreePrinter.java | 107 ++++++++++++++++++ .../date/structure/util/package-info.java | 10 ++ framework/spring/swagger/pom.xml | 3 - .../language/feature/collection/ListDemo.java | 5 +- .../src/site/markdown/collection.md | 28 ++--- 17 files changed, 328 insertions(+), 99 deletions(-) create mode 100644 big-data/calcite/src/main/java/org/laidu/learn/calcite/Demo.java create mode 100644 big-data/calcite/src/main/java/org/laidu/learn/calcite/package-info.java delete mode 100644 big-data/calcite/src/site.markdown/index.md create mode 100644 big-data/calcite/src/site/markdown/index.md delete mode 100644 data-structure/src/main/java/org/laidu/learn/date/structure/tree/Binarytree/BtreeBasic.java create mode 100644 data-structure/src/main/java/org/laidu/learn/date/structure/tree/binarytree/BtreeBuild.java create mode 100644 data-structure/src/main/java/org/laidu/learn/date/structure/tree/binarytree/package-info.java create mode 100644 data-structure/src/main/java/org/laidu/learn/date/structure/tree/model/TreeNode.java create mode 100644 data-structure/src/main/java/org/laidu/learn/date/structure/util/BtreePrinter.java create mode 100644 data-structure/src/main/java/org/laidu/learn/date/structure/util/package-info.java diff --git a/algorithm/src/main/java/org/laidu/learn/algorithm/bloom/BloomFilterDemo.java b/algorithm/src/main/java/org/laidu/learn/algorithm/bloom/BloomFilterDemo.java index 3f99df82c..69190aff8 100644 --- a/algorithm/src/main/java/org/laidu/learn/algorithm/bloom/BloomFilterDemo.java +++ b/algorithm/src/main/java/org/laidu/learn/algorithm/bloom/BloomFilterDemo.java @@ -1,13 +1,10 @@ package org.laidu.learn.algorithm.bloom; -import com.google.common.hash.BloomFilter; -import com.google.common.hash.Funnels; import jodd.io.FileUtil; import org.laidu.commom.util.encryption.MD5Util; import java.io.File; import java.io.IOException; -import java.nio.charset.Charset; /** * bloom filter demo @@ -15,7 +12,6 @@ * @author tiancai.zang * 2018-02-01 15:09. */ -// TODO: 2018-02-01 15:09 bloom filter demo public class BloomFilterDemo { private static final long size = 1000_000_000; diff --git a/big-data/calcite/pom.xml b/big-data/calcite/pom.xml index ea3d8771c..f285345a2 100644 --- a/big-data/calcite/pom.xml +++ b/big-data/calcite/pom.xml @@ -12,4 +12,10 @@ calcite + + + org.apache.calcite + calcite-core + + \ No newline at end of file diff --git a/big-data/calcite/src/main/java/org/laidu/learn/calcite/Demo.java b/big-data/calcite/src/main/java/org/laidu/learn/calcite/Demo.java new file mode 100644 index 000000000..6e714d74e --- /dev/null +++ b/big-data/calcite/src/main/java/org/laidu/learn/calcite/Demo.java @@ -0,0 +1,99 @@ +package org.laidu.learn.calcite; + +import lombok.extern.slf4j.Slf4j; +import org.apache.calcite.adapter.java.ReflectiveSchema; +import org.apache.calcite.jdbc.CalciteConnection; +import org.apache.calcite.schema.SchemaPlus; + +import java.sql.*; + +/** + * @author tiancai.zang + * on 2018-10-10 17:10. + */ +@Slf4j +public class Demo { + + public void run() throws ClassNotFoundException, SQLException { + + Class.forName("org.apache.calcite.jdbc.Driver"); + + Connection connection = + DriverManager.getConnection("jdbc:mysql:local-dev"); + + CalciteConnection calciteConnection = + connection.unwrap(CalciteConnection.class); + + SchemaPlus rootSchema = calciteConnection.getRootSchema(); + rootSchema.add("hr", new ReflectiveSchema(new Hr())); + rootSchema.add("foodmart", new ReflectiveSchema(new Foodmart())); + Statement statement = connection.createStatement(); + ResultSet resultSet = + statement.executeQuery("select *\n" + + "from \"foodmart\".\"sales_fact_1997\" as s\n" + + "join \"hr\".\"emps\" as e\n" + + "on e.\"empid\" = s.\"cust_id\""); + final StringBuilder buf = new StringBuilder(); + while (resultSet.next()) { + int n = resultSet.getMetaData().getColumnCount(); + for (int i = 1; i <= n; i++) { + buf.append(i > 1 ? "; " : "") + .append(resultSet.getMetaData().getColumnLabel(i)) + .append("=") + .append(resultSet.getObject(i)); + } + System.out.println(buf.toString()); + buf.setLength(0); + } + resultSet.close(); + statement.close(); + connection.close(); + } + + /** Object that will be used via reflection to create the "hr" schema. */ + public static class Hr { + public final Employee[] emps = { + new Employee(100, "Bill"), + new Employee(200, "Eric"), + new Employee(150, "Sebastian"), + }; + } + + /** Object that will be used via reflection to create the "emps" table. */ + public static class Employee { + public final int empid; + public final String name; + + public Employee(int empid, String name) { + this.empid = empid; + this.name = name; + } + } + + /** Object that will be used via reflection to create the "foodmart" + * schema. */ + public static class Foodmart { + public final SalesFact[] sales_fact_1997 = { + new SalesFact(100, 10), + new SalesFact(150, 20), + }; + } + + + /** Object that will be used via reflection to create the + * "sales_fact_1997" fact table. */ + public static class SalesFact { + public final int cust_id; + public final int prod_id; + + public SalesFact(int cust_id, int prod_id) { + this.cust_id = cust_id; + this.prod_id = prod_id; + } + } + + public static void main(String[] args) throws SQLException, ClassNotFoundException { + + new Demo().run(); + } +} \ No newline at end of file diff --git a/big-data/calcite/src/main/java/org/laidu/learn/calcite/package-info.java b/big-data/calcite/src/main/java/org/laidu/learn/calcite/package-info.java new file mode 100644 index 000000000..8ac63b80a --- /dev/null +++ b/big-data/calcite/src/main/java/org/laidu/learn/calcite/package-info.java @@ -0,0 +1,10 @@ +/** + * calcite 学习 + *

                    + * Created by laidu + * on 2018-10-10 17:00. + * + * @author laidu + */ +// TODO: 2018-10-10 17:00 calcite 学习 +package org.laidu.learn.calcite; \ No newline at end of file diff --git a/big-data/calcite/src/site.markdown/index.md b/big-data/calcite/src/site.markdown/index.md deleted file mode 100644 index bb1aaa277..000000000 --- a/big-data/calcite/src/site.markdown/index.md +++ /dev/null @@ -1,14 +0,0 @@ -# apache calsite 学习 - -参考: -* [官网](https://calcite.apache.org/) -* [用 Apache Calcite 构建强大的实时流式应用](https://linux.cn/article-8375-1.html) -* [Apache Calcite 简介](https://www.jianshu.com/p/2dfbd71b7f0f) -* []() -* []() -* []() -* []() -* []() -* []() -* []() -* []() \ No newline at end of file diff --git a/big-data/calcite/src/site/markdown/index.md b/big-data/calcite/src/site/markdown/index.md new file mode 100644 index 000000000..81c602ad6 --- /dev/null +++ b/big-data/calcite/src/site/markdown/index.md @@ -0,0 +1 @@ +# apache calcite 学习 \ No newline at end of file diff --git a/code-practice/nowcoder/src/main/java/org/laidu/learn/code/practice/jianzhioffer/ReConstructBinaryTree.java b/code-practice/nowcoder/src/main/java/org/laidu/learn/code/practice/jianzhioffer/ReConstructBinaryTree.java index fef3a96c5..532431e43 100644 --- a/code-practice/nowcoder/src/main/java/org/laidu/learn/code/practice/jianzhioffer/ReConstructBinaryTree.java +++ b/code-practice/nowcoder/src/main/java/org/laidu/learn/code/practice/jianzhioffer/ReConstructBinaryTree.java @@ -5,7 +5,8 @@ /** * 重建二叉树 *

                    - * 输入某二叉树的前序遍历和中序遍历的结果,请重建出该二叉树。假设输入的前序遍历和中序遍历的结果中都不含重复的数字。例如输入前序遍历序列{1,2,4,7,3,5,6,8}和中序遍历序列{4,7,2,1,5,3,8,6},则重建二叉树并返回。 + * 输入某二叉树的前序遍历和中序遍历的结果,请重建出该二叉树。假设输入的前序遍历和中序遍历的结果中都不含重复的数字。 + * 例如输入前序遍历序列{1,2,4,7,3,5,6,8}和中序遍历序列{4,7,2,1,5,3,8,6},则重建二叉树并返回。 *

                    * Created by tiancai.zang * on 2018-04-25 22:23. @@ -26,7 +27,6 @@ public static class TreeNode { public TreeNode reConstructBinaryTree(int[] pre, int[] in) { - /* step 1 : 判断临界条件 */ @@ -34,8 +34,6 @@ public TreeNode reConstructBinaryTree(int[] pre, int[] in) { return null; } - - /* step 2 : 根据前序遍历确定根节点 */ @@ -46,11 +44,13 @@ public TreeNode reConstructBinaryTree(int[] pre, int[] in) { } + + return null; } public static void main(String[] args) { - System.out.println("laidu is sb"); + System.out.println("laidu"); } } \ No newline at end of file diff --git a/data-structure/src/main/java/org/laidu/learn/date/structure/tree/Binarytree/BtreeBasic.java b/data-structure/src/main/java/org/laidu/learn/date/structure/tree/Binarytree/BtreeBasic.java deleted file mode 100644 index cc840249d..000000000 --- a/data-structure/src/main/java/org/laidu/learn/date/structure/tree/Binarytree/BtreeBasic.java +++ /dev/null @@ -1,51 +0,0 @@ -package org.laidu.learn.date.structure.tree.Binarytree; - -import lombok.Data; -import lombok.extern.slf4j.Slf4j; - -/** - * b-tree build and traverse - */ -@Slf4j -public class BtreeBasic { - -private static int count = 0; - /** - * tree struct definition. - */ - @Data - public static class TreeNode { - - private String data; - private TreeNode lChild, rChild; - - public TreeNode(String data) { - this.data = data; - } - } - - public static TreeNode preBuildTree(String[] data, int index) { - TreeNode node = null; - count++; - - if (count > data.length || count < 0 || "#".equalsIgnoreCase(data[index])) { - return node; - } else { - node = new TreeNode(data[index]); - node.setLChild(preBuildTree(data, count)); - node.setRChild(preBuildTree(data, count)); - } - - return node; - } - - - public static void main(String[] args) { - - String[] date = new String[]{"a", "b", "#", "#", "c", "#", "d", "#", "#"}; - TreeNode root = preBuildTree(date, 0); - - log.info("'s value : {}", root); - } - -} diff --git a/data-structure/src/main/java/org/laidu/learn/date/structure/tree/basic/ListAllFiles.java b/data-structure/src/main/java/org/laidu/learn/date/structure/tree/basic/ListAllFiles.java index 5dd6449be..cce945c02 100644 --- a/data-structure/src/main/java/org/laidu/learn/date/structure/tree/basic/ListAllFiles.java +++ b/data-structure/src/main/java/org/laidu/learn/date/structure/tree/basic/ListAllFiles.java @@ -11,6 +11,7 @@ *

                    * Created by tiancai.zang * on 2018-04-01 23:33. + * @author laidu */ @Slf4j public class ListAllFiles { @@ -28,7 +29,7 @@ public static void printFile(File file){ public static void main(String[] args) { - File file = new File("~/Videos"); + File file = new File(System.getProperty("user.home")+"/Downloads"); printFile(file); } diff --git a/data-structure/src/main/java/org/laidu/learn/date/structure/tree/binarytree/BtreeBuild.java b/data-structure/src/main/java/org/laidu/learn/date/structure/tree/binarytree/BtreeBuild.java new file mode 100644 index 000000000..e51a8def4 --- /dev/null +++ b/data-structure/src/main/java/org/laidu/learn/date/structure/tree/binarytree/BtreeBuild.java @@ -0,0 +1,46 @@ +package org.laidu.learn.date.structure.tree.binarytree; + +import lombok.extern.slf4j.Slf4j; +import org.laidu.learn.date.structure.tree.model.TreeNode; +import org.laidu.learn.date.structure.util.BtreePrinter; + +/** + * b-tree build and traverse + * + * @author laidu + */ +@Slf4j +public class BtreeBuild { + + private static int count = 0; + private static final String TREETOP = "#"; + + /** + * 前序遍历 + * @param data + * @param index + * @return + */ + public static TreeNode preBuildTree(String[] data, int index) { + TreeNode node = null; + count++; + + if (count > data.length || count < 0 || TREETOP.equalsIgnoreCase(data[index])) { + return node; + } else { + node = new TreeNode<>(data[index]); + node.setLeft(preBuildTree(data, count)); + node.setRight(preBuildTree(data, count)); + } + + return node; + } + + public static void main(String[] args) { + + String[] date = new String[]{"a", "b", "#", "#", "c", "#", "d", "#", "#"}; + TreeNode root = preBuildTree(date, 0); + BtreePrinter.printNode(root); + + } +} diff --git a/data-structure/src/main/java/org/laidu/learn/date/structure/tree/binarytree/package-info.java b/data-structure/src/main/java/org/laidu/learn/date/structure/tree/binarytree/package-info.java new file mode 100644 index 000000000..36331a055 --- /dev/null +++ b/data-structure/src/main/java/org/laidu/learn/date/structure/tree/binarytree/package-info.java @@ -0,0 +1,10 @@ +/** + * tree learn + *

                    + * Created by laidu + * on 2018-10-10 13:57. + * + * @author laidu + */ +// TODO: 2018-10-10 13:57 tree learn +package org.laidu.learn.date.structure.tree.binarytree; \ No newline at end of file diff --git a/data-structure/src/main/java/org/laidu/learn/date/structure/tree/model/TreeNode.java b/data-structure/src/main/java/org/laidu/learn/date/structure/tree/model/TreeNode.java new file mode 100644 index 000000000..3f49ed291 --- /dev/null +++ b/data-structure/src/main/java/org/laidu/learn/date/structure/tree/model/TreeNode.java @@ -0,0 +1,20 @@ +package org.laidu.learn.date.structure.tree.model; + +import lombok.Data; + +/** + * tree + * + * @author tiancai.zang + * on 2018-10-10 14:46. + */ +@Data +public class TreeNode> { + + private T data; + private TreeNode left, right; + + public TreeNode(T data) { + this.data = data; + } +} diff --git a/data-structure/src/main/java/org/laidu/learn/date/structure/util/BtreePrinter.java b/data-structure/src/main/java/org/laidu/learn/date/structure/util/BtreePrinter.java new file mode 100644 index 000000000..af6acfe8d --- /dev/null +++ b/data-structure/src/main/java/org/laidu/learn/date/structure/util/BtreePrinter.java @@ -0,0 +1,107 @@ +package org.laidu.learn.date.structure.util; + +import lombok.extern.slf4j.Slf4j; +import org.laidu.learn.date.structure.tree.model.TreeNode; + +import java.util.ArrayList; +import java.util.Collections; +import java.util.List; + +/** + * 二叉树输出 + * + * @author tiancai.zang + * on 2018-10-10 14:30. + */ +@Slf4j +public class BtreePrinter { + + public static > void printNode(TreeNode root) { + int maxLevel = BtreePrinter.maxLevel(root); + + printNodeInternal(Collections.singletonList(root), 1, maxLevel); + } + + private static > void printNodeInternal(List> nodes, int level, int maxLevel) { + if (nodes.isEmpty() || BtreePrinter.isAllElementsNull(nodes)) { + return; + } + + int floor = maxLevel - level; + int endgeLines = (int) Math.pow(2, (Math.max(floor - 1, 0))); + int firstSpaces = (int) Math.pow(2, (floor)) - 1; + int betweenSpaces = (int) Math.pow(2, (floor + 1)) - 1; + + BtreePrinter.printWhitespaces(firstSpaces); + + List> newNodes = new ArrayList<>(); + for (TreeNode node : nodes) { + if (node != null) { + System.out.print(node.getData()); + newNodes.add(node.getLeft()); + newNodes.add(node.getRight()); + } else { + newNodes.add(null); + newNodes.add(null); + System.out.print(" "); + } + + BtreePrinter.printWhitespaces(betweenSpaces); + } + System.out.println(""); + + for (int i = 1; i <= endgeLines; i++) { + for (int j = 0; j < nodes.size(); j++) { + BtreePrinter.printWhitespaces(firstSpaces - i); + if (nodes.get(j) == null) { + BtreePrinter.printWhitespaces(endgeLines + endgeLines + i + 1); + continue; + } + + if (nodes.get(j).getLeft() != null) { + System.out.print("/"); + } else { + BtreePrinter.printWhitespaces(1); + } + + BtreePrinter.printWhitespaces(i + i - 1); + + if (nodes.get(j).getRight() != null) { + System.out.print("\\"); + } else { + BtreePrinter.printWhitespaces(1); + } + + BtreePrinter.printWhitespaces(endgeLines + endgeLines - i); + } + + System.out.println(""); + } + + printNodeInternal(newNodes, level + 1, maxLevel); + } + + private static void printWhitespaces(int count) { + for (int i = 0; i < count; i++) { + System.out.print(" "); + } + } + + private static > int maxLevel(TreeNode node) { + if (node == null) { + return 0; + } + return Math.max(maxLevel(node.getLeft()), maxLevel(node.getRight())) + 1; + } + + private static boolean isAllElementsNull(List list) { + for (Object object : list) { + if (object != null) { + return false; + } + } + + return true; + } + +} \ No newline at end of file diff --git a/data-structure/src/main/java/org/laidu/learn/date/structure/util/package-info.java b/data-structure/src/main/java/org/laidu/learn/date/structure/util/package-info.java new file mode 100644 index 000000000..81caf055a --- /dev/null +++ b/data-structure/src/main/java/org/laidu/learn/date/structure/util/package-info.java @@ -0,0 +1,10 @@ +/** + * 通用util + *

                    + * Created by laidu + * on 2018-10-10 14:49. + * + * @author laidu + */ +// TODO: 2018-10-10 14:49 通用util +package org.laidu.learn.date.structure.util; \ No newline at end of file diff --git a/framework/spring/swagger/pom.xml b/framework/spring/swagger/pom.xml index e0eebe878..72267a3be 100644 --- a/framework/spring/swagger/pom.xml +++ b/framework/spring/swagger/pom.xml @@ -18,9 +18,6 @@ - UTF-8 - UTF-8 - 1.8 springio 2.9.2 diff --git a/language-feature/src/main/java/org/laidu/learn/language/feature/collection/ListDemo.java b/language-feature/src/main/java/org/laidu/learn/language/feature/collection/ListDemo.java index 37fdea91c..9cd96e7f7 100644 --- a/language-feature/src/main/java/org/laidu/learn/language/feature/collection/ListDemo.java +++ b/language-feature/src/main/java/org/laidu/learn/language/feature/collection/ListDemo.java @@ -21,7 +21,7 @@ public static void main(String[] args) { int initSize = 8; - List lsit = new ArrayList<>(initSize); + List list = new ArrayList<>(initSize); IntStream.range(0,99999).boxed() .forEach(e -> { @@ -30,7 +30,8 @@ public static void main(String[] args) { Thread.sleep(500); } catch (InterruptedException e1) { } - lsit.add(e << 1,e); + + list.add(e); }); diff --git a/language-feature/src/site/markdown/collection.md b/language-feature/src/site/markdown/collection.md index 0e8be52b5..13b438a3a 100644 --- a/language-feature/src/site/markdown/collection.md +++ b/language-feature/src/site/markdown/collection.md @@ -1,29 +1,19 @@ # java集合框架 -## 1、集合接口 -![](image/collection-api.png) +## 1 介绍 -> 集合有两个基本接口: Collection, Map。 +## 2 接口 +## 3 聚合操作 +## 4 具体实现 +## 5 算法 +## 6 自定义实现 +## 7 其他 -### 1.1 Collection 子接口 - -* [__List__]() List是一个有序集合。元素会增加到容器的指定位置。可以采用 __两种__ 方式访问元素:a,使用迭代器访问 -b,使用整数索引访问(random access) -* [ListIterator]() ListIterator 接口是Iterator的一个子接口,它提供一个方法用于在迭代器前添加一个元素。 -* [Set]() Set等同于Collection接口。不过其方法又更加严谨的定义。Set中不允许添加重复元素。要适当的 __定义Set的equals方法__ :只要两个Set具有相同的元素就认为两个Set是相等的,而不要求元素的顺序; __hashCode__ 方法的定义要保证包含相同元素的两个集合会得到相同的散列值。 - - -### 1.2 Map 子接口 - -## 2、具体的集合 -## 3、映射 -## 4、具体的映射 -## 5 参考: +* [The Java™ Tutorials](https://docs.oracle.com/javase/tutorial/collections/index.html) * [java 核心技术(第10版)]() * [java8 编程官方参考教程(第9版)]() * [Java集合类: Set、List、Map、Queue使用场景梳理](http://www.cnblogs.com/LittleHann/p/3690187.html) -* []() -* []() +* [《深入理解Java集合框架》系列文章](http://www.cnblogs.com/CarpenterLee/p/5545987.html) * []() \ No newline at end of file From ae7eb6826785a9b6f608703b4622666c776c58ad Mon Sep 17 00:00:00 2001 From: Tiancai ZANG Date: Thu, 11 Oct 2018 11:44:42 +0800 Subject: [PATCH 180/417] add resource controller --- framework/network/pom.xml | 5 + framework/network/retrofit/pom.xml | 9 +- .../network/retrofit/usage/BasicUsage.java | 113 ------ .../usage/api/ZhongminbaoxianService.java | 31 -- .../usage/github/GithubServiceApp.java | 44 +++ .../usage/github/api/GitHubService.java | 40 +++ .../usage/github/dto/ApiSummaryRes.java | 323 ++++++++++++++++++ .../usage/github/dto/UserBasicInfo.java | 323 ++++++++++++++++++ .../usage/github/dto/package-info.java | 10 + .../retrofit/usage/github/package-info.java | 10 + .../retrofit/usage/local/package-info.java | 10 + .../network/retrofit/usage/mode/BaoeList.java | 43 --- .../network/retrofit/usage/mode/Data.java | 283 --------------- .../network/retrofit/usage/mode/PriceQes.java | 44 --- .../network/retrofit/usage/mode/PriceReq.java | 144 -------- framework/spring/pom.xml | 8 + .../org/laidu/learn/spring/mvc/MvcApp.java | 14 + .../spring/mvc/conf/StorageProperties.java | 27 ++ .../mvc/controller/GoodsController.java | 2 + .../mvc/controller/ResourceController.java | 38 +++ .../mvc/exception/StorageException.java | 21 ++ .../StorageFileNotFoundException.java | 21 ++ .../spring/mvc/service/StorageService.java | 30 ++ .../impl/FileSystemStorageServiceImpl.java | 116 +++++++ .../src/main/resources/application.yml | 9 +- 25 files changed, 1057 insertions(+), 661 deletions(-) delete mode 100644 framework/network/retrofit/src/main/java/org/laidu/learn/network/retrofit/usage/BasicUsage.java delete mode 100644 framework/network/retrofit/src/main/java/org/laidu/learn/network/retrofit/usage/api/ZhongminbaoxianService.java create mode 100644 framework/network/retrofit/src/main/java/org/laidu/learn/network/retrofit/usage/github/GithubServiceApp.java create mode 100644 framework/network/retrofit/src/main/java/org/laidu/learn/network/retrofit/usage/github/api/GitHubService.java create mode 100644 framework/network/retrofit/src/main/java/org/laidu/learn/network/retrofit/usage/github/dto/ApiSummaryRes.java create mode 100644 framework/network/retrofit/src/main/java/org/laidu/learn/network/retrofit/usage/github/dto/UserBasicInfo.java create mode 100644 framework/network/retrofit/src/main/java/org/laidu/learn/network/retrofit/usage/github/dto/package-info.java create mode 100644 framework/network/retrofit/src/main/java/org/laidu/learn/network/retrofit/usage/github/package-info.java create mode 100644 framework/network/retrofit/src/main/java/org/laidu/learn/network/retrofit/usage/local/package-info.java delete mode 100644 framework/network/retrofit/src/main/java/org/laidu/learn/network/retrofit/usage/mode/BaoeList.java delete mode 100644 framework/network/retrofit/src/main/java/org/laidu/learn/network/retrofit/usage/mode/Data.java delete mode 100644 framework/network/retrofit/src/main/java/org/laidu/learn/network/retrofit/usage/mode/PriceQes.java delete mode 100644 framework/network/retrofit/src/main/java/org/laidu/learn/network/retrofit/usage/mode/PriceReq.java create mode 100644 framework/spring/spring-web/spring-mvc/src/main/java/org/laidu/learn/spring/mvc/conf/StorageProperties.java create mode 100644 framework/spring/spring-web/spring-mvc/src/main/java/org/laidu/learn/spring/mvc/controller/ResourceController.java create mode 100644 framework/spring/spring-web/spring-mvc/src/main/java/org/laidu/learn/spring/mvc/exception/StorageException.java create mode 100644 framework/spring/spring-web/spring-mvc/src/main/java/org/laidu/learn/spring/mvc/exception/StorageFileNotFoundException.java create mode 100644 framework/spring/spring-web/spring-mvc/src/main/java/org/laidu/learn/spring/mvc/service/StorageService.java create mode 100644 framework/spring/spring-web/spring-mvc/src/main/java/org/laidu/learn/spring/mvc/service/impl/FileSystemStorageServiceImpl.java diff --git a/framework/network/pom.xml b/framework/network/pom.xml index 317827553..0d480f2b1 100644 --- a/framework/network/pom.xml +++ b/framework/network/pom.xml @@ -43,6 +43,11 @@ converter-jackson ${retrofit.version} + + xyz.xpcoder.common.retrofit2 + converter-fastjson + 1.0 + diff --git a/framework/network/retrofit/pom.xml b/framework/network/retrofit/pom.xml index b40e53cf3..b139566b0 100644 --- a/framework/network/retrofit/pom.xml +++ b/framework/network/retrofit/pom.xml @@ -22,9 +22,14 @@ com.squareup.retrofit2 retrofit + + + + + - com.squareup.retrofit2 - converter-jackson + xyz.xpcoder.common.retrofit2 + converter-fastjson \ No newline at end of file diff --git a/framework/network/retrofit/src/main/java/org/laidu/learn/network/retrofit/usage/BasicUsage.java b/framework/network/retrofit/src/main/java/org/laidu/learn/network/retrofit/usage/BasicUsage.java deleted file mode 100644 index 57039e302..000000000 --- a/framework/network/retrofit/src/main/java/org/laidu/learn/network/retrofit/usage/BasicUsage.java +++ /dev/null @@ -1,113 +0,0 @@ -package org.laidu.learn.network.retrofit.usage; - -import com.alibaba.fastjson.JSON; -import lombok.extern.slf4j.Slf4j; -import org.laidu.learn.network.retrofit.usage.api.ZhongminbaoxianService; -import org.laidu.learn.network.retrofit.usage.mode.PriceQes; -import org.laidu.learn.network.retrofit.usage.mode.PriceReq; -import retrofit2.Call; -import retrofit2.Callback; -import retrofit2.Response; -import retrofit2.Retrofit; -import retrofit2.converter.jackson.JacksonConverterFactory; - -import java.util.HashMap; -import java.util.Map; -import java.util.stream.IntStream; - -/** - * 使用 - * - * @author tiancai.zang - * on 2018-08-27 11:33. - */ -@Slf4j -public class BasicUsage { - - - private final static int[] DURATIONS = {5, 10, 15, 20, 30}; - private final static int[] QUOTA = {5, 10, 15, 20, 25, 30}; - - - - public static void main(String[] args) { - - Retrofit retrofit = getRetrofit(); - - - ZhongminbaoxianService service = retrofit.create(ZhongminbaoxianService.class); - - - PriceReq req = JSON.parseObject(" {\n" + - " \"pid\": 10059,\n" + - " \"sid\": 1,\n" + - " \"bid\": 12,\n" + - " \"typeStr\": \"LongMain\",\n" + - " \"birthday\": \"2012-07-01\",\n" + - " \"proType\": 0,\n" + - " \"age\": 0,\n" + // 年龄 - " \"male\": 1,\n" + // 性别 男0 女1 - " \"baoeList\": [\n" + - " {\n" + - " \"code\": \"MajorDis\",\n" + - " \"value\": \"100000\",\n" + // 保额 5 10 15 20 25 30万 QUOTA - " \"comCode\": \"110021-110221 \"\n" + - " }\n" + - " ],\n" + - " \"socialSecurity\": 0,\n" + - " \"policyTerm\": 120,\n" + - " \"policyTermType\": 4,\n" + - " \"periods\": 30,\n" + // 期限 DURATIONS - " \"periodType\": 1\n" + - " }", PriceReq.class); - - - getPrice(service, req); - - - } - - private static void getPrice(ZhongminbaoxianService service, PriceReq req) { - - - Map> plan1 = initPlan(); - - - Call call = service.getPrice(new PriceReq[]{req}); - - call.enqueue(new Callback() { - @Override - public void onResponse(Call call, Response response) { - try { - PriceQes res = JSON.parseObject(response.body(),PriceQes.class); - System.out.println(response.body()); - } catch (Exception e) { - e.printStackTrace(); - } - } - - @Override - public void onFailure(Call call, Throwable t) { - log.error("call.request().body()'s value : {}", call.request().body()); - } - }); - } - - private static Map> initPlan() { - Map> plan = new HashMap<>(); - - IntStream.range(0,50).forEach(i -> { - - }); - - - return plan; - } - - private static Retrofit getRetrofit() { - return new Retrofit.Builder() - .baseUrl("https://www.zhongmin.cn/") - .addConverterFactory(JacksonConverterFactory.create()) - .build(); - } -} \ No newline at end of file diff --git a/framework/network/retrofit/src/main/java/org/laidu/learn/network/retrofit/usage/api/ZhongminbaoxianService.java b/framework/network/retrofit/src/main/java/org/laidu/learn/network/retrofit/usage/api/ZhongminbaoxianService.java deleted file mode 100644 index f514d8cc5..000000000 --- a/framework/network/retrofit/src/main/java/org/laidu/learn/network/retrofit/usage/api/ZhongminbaoxianService.java +++ /dev/null @@ -1,31 +0,0 @@ -package org.laidu.learn.network.retrofit.usage.api; - -import org.laidu.learn.network.retrofit.usage.mode.PriceReq; -import retrofit2.Call; -import retrofit2.http.Body; -import retrofit2.http.POST; - -/** - * 测试使用的json服务 - *

                    - * Created by laidu - * on 2018-08-27 11:35. - * - * curl 'https://www.zhongmin.cn/product/price/getPrice' - * -H 'Cookie: JSESSIONID=0F828CBC9B367B5FF50BDC0167446BC3; __jsluid=a62852f6bb75ee5cdff823e3e356bd9b; PIDDAB666666=2018082710081357094289; FVTDAB666666=636709612939928688; LVTDAB666666=636709612939928688; VTSDAB666666=1; MSTSDAB666666=0; SIDDAB666666=7c4a63dfee9e4f58b0d8ddaa1780ed5c; cookieUserName=cookie3c83ee2c153f3782b1336e57b348144e; Hm_lvt_9634323798be51b19359016bdfd65b32=1535335696; browseInfo=%5B%7B%22url%22%3A%22https%3A//www.zhongmin.cn/health/detail/ip10059_is1.html%22%2C%22productImg%22%3A%22//images.zhongmin.cn/images/2018/320/10059.jpg%22%2C%22productName%22%3A%22%u590D%u661F%u8054%u5408%u5EB7%u4E50%u4E00%u751F%u91CD%u5927%u75BE%u75C5%u4FDD%u9669B%u6B3E%u5347%u7EA7%u6B3E%22%2C%22price%22%3A%22129%22%2C%22pid%22%3A%2210059%22%7D%5D; VPSDAB666666=2; Hm_lpvt_9634323798be51b19359016bdfd65b32=1535335776' - * -H 'Origin: https://www.zhongmin.cn' - * -H 'Accept-Encoding: gzip, deflate, br' -H 'Accept-Language: zh-CN,zh;q=0.9' -H 'User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/68.0.3440.106 Safari/537.36' - * -H 'Content-Type: application/json' -H 'Accept: application/json, text/javascript, **; q=0.01' - * -H 'Referer: https://www.zhongmin.cn/health/detail/ip10059_is1.html' - * -H 'X-Requested-With: XMLHttpRequest' - * -H 'Connection: keep-alive' - * --data-binary '[{"pid":10059,"sid":1,"bid":12,"typeStr":"LongMain","proType":0,"age":0,"male":1,"baoeList":[{"code":"MajorDis","value":"100000","comCode":"110021-110221 "}],"socialSecurity":0,"policyTerm":70,"policyTermType":3,"periods":30,"periodType":1}]' - * --compressed - * - * @author laidu - */ -public interface ZhongminbaoxianService { - - @POST("product/price/getPrice") - Call getPrice(@Body PriceReq[] req); -} diff --git a/framework/network/retrofit/src/main/java/org/laidu/learn/network/retrofit/usage/github/GithubServiceApp.java b/framework/network/retrofit/src/main/java/org/laidu/learn/network/retrofit/usage/github/GithubServiceApp.java new file mode 100644 index 000000000..81d257f90 --- /dev/null +++ b/framework/network/retrofit/src/main/java/org/laidu/learn/network/retrofit/usage/github/GithubServiceApp.java @@ -0,0 +1,44 @@ +package org.laidu.learn.network.retrofit.usage.github; + +import lombok.extern.slf4j.Slf4j; +import org.laidu.learn.network.retrofit.usage.github.api.GitHubService; +import org.laidu.learn.network.retrofit.usage.github.dto.ApiSummaryRes; +import org.laidu.learn.network.retrofit.usage.github.dto.UserBasicInfo; +import retrofit2.Response; +import retrofit2.Retrofit; +import xyz.xpcoder.common.retrofit.converter.fastjson.FastjsonConverterFactory; + +import java.io.IOException; + +/** + * github api app + * + * @author tiancai.zang + * on 2018-10-11 09:55. + */ +@Slf4j +public class GithubServiceApp { + + + public static void main(String[] args) throws IOException { + + Retrofit retrofit = new Retrofit.Builder() + .baseUrl("https://api.github.com/") + .addConverterFactory(FastjsonConverterFactory.create()) + .build(); + + GitHubService gitHubService = retrofit.create(GitHubService.class); + + Response response = gitHubService.apiSummary() + .execute(); + + + String username = "laidu"; + Response userBasicInfo = gitHubService.getUserBasicInfo(username) + .execute(); + + log.info(": {}", userBasicInfo.body()); + + + } +} \ No newline at end of file diff --git a/framework/network/retrofit/src/main/java/org/laidu/learn/network/retrofit/usage/github/api/GitHubService.java b/framework/network/retrofit/src/main/java/org/laidu/learn/network/retrofit/usage/github/api/GitHubService.java new file mode 100644 index 000000000..3747fc545 --- /dev/null +++ b/framework/network/retrofit/src/main/java/org/laidu/learn/network/retrofit/usage/github/api/GitHubService.java @@ -0,0 +1,40 @@ +package org.laidu.learn.network.retrofit.usage.github.api; + +import org.laidu.learn.network.retrofit.usage.github.dto.ApiSummaryRes; +import org.laidu.learn.network.retrofit.usage.github.dto.UserBasicInfo; +import retrofit2.Call; +import retrofit2.http.GET; +import retrofit2.http.Headers; +import retrofit2.http.Path; + +/** + * github service api + *

                    + * Created by laidu + * on 2018-10-11 09:53. + * + * @author laidu + */ +public interface GitHubService { + + /** + * github api summary + * @return + */ + @GET("/") + Call apiSummary(); + + /** + * 获取基本的用户信息 + * @param username + * @return + */ + @Headers({ + "Accept: application/vnd.github.v3.full+json", + "User-Agent: Retrofit-Sample-App" + }) + @GET("/users/{username}") + Call getUserBasicInfo(@Path("username") String username); + + +} diff --git a/framework/network/retrofit/src/main/java/org/laidu/learn/network/retrofit/usage/github/dto/ApiSummaryRes.java b/framework/network/retrofit/src/main/java/org/laidu/learn/network/retrofit/usage/github/dto/ApiSummaryRes.java new file mode 100644 index 000000000..43af21133 --- /dev/null +++ b/framework/network/retrofit/src/main/java/org/laidu/learn/network/retrofit/usage/github/dto/ApiSummaryRes.java @@ -0,0 +1,323 @@ + +package org.laidu.learn.network.retrofit.usage.github.dto; + +import com.google.gson.annotations.SerializedName; + +import javax.annotation.Generated; + +@Generated("net.hexar.json2pojo") +@SuppressWarnings("unused") +public class ApiSummaryRes { + + @SerializedName("authorizations_url") + private String authorizationsUrl; + @SerializedName("code_search_url") + private String codeSearchUrl; + @SerializedName("commit_search_url") + private String commitSearchUrl; + @SerializedName("current_user_authorizations_html_url") + private String currentUserAuthorizationsHtmlUrl; + @SerializedName("current_user_repositories_url") + private String currentUserRepositoriesUrl; + @SerializedName("current_user_url") + private String currentUserUrl; + @SerializedName("emails_url") + private String emailsUrl; + @SerializedName("emojis_url") + private String emojisUrl; + @SerializedName("events_url") + private String eventsUrl; + @SerializedName("feeds_url") + private String feedsUrl; + @SerializedName("followers_url") + private String followersUrl; + @SerializedName("following_url") + private String followingUrl; + @SerializedName("gists_url") + private String gistsUrl; + @SerializedName("hub_url") + private String hubUrl; + @SerializedName("issue_search_url") + private String issueSearchUrl; + @SerializedName("issues_url") + private String issuesUrl; + @SerializedName("keys_url") + private String keysUrl; + @SerializedName("notifications_url") + private String notificationsUrl; + @SerializedName("organization_repositories_url") + private String organizationRepositoriesUrl; + @SerializedName("organization_url") + private String organizationUrl; + @SerializedName("public_gists_url") + private String publicGistsUrl; + @SerializedName("rate_limit_url") + private String rateLimitUrl; + @SerializedName("repository_search_url") + private String repositorySearchUrl; + @SerializedName("repository_url") + private String repositoryUrl; + @SerializedName("starred_gists_url") + private String starredGistsUrl; + @SerializedName("starred_url") + private String starredUrl; + @SerializedName("team_url") + private String teamUrl; + @SerializedName("user_organizations_url") + private String userOrganizationsUrl; + @SerializedName("user_repositories_url") + private String userRepositoriesUrl; + @SerializedName("user_search_url") + private String userSearchUrl; + @SerializedName("user_url") + private String userUrl; + + public String getAuthorizationsUrl() { + return authorizationsUrl; + } + + public void setAuthorizationsUrl(String authorizationsUrl) { + this.authorizationsUrl = authorizationsUrl; + } + + public String getCodeSearchUrl() { + return codeSearchUrl; + } + + public void setCodeSearchUrl(String codeSearchUrl) { + this.codeSearchUrl = codeSearchUrl; + } + + public String getCommitSearchUrl() { + return commitSearchUrl; + } + + public void setCommitSearchUrl(String commitSearchUrl) { + this.commitSearchUrl = commitSearchUrl; + } + + public String getCurrentUserAuthorizationsHtmlUrl() { + return currentUserAuthorizationsHtmlUrl; + } + + public void setCurrentUserAuthorizationsHtmlUrl(String currentUserAuthorizationsHtmlUrl) { + this.currentUserAuthorizationsHtmlUrl = currentUserAuthorizationsHtmlUrl; + } + + public String getCurrentUserRepositoriesUrl() { + return currentUserRepositoriesUrl; + } + + public void setCurrentUserRepositoriesUrl(String currentUserRepositoriesUrl) { + this.currentUserRepositoriesUrl = currentUserRepositoriesUrl; + } + + public String getCurrentUserUrl() { + return currentUserUrl; + } + + public void setCurrentUserUrl(String currentUserUrl) { + this.currentUserUrl = currentUserUrl; + } + + public String getEmailsUrl() { + return emailsUrl; + } + + public void setEmailsUrl(String emailsUrl) { + this.emailsUrl = emailsUrl; + } + + public String getEmojisUrl() { + return emojisUrl; + } + + public void setEmojisUrl(String emojisUrl) { + this.emojisUrl = emojisUrl; + } + + public String getEventsUrl() { + return eventsUrl; + } + + public void setEventsUrl(String eventsUrl) { + this.eventsUrl = eventsUrl; + } + + public String getFeedsUrl() { + return feedsUrl; + } + + public void setFeedsUrl(String feedsUrl) { + this.feedsUrl = feedsUrl; + } + + public String getFollowersUrl() { + return followersUrl; + } + + public void setFollowersUrl(String followersUrl) { + this.followersUrl = followersUrl; + } + + public String getFollowingUrl() { + return followingUrl; + } + + public void setFollowingUrl(String followingUrl) { + this.followingUrl = followingUrl; + } + + public String getGistsUrl() { + return gistsUrl; + } + + public void setGistsUrl(String gistsUrl) { + this.gistsUrl = gistsUrl; + } + + public String getHubUrl() { + return hubUrl; + } + + public void setHubUrl(String hubUrl) { + this.hubUrl = hubUrl; + } + + public String getIssueSearchUrl() { + return issueSearchUrl; + } + + public void setIssueSearchUrl(String issueSearchUrl) { + this.issueSearchUrl = issueSearchUrl; + } + + public String getIssuesUrl() { + return issuesUrl; + } + + public void setIssuesUrl(String issuesUrl) { + this.issuesUrl = issuesUrl; + } + + public String getKeysUrl() { + return keysUrl; + } + + public void setKeysUrl(String keysUrl) { + this.keysUrl = keysUrl; + } + + public String getNotificationsUrl() { + return notificationsUrl; + } + + public void setNotificationsUrl(String notificationsUrl) { + this.notificationsUrl = notificationsUrl; + } + + public String getOrganizationRepositoriesUrl() { + return organizationRepositoriesUrl; + } + + public void setOrganizationRepositoriesUrl(String organizationRepositoriesUrl) { + this.organizationRepositoriesUrl = organizationRepositoriesUrl; + } + + public String getOrganizationUrl() { + return organizationUrl; + } + + public void setOrganizationUrl(String organizationUrl) { + this.organizationUrl = organizationUrl; + } + + public String getPublicGistsUrl() { + return publicGistsUrl; + } + + public void setPublicGistsUrl(String publicGistsUrl) { + this.publicGistsUrl = publicGistsUrl; + } + + public String getRateLimitUrl() { + return rateLimitUrl; + } + + public void setRateLimitUrl(String rateLimitUrl) { + this.rateLimitUrl = rateLimitUrl; + } + + public String getRepositorySearchUrl() { + return repositorySearchUrl; + } + + public void setRepositorySearchUrl(String repositorySearchUrl) { + this.repositorySearchUrl = repositorySearchUrl; + } + + public String getRepositoryUrl() { + return repositoryUrl; + } + + public void setRepositoryUrl(String repositoryUrl) { + this.repositoryUrl = repositoryUrl; + } + + public String getStarredGistsUrl() { + return starredGistsUrl; + } + + public void setStarredGistsUrl(String starredGistsUrl) { + this.starredGistsUrl = starredGistsUrl; + } + + public String getStarredUrl() { + return starredUrl; + } + + public void setStarredUrl(String starredUrl) { + this.starredUrl = starredUrl; + } + + public String getTeamUrl() { + return teamUrl; + } + + public void setTeamUrl(String teamUrl) { + this.teamUrl = teamUrl; + } + + public String getUserOrganizationsUrl() { + return userOrganizationsUrl; + } + + public void setUserOrganizationsUrl(String userOrganizationsUrl) { + this.userOrganizationsUrl = userOrganizationsUrl; + } + + public String getUserRepositoriesUrl() { + return userRepositoriesUrl; + } + + public void setUserRepositoriesUrl(String userRepositoriesUrl) { + this.userRepositoriesUrl = userRepositoriesUrl; + } + + public String getUserSearchUrl() { + return userSearchUrl; + } + + public void setUserSearchUrl(String userSearchUrl) { + this.userSearchUrl = userSearchUrl; + } + + public String getUserUrl() { + return userUrl; + } + + public void setUserUrl(String userUrl) { + this.userUrl = userUrl; + } + +} diff --git a/framework/network/retrofit/src/main/java/org/laidu/learn/network/retrofit/usage/github/dto/UserBasicInfo.java b/framework/network/retrofit/src/main/java/org/laidu/learn/network/retrofit/usage/github/dto/UserBasicInfo.java new file mode 100644 index 000000000..2db414aa1 --- /dev/null +++ b/framework/network/retrofit/src/main/java/org/laidu/learn/network/retrofit/usage/github/dto/UserBasicInfo.java @@ -0,0 +1,323 @@ + +package org.laidu.learn.network.retrofit.usage.github.dto; + +import javax.annotation.Generated; +import com.google.gson.annotations.Expose; +import com.google.gson.annotations.SerializedName; + +@Generated("net.hexar.json2pojo") +@SuppressWarnings("unused") +public class UserBasicInfo { + + @SerializedName("avatar_url") + private String avatarUrl; + @Expose + private Object bio; + @Expose + private String blog; + @Expose + private Object company; + @SerializedName("created_at") + private String createdAt; + @Expose + private Object email; + @SerializedName("events_url") + private String eventsUrl; + @Expose + private Long followers; + @SerializedName("followers_url") + private String followersUrl; + @Expose + private Long following; + @SerializedName("following_url") + private String followingUrl; + @SerializedName("gists_url") + private String gistsUrl; + @SerializedName("gravatar_id") + private String gravatarId; + @Expose + private Object hireable; + @SerializedName("html_url") + private String htmlUrl; + @Expose + private Long id; + @Expose + private String location; + @Expose + private String login; + @Expose + private String name; + @SerializedName("node_id") + private String nodeId; + @SerializedName("organizations_url") + private String organizationsUrl; + @SerializedName("public_gists") + private Long publicGists; + @SerializedName("public_repos") + private Long publicRepos; + @SerializedName("received_events_url") + private String receivedEventsUrl; + @SerializedName("repos_url") + private String reposUrl; + @SerializedName("site_admin") + private Boolean siteAdmin; + @SerializedName("starred_url") + private String starredUrl; + @SerializedName("subscriptions_url") + private String subscriptionsUrl; + @Expose + private String type; + @SerializedName("updated_at") + private String updatedAt; + @Expose + private String url; + + public String getAvatarUrl() { + return avatarUrl; + } + + public void setAvatarUrl(String avatarUrl) { + this.avatarUrl = avatarUrl; + } + + public Object getBio() { + return bio; + } + + public void setBio(Object bio) { + this.bio = bio; + } + + public String getBlog() { + return blog; + } + + public void setBlog(String blog) { + this.blog = blog; + } + + public Object getCompany() { + return company; + } + + public void setCompany(Object company) { + this.company = company; + } + + public String getCreatedAt() { + return createdAt; + } + + public void setCreatedAt(String createdAt) { + this.createdAt = createdAt; + } + + public Object getEmail() { + return email; + } + + public void setEmail(Object email) { + this.email = email; + } + + public String getEventsUrl() { + return eventsUrl; + } + + public void setEventsUrl(String eventsUrl) { + this.eventsUrl = eventsUrl; + } + + public Long getFollowers() { + return followers; + } + + public void setFollowers(Long followers) { + this.followers = followers; + } + + public String getFollowersUrl() { + return followersUrl; + } + + public void setFollowersUrl(String followersUrl) { + this.followersUrl = followersUrl; + } + + public Long getFollowing() { + return following; + } + + public void setFollowing(Long following) { + this.following = following; + } + + public String getFollowingUrl() { + return followingUrl; + } + + public void setFollowingUrl(String followingUrl) { + this.followingUrl = followingUrl; + } + + public String getGistsUrl() { + return gistsUrl; + } + + public void setGistsUrl(String gistsUrl) { + this.gistsUrl = gistsUrl; + } + + public String getGravatarId() { + return gravatarId; + } + + public void setGravatarId(String gravatarId) { + this.gravatarId = gravatarId; + } + + public Object getHireable() { + return hireable; + } + + public void setHireable(Object hireable) { + this.hireable = hireable; + } + + public String getHtmlUrl() { + return htmlUrl; + } + + public void setHtmlUrl(String htmlUrl) { + this.htmlUrl = htmlUrl; + } + + public Long getId() { + return id; + } + + public void setId(Long id) { + this.id = id; + } + + public String getLocation() { + return location; + } + + public void setLocation(String location) { + this.location = location; + } + + public String getLogin() { + return login; + } + + public void setLogin(String login) { + this.login = login; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public String getNodeId() { + return nodeId; + } + + public void setNodeId(String nodeId) { + this.nodeId = nodeId; + } + + public String getOrganizationsUrl() { + return organizationsUrl; + } + + public void setOrganizationsUrl(String organizationsUrl) { + this.organizationsUrl = organizationsUrl; + } + + public Long getPublicGists() { + return publicGists; + } + + public void setPublicGists(Long publicGists) { + this.publicGists = publicGists; + } + + public Long getPublicRepos() { + return publicRepos; + } + + public void setPublicRepos(Long publicRepos) { + this.publicRepos = publicRepos; + } + + public String getReceivedEventsUrl() { + return receivedEventsUrl; + } + + public void setReceivedEventsUrl(String receivedEventsUrl) { + this.receivedEventsUrl = receivedEventsUrl; + } + + public String getReposUrl() { + return reposUrl; + } + + public void setReposUrl(String reposUrl) { + this.reposUrl = reposUrl; + } + + public Boolean getSiteAdmin() { + return siteAdmin; + } + + public void setSiteAdmin(Boolean siteAdmin) { + this.siteAdmin = siteAdmin; + } + + public String getStarredUrl() { + return starredUrl; + } + + public void setStarredUrl(String starredUrl) { + this.starredUrl = starredUrl; + } + + public String getSubscriptionsUrl() { + return subscriptionsUrl; + } + + public void setSubscriptionsUrl(String subscriptionsUrl) { + this.subscriptionsUrl = subscriptionsUrl; + } + + public String getType() { + return type; + } + + public void setType(String type) { + this.type = type; + } + + public String getUpdatedAt() { + return updatedAt; + } + + public void setUpdatedAt(String updatedAt) { + this.updatedAt = updatedAt; + } + + public String getUrl() { + return url; + } + + public void setUrl(String url) { + this.url = url; + } + +} diff --git a/framework/network/retrofit/src/main/java/org/laidu/learn/network/retrofit/usage/github/dto/package-info.java b/framework/network/retrofit/src/main/java/org/laidu/learn/network/retrofit/usage/github/dto/package-info.java new file mode 100644 index 000000000..fc08aaa5e --- /dev/null +++ b/framework/network/retrofit/src/main/java/org/laidu/learn/network/retrofit/usage/github/dto/package-info.java @@ -0,0 +1,10 @@ +/** + * github api model + *

                    + * Created by laidu + * on 2018-10-11 09:51. + * + * @author laidu + */ +// TODO: 2018-10-11 09:51 github api model +package org.laidu.learn.network.retrofit.usage.github.dto; \ No newline at end of file diff --git a/framework/network/retrofit/src/main/java/org/laidu/learn/network/retrofit/usage/github/package-info.java b/framework/network/retrofit/src/main/java/org/laidu/learn/network/retrofit/usage/github/package-info.java new file mode 100644 index 000000000..47cd332e9 --- /dev/null +++ b/framework/network/retrofit/src/main/java/org/laidu/learn/network/retrofit/usage/github/package-info.java @@ -0,0 +1,10 @@ +/** + * github api + *

                    + * Created by laidu + * on 2018-10-11 09:48. + * + * @author laidu + */ +// TODO: 2018-10-11 09:48 github api +package org.laidu.learn.network.retrofit.usage.github; \ No newline at end of file diff --git a/framework/network/retrofit/src/main/java/org/laidu/learn/network/retrofit/usage/local/package-info.java b/framework/network/retrofit/src/main/java/org/laidu/learn/network/retrofit/usage/local/package-info.java new file mode 100644 index 000000000..a61c4910d --- /dev/null +++ b/framework/network/retrofit/src/main/java/org/laidu/learn/network/retrofit/usage/local/package-info.java @@ -0,0 +1,10 @@ +/** + * 本地服务 + *

                    + * Created by laidu + * on 2018-10-11 10:21. + * + * @author laidu + */ +// TODO: 2018-10-11 10:21 本地服务 +package org.laidu.learn.network.retrofit.usage.local; \ No newline at end of file diff --git a/framework/network/retrofit/src/main/java/org/laidu/learn/network/retrofit/usage/mode/BaoeList.java b/framework/network/retrofit/src/main/java/org/laidu/learn/network/retrofit/usage/mode/BaoeList.java deleted file mode 100644 index 9ea40b939..000000000 --- a/framework/network/retrofit/src/main/java/org/laidu/learn/network/retrofit/usage/mode/BaoeList.java +++ /dev/null @@ -1,43 +0,0 @@ - -package org.laidu.learn.network.retrofit.usage.mode; - -import com.google.gson.annotations.SerializedName; - -import javax.annotation.Generated; - -@Generated("net.hexar.json2pojo") -@SuppressWarnings("unused") -public class BaoeList { - - @SerializedName("code") - private String mCode; - @SerializedName("comCode") - private String mComCode; - @SerializedName("value") - private String mValue; - - public String getCode() { - return mCode; - } - - public void setCode(String code) { - mCode = code; - } - - public String getComCode() { - return mComCode; - } - - public void setComCode(String comCode) { - mComCode = comCode; - } - - public String getValue() { - return mValue; - } - - public void setValue(String value) { - mValue = value; - } - -} diff --git a/framework/network/retrofit/src/main/java/org/laidu/learn/network/retrofit/usage/mode/Data.java b/framework/network/retrofit/src/main/java/org/laidu/learn/network/retrofit/usage/mode/Data.java deleted file mode 100644 index fd5609c3c..000000000 --- a/framework/network/retrofit/src/main/java/org/laidu/learn/network/retrofit/usage/mode/Data.java +++ /dev/null @@ -1,283 +0,0 @@ - -package org.laidu.learn.network.retrofit.usage.mode; - -import java.util.List; -import javax.annotation.Generated; -import com.google.gson.annotations.SerializedName; - -@Generated("net.hexar.json2pojo") -@SuppressWarnings("unused") -public class Data { - - @SerializedName("age") - private Long mAge; - @SerializedName("baoeList") - private List mBaoeList; - @SerializedName("bid") - private Long mBid; - @SerializedName("disCount") - private Long mDisCount; - @SerializedName("dycRate") - private Long mDycRate; - @SerializedName("isBaoQuan") - private Long mIsBaoQuan; - @SerializedName("isSpecial") - private Long mIsSpecial; - @SerializedName("male") - private Long mMale; - @SerializedName("maxNum") - private Long mMaxNum; - @SerializedName("minNum") - private Long mMinNum; - @SerializedName("onlyMainRiskChoise") - private Long mOnlyMainRiskChoise; - @SerializedName("periodType") - private Long mPeriodType; - @SerializedName("periods") - private Long mPeriods; - @SerializedName("pid") - private Long mPid; - @SerializedName("policyNumber") - private Long mPolicyNumber; - @SerializedName("policyTerm") - private Long mPolicyTerm; - @SerializedName("policyTermType") - private Long mPolicyTermType; - @SerializedName("priceFactorAge") - private Long mPriceFactorAge; - @SerializedName("priceType") - private Long mPriceType; - @SerializedName("proType") - private Long mProType; - @SerializedName("sellType") - private Long mSellType; - @SerializedName("sid") - private Long mSid; - @SerializedName("socialSecurity") - private Long mSocialSecurity; - @SerializedName("sumPrice") - private Long mSumPrice; - @SerializedName("sumSpecialPrice") - private Long mSumSpecialPrice; - @SerializedName("typeStr") - private String mTypeStr; - @SerializedName("upDownType") - private Long mUpDownType; - - public Long getAge() { - return mAge; - } - - public void setAge(Long age) { - mAge = age; - } - - public List getBaoeList() { - return mBaoeList; - } - - public void setBaoeList(List baoeList) { - mBaoeList = baoeList; - } - - public Long getBid() { - return mBid; - } - - public void setBid(Long bid) { - mBid = bid; - } - - public Long getDisCount() { - return mDisCount; - } - - public void setDisCount(Long disCount) { - mDisCount = disCount; - } - - public Long getDycRate() { - return mDycRate; - } - - public void setDycRate(Long dycRate) { - mDycRate = dycRate; - } - - public Long getIsBaoQuan() { - return mIsBaoQuan; - } - - public void setIsBaoQuan(Long isBaoQuan) { - mIsBaoQuan = isBaoQuan; - } - - public Long getIsSpecial() { - return mIsSpecial; - } - - public void setIsSpecial(Long isSpecial) { - mIsSpecial = isSpecial; - } - - public Long getMale() { - return mMale; - } - - public void setMale(Long male) { - mMale = male; - } - - public Long getMaxNum() { - return mMaxNum; - } - - public void setMaxNum(Long maxNum) { - mMaxNum = maxNum; - } - - public Long getMinNum() { - return mMinNum; - } - - public void setMinNum(Long minNum) { - mMinNum = minNum; - } - - public Long getOnlyMainRiskChoise() { - return mOnlyMainRiskChoise; - } - - public void setOnlyMainRiskChoise(Long onlyMainRiskChoise) { - mOnlyMainRiskChoise = onlyMainRiskChoise; - } - - public Long getPeriodType() { - return mPeriodType; - } - - public void setPeriodType(Long periodType) { - mPeriodType = periodType; - } - - public Long getPeriods() { - return mPeriods; - } - - public void setPeriods(Long periods) { - mPeriods = periods; - } - - public Long getPid() { - return mPid; - } - - public void setPid(Long pid) { - mPid = pid; - } - - public Long getPolicyNumber() { - return mPolicyNumber; - } - - public void setPolicyNumber(Long policyNumber) { - mPolicyNumber = policyNumber; - } - - public Long getPolicyTerm() { - return mPolicyTerm; - } - - public void setPolicyTerm(Long policyTerm) { - mPolicyTerm = policyTerm; - } - - public Long getPolicyTermType() { - return mPolicyTermType; - } - - public void setPolicyTermType(Long policyTermType) { - mPolicyTermType = policyTermType; - } - - public Long getPriceFactorAge() { - return mPriceFactorAge; - } - - public void setPriceFactorAge(Long priceFactorAge) { - mPriceFactorAge = priceFactorAge; - } - - public Long getPriceType() { - return mPriceType; - } - - public void setPriceType(Long priceType) { - mPriceType = priceType; - } - - public Long getProType() { - return mProType; - } - - public void setProType(Long proType) { - mProType = proType; - } - - public Long getSellType() { - return mSellType; - } - - public void setSellType(Long sellType) { - mSellType = sellType; - } - - public Long getSid() { - return mSid; - } - - public void setSid(Long sid) { - mSid = sid; - } - - public Long getSocialSecurity() { - return mSocialSecurity; - } - - public void setSocialSecurity(Long socialSecurity) { - mSocialSecurity = socialSecurity; - } - - public Long getSumPrice() { - return mSumPrice; - } - - public void setSumPrice(Long sumPrice) { - mSumPrice = sumPrice; - } - - public Long getSumSpecialPrice() { - return mSumSpecialPrice; - } - - public void setSumSpecialPrice(Long sumSpecialPrice) { - mSumSpecialPrice = sumSpecialPrice; - } - - public String getTypeStr() { - return mTypeStr; - } - - public void setTypeStr(String typeStr) { - mTypeStr = typeStr; - } - - public Long getUpDownType() { - return mUpDownType; - } - - public void setUpDownType(Long upDownType) { - mUpDownType = upDownType; - } - -} diff --git a/framework/network/retrofit/src/main/java/org/laidu/learn/network/retrofit/usage/mode/PriceQes.java b/framework/network/retrofit/src/main/java/org/laidu/learn/network/retrofit/usage/mode/PriceQes.java deleted file mode 100644 index c28048f47..000000000 --- a/framework/network/retrofit/src/main/java/org/laidu/learn/network/retrofit/usage/mode/PriceQes.java +++ /dev/null @@ -1,44 +0,0 @@ - -package org.laidu.learn.network.retrofit.usage.mode; - -import com.google.gson.annotations.SerializedName; - -import javax.annotation.Generated; -import java.io.Serializable; - -@Generated("net.hexar.json2pojo") -@SuppressWarnings("unused") -public class PriceQes implements Serializable { - - @SerializedName("code") - private Long mCode; - @SerializedName("data") - private Data mData; - @SerializedName("message") - private String mMessage; - - public Long getCode() { - return mCode; - } - - public void setCode(Long code) { - mCode = code; - } - - public Data getData() { - return mData; - } - - public void setData(Data data) { - mData = data; - } - - public String getMessage() { - return mMessage; - } - - public void setMessage(String message) { - mMessage = message; - } - -} diff --git a/framework/network/retrofit/src/main/java/org/laidu/learn/network/retrofit/usage/mode/PriceReq.java b/framework/network/retrofit/src/main/java/org/laidu/learn/network/retrofit/usage/mode/PriceReq.java deleted file mode 100644 index a88579b5f..000000000 --- a/framework/network/retrofit/src/main/java/org/laidu/learn/network/retrofit/usage/mode/PriceReq.java +++ /dev/null @@ -1,144 +0,0 @@ - -package org.laidu.learn.network.retrofit.usage.mode; - -import com.google.gson.annotations.SerializedName; - -import javax.annotation.Generated; -import java.util.List; - -@Generated("net.hexar.json2pojo") -@SuppressWarnings("unused") -public class PriceReq { - - @SerializedName("age") - private Long mAge; - @SerializedName("baoeList") - private List mBaoeList; - @SerializedName("bid") - private Long mBid; - @SerializedName("male") - private Long mMale; - @SerializedName("periodType") - private Long mPeriodType; - @SerializedName("periods") - private Long mPeriods; - @SerializedName("pid") - private Long mPid; - @SerializedName("policyTerm") - private Long mPolicyTerm; - @SerializedName("policyTermType") - private Long mPolicyTermType; - @SerializedName("proType") - private Long mProType; - @SerializedName("sid") - private Long mSid; - @SerializedName("socialSecurity") - private Long mSocialSecurity; - @SerializedName("typeStr") - private String mTypeStr; - - public Long getAge() { - return mAge; - } - - public void setAge(Long age) { - mAge = age; - } - - public List getBaoeList() { - return mBaoeList; - } - - public void setBaoeList(List baoeList) { - mBaoeList = baoeList; - } - - public Long getBid() { - return mBid; - } - - public void setBid(Long bid) { - mBid = bid; - } - - public Long getMale() { - return mMale; - } - - public void setMale(Long male) { - mMale = male; - } - - public Long getPeriodType() { - return mPeriodType; - } - - public void setPeriodType(Long periodType) { - mPeriodType = periodType; - } - - public Long getPeriods() { - return mPeriods; - } - - public void setPeriods(Long periods) { - mPeriods = periods; - } - - public Long getPid() { - return mPid; - } - - public void setPid(Long pid) { - mPid = pid; - } - - public Long getPolicyTerm() { - return mPolicyTerm; - } - - public void setPolicyTerm(Long policyTerm) { - mPolicyTerm = policyTerm; - } - - public Long getPolicyTermType() { - return mPolicyTermType; - } - - public void setPolicyTermType(Long policyTermType) { - mPolicyTermType = policyTermType; - } - - public Long getProType() { - return mProType; - } - - public void setProType(Long proType) { - mProType = proType; - } - - public Long getSid() { - return mSid; - } - - public void setSid(Long sid) { - mSid = sid; - } - - public Long getSocialSecurity() { - return mSocialSecurity; - } - - public void setSocialSecurity(Long socialSecurity) { - mSocialSecurity = socialSecurity; - } - - public String getTypeStr() { - return mTypeStr; - } - - public void setTypeStr(String typeStr) { - mTypeStr = typeStr; - } - -} diff --git a/framework/spring/pom.xml b/framework/spring/pom.xml index 2392e8e76..5b3c4f264 100644 --- a/framework/spring/pom.xml +++ b/framework/spring/pom.xml @@ -104,6 +104,14 @@ test + + + javax.xml.soap + javax.xml.soap-api + 1.4.0 + + + diff --git a/framework/spring/spring-web/spring-mvc/src/main/java/org/laidu/learn/spring/mvc/MvcApp.java b/framework/spring/spring-web/spring-mvc/src/main/java/org/laidu/learn/spring/mvc/MvcApp.java index 3f14cd320..f4768a945 100644 --- a/framework/spring/spring-web/spring-mvc/src/main/java/org/laidu/learn/spring/mvc/MvcApp.java +++ b/framework/spring/spring-web/spring-mvc/src/main/java/org/laidu/learn/spring/mvc/MvcApp.java @@ -1,9 +1,14 @@ package org.laidu.learn.spring.mvc; import lombok.extern.slf4j.Slf4j; +import org.laidu.learn.spring.mvc.conf.StorageProperties; +import org.laidu.learn.spring.mvc.service.StorageService; import org.springframework.boot.Banner; +import org.springframework.boot.CommandLineRunner; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.boot.builder.SpringApplicationBuilder; +import org.springframework.boot.context.properties.EnableConfigurationProperties; +import org.springframework.context.annotation.Bean; import springfox.documentation.swagger2.annotations.EnableSwagger2; /** @@ -15,8 +20,17 @@ @Slf4j @EnableSwagger2 @SpringBootApplication +@EnableConfigurationProperties(StorageProperties.class) public class MvcApp { + @Bean + CommandLineRunner init(StorageService storageService) { + return (args) -> { + storageService.deleteAll(); + storageService.init(); + }; + } + public static void main(String[] args) { new SpringApplicationBuilder(MvcApp.class) diff --git a/framework/spring/spring-web/spring-mvc/src/main/java/org/laidu/learn/spring/mvc/conf/StorageProperties.java b/framework/spring/spring-web/spring-mvc/src/main/java/org/laidu/learn/spring/mvc/conf/StorageProperties.java new file mode 100644 index 000000000..57d6060eb --- /dev/null +++ b/framework/spring/spring-web/spring-mvc/src/main/java/org/laidu/learn/spring/mvc/conf/StorageProperties.java @@ -0,0 +1,27 @@ +package org.laidu.learn.spring.mvc.conf; + +import org.springframework.boot.context.properties.ConfigurationProperties; + +/** + * StorageProperties + * + * @author tiancai.zang + * on 2018-10-11 11:10. + */ +@ConfigurationProperties("storage") +public class StorageProperties { + + /** + * Folder location for storing files + */ + private String location = "upload-dir"; + + public String getLocation() { + return location; + } + + public void setLocation(String location) { + this.location = location; + } + +} \ No newline at end of file diff --git a/framework/spring/spring-web/spring-mvc/src/main/java/org/laidu/learn/spring/mvc/controller/GoodsController.java b/framework/spring/spring-web/spring-mvc/src/main/java/org/laidu/learn/spring/mvc/controller/GoodsController.java index 4ca6a6536..2c0e10f74 100644 --- a/framework/spring/spring-web/spring-mvc/src/main/java/org/laidu/learn/spring/mvc/controller/GoodsController.java +++ b/framework/spring/spring-web/spring-mvc/src/main/java/org/laidu/learn/spring/mvc/controller/GoodsController.java @@ -52,4 +52,6 @@ public Result query(@PathVariable("goodId") Long goodId){ .build()); } + + } \ No newline at end of file diff --git a/framework/spring/spring-web/spring-mvc/src/main/java/org/laidu/learn/spring/mvc/controller/ResourceController.java b/framework/spring/spring-web/spring-mvc/src/main/java/org/laidu/learn/spring/mvc/controller/ResourceController.java new file mode 100644 index 000000000..96a69f027 --- /dev/null +++ b/framework/spring/spring-web/spring-mvc/src/main/java/org/laidu/learn/spring/mvc/controller/ResourceController.java @@ -0,0 +1,38 @@ +package org.laidu.learn.spring.mvc.controller; + +import lombok.extern.slf4j.Slf4j; +import org.laidu.learn.spring.mvc.model.Result; +import org.laidu.learn.spring.mvc.service.StorageService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestParam; +import org.springframework.web.bind.annotation.RestController; +import org.springframework.web.multipart.MultipartFile; + +import java.io.IOException; + +/** + * 资源服务 + * + * @author tiancai.zang + * on 2018-10-11 10:39. + */ +@Slf4j +@RestController +@RequestMapping("/resource") +public class ResourceController { + + @Autowired + private StorageService storageService; + + + @PostMapping("/upload") + public Result upload(@RequestParam("file") MultipartFile file) throws IOException { + + String resourceId = storageService.store(file); + + return Result.ok(resourceId); + } + +} diff --git a/framework/spring/spring-web/spring-mvc/src/main/java/org/laidu/learn/spring/mvc/exception/StorageException.java b/framework/spring/spring-web/spring-mvc/src/main/java/org/laidu/learn/spring/mvc/exception/StorageException.java new file mode 100644 index 000000000..93a508484 --- /dev/null +++ b/framework/spring/spring-web/spring-mvc/src/main/java/org/laidu/learn/spring/mvc/exception/StorageException.java @@ -0,0 +1,21 @@ +package org.laidu.learn.spring.mvc.exception; + +import lombok.extern.slf4j.Slf4j; + +/** + * StorageException + * + * @author tiancai.zang + * on 2018-10-11 11:12. + */ +@Slf4j +public class StorageException extends RuntimeException { + + public StorageException(String message) { + super(message); + } + + public StorageException(String message, Throwable cause) { + super(message, cause); + } +} \ No newline at end of file diff --git a/framework/spring/spring-web/spring-mvc/src/main/java/org/laidu/learn/spring/mvc/exception/StorageFileNotFoundException.java b/framework/spring/spring-web/spring-mvc/src/main/java/org/laidu/learn/spring/mvc/exception/StorageFileNotFoundException.java new file mode 100644 index 000000000..53b526ba0 --- /dev/null +++ b/framework/spring/spring-web/spring-mvc/src/main/java/org/laidu/learn/spring/mvc/exception/StorageFileNotFoundException.java @@ -0,0 +1,21 @@ +package org.laidu.learn.spring.mvc.exception; + +import lombok.extern.slf4j.Slf4j; + +/** + * StorageFileNotFoundException + * + * @author tiancai.zang + * on 2018-10-11 11:12. + */ +@Slf4j +public class StorageFileNotFoundException extends StorageException { + + public StorageFileNotFoundException(String message) { + super(message); + } + + public StorageFileNotFoundException(String message, Throwable cause) { + super(message, cause); + } +} \ No newline at end of file diff --git a/framework/spring/spring-web/spring-mvc/src/main/java/org/laidu/learn/spring/mvc/service/StorageService.java b/framework/spring/spring-web/spring-mvc/src/main/java/org/laidu/learn/spring/mvc/service/StorageService.java new file mode 100644 index 000000000..730e4b503 --- /dev/null +++ b/framework/spring/spring-web/spring-mvc/src/main/java/org/laidu/learn/spring/mvc/service/StorageService.java @@ -0,0 +1,30 @@ +package org.laidu.learn.spring.mvc.service; + +import org.springframework.core.io.Resource; +import org.springframework.web.multipart.MultipartFile; + +import java.nio.file.Path; +import java.util.stream.Stream; + +/** + * 存储service + *

                    + * Created by laidu + * on 2018-10-11 10:40. + * + * @author laidu + */ +public interface StorageService { + + void init(); + + String store(MultipartFile file); + + Stream loadAll(); + + Path load(String filename); + + Resource loadAsResource(String filename); + + void deleteAll(); +} diff --git a/framework/spring/spring-web/spring-mvc/src/main/java/org/laidu/learn/spring/mvc/service/impl/FileSystemStorageServiceImpl.java b/framework/spring/spring-web/spring-mvc/src/main/java/org/laidu/learn/spring/mvc/service/impl/FileSystemStorageServiceImpl.java new file mode 100644 index 000000000..649fbc1d4 --- /dev/null +++ b/framework/spring/spring-web/spring-mvc/src/main/java/org/laidu/learn/spring/mvc/service/impl/FileSystemStorageServiceImpl.java @@ -0,0 +1,116 @@ +package org.laidu.learn.spring.mvc.service.impl; + +import lombok.extern.slf4j.Slf4j; +import org.laidu.learn.spring.mvc.conf.StorageProperties; +import org.laidu.learn.spring.mvc.exception.StorageException; +import org.laidu.learn.spring.mvc.exception.StorageFileNotFoundException; +import org.laidu.learn.spring.mvc.service.StorageService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.core.io.Resource; +import org.springframework.core.io.UrlResource; +import org.springframework.stereotype.Service; +import org.springframework.util.FileSystemUtils; +import org.springframework.util.StringUtils; +import org.springframework.web.multipart.MultipartFile; + +import java.io.IOException; +import java.io.InputStream; +import java.net.MalformedURLException; +import java.nio.file.Files; +import java.nio.file.Path; +import java.nio.file.Paths; +import java.nio.file.StandardCopyOption; +import java.util.stream.Stream; + +/** + * @author tiancai.zang + * on 2018-10-11 10:43. + */ +@Slf4j +@Service +public class FileSystemStorageServiceImpl implements StorageService { + + private final Path rootLocation; + + @Autowired + public FileSystemStorageServiceImpl(StorageProperties properties) { + this.rootLocation = Paths.get(properties.getLocation()); + } + + @Override + public String store(MultipartFile file) { + String filename = StringUtils.cleanPath(file.getOriginalFilename()); + try { + if (file.isEmpty()) { + throw new StorageException("Failed to store empty file " + filename); + } + if (filename.contains("..")) { + // This is a security check + throw new StorageException( + "Cannot store file with relative path outside current directory " + + filename); + } + try (InputStream inputStream = file.getInputStream()) { + Files.copy(inputStream, this.rootLocation.resolve(filename), + StandardCopyOption.REPLACE_EXISTING); + } + } + catch (IOException e) { + throw new StorageException("Failed to store file " + filename, e); + } + + return filename; + } + + @Override + public Stream loadAll() { + try { + return Files.walk(this.rootLocation, 1) + .filter(path -> !path.equals(this.rootLocation)) + .map(this.rootLocation::relativize); + } + catch (IOException e) { + throw new StorageException("Failed to read stored files", e); + } + + } + + @Override + public Path load(String filename) { + return rootLocation.resolve(filename); + } + + @Override + public Resource loadAsResource(String filename) { + try { + Path file = load(filename); + Resource resource = new UrlResource(file.toUri()); + if (resource.exists() || resource.isReadable()) { + return resource; + } + else { + throw new StorageFileNotFoundException( + "Could not read file: " + filename); + + } + } + catch (MalformedURLException e) { + throw new StorageFileNotFoundException("Could not read file: " + filename, e); + } + } + + @Override + public void deleteAll() { + FileSystemUtils.deleteRecursively(rootLocation.toFile()); + } + + @Override + public void init() { + try { + Files.createDirectories(rootLocation); + } + catch (IOException e) { + throw new StorageException("Could not initialize storage", e); + } + } +} \ No newline at end of file diff --git a/framework/spring/spring-web/spring-mvc/src/main/resources/application.yml b/framework/spring/spring-web/spring-mvc/src/main/resources/application.yml index 95783435d..2ff4dc148 100644 --- a/framework/spring/spring-web/spring-mvc/src/main/resources/application.yml +++ b/framework/spring/spring-web/spring-mvc/src/main/resources/application.yml @@ -5,6 +5,10 @@ server: date-format: yyyy/mm/dd hh:mm:ss spring: + servlet: + multipart: + max-file-size: 1MB + max-request-size: 10MB devtools: restart: enabled: false @@ -47,4 +51,7 @@ logbook: write: category: http.wire-log level: INFO - chunk-size: 1000 \ No newline at end of file + chunk-size: 1000 + +storage: + location: ${user.home}/temp/resource From 9a363449c5c748700ae819acfa4207d8582b6d9a Mon Sep 17 00:00:00 2001 From: Tiancai ZANG Date: Thu, 11 Oct 2018 16:00:52 +0800 Subject: [PATCH 181/417] learn retrofit file upload download --- .../retrofit/usage/local/LocalServiceApp.java | 141 ++++++++++++++++++ .../usage/local/api/ResourceService.java | 32 ++++ framework/spring/pom.xml | 27 ++++ .../mvc/controller/ResourceController.java | 27 +++- 4 files changed, 223 insertions(+), 4 deletions(-) create mode 100644 framework/network/retrofit/src/main/java/org/laidu/learn/network/retrofit/usage/local/LocalServiceApp.java create mode 100644 framework/network/retrofit/src/main/java/org/laidu/learn/network/retrofit/usage/local/api/ResourceService.java diff --git a/framework/network/retrofit/src/main/java/org/laidu/learn/network/retrofit/usage/local/LocalServiceApp.java b/framework/network/retrofit/src/main/java/org/laidu/learn/network/retrofit/usage/local/LocalServiceApp.java new file mode 100644 index 000000000..4a7e947da --- /dev/null +++ b/framework/network/retrofit/src/main/java/org/laidu/learn/network/retrofit/usage/local/LocalServiceApp.java @@ -0,0 +1,141 @@ +package org.laidu.learn.network.retrofit.usage.local; + +import com.alibaba.fastjson.JSONObject; +import lombok.extern.slf4j.Slf4j; +import okhttp3.MediaType; +import okhttp3.MultipartBody; +import okhttp3.RequestBody; +import okhttp3.ResponseBody; +import org.apache.commons.io.FileUtils; +import org.apache.commons.lang3.SystemUtils; +import org.laidu.learn.network.retrofit.usage.local.api.ResourceService; +import retrofit2.Call; +import retrofit2.Callback; +import retrofit2.Response; +import retrofit2.Retrofit; +import xyz.xpcoder.common.retrofit.converter.fastjson.FastjsonConverterFactory; + +import java.io.*; + +/** + * @author tiancai.zang + * on 2018-10-11 14:44. + */ +@Slf4j +public class LocalServiceApp { + + private static boolean writeResponseBodyToDisk(String filename,ResponseBody body) { + try { + File futureStudioIconFile = new File(SystemUtils.getUserHome()+"/temp/"+filename); + + InputStream inputStream = null; + OutputStream outputStream = null; + + try { + byte[] fileReader = new byte[4096]; + + long fileSize = body.contentLength(); + long fileSizeDownloaded = 0; + + inputStream = body.byteStream(); + outputStream = new FileOutputStream(futureStudioIconFile); + + while (true) { + int read = inputStream.read(fileReader); + + if (read == -1) { + break; + } + + outputStream.write(fileReader, 0, read); + + fileSizeDownloaded += read; + + log.debug("file download: " + fileSizeDownloaded + " of " + fileSize); + } + + outputStream.flush(); + + return true; + } catch (IOException e) { + return false; + } finally { + if (inputStream != null) { + inputStream.close(); + } + + if (outputStream != null) { + outputStream.close(); + } + } + } catch (IOException e) { + return false; + } + } + + public static void main(String[] args) throws IOException { + + Retrofit retrofit = new Retrofit.Builder() + .baseUrl("http://local-dev:8080/") + .addConverterFactory(FastjsonConverterFactory.create()) + .build(); + + ResourceService service = retrofit.create(ResourceService.class); + + fileDownload(service); + + } + + public static void fileDownload(ResourceService service) { + String filename = "20180928172521278582030156351166.xls"; + + service.download(filename) + .enqueue(new Callback<>() { + @Override + public void onResponse(Call call, Response response) { + if (response.isSuccessful()) { + log.debug("server contacted and has file"); + + boolean writtenToDisk = writeResponseBodyToDisk(filename,response.body()); + + log.debug("file download was a success? " + writtenToDisk); + } else { + log.debug("server contact failed"); + } + } + + @Override + public void onFailure(Call call, Throwable t) { + log.error("文件下载失败"); + } + }); + + log.info(": {}"); + } + + public static void fileUpload(ResourceService service) throws IOException { + String filename = "/Downloads/20180928172521278582030156351166.xls"; + File file = FileUtils.getFile(SystemUtils.getUserHome()+filename); + + // create RequestBody instance from file + RequestBody requestFile = + RequestBody.create( + MediaType.parse(""), + file + ); + + // MultipartBody.Part is used to send also the actual file name + MultipartBody.Part body = + MultipartBody.Part.createFormData("file", file.getName(), requestFile); + + // add another part within the multipart request + String descriptionString = "hello, this is description speaking"; + RequestBody description = + RequestBody.create( + MultipartBody.FORM, descriptionString); + + Response response = service.upload(description, body).execute(); + + log.info("result: {}", response.body()); + } +} \ No newline at end of file diff --git a/framework/network/retrofit/src/main/java/org/laidu/learn/network/retrofit/usage/local/api/ResourceService.java b/framework/network/retrofit/src/main/java/org/laidu/learn/network/retrofit/usage/local/api/ResourceService.java new file mode 100644 index 000000000..0509f7692 --- /dev/null +++ b/framework/network/retrofit/src/main/java/org/laidu/learn/network/retrofit/usage/local/api/ResourceService.java @@ -0,0 +1,32 @@ +package org.laidu.learn.network.retrofit.usage.local.api; + +import com.alibaba.fastjson.JSONObject; +import okhttp3.MultipartBody; +import okhttp3.RequestBody; +import okhttp3.ResponseBody; +import retrofit2.Call; +import retrofit2.http.*; + +/** + * 资源服务器 + *

                    + * Created by laidu + * on 2018-10-11 14:37. + * + * @author laidu + */ +public interface ResourceService { + + + @Multipart + @POST("/resource/upload") + Call upload(@Part("description") RequestBody description, @Part MultipartBody.Part file); + + + /** + * @param filename + * @return + */ + @GET("/resource/files/{filename}") + Call download(@Path("filename") String filename); +} diff --git a/framework/spring/pom.xml b/framework/spring/pom.xml index 5b3c4f264..13ecd8149 100644 --- a/framework/spring/pom.xml +++ b/framework/spring/pom.xml @@ -105,11 +105,38 @@ + javax.xml.soap javax.xml.soap-api 1.4.0 + + javax.xml.bind + jaxb-api + 2.3.0 + + + com.sun.xml.bind + jaxb-core + 2.3.0 + + + com.sun.xml.bind + jaxb-impl + 2.3.0 + + + javax.activation + activation + 1.1.1 + + + com.sun.xml.messaging.saaj + saaj-impl + 1.4.0 + + diff --git a/framework/spring/spring-web/spring-mvc/src/main/java/org/laidu/learn/spring/mvc/controller/ResourceController.java b/framework/spring/spring-web/spring-mvc/src/main/java/org/laidu/learn/spring/mvc/controller/ResourceController.java index 96a69f027..ea5861f99 100644 --- a/framework/spring/spring-web/spring-mvc/src/main/java/org/laidu/learn/spring/mvc/controller/ResourceController.java +++ b/framework/spring/spring-web/spring-mvc/src/main/java/org/laidu/learn/spring/mvc/controller/ResourceController.java @@ -4,13 +4,16 @@ import org.laidu.learn.spring.mvc.model.Result; import org.laidu.learn.spring.mvc.service.StorageService; import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.web.bind.annotation.PostMapping; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RequestParam; -import org.springframework.web.bind.annotation.RestController; +import org.springframework.core.io.Resource; +import org.springframework.http.HttpHeaders; +import org.springframework.http.ResponseEntity; +import org.springframework.web.bind.annotation.*; import org.springframework.web.multipart.MultipartFile; import java.io.IOException; +import java.io.UnsupportedEncodingException; +import java.net.URLEncoder; +import java.nio.charset.StandardCharsets; /** * 资源服务 @@ -35,4 +38,20 @@ public Result upload(@RequestParam("file") MultipartFile file) throws IO return Result.ok(resourceId); } + @GetMapping("/files/{filename:.+}") + public ResponseEntity serveFile(@PathVariable String filename) { + + Resource file = storageService.loadAsResource(filename); + + try { + filename = URLEncoder.encode(filename, StandardCharsets.UTF_8.toString()); + } catch (UnsupportedEncodingException e) { + } + + return ResponseEntity.ok() + // 解决中文文件名乱码 + .header(HttpHeaders.CONTENT_DISPOSITION, "attachment; filename=\"" + filename + "\"; filename*=utf-8''" + filename) + .body(file); + } + } From b3ccaa0ad4ade1a65431bb35464907a8f2a6c513 Mon Sep 17 00:00:00 2001 From: Tiancai ZANG Date: Thu, 11 Oct 2018 19:45:13 +0800 Subject: [PATCH 182/417] fix swaggerconfig not work --- .../spring/spring-web/spring-mvc/pom.xml | 10 +-- .../org/laidu/learn/spring/mvc/MvcApp.java | 3 + .../spring/mvc/conf/MvcAtuoConfiguration.java | 1 + .../mvc/controller/GoodsController.java | 1 - .../learn/spring/mvc/dto/AddGoodsReqDTO.java | 2 - .../learn/spring/mvc/dto/GetGoodsResDTO.java | 2 - .../learn/spring/mvc/enums/GoodsTypeEnum.java | 4 +- .../swagger/demo/config/SwaggerConfig.java | 26 ++++++- .../demo/controller/HomeController.java | 14 ++-- .../Product.java => dto/ProductResDTO.java} | 10 ++- .../demo/{model => dto}/package-info.java | 2 +- .../swagger/demo/enums/BasicIntEnum.java | 27 +++++++ .../demo/enums/ProductTypeIntEnum.java | 57 ++++++++++++++ .../advance/bytecode/aspectj/AopDemo.java | 4 +- .../language/feature/io/InputStreamDemo.java | 76 +++++++++++++++++++ production-component/common-util/pom.xml | 2 +- 16 files changed, 212 insertions(+), 29 deletions(-) rename framework/spring/swagger/src/main/java/org/laidu/learn/swagger/demo/{model/Product.java => dto/ProductResDTO.java} (64%) rename framework/spring/swagger/src/main/java/org/laidu/learn/swagger/demo/{model => dto}/package-info.java (73%) create mode 100644 framework/spring/swagger/src/main/java/org/laidu/learn/swagger/demo/enums/BasicIntEnum.java create mode 100644 framework/spring/swagger/src/main/java/org/laidu/learn/swagger/demo/enums/ProductTypeIntEnum.java create mode 100644 language-feature/src/main/java/org/laidu/learn/language/feature/io/InputStreamDemo.java diff --git a/framework/spring/spring-web/spring-mvc/pom.xml b/framework/spring/spring-web/spring-mvc/pom.xml index bce0e06e6..66d10c337 100644 --- a/framework/spring/spring-web/spring-mvc/pom.xml +++ b/framework/spring/spring-web/spring-mvc/pom.xml @@ -23,12 +23,6 @@ ${logbook.version} - - org.laidu.learn.swagger - swagger - 0.0.1-SNAPSHOT - - org.springframework.boot spring-boot-configuration-processor @@ -49,6 +43,10 @@ org.springframework.boot spring-boot-starter-tomcat + + org.springframework.boot + spring-boot-starter-json + diff --git a/framework/spring/spring-web/spring-mvc/src/main/java/org/laidu/learn/spring/mvc/MvcApp.java b/framework/spring/spring-web/spring-mvc/src/main/java/org/laidu/learn/spring/mvc/MvcApp.java index f4768a945..7a0c43de7 100644 --- a/framework/spring/spring-web/spring-mvc/src/main/java/org/laidu/learn/spring/mvc/MvcApp.java +++ b/framework/spring/spring-web/spring-mvc/src/main/java/org/laidu/learn/spring/mvc/MvcApp.java @@ -3,12 +3,14 @@ import lombok.extern.slf4j.Slf4j; import org.laidu.learn.spring.mvc.conf.StorageProperties; import org.laidu.learn.spring.mvc.service.StorageService; +import org.laidu.learn.swagger.demo.config.SwaggerConfig; import org.springframework.boot.Banner; import org.springframework.boot.CommandLineRunner; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.boot.builder.SpringApplicationBuilder; import org.springframework.boot.context.properties.EnableConfigurationProperties; import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Import; import springfox.documentation.swagger2.annotations.EnableSwagger2; /** @@ -19,6 +21,7 @@ */ @Slf4j @EnableSwagger2 +@Import(SwaggerConfig.class) @SpringBootApplication @EnableConfigurationProperties(StorageProperties.class) public class MvcApp { diff --git a/framework/spring/spring-web/spring-mvc/src/main/java/org/laidu/learn/spring/mvc/conf/MvcAtuoConfiguration.java b/framework/spring/spring-web/spring-mvc/src/main/java/org/laidu/learn/spring/mvc/conf/MvcAtuoConfiguration.java index bc6f0fdf5..91b1c83a4 100644 --- a/framework/spring/spring-web/spring-mvc/src/main/java/org/laidu/learn/spring/mvc/conf/MvcAtuoConfiguration.java +++ b/framework/spring/spring-web/spring-mvc/src/main/java/org/laidu/learn/spring/mvc/conf/MvcAtuoConfiguration.java @@ -49,4 +49,5 @@ public void addFormatters(FormatterRegistry registry) { registry.addConverterFactory(new UniversalEnumConverterFactory()); } + } \ No newline at end of file diff --git a/framework/spring/spring-web/spring-mvc/src/main/java/org/laidu/learn/spring/mvc/controller/GoodsController.java b/framework/spring/spring-web/spring-mvc/src/main/java/org/laidu/learn/spring/mvc/controller/GoodsController.java index 2c0e10f74..ea799f99f 100644 --- a/framework/spring/spring-web/spring-mvc/src/main/java/org/laidu/learn/spring/mvc/controller/GoodsController.java +++ b/framework/spring/spring-web/spring-mvc/src/main/java/org/laidu/learn/spring/mvc/controller/GoodsController.java @@ -17,7 +17,6 @@ * @author tiancai.zang * on 2018-08-23 11:44. */ -// TODO: 2018-08-23 11:44 商品接口 @Slf4j @RestController @RequestMapping("/goods") diff --git a/framework/spring/spring-web/spring-mvc/src/main/java/org/laidu/learn/spring/mvc/dto/AddGoodsReqDTO.java b/framework/spring/spring-web/spring-mvc/src/main/java/org/laidu/learn/spring/mvc/dto/AddGoodsReqDTO.java index f4bff6b03..a724cdf7c 100644 --- a/framework/spring/spring-web/spring-mvc/src/main/java/org/laidu/learn/spring/mvc/dto/AddGoodsReqDTO.java +++ b/framework/spring/spring-web/spring-mvc/src/main/java/org/laidu/learn/spring/mvc/dto/AddGoodsReqDTO.java @@ -1,6 +1,5 @@ package org.laidu.learn.spring.mvc.dto; -import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.AllArgsConstructor; import lombok.Builder; @@ -18,7 +17,6 @@ @Builder @AllArgsConstructor @NoArgsConstructor -@ApiModel("添加商品请求") public class AddGoodsReqDTO { @ApiModelProperty("商品ID") diff --git a/framework/spring/spring-web/spring-mvc/src/main/java/org/laidu/learn/spring/mvc/dto/GetGoodsResDTO.java b/framework/spring/spring-web/spring-mvc/src/main/java/org/laidu/learn/spring/mvc/dto/GetGoodsResDTO.java index 1b06a6033..13908ecc9 100644 --- a/framework/spring/spring-web/spring-mvc/src/main/java/org/laidu/learn/spring/mvc/dto/GetGoodsResDTO.java +++ b/framework/spring/spring-web/spring-mvc/src/main/java/org/laidu/learn/spring/mvc/dto/GetGoodsResDTO.java @@ -1,6 +1,5 @@ package org.laidu.learn.spring.mvc.dto; -import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.AllArgsConstructor; import lombok.Builder; @@ -18,7 +17,6 @@ @Builder @AllArgsConstructor @NoArgsConstructor -@ApiModel("添加商品请求") public class GetGoodsResDTO { @ApiModelProperty("商品ID") diff --git a/framework/spring/spring-web/spring-mvc/src/main/java/org/laidu/learn/spring/mvc/enums/GoodsTypeEnum.java b/framework/spring/spring-web/spring-mvc/src/main/java/org/laidu/learn/spring/mvc/enums/GoodsTypeEnum.java index 2d68298ca..1d0999b1d 100644 --- a/framework/spring/spring-web/spring-mvc/src/main/java/org/laidu/learn/spring/mvc/enums/GoodsTypeEnum.java +++ b/framework/spring/spring-web/spring-mvc/src/main/java/org/laidu/learn/spring/mvc/enums/GoodsTypeEnum.java @@ -1,5 +1,6 @@ package org.laidu.learn.spring.mvc.enums; +import com.fasterxml.jackson.annotation.JsonValue; import lombok.AllArgsConstructor; import lombok.Getter; import lombok.extern.slf4j.Slf4j; @@ -27,8 +28,9 @@ public enum GoodsTypeEnum implements NameValueEnum { PHONE(1,"手机"), ; - + @JsonValue private Integer value; + private String name; diff --git a/framework/spring/swagger/src/main/java/org/laidu/learn/swagger/demo/config/SwaggerConfig.java b/framework/spring/swagger/src/main/java/org/laidu/learn/swagger/demo/config/SwaggerConfig.java index c6962ad5a..9b0d47707 100644 --- a/framework/spring/swagger/src/main/java/org/laidu/learn/swagger/demo/config/SwaggerConfig.java +++ b/framework/spring/swagger/src/main/java/org/laidu/learn/swagger/demo/config/SwaggerConfig.java @@ -1,13 +1,20 @@ package org.laidu.learn.swagger.demo.config; +import com.google.common.base.Predicates; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.context.annotation.Profile; +import springfox.documentation.builders.ParameterBuilder; import springfox.documentation.builders.PathSelectors; import springfox.documentation.builders.RequestHandlerSelectors; +import springfox.documentation.schema.ModelRef; +import springfox.documentation.service.Parameter; import springfox.documentation.spi.DocumentationType; import springfox.documentation.spring.web.plugins.Docket; +import java.util.ArrayList; +import java.util.List; + /** * SwaggerConfig *

                    @@ -35,11 +42,24 @@ public Docket apiProd() { @Bean @Profile({"default", "dev", "test"}) public Docket apiDev() { + + ParameterBuilder ticketPar = new ParameterBuilder(); + List pars = new ArrayList<>(); + ticketPar.name("__sid").description("__sid") + .parameterType("query") + .modelRef(new ModelRef("string")) + .required(false).build(); + pars.add(ticketPar.build()); + + + return new Docket(DocumentationType.SWAGGER_2) + .forCodeGeneration(true) .select() - .apis(RequestHandlerSelectors.any()) - .paths(PathSelectors.any()) - .build(); + .apis(RequestHandlerSelectors.basePackage("org.laidu.learn")) + .paths(Predicates.not(PathSelectors.regex("/error.*"))) + .build() + .globalOperationParameters(pars); } diff --git a/framework/spring/swagger/src/main/java/org/laidu/learn/swagger/demo/controller/HomeController.java b/framework/spring/swagger/src/main/java/org/laidu/learn/swagger/demo/controller/HomeController.java index eb1060d61..acc27b698 100644 --- a/framework/spring/swagger/src/main/java/org/laidu/learn/swagger/demo/controller/HomeController.java +++ b/framework/spring/swagger/src/main/java/org/laidu/learn/swagger/demo/controller/HomeController.java @@ -4,9 +4,11 @@ import io.swagger.annotations.ApiParam; import io.swagger.annotations.ApiResponse; import lombok.extern.slf4j.Slf4j; -import org.laidu.learn.swagger.demo.model.Product; +import org.laidu.learn.swagger.demo.dto.ProductResDTO; import org.springframework.web.bind.annotation.*; +import java.util.Date; + /** * home *

                    @@ -27,17 +29,17 @@ public String home(){ @GetMapping("/query/{id}") @ApiOperation("query product by id") @ApiParam(value = "id") - @ApiResponse(code = 100, message = "123321" , response = Product.class) - public Product query(@PathVariable String id){ - return Product.builder() + @ApiResponse(code = 100, message = "123321" , response = ProductResDTO.class) + public ProductResDTO query(@PathVariable String id){ + return ProductResDTO.builder() .id(id) .name("test1") - .productDate(System.currentTimeMillis()+"") + .productDate(new Date()) .build(); } @PostMapping("/add") - public Product add(Product product){ + public ProductResDTO add(ProductResDTO product){ return product; } diff --git a/framework/spring/swagger/src/main/java/org/laidu/learn/swagger/demo/model/Product.java b/framework/spring/swagger/src/main/java/org/laidu/learn/swagger/demo/dto/ProductResDTO.java similarity index 64% rename from framework/spring/swagger/src/main/java/org/laidu/learn/swagger/demo/model/Product.java rename to framework/spring/swagger/src/main/java/org/laidu/learn/swagger/demo/dto/ProductResDTO.java index bf546eced..335492e51 100644 --- a/framework/spring/swagger/src/main/java/org/laidu/learn/swagger/demo/model/Product.java +++ b/framework/spring/swagger/src/main/java/org/laidu/learn/swagger/demo/dto/ProductResDTO.java @@ -1,11 +1,14 @@ -package org.laidu.learn.swagger.demo.model; +package org.laidu.learn.swagger.demo.dto; +import com.fasterxml.jackson.annotation.JsonFormat; import io.swagger.annotations.ApiModel; import lombok.AllArgsConstructor; import lombok.Builder; import lombok.Data; import lombok.NoArgsConstructor; +import java.util.Date; + /** * product *

                    @@ -18,7 +21,7 @@ @AllArgsConstructor @NoArgsConstructor @ApiModel -public class Product { +public class ProductResDTO { /** * id @@ -33,5 +36,6 @@ public class Product { /** * product date */ - public String productDate; + @JsonFormat(pattern = "yyyy-MM-dd hh:mm:ss",timezone = "GMT+8") + public Date productDate; } \ No newline at end of file diff --git a/framework/spring/swagger/src/main/java/org/laidu/learn/swagger/demo/model/package-info.java b/framework/spring/swagger/src/main/java/org/laidu/learn/swagger/demo/dto/package-info.java similarity index 73% rename from framework/spring/swagger/src/main/java/org/laidu/learn/swagger/demo/model/package-info.java rename to framework/spring/swagger/src/main/java/org/laidu/learn/swagger/demo/dto/package-info.java index 62de7d55b..4e1192581 100644 --- a/framework/spring/swagger/src/main/java/org/laidu/learn/swagger/demo/model/package-info.java +++ b/framework/spring/swagger/src/main/java/org/laidu/learn/swagger/demo/dto/package-info.java @@ -7,4 +7,4 @@ * @author laidu */ // TODO: 2018-08-01 18:01 model -package org.laidu.learn.swagger.demo.model; \ No newline at end of file +package org.laidu.learn.swagger.demo.dto; \ No newline at end of file diff --git a/framework/spring/swagger/src/main/java/org/laidu/learn/swagger/demo/enums/BasicIntEnum.java b/framework/spring/swagger/src/main/java/org/laidu/learn/swagger/demo/enums/BasicIntEnum.java new file mode 100644 index 000000000..15f59547f --- /dev/null +++ b/framework/spring/swagger/src/main/java/org/laidu/learn/swagger/demo/enums/BasicIntEnum.java @@ -0,0 +1,27 @@ +package org.laidu.learn.swagger.demo.enums; + +/** + * Created by laidu + * on 2018-10-11 17:21. + * + * @author laidu + */ +public interface BasicIntEnum { + + /** + * 获取 value + * @return + */ + int getValue(); + + /** + * 获取name + * @return + */ + String getName(); + + BasicIntEnum getEnumByName(String name); + + BasicIntEnum getEnumByValue(Integer value); + +} diff --git a/framework/spring/swagger/src/main/java/org/laidu/learn/swagger/demo/enums/ProductTypeIntEnum.java b/framework/spring/swagger/src/main/java/org/laidu/learn/swagger/demo/enums/ProductTypeIntEnum.java new file mode 100644 index 000000000..e6a24cd6a --- /dev/null +++ b/framework/spring/swagger/src/main/java/org/laidu/learn/swagger/demo/enums/ProductTypeIntEnum.java @@ -0,0 +1,57 @@ +package org.laidu.learn.swagger.demo.enums; + +import lombok.AllArgsConstructor; +import lombok.Getter; +import lombok.extern.slf4j.Slf4j; + +/** + * 产品种类 + * + * @author tiancai.zang + * on 2018-10-11 17:20. + */ +@Slf4j +@Getter +@AllArgsConstructor +public enum ProductTypeIntEnum implements BasicIntEnum { + + /** + * 手机 + */ + PHONE(1,"手机"), + + /** + * 电脑 + */ + COMPUTER(2,"电脑"), + ; + + + private int value; + private String name; + + + + @Override + public BasicIntEnum getEnumByName(String name) { + + for (ProductTypeIntEnum anEnum : ProductTypeIntEnum.values()) { + if (name.equalsIgnoreCase(anEnum.name)){ + return anEnum; + } + } + + return null; + } + + @Override + public BasicIntEnum getEnumByValue(Integer value) { + + for (ProductTypeIntEnum anEnum : ProductTypeIntEnum.values()) { + if (value.equals(anEnum.value)){ + return anEnum; + } + } + return null; + } +} \ No newline at end of file diff --git a/language-advance/bytecode/src/main/java/org/laidu/learn/advance/bytecode/aspectj/AopDemo.java b/language-advance/bytecode/src/main/java/org/laidu/learn/advance/bytecode/aspectj/AopDemo.java index 13380d82d..6823b9ba1 100644 --- a/language-advance/bytecode/src/main/java/org/laidu/learn/advance/bytecode/aspectj/AopDemo.java +++ b/language-advance/bytecode/src/main/java/org/laidu/learn/advance/bytecode/aspectj/AopDemo.java @@ -19,9 +19,7 @@ public static void main(String[] args) { public static class UserService { @LogStartTime("Hello World") - @LogStartTime1("Hello 1") - @LogStartTime0("Hello 0") - public String fetchUserById(int userId) { + private final String fetchUserById(int userId) { try { Thread.sleep(1000); } catch (InterruptedException e) { diff --git a/language-feature/src/main/java/org/laidu/learn/language/feature/io/InputStreamDemo.java b/language-feature/src/main/java/org/laidu/learn/language/feature/io/InputStreamDemo.java new file mode 100644 index 000000000..575e8ff99 --- /dev/null +++ b/language-feature/src/main/java/org/laidu/learn/language/feature/io/InputStreamDemo.java @@ -0,0 +1,76 @@ +package org.laidu.learn.language.feature.io; + +import lombok.extern.slf4j.Slf4j; + +import java.io.BufferedReader; +import java.io.Console; +import java.io.IOException; +import java.io.InputStreamReader; +import java.util.Scanner; + +/** + * 输入流 + * + * @author tiancai.zang + * on 2018-10-11 16:17. + */ +@Slf4j +public class InputStreamDemo { + + public static void main(String[] args) throws IOException { + + try { + BufferedReader reader = new BufferedReader(new InputStreamReader(System.in)); + System.out.print("Enter your name: "); + + String name = reader.readLine(); + System.out.println("Your name is: " + name); + } catch (IOException ioe) { + ioe.printStackTrace(); + } + + // using Scanner + Scanner scanner = new Scanner(System.in); + System.out.print("Enter your nationality: "); + String nationality = scanner.nextLine(); + System.out.println("Your nationality is: " + nationality); + + // using Console + Console console = System.console(); + if (console == null) { + System.out.println("No console: not in interactive mode!"); + System.exit(0); + } + + System.out.print("Enter your username: "); + String username = console.readLine(); + + System.out.print("Enter your password: "); + char[] password = console.readPassword(); + + System.out.println("Thank you!"); + System.out.println("Your username is: " + username); + System.out.println("Your password is: " + String.valueOf(password)); + + // using Console with formatted prompt + String job = console.readLine("Enter your job: "); + + String passport = console.readLine("Enter your %d (th) passport number: ", 2); + + System.out.println("Your job is: " + job); + System.out.println("Your passport number is: " + passport); + + } + + public static String consoleInput(String tag) { + // console input + Console console = System.console(); + + if (console == null) { + System.out.println("Console is not supported"); + System.exit(1); + } + + return console.readLine(); + } +} \ No newline at end of file diff --git a/production-component/common-util/pom.xml b/production-component/common-util/pom.xml index c4fed7790..84f626c36 100644 --- a/production-component/common-util/pom.xml +++ b/production-component/common-util/pom.xml @@ -26,7 +26,7 @@ 5.0.4 - 1.2.45 + 1.2.47 2.9.1 2.1.1 From bddaf95e0d773ba7cd1d454a00c29c29bcebfef0 Mon Sep 17 00:00:00 2001 From: Tiancai ZANG Date: Thu, 11 Oct 2018 19:50:17 +0800 Subject: [PATCH 183/417] fixed monitor starter version --- framework/spring/pom.xml | 5 +++++ framework/spring/spring-aop/pom.xml | 6 ------ framework/spring/spring-web/spring-mvc/pom.xml | 5 ----- production-component/common-util/pom.xml | 2 ++ production-component/crawler-helper/pom.xml | 2 ++ production-component/crawler/pom.xml | 3 +++ 6 files changed, 12 insertions(+), 11 deletions(-) diff --git a/framework/spring/pom.xml b/framework/spring/pom.xml index 13ecd8149..175f454d6 100644 --- a/framework/spring/pom.xml +++ b/framework/spring/pom.xml @@ -104,6 +104,11 @@ test + + xyz.xpcoder.commons + monitor-spring-boot-starter + 0.0.4 + diff --git a/framework/spring/spring-aop/pom.xml b/framework/spring/spring-aop/pom.xml index cdb72b467..cc6bbb94e 100644 --- a/framework/spring/spring-aop/pom.xml +++ b/framework/spring/spring-aop/pom.xml @@ -19,12 +19,6 @@ spring-boot-starter-aop - - xyz.xpcoder.commons - monitor-spring-boot-starter - 0.0.2 - - net.logstash.logback logstash-logback-encoder diff --git a/framework/spring/spring-web/spring-mvc/pom.xml b/framework/spring/spring-web/spring-mvc/pom.xml index 66d10c337..5cf415f4d 100644 --- a/framework/spring/spring-web/spring-mvc/pom.xml +++ b/framework/spring/spring-web/spring-mvc/pom.xml @@ -29,11 +29,6 @@ true - - xyz.xpcoder.commons - monitor-spring-boot-starter - 0.0.4 - org.springframework.boot diff --git a/production-component/common-util/pom.xml b/production-component/common-util/pom.xml index 84f626c36..dd454883d 100644 --- a/production-component/common-util/pom.xml +++ b/production-component/common-util/pom.xml @@ -11,6 +11,8 @@ common-util + jar + 通用工具集 diff --git a/production-component/crawler-helper/pom.xml b/production-component/crawler-helper/pom.xml index abfb11313..bdc9c5fe5 100644 --- a/production-component/crawler-helper/pom.xml +++ b/production-component/crawler-helper/pom.xml @@ -14,6 +14,8 @@ 1.0-SNAPSHOT 4.0.0 + jar + 爬虫小工具 diff --git a/production-component/crawler/pom.xml b/production-component/crawler/pom.xml index 1d7af8d02..accd9f866 100644 --- a/production-component/crawler/pom.xml +++ b/production-component/crawler/pom.xml @@ -9,6 +9,9 @@ 4.0.0 + jar + + crawler 基于webmagic的爬虫框架 From 243d605d547588f9db7c9cb7b25cc8d4a66c42aa Mon Sep 17 00:00:00 2001 From: Tiancai ZANG Date: Fri, 12 Oct 2018 15:29:55 +0800 Subject: [PATCH 184/417] remove mybatis resutltMap --- framework/spring/spring-data/pom.xml | 6 + .../org/laidu/learn/mybatis/MybatisApp.java | 5 + .../learn/mybatis/mapper/AppUserMapper.java | 171 +++++++----------- .../src/main/resources/application.properties | 1 + .../commom/util/annotation/Singleton.java | 7 + .../org/laidu/commom/util/json/JsonUtil.java | 25 --- .../org/laidu/commom/util/xml/JAXBUtil.java | 1 - .../laidu/commom/util/xml/JsoupParser.java | 1 - production-component/pom.xml | 2 +- 9 files changed, 87 insertions(+), 132 deletions(-) delete mode 100644 production-component/common-util/src/main/java/org/laidu/commom/util/json/JsonUtil.java diff --git a/framework/spring/spring-data/pom.xml b/framework/spring/spring-data/pom.xml index 691c9136c..9836a3aa2 100644 --- a/framework/spring/spring-data/pom.xml +++ b/framework/spring/spring-data/pom.xml @@ -65,6 +65,12 @@ spring-boot-starter + + org.laidu.learn.swagger + swagger + 0.0.1-SNAPSHOT + + org.springframework.boot spring-boot-starter-test diff --git a/framework/spring/spring-data/spring-mybatis/src/main/java/org/laidu/learn/mybatis/MybatisApp.java b/framework/spring/spring-data/spring-mybatis/src/main/java/org/laidu/learn/mybatis/MybatisApp.java index 7685effe8..98be69c1b 100644 --- a/framework/spring/spring-data/spring-mybatis/src/main/java/org/laidu/learn/mybatis/MybatisApp.java +++ b/framework/spring/spring-data/spring-mybatis/src/main/java/org/laidu/learn/mybatis/MybatisApp.java @@ -1,9 +1,12 @@ package org.laidu.learn.mybatis; +import org.laidu.learn.swagger.demo.config.SwaggerConfig; import org.mybatis.spring.annotation.MapperScan; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.context.annotation.EnableAspectJAutoProxy; +import org.springframework.context.annotation.Import; +import springfox.documentation.swagger2.annotations.EnableSwagger2; /** * org.laidu.learn.amqp.Application @@ -12,6 +15,8 @@ */ @MapperScan("org.laidu.learn.mybatis.mapper") @SpringBootApplication +@EnableSwagger2 +@Import(SwaggerConfig.class) @EnableAspectJAutoProxy(proxyTargetClass = true) public class MybatisApp { diff --git a/framework/spring/spring-data/spring-mybatis/src/main/java/org/laidu/learn/mybatis/mapper/AppUserMapper.java b/framework/spring/spring-data/spring-mybatis/src/main/java/org/laidu/learn/mybatis/mapper/AppUserMapper.java index a1b3b3f77..71ae02092 100644 --- a/framework/spring/spring-data/spring-mybatis/src/main/java/org/laidu/learn/mybatis/mapper/AppUserMapper.java +++ b/framework/spring/spring-data/spring-mybatis/src/main/java/org/laidu/learn/mybatis/mapper/AppUserMapper.java @@ -1,22 +1,13 @@ package org.laidu.learn.mybatis.mapper; -import org.apache.ibatis.annotations.Delete; -import org.apache.ibatis.annotations.Insert; -import org.apache.ibatis.annotations.InsertProvider; -import org.apache.ibatis.annotations.Mapper; -import org.apache.ibatis.annotations.Result; -import org.apache.ibatis.annotations.Results; -import org.apache.ibatis.annotations.Select; -import org.apache.ibatis.annotations.Update; -import org.apache.ibatis.annotations.UpdateProvider; -import org.apache.ibatis.type.JdbcType; +import org.apache.ibatis.annotations.*; import org.laidu.learn.mybatis.entity.AppUser; @Mapper public interface AppUserMapper { @Delete({ "delete from ca_app_user", - "where id = #{id,jdbcType=BIGINT}" + "where id = #{id}" }) int deleteByPrimaryKey(Long id); @@ -34,19 +25,19 @@ public interface AppUserMapper { "update_time, remark, ", "black_status, audit_time, ", "id_card_police)", - "values (#{id,jdbcType=BIGINT}, #{openId,jdbcType=VARCHAR}, ", - "#{registerChannel,jdbcType=BIGINT}, #{username,jdbcType=VARCHAR}, ", - "#{idCard,jdbcType=VARCHAR}, #{name,jdbcType=VARCHAR}, #{idCardDetailAddress,jdbcType=VARCHAR}, ", - "#{isVerifyIdCard,jdbcType=BIT}, #{idCardCoverup,jdbcType=VARCHAR}, ", - "#{idCardCoverdown,jdbcType=VARCHAR}, #{idCardHold,jdbcType=VARCHAR}, ", - "#{isOtherPictureAuth,jdbcType=BIT}, #{isBankcardAuth,jdbcType=BIT}, ", - "#{signaturePic,jdbcType=VARCHAR}, #{isAdditionalAuth,jdbcType=BIT}, ", - "#{isEmergencyAuth,jdbcType=BIT}, #{phone,jdbcType=VARCHAR}, ", - "#{email,jdbcType=VARCHAR}, #{address,jdbcType=VARCHAR}, ", - "#{userStatus,jdbcType=INTEGER}, #{createTime,jdbcType=TIMESTAMP}, ", - "#{updateTime,jdbcType=TIMESTAMP}, #{remark,jdbcType=VARCHAR}, ", - "#{blackStatus,jdbcType=INTEGER}, #{auditTime,jdbcType=TIMESTAMP}, ", - "#{idCardPolice,jdbcType=LONGVARCHAR})" + "values (#{id}, #{openId}, ", + "#{registerChannel}, #{username}, ", + "#{idCard}, #{name}, #{idCardDetailAddress}, ", + "#{isVerifyIdCard}, #{idCardCoverup}, ", + "#{idCardCoverdown}, #{idCardHold}, ", + "#{isOtherPictureAuth}, #{isBankcardAuth}, ", + "#{signaturePic}, #{isAdditionalAuth}, ", + "#{isEmergencyAuth}, #{phone}, ", + "#{email}, #{address}, ", + "#{userStatus}, #{createTime}, ", + "#{updateTime}, #{remark}, ", + "#{blackStatus}, #{auditTime}, ", + "#{idCardPolice})" }) int insert(AppUser record); @@ -61,35 +52,7 @@ public interface AppUserMapper { "email, address, user_status, create_time, update_time, remark, black_status, ", "audit_time, id_card_police", "from ca_app_user", - "where id = #{id,jdbcType=BIGINT}" - }) - @Results({ - @Result(column="id", property="id", jdbcType=JdbcType.BIGINT, id=true), - @Result(column="open_id", property="openId", jdbcType=JdbcType.VARCHAR), - @Result(column="register_channel", property="registerChannel", jdbcType=JdbcType.BIGINT), - @Result(column="username", property="username", jdbcType=JdbcType.VARCHAR), - @Result(column="id_card", property="idCard", jdbcType=JdbcType.VARCHAR), - @Result(column="name", property="name", jdbcType=JdbcType.VARCHAR), - @Result(column="id_card_detail_address", property="idCardDetailAddress", jdbcType=JdbcType.VARCHAR), - @Result(column="is_verify_id_card", property="isVerifyIdCard", jdbcType=JdbcType.BIT), - @Result(column="id_card_coverup", property="idCardCoverup", jdbcType=JdbcType.VARCHAR), - @Result(column="id_card_coverdown", property="idCardCoverdown", jdbcType=JdbcType.VARCHAR), - @Result(column="id_card_hold", property="idCardHold", jdbcType=JdbcType.VARCHAR), - @Result(column="is_other_picture_auth", property="isOtherPictureAuth", jdbcType=JdbcType.BIT), - @Result(column="is_bankcard_auth", property="isBankcardAuth", jdbcType=JdbcType.BIT), - @Result(column="signature_pic", property="signaturePic", jdbcType=JdbcType.VARCHAR), - @Result(column="is_additional_auth", property="isAdditionalAuth", jdbcType=JdbcType.BIT), - @Result(column="is_emergency_auth", property="isEmergencyAuth", jdbcType=JdbcType.BIT), - @Result(column="phone", property="phone", jdbcType=JdbcType.VARCHAR), - @Result(column="email", property="email", jdbcType=JdbcType.VARCHAR), - @Result(column="address", property="address", jdbcType=JdbcType.VARCHAR), - @Result(column="user_status", property="userStatus", jdbcType=JdbcType.INTEGER), - @Result(column="create_time", property="createTime", jdbcType=JdbcType.TIMESTAMP), - @Result(column="update_time", property="updateTime", jdbcType=JdbcType.TIMESTAMP), - @Result(column="remark", property="remark", jdbcType=JdbcType.VARCHAR), - @Result(column="black_status", property="blackStatus", jdbcType=JdbcType.INTEGER), - @Result(column="audit_time", property="auditTime", jdbcType=JdbcType.TIMESTAMP), - @Result(column="id_card_police", property="idCardPolice", jdbcType=JdbcType.LONGVARCHAR) + "where id = #{id}" }) AppUser selectByPrimaryKey(Long id); @@ -98,62 +61,62 @@ public interface AppUserMapper { @Update({ "update ca_app_user", - "set open_id = #{openId,jdbcType=VARCHAR},", - "register_channel = #{registerChannel,jdbcType=BIGINT},", - "username = #{username,jdbcType=VARCHAR},", - "id_card = #{idCard,jdbcType=VARCHAR},", - "name = #{name,jdbcType=VARCHAR},", - "id_card_detail_address = #{idCardDetailAddress,jdbcType=VARCHAR},", - "is_verify_id_card = #{isVerifyIdCard,jdbcType=BIT},", - "id_card_coverup = #{idCardCoverup,jdbcType=VARCHAR},", - "id_card_coverdown = #{idCardCoverdown,jdbcType=VARCHAR},", - "id_card_hold = #{idCardHold,jdbcType=VARCHAR},", - "is_other_picture_auth = #{isOtherPictureAuth,jdbcType=BIT},", - "is_bankcard_auth = #{isBankcardAuth,jdbcType=BIT},", - "signature_pic = #{signaturePic,jdbcType=VARCHAR},", - "is_additional_auth = #{isAdditionalAuth,jdbcType=BIT},", - "is_emergency_auth = #{isEmergencyAuth,jdbcType=BIT},", - "phone = #{phone,jdbcType=VARCHAR},", - "email = #{email,jdbcType=VARCHAR},", - "address = #{address,jdbcType=VARCHAR},", - "user_status = #{userStatus,jdbcType=INTEGER},", - "create_time = #{createTime,jdbcType=TIMESTAMP},", - "update_time = #{updateTime,jdbcType=TIMESTAMP},", - "remark = #{remark,jdbcType=VARCHAR},", - "black_status = #{blackStatus,jdbcType=INTEGER},", - "audit_time = #{auditTime,jdbcType=TIMESTAMP},", - "id_card_police = #{idCardPolice,jdbcType=LONGVARCHAR}", - "where id = #{id,jdbcType=BIGINT}" + "set open_id = #{openId},", + "register_channel = #{registerChannel},", + "username = #{username},", + "id_card = #{idCard},", + "name = #{name},", + "id_card_detail_address = #{idCardDetailAddress},", + "is_verify_id_card = #{isVerifyIdCard},", + "id_card_coverup = #{idCardCoverup},", + "id_card_coverdown = #{idCardCoverdown},", + "id_card_hold = #{idCardHold},", + "is_other_picture_auth = #{isOtherPictureAuth},", + "is_bankcard_auth = #{isBankcardAuth},", + "signature_pic = #{signaturePic},", + "is_additional_auth = #{isAdditionalAuth},", + "is_emergency_auth = #{isEmergencyAuth},", + "phone = #{phone},", + "email = #{email},", + "address = #{address},", + "user_status = #{userStatus},", + "create_time = #{createTime},", + "update_time = #{updateTime},", + "remark = #{remark},", + "black_status = #{blackStatus},", + "audit_time = #{auditTime},", + "id_card_police = #{idCardPolice}", + "where id = #{id}" }) int updateByPrimaryKeyWithBLOBs(AppUser record); @Update({ "update ca_app_user", - "set open_id = #{openId,jdbcType=VARCHAR},", - "register_channel = #{registerChannel,jdbcType=BIGINT},", - "username = #{username,jdbcType=VARCHAR},", - "id_card = #{idCard,jdbcType=VARCHAR},", - "name = #{name,jdbcType=VARCHAR},", - "id_card_detail_address = #{idCardDetailAddress,jdbcType=VARCHAR},", - "is_verify_id_card = #{isVerifyIdCard,jdbcType=BIT},", - "id_card_coverup = #{idCardCoverup,jdbcType=VARCHAR},", - "id_card_coverdown = #{idCardCoverdown,jdbcType=VARCHAR},", - "id_card_hold = #{idCardHold,jdbcType=VARCHAR},", - "is_other_picture_auth = #{isOtherPictureAuth,jdbcType=BIT},", - "is_bankcard_auth = #{isBankcardAuth,jdbcType=BIT},", - "signature_pic = #{signaturePic,jdbcType=VARCHAR},", - "is_additional_auth = #{isAdditionalAuth,jdbcType=BIT},", - "is_emergency_auth = #{isEmergencyAuth,jdbcType=BIT},", - "phone = #{phone,jdbcType=VARCHAR},", - "email = #{email,jdbcType=VARCHAR},", - "address = #{address,jdbcType=VARCHAR},", - "user_status = #{userStatus,jdbcType=INTEGER},", - "create_time = #{createTime,jdbcType=TIMESTAMP},", - "update_time = #{updateTime,jdbcType=TIMESTAMP},", - "remark = #{remark,jdbcType=VARCHAR},", - "black_status = #{blackStatus,jdbcType=INTEGER},", - "audit_time = #{auditTime,jdbcType=TIMESTAMP}", - "where id = #{id,jdbcType=BIGINT}" + "set open_id = #{openId},", + "register_channel = #{registerChannel},", + "username = #{username},", + "id_card = #{idCard},", + "name = #{name},", + "id_card_detail_address = #{idCardDetailAddress},", + "is_verify_id_card = #{isVerifyIdCard},", + "id_card_coverup = #{idCardCoverup},", + "id_card_coverdown = #{idCardCoverdown},", + "id_card_hold = #{idCardHold},", + "is_other_picture_auth = #{isOtherPictureAuth},", + "is_bankcard_auth = #{isBankcardAuth},", + "signature_pic = #{signaturePic},", + "is_additional_auth = #{isAdditionalAuth},", + "is_emergency_auth = #{isEmergencyAuth},", + "phone = #{phone},", + "email = #{email},", + "address = #{address},", + "user_status = #{userStatus},", + "create_time = #{createTime},", + "update_time = #{updateTime},", + "remark = #{remark},", + "black_status = #{blackStatus},", + "audit_time = #{auditTime}", + "where id = #{id}" }) int updateByPrimaryKey(AppUser record); } \ No newline at end of file diff --git a/framework/spring/spring-data/spring-mybatis/src/main/resources/application.properties b/framework/spring/spring-data/spring-mybatis/src/main/resources/application.properties index d601f1523..c8d311146 100644 --- a/framework/spring/spring-data/spring-mybatis/src/main/resources/application.properties +++ b/framework/spring/spring-data/spring-mybatis/src/main/resources/application.properties @@ -63,6 +63,7 @@ logging.config=classpath:config/logback-spring.xml #mybatis.generator.configurationFile=config/generatorConfig.xml mybatis.configuration.use-generated-keys=true mybatis.configuration.local-cache-scope=session +mybatis.configuration.map-underscore-to-camel-case=true #redis config #spring.redis.database=0 diff --git a/production-component/common-util/src/main/java/org/laidu/commom/util/annotation/Singleton.java b/production-component/common-util/src/main/java/org/laidu/commom/util/annotation/Singleton.java index 8eac4946f..b96dfb038 100644 --- a/production-component/common-util/src/main/java/org/laidu/commom/util/annotation/Singleton.java +++ b/production-component/common-util/src/main/java/org/laidu/commom/util/annotation/Singleton.java @@ -1,10 +1,17 @@ package org.laidu.commom.util.annotation; +import java.lang.annotation.Documented; +import java.lang.annotation.ElementType; +import java.lang.annotation.Target; + /** * open singleton mode *

                    * Created by tiancai.zang on 2017-12-01 17-42. */ + +@Target(ElementType.TYPE) +@Documented public @interface Singleton { /** * singleton implement style diff --git a/production-component/common-util/src/main/java/org/laidu/commom/util/json/JsonUtil.java b/production-component/common-util/src/main/java/org/laidu/commom/util/json/JsonUtil.java deleted file mode 100644 index 507ca92d7..000000000 --- a/production-component/common-util/src/main/java/org/laidu/commom/util/json/JsonUtil.java +++ /dev/null @@ -1,25 +0,0 @@ -package org.laidu.commom.util.json; - -import com.alibaba.fastjson.JSON; - -/** - * json util - *

                    - * Created by tiancai.zang - * on 2018-05-10 13:24. - */ -public enum JsonUtil{ - // instance - INSTANCE; - - /** - * get json String from object - * - * @param o - * @return - */ - public String toJsonString(Object o) { - return JSON.toJSONString(o); - } - -} \ No newline at end of file diff --git a/production-component/common-util/src/main/java/org/laidu/commom/util/xml/JAXBUtil.java b/production-component/common-util/src/main/java/org/laidu/commom/util/xml/JAXBUtil.java index 68b7e1379..b27cece39 100644 --- a/production-component/common-util/src/main/java/org/laidu/commom/util/xml/JAXBUtil.java +++ b/production-component/common-util/src/main/java/org/laidu/commom/util/xml/JAXBUtil.java @@ -16,7 +16,6 @@ * Created by tiancai.zang on 2017-12-13 11:41. */ @Slf4j -// : 2017/12/13 11/41 JAXB util public final class JAXBUtil { /** diff --git a/production-component/common-util/src/main/java/org/laidu/commom/util/xml/JsoupParser.java b/production-component/common-util/src/main/java/org/laidu/commom/util/xml/JsoupParser.java index 5ac319451..60702feb7 100644 --- a/production-component/common-util/src/main/java/org/laidu/commom/util/xml/JsoupParser.java +++ b/production-component/common-util/src/main/java/org/laidu/commom/util/xml/JsoupParser.java @@ -11,7 +11,6 @@ * Created by tiancai.zang on 2017-12-13 10:51. */ @Slf4j -// TODO: 2017/12/13 10/51 Jsoup xml parser public final class JsoupParser { /** diff --git a/production-component/pom.xml b/production-component/pom.xml index bafffbed1..f16be782f 100644 --- a/production-component/pom.xml +++ b/production-component/pom.xml @@ -20,7 +20,7 @@ - 1.5.9.RELEASE + 2.0.5.RELEASE 3.1.1 \ No newline at end of file From b36b624dad8868eee2fcd4c240f01968050dd6db Mon Sep 17 00:00:00 2001 From: Tiancai ZANG Date: Fri, 12 Oct 2018 19:00:19 +0800 Subject: [PATCH 185/417] remove spring boot admin 2 spring cloud --- framework/spring/spring-boot/pom.xml | 14 ---- .../spring-boot/spring-boot-app/pom.xml | 15 ---- .../admin-dashboard}/pom.xml | 9 ++- .../learn/spring/boot/admin/AdminApp.java | 2 + .../admin/conf/NotifierConfiguration.java | 0 .../src/main/resources/application.yml | 78 ++++++++++--------- .../{service-api => api-gateway}/pom.xml | 3 +- .../cloud/service/api/ApiGatewayApp.java} | 8 +- .../src/main/resources/application.yml | 10 +++ .../src/main/resources/application.properties | 2 +- framework/spring/spring-cloud/pom.xml | 25 +++++- .../spring-cloud/register-center/pom.xml | 5 ++ .../cloud/eureka/RegisterCenterApp.java | 2 + .../src/main/resources/application.yml | 33 +++++++- .../src/main/resources/application.yml | 5 -- .../src/main/resources/application.properties | 2 +- 16 files changed, 134 insertions(+), 79 deletions(-) rename framework/spring/{spring-boot/spring-boot-admin => spring-cloud/admin-dashboard}/pom.xml (88%) rename framework/spring/{spring-boot/spring-boot-admin => spring-cloud/admin-dashboard}/src/main/java/org/laidu/learn/spring/boot/admin/AdminApp.java (89%) rename framework/spring/{spring-boot/spring-boot-admin => spring-cloud/admin-dashboard}/src/main/java/org/laidu/learn/spring/boot/admin/conf/NotifierConfiguration.java (100%) rename framework/spring/{spring-boot/spring-boot-admin => spring-cloud/admin-dashboard}/src/main/resources/application.yml (50%) rename framework/spring/spring-cloud/{service-api => api-gateway}/pom.xml (95%) rename framework/spring/spring-cloud/{service-api/src/main/java/org/laidu/learn/spring/cloud/service/api/ServiceApiApp.java => api-gateway/src/main/java/org/laidu/learn/spring/cloud/service/api/ApiGatewayApp.java} (68%) create mode 100644 framework/spring/spring-cloud/api-gateway/src/main/resources/application.yml delete mode 100644 framework/spring/spring-cloud/service-api/src/main/resources/application.yml diff --git a/framework/spring/spring-boot/pom.xml b/framework/spring/spring-boot/pom.xml index 14be5aacd..c3b6b77a9 100644 --- a/framework/spring/spring-boot/pom.xml +++ b/framework/spring/spring-boot/pom.xml @@ -17,7 +17,6 @@ spring-boot-app spring-boot-shiro spring-boot-sso - spring-boot-admin @@ -25,25 +24,12 @@ UTF-8 1.8 springio - 2.0.2 - - de.codecentric - spring-boot-admin-starter-server - ${spring-boot-admin.version} - - - - de.codecentric - spring-boot-admin-starter-client - ${spring-boot-admin.version} - - diff --git a/framework/spring/spring-boot/spring-boot-app/pom.xml b/framework/spring/spring-boot/spring-boot-app/pom.xml index f26f6d859..104e1ece2 100644 --- a/framework/spring/spring-boot/spring-boot-app/pom.xml +++ b/framework/spring/spring-boot/spring-boot-app/pom.xml @@ -22,21 +22,6 @@ - - org.jolokia - jolokia-core - - - - de.codecentric - spring-boot-admin-starter-client - ${spring-boot-admin.version} - - - - - - org.springframework.boot spring-boot-starter-actuator diff --git a/framework/spring/spring-boot/spring-boot-admin/pom.xml b/framework/spring/spring-cloud/admin-dashboard/pom.xml similarity index 88% rename from framework/spring/spring-boot/spring-boot-admin/pom.xml rename to framework/spring/spring-cloud/admin-dashboard/pom.xml index f8d7bd671..d740b64a1 100644 --- a/framework/spring/spring-boot/spring-boot-admin/pom.xml +++ b/framework/spring/spring-cloud/admin-dashboard/pom.xml @@ -3,13 +3,13 @@ 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"> - spring-boot + spring-cloud org.laidu.learn 1.0-SNAPSHOT 4.0.0 - spring-boot-admin + admin-dashboard @@ -30,6 +30,11 @@ 2.0.0 + + org.springframework.cloud + spring-cloud-starter-netflix-eureka-client + + org.springframework.boot spring-boot-starter-web diff --git a/framework/spring/spring-boot/spring-boot-admin/src/main/java/org/laidu/learn/spring/boot/admin/AdminApp.java b/framework/spring/spring-cloud/admin-dashboard/src/main/java/org/laidu/learn/spring/boot/admin/AdminApp.java similarity index 89% rename from framework/spring/spring-boot/spring-boot-admin/src/main/java/org/laidu/learn/spring/boot/admin/AdminApp.java rename to framework/spring/spring-cloud/admin-dashboard/src/main/java/org/laidu/learn/spring/boot/admin/AdminApp.java index feb6bbb72..9463eac4b 100644 --- a/framework/spring/spring-boot/spring-boot-admin/src/main/java/org/laidu/learn/spring/boot/admin/AdminApp.java +++ b/framework/spring/spring-cloud/admin-dashboard/src/main/java/org/laidu/learn/spring/boot/admin/AdminApp.java @@ -5,6 +5,7 @@ import org.springframework.boot.Banner; import org.springframework.boot.autoconfigure.EnableAutoConfiguration; import org.springframework.boot.builder.SpringApplicationBuilder; +import org.springframework.cloud.client.discovery.EnableDiscoveryClient; import org.springframework.context.annotation.Configuration; /** @@ -15,6 +16,7 @@ */ @Slf4j @Configuration +@EnableDiscoveryClient @EnableAutoConfiguration @EnableAdminServer public class AdminApp { diff --git a/framework/spring/spring-boot/spring-boot-admin/src/main/java/org/laidu/learn/spring/boot/admin/conf/NotifierConfiguration.java b/framework/spring/spring-cloud/admin-dashboard/src/main/java/org/laidu/learn/spring/boot/admin/conf/NotifierConfiguration.java similarity index 100% rename from framework/spring/spring-boot/spring-boot-admin/src/main/java/org/laidu/learn/spring/boot/admin/conf/NotifierConfiguration.java rename to framework/spring/spring-cloud/admin-dashboard/src/main/java/org/laidu/learn/spring/boot/admin/conf/NotifierConfiguration.java diff --git a/framework/spring/spring-boot/spring-boot-admin/src/main/resources/application.yml b/framework/spring/spring-cloud/admin-dashboard/src/main/resources/application.yml similarity index 50% rename from framework/spring/spring-boot/spring-boot-admin/src/main/resources/application.yml rename to framework/spring/spring-cloud/admin-dashboard/src/main/resources/application.yml index cf8a0c3cc..adc317897 100644 --- a/framework/spring/spring-boot/spring-boot-admin/src/main/resources/application.yml +++ b/framework/spring/spring-cloud/admin-dashboard/src/main/resources/application.yml @@ -1,4 +1,5 @@ spring: + application: admin-dashboard jackson: property-naming-strategy: SNAKE_CASE boot: @@ -33,41 +34,46 @@ spring: enable: true -management: - server: - port: 9998 - address: localhost - endpoint: - health: - show-details: always - shutdown: - enabled: true - metrics: - enabled: true - info: - enabled: true - endpoints: - enabled-by-default: true - jmx: - exposure: - include: "*" - web: - exposure: - include: "*" - # METRICS - metrics: - export: - atlas: - enabled: true - step: 1s - graphite: - host: localhost - port: 2004 - enabled: true - step: 1s - protocol: pickled - binders: - jvm: - enabled: true +#management: +# server: +# port: 9998 +# address: localhost +# endpoint: +# health: +# show-details: always +# shutdown: +# enabled: true +# metrics: +# enabled: true +# info: +# enabled: true +# endpoints: +# enabled-by-default: true +# jmx: +# exposure: +# include: "*" +# web: +# exposure: +# include: "*" +# # METRICS +# metrics: +# export: +# atlas: +# enabled: true +# step: 1s +# graphite: +# host: localhost +# port: 2004 +# enabled: true +# step: 1s +# protocol: pickled +# binders: +# jvm: +# enabled: true server: port: 2222 + +eureka: + client: + service-url: + defaultZone: http://local-dev:1111/eureka/ \ No newline at end of file diff --git a/framework/spring/spring-cloud/service-api/pom.xml b/framework/spring/spring-cloud/api-gateway/pom.xml similarity index 95% rename from framework/spring/spring-cloud/service-api/pom.xml rename to framework/spring/spring-cloud/api-gateway/pom.xml index a180cd937..b5b86de89 100644 --- a/framework/spring/spring-cloud/service-api/pom.xml +++ b/framework/spring/spring-cloud/api-gateway/pom.xml @@ -10,9 +10,10 @@ 4.0.0 jar - service-api + api-gateway + org.springframework.cloud spring-cloud-starter-netflix-zuul diff --git a/framework/spring/spring-cloud/service-api/src/main/java/org/laidu/learn/spring/cloud/service/api/ServiceApiApp.java b/framework/spring/spring-cloud/api-gateway/src/main/java/org/laidu/learn/spring/cloud/service/api/ApiGatewayApp.java similarity index 68% rename from framework/spring/spring-cloud/service-api/src/main/java/org/laidu/learn/spring/cloud/service/api/ServiceApiApp.java rename to framework/spring/spring-cloud/api-gateway/src/main/java/org/laidu/learn/spring/cloud/service/api/ApiGatewayApp.java index 6507de457..607961353 100644 --- a/framework/spring/spring-cloud/service-api/src/main/java/org/laidu/learn/spring/cloud/service/api/ServiceApiApp.java +++ b/framework/spring/spring-cloud/api-gateway/src/main/java/org/laidu/learn/spring/cloud/service/api/ApiGatewayApp.java @@ -2,8 +2,10 @@ import lombok.extern.slf4j.Slf4j; import org.springframework.boot.Banner; +import org.springframework.boot.WebApplicationType; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.boot.builder.SpringApplicationBuilder; +import org.springframework.cloud.client.discovery.EnableDiscoveryClient; import org.springframework.cloud.netflix.zuul.EnableZuulProxy; /** @@ -14,14 +16,16 @@ */ @Slf4j @EnableZuulProxy +@EnableDiscoveryClient @SpringBootApplication -public class ServiceApiApp { +public class ApiGatewayApp { public static void main(String[] args) { - new SpringApplicationBuilder(ServiceApiApp.class) + new SpringApplicationBuilder(ApiGatewayApp.class) .bannerMode(Banner.Mode.OFF) .logStartupInfo(false) + .web(WebApplicationType.SERVLET) .run(args); } } \ No newline at end of file diff --git a/framework/spring/spring-cloud/api-gateway/src/main/resources/application.yml b/framework/spring/spring-cloud/api-gateway/src/main/resources/application.yml new file mode 100644 index 000000000..f290c5f12 --- /dev/null +++ b/framework/spring/spring-cloud/api-gateway/src/main/resources/application.yml @@ -0,0 +1,10 @@ +server: + port: 5555 +spring: + application: + name: api-gateway + +eureka: + client: + service-url: + defaultZone: http://local-dev:1111/eureka/ \ No newline at end of file diff --git a/framework/spring/spring-cloud/consumer-hello/src/main/resources/application.properties b/framework/spring/spring-cloud/consumer-hello/src/main/resources/application.properties index 5bb0229be..d47c09188 100644 --- a/framework/spring/spring-cloud/consumer-hello/src/main/resources/application.properties +++ b/framework/spring/spring-cloud/consumer-hello/src/main/resources/application.properties @@ -1,3 +1,3 @@ -server.port=7000 +server.port=8000 spring.application.name=hello-consumer eureka.client.service-url.defaultZone=http://localhost:1111/eureka/ \ No newline at end of file diff --git a/framework/spring/spring-cloud/pom.xml b/framework/spring/spring-cloud/pom.xml index 860907ab9..ae9883df0 100644 --- a/framework/spring/spring-cloud/pom.xml +++ b/framework/spring/spring-cloud/pom.xml @@ -19,13 +19,16 @@ hystrix-dashboard config-server config-client - service-api + api-gateway + admin-dashboard UTF-8 UTF-8 1.8 + 2.0.2 + @@ -47,6 +50,19 @@ import + + de.codecentric + spring-boot-admin-starter-server + ${spring-boot-admin.version} + + + + + de.codecentric + spring-boot-admin-starter-client + ${spring-boot-admin.version} + + @@ -72,6 +88,13 @@ spring-boot-starter-test test + + + + org.jolokia + jolokia-core + + diff --git a/framework/spring/spring-cloud/register-center/pom.xml b/framework/spring/spring-cloud/register-center/pom.xml index 788b06cce..e65d24f94 100644 --- a/framework/spring/spring-cloud/register-center/pom.xml +++ b/framework/spring/spring-cloud/register-center/pom.xml @@ -25,6 +25,11 @@ spring-cloud-starter-netflix-eureka-server + + de.codecentric + spring-boot-admin-starter-server + + diff --git a/framework/spring/spring-cloud/register-center/src/main/java/org/laidu/learn/spring/cloud/eureka/RegisterCenterApp.java b/framework/spring/spring-cloud/register-center/src/main/java/org/laidu/learn/spring/cloud/eureka/RegisterCenterApp.java index f37f2201f..2c3fd584f 100644 --- a/framework/spring/spring-cloud/register-center/src/main/java/org/laidu/learn/spring/cloud/eureka/RegisterCenterApp.java +++ b/framework/spring/spring-cloud/register-center/src/main/java/org/laidu/learn/spring/cloud/eureka/RegisterCenterApp.java @@ -1,5 +1,6 @@ package org.laidu.learn.spring.cloud.eureka; +import de.codecentric.boot.admin.server.config.EnableAdminServer; import org.springframework.boot.Banner; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.boot.builder.SpringApplicationBuilder; @@ -8,6 +9,7 @@ /** * @author laidu */ +@EnableAdminServer @EnableEurekaServer @SpringBootApplication public class RegisterCenterApp { diff --git a/framework/spring/spring-cloud/register-center/src/main/resources/application.yml b/framework/spring/spring-cloud/register-center/src/main/resources/application.yml index 932b62ab7..c2e57d517 100644 --- a/framework/spring/spring-cloud/register-center/src/main/resources/application.yml +++ b/framework/spring/spring-cloud/register-center/src/main/resources/application.yml @@ -1,8 +1,39 @@ +spring: + boot: + admin: + client: + enabled: true + auto-registration: true + url: "http://local-dev:1111" + api-path: instances + ui: + cache: + no-store: true + notify: + mail: + to: tiancai.zang@finlink.net.cn + from: laidu823@sina.com + mail: + host: smtp.sina.com + username: laidu823@sina.com + password: ${sina_password} # 通过环境变量获取 + default-encoding: utf-8 + port: 465 + test-connection: true + properties: + mail: + smtp: + auth: true + starttls: + required: false + enable: false + ssl: + enable: true eureka: instance: - hostname: localhost + hostname: local-dev client: register-with-eureka: false fetch-registry: false diff --git a/framework/spring/spring-cloud/service-api/src/main/resources/application.yml b/framework/spring/spring-cloud/service-api/src/main/resources/application.yml deleted file mode 100644 index 9c56bece8..000000000 --- a/framework/spring/spring-cloud/service-api/src/main/resources/application.yml +++ /dev/null @@ -1,5 +0,0 @@ -server: - port: 5555 -spring: - application: - name: service-api diff --git a/framework/spring/spring-cloud/service-hello/src/main/resources/application.properties b/framework/spring/spring-cloud/service-hello/src/main/resources/application.properties index 2a277c34d..a2850c4aa 100644 --- a/framework/spring/spring-cloud/service-hello/src/main/resources/application.properties +++ b/framework/spring/spring-cloud/service-hello/src/main/resources/application.properties @@ -1,3 +1,3 @@ -server.port=8000 +server.port=8200 spring.application.name=hello-service eureka.client.service-url.defaultZone=http://local-dev:1111/eureka/ \ No newline at end of file From 45a74dfd2200448c3d4bfc9796510069ca1590e4 Mon Sep 17 00:00:00 2001 From: "xpcoder823@gmail.com" Date: Sun, 14 Oct 2018 23:21:13 +0800 Subject: [PATCH 186/417] sync --- framework/network/retrofit/pom.xml | 4 ---- .../admin-dashboard/src/main/resources/application.yml | 5 +++-- .../api-gateway/src/main/resources/application.yml | 2 +- .../config-server/src/main/resources/application.properties | 2 +- .../consumer-hello/src/main/resources/application.properties | 2 +- framework/spring/spring-cloud/pom.xml | 2 +- .../register-center/src/main/resources/application.yml | 2 +- .../service-hello/src/main/resources/application.properties | 2 +- 8 files changed, 9 insertions(+), 12 deletions(-) diff --git a/framework/network/retrofit/pom.xml b/framework/network/retrofit/pom.xml index b139566b0..a345cf9fe 100644 --- a/framework/network/retrofit/pom.xml +++ b/framework/network/retrofit/pom.xml @@ -22,10 +22,6 @@ com.squareup.retrofit2 retrofit - - - - xyz.xpcoder.common.retrofit2 diff --git a/framework/spring/spring-cloud/admin-dashboard/src/main/resources/application.yml b/framework/spring/spring-cloud/admin-dashboard/src/main/resources/application.yml index adc317897..0721d233e 100644 --- a/framework/spring/spring-cloud/admin-dashboard/src/main/resources/application.yml +++ b/framework/spring/spring-cloud/admin-dashboard/src/main/resources/application.yml @@ -1,5 +1,6 @@ spring: - application: admin-dashboard + application: + name: admin-dashboard jackson: property-naming-strategy: SNAKE_CASE boot: @@ -76,4 +77,4 @@ server: eureka: client: service-url: - defaultZone: http://local-dev:1111/eureka/ \ No newline at end of file + defaultZone: http://admin:admin@local-dev:8761/eureka/ \ No newline at end of file diff --git a/framework/spring/spring-cloud/api-gateway/src/main/resources/application.yml b/framework/spring/spring-cloud/api-gateway/src/main/resources/application.yml index f290c5f12..ece279240 100644 --- a/framework/spring/spring-cloud/api-gateway/src/main/resources/application.yml +++ b/framework/spring/spring-cloud/api-gateway/src/main/resources/application.yml @@ -7,4 +7,4 @@ spring: eureka: client: service-url: - defaultZone: http://local-dev:1111/eureka/ \ No newline at end of file + defaultZone: http://admin:admin@local-dev:8761/eureka/ \ No newline at end of file diff --git a/framework/spring/spring-cloud/config-server/src/main/resources/application.properties b/framework/spring/spring-cloud/config-server/src/main/resources/application.properties index 20d81aca9..0248346cc 100644 --- a/framework/spring/spring-cloud/config-server/src/main/resources/application.properties +++ b/framework/spring/spring-cloud/config-server/src/main/resources/application.properties @@ -1,7 +1,7 @@ spring.application.name=config-server server.port=7001 -eureka.client.service-url.defaultZone=http://local-dev:1111/eureka/ +eureka.client.service-url.defaultZone=http://admin:admin@local-dev:8761/eureka/ spring.cloud.config.server.git.uri=https://github.com/laidu/cloud-conf-demo.git spring.cloud.config.server.git.seaxrch-paths=/ \ No newline at end of file diff --git a/framework/spring/spring-cloud/consumer-hello/src/main/resources/application.properties b/framework/spring/spring-cloud/consumer-hello/src/main/resources/application.properties index d47c09188..4d534d9b0 100644 --- a/framework/spring/spring-cloud/consumer-hello/src/main/resources/application.properties +++ b/framework/spring/spring-cloud/consumer-hello/src/main/resources/application.properties @@ -1,3 +1,3 @@ server.port=8000 spring.application.name=hello-consumer -eureka.client.service-url.defaultZone=http://localhost:1111/eureka/ \ No newline at end of file +eureka.client.service-url.defaultZone=http://admin:admin@local-dev:8761/eureka/ \ No newline at end of file diff --git a/framework/spring/spring-cloud/pom.xml b/framework/spring/spring-cloud/pom.xml index ae9883df0..be2e4c081 100644 --- a/framework/spring/spring-cloud/pom.xml +++ b/framework/spring/spring-cloud/pom.xml @@ -26,7 +26,7 @@ UTF-8 UTF-8 - 1.8 + 11 2.0.2 diff --git a/framework/spring/spring-cloud/register-center/src/main/resources/application.yml b/framework/spring/spring-cloud/register-center/src/main/resources/application.yml index c2e57d517..e691e9600 100644 --- a/framework/spring/spring-cloud/register-center/src/main/resources/application.yml +++ b/framework/spring/spring-cloud/register-center/src/main/resources/application.yml @@ -5,7 +5,7 @@ spring: client: enabled: true auto-registration: true - url: "http://local-dev:1111" + url: "http://local-dev:8761" api-path: instances ui: cache: diff --git a/framework/spring/spring-cloud/service-hello/src/main/resources/application.properties b/framework/spring/spring-cloud/service-hello/src/main/resources/application.properties index a2850c4aa..679557355 100644 --- a/framework/spring/spring-cloud/service-hello/src/main/resources/application.properties +++ b/framework/spring/spring-cloud/service-hello/src/main/resources/application.properties @@ -1,3 +1,3 @@ server.port=8200 spring.application.name=hello-service -eureka.client.service-url.defaultZone=http://local-dev:1111/eureka/ \ No newline at end of file +eureka.client.service-url.defaultZone=http://admin:admin@local-dev:8761/eureka/ \ No newline at end of file From 0abb2d137001fa25159abb7c0caaad799022da2d Mon Sep 17 00:00:00 2001 From: Tiancai ZANG Date: Mon, 15 Oct 2018 16:55:27 +0800 Subject: [PATCH 187/417] ignore target --- .../elasticsearch/config/elasticsearch.yml | 2 +- .../resources/docker/elk/elasticsearch/es.sh | 2 +- dev-ops/src/main/resources/docker/elk/hosts | 6 +++--- .../docker/elk/kibana/config/kibana.yml | 6 +++--- .../spring-cloud/admin-dashboard/pom.xml | 8 +++---- .../learn/spring/boot/admin/AdminApp.java | 11 ++++++++++ .../src/main/resources/application.yml | 2 +- framework/spring/spring-cloud/pom.xml | 21 ++++++++++++++++++- .../src/main/resources/application.yml | 6 ++++-- .../spring/spring-cloud/service-hello/pom.xml | 5 +++++ .../src/main/resources/application.properties | 4 +++- 11 files changed, 56 insertions(+), 17 deletions(-) diff --git a/dev-ops/src/main/resources/docker/elk/elasticsearch/config/elasticsearch.yml b/dev-ops/src/main/resources/docker/elk/elasticsearch/config/elasticsearch.yml index f9cff2e4a..cce586f15 100644 --- a/dev-ops/src/main/resources/docker/elk/elasticsearch/config/elasticsearch.yml +++ b/dev-ops/src/main/resources/docker/elk/elasticsearch/config/elasticsearch.yml @@ -1,5 +1,5 @@ cluster.name: "docker-cluster" -network.host: es.finlink.net.cn +network.host: es.xpcoder.xyz # minimum_master_nodes need to be explicitly set when bound on a public IP # set to 1 to allow single node clusters diff --git a/dev-ops/src/main/resources/docker/elk/elasticsearch/es.sh b/dev-ops/src/main/resources/docker/elk/elasticsearch/es.sh index db2978c80..d04258801 100755 --- a/dev-ops/src/main/resources/docker/elk/elasticsearch/es.sh +++ b/dev-ops/src/main/resources/docker/elk/elasticsearch/es.sh @@ -11,7 +11,7 @@ docker run --rm -d --name es-dev \ -p 9300:9300 \ -e cluster.name=${cluster_name} \ -e discovery.type=single-node \ - -e ELASTIC_PASSWORD=Pa88word.123 \ + -e ELASTIC_PASSWORD=elastic \ -e ES_JAVA_OPTS="-Xms3g -Xmx3g" \ -v ${es_root}/config/elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml \ -v ${es_root}/data:/usr/share/elasticsearch/data \ diff --git a/dev-ops/src/main/resources/docker/elk/hosts b/dev-ops/src/main/resources/docker/elk/hosts index 91b65bd81..59226fdf9 100644 --- a/dev-ops/src/main/resources/docker/elk/hosts +++ b/dev-ops/src/main/resources/docker/elk/hosts @@ -1,3 +1,3 @@ -192.168.0.198 es.finlink.net.cn -192.168.0.198 es2.finlink.net.cn -192.168.0.198 kibana.finlink.net.cn \ No newline at end of file +192.168.0.198 es.xpcoder.xyz +192.168.0.198 es2.xpcoder.xyz +192.168.0.198 kibana.xpcoder.xyz \ No newline at end of file diff --git a/dev-ops/src/main/resources/docker/elk/kibana/config/kibana.yml b/dev-ops/src/main/resources/docker/elk/kibana/config/kibana.yml index 874e33302..8d97512d8 100644 --- a/dev-ops/src/main/resources/docker/elk/kibana/config/kibana.yml +++ b/dev-ops/src/main/resources/docker/elk/kibana/config/kibana.yml @@ -1,8 +1,8 @@ # Default Kibana configuration from kibana-docker. server.name: kibana -server.host: "kibana.finlink.net.cn" -elasticsearch.url: http://es.finlink.net.cn:9200 +server.host: "kibana.xpcoder.xyz" +elasticsearch.url: http://es.xpcoder.xyz:9200 elasticsearch.username: elastic -elasticsearch.password: Pa88word.123 +elasticsearch.password: elastic xpack.monitoring.ui.container.elasticsearch.enabled: true \ No newline at end of file diff --git a/framework/spring/spring-cloud/admin-dashboard/pom.xml b/framework/spring/spring-cloud/admin-dashboard/pom.xml index d740b64a1..686fd14e4 100644 --- a/framework/spring/spring-cloud/admin-dashboard/pom.xml +++ b/framework/spring/spring-cloud/admin-dashboard/pom.xml @@ -41,10 +41,10 @@ - - - - + + org.springframework.boot + spring-boot-starter-security + org.springframework.boot diff --git a/framework/spring/spring-cloud/admin-dashboard/src/main/java/org/laidu/learn/spring/boot/admin/AdminApp.java b/framework/spring/spring-cloud/admin-dashboard/src/main/java/org/laidu/learn/spring/boot/admin/AdminApp.java index 9463eac4b..d3835672c 100644 --- a/framework/spring/spring-cloud/admin-dashboard/src/main/java/org/laidu/learn/spring/boot/admin/AdminApp.java +++ b/framework/spring/spring-cloud/admin-dashboard/src/main/java/org/laidu/learn/spring/boot/admin/AdminApp.java @@ -7,6 +7,8 @@ import org.springframework.boot.builder.SpringApplicationBuilder; import org.springframework.cloud.client.discovery.EnableDiscoveryClient; import org.springframework.context.annotation.Configuration; +import org.springframework.security.config.annotation.web.builders.HttpSecurity; +import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter; /** * spring boot admin @@ -21,6 +23,15 @@ @EnableAdminServer public class AdminApp { + @Configuration + public static class SecurityPermitAllConfig extends WebSecurityConfigurerAdapter { + @Override + protected void configure(HttpSecurity http) throws Exception { + http.authorizeRequests().anyRequest().permitAll() + .and().csrf().disable(); + } + } + public static void main(String[] args) { new SpringApplicationBuilder(AdminApp.class) diff --git a/framework/spring/spring-cloud/admin-dashboard/src/main/resources/application.yml b/framework/spring/spring-cloud/admin-dashboard/src/main/resources/application.yml index 0721d233e..c9805766d 100644 --- a/framework/spring/spring-cloud/admin-dashboard/src/main/resources/application.yml +++ b/framework/spring/spring-cloud/admin-dashboard/src/main/resources/application.yml @@ -15,7 +15,7 @@ spring: no-store: true notify: mail: - to: tiancai.zang@finlink.net.cn + to: tiancai.zang@xpcoder.xyz from: laidu823@sina.com mail: host: smtp.sina.com diff --git a/framework/spring/spring-cloud/pom.xml b/framework/spring/spring-cloud/pom.xml index be2e4c081..1d2be289f 100644 --- a/framework/spring/spring-cloud/pom.xml +++ b/framework/spring/spring-cloud/pom.xml @@ -27,7 +27,7 @@ UTF-8 UTF-8 11 - 2.0.2 + 2.0.3 @@ -68,6 +68,8 @@ + + org.springframework.boot spring-boot-starter-actuator @@ -95,6 +97,7 @@ jolokia-core + @@ -108,6 +111,22 @@ + + + + org.springframework.boot + spring-boot-maven-plugin + + + + build-info + + + + + + + \ No newline at end of file diff --git a/framework/spring/spring-cloud/register-center/src/main/resources/application.yml b/framework/spring/spring-cloud/register-center/src/main/resources/application.yml index e691e9600..fb60be0cc 100644 --- a/framework/spring/spring-cloud/register-center/src/main/resources/application.yml +++ b/framework/spring/spring-cloud/register-center/src/main/resources/application.yml @@ -12,7 +12,7 @@ spring: no-store: true notify: mail: - to: tiancai.zang@finlink.net.cn + to: tiancai.zang@xpcoder.xyz from: laidu823@sina.com mail: host: smtp.sina.com @@ -32,6 +32,8 @@ spring: enable: true eureka: + server: + enable-self-preservation: false instance: hostname: local-dev client: @@ -62,4 +64,4 @@ management: exposure: include: "*" server: - port: 1111 + port: 8761 diff --git a/framework/spring/spring-cloud/service-hello/pom.xml b/framework/spring/spring-cloud/service-hello/pom.xml index 230518b75..1d89fdbf7 100644 --- a/framework/spring/spring-cloud/service-hello/pom.xml +++ b/framework/spring/spring-cloud/service-hello/pom.xml @@ -23,6 +23,11 @@ spring-cloud-starter-netflix-eureka-client + + de.codecentric + spring-boot-admin-starter-client + + org.springframework.boot spring-boot-starter-web-services diff --git a/framework/spring/spring-cloud/service-hello/src/main/resources/application.properties b/framework/spring/spring-cloud/service-hello/src/main/resources/application.properties index 679557355..b2aa6e04e 100644 --- a/framework/spring/spring-cloud/service-hello/src/main/resources/application.properties +++ b/framework/spring/spring-cloud/service-hello/src/main/resources/application.properties @@ -1,3 +1,5 @@ server.port=8200 spring.application.name=hello-service -eureka.client.service-url.defaultZone=http://admin:admin@local-dev:8761/eureka/ \ No newline at end of file +eureka.client.service-url.defaultZone=http://admin:admin@local-dev:8761/eureka/ + +spring.boot.admin.client.url= http://local-dev:2222 \ No newline at end of file From 1605c806d890bb4dc6693b4b34ed037462ae8b7f Mon Sep 17 00:00:00 2001 From: Tiancai ZANG Date: Tue, 16 Oct 2018 19:04:21 +0800 Subject: [PATCH 188/417] start java concurrent --- .../cyclic/barrier/CyclicBarrierWorker.java | 1 - .../learn/concurrent/pool/ThreadPoolDemo.java | 1 - .../concurrent/problem/TwoThreadRun.java | 125 ++++++++++++++++++ .../concurrent/semaphore/KengSemaphore.java | 23 ++-- .../concurrent/src/site/markdown/index.md | 30 ++++- 5 files changed, 165 insertions(+), 15 deletions(-) create mode 100644 language-advance/concurrent/src/main/java/org/laidu/learn/concurrent/problem/TwoThreadRun.java diff --git a/language-advance/concurrent/src/main/java/org/laidu/learn/concurrent/cyclic/barrier/CyclicBarrierWorker.java b/language-advance/concurrent/src/main/java/org/laidu/learn/concurrent/cyclic/barrier/CyclicBarrierWorker.java index 689d05f61..330074d9e 100644 --- a/language-advance/concurrent/src/main/java/org/laidu/learn/concurrent/cyclic/barrier/CyclicBarrierWorker.java +++ b/language-advance/concurrent/src/main/java/org/laidu/learn/concurrent/cyclic/barrier/CyclicBarrierWorker.java @@ -9,7 +9,6 @@ *

                    * Created by 臧天才 on 2017-09-21 18:16. */ -// : 2017-09-21 18:16 cyclicBarrier worker public class CyclicBarrierWorker implements Runnable { private String id; diff --git a/language-advance/concurrent/src/main/java/org/laidu/learn/concurrent/pool/ThreadPoolDemo.java b/language-advance/concurrent/src/main/java/org/laidu/learn/concurrent/pool/ThreadPoolDemo.java index e54bd409b..3429ba4f2 100644 --- a/language-advance/concurrent/src/main/java/org/laidu/learn/concurrent/pool/ThreadPoolDemo.java +++ b/language-advance/concurrent/src/main/java/org/laidu/learn/concurrent/pool/ThreadPoolDemo.java @@ -16,7 +16,6 @@ * * @author laidu */ -// TODO: 2018-08-03 16:15 线程池 public class ThreadPoolDemo { diff --git a/language-advance/concurrent/src/main/java/org/laidu/learn/concurrent/problem/TwoThreadRun.java b/language-advance/concurrent/src/main/java/org/laidu/learn/concurrent/problem/TwoThreadRun.java new file mode 100644 index 000000000..54083ac67 --- /dev/null +++ b/language-advance/concurrent/src/main/java/org/laidu/learn/concurrent/problem/TwoThreadRun.java @@ -0,0 +1,125 @@ +package org.laidu.learn.concurrent.problem; + +import jodd.util.ThreadUtil; +import lombok.AllArgsConstructor; +import lombok.extern.slf4j.Slf4j; + +import java.util.concurrent.*; +import java.util.concurrent.atomic.AtomicInteger; +import java.util.function.Predicate; + +/** + * 创建两个线程ThreadA ThreadB,使其循环依次打印 ABABAB... + * + * @author tiancai.zang + * on 2018-10-16 14:14. + */ +@Slf4j +public class TwoThreadRun { + + public static void main(String[] args) throws InterruptedException { + + int threadSize = 3; + + CyclicBarrier barrier = new CyclicBarrier(threadSize, () -> System.out.println("")); + + AtomicInteger atomicInteger = new AtomicInteger(0); + +// Printer printerA = new Printer("A", atomicInteger, integer -> integer % threadSize == 0); +// Printer printerB = new Printer("B", atomicInteger, integer -> integer % threadSize == 1); +// Printer printerC = new Printer("C", atomicInteger, integer -> integer % threadSize == 2); + + + Semaphore semA = new Semaphore(1); + Semaphore semB = new Semaphore(1); + Semaphore semC = new Semaphore(1); + +// semA.acquire(); //从 A 开始输出 + semB.acquire(); + semC.acquire(); + + Printer1 printerA = new Printer1("A", semA, semB,barrier); + Printer1 printerB = new Printer1("B", semB, semC,barrier); + Printer1 printerC = new Printer1("C", semC, semA,barrier); + + Thread threadA = new Thread(printerA); + Thread threadB = new Thread(printerB); + Thread threadC = new Thread(printerC); + + ExecutorService executorService = new ThreadPoolExecutor(threadSize, threadSize, + 0L, TimeUnit.MILLISECONDS, + new LinkedBlockingQueue<>(), (ThreadFactory) Thread::new); + + executorService.submit(threadA); + executorService.submit(threadB); + executorService.submit(threadC); + + + } + + /** + * 使用 AtomicInteger 或者 ReentrantLock+Integer + */ + @AllArgsConstructor + public static class Printer implements Runnable { + + private final String note; + + private final AtomicInteger atomicInteger; + + private Predicate predicate; + + @Override + public void run() { + + while (true) { + + if (predicate.test(atomicInteger.get())) { + System.out.print(note + "\t"); + atomicInteger.getAndIncrement(); + ThreadUtil.sleep(500); + } else { + atomicInteger.set(atomicInteger.intValue() % 3); + } + } + } + } + + /** + * 使用 Semaphore + */ + @AllArgsConstructor + public static class Printer1 implements Runnable { + + private final String note; + + private final Semaphore self; + + private final Semaphore next; + + private CyclicBarrier barrier; + + @Override + public void run() { + + while (true) { + + try { + + barrier.await(); + + ThreadUtil.sleep(500); + self.acquire(); + + System.out.print(note + "\t"); + + next.release(); + + } catch (Exception e) { + + } + } + + } + } +} \ No newline at end of file diff --git a/language-advance/concurrent/src/main/java/org/laidu/learn/concurrent/semaphore/KengSemaphore.java b/language-advance/concurrent/src/main/java/org/laidu/learn/concurrent/semaphore/KengSemaphore.java index c9d521a4c..5053b69dd 100644 --- a/language-advance/concurrent/src/main/java/org/laidu/learn/concurrent/semaphore/KengSemaphore.java +++ b/language-advance/concurrent/src/main/java/org/laidu/learn/concurrent/semaphore/KengSemaphore.java @@ -1,9 +1,7 @@ package org.laidu.learn.concurrent.semaphore; -import java.util.concurrent.ExecutorService; -import java.util.concurrent.Executors; -import java.util.concurrent.Semaphore; +import java.util.concurrent.*; import java.util.stream.IntStream; /** @@ -12,7 +10,6 @@ * Created by 臧天才 on 2017-09-21 18:43. */ -// TODO : 2017-09-21 18:43 keng semaohore public class KengSemaphore { public static void main(String[] args) { @@ -20,25 +17,27 @@ public static void main(String[] args) { int threadNum = 10; Semaphore semaphore = new Semaphore(1); - ExecutorService executorService = Executors.newFixedThreadPool(threadNum); + ExecutorService executorService = new ThreadPoolExecutor(threadNum, threadNum, + 0L, TimeUnit.MILLISECONDS, + new LinkedBlockingQueue()); - IntStream.range(0, 10).boxed() - .peek(a -> executorService.submit(() -> { + IntStream.range(0, 10) + .forEach(a -> executorService.submit(() -> { try { System.out.println(String.format("=============thread id : %s waiting acquire ===============", Thread.currentThread().getId())); semaphore.acquire(); System.out.println(String.format("=============thread id : %s got acquire ===============", Thread.currentThread().getId())); - Thread.sleep(1000); + Thread.sleep(500); } catch (InterruptedException e) { e.printStackTrace(); } finally { -// semaphore.release(); + semaphore.release(); System.out.println(String.format("=============thread id : %s released acquire ===============", Thread.currentThread().getId())); } - })) - .count(); + })); - executorService.shutdown(); + +// executorService.shutdownNow(); } } diff --git a/language-advance/concurrent/src/site/markdown/index.md b/language-advance/concurrent/src/site/markdown/index.md index 261900092..67a4f74bb 100644 --- a/language-advance/concurrent/src/site/markdown/index.md +++ b/language-advance/concurrent/src/site/markdown/index.md @@ -1,5 +1,33 @@ -# java 并发学习 +# java 8 并发学习 +## 1 并发基础 + +### 1.1 背景 +### 1.2 相关概念 + +## 2 jmm 内存模型 + +### 2.1 jmm 简介 +### 2.2 jmm 重要组成 + +## 3 java 并发 api + +### 3.1 jdk8 并发包介绍 +### 3.2 常用并发api介绍 +### 3.3 并发集合 + +## 4 java 并发实现 + + +## 5 java 并发常见问题 + + +参考: +* __[java核心技术(第10版-上)]():__ +* __[深入理解Java虚拟机:JVM高级特性与最佳实践(最新第二版)]():__ * __[Fork/Join框架](fork-join.md):__ Fork/Join框架是Java7提供了的一个用于并行执行任务的框架, 是一个把大任务分割成若干个小任务,最终汇总每个小任务结果后得到大任务结果的框架。 * __[java 闭锁(latch)与栅栏(cyclicBarrier) ](latch-cyclicBarrier.md):__ +* __[]():__ +* __[]():__ +* __[]():__ * __[]():__ \ No newline at end of file From fbdf4ca05c27710697c1967f3213fff860eda120 Mon Sep 17 00:00:00 2001 From: Tiancai ZANG Date: Tue, 16 Oct 2018 20:02:08 +0800 Subject: [PATCH 189/417] start java concurrent --- .../java/org/laidu/learn/concurrent/latch/LatchWorker.java | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/language-advance/concurrent/src/main/java/org/laidu/learn/concurrent/latch/LatchWorker.java b/language-advance/concurrent/src/main/java/org/laidu/learn/concurrent/latch/LatchWorker.java index 83b5f6ebe..c82b3352a 100644 --- a/language-advance/concurrent/src/main/java/org/laidu/learn/concurrent/latch/LatchWorker.java +++ b/language-advance/concurrent/src/main/java/org/laidu/learn/concurrent/latch/LatchWorker.java @@ -11,9 +11,10 @@ /** * runner *

                    - * Created by 臧天才 on 2017-09-21 17:33. + * + * @author 臧天才 + * @date 2017-09-21 17:33 */ -// : 2017-09-21 17:33 worker public class LatchWorker implements Runnable { private String id; From b852c88ac740cc813da5c32c391425d732edd15d Mon Sep 17 00:00:00 2001 From: Tiancai ZANG Date: Wed, 17 Oct 2018 19:46:03 +0800 Subject: [PATCH 190/417] start java concurrent --- language-advance/concurrent/pom.xml | 8 ++ .../concurrent/problem/ObtainFastRes.java | 81 +++++++++++++++++++ 2 files changed, 89 insertions(+) create mode 100644 language-advance/concurrent/src/main/java/org/laidu/learn/concurrent/problem/ObtainFastRes.java diff --git a/language-advance/concurrent/pom.xml b/language-advance/concurrent/pom.xml index e9ebf457b..12e71c2de 100644 --- a/language-advance/concurrent/pom.xml +++ b/language-advance/concurrent/pom.xml @@ -10,6 +10,14 @@ 4.0.0 concurrent + + + org.jetbrains + annotations + 16.0.2 + compile + + \ No newline at end of file diff --git a/language-advance/concurrent/src/main/java/org/laidu/learn/concurrent/problem/ObtainFastRes.java b/language-advance/concurrent/src/main/java/org/laidu/learn/concurrent/problem/ObtainFastRes.java new file mode 100644 index 000000000..c4fbe6739 --- /dev/null +++ b/language-advance/concurrent/src/main/java/org/laidu/learn/concurrent/problem/ObtainFastRes.java @@ -0,0 +1,81 @@ +package org.laidu.learn.concurrent.problem; + +import jodd.util.ThreadUtil; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.extern.slf4j.Slf4j; +import org.apache.commons.lang3.RandomUtils; +import org.jetbrains.annotations.NotNull; + +import java.util.Arrays; +import java.util.List; +import java.util.concurrent.Callable; +import java.util.concurrent.ExecutionException; +import java.util.concurrent.Executors; + +/** + * 并发返回最快结果 + * + * @author tiancai.zang + * on 2018-10-17 18:37. + */ +@Slf4j +public class ObtainFastRes { + + + /** + * 模拟网络相应 + * + * @param workerName + * @return + */ + public static String doWork(String workerName) { + + int sleep = RandomUtils.nextInt(500, 1000); + + log.info("workname {}, sleep: {}", workerName,sleep); + ThreadUtil.sleep(sleep); + + return workerName + "_" + sleep; + } + + public static void main(String[] args) throws InterruptedException, ExecutionException { + + Worker a = new Worker("a"); + Worker b = new Worker("b"); + Worker c = new Worker("c"); + + List> tasks = Arrays.asList(a, b, c); + + String s = runAndReturnFast(tasks); + + System.out.println(s); + + } + + + + /** + * jdk 线程 自带方法, 返回多个线程中最快的结果 + * @param tasks + * @return + * @throws InterruptedException + * @throws ExecutionException + */ + @NotNull + public static String runAndReturnFast(List> tasks) throws InterruptedException, ExecutionException { + return Executors.newFixedThreadPool(3).invokeAny(tasks); + } + + @AllArgsConstructor + @Data + static class Worker implements Callable { + + private final String name; + + @Override + public String call() throws Exception { + return doWork(this.name); + } + } +} \ No newline at end of file From 97d991adaded5c2548cfa21c27694e9e4b53aafb Mon Sep 17 00:00:00 2001 From: Tiancai ZANG Date: Thu, 18 Oct 2018 19:32:30 +0800 Subject: [PATCH 191/417] . --- .../concurrent/problem/ObtainFastRes.java | 46 ++++++++++++++----- 1 file changed, 34 insertions(+), 12 deletions(-) diff --git a/language-advance/concurrent/src/main/java/org/laidu/learn/concurrent/problem/ObtainFastRes.java b/language-advance/concurrent/src/main/java/org/laidu/learn/concurrent/problem/ObtainFastRes.java index c4fbe6739..aaf69ebf2 100644 --- a/language-advance/concurrent/src/main/java/org/laidu/learn/concurrent/problem/ObtainFastRes.java +++ b/language-advance/concurrent/src/main/java/org/laidu/learn/concurrent/problem/ObtainFastRes.java @@ -9,9 +9,7 @@ import java.util.Arrays; import java.util.List; -import java.util.concurrent.Callable; -import java.util.concurrent.ExecutionException; -import java.util.concurrent.Executors; +import java.util.concurrent.*; /** * 并发返回最快结果 @@ -24,14 +22,14 @@ public class ObtainFastRes { /** - * 模拟网络相应 + * 模拟网络延迟 * * @param workerName * @return */ public static String doWork(String workerName) { - int sleep = RandomUtils.nextInt(500, 1000); + int sleep = RandomUtils.nextInt(1500, 2000); log.info("workname {}, sleep: {}", workerName,sleep); ThreadUtil.sleep(sleep); @@ -41,12 +39,13 @@ public static String doWork(String workerName) { public static void main(String[] args) throws InterruptedException, ExecutionException { - Worker a = new Worker("a"); - Worker b = new Worker("b"); - Worker c = new Worker("c"); + Work a = new Work("a"); + Work b = new Work("b"); + Work c = new Work("c"); List> tasks = Arrays.asList(a, b, c); + String s = runAndReturnFast(tasks); System.out.println(s); @@ -54,7 +53,6 @@ public static void main(String[] args) throws InterruptedException, ExecutionExc } - /** * jdk 线程 自带方法, 返回多个线程中最快的结果 * @param tasks @@ -64,12 +62,35 @@ public static void main(String[] args) throws InterruptedException, ExecutionExc */ @NotNull public static String runAndReturnFast(List> tasks) throws InterruptedException, ExecutionException { - return Executors.newFixedThreadPool(3).invokeAny(tasks); + + ThreadPoolExecutor poolExecutor = new ThreadPoolExecutor(tasks.size(), tasks.size(), + 0L, TimeUnit.MILLISECONDS, + new LinkedBlockingQueue<>(), Thread::new, new ThreadPoolExecutor.AbortPolicy()); + + // 执行顺序 1>3>2 + try { + /* + step 1 : + */ + String resultFast = poolExecutor.invokeAny(tasks); + + /* + step 2 : + */ + return resultFast; + }finally { + + /* + step 3 : + */ + poolExecutor.shutdown(); + } + } - @AllArgsConstructor @Data - static class Worker implements Callable { + @AllArgsConstructor + static class Work implements Callable { private final String name; @@ -78,4 +99,5 @@ public String call() throws Exception { return doWork(this.name); } } + } \ No newline at end of file From 35ff354445182b83007690ea0df53bfa0069924c Mon Sep 17 00:00:00 2001 From: Tiancai ZANG Date: Fri, 19 Oct 2018 18:53:03 +0800 Subject: [PATCH 192/417] add CyclicBarrier demo --- .../laidu/learn/concurrent/common/Worker.java | 37 ++++++++ .../cyclic/barrier/CyclicBarrierWorker.java | 84 ------------------- .../cyclic/barrier/package-info.java | 7 -- .../concurrent/problem/CreateThread.java | 83 ++++++++++++++++++ .../concurrent/problem/package-info.java | 10 +++ .../synchronizer/CyclicBarrierDemo.java | 70 ++++++++++++++++ .../concurrent/synchronizer/package-info.java | 10 +++ .../concurrent/src/site/markdown/index.md | 13 ++- 8 files changed, 220 insertions(+), 94 deletions(-) create mode 100644 language-advance/concurrent/src/main/java/org/laidu/learn/concurrent/common/Worker.java delete mode 100644 language-advance/concurrent/src/main/java/org/laidu/learn/concurrent/cyclic/barrier/CyclicBarrierWorker.java delete mode 100644 language-advance/concurrent/src/main/java/org/laidu/learn/concurrent/cyclic/barrier/package-info.java create mode 100644 language-advance/concurrent/src/main/java/org/laidu/learn/concurrent/problem/CreateThread.java create mode 100644 language-advance/concurrent/src/main/java/org/laidu/learn/concurrent/problem/package-info.java create mode 100644 language-advance/concurrent/src/main/java/org/laidu/learn/concurrent/synchronizer/CyclicBarrierDemo.java create mode 100644 language-advance/concurrent/src/main/java/org/laidu/learn/concurrent/synchronizer/package-info.java diff --git a/language-advance/concurrent/src/main/java/org/laidu/learn/concurrent/common/Worker.java b/language-advance/concurrent/src/main/java/org/laidu/learn/concurrent/common/Worker.java new file mode 100644 index 000000000..d95817e6c --- /dev/null +++ b/language-advance/concurrent/src/main/java/org/laidu/learn/concurrent/common/Worker.java @@ -0,0 +1,37 @@ +package org.laidu.learn.concurrent.common; + +import jodd.util.ThreadUtil; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.extern.slf4j.Slf4j; +import org.apache.commons.lang3.RandomUtils; + +import java.util.UUID; + +/** + * demo 线程 + * + * @author tiancai.zang + * on 2018-10-19 17:25. + */ +@Slf4j +@AllArgsConstructor +@Data +public class Worker implements Runnable{ + + private String name; + + @Override + public void run() { + doWork(); + } + + protected String doWork() { + + int sleep = RandomUtils.nextInt(500, 1000); + ThreadUtil.sleep(sleep); + log.info("sleep time: {}", sleep); + + return UUID.randomUUID().toString(); + } +} \ No newline at end of file diff --git a/language-advance/concurrent/src/main/java/org/laidu/learn/concurrent/cyclic/barrier/CyclicBarrierWorker.java b/language-advance/concurrent/src/main/java/org/laidu/learn/concurrent/cyclic/barrier/CyclicBarrierWorker.java deleted file mode 100644 index 330074d9e..000000000 --- a/language-advance/concurrent/src/main/java/org/laidu/learn/concurrent/cyclic/barrier/CyclicBarrierWorker.java +++ /dev/null @@ -1,84 +0,0 @@ -package org.laidu.learn.concurrent.cyclic.barrier; - - -import java.util.concurrent.*; -import java.util.stream.IntStream; - -/** - * cyclicBarrier worker - *

                    - * Created by 臧天才 on 2017-09-21 18:16. - */ -public class CyclicBarrierWorker implements Runnable { - - private String id; - - private CyclicBarrier cyclicBarrier; - - private CountDownLatch startDownlatch; - - public CyclicBarrierWorker(String id, CyclicBarrier cyclicBarrier, CountDownLatch startDownlatch) { - this.id = id; - this.cyclicBarrier = cyclicBarrier; - this.startDownlatch = startDownlatch; - } - - @Override - public void run() { - - try { - startDownlatch.await(); - } catch (InterruptedException e) { - e.printStackTrace(); - } - - arrive(); - - try { - gather(); - } catch (BrokenBarrierException e) { - e.printStackTrace(); - } catch (InterruptedException e) { - e.printStackTrace(); - } - - work(); - } - - private void arrive() { - System.out.println(String.format("======== %s : arrived =========", id)); - } - - private void gather() throws BrokenBarrierException, InterruptedException { - cyclicBarrier.await(); - System.out.println(String.format("======== %s : wait for gather =========", id)); - } - - private void work() { - System.out.println(String.format("======== %s : work =========", id)); - } - - - public static void main(String[] args) { - - int workerCount = 10; - - CountDownLatch startDownLatch = new CountDownLatch(1); - - CyclicBarrier cyclicBarrier = new CyclicBarrier(workerCount); - - ExecutorService executorService = Executors.newFixedThreadPool(workerCount); - - IntStream.range(0, 10).boxed() - .peek(a -> executorService.submit(new CyclicBarrierWorker("worker_" + a, cyclicBarrier, startDownLatch))) - .count(); - - System.out.println("============start all work============"); - - startDownLatch.countDown(); - - executorService.shutdown(); - - System.out.println("=============all work stopped=============="); - } -} diff --git a/language-advance/concurrent/src/main/java/org/laidu/learn/concurrent/cyclic/barrier/package-info.java b/language-advance/concurrent/src/main/java/org/laidu/learn/concurrent/cyclic/barrier/package-info.java deleted file mode 100644 index 8bae64f7e..000000000 --- a/language-advance/concurrent/src/main/java/org/laidu/learn/concurrent/cyclic/barrier/package-info.java +++ /dev/null @@ -1,7 +0,0 @@ -/** - * java cyclicBarrier 栅栏 - *

                    - * Created by Intellij idea on 2017-09-21 17:14. - */ -// TODO : 2017-09-21 17:14 java cyclicBarrier 栅栏 -package org.laidu.learn.concurrent.cyclic.barrier; \ No newline at end of file diff --git a/language-advance/concurrent/src/main/java/org/laidu/learn/concurrent/problem/CreateThread.java b/language-advance/concurrent/src/main/java/org/laidu/learn/concurrent/problem/CreateThread.java new file mode 100644 index 000000000..ae489cc30 --- /dev/null +++ b/language-advance/concurrent/src/main/java/org/laidu/learn/concurrent/problem/CreateThread.java @@ -0,0 +1,83 @@ +package org.laidu.learn.concurrent.problem; + +import jodd.util.ThreadUtil; +import lombok.extern.slf4j.Slf4j; +import org.apache.commons.lang3.RandomUtils; + +import java.util.UUID; +import java.util.concurrent.Callable; +import java.util.concurrent.FutureTask; + +/** + * java 创建线程的方式 + * + * + * @author tiancai.zang + * on 2018-10-19 15:05. + */ +@Slf4j +public class CreateThread { + + + /** + * 通过 继承 Thread 实现 + */ + static class WorkerByExtend extends Thread{ + @Override + public void run() { + doWork(); + } + } + + /** + * 通过 实现 Runnable 接口实现 无返回值 + */ + static class WorkerByImpl implements Runnable{ + + @Override + public void run() { + doWork(); + } + } + + /** + * 通过 实现 Callable 接口实现有返回值 + */ + static class WorkerByReturn implements Callable { + + @Override + public String call() throws Exception { + return doWork(); + } + } + + static String doWork(){ + + + log.info("current active thread count is : {}", Thread.activeCount()); + int sleep = RandomUtils.nextInt(1500, 3000); + + ThreadUtil.sleep(sleep); + + log.info("sleep time: {}", sleep); + + return UUID.randomUUID().toString(); + } + + public static void main(String[] args) throws Exception { + + log.info("start"); + +// new WorkerByExtend().start(); +// +// new Thread(new WorkerByImpl()).start(); + + FutureTask futureTask = new FutureTask<>(new WorkerByReturn()); + + new Thread(futureTask).start(); + + log.info("future task result: {}", futureTask.get()); + + } + +} \ No newline at end of file diff --git a/language-advance/concurrent/src/main/java/org/laidu/learn/concurrent/problem/package-info.java b/language-advance/concurrent/src/main/java/org/laidu/learn/concurrent/problem/package-info.java new file mode 100644 index 000000000..23d43de1d --- /dev/null +++ b/language-advance/concurrent/src/main/java/org/laidu/learn/concurrent/problem/package-info.java @@ -0,0 +1,10 @@ +/** + * 多线程问题 + *

                    + * Created by laidu + * on 2018-10-19 15:53. + * + * @author laidu + */ +// TODO: 2018-10-19 15:53 多线程问题 +package org.laidu.learn.concurrent.problem; \ No newline at end of file diff --git a/language-advance/concurrent/src/main/java/org/laidu/learn/concurrent/synchronizer/CyclicBarrierDemo.java b/language-advance/concurrent/src/main/java/org/laidu/learn/concurrent/synchronizer/CyclicBarrierDemo.java new file mode 100644 index 000000000..857c89fdf --- /dev/null +++ b/language-advance/concurrent/src/main/java/org/laidu/learn/concurrent/synchronizer/CyclicBarrierDemo.java @@ -0,0 +1,70 @@ +package org.laidu.learn.concurrent.synchronizer; + + +import jodd.util.ThreadUtil; +import lombok.extern.slf4j.Slf4j; +import org.laidu.learn.concurrent.common.Worker; + +import java.util.concurrent.*; + +/** + * cyclicBarrier worker + *

                    + * + * @author 臧天才 + * @date 2017-09-21 18:16 + */ +@Slf4j +public class CyclicBarrierDemo { + + + /** + * 通知 完成 + */ + static void completeNotify() { + log.info("已完成所有任务"); + } + + public static void main(String[] args) throws InterruptedException { + + int workerCount = 10; + + + CyclicBarrier cyclicBarrier = new CyclicBarrier(workerCount, CyclicBarrierDemo::completeNotify); + + ExecutorService executorService = new ThreadPoolExecutor(5, workerCount * 6, + 5L, TimeUnit.MILLISECONDS, new ArrayBlockingQueue<>(workerCount), + r -> { + + ThreadUtil.sleep(500); + log.info("为 {} 创建新的线程", r.hashCode()); + + return new Thread(r); + }); + + for (int i = 0; i < workerCount * 5; i++) { + + executorService.submit(new Worker("no." + i){ + + @Override + public void run() { + doWork(); + try { + + log.info("waiting count: {}", cyclicBarrier.getNumberWaiting()); + cyclicBarrier.await(500,TimeUnit.MILLISECONDS); + + }catch (BrokenBarrierException | TimeoutException e){ + log.warn(" 超时 "); + } catch (Exception e) { + e.printStackTrace(); + } + } + }); + + } + + executorService.shutdown(); + + } +} diff --git a/language-advance/concurrent/src/main/java/org/laidu/learn/concurrent/synchronizer/package-info.java b/language-advance/concurrent/src/main/java/org/laidu/learn/concurrent/synchronizer/package-info.java new file mode 100644 index 000000000..f5db3b07c --- /dev/null +++ b/language-advance/concurrent/src/main/java/org/laidu/learn/concurrent/synchronizer/package-info.java @@ -0,0 +1,10 @@ +/** + * java 并发 同步器 + *

                    + * Created by laidu + * on 2018-10-19 15:58. + * + * @author laidu + */ +// TODO: 2018-10-19 15:58 java 并发 同步器 +package org.laidu.learn.concurrent.synchronizer; \ No newline at end of file diff --git a/language-advance/concurrent/src/site/markdown/index.md b/language-advance/concurrent/src/site/markdown/index.md index 67a4f74bb..5ea39bc8e 100644 --- a/language-advance/concurrent/src/site/markdown/index.md +++ b/language-advance/concurrent/src/site/markdown/index.md @@ -10,11 +10,18 @@ ### 2.1 jmm 简介 ### 2.2 jmm 重要组成 -## 3 java 并发 api +## 3 java 并发 ### 3.1 jdk8 并发包介绍 -### 3.2 常用并发api介绍 -### 3.3 并发集合 + +### 3.2 线程创建 + +### 3.3 执行器 Executor +#### 3.3.1 + +### 3.4 同步器 + +### 3.5 并发集合 ## 4 java 并发实现 From f7380c45c6a557a6e45e8dc2f7db67f386561aa6 Mon Sep 17 00:00:00 2001 From: Tiancai ZANG Date: Tue, 23 Oct 2018 19:34:32 +0800 Subject: [PATCH 193/417] add observer learn --- algorithm/src/site/markdown/search.md | 1 + algorithm/src/site/markdown/sort.md | 2 + .../learn/design/pattern/observer/Boss.java | 51 ++++++++++ .../learn/design/pattern/observer/Client.java | 40 ++++++++ .../design/pattern/observer/Observable.java | 20 ++++ .../design/pattern/observer/Observer.java | 17 ++++ .../learn/design/pattern/observer/Worker.java | 58 ++++++++++++ .../design/pattern/observer/WorkerState.java | 19 ++++ .../observer/flow/IntegerPublisher.java | 76 +++++++++++++++ .../observer/flow/IntegerSubsriber.java | 33 +++++++ .../pattern/observer/flow/Observer.java | 33 +++++++ .../pattern/observer/flow/Publisher.java | 28 ++++++ .../pattern/observer/flow/Subscriber.java | 16 ++++ .../pattern/observer/flow/package-info.java | 10 ++ .../design/pattern/observer/package-info.java | 10 ++ .../src/site/markdown/image/observer.png | Bin 0 -> 84452 bytes .../src/site/markdown/observer.md | 47 +++++++++ .../src/site/markdown/template.md | 8 +- .../src/site/markdown/uml/observer.uml | 89 ++++++++++++++++++ 19 files changed, 553 insertions(+), 5 deletions(-) create mode 100644 algorithm/src/site/markdown/search.md create mode 100644 algorithm/src/site/markdown/sort.md create mode 100644 design-pattern/java-design-pattern-learn/src/main/java/org/laidu/learn/design/pattern/observer/Boss.java create mode 100644 design-pattern/java-design-pattern-learn/src/main/java/org/laidu/learn/design/pattern/observer/Client.java create mode 100644 design-pattern/java-design-pattern-learn/src/main/java/org/laidu/learn/design/pattern/observer/Observable.java create mode 100644 design-pattern/java-design-pattern-learn/src/main/java/org/laidu/learn/design/pattern/observer/Observer.java create mode 100644 design-pattern/java-design-pattern-learn/src/main/java/org/laidu/learn/design/pattern/observer/Worker.java create mode 100644 design-pattern/java-design-pattern-learn/src/main/java/org/laidu/learn/design/pattern/observer/WorkerState.java create mode 100644 design-pattern/java-design-pattern-learn/src/main/java/org/laidu/learn/design/pattern/observer/flow/IntegerPublisher.java create mode 100644 design-pattern/java-design-pattern-learn/src/main/java/org/laidu/learn/design/pattern/observer/flow/IntegerSubsriber.java create mode 100644 design-pattern/java-design-pattern-learn/src/main/java/org/laidu/learn/design/pattern/observer/flow/Observer.java create mode 100644 design-pattern/java-design-pattern-learn/src/main/java/org/laidu/learn/design/pattern/observer/flow/Publisher.java create mode 100644 design-pattern/java-design-pattern-learn/src/main/java/org/laidu/learn/design/pattern/observer/flow/Subscriber.java create mode 100644 design-pattern/java-design-pattern-learn/src/main/java/org/laidu/learn/design/pattern/observer/flow/package-info.java create mode 100644 design-pattern/java-design-pattern-learn/src/main/java/org/laidu/learn/design/pattern/observer/package-info.java create mode 100644 design-pattern/java-design-pattern-learn/src/site/markdown/image/observer.png create mode 100644 design-pattern/java-design-pattern-learn/src/site/markdown/observer.md create mode 100644 design-pattern/java-design-pattern-learn/src/site/markdown/uml/observer.uml diff --git a/algorithm/src/site/markdown/search.md b/algorithm/src/site/markdown/search.md new file mode 100644 index 000000000..60e834e0e --- /dev/null +++ b/algorithm/src/site/markdown/search.md @@ -0,0 +1 @@ +# 查找算法学习 \ No newline at end of file diff --git a/algorithm/src/site/markdown/sort.md b/algorithm/src/site/markdown/sort.md new file mode 100644 index 000000000..388872f05 --- /dev/null +++ b/algorithm/src/site/markdown/sort.md @@ -0,0 +1,2 @@ +# 排序算法学习 + diff --git a/design-pattern/java-design-pattern-learn/src/main/java/org/laidu/learn/design/pattern/observer/Boss.java b/design-pattern/java-design-pattern-learn/src/main/java/org/laidu/learn/design/pattern/observer/Boss.java new file mode 100644 index 000000000..84e1d1e03 --- /dev/null +++ b/design-pattern/java-design-pattern-learn/src/main/java/org/laidu/learn/design/pattern/observer/Boss.java @@ -0,0 +1,51 @@ +package org.laidu.learn.design.pattern.observer; + +import lombok.Data; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; + +/** + * 具体的观察者 + * + * @author tiancai.zang + * on 2018-10-23 17:22. + */ +@Slf4j +@Data +@RequiredArgsConstructor +public class Boss implements Observer { + + private String name; + + private int work = 0; + private int fun = 0; + private int sleep = 0; + + public Boss(String name) { + this.name = name; + } + + @Override + public void doSomething(Worker worker) { + + WorkerState state = worker.getState(); + switch (state) { + + case WORK: + work++; + break; + case FUN: + fun++; + break; + case SLEEP: + sleep++; + break; + + default: + break; + } + + System.out.println(String.format("report to boos %s -> work num is %d , fun num is %d , sleep num is %d", name, work, fun, sleep)); + + } +} \ No newline at end of file diff --git a/design-pattern/java-design-pattern-learn/src/main/java/org/laidu/learn/design/pattern/observer/Client.java b/design-pattern/java-design-pattern-learn/src/main/java/org/laidu/learn/design/pattern/observer/Client.java new file mode 100644 index 000000000..29bbabf11 --- /dev/null +++ b/design-pattern/java-design-pattern-learn/src/main/java/org/laidu/learn/design/pattern/observer/Client.java @@ -0,0 +1,40 @@ +package org.laidu.learn.design.pattern.observer; + +import lombok.extern.slf4j.Slf4j; + +import java.util.Arrays; +import java.util.List; + +/** + * 客户端代码 + * + * @author tiancai.zang + * on 2018-10-23 17:46. + */ +@Slf4j +public class Client { + + public static void main(String[] args) { + + // 创建 观察者 + List> bosses = Arrays.asList(new Boss("wang"), + new Boss("li") + ); + + + // 创建 + Worker xiaoming = new Worker( "xiaoming",bosses); + Worker xiaoli = new Worker( "xiaoli",bosses); + + xiaoming.fun(); + + xiaoli.fun(); + + xiaoming.doWork(); + + xiaoli.doWork(); + + xiaoli.sleep(); + + } +} \ No newline at end of file diff --git a/design-pattern/java-design-pattern-learn/src/main/java/org/laidu/learn/design/pattern/observer/Observable.java b/design-pattern/java-design-pattern-learn/src/main/java/org/laidu/learn/design/pattern/observer/Observable.java new file mode 100644 index 000000000..b40e38dad --- /dev/null +++ b/design-pattern/java-design-pattern-learn/src/main/java/org/laidu/learn/design/pattern/observer/Observable.java @@ -0,0 +1,20 @@ +package org.laidu.learn.design.pattern.observer; + +/** + * 被观察者接口 + * + * @see java.util.Observable + * @author tiancai.zang + * on 2018-10-23 16:05. + */ +public interface Observable { + + void doWork(); + + void fun(); + + void sleep(); + + + void noticeAll(); +} \ No newline at end of file diff --git a/design-pattern/java-design-pattern-learn/src/main/java/org/laidu/learn/design/pattern/observer/Observer.java b/design-pattern/java-design-pattern-learn/src/main/java/org/laidu/learn/design/pattern/observer/Observer.java new file mode 100644 index 000000000..c666409d5 --- /dev/null +++ b/design-pattern/java-design-pattern-learn/src/main/java/org/laidu/learn/design/pattern/observer/Observer.java @@ -0,0 +1,17 @@ +package org.laidu.learn.design.pattern.observer; + +/** + * 观察者接口 + * + * @author tiancai.zang + * on 2018-10-23 16:17. + */ +public interface Observer { + + /** + * work 方法 + * @return + */ + void doSomething(T t); + +} \ No newline at end of file diff --git a/design-pattern/java-design-pattern-learn/src/main/java/org/laidu/learn/design/pattern/observer/Worker.java b/design-pattern/java-design-pattern-learn/src/main/java/org/laidu/learn/design/pattern/observer/Worker.java new file mode 100644 index 000000000..97fc769b1 --- /dev/null +++ b/design-pattern/java-design-pattern-learn/src/main/java/org/laidu/learn/design/pattern/observer/Worker.java @@ -0,0 +1,58 @@ +package org.laidu.learn.design.pattern.observer; + +import lombok.Data; +import lombok.extern.slf4j.Slf4j; + +import java.util.List; + +/** + * 具体的被观察者 + * + * @author tiancai.zang + * on 2018-10-23 17:22. + */ +@Slf4j +@Data +public class Worker implements Observable{ + + private final List> observers; + + private String name; + + private WorkerState state = WorkerState.WORK; + + public Worker( String name,List> observers) { + this.observers = observers; + this.name = name; + } + + @Override + public void doWork() { + change(WorkerState.WORK); + } + + @Override + public void fun() { + change(WorkerState.FUN); + } + + @Override + public void sleep() { + change(WorkerState.SLEEP); + } + + /** + * 状态切换 + * @param state + */ + public void change(WorkerState state){ + this.state = state; + this.noticeAll(); + System.out.println(this.state); + } + + @Override + public void noticeAll() { + observers.forEach(var -> var.doSomething(this)); + } +} \ No newline at end of file diff --git a/design-pattern/java-design-pattern-learn/src/main/java/org/laidu/learn/design/pattern/observer/WorkerState.java b/design-pattern/java-design-pattern-learn/src/main/java/org/laidu/learn/design/pattern/observer/WorkerState.java new file mode 100644 index 000000000..9af37c3dd --- /dev/null +++ b/design-pattern/java-design-pattern-learn/src/main/java/org/laidu/learn/design/pattern/observer/WorkerState.java @@ -0,0 +1,19 @@ +package org.laidu.learn.design.pattern.observer; + +/** + * 员工状态 + *

                    + * Created by laidu + * on 2018-10-23 17:43. + * + * @author laidu + */ +public enum WorkerState{ + /** + * 员工状态 + */ + WORK, + FUN, + SLEEP, + ; +} \ No newline at end of file diff --git a/design-pattern/java-design-pattern-learn/src/main/java/org/laidu/learn/design/pattern/observer/flow/IntegerPublisher.java b/design-pattern/java-design-pattern-learn/src/main/java/org/laidu/learn/design/pattern/observer/flow/IntegerPublisher.java new file mode 100644 index 000000000..be55c607e --- /dev/null +++ b/design-pattern/java-design-pattern-learn/src/main/java/org/laidu/learn/design/pattern/observer/flow/IntegerPublisher.java @@ -0,0 +1,76 @@ +package org.laidu.learn.design.pattern.observer.flow; + +import lombok.Data; +import lombok.extern.slf4j.Slf4j; + +import java.util.List; +import java.util.concurrent.TimeUnit; +import java.util.concurrent.atomic.AtomicInteger; +import java.util.concurrent.locks.ReentrantLock; + +/** + * Integer 发布者 + * + * @author tiancai.zang + * on 2018-10-23 18:59. + */ +@Slf4j +@Data +public class IntegerPublisher implements Publisher { + + private final AtomicInteger index; + private int start = 0; + private int end = 0; + private Boolean complete = false; + + private ReentrantLock lock; + + private List subsribers; + + + public IntegerPublisher(int start, int end, List subsribers) { + + this.start = start; + this.end = end; + this.index = new AtomicInteger(start); + this.lock = new ReentrantLock(); + this.subsribers = subsribers; + } + + @Override + public Integer next() { + + try { + + this.lock.tryLock(5, TimeUnit.SECONDS); + + if (index.intValue() <= end) { + + Integer result = index.getAndIncrement(); + + subsribers.parallelStream().forEach(var -> var.onNext(result)); + + return result; + } else { + this.complete = true; + subsribers.parallelStream().forEach(IntegerSubsriber::onComplete); + } + + } catch (InterruptedException e) { + + subsribers.parallelStream().forEach(var -> var.onError(e)); + + } finally { + if (this.lock.isHeldByCurrentThread()) { + this.lock.unlock(); + } + } + + return null; + } + + @Override + public boolean isComplete() { + return complete; + } +} \ No newline at end of file diff --git a/design-pattern/java-design-pattern-learn/src/main/java/org/laidu/learn/design/pattern/observer/flow/IntegerSubsriber.java b/design-pattern/java-design-pattern-learn/src/main/java/org/laidu/learn/design/pattern/observer/flow/IntegerSubsriber.java new file mode 100644 index 000000000..f1929f552 --- /dev/null +++ b/design-pattern/java-design-pattern-learn/src/main/java/org/laidu/learn/design/pattern/observer/flow/IntegerSubsriber.java @@ -0,0 +1,33 @@ +package org.laidu.learn.design.pattern.observer.flow; + +import lombok.AllArgsConstructor; +import lombok.extern.slf4j.Slf4j; + +/** + * Integer 订阅 + * + * @author tiancai.zang + * on 2018-10-23 19:16. + */ +@Slf4j +@AllArgsConstructor +public class IntegerSubsriber implements Subscriber { + + private String name; + + @Override + public void onNext(Integer next) { + System.out.println(next); + } + + @Override + public void onComplete() { + System.out.println("completed"); + } + + @Override + public void onError(Throwable e) { + System.out.println("数据异常"); + } + +} \ No newline at end of file diff --git a/design-pattern/java-design-pattern-learn/src/main/java/org/laidu/learn/design/pattern/observer/flow/Observer.java b/design-pattern/java-design-pattern-learn/src/main/java/org/laidu/learn/design/pattern/observer/flow/Observer.java new file mode 100644 index 000000000..577b6c5a1 --- /dev/null +++ b/design-pattern/java-design-pattern-learn/src/main/java/org/laidu/learn/design/pattern/observer/flow/Observer.java @@ -0,0 +1,33 @@ +package org.laidu.learn.design.pattern.observer.flow; + +import lombok.extern.slf4j.Slf4j; + +import java.util.Arrays; +import java.util.List; + +/** + * 观察者客户端 + * + * @author tiancai.zang + * on 2018-10-23 19:27. + */ +@Slf4j +public class Observer { + + public static void main(String[] args) { + + + List subsribers = Arrays.asList( + new IntegerSubsriber("subsriber 1"), + new IntegerSubsriber("subsriber 2"), + new IntegerSubsriber("subsriber 3"), + new IntegerSubsriber("subsriber 4") + ); + + + new IntegerPublisher(0, 100, subsribers) + .start(); + + + } +} \ No newline at end of file diff --git a/design-pattern/java-design-pattern-learn/src/main/java/org/laidu/learn/design/pattern/observer/flow/Publisher.java b/design-pattern/java-design-pattern-learn/src/main/java/org/laidu/learn/design/pattern/observer/flow/Publisher.java new file mode 100644 index 000000000..483cea1aa --- /dev/null +++ b/design-pattern/java-design-pattern-learn/src/main/java/org/laidu/learn/design/pattern/observer/flow/Publisher.java @@ -0,0 +1,28 @@ +package org.laidu.learn.design.pattern.observer.flow; + +/** + * 发布者接口 + *

                    + * Created by laidu + * on 2018-10-23 18:53. + * + * @author laidu + */ +public interface Publisher { + + T next(); + + boolean isComplete(); + + /** + * 开始发布数据 + */ + default void start(){ + + while (!this.isComplete()){ + + this.next(); + } + + } +} diff --git a/design-pattern/java-design-pattern-learn/src/main/java/org/laidu/learn/design/pattern/observer/flow/Subscriber.java b/design-pattern/java-design-pattern-learn/src/main/java/org/laidu/learn/design/pattern/observer/flow/Subscriber.java new file mode 100644 index 000000000..e488e7a98 --- /dev/null +++ b/design-pattern/java-design-pattern-learn/src/main/java/org/laidu/learn/design/pattern/observer/flow/Subscriber.java @@ -0,0 +1,16 @@ +package org.laidu.learn.design.pattern.observer.flow; + +/** + * 订阅者接口 + * + * @author tiancai.zang + * on 2018-10-23 18:56. + */ +public interface Subscriber { + + void onNext(T t); + + void onComplete(); + + void onError(Throwable e); +} \ No newline at end of file diff --git a/design-pattern/java-design-pattern-learn/src/main/java/org/laidu/learn/design/pattern/observer/flow/package-info.java b/design-pattern/java-design-pattern-learn/src/main/java/org/laidu/learn/design/pattern/observer/flow/package-info.java new file mode 100644 index 000000000..dfa43212c --- /dev/null +++ b/design-pattern/java-design-pattern-learn/src/main/java/org/laidu/learn/design/pattern/observer/flow/package-info.java @@ -0,0 +1,10 @@ +/** + * 发布-订阅实现 + *

                    + * Created by laidu + * on 2018-10-23 18:53. + * + * @author laidu + */ +// TODO: 2018-10-23 18:53 发布-订阅实现 +package org.laidu.learn.design.pattern.observer.flow; \ No newline at end of file diff --git a/design-pattern/java-design-pattern-learn/src/main/java/org/laidu/learn/design/pattern/observer/package-info.java b/design-pattern/java-design-pattern-learn/src/main/java/org/laidu/learn/design/pattern/observer/package-info.java new file mode 100644 index 000000000..1aa4b35ed --- /dev/null +++ b/design-pattern/java-design-pattern-learn/src/main/java/org/laidu/learn/design/pattern/observer/package-info.java @@ -0,0 +1,10 @@ +/** + * 观察者模式 + *

                    + * Created by laidu + * on 2018-10-23 16:11. + * + * @author laidu + */ +// TODO: 2018-10-23 16:11 观察者模式 +package org.laidu.learn.design.pattern.observer; \ No newline at end of file diff --git a/design-pattern/java-design-pattern-learn/src/site/markdown/image/observer.png b/design-pattern/java-design-pattern-learn/src/site/markdown/image/observer.png new file mode 100644 index 0000000000000000000000000000000000000000..23212dcc9c7ae0cb518132cdd2f31b4b7ffb67bd GIT binary patch literal 84452 zcmb5WbwHHe);2CBAqbL!lt{?XC=wEafYLd`&`3)Nf*_56fPi#&*UZo*-Q6*yAd=GE z_1(jBp7)&do%j8I@9!^QX7BsnvG&^6y4JM_P*!|HfJcRQ=gu7hnYWUvckZAI-noOx zj)M+-aw$Re^v<0xcVr~R)t#m{lX11Fv@1_`PS$3sYJZI?rMf1*eW6Kxe?^b_2?4$Uej-o}h>G!0J^s<~3;4Fdzc++p z{eLz5>q$8O))07QUgaVA*mLhP8sG~g5Bzx=Gw?Rl@BDCcWfGt{&~H5vOqz!aj0G6f zQ9n%Vl>#snU`#L@Ncg|BAN%`vU}(UTfd(#bA^HE(n6+0DrXabUm@|bTthcv8M}tOFYiZGfP(d=d2=&_a4Le+=JGhSqdvZR zY{aCbCVtHbsyec&me8}QVS&%ztzaPq<_GEr={ADsdpYp=w_ew zA@Z?0u`7`t8X{14 zWGf)z(C7{V*$Ze$}bgvfiiZfY3aR|>O zbh=c*qI|h3#RTkfm0hKsSR)3fzp)Wvrnw98qVflqGE5133P5Zg8b;S>=qP`Kkv+FM zGWY|&Pz)ru^PB6D#nm9`u$DFJupwQr+v2sRlDNl9HEbAor?Io+HU8uBnS@k*e9s{_ zt*Uiuy)HS*zrZ_WfHodXxdsBke(noCi=|@|tj!c}> zypLmZn97K12rWi=O|&u)GdjL@+N)3|c(HCBvx6r@{Q8%RybwMDo$o$8ONzH%V@jjT zZ4n9vRzpTkrs@=(a!)qHD$=%>2`-ammmE9(nUq2`Pnn^amERjuslzZ@IC`%5K{IfJ zEJ3qpo$0-gWCoM`j72bRtcs?Zj55;)f({R1&#SgaBSK88FA6H&PFCcT-sQ^PXd6`+ z(S9ErHREzE)N8Gw73qBjiYvN3>=6vZMPyiM63jgNLzW(bFlJV!5T!FnDV3j$`m-np zJ+I7cL>3KbBSu!i;32b=dhz$g_#V4zkD!sb;>(pD)*d0IR$J!{@`4KTBK?Gwz(eVD zFYY1|yv&i(d`8C2Y3{_4bujVTPSXdI#1GbNwMUl@F*6^m*RK)YmyJhppB_T7EQ}$) z@d6ye*>^MW@WD-TnX(c}@6OUBY=_ze;AbtU32AMKSa|ol}K`s%FP7SmghNDJS-n;kEKvW(`Pb zYjudYV!Mm{63*=o6|1Ty*lIf~r-v$I zA*dqEjSpQ%>SSizqMTKvKEGu$pPB$rK&spmoT$LLCzsc7YnpH${Xsf?cXh9yuQY0avq$s8KqtbWKGg`OJ4b(bs< z#q2s!?2JpZklcr=7l1eZ%Lh}Kd^JDp3BC-Fc-C&;NHPuh=sNL&5sU1Z|+APg_yV}RImt_zmzXW9|%cX-Rc%w=;J)&zlwaYc>P1FI_2=e9?aN~Y1uF1mgx{z`42_B| zCmJJFrfOd0n8~vq2+KSgfv?l|KdIuYlS{T>L3xKS;ItJ(@W+tm*mW^Iw@cOg>Xa9! zSm0Wv5F;tN_u3HFGC|r3w$0=TA#LWP48t$w1)%8918s5Lhm#jU@sCXGq&9@C?O2g_ zeMb;!ccU#L6z)mXJZ($YF4dodtUe|dM2Ei$ZUv#`;T{qpT3kC1N)CUazaQA|RjF`Y z7We>8sA5e}ER)UTJsX?;*ux8(Z+fjTI?n1X#bz-J{3d{adH%PbE zlq=&Q&Hl?AG1ElLDCVV(;nGJ$5`}Z*)-yQ;qSKSHip_4%9+l#E-dq1Evd0759X*HQ zgW?Kl7iBO3I?m%c?IzgB6R(~6lb(<4M!J-*W2rfMUEgkaN7&{S(7q7y+|K+&`>tnQ zC0rUSou!#`%}+YsBuc@*+~{c382Arvq!Dn&VUII2=LdFvm4wvAMFPVeO7V<9Gn-gyYjs}+)thmvei}&QzU`pa>=@=V2Gwe zegT`TuX>?&Zn^1;Bkqb<6_vl8a;GaZ7$>QtWDj1*sKmE5tHw(V=InAMH$IGhIQQhU ze}==<`DaDXqz8}H2=l*hM480UlUj)!xwfV2iu zM5wVjO~m2ROKAwco=Hl#IO+b_mxIepmSfFlq8e8R%8u&4k9f$;v1n%)Rj$~TwPvi# z4)2m*FbI$jfoAi?cIo#;Ln**Df<60+Ub*%JH|pn$8(>!BX|n0DLFQmdYF+{}Sai3a zTiHM|2^|K2RpjXoH>-&dzqhUtpm6seuH|3Ag1uaCklT@qadKO4xkhVPqaCCg|T2{`f`}ATd(P2C36mXmXfcyeJF^Wzi>febz%r3O{AOzQ%g&2(uli09sFkAoW zjd^P<#064`lx0_Y_q~*p7?UGBLLk^J=Y5PtG}QN9DcVR)4x{np>?oa)mf-9YwLjUs z1d5-Y2J6XMzUw8kdAfm+kbax>O$D$lioX{bg$=LToK<<5w(t48Ug9JKo$#xt3w3{{ zk!3^wBAwJL@ZF7ShS)2py;`^h_L1*VS%V@K^D?jI8p?*#U)Fz@dHRA>xhLm&gZ8-* z57Q_|Sd2m-T)L{vddjXszUtegOr@i&tm$jczikx^HY!^Nyo?^bM*wkoW11UDMBbO35?m2^B?!G8yDmX z4IK<7Yy*Y=X)o^hV}D5F&?tWEHgT>z>`U?NK;uRXoi{bBD*oGK>KwC;grJGq$D+P2 zo%is`L?xAao_XT)r0N}Dg^qqaIE~r}o1#;DP8->?B?I8wb&ZgkyO^*DT5qtdtiN86 zcsu3!AHw9{Jeuu`a{ib3y%mLKYk0y9#nv1>I%gLp^6n}9_RZ9a5#Fw)ft?zHpSeO! z4>LlLK|?TIhCCJey^2V$t_hhfqf)&6n{lI&-xsBUcfDX)urk?iGX5+%Y-JX1<30eK zQm-ddxra#igY5^gYb z;(zc-Tl>^I!8m%1cR9ZJcW5`L>qa|N#($?51VH`>*Z}B?t@E2@Aun8Kn@`U5v-oRC z)(5PTe&pL@tHjCnwPq#8ymtFje3ge!W?J`)$A2S>#1F-VNhcqUW+$`gZEO;*7)T`R zG3)wwTc6lHEMc7eXoQhkWcX;dYXdYJ!=%*dl|tAcj68Wmn_=^ja)~c? z-;}pt>n5!YdnNMVX(3r?(HpUy+Mu3>=+Nz4PT`Qi#&3ddMfr6s@ZNt6`CS9vSn&Z^ zq}7NTUa4Q7<2=YAk-r_^B}GNO5KEP^i(&m6%J+P)Ar6dnkIdDqZbyyXV}5&VILdwO z#Qo59`AaY*+B0mqpsi#De(xU~gSAEox1a^Y>#RewI}FkM|z zlEg)QEbmCZR&QG*f?P{c!+W;6VP*f^R?ORNwQzD1>I5No>Rxs32Bs&UCRc6z`Q?HP z{?lG!Vd$982)BFU72S#9teTq|Q0QnX+Ai%#83LZ1Usbot#O@s{XHR+N#e;q{kU^`@ zuq9k_FZbYXO50lFIWGgr?w_^A@?J1%>?|kJ*;BMhY`Y;VKa?qYW zw}Y4z{C9D0KpHp%+?68ddzQ9<_%zWMvZnjy^{!P4cPDIoN^Qj!q!Cg=v!|L! zzo=LesoE73=(K4?-6l!Dw$Uotg^OErv^--ca?y=wFlYc3FE$zvm>$NTM+}QFmm1cu zP`+3)GqltV<-;;@^pBYFAugY7*lJtWGV8T&eA)`*buC>-c>lO@shhe3pi3xZITS77 z^kFZo5^YJb1Z^Yvi6De56m6xB%{Wf)X^FaV^t)~Lmp5$<6)v3nP>0!rz^OUsYLRCO z4oz;Uwsm5%r!^xfVUEX#b`_&Fq#+-QAA2uPlMiegYm$l0=@7PYi4oXclRs*Bu>Wx1 z2~5VCZml)RNhjkbMJptS;CgKp_QP zX2>lMvXHvC-sR)I+>GDJ>T?h0T|PUG^={tJ7)ZF6KmTaeM<(_2%aRM}zW$BL7zQ)8 z-i!RfHD`pKb#F;va6uX~MnIQoXwubv9Ly4j&I*0sM)8nwyNg8!`4@vyPVEcOz_vOX ziDnv4m1+@Oz=MOmz&-n_DzaDf?~}8s*`EIe4TFus!&Oi-rwk)*w+=|1$ zA}Vao7~74F*fx7t1D+^VDf+5yJ@YdExf8YW0j^d5z1SXW6;Iguf{+R~y_#=XsN^?JW}_6tuhYp?&gINx|j z1k^)JYTWCGlpmjeb24Bh{puM0g5W`#kSfiudkFKyy;Mo!?mts=m-GHt8*vWx_8dgt znMlG74D3}y^*`6Pcx^G-A2-`>o#XH1*q!J`TWWU~8G4x|iO67ySfi^HafR<5ngZlE5!IcLl~tI$q{(rB{D9;rsba%H)_4U_~7CA*`|im25NPYn6Pk@`BMk?+nlg zo5N_9b7bk6d71y1!vnl(YO+iU0z)Ky`W<8_)ss$D>z@W}AN23BTq?594y%p6$^RrT z{K>fqwqg=p_ZE}2ic7^rJo<$?8kj9?Tcl7wg8ucr{g-dYVb5LO_a+6d(~rIIcFC-? zQt3eR{T?mc4-(7^Ika_GCRr(54!3D+Q#3tfNGZ2`LaetHAs&kjY~!q?;{St`*h-7& z?xLJtfe?R_n>=7n@KwL+Z-PJ&W<(sD^{`za4w=Z5qH*S6Ci^HxD zq@YO&cMU)AxPt0TA$>U>6`GM|zGS;lwsX*!)-qnO1X3oig56TxMrH${S^y@3WPkJ- zsVdu88aFr&^Lrp+5<~J;{>-nmpY1{Nq!Re+yPy$GkBl?9A!~0@oXtJWBekioQU$Hs z$*l+GywTs2=`Lnl&wr+V8R&2Gygs1wlWBjFo;jQSSR{ol)aKau$&tb{|2;anEhxs7 zL*64uccAgXq))oW)=O5cE=m_RHYOc~hgGb}l#MFidMkR% z-{Wv}nYY1Mu|gKBd$jI_Jc2@oYc?Q1bkg5^h!j=JNJv9)qE`$e-o=D1#)sO9SiqU1 z*Q#hNHvD9LEoQ3){{YL@l+spIWAx&83`B!|;A^9kG`5iSmiv=~>mYUE`4M{=uLqID zsc(=8;}Gqgu~j0Hsm(B)eE?kaz8rr&T%;DId>s)|h0aV*d5D%I*2aEa< z-SzK$(}p}F>aSWPg^xGv)HOxUS53NRSSgykT&W;3LB=jcrA1+99VM_dB5-6(#D_gB z-i2t%DdyiXa*)Wk%R*cQJ5M>Yl+z`>)jnVrSXE2r=;j_J|12e)V0&H`g_Ik)8z3nc zSBaz|;mj<}iAaH0i?Kg&UOz*@^Pyx8(0ekH932%tp>;M)-j(9`KegUcuU z66#J1*IUNxqhVQL;7x`8cxon{>LKCJ)FQT&+yb^r9Uz(TKNErI%8w%-I{)Eoqy|Su z5qIXgv1t;tGQuc(go>JmRUsqyqaEb3nYr;J8PuU2d-5jLI*n5A<)I$-%cLgB5$}G~ zIRuSs1x;`%v`V{V4!w$-!1YymKc!Ag>}V~9q*m7i@G6TTlBN`wjRn0gyYumnsUZP6 z;}FwweyH#J8VyBN3b^CP81OYR*nY(>GjR}DIr!uMktDJHZ%LA;0_wLU$-Vpk14&}e z`ahE-5zn7^!UO@_4N3g?rOJ$inHfXA&4|q)`rY+r0$3jOAc#p7-~P;ct%AI_9m2i0 zxa@4RyY3{-<&AM-jA)USdEa8aEbc2RK~`+>HY0p^N9KUp`aoqxifs0A^tbjr9rl>8 z53)0C6CR8lkD|^pRi(<7;zK^*`uGnQSSgxubXH{P}*Cj1-nOF z_6M{Zwm&qP&G=MV*Yc7d8%$n|x0w%haDDOaT@hFJX)^!F$8-rBhRBxi;DXabX{iyK zl(MDY-=&{+g<>r2F&#%M@Bi_U#yJ2hwZZ;@?=rw`))1}7|#=uN7Ce1ZπL6nUGbGmLu#0OYR z+h@xp7^#^7O;K9(KQuW#w}Nb!ZRcqd!4g1cZ?`W7VMe(3sR53t4&m}gctg142XNfLf=WIc>KCnwC?rbPOye9@`)49l`f> zBfOOMc57a<&+n17)&``_OpiQIHxzF8E7oWN86aCr0}0W=GTyXpz{ ztyvVUE}2C{sr91(9_{c0V-?r$ovKFn()HKC&WXVko>c#my89=+I0GUGk%slnkDdhW zk$bxVzf5Aq7HPk`HYIVyJ#*XI>oC+7aoEr*5xc=Yn3Y=2z?D8xqoBoh4I&;FsypX< zD95~*-qaCypY2G;AjAH{2|hR=$;~mC!G0zT6W|NhVsWxuaT@uWNY$oe4114Y<1}fZ62E|X1{96{R{1XOM*2I=1)p1y>Nz` z>?PrTf55NF+*(M(X-t@Vapna_u`m;7#_UwH9 zTseW_^+y|on7COpWl?+R-5ZXLNlw@wM#4QwwV z4RC%rGNo0`({!}G`7mvYM)Hs9FJrQc$y^lL_aGudenFsEK4l^WICxSw<@Mg&^ zI?tLfLip4i%(~>49z1FcV}Lt3Dt*QM4zfe=a(s0dKjB1@k-Q+7WEirk7TC!~R0$?goENXQlh#ct|j2d!is{W}*eRkworu z&)A^~=<4v303AIYJ@t=H12W@#Sny=gypBO>+OuQ1O=D@U1)16x48M__lu7taAOYLZ zHdyB+i#8{Pob{z;gJ2ul-D-Q;_za^SB%CZhY4i!?fdG)~1KKsgI^!RoYC_(v>>a)0 zCRSq3_#Ig^$M1*TcaQ$hjA+6$h$+}ND*5v~UE=zoZH?K=*Rw$dp1#i$1`11JzDZdI z4sEc3e#vWxPrpkJPD_W~SKb^;D5j3A=kLhxW(rPxm7%HGr%jsVJhHlLx{cjzALf8Dj4Db$xdp9&EF^ zC%Jh!v{5QEc}GWc(1km(E2`JHr*u8>!aCr4_C$J3c3A>L>x`)=o&TbS{J8b>_J_v@ zYRNf?C+Dgq%f}n~Cq!pTk6BouMrELr!?{gLkC$-t6yKr%Ih!JCDA*I>l4O;>Y^M{` zAIiEt{jK9BX>3_cJI{`{-}w1%iAGTd%`-2jePV~=NC-#vqy3a;>CPk*6hSHnU8y@( zRDqxBWv^}26Pjsqnu=-y=_pLuIgG*ih@6&?irycdI&7p1=kYe(X`PJZeb8iznW6n^yXFaccLuu~kNyz3J!Y{fzi~^a8Qi z`EA>1%v&D$CMK>{*uwYhb_7TTd*i6x=w)WqEBbWiM#hl=h&XJN7vU0inHv^Kib!9D zGiwuclvCoYB}3cY108InBfNN2hj{NGV1qnO{=MW{oSi1smvQ{=rIpL{_PdJqvBn9M z5T-hsc7)-@uSjQqX$3O{CQH^<81WQdAQY^F&Cxp@t5g_K($yaNp8|>D*>EdJ_s@5E+D8`_h48fY`y%u{*l37R%Txu zcxARy{dOyOxn1?>d?8=S2Z{!VW-?=R@2)REsG-PRo(-(@%uVfv zKJb`p_1|CZdB;#U&QveQ+b@e)klTc>c8>->hR4urD~OO}ZUt_#dZb*gXDoqyscQ-0 zVL{_n?qolyOXB)nGW9rOi&N+19kl$wgweOhk&h6b^8Oc%j?^(ll4E28a(rVNH(P>D z=b;oDd?gVl4hHUD0X zgJQe~Z%ys3F%`KC1DqI7tt~5k+V&HF#`U*s%00f@ac3g{JV-0jshXMa?)RqQOnyvG zvfSfB=bK=`n^)5Lk}-|^tchX7%v4^m110ikaH{5&nUo{fgG3SLW4!V zw9lb8TgV;KV^18v!FTiiO0;qPBeZ?lOIX5FRmg&2*(lnBbSW4U70D(ff|VkY_kW|l z{)D2OGssm%Apzhpeqv5r12U+6+4{#)wT!v(=hY6jA(y`<+xJrGgh+jxd8M46utk|g zzINo=#2#IHTGjbI!fZ;1v06BcFnqs6cGIga+@J}>Ef8(V{W9Beh0#IaR}MI=VB9N! z(^}kc!Or{%m?UR(FLem(m?s^?n6&Z za-Y`@s{PUtlIiAYDg`>PL>kXX^Vj^?6G>UvqF}CBdfJC^_KKAbzNjTW_qJHe2n-$@ z8L@M53Dmn$H9GHXyoRX#!rsc*+S<~ZQK_&$O<{k@q>n6fp;nScw^VcFgLJ`AgF-!* zcCg%3W3H0g0Dkon`Rf8qKJyx=s>%)0I=w;ar#sKnb3d#~%*AF_OhWjjGF z=^}H==&^5VzOQ@{(mL>;Ark6&$uwZgU+ej$YIq#2MzhS(I)3@qbm-l52RVs*=-CI- zF``zVY^{9AdvvYOQ~QY`nOViW z*77lahQ!upp4J6K$$_i5=|!0*l_E+^}ml|ftEWZe(f817n66p@j&kc#R|ivw*wX~!NsK`uL>J^%6( z6e2c5tncg$hEn%BIO^z7o|j7}!B{>Q;5m}=L(i99!d?*S8y$*AA3Xc$OfQw=qHqR? z4N&hmKR@5!>FVCuR2DohcT9riIskpt8&YiFAXk3-h~m`L>5D3HADp^;ac|RQpb|Y> zcQ-OvG?x_}!y~(9QKF!AU6ugYEUwp`o`v|2Ol;@Z`6@Gv%`{#<1M~4&f;TmgAr?!! zXz;Y&i;9DE(=mNHY7>sJoyH^lgK|%z5qJ9VB#YYOy`|Q7#SRYuT9szDtj#FH9TKjkhzMcf; z+g3-0Sl%iaz^UMc!eH~uL7C*;6;cB}&Gxw!YQ1v6I~3JaIdR=EIkyk;Tj*#h?~C1> zvMHkhXxr%kyw5o({@nQiH1*HO(l>C(EBr`VQ&R0MV)dtz{myRTVcdsBsX3hEn-7ce zR^SP*fnbts@^w2}557B{n}2Ng?wqSn)`A;ywW=Hv`=WrFME$8TT8!b4MYa z42a0LuqRlzvjF!ADNR>W8{eOM597TXclRMvYM65jXgFKJR)4i=3{!hi%XM>*TKw#q! zt{E=CIF_D=OCDZ2eI9;4Z|8lvY2DcF+XVWCVWkQYc}x})6B7~|8ZB!g5`s3aBKnHE zs{|9f&`}edhz?mceojS5NcbR6QAsI?P8EECfMp7AfR#W{!Da)68@z)~B4H9tD3%AZ zz+0dxY01vn(sDz8MAP!#-8+^^;LzPmm_E1oujAn)o?fyoWBPpu)r(%s(f%ugg;c%O z*;+L(uy8|9wX5^}K^5$0olUb{x}gMvz&OEb#j-a& zJPQf%K2WS{|Hz!~5Rr!zL<_DcD@luyx*9whDqh$*}e^;^$3|vnJ`H+#mH(~tF?%Eb zej{k^gq2*(_Vc=VkLdbExI9X7&;)ZaCi^abtxoq`STxxvdi}FrnvqlckmBXQjKiT# z{krtw0+f%Z7Vrwy;Y~e@UOG09eo@WuckPvrcJ?)py!p`f@7c->26%CLvii>%w(1fO z{0B?|W__QgtSyJ(1=nVjp705ZP@7Li!lD7xIg6CD97bP6=8P?Jm6H6+F;+e`^gMGE zUhFimuz_}bz`7bkB`TrsY?j=?`J;o9fd9Lod^BZ3>j(Dyk|NOr+J(>W&JKV?^r_cr ze%T+Y-FSqM->*%=(OQQ3ZdR+u5rPIl#p}kLql*VoBxp+ud6;##3CqAfZ#1Kq3)z){ zh>`vj?l+vOwg=mE>RpT^0Z!AztbVvZmey!>gnvYSbABncS!&1&kWhb4z3~tc-?w?f z$u^FZAODrLM5cK2*1qoE635l@{N=b{S5W4wj~Xs=e2T8`w{c-eKZ(a3$m|;q4vyU1 z++|wNa~$nob8{Xo1!BK#Ztk_AjZ*+eY(2K~j)L2F6Y$I(yWGhyM+4#1@W9SH_H$&s z@?25S4`#@tucHbO-IF@Q%FlWqin>7VHDwKF^x2;XJ$QG9^41Xf##TFnv7wjF?E`Kf zCFC~MSU_iB_CXX!vh(YfBY}xd8|mRcJ}H)(ETeq$l=Nd`M&Df51{&-?p( zr!Ch?U0A%)2GN*D^UeyqoLxhTuww4AboH@~=jK{R@5}lzRl||xBx-)(jKlSR@+-*H zq+(~z7B=!uRmPPqBD>b;p9QhZ;t%I7)| zsjnNQlO1NnU(K*}EKS_WcEy~KhHveD-y18mt-&Qlc=lnb1#T&F>>1B=p+RHH#!LHc z9^ArOyY6B!$^*y1-qJv`6Un%yJcdrtsKhs1`EX>YB*kPbgV|sC&-i!UBd&`p8qtK? zZAM;%FCxM!jyY1Z;u7Bd6JH6<46|u*Hn7rG&YdE>FMvZx*bM8eruab(=SBNt>1Dtk z{|yr(G15hNW=pkoZn4)%`0{-e$cmHaJHkVRpi?E0?)qck#-H|thW6P-`|^xGXT#eU zFDOF?{cMx^)@@u2it0<+j_LJczzcf%48ON}1^9)LWBkm|ZAgWibk!s-?Bd=L!HVmO zGz@J>J8lUdmT*a4mr8!I(|3)gP`+fyw$)(0ZvjBe72T$n`{RxBTQIn$|Dt{{z9fjs z(kQ^symRo}ud$Y2lKh-XvFA&$*!X#8(&z&X)PV)qk=9~7y9vF;K(`AfN8U_|y)4~F z;ky>Gh^Y^wXPQ?>MV|esS>4H7KS}SOmpfOcj4oQyK*5~|@9=JYBQj_Mt5A+ky;gX) zpok$EGEwd5^cIT|di09Tr~t4E=y9We_Mj3VzyJfq8n0U;^nkd#yPxrsEvIhfQM;eV zX%Ft8(Ryx#Ud~vCgKa&*x~~DT{P^SnxWbd*MXQZJYUP2r!vO4_w54=WMGM6`(LlLG zAQ+i+=`X|EM$O$9oW}fM2px*0%Y6#o)yVvC2q5_Y{9}xv49dGrU%)0^;a6!5gu4ln_TmnGOCzJEoMVQ-=RUYgX_ zrQR)2{aZDP6v=)-05}C!`|LOmOl=*=j%Wm7i{3uYw3kq)_z16V(bjX}J{}vJ<$ENP{Yz$2`JD~d$0`fL30818^VW9R3 zfsV#u_s=0PfrgH&}v<)wyGiq(qDDH@)^_ki;gg^D@!DvJC{sKlVR#OoSH~9Pa z&CSiEl#~~=@K>*bn9sI|u%Su_?~tR3vFYjalg68?-Cd$f5Rr~g6HJ<<7}l)5FH^*= zkAh2ar>Q9OhYTZY;*g^R26jIR-cW3JQ zD0#%C1jgPV@0bZ*?qP}*z1IZmn>l4l|9CzV*BLp#-bm$91WfuI2xGjdUbbZCLys86 zD)&|aizPTd0gNHd1-Hn29w)Z(x#o9Hl+^*H93kj9P~1MV^hcT&_wJN#0^Tmin8FYBvXBHwQ->6L$G?e*XUNC`7!kkEB-;@;EALL)a3Y{RL%}eyXvrF^mT0f=E-5Ok| z-C?8QJ^+4?c+Xxg z?7__18ta4{5D84|5aw?@6TW#`=Xpb0h_wr+iUAX0<4mk_1<~Ui>R->#&+mBNyacu^ zOZn-L%IWo$t1cZDaCRYl7t#2hMYQTZK0d?&S%sbw7=2wCnZT=b?x7G>f;xH7G6xQ( z1r8dVDrvW$8v7eG8x5!*DoW^y!a;byTUajxG>fl}0NU^rOfUdw3(=8{7JCDz>GMUFi+q#fBXWp=0p7f_`09KUILX*s95h5tkeSnN~vI; zXn+wEH*03Ib1e||_g>4a^~D(Te8J~PtIAWxMfb9h2bj7>ShJ>7RQS(vpXx@#UVq<} z>p)Qk3wb=Oblt3AcRX}V3t80JwXg*wKWo_)kF^(H6875}Sj5F4rv%w3qQ=sl zD6jd}%Or$=opzjPV;XMeUhIGN-R6&8>v9mx`LwWYkW1@27>N(wO1_0ejer!gP%c6-%_NL<|$j-z7#`W$dZoQb=^S+}g_# z?Z^M7`H|)KPq_~$W*cGSCt8tZ>n7pFCv((c*Hv5nVtg-3YQHA>0&-KyZy;zMy=3~h z!}Ji-o8Eoek(x9{Y701a^V^sU9FBaHxFGO32uCFS>aC{0m+WrizXdyzIc>WMzLDdv z6Q#-4Eb;{3Cxc-XcrCE!AC%7>HC;x1`}MtFIdH}m0XT;$38)+jpg3+%*-5%mIDgZ7 zD!aW!pgqZDKDpjJ1V2tDi^qykv#Pw~?%~2O9d@Mi1sPOwo z61UZGL5S6(%#ph69GNk7X|9oRO^J{gUP~jnLtWk@Qr{l3H9MWcp^K-%qH1q$Yl~`s zXROdG*WW`0pFU+k!H@zZoWmv-NdNuVlH*GO!h~JBbyaPRD7<`~D#iExs`;e3LJ~8?3Vqc}y z3^`7GxuiW&-W+f-3N+m{i!Og_IN@i$_sHy~l<-Qd2Xy`;m93i+#>~MqyKv9AjV+*5 zp@l=P_pJm7C;;lo;&ukh=3_=b^^@uSk@S$MfP^<+l3|#b9sX7(r{Px6o=Iriqwwfr zZv&hyhX?}AQkyvEHZfU|j8PZp8?~6IkE;_qR!H@Wr@2rR11JVK3o?OU9YR;WFn;p9 zn%%yfkvrePo4v`jK0`<#8ME8=Sbs5^e0`_t5Q};aH`_!eKRNqoYYp!Q zporOEhvqbJ26K}6QRTdQ(yvbj;`t=Ut@>eCRY*JMwqz(~@`Lzavj&Xq49dhJdEnX} zGDeX2>ornV@7W<~3?b;SQW(y?z+p0*Mc_U~93a0c#bluxU;_HCGA`wv#-vJ|8$S5F zU$uZ3&Mp7qmDWVmS9}gxQY&-6f0q9MRg?zE(ZRYqa1URwf~dZ4^vFMz>uB&mYT1n! zGL~&WUzR*nQy8seLZ>j3%OXbpNC?){XCa8Ri>YT9}Y0KodeaOq4KB@eQ z6(rRk{RFfKvOZD;lr1Lgv(%Wd&&^i=rnzf|46@@D_-gNoH|r&lctPTRhz|I?h^C^y zw)cm(ZS@a(NrCE)`?v!;=~#y`9GG6O_?Z8;c?KdJ^&1qPLCzzHy@5JNU{e}rint?}8gs4;HwSTeSVjzPU8lI9_Ok9$c^#(kzn+}vof^DS6&@Ii=*FB zUc>uHwYuS1x|GOG10n+7Ezp00#t<#E=;53K=Il7R=se!043w!t-kI4-07XL<0yn_f z3s{-@T{1J2((!Mp{3r4MODgYrw)ek~%DaRA_fq-z3zwE#tvp5{8Ps7i^Nrc=XNqWd zHo93QT_#Vyl51|TfuY+aCj81j?W{UL0D*rK{jFKVQQ2ED=UhX-cz2C5xbj{(iq ztwvt-y&wcI2b2}@@xk}8?|>T*&}mxP{2UiP&lP5RZh-kSG(J2m{(oxXSsq!NYYLm8 z8)4Rbk`ifk#y4BE6{qpxJv!_}*pr_S-e)j7 zlpOw#!{D&eRif0`yI2x&I5j*>Bo^;Lyj^o`BZg+QHpFj!O88v}xS%Yz@3(p(wNcSX z_6zZjWJ8whFbcB0$ti(v0k1|T`~!x>#?rL)8#q2srS`4gTY;m$yp~(Bl1|O%x>eDP zTc*5w?ZI3*j+M*~jrK$9-&VGBRrXda_*)RqV(kYu;Uq^fGFV1mC?WBG3E>Blh1RLN zOJGj;+^f2eTMs1yvKip`_GVLOEGXSecqeS5SG7;Crgtm;Jq%;z;_Kp-O3Os_@z?UQ z+*o+>c(&~)AA$$$6P31q#Cl<;dn+#V9%t{v4yq=1gTp$*Ca?}aWUDraq87|#rCs^w z%nZZk)ORxmpKZI5m|7?Rww?nBdY-Ej^6;OUnyL%1z`h}8?98*&K)=tb&PHE0W~UxM zD0}&>(3msJ+a`&S*?n%SZTk@q{~sIez@!59om|n})smhHj!w{vO78@GMutQYyW^K> zdJL7@KaSzM{9VIZAN*;_5f-KgI$t%|L$crY%{(UkxtGQ9xunSroLRDtl6n!B=@C_X z^tzGhi~b-9#S)!-D=|J@UnJOnSHoC%K?E3pf-7)F4BxA|u$ zdgAlt0 zvV*V~_*o&mzZE;#{avpu($QM71+L5c2MrKmppd^s0=WNuUpJowIBL0VDsfXTv6G9}fyC zSyA8giLTJoYFSgfUJ>CguGJM-34QFujDuny%tDVYLBHp7)%(PzWy7hWcUQ~W_D?~p z+snh>^~OqE9%xm_eQ`7(z+`N2x2=r)EWZr-(r8-cS_)n$dmQd9Hpmc=qp_Go@ zFaK|)V@iU{tib%;>L3=g(5mC0 za&%X>*~H`s;a^14p!Jm?{cznXdAjVAbY1yzjC3MO|$u#tQUDZZ+O86C>)Ia4%p{q z?dv;f|4oLWhX5nS82o{8cYLp@whYw3*Q8+nkNg6K@WyQ=)6_TofqtQ6{#X7uklMoN zJtOW4es&`zt>O6ruyH@9q$2V*4Z-qA&+_(yXj6d5BzrK|OvhJ86^HBQtY{uF0uYD` ze(1*IGK)$Um_Bg$Z-tF*YKoXZRt4l`{3$d50X-9h{KG5LFhB_iF%o9emyXjglMCHv z0(vV3$d|+_22yza)r^njJD}_w6|=@*RH>XTuSVwzu8%$v_}2~sP5QJL&-Zv@z}6T^ zFCE4NBaFa%4-E!tCH&TWiF-w$Cfb2ZB_Mu_R3j8@`6}#J*IV(KEqeb*9GGpdsUCiN zeLY7@O25Fl8PkHmr-Z@BJiV~x<3t2+UosCi$+{H{d=-5KP89*J0(cO(c$5p+K6FnHcb=Ewu z0B1dv-Ovqk`xIKO^I=d&79iq*f1d%+ng4&ZjkxuXp$de6x0DNiRv)VK6EN} zkmOCuhh)6mX*2ZUAHP^Rz88f3J7@mT0Bk>?0bDGRKkp?Cf{wizYsilWI7zypwmYv+ zmJ|UMWm|oNWXnt}%`2I3Y@I6+xba%l%ZXEDLb&u13uWpQp{af7#wl9Un zAAJRsji3AfRyOLF0LsR7b1i}sbRTiiSEwVU&<>j()a`xp%OfDU?~j!5`w3~rx@jh# zIXrwQnClr=6HFgv-^l!bWv#u`uA>ym2odo}Ico8z|KjBp zU8f3Q^#+mH7kgs&DXSunzjBDGMNTlEBR{Q!f6oq{|TZ|m*IOz@H%@mP&Nw`+x%COS0^y1 zyTIoF%0O8waDDLFKV$bnQ=EtK;*7KKgO_55HC7Qn7k%WSb7wj&$DIH*VJL=bM`^XFjr=~@Vow}*?ugSugu>1!N`F8 zZTd(yJXuhNX5jx&cGh80_uJZ6Km=(iX=xcsLOPU`Mqudf?rx=|OS%Lkhwkp~9vY>) zyL^AB&)(18`<(Zjb6x&1*EKlvW0?7_d)@1Euc*p@#7AUs>_|KPMRO|3*6-Ubt*0Nl?>p!uPbJD}1u+8kn4} z!fBk{miY-wFP~~ju&}w@b>SRTtrfo+C3slSog}$;8u$d7#Gwty=@F|>ydTXBZeK|5 zq4ZCee_*Y#!&WKJY?l8WO#Sc9Soqs~e|=ycanJn!Ib;60p%4G(^bJB@p*ie2`*k3eLN~m)yo%iRU zhSdE&sDX>3`1?WKPq8e0Htzm64n2f3Ue;(wnHTr>r}?TB`)`raLQk+~M5mb+>(*W) zCpZ>VPg9Kteexl9>8YQT z6iHTC_M|oA>ldrA?%N5t+LOf(-oQ4mlZ7AflmDTlCxC+;g+?13U6x=;MyZY?uHx@Jnrj4<6E)za9c`XU_gIcmQr^>W@r+C;|Brijxmm(Ss`l z{BLqdD#fttT7~CXe1^4`MEAobfd=!nJpU0iO8SQ<^YPz(n`YrZ`wm2Pv1O*4@WoQh!#E}38w<@27ZeCc zzaLTZE^dYg5!Okh*uUvKv?SZCs(QP8g>Ud@4}wDJrPy) zLch*LQVvAt_v(b<>9Y#d%wi%zE$)X!3p%wqH6lEFbr?%xba;+)a90JUqqR+xZB37{ zFCY?Lp`X?#xP|t_Dqj|#M4c5p#YArZRuuJ+rOJ1%Mo>Ha#I;uSS#o+Mw6n^!rP7t+ zd~2&7JK@yeihr{L(OPNbQdG zfi29GZhE%Fh7M^|VGHN>mCRb1HMKQnWCr+E;HRvmE?$*B?t4xmn>}G&ZuwWVR5%vlKU%`6kFS&dS`++UUeZ*}A9c@0# zCm5w=M^^remEr+-dF+dG@u2R(Wi?p!r-S3tBrG@5>el7bH>PxJd-Q6Ydy(#GvbKIK z)C2o3x38Hd7@uy0B!DXmg^R1MXY%rht(Ysvsn?Y$w~r{thA```xvaj6CEr6B$(bLA zi_jWrFc7m{a$?VI_QDIQ;tVIWyoh|Vv6#y`=VMLjNj+2RLcEYBi!`3}>f}vOQaR!F zF`-a2?#Hu02B~#+oYMRW%i7+2TYjD$`HVC~EEfuB-z8K0EJ183Hwn?V-)kc9Vsv6A zwu~|$DG3sY0DT1;KX(uLYe>RHHStOM-ox4L zn56I;pyrfmB?XkG^vJ1Y8*wH~;@-x#g#C=-Od3Tx_H+m={xHv@$1J$?bm@lybHl~r zOPccp@%`8&hd%R2JBxr@N%KOaSI5f#&=qb?R@^qVQ!}=6zzcxQ&E-J^Z7+9e`%}CB zimG|r<%DsG0(&2bVFz54dR{lm>gEA>*7dPG5~xE_eMR)_T!L)b&Quu29)&xW99jS> z3W+t?>!()gRbE{d1pwA4!{YP5VjP0JPY7gy%@ejm=z%<;2bf_OqKH~bvzTK;shUNO zs&Q?jC~QIzJ1RwPC`@zZbk#^fnF7p~OMe-5cJX~4p?&Wtc}(VPBRHLNXjWyn7HrF< z6X0$_Q(2Vp zkRH~vA!mc`FafC8a;zRUf!aGM_~(&>#4ditHb{`m<#+scrTU^_3O}jW&0D|FFgB`L zPSKPLTjH#u9E0NK9+QR}{cZb2g3gb*;a9|A^FJSgcUctpi(){-6b&9M0Chd2?v|Lf zI^!JO$OBhmJTawY{j2z%epuC1FBj)0(U)GZ0OgIbuJVRagG!%q;&{v{wGLtg&lIq4 zPue2l_F8E1%A{H%t5m|xm~JP$urMM&{VjLyz0U9VXd?G+SGq5R<*vBpVj$n5<}|L( z-`9~QH+_ANg^gAH)tN7o`BU!Z=F3;MvhR475o3HRMnV^s)K@`y3TtHGTCse&JOvL> zK%YibesaFyPfv)6HhQbg`R>ddURsfp)L8`ts=9EhTI@M>a;n-#2Kme|>_8PAI6dh% zef05BjI_}))~bMjV)SVOq*#U0>@_Eu3CKM5*}fijpFE3`tKHh(D*REt!pi>EEK`8R z#B|Yk#U}TlS&qGFW1LUcV$1;XECCiMOF;do>Pt?ZoGu>&f2)Y$gm*--N*DC6sYa!oQ5oeFVyPJ0$5Ady z#J}#U@_jZcvj^dq;0?4U-6;D(tC~NLn3HO!h>=V?%yT5YXQ?Q|l*&*a>n%^IEmD7! zYHaP34J%kYh^nhk+uwy_FYMaeIFJ=80eAHX!TvgSqbtPyv-ZIhP@5QbZc61&zWAxoc zRRd>Z>cvt$tahTiok&tKjG9azdn!^h+6|A!Zz!sC?n8QoS78OT`C7vD003QB(c`Nf zG~;5b>5)ezlOi?MYxP$J2PM98oi*ouIk{;h`a?vsIcEtNRC{NUG&046b!tHE}#kw|cNye{HJOICEHf z^XGQ+b}4Yjug$fJA2omn{{?4E)-M2l#I5l36BNKxZGT>tNdIZuU%AS+HC4X zd-t{Y7GB}k(5;dIS^M7oJ_ZL(66Mn zJ5wcPJ;zAPQVBsIJ-FyHi8V+_GH0u|0>{kp>K5XqM2X}?Z2Z^~@pP~*b!>C`@@-S{ zm{ptoz4)x7)P^c(FDa4R;5^5m^NAOvBxsIbN3Y+N4{wyDN1yGcwF0J*$gLtcZnv~C z{ZOlOg3oSk+nuWAfbS4nB;CwSbGJkG`7w`vbq!-{(e*18UA0XQMiM3*Nh*cY&;N+Oj+NbUzWno6;L)YvmM{0Sx9i+Ib9>)Pp`+wR)aZXH(a7A zUreOTl_7WUN$RA|Q8ySn4bGy&Ab>_mx}Ug&H`Nxp*_WVfj0MZ`t?n1R8~?hWydaYU z>*H5B_oU5o$)St?rExO1UU=b|l`eSC-dBo~`&q9Lc`Lyzl-lz7P)KK&L z-T@tddxz(fB$s13AK0)4WT}Tz*Sp|XCb|q_AA3!T_U5x&w&csjpgzjy>m*xPG2@co z%bAwmI9xaK_^jEf(-H)%Pl8+IC+=bITn=hf9(Vt;z}`Q?y>9%u_wpKP)PIjwj7>MM zF%G<3YT^G3c@aOlqvP|dBizEP^ZClurWr!d*y?I{_E&vS>Ml4_{nx@ogH|tKchU3{ z_DDYnFjJ93z4WC6lba4$ zMFDV=G>{4yjBBT2yP6+Af1o?enu(0$cY(fCp${ z?rw$DJ%VR~iZ5tfl;yh|CG(a;tllilzhjdaSCD3HFTCqkguM{R3Q+k zS>k*LPEY2_?kF>&;(%wJdOB?7i%2PqoAd#X&xV8?%@jTnr>E0jyEf*CSP#Q$9kW)^ zX_nEip)0!teb?}7HFfDL|{3f-ZMQLnAMRNkUm`J)> z<*ZI6s3yDKv@Q-jt1eO0JP0asNn>;XRwp6J_0|@>`x-yp_=895*8hBZBIpNSeb9`V2H9<8buMSfR)eJOTUf$LWdU_n(aDTbAn&U>MQkPQxB#LquoGJl)}m56^zbn2zK zx)?9D$iCHXdPzm}dWV&MHW@h#LD1FKss^k~Ibg7KHCq%VMJ8xA3CGL0S!iIbku^2T zy`WDuB6UbUHc5OLmGi-0@@5At-$aAhUEQkn#1UX0g1Zaigp2q)w16jvDYbbcmR5V6 z2rh$cacE(hwU254}k2zz^rn!?hmchENzD*Yctbx$eEahpoR zvQ-@<)S4aozOCjP@f$`LvE4dw$AtuxC%g^M1wmeC2J4f{17&(P7Smi`1O>RlJ^t9& zb-l{ktv)k72!TOcX*ab1%er|J zanlp{R$vQ>l1HZ#F!Qs6Ha%9_-guf|7ohlA%*{i;Z=5zD6$1dxfZwPQ*!FGprOd61 zZ<@lKS^QIj09&94C~!O@B=OwG&xg&H)_ntiz6PcpocBzx_<>7!R<*(+>yY! z$3Otz1-BY=Rb%n?106w}oBkE$?zU0b%%=N^-oXMwC}%QN;%gY(rUv)!M!jiE%~BNK;1@%sBSA1XK)KE-mw}qKUGQzt;Q(>6(Oiw z(0_N@SD{#F64I7cfCI0bq?m1+JG6bp%9Pd`WnB+uI<2Z@>-J6`G&d}~iM)u3LRH#z zH4+b8iT~48~?*n+~lvx#kqRn+C-ao|p*53^+Ew+0faV2l1EZ21 zIgB##4;0?cvAVemUO&a6tfk35S23Im$=sJakSwd0FKlGXf!5ctj;7O1GdWnSUtxzY z?br;3REb@6?jB%uXDM9FQFHm)-gT5gt9g_mL=FR}xz84Gs8}TFrb8Uicr`xe+vgZJ z=ut|G(wR18Vxa`Yhg2WjmFL@E>6s*1oKPgBmnT3ri`pkf4noI!1Pm<8W_FvvXV*e5 zbJKmEQ4Q0on;&dhqr&}6*7ch{wgi)xR*pZN*>y813Mpn(67R3sc%9m7m?zX>WP+o_ko5)pX7HSx ztCA_h_4^y!9NN(H&{qjTHS|Qx%K*MW^wevzyX%)E$nYev#{O^$F}TTDx~jUoS-M+| zmO1@I0?$3ybT(-9-s`YY$;d_hj%Jr$4?HtOa3`4`XbmDR3r9uebbQZN%EU4@`qCvE ze@2qRaiM(JqUa9GZoP+|b7{f~DY<-gvCN{2OXtfJLVY7e`A>Dnn-u6~tsz>W++&6$ zKK;CotuU)0Q#&|Dyld?YR0qnw`?t(4C2U41RrF8WQkgip8g*^>$!ZA0s@)?$dl{Hm z<|6JK$(b8Re0Rf3-(NFe(^cZVJ>?eeH~k`iGXnw3OZ|9W$78}a@bMg?2aaAz=G53W zmCIM-5-Dhun$HTgEYEVprZRm!13Rj~v&(9>)|uY_@zJ0^wWZ3(cw=YUezy)Omrh0~iSP~^yPjM`FTUW?y0{R}s1dW{&zW}CIMQ^9 znAOZ*98=k3%#+w`@`+?Ag%F#!2p%V7OUmdG{6GB>#+7@&D>4-ka*?f0pRF z*D{6?b9{k>w614Da~sJU41?*!!MK?_9xrju7K4Sp96Q>%*FPa_UDOkMEI zj+2-MlS^pTK?UN8Ptmj3khzG?X=aZ+r!tDKNN3+oVW)iu+g~t1g2+Ew5u$YAy`32+!!54Mnsm45Mvc z+SYHvhVXTY zHBv73lGWmtcM~!L8Oc@-Hmr~ogKJV8otCkKFvH=jmKjx%Dl}!5%u)GiwO`h=Q_?$5 z6*8_2EY>97Fy=3#)LIH1x?OHfG6=ogUHWR*g;{M^`mLQ}{cy0=m#`au6s;pcJ>D5h zrJ?EmQ)UHlCW_Ei#)$V4Atp`o-s`(AsSY>K@YFO+0p0Y z2cAd}7u6@zCc{u)?Gs>Hr+AENq>+p2=AAie1rjXKu<3$zVD@wi^m`CU=4*PduWdqJ zbF3f}p>g}G9)EZQ4qmZ+g)-RUn@P%6TOjHcb$TfeO={PDe2@|L>;n0!5FDBt_rq8 z1y-0-Az84EfNFZpdZ%6N;23KR=3q%r*$1raqZ45Zv2|A?vidhcA#6t@I3A6Q?VMf2 zo~|)Sy-D)P^3PO0eCzL7z%-+%XQIF%TcO{dSoc~RPZ02ZLd6z<;aU$;WM;ptC2C@D zVRUh()OuQ&Tc1|%sMl+(ovx(P_RX~WBUr`{XklsfCJ)5B9t9WF)wfe$p6oHTWH|Uy zOg)b}XDp9BqP7*6l40^0;S*E>) z1=h3IU=khQ6jo-d?ax+3&PwS_XpFp|uaqhfdGBBQj9+QRd2+dikb^nKUQm74$IIJ! zs?1tiG~13B+AhOLTbIi67%z-WSn-DjgaR{F);*>G)RbSmOKr8eneoon2^l?5_ClFA zKqCRZJ6oi_U!Ct1<}3h@r)!o-zH z7bW`-!QL0Z-!Qp_&FJeSpYqix&u%|tadS{bKq?p)nwpC01ln5>fOApA&V0;-(G5C% zwMg&BFCcukh~Pj(7=yDIK&&igZ@21tvaI+;lE`fj))dk6r_F|oXRQqoBQSv`iAYQdb!Sb&1!+1 zf~HpLipGtzSsZSA`=Gs7YU|QvN{gC9rc5qlez-c4Z;f#x?$&b|d*vr;@kLKfTOioo zYu1>A=&@zuSGN%;GHl3CS(uET^4Famj`s(pelR24s77IActOFe5#R;jukcS%&A*j@ zd}m+p?_+LWyJxBRiEHJX8FlK+=GwJNr!$8eWJX!9c3>Z!@Yc!GdCx++*q+ocy?<9kJ9sex>qvAYN!HxL zA#KI7=*y_A35}}}VLGG<1gV)0f>-mUy1NUi&ZjU`m7qjhnA%qzweYFzvjJqTEg*Bj zTMgn_k)9X*6BEwWtvvHue&O&5LfRSC_2UzhQ*zz)!Pv1L{#+GX`fp%hluV_%vKxjo z-BS82&odWEhUfJAZP+kXwoM}@zw4?<{8Z;i;MACssO>-rd)06FX(itXMxY=qT>m*_ zfmt$phc(|0)_(aq@6e%bGH3<(XUmaL*ocx&%c zi8uwa#uM})K{7Adim0|&l(fplr?hQ_#;};5Ke;FkauZDCZmd0a6h915dLB)a71MT` zPZV$fGz`GI_C4-YV1Rd!qh#|Odx^u|xpfp-F_8NZW7-|e8t*{~L3l&HIKD%$PSyW< zEBLFhn)Q0PW!4L>6fP(HlUy^lVv?*fx?s>z>>?H=>c`~_xWXEFHR`AX8qmlt41*V3x@NCzba^*V>xK0`b&X9EtY2@7CsF@?{`++E`wue&Tqzv0@g{3eGre>{-$aZ|I2+9t{wT^H8#{8iM~*h zrwf(^AM;-N$TW*~^eD!L(r*UoS(Y6Ut;e!|D0ovWx}1yt%Y-fKOXG>_D$opR+-f2&d8g7*RpZ)^ddv4m;53k%2_q#jlX1@VW9wB z-elFQjz8E^_x?v7x#do`be_GEyx3ea&Y5c3heb!X$YX4W-Z5m*0f#AoP zGcN#*F}8sYl^(tzY%&1o!2Y;2R49ymgQxa9BVSLUe5 z1Fm2!Phn$xeaWimeuv}qAbN!4li5*1-mqtezx3lj-R$-CKO5fq=*OPK3t}_$8BR%P zzykr0Zpn6`%9HziX4yM;gVuLWLt|a0Cj~!e%Wq#;`~7Ic|MV)!rE#~%?bR3BPqg>} z_du`jDg;DAO-h5b@ST4(we#h4?>mJ*E^#NXN)4VZlf~9Gn#4B7TX{-RwT?_l=?dR0 zD*IvJ+i}?J8j~aMLw4S>4{##Y(U*G85(Gvo#HyL?y?&jyvR>B_P&K4kq3DqdCsl>u zVr&Leznxe9ySIz2yRB>Cfp{jCE%`voIHAF`FiYh)huk&-FSpJqVSF-lk(`ppSqHmP z_JjrVClh)s!zLO?6w{yC*XROgjyPdA9AG0-na2tqAcI_Dm|Whk&s%MokDH)0W|p&P zRL5^1S3{;&HC8*&ueMe51_FlSWB9tvi!(edzEzj0>N`oWX+zU`8AKotHhf^RH!QhCT8<@ zgzWul89Zz$*mG=!jQ-gyS1QxZDu&{##-c0I%3NP-Cs0cxkyAm()@R|tI7)m}COj(= z`;o8EVY~KS8aGo2Bhi=G3%3>4{;~lnwxosX{7d0z0E-O_J&|NvWBs0m1h;Wc6JERI z692VKVVlRC9ducsuMsB8D!fo~`+S(Le$wkE1t3@e?GNmVf-NEo@~kxfdCI+n0+BM9K!F{Xixx}bHU6-m=xl`Mw=0R8bHWRku)8Tw`Cl` zBOhu`^}K$6W`hmt8N_L~8e3|$UHxQ8#nx(uO)uqjA3B6fsn=Itjo+?=O#ic8>Nih* z;i4CIbS9-%2L+7Ng|SbBI1Hh3-IeECg0UgOjtzEfb7Pi4S<;SZ!&NEg8;)MA{i)Lg zCk_yW$C9$#m1&KtZ?HqF7-SMrl5CU*a24FY2{$&eR+^bnSzgKdWzLz87A^PM|Ffq8 z93R8H@<}F-MpgFR;8L3$9Ns;li|aSosg`622~##-LhEORw3T>yy#T5P=j@`rkPH&F z{#Ymv#YZ~8BgnBKt#Z@M^Rr`wLnpN}_CjNS{_^|p1l_Q9uvB;?;dr_fJzcn!>h+a` zhSKY5&J@ORy5=2JD;IHklEwu+{;oGPnE2gKf&v=}KpY^UJ(YUrUf%$#n~0k9wpT!N z{?>T+Or8$fWA}PTz1}ddL?uQdvrJ_AQi69$MWNtPc0za=ZrJmscoSY&08W6jn62$o}R>y}$Wj z+QYW#{G9&$rI?V%I4TZK0Wyahb9&ywJI}-lC@J==bg|Q&glLZS`&W=eS44v~o-L~C z_WHym9|S=qwT6EBUO2OCf#or<_h@@>y_i0vF%F6pnEG%#>}~xZlo*VaC3C3zkyyz~ zlC(rM^I14hudG)CXr_iYw5_8hr|DK(6}gFY^pLn3RG*;ZiwYpG9WcV%XgfneecA$# zHCS?wSLpXtL(8el6M?ZvlLJ_Pa>uC*1~Sq#U*YN*Js6=B7ulkagth!AjqG7shEp=M z!>e3Q@Ql|pxqaA(NrINX( z;&{0#^I=YAdefaHO-;(nI~$gllK`Uo#Fi8+_VW0WhHB&|sP(mHEO-+Y;Xda6;{fc*x;#8&J36f)dqu&~r<-;a6m8FRMv z?>w4RGX4wYuVhI`Ez%Yw%H6Tte8__qZOyLcecRP$22`Dzs0JnCg!#Y)kEo2*q*uw2 zuPk%Tc!dL~v%Ui#lVdUN^^#EhIfq0Xj~ti1FVck}VlYyNA{m>oF->wa6-5=s8R5;EYK8+r_=6Z+JlznBDgqo2N_3W7W9G?L!uKcnLke?<4cg= zf%n+)vlqO{UcukZ=_Zvqh@6sqwG}=#fwp4xl+@N;P4*+H^b>2z&zJq+AF7DFA$B;V z#^M-U!JM1xvJ<{!!TeV8HM;h5iNYt$VzaSBWdT*9ygqJHbNw%fh$9h`_98o)q{!i9 zKQ=K#aYu2#7PED2cgzcYX}d<1cm)nIdkSn)dpL*{9VhcA0rA5R550H77rAb>km<9e zNmAMhu4<&3!;tDkh2cx%ufc5;C$0^+%%dc>@gn`eW`?aRR#+wcc>K|)re&q9t`8UY z!XQDTE#!pH{=8FcoE-)Hyo$VQdpoLT801)?U5ibvt@}gguC?e~i$m zHh+%MQ(-!RmbhK(hhvrF@}6%p+To8XG?;6O(r+{5Jp3LhVG>+&6i4r(2m}#XjMWYX z`6EC#Oi9Y4&zi^-b$ojTnKwKojFP0yHi=SFw({4ANAKTWA8VrWQlLCk6zakM&-_7L zsiyf~<_}sg6<$ygF%%DPc$U^|DyvsGLTdPX)dDs~Mk{g0HJ*9$irB~(^S&_ZxtkR3 zzP0vw1Z@l{=Z?-oB3_j8!3bLSgtS+t_V;}gdR-r#t!pzMY|$;A9HufP=tFz6(g+Ud{~thG~%2DIVr$Q2};5Et0aj*EauR-LE`hj%1KO>F9EyO0va2 zlvA8!oeSTb==u!0_-69AiGh&p+NuAHynfeY98U&}OEbH)-O3~O8FR;_d;zJqEKT@f zR4l9>p|<5!m~YC;SSQ8d6nQy+E2TMa$ma|#`Z@l)q3X`1pZnBl?iskZucv3u3#~i_ zuYC?0x%yYOWpu3YAbpODo2GJ7zVb&A9`@EfrGjOFp$U;;@VzXPJ%(hZJE0PUTP6l| z>U^5byW5@2&)bCGIsP_Nf)`NfO>*=4>!=j-+=^TUW5T=+`T1&WbR ze}0Bb82g*e7>uTQaK~@^ZX-)n7FJ}kFAC29`}~)M{tTk(RG4GM7LbMrN*=Pwg*rqH zX$m(?X`)1Wt@f#ad zWeAIm?sX~WK=y)$%XBiMY5y%aa_{gBft@kZRub;8${*l^Y)6VT*V{MkT*~2z-2b$uJHvj9 z(kJC2#@3xPkhnc(75s*o=i=X_+11OdHuO&BC|sQsV{`J938~OSeP8q~X}LRe9u|S4 z5M^F@!;yHKWL2e=bWaV{vbbil8zH`-*Hm|N<(ki{2uH$LRRM>~rzp?w^2zbXI!SP)-Vb|HN4Xjc_KkPBpw$NA0K=9r%Yx1QWmMw?Lp+oG= zd>KwuGd=c1$d5eH+r0}Vj{dT3?U`zNr)RhMF#E1bFPYu~gbK1OK&X(t%r6ZJE;KF? zHXd6l?n&XR(r~@r>j0}zqKEp=&{kvM$+f>@tD2AHUnJ=n`)JveIu=M23w-e#D_9(^ zep^oukRg1@V6K>a*0BT6ghc!Uws>IO+~MfUXavbqN2kQPS=H^!QFlLsv~*MpE|pO4 zmKfFO(m*e-jyh=Gu3N(}?xTPwWYm_(O-1Mzpoil3y;06!P6Qjw1R!~O2T}rP$nWIDNClUnNE&KK9 z{N*LRj;=`xkM(Uc#a?{Lu=k12lCnMlwC3@|K+2-J3wP~1p1{%Q0nN)Uu0+#GdW*X$ zn&>hz$m_lMb~aOUsEO)n%6g?dSLI@VtK5OOA=)0wvluzjt_lg8^R}6+sHw`(CmC3S zrTIKkG0$7IfT8?$C_zcS!awX*`2c~5%DHy2Ai(vOqv$MQkCP_vMoc&CaC7x&pV!Bu z^1!HA75!NXY|RCvvFsMBuEV-^kVxo9q#Y?Ob4D~M($O(1j7#-Rl;Nu=Ny3{nnH#ZG z-Yk=vpNb$i?&=Gs-2GgkG2uR=7~NC(=-ia_bYLmNGOd=^sn z&TL8TSzn?Ll%oPm3eQA=ZE6T`I{>@$TOU6h`cEq#oJhdsd>~zY{!jY&7bNr->582t zpEr~<*u12E2esK;qE6?BgD$hkr`-vmq`)8m)}=3CUG|nfqZUe^`Pkg)?nDiH%TpI! zrY3a2M)DGXV*#}GYzlyl!0`EL#dI8-Ln^b%7O7`iZn4dd>N+(g{x2=1;uv1`g*5~S z*a>3=VfL6}JFWXPi?)gQXwqMiDFq2?A%l3(uHz8dI1X!|PvE^K-DbSOS<7+oixS~} zW8@cfNOCqGzF*7fu1N=}%*yh86LbWBQBX&2P#7@BC6$4Y6uQj2BqgYGo_Q z*(PlJ=8X7qg+p-7mj^dn+!RDb(`Q4#x22_-5PjI5=bfe?i!hnYC1IV!bXGy3U3>Y3 zjg405at?Rlw`@NBE)xhIJI9Ngd-rp z5VqVqRDkQ+?#_1U$De%=&!vhO8SZ?F>E7ns?rMx_0r1jP#;2U%KBOLKs0gxZAQO!W^)C--|eU5N2vRG;y+kz&K5LtJC=hX^e}x!l*1T(Up-E`mFSyO%R6)%*~J z+DWNa_I!wM1r5U;kD_?1*s<;*@v}xn>M6rD0ksD6b}xqY%N59$%UOeI>E+btPIRgL zqarp)>pMLV0f@7}wNDKX@_*xCl2nV!_#-5V3kFqkEc!o|7)gdDrkU!qL{2*l^HtZL z%MT=wSNnU&H`7}WMY;7?;qCZ-@K1Ew03}$P?ic|*LO`&cbjoi}b+4hbsj<9CyIK_o zoj+bff{5!Cz{d0{>vwY-mDBHKD{t#x9GcIWcv)VEmhT2OGHI2HW4FLn{vuv5tt#;T zNNx3@6nxuGBC9JhjGujD^Rn_yFme4-wS<>_$wF*6=Hre_c%7-U6Fto23Yb3>c=Sn# z2yJ&G%ysn)zh!vbcH%i9LyXFH(cnjMCmZFZ`9ep+?ciL zeP8+-8QMb?d&(ga&!gYfof-E6vFxa`Z4kg%yul<5CX?69Lx6Q!OY(uE&O@+>08w8d zlq_ims%33gRZKDSIqRGa@@*4Q%+2*!N{pwpozL|jW<=1n=(l9>PhLcgu=9+RpM(Lr zdbKIhvcig_ckji&dl+0wy)ejb6G51t`0P;2!H>Q;o%`*2}jkHI<&z%*>?0g=_u*gC&1Mx zY9T>xUj8H34O51Sgvr5I<1~9B^@Wmzo&x_GHNm19fORY+{rbX98@zBw+vTTDDA{9E zfPuke3SGS}<0H9pb&l@mS=;}#e-BFnKf#STQ}_X~EX%)YbLWhBzthicRoZC6S?6^^ zdsO`n8w9w1yI3c_(AF5&)88ooU~uu@N$V2O2A*k>a%cpy9kyptmyJGs>1wO^kW9N- zHsgj@n_EM|X+9!j;G3SGxR_^GW9A+CY&G)GRN|r133EhBxg3HbmARABD~soiSs)up z00p6nJG&x8wv0kdI`J+@2`edmLNt_Q=0xi~!tq@9mDkS&W9Rf%Y@=e$s+F}j4I1h* zk!8)#_2wjZ4Oq6T5E{wFBdOJhwK(wkRd?mEbf@YSKX_1MjVyR=julhnwrHb_9^^3Z zG`6+vd_W9%(BwY$!QclHyF*p${rHbMKyYL}WbpwN`akm-{PRU1ae%Kd8s0^5=62Ph zL%v>cC0(Nn2W;W=!l@au-TfL?{@Jd|`P_b&7JuqB&h9ZO^DG}Uuq>(D=WtzimofI% z$E03Cv!2JZ1$kR&BlcgZjan57-ZHEo#zrd0F`dTgO$2_KEUBn@CTjV!av^2;nsKOm zk*(aWgzL@7!i*v<$<dIjZH@lGfC<;#*dGOWbgt=*CxgI5G|% zf7k_p3O8o8{tYU^#XiHSx|261nss!?dAd(tzninoc%d^rrpIQo{q0T7`+4KCgKtGJ zK5}2y9Z@8L`^g(tdkXsy6sq*jN4kW)zGuFp!ieA8+h=vCten8Og8PG5d@A22e*xbS zYRQZ<{W+sLT3|J2x+d}4u)4<}NX4fYLrh+$yn?4nfT>Q(fD8%Vp|HWg_$*oHmnUbV zNUEVsO$-B?WxBKUT)!GeZkN^H=CX5m{(6UkGssw^AqUDnAQh`KhWjqKO8b52UogW} zM8FsZr{st+zuru;g)idj!oCFlngmtY-Ehv`Dh94HDIN-ou$Rn`9|52aUIo(ebMnxmkY~u;kS{d(g+`0btvxY)Nx%RT6Wgbtp+*ImlS zfXV%};&vK5N$gR{#m92i{eAYQbo=|C)qBA3-QWbon~+ZMAf3N7@GHKV2{Q&cq90z} zwl;2pk9&B(wNO^h;yjUrMfl`0^$|eGKULz8AfX}(XO>o5S(nt8H)=BY62N>q`=y{C zf?N-cMx+H01p{z{2T1<&#MFTUVG6z%|W-r%1&{Ui_~t2DY|`u+?P9Y&>adFb1&mg+sn z2SM~4ZTDK zvNA2g#pO0LSPHfd(X}HGBp$8|?i=HwNOPm!9FK1g%)F`^MVGjF`fM#I#Ed3(frwU; zMy;KG)zuLC9j#09Zh*<{b>Vf}7uRB3O+9NZji+@wZS%!Hc?)`RNYN~$fC#Ws<07!B zIQPF0*Gg(gmkWtS-{#^Fka1!OC%7^uYTZi2gkBY7y!XIr6 z^J9VaMY{2RHJAEMZGoitM9z}fgTwN&;y19q-|P>59wThsAB0&KR|)|`Mc7QO2EdXA zp|1lCJoa4;W*^tv4U#B(FimE^nh;;GO4~&5JHzbPTsr;=V*vOw<*gs*qZG&*U50d~ z#Pbz_`0Bw;TjUQ8LS5!XzOS8egT#BkneIymvn>6 z;yWibbc$7%9!nc7U;%iM>vF-hMGIJHv^aJz&2wXJ`M~QUT83{F$@9go`OOr2 zGwEIHg=Wf{%~?)KbqLsi+sd@@-w|+A&-}y_Zl z``4J2W?T#Ux58$q8bi+KE%`lb<&l!2?6Cz^GnJY4Y<1ILcJ2(u19p#M8J`~&(+#4$ z!48{_fl;3?br#YrIESQy>$k;onxRM=lWSt-IxMKP7+y1f5_trh%y#jl8Y!DPm<02I zyR}Bj#d%OvI-(CWUd<71Os<1KD1_jdVJ@bTjGdm3jp+(=KhNLQ;>{1mNU+$+ql^jv zcRB5R!rY6)s;6)Gg}8g_mN6TG_7@GnHWY`UD<9+CP18a-D=4WxeQmXk=LEjyQIHH; zW#FRS@t~h!3;!m4(XV_AOvD53iAHZ}EldE{RVVT4mD>;Fp^fp^UR|jJlZc01SLKq{ z3UtOALD3B4u0+HL-+Iq95&OFF(^vM3Zpkh}?TpNc4FSzf=_6QK+$gpAe#`)iKr1=I zsGn-hW3tBX`liYHo^IR~UinN@5;7HMV`#-wT~}dkf8(#tZcBCWs!Y%0?g_u{jW{!V zn|m-=&Msc+Z*tj#9DC{|BgB|bf2!le`9Hj-YRs2rLX+AsyX-++66*Ghs^sV*Z zL~_z4OkF~c9 zifhllh7(*8ERYa_6Rfd7@Zj#=xVyU(Ah=ubAR#z3?(P!Y-4fiLV1c}+$-Ogk?>tlg znX2~#RUEqM)5rF2?X}k4oA*-*&6BLDIa161xk!gj9!6HqmG>6JR3h++X?e-p_KiR9 z%@?`vJat@40yX>N8c|122?KwZ5Mnnk1_wc5ays5Hl1OVeP^Nf%9Lzym-)LP~XawY| z)i@Kln$&=hE%95(zG(c&*alP)9v&m#zxQ}jW~xOJQth98_q3?LUTU5~ne26^X255N zT@zuo%&D%C-I)BSl#U>Mbi;!;8q~Cd`m}`I;{wa)yYs&h&??}+5YXWgFEVEU*UH4C zwXqAxH|C=Qhm-kf|nx%AkkV1Qv~Cl-FJ^kGG92bH}j?&&)7aJI7a zsz;%`m?jI#nq=#-z@YmKsL!7g`$NJd$(@8R%9Ck~J1G7W7LTb!*}S2@a^Lal0! z2d05+(M13=K?%*Vif3Gr`x>BUqN;9PB#zFH7*py9yWBS%TwixE&tGe}-n|H$)^`=| zF1rX?01Jn3s??VqAv6&*GbB6_X+B(yA@4kl7yzBm11$6~VV1GxCyFiGhLB=MBzv`j z=(IRMHaxC)4|?7kk&?DjV;opBI}p((K5m3@^4Muj&v~YjP_}N~KFij9(n)APv`LF} z=OotAG`td9I{jRlC!CbQ@%0)T=J=OlDQBBdhK6~t3j3X>wkt``V6q{Z@GH!7@_}y+ z62;Xn4SiA>Dc{xtMI6d$0~q-Zp9L#w+*v92<^GucvoP}IgJJtGv~*1m;tk|Ya>+#g zaD-#XUS7uxvI5soKNBn`8DgKq1e%fE7ZT$r=d)S3r?xZ;AZLP z;91_wz%O4Xoi=x0>rRW;`3VdKU!LCt*7q?<-H@7&J?G-f(x48M$s0}+DH_I?8rx>u zXz~9|NN>?bX_&#CT3?b!*i-&?Yvv6-X(^@!BWvcq!U@e#j<2b#p$X-Y`EVh_)b{Mh-)d!dMLqnQJi|wK7-TC7* zTRfph@t159p>{0Y6-eOKkELi;n-^kSu{nLNT{aW_AYgv;U#dFW3iJ8^6>-Vv|G>+} z=nr^#*gHC`=y8DpMIz7_DDdo+c-%Nj@`?no(q{z$0{JSP6{-)=3%j**Dc^C*#iQZU zh}HUTAzRKKmU`-P&8 z|C?j>Z=PDfuc4^_AN?AIq5p@w767*vv;S}SE6NR}lYi6UvuXi+7iaPCh)W!juOLH} z_ZB0kh&~WwNnL}UJ!8`yi`PbS^T95O?#T}>&g&tdy~?v;=nPjSW!!4z!oJ zA+$s{0846lY3Zhed8Ox$+QDC-&QDfH1X|3Y5=s&!*sj&ZA8~O}K z+Moqj&?d#=s1GrX+{#ip__+3{@{cmoE1N&CY(Vc|VXPXo!6a}MJO2kD8^%guLy+#^ z=4ru@+lYO&=hd29VqrekeCVJiZC?MqzFMQZ+Ii?(YIAK(*=nY-Yy0wNjr9~c=1UEN zk_$~93i24q3_un1eB0U&lK&S-oPynZ5*g1e#ZU~)Oa@5=7pq*Xtu#}#2 zGw2n2tPJySB->$N3|`-uJoQTLA2)s>)Icr8h6aIPR75R^uZ~G=b zED`tdP6-TMnX`Wy96e{@w6=P&Ia8U(wdu8`=i9GPa8|aI|AD?FYt=FKT?pTUz;r`Y@e<&4f|8FS7v$rh+F!cu&Ln$lr%;R+S-MvhIx9Jc(z+t z(-J><)0n{ND97sgRhyp8PFib@NQ?q~db4PvW`l3`Ed@kg=D?&>S(=4I$slPPRimhXinGblwZ|8COYs8V`&{|UTZ zAZYe=NzE^pe~F{%rmzSN7oRRaPneoCyPq zAF=*bBox5aHIcuI865^YrPG-^G_2;Xmj5V`WbY4Zb~F!Y@??FekX+TcR%wnFvGA8E zxeT>-p_$*neTGLv9t*VqyRR4ZU)^4>ynqNZP@B0>Muv#SaPRLiz`d+~AdYKpP85_w zM19$y4K;L{EVw-@IW(U)`5{ZCKY4~bsPbVRpX3UK`AZ%fukIt~Dba3dTRnEjJtnou zl((!vVpg;17H{vDSyk(;*Ge&9G2V|@IT@?qYE;v|Kw}+)2B6l9SxW_1X6I~7DI?_! z5{NHtrC%_45#DFG_`o#=;AK2{^IO(p)s9j#jeP^r$?V3{m zthK;NZhtnuc;v;IMIU*a+!?H=CvX6toRqGRtki6(Nqq6w*OIgfDP5q7(i08uI<2Wgi4y}OquvV|aYC7TFMcatehLh> z!=MZIf~wwV-sNERqv~FNWPk>-ff|k%?Qm8#^#fk@|0b8e7Y_=jLF|55iWJ+WCOUGf z8}?{5HcG%E{ZTMT@>%vfL2}rpYH;QYOSrElOMA(dJiw8Ue;2^0q8U)_PPX${BZp))Xc&AjSjaI8HM&5oaLh>Y{+g2y z^r^UlNU#E|W133AKP(;lfTaWbucdhu%S0Jf1my)0+8j*m>*}}KfkRQZQ{k4308bcc zP?u?SPuyAY9ofxV>N8+c#t{3{#Nm5tW-BxoJEwl037T-io2qBX|IJ)WQkrVXl!L1_u}~|UgSJ*+Usz=;y_aU z7BhjTs#+`^*&i#SMEm33hX-#7uP^@arQbg(XS>SK=H+Db7#_0qn~k>=hvOUiG~p2O zo587>qK_;|_%X}@MRe`ly^;nruSH~;Jifo$Gc5$yR$XZ1N%eQ6OaxR)k{4UNLKULM z13-f>FuNz3zUUeHW1NE|uNiv2{Ff)`+AD9^)B?qI;OOQ%Tq?8%M9nrS1hs|PbX;Xo zhOlBU>oTzg^Te5IxEsr2Heu zl*qssr@_q`R+`kdeD6*f+7m6H9mo{j*t~haz%ieM&Lnc3U29C+GVmmRSgwHV(o_-6 z<0E5SE9C6y3({$6L<8*3#l<&D@2lTkl0R2wYls(k5d#$V)&H87B^pJ}IZwrftS= z5N)8ghB64~Z@v%mp>lsrg#t|lMZ(9z7)$}tZ5B7M%sbOB?)wQ6X#zS=BJGW%ymn$*X; z&9kNJLFKiAir(5;U9O%F5ktCd%$F(c%&Z9EKEO}J<5vzWY_K)$J@hGsnwOR1LNOHz z*{0PY*upWHn#|+((L$dzojqDS`i&NQk|fzi`OcaykO(3n{ovlbbQSKcRLH~x11-Gvg!0ELcV2Qc5E zIS54!rFU>2LvzurcDPSB2g5WYhAzNNt~M`#+NL|OjmAH^?XLbgjY8F_S;5cl1JJP- z>YO&91=`j8o@fCNd?d6BZ_i^M3T1xphrjNA0mh8|9+1JW=`;iE?_pR5zxR|UFk&;K zz^G!$tJ7vHuVwc9&S2p3-I1ef+tm)Gy)DYa$K!N?T}D8u->wlfc+l%dWDu^5Y^lw6 z)|!j2e|H2P)rrRphaH5SGI>TeZMdXc@uSIY+It7Tm0A;g?zV~GD7)g=pE=;N6)M!t z#1nPP`HXr>eKT)iBQX^#@R=~&%>Z3TySy*dbc0?wNk|Ww&GAuL)oO9=g&*+61`>!1 zlb^6C?2U35}f2tD@9kM!w#Vpp?Z4%H5V+nO@SW8 z_4Exq-K^75fV~58jdhD*u5pu6BV^EEV_#%TzZXKMwHp7aezO}&ZC z=)vSvXOghPUsICBm-F(&ZK9jKP$e%Sv`uo%M6JbS_E^0|_W{2_J648XOtpo>J!1~$ z6ide(Jn6U}1K-A1X0}?TVE4l!0v2%&qYz{Rl!FyCIeeawm$-YIA0VFhJ6N5y`46zH zl`+TLjr+GDi3?Zu?IzjP=ZW54DEJQ1j^PGUrdHDDd1fe*38k{zxLluA8#29-Q`6lL zj4ABa|D1jy6@ka{QRP~g{6b`5J$ymWE7#PvCo1)3P;|BM2Z`tn^Da51-b?Mbm@)`A z>-+kpP0mE|wk$ri@Qs8JdzCs-vvD)ino`lP*e{nZG|b6yMHj;f+e|;@Mk*Fe7K$Sr z0fs3;28h>zouT}BnB4&4$`$9YJIbTx%k+e^FSRmf)ump-R|hsNi+$gAqr6lIA*Wc0 zpYpxaDA1i@9mqDl!aRbqYlmnbf#|{{-;zC7TnT2Ak{|E{b~L}w!LFJ@$aIm?%k5>7 znB@0jkzmc%B8}1AqKr@X^GY2q2&X(a;D;K_|86bN`EB_5-#y5Q#2ZKZsNKP|C?na%0!o zB^Yf1JSZ@}I4q2}TIiAhy?nbxH+we%31Gy)=RyS>Y3dQ4AFxVfX{v>ZGT}l?W}j*! zB#u;o7O-5+JcxTp@Jz%xS0{7cdAw<9mlf@)atoVF)bKmc74~5qpbsnp{TyFn)Qp-f zw@ygAfY0S);!+!-*NTdNdNBHZ4CMGr<;fxb(E>#62R4hFnEQyj&nb@QUP$qGDcf8; z)Un5vNY|(vwr`sGe|)`3h6D1{9yQ@%7sFk1jzW6~!kC~w&bi7`=m)Uctp@RD@UQvP z0~glJE?zdzFC~up11izruRK^-^%?pHKT{NqP@C~y`cMb?o~uW(Pb}t{?;aB1)1VG@6?E~ngQ7@HQYy378JoO7BG(?T zzge|gCx9&h6mbVGg;;BRlK4aOZLVgJ&ZYU5x(bNM;L78~>9A4Y@lC%qi z6B?_JrgcAKMiAuKM%ve9=xb70o?VI>U^*WH`&?${eZ5f_T9idHEN7-=mX24-`eA|m z>COp(kEJRCf^$j{>3p-JsV0z5Wf!>*_8Y{jQw$L7xRmb<3=A*7Q8_AAQ1v^X*0n>x zVmhN}wx(}qcQ^6X-iggvP*CNr!^%@UBajU!Y*6PIKBqgAjJVGV&O+%$JxsUeos10H zSs!+UG~o8u`>TE#FTe;D>cI)s+=+1*!`O~D1(s~+B2~jVXgW${xWTU|E@QD@h6%Hpe7+p% z!N4sm{C)rzaGEI^(n%M^PseU^Ihb^c(m5!?EIhHDmscP(JJB5;@=Y19ndGAcVfR|l ztCIA>!B_H0bzbkuWC$qrgWBCHhY}Z=bNpV1L-uX0hzJyWsY64L+-_(2KN$JF;~+rJ zxwGgC*6M{-LH*$jw7?lVKqibaoU~ACV{Zd2quZtZEWQJ`*Vza9a(DekzphyG;ApYL z0^T3)AV;`ziI;!y-e9X`hZ7~nktBz+0}&aaT*0$a2w~Ctyl`JqrNTzFUzsR$>Y-}& z(bcC_OXMX?pL8I}hw%eOzyOkYR2Z1Hq+@eAvArXMG)S6=ceUOkjF~||+&d^(Ll0R< zc}Rl(1GJI9-INA3i!S(kAwyyiVtDJN%rB3He}N^UbIN4V%K5L~^OqMYzyL*Mz?|vU z-D2cF2V?PT{s9smLrPT4-=Jaq9-ZYL{wH7nX5m7c;raNqv$yqj0f+qnBe)$O`rSdH zLNMg8Ve(-pOdIfO!_mW=p|4`7aEmGbUpQlmAPx_J5pVw;X>hMXk;X$)**qvdz{uxG z!7ZoQLx`>30ys;_t*eDzoVP#~i>kf*^jTPhM(#vEyv>ypySz|F>mn)sPh#k>FW~%e z8{jlDA4@b1yf~`URg3loYQ&JSx;Aifeo9i4Tj5;e#S^c0!O6@3El8?Bh||wFLf4^)xa4$GbEE|6eY<*_$)N(j-@8?_X3JuMcowlk znVN(%By9C~GmVQJIIo=++#niSNc8dX4Ei@XmdMeukMf~eHU;VI89xyiUG>UnxK_8* z7|mU3N@cQ?cktdJBJPGIhtBVZ9O-m{^e#ShW^n0@gIwVq~?=xI7iF-A_EJ3Aio3vUnYqiQ8)Q)AG`)3w)MB}q_c>}_p|nD7DT&%w~P?1@oJov3JPriQ)RNr_p(klo@I-8e2|{wb=(syrvUE~w3Zknw7#F;v7;?cdEW;busrgx%KCaKnK;n>?}C=l@ue1s37 z$0-9@cx&kZBN5t0eW_UT6d~p4avc{yLCv;c9N!pDWBb6jQ#EBH4Vcn#!hAe*`4)Pv zXRB0FK8CIp>CGeM6<-KAxzxL}!}>on^qPWdxD84YQ;V3r-E}hU60!}JYgSdXG^v8l ztFRfvhVpnL*qwH)DZ_1!Ct?`s(yhzI>r$?Erc=-u2x|qoJv+Epq4g~lj@C;B z)MMYG`RW4uU2`5t1*~rwmf|B4i9my&(;Q6Yrb^%H`1G_TbN%Rar?U1+eeFJ|{b#)M zeMB?lDvrltpidqj2Tw75(MNc@Gp<$3b~kW+7hmt@SePZfmVshdD;K?|n&T-02Z!5d zEUhr5ZDII{lFVv^zS(Kti39XNHp>gF@Xozs`E|>)30lbUO#$x4QOpNa1drw)e0q0E zNy~Uj&keyp7$L+EZEpXxGL)R|n}Ve^B~s@)qGMbZ0o=-aT(yg&_+F568>fZ$59wcy zWtT>_I}BmNBO*8Qs}8>gM=W#qk3)Ssr*+6m^jA~jt>ptz)O$$?%EXw4D1L*OFprz> zn2PEyW5pVwTL-sFN8v;s8g(46wl-7mtK69++|`q7_*;y1&8+%o$K~>Rt;Nzp^#!Ov0Axk7Pt&g9%BpKAhGGhqt{(5*QGz8D^0tQ%=+=Yr11`O-T z?&w)P-R9}u))I~yfigq`80wEL1~N7KdlP7Y~$dQTvyXLD|a zzpi`DZ!q(qQ-lT_4bPQlgks;h??Cs+T{3wXUWFHo%{H5=uTVz_CVWR3=A$VcyCwR!LQ@N33CXr7D#poiqrAm3W9FEmZ!cSj~GbR)b5TVQN)?+C7 zEL9iu3I?GDD(E%D`(jWBv2HiZlQ-#HM3$rUJZ^aoQPm6>YG&{Y;1@CYw2nUml`>cY(0$8p^@NSmVj&)5LQL^eU8MZ26WN%ZNlw84 z?upXhWffPmGElUz5Y%!iNJ3r4c(SR6sJwLfU$8gar}u?h#2DLYqhvPZ0F*kE5*8Nr z@bK7Xz=n?_!Cr&K>H^m)n70*r(9|wO5VDNwP@zzDzGLVSdkxd=s)z|wwkr)+)bP2m zun?$T${){arFsevW8_-feYJGt^&%7~X|==Ij%&GWJ__j63lZ`Kao>cEQz3@J_aCE$ zVY*>aiReygCCnQTBD&hJq$>ZAC%a|Xe%c@144?7j3$71X&O9S!axQOXzmg7n_*EQ< z2P)r70Y>Np3A2>6?EUL*QQODz8U2FE2c7^@U#6y5{Xususvb#TS+)rPkLoy;PA)H} zznceLZV6s*D^g|7&~<9^zZ3w!R{@Y{Gq}3CdZVTLEc_P|5#5Fq}4?>vtL<4P?U_{=t|+d4IPHV}KTi^dyc0xsk@ z;7ma4)iR(Lsgp0U8_dg2$2#5sz}&rY4fdd!A{^kuLaZ(&%oF)(mU6~3Vo zn7gw#Zs5_nE59`Mtp#WWA?JgOrV8)EtVvt8o6ZT`jQle>lEC=((nl|VVdp+=3?HEF z#Mp^P7shiA=rB~;37!HkG`vNGgV8E4d8sW9)<%*B#i>CrjtMHR{ikx>65?P9LDD1$0k` z01?W|3iMe6+z)@$_(A{tu*DZ8R(k6NoVkbXW^UjRxVIaCr2o4<|BC-5gzwvnk`n#B zU-I>*@VK*rfQgwa=>wsy$3Tt~a=8RD47cqU^Cv|OQD{hT4f^1EM_9+$L?1qMP3VDd zFPX%{z`1{e?v?L|2g38%hp-OH#g8@u90k&O8}uvq99EaKdf_zmN%ChP((6ufLyt{* ziX3oDL%)*G;jO{bhCU37W;SE0F__+P)`iIl~q;t#M%$R65@#q~U^ibWm)X3?wk7k%pC~JAs z7eS`mWK}-r^B*<(&6_0*8?Gzx@-*+7vV}k~zI>(BP*249VWot<$O^;V`q~SNEgz5p z!}O@J+dJhaAxg0@hEyc=z8Dbmz|gRPobLFK;|U5wnrh%iI5>AL=n2p0{R)z|@J35u z<;_33E~#4eU>dsYcdV}yNZB|5hG0N$c$nhqKoHt)OLf}kG$Q@xgX4p(3I!dnXND7| z2Kym{2J0i=aH}@}3g1FR(?@T<8 zys4bHJbd1uS|!wy2`Fi=>X#P@Aa~)L37603$gu>^c^i%3u%IP3NvIcr=)J$>6H*zQ zD$8f4B__^@WlI$7tJ#^k`J^8C5q|yvzMOpQ!^Z|r9F?Z$AzQuzjg`zK}Kf z#ci|(0Zs$w)wa!b1_pUW;62XgtZ^Tv+&q*3Awq22KAKnL`Y}iwVXwP)uPgc+Vh;*2 zq9q2_Nn<{dD5?cedH7dyWQbA$SNlAYcRC|Q(@`W(jhw-q$B7U!e0Y1OAWxsK`YerX zj!$hULn#wOGHw;iGi1J4j)m!30Gp2PD-H@tW3n7An2rimCGbV=^7uP};2Sfp_u2jZG-tVc3+V3~(Vk1PYU`aMe!od_THBPI;c5 zh1FH~*zSi;0e?vfCFNB+m_ANBO7v7wKUo2;cacB}GD^sXVhQrFd`Nv!5AE*TWnu`J0RZ>PZb{Cyu_><)eLN7sJev~firu^oDqhY=L= zEG^-!lt=C2o*p~!2i!LYgZ;2#G^s$(B=*9lDvdr_lkgU=@(2$J+1VxYQN4(d02Kz2 zZ^QaXXsVN8eJPC(>F>eD^DE;+`yCW~mbsNrP zQB$8I!$Nl57v=iGH?7kjuIAD=WgMcKI;ViJ9SlyIL807DCo_|8);ty8Y-WABPM?6!~2iN z-!azVAs+mBU!*>Ih#kNpLFnvo0$v3jI|3oN4CMyG2beud#&rVx{uy;9LhQ%H)j?eicDEm;Y&yvTVb@X733+KQM;s9CwKq-%k8_j*0_L9Xns1%MzI;Jvjk+Fbk(SgH?+@Fj|ymuiL~aU^1fz8duMCAuI|5SDeP^w zt)7H)ySvQ9xGtMkckf%@pjtz%z3%sjOeMLG;+_K^y~+m&D(i!gsa4eVpqPulc`IQn{>K2>cPJW zO|M@P0-4WzuP*`>mRY{eav-SiO;odWi4$k`zzVtEeD$>WO(credakhDX=zuT1OewR zeN#zlke|aY^27aqBm;Kyy9eobdOR01niZY$FI%OaAyt_K!uQgls=>Uz8~&Z;`qnD{n^Rk6&fY^l{#)#v(qaFroY@6X(L9@O6`jOR6TT3I>PQ z?qbBmFg*@>lPS2bf4Ar{laoJwT79mj{MZIZ2AKigH09~&VfhAsngU7bE6s>r?&4KP zo?3^P;V?*K-#4Yi8l@6zm!R!3EvHjDj-pJ(b(wosq0T|fog)THq?rDO7?gL+Trf0; z=%ex;Pd(78V;RlMHNL`WG)p?RDJ-s&xCBZjujTPF1=F_--YvEDySi8v=O%sbQ`?Ev z{fT$0&170CZR5Obw0Sgac*@z-EABG!w6?UcN5HX-*7zkg(^WxI*5Sv`N7=flGtVAk z)2v$j!Xv8NN2tt>vXF~zB3((RgR{@9B<@Bjk5M0#EISWk3g)Ywx-+#+MXwR8p^DIz zoh+=w&DgQPsb`3e84OE{lxB{W-HJhv6AR?U4N1#7UR4f9o>$qAr(iC5-MpsgWLLj^ z+-xZI&VuK3;QLr%_!{JM2+>IGTlCuiRj6duQuUr)tQ1cOUKOnSiUNO;Ile4;TFbrQ z8OfKq*v#h(uKU-vDO(?RzJ-YIM-(vnw0k#All7D{Ibu+(H(W6(()6h4>2vnlMDwO_ z2bX@5K>pb=Fu20);7^B_*7KBY58RBTNVBBB87B9gu-Di;M6!fNv21Jd;S2z&Y&Qre zDCoXqvYO_e4MBb(0s*f0Of_Jij3fpKB`EJ0au4>V@*hiW1y>XmRvnBjz|OtrSu3R2 zlYJkny2Q#<>lqhX@}vNM%X*NrQ7Z)$yR!QwatrV6QyrXO+{X^ou_a{(fC_c@*KQ@Tpwq_qRobN4lK_X(rri%4t@xgCZ(l zuRsEFo+OaTtS_-%c$+JDy?SU6?Q06cwbtD8tDU4GFOZbYQ_#o)dugYi9(a7hHUS(? zv`7F^Oh`yelG1bp-c4}uUO8A5T2PLBD@z`^tsfY|=AJQB9w)_2yM=zTXgtAuHXni%>KGQhsmAoy zbsaS0r2YG7(8X&{yugREp@mVdTjjg^v!R;GT7)Vga<+ENIV11;545xG=O1ZFQyvJY zdt41hqX2B!`9u()8CbmsE1xtzcX07`djFeIV(Tajjaga>Q6$@wYZIc>bSlL=EbQqh z;206GFG%c7&jt!$Kc%bZyx;LEqS4+gu={}GK>RYrDnZjV8D2HOPNp`CHhjckTtr*u_}^F^PKt`H@|bCnwD1BLUx z+0gj{zxBwh0s#tz?P4GH9kz_CM~Y5rLuu7h=0-U+!*80?!iSkrMwYHZi&l}$(+~@| zT~wsq%9|7>ESYxSW;Itw`b{2{5%n?fpKNZeFYm&H=^02?(6x)OT#7 z0v_Ug7eaEZkPpIMOnj}~f<0>?PYz04lL1WDtAu7nMAWbgcjcDoh6VvRF3vZ^t=BQz zu5_ejCiF=MqD}oyX)3ZnVmP|yUQ|Ee;*)cs{L7j)IW$PQhf`EpCqhl-r7_HRA<#=y zMB^clJZEJGduw+S()-kKBDh3~C+3InuXG~7JI<6w3tbAwj}C}M!e}1Bxw`%eHLeY9plWE7y17{n90F|1PIdgbiaCjb*% zqXpW}r%aNMgQu^212Kes_J<)FzFTEn)j_|GJuHq*^3l$1PKcLfIXCc z(Qt1?p>%C&PZ$wA{8iqVY67U>nF&0EgD4O0X=mpf)qqHvK#L0Ix`J8M*piC42SC$a zfENh8uEW+ElYd>NAjmGbDOKZ2VUs4QwC6EaTVd}I2xGgLdpgx%Rn0Kn2-s8LQR%i!h^gKFgq4yEyfdIb8}rc`?l5= zqVnv_;#TXiaYVTxS3~3B4)|^5*EK8DcUj;qSz#S(w65u)4X94Z7uC?Z>$Fzbk2N>& zP2o=;kXCZ$x6rn&V)*w5 zqLL!ikp`)|A+Y^67_gZ#R3$Dw`Ac&xoDu3d7W?@4`3%MhudSh|PyY|p_W@wN;N2&S z+?VbP4_d4f1S|VQR0_w0%vzt&-+6l84=}g2%&O{&_soxdD;PzQ52c}u{?ZlS%&U^Q zSIwzueYu`LWL!Nb^^|Fo%np2u(Vs?mP@4E{|E6^#;<-&yXtB&(QRe{)TI9)7uYO)u z!t5*=g7y+hngjIFSI>p#og_e?q?LQ6ZiwBf8-1GQ^o!!-YE>yl**K*xD)P95{mkCG zPjBE_$DY|ExopBEVSF(rO?`6SH+QsJeVgwOL8gkorv5{ttL0W++()4_`_lxJpnc4? zIjV9#ctD{b-*~t`-~S&ZIvzFcWNlNPJ9Zc-=Rx@5f7Ivbg{k&VL_2vTO)OHJs6|9K z5jf4Uee)_Juf+`A?2qf`%JFiXi$KP=r^b~giIK(ODTq?s)xh9_h62^D5)i>`1}4+h zPI@-5ny|{J7>nl^*_j!4>F>Vc_s>eWmB3A$X_e^}@FAaxp5v;)&*>}PxJVOj+^9EV zP0FmLHA;4%afHEzHbH<&cYZbQCaFJO*`hJS=6XwOXT6i5PoW7`TnYk=L!7Tv$_?jN zo)(3>%uJhyUYn>1=Y35pptmZ}TslPi60H{CWtyqC8GL@3_{?9-Xh|%90FMyx!hlBC zjHh&FUQ`ruzNsRX7}}XM--nH}^;9pQyTKrrbL_T0W~zIi0G>-|lU#tEC>B9x3wxQ_ zDH&u1>T$a$rmP91QG1>Lfcx|()=2ti;*A6gj8aaW*6_tg`Wbf))=BenD-IOze@u9a zNh#_@FIQ1v;Jq>t|8(MLmNX?z1Oz@}NgJ}a@Y~0zbbE}b>5p>p(Z)TdQ(GACq+nFz zEk26$DswsE+9u=0)0U%DfU5Pe)3N8(l*{)h-u_C+g3)0KK6dP?F$3wnEp9wl*h;n* zcmSMrsu#6s9~hgsHpwJyyS#Qlk}I3OP|inK>KJC{HNr$tl~9o$NhQzXbcyyvLzH{L zaD1t&n;p>imI;R)*Blz}9QBnyn{iFfqi>UEy(Wmp;qk#5pvY9)prIT{m36Ej#Bl2G z+O3JHKgd#YG!mn0L#;5M$?bRh_|;_UFrV{G9@*V%mbuS1e1%h#;&}uL{tK!>i$2G) zhhR3+)n?FiQldSWko!Y1%ocC;(U@EnKb(u3qYBzl23i7=&`hiW z?K`&Pd64bnI(FOR*@q(aRaE`9v^z3=XW6D(x9e%j|vb6MjsYH6eV~iHmO%LR9rPI9KC&QINUtjEl4{es6}BuJe!$J^78LF&l==Glw^VrPj&Mmj6ec&m zLb9r?3KIja{D_+2{!U9rD3;QVeFofNvZ=eCFnxZVIcIn9fZ*gSL2n27>Cw?~y^qrF zFKdYAh@Pj(OX@5)N!aXu=pT9|&Q!H&*J#pA)86S9(Z}j+9^$dj47Gs&sTH=>UdPG( z9RV_i1A-u6^Rh9!VgHL(Nci%}Ll5s|wWV=jjx`j^O+94?G??67EC9LvLlgM@J0N8_ z_6~Iew+s~90WhQC2n>Joo2YwG5D=g!4yvF$phqZECyV$8u&d42@NAW!i#_=9%Ih8P zMR)EIkw(jkTV5w@k1TJDp9vfkRFg{`IaR|seWbSdQQJt9GH(!Bvkp_ z(B>$&LuQcIiUvJ2=;0UuARR-cToSgltMUCwBx(XYbsg1l@dzmueJRyOC6)Q*Sl?X2 z{%TP5g#0J%L(XJyjhF>GV5{5!s|DCeAhPaMd(9=gp~fS48%`9GIK~EvrXwU(|4`n9 zr)NXd-`hM5W9wXa?kw{Agt;R^`uBbStpE(C;f>WUI`cPRG&hFo)3q?Ke5*f{a!j~E z-C9FMwzKRh+06u&!~r<3RP;mO2)1dAUvyzr4U&u5ARhHgO6dtLyx-N;OsREj{x^5{ zs6A?H(QgWn{{A9``@|EvG{O}L)cp4rtvPW!@&;{4=Z3RvpzcGQeimmOEQn>c6G=rB|zK%ay9==0CMhDv6c zS+Ek_^V{BO>^Uloj4XAJz9q+%E+9-(_Yc1HQ6dTt7cCHmHi|>tg$@% zZkQoEd>S=#n1xkB!8brx2C{L|{Wp*Jzrw?Zn~#v?e+7G4l>Y_T+cDZ7NEu4k;;dn^ zCVX=-8OmN~&Lvfv;*az;6U~OyRDN2zry~n&<~Y|`!19a~gL86`pNpN%mkvFD7GplKe3Pk6zi4Ln}qgluEizn#jV zi-#;Mk#Jh7Fv`AuaEk-HH}ucE>y*EeB?C{b%MZi@!sY3=QKrl zLJwh%WUptX^ydHYjccNV0~h6@3GUmh?0Yk12z(6UYq&XUc-G2f-)zqHe|x+Z907Uh z((`E&JLA$);{L4)Ethh4H+%mV-To`y`;W0PKIEH^2&z@G1Pd%l zIN3F0)@bC>b_i;1D1Fzak_ig{kVfDoe{HTy;s66!ulNQubOAhev#uh@dzLGXP~@KU zI}?uU{qONtoLVS8*wTu0$)$UqFP4{@r6EoiOALb(WFy2R^jbO)ZUGcdWD(?&I|Ogckn?q)dabjitf&-B&D6AF_lB5 z2<>YZij4g$WRI(w;FXPtB%qv07T;J-zX8rW-Lz`n+gxwX*;}T%^F-k-6S6z1lX~w> z6IMlMSK)TOy;4k-6BbxW3&oy6*Tqb5Me zJb+xM-s#eDKc|{#)W?&;6h6c}i>=Vowt{v#6%}2~wEkM2)mh z*cb&^g1;J=_mG_j3deYQL%b+HonNASsoafJjrY1@7c17l#!6P|K!g@JZKoB2Y~B!k zOE1_0Wk{&smTsg6|IPdKL*1YJZ_aKdN*;&^x8mN-rnbC=pZVz29 zK%akXhZunj?mfw`9Sadwd>^GY@7UNPs4tx4?*5-XsdjwHhX*yiEVLUuyLii_imS9< zwzIY;jSy_7&ZT5nwCgVgGc+p$T5xueEfPB;jXQSVtFOav#G1M+hkTY}3UhI!=wR ziC-I4M@SbJKXsbQ(WiIScmquI*!~R}%IM!bsC|H3*o*gvE(qLbktty$B@cvEMk|Wr z3Z%dJ0BR|Ro;c_?{6ioFTr&@9<8cQdbK*Yy(f!4_?aISj0mcbqyU=L|=0Cg3kHa5W zFr;&3A`6s?f6!Nzz__`WnxX19t}{S8I4BQhhl6wjDZx=8k@I9_)R&%qN?|bqOd&}e zKDqrs^JMEeCP!fFiCr)$sV6i3&j-T{ln&GeFK4udYT>y)uvVI7v|{bTJ~jk0tEZs~ z_kD{MLVh&&e)!$F=Qhl5zl?v2vQ%gBw>~}oI`L>?a=D$kePff)a!J$c#2E08qZR3) zL)p0K|A;|O9x%v;5kaa`;&RngTmrRPY-pX0?I51$wrL+#w_Ug*w;kX0Q~eLU8h=WS z^!GWR{(r(5#0ETAD%I#;7I(((-H{s!$y%GnR-Y=CPf@2h)oHc2GXlj~UnqLFB&2taH1o z;=gjgIgs|Gw^K{ zq;9#ErVrlv#@am3Fjy9f+ynzV*d{Fhi<1D=3Vu^$@b38~nz&8M230hOwImlU?|cqE zc<;BN`);LC8|YH@*Q&DJ!9Q`rHvcYksr|33%0#x)%KaNdKFhec?vzOfXnxGJ;Vx&< z>^l_%Y|gO8m??ySg}a1SOd>`yj9$IrX_^^?ZcPv0tMQ1PtAtz48W&!>9GQTVVvJpK z95XL+B+wLrm*C~ZYLY#>*pV8*tcvr-K2lynRE{|#fV*vzkMzm{`vEh2-uyNNP)C8i zQP(SXbu?P;hDGA8wsILJ<7F(bfrn~NRDkq_Qc>F8m;UHiDC%+HlB=xs2J(54ZRHXR zgajI&?Pe))&n%6;`Pc!S{=?r5RL!_W#Rj!U3=LHkt6_Msvpfr;mbKV?Ro<{eW?r5a zbqcP*AiytSH>1Qy8MolpZ|bTL57JRej}EyD-8STITN_rZepfjBUP&KiG=<_NH1A)G zVsR_F`Hy8}nCceM;Z}6)OZU32oyrV-LXzdxA&x6J7O?*xZEqP><-)a%8Ylu%A|WX) zOS&6rX^;--?(Pn05RfkE?k?%>ZV(pI-OafdxcB1|=X>7wJLCM@?lIIQ+}!h;S52{i z8|;BDF{BLS5Luf^u)Qc0jJW zpYsxB`7K*nn%^1)pX^s#$u&5>dkis2IKBk(VgUd5bVBi}%z4)Af&19xI|yVF zi23@~VHR1Gql&U$R2IVMIDn$YdmnXda2{z|de(_S*huXaXiC#|7$CRqiIN2gIpiHx zKzj#15HKZi@!%i z`HKjBs}W4x=^6FYAymj5x2I*6)LlrQ><7Y|bhs%@gF^LXy^y#5i~;RDfnJ1G2QEg$j=1QM@EFzW z-{G;e>(b`L1lO>U+Y0TrLhxgjU5dOUP%TF@VR(>ZFzh`?Ii<*N?!c8?{`qCDTFo|| znik+~{>!~QZI{KY63mg%iyH)CDN@;ALs*Ktkh=bfz#RN~_&WjW;eOez z-3w(vFaB?Q14P8qwmOJ!mt}4~g0FPOwMVscTS~w2czz~0pyiQg10-Es=@WlYQ_RnSiHoFr=A+y^x z>eEQ3l$&4rXsTvB?>KvqG;6VgVZ|a=T!ZAFs*}6FsoA+l+8nlDL3}UO!b>ydDG!Ei zz;LRLTG|udSKCCM=ZaCG;+|K}GFkTiiCQt*K0_A2nYkc)0ckIOZa#2Ny|f}h@cU4% z=xi<(v3Za_5J1nwGCg-P!cIvePJ7)+BM!Wjelhtyre;!VY1w@2D@0m*E)Q`NK`f7e zh&OGk#?+fKt)2FMTtBrO5={NUd8dP^u4YWWQfTf*Zx8qZzb*H`Xuq@2A#IQRmn2ru z#YdHKPH#&fPQFFF?HF`@C=kdb+Af!6Jh5c^3|hYN#i&SwLmr_f#K~cZl&GD=GVtso z2BIFJMl;0iP)?31NCeX#F{}NKkC%RZh>t&3H?{iwA6bFe{fj@QIsOJ@3RZN6@efmV zP~bU(x315U>(3UPlm>hkSokG@EOwC!kRY#cS=Nx=sav?{h0OmE^wQFZxHOD=l0FKwgKR!so;W+=5vg%4t7J8It z8V_Wtpu;FN^06biP~JTSG-AOUg^14F#%G6$Cq)#Cu6l&R*H)wGo5G}(&H%6X+xIeX zBB|2_|BOPogV-W|t|VJp@TWqCNoYvHAoDg#kV7S{dK0rI*svq9f%cCymA+a?4_fNv z2s|I~$>zX$##hHt8Qa=pYFl#_J@Y})f9JrnkQ4Kvo8~}}6nJc?u;^pQQKF~!Q!^_* zP>reZe>}svV>7y>+9yaxT;%iN>B&a+?N^1{vW}mnz9}3)&O}s`0mo$9#d2ayE~8@u zpNQ^CfYh2)G#9Ysusww}eaLzf{`@QJ{U}CRNA@%Y>R#m+Y|fqBDbj@guW@gNWzau` zmuT~FhKCag`)ZyI>UNEpKL8w8^RoR}u;@pnGd1vxViK?LG4Flus(Mcna z$kZ*2&?1PxFn&Ch0Kr2<_HxFuQVYf?24DK9-;b9WwhNT}=D6pT2J!$ndV@k_m{%h2 ztJnK{ZlFNnyak*PT?Ft-8{SpQr{8$@D_TAHv~#(=Egs@c%oaI+XSH*y20-5?SP?#L zq51HUMD9c0Jws`_e`d9JX8vvQ))j^NS82jo4v;2RX zsn+97E7wY8KO|VIOflB(*ZV%sm0K@(rNSgZuiz+?L~?#w46JG;C<%U3-A2=7PNqUz zHC5XRl5&08Z2k}ZK|KWU<^zU!rP_>>JfuG(+G=LBAA&}gQwX$VNwbmkJ8VB~t+K^8 z<3zw457qJZJV64D)W0CU!67j9Ax2VUcwh4f*msLJdmi2**3EHm$1NRz5*DYuCgvqDn0qQ0V5?#wluzhomOFAkDMolt5 z_gfRaI|N?6uqF*<__t|4S9fAPcc`}mA30PF4d?<8V{iPbrUE*~J^2n8xLt}sW)o`9 z?p1^Ph5T>XK<-{)xSu=^_7ORc!gPo;)a}EHPtvT0PiPhZ~j>*167ASVdK;XV5aW88vI8 zVF{L94|c`}+~vJF0o;-o_Tnlv7&i|vHyF+4;u|rLD(O!#R9$$37WX__ahACbb7H*U zp~NXs+|&P`KjUQlc_S>fT&D0Sfe= zAhUs!?SLlq{AbSacf|S-6j7hgR<=tLA;fB21o+`)Pd^&|NL#m6@Dcw@d$`W&!6dRH zRql0wf-UGNFSz{lWRR_uNAM?XFNlc!`lPYeaoPP4t1a}4>;t;EH~Sze+)2%G;=I5k z?$$RSTbR9B5vn+9Dx92pQX=zR!kzIvseJy;i%!ij_cR!e6E26AoHqy1X%@7uUzuN~ zx^H%JY08adxb1rtFQ#JNQWaiaY)>>xU7NS+yx`o^{2vzJ{9rBapk`l6uwmJGnuuw; z(VhjVtMTpS;FwXP(m>Z*`KP2hGjj*iIoaKm{nrpy8>qU=)N-z`ie|WkM5z5Fd0Hec zNE~%DFG$QPF^q_RQAEK+&+br<_a+^_hR;0MP>j~97E22JN=Mp6A3P!I9pS;ra#VE5 zAEUb2pBUZH^d_}vD`zR7f&)x>W}oNX|7JsSnT0gX7&peeMi)COlU7_8UZ{|7(uiMe zHwn99I-fBQL&vqV$8^n+IZQY#%)PG2 zGc@@#=DEQ^*>DEZ3{mA)*|FH})4bhKb?mqA^2`p{T;S&0B2r00t9*U3&J(ZlFT*>Sj3X!ZcXE8ngh&Et4Ch3s;_h$*c!Msx?8n`e%{<}9-B9TX`s?KJ#0Q<6EEL}kY4WVcLB+>p;#k_=ZLh2PFIB-;ClqQR)MqM^wjF#l9+^ z>Y?fcD1ql(10ZtinV7@^`bmLrVl83~&TaA9n=eg7c>dTwBwe?JPD@Dob6bZ?&2((T zlv_27x>0n!?lKILPAhIZBlN13=Z_D2Pk@Ad{R_rkmH z*y>-MZ10M{t7iZ)oIY-e+!_@&8TNhWk@`MLmddLau)3ST)R%K0p!O(5J*WFY}8re3^*yWbjbtg{eCWiYgp){&n>s*JXW z(!r$prk8#sH_sIvv0}+S_^RnsF+Y9)oTM&V{J#dHwdhf2lV~PI#H0NBI9mHA+v`o* zi=JzK#~vB|)ONmnoCT0h@Pv{RFhjX7 zfvd{ufSFNRpAbih@s;(cpp)h7+T`Ql zj`}x!4`+7z(l`0c_q}+9m(Myw#P)U;2HlEgfnbo9j-MZQAnnc&0ORHRMUrd^m8+Ro#9jxU$G^Asf51uP)>IMfSx9Qj77f=0g62vSvHOOri24x4Vf5(!DJX znK;=}`TV%s0}Xvq2g{?o4)8f%^Eg*TjvC)n=#Yw=lfpZ_Q72$o@&oD|sN&TXPyWd@ zr6F6Z_i>aC)lX_H<*o+1Q>vV=6M*|S^Z?w?xJur?C+$Mlf*8840}tZnELhdUw@A_i z2lPZcKk+A1y_!$5dKs5&2T#>8lvextUao7dX0(Eu*9M~JwC?0U*dhg)Vc?6Ap2VY+ zl6yi=Pq5X>CWPAMJQZ`0t94W@Iy&NvY`Eg1kE+buMKS$?=DXwuyDKpwwkx+af}%q^ zzMe?Bh}i4!#ofNbFFBq|uZuk%b*O`Brm9^yHNcD*v*%+N#zDb|7*&Yp-X=}Ytt`jm z&s@@6Xr$6VvVAgrMHWE7&!WE@{xQPKcF?RS)xE8SmwuD80Xx)kM6ml+#ta*>MoeyeQGejykeQV0W7{9I2h2WD`DRKgb$^ zs#uuqP3kFmsY>kgH8P0vx7OG3yA8HUoZnt|Ct@YEJt`_*4i0HnAjMoLXyNX$Z*(lH zMVKsJHz{u?C5K1T>C#h9(7snC>ZSqLRck<~-$aJ73jfRJ0|^z`A!o#=cd;vxkpb2kUFBl|BAPkUoZ^9=gLwDjJ%r zN^C;l-b7t$IZ75O<`{gDS%2JYJk}QI!Y5);@+Ue*u4C(3{#IhvaLuKFJo%D|?sB^* z-dno4kMRS@0_)+QwIhe>xfA;_S!&$vgCT;~hclY;-1CK2U#<`Sq14;lBubYl^==xZ z*dlFO%^RP9!*w6#LI_gV6|c$bMbPcP<4(Wq93*J27)Ee5>Awg{@^VWBS#dC)ORS(j8axi5rf|ZL+7LTZV4FTvTm3R*1X?k4YML(#9gV zyYIHluMDlT-78+(ayA#WbP9@c7z2L1uNrxRJz12h3V$uhfhcNxR}4pNMT+YvX!cRiXC|EP zLF#-5ZQ9&iDDs3}X-t!?VQDkpN0BvCEiIwF1ody%c(kTIZBbU3Wazp5Kn|%ONOzRxNfk{LSq{lWUox&(d>w@|Dl91k`IJ9EUHfEE;!+C7zwWDq- zQ6$tmD9JazGtI?DIyg%7hD!-&Y~@K#QsleX06|2Y=ej+-8ll)7ax(}(4irnnSgLG` z*=IAD-xeJYk)p$P-5>QDmn#-;uiKj}o&+CE>2rf6Gd29xB~Rt4U@4P{(%_?reF!S$-M{*RHi}lA}^!6)8(@)>{mdLQ;&ctlK zS-gL)%o0>PZ)Kr;udF89#sRgs^I+qBQHl4GN?~>QAoyEf4blr?G~j?3r$kfT(xnjj z556X+i?uKjEOqlyuyV}@-==4;QvB}rQI!;yJNYRBNtqsq**T^yYyvD?GcpDGo=V>56&iNt z+l#68vAlSB^6AUVZLR5nem%I7)4JSc=H`=Zhi~Ff3VCD3in@94FD?B%877@@myCW*ndY>=Q;AsJ-4t7?g+{yYcYPxH=ksie7y=O04#98Dh+u@ z1j@dUNgfQEl@2B(Yt`AxzZ>Cj>8x&HA+I;@w)NykdRFI+ga|Xhd;LsqL>keN!)wMe zuvyRW*8AtX6IPZxez~y5A)ew{MStNlq9;zkxwj8ZAZ=(~627!x`y#3Zm-foHI!w=8 z8(f8D3Zf1$UfWz`k7+uEh^n-zd`nF_U5#?k8D{IloswbFLG6fw-}|J@I}*-tDMR9> zJ*nEMOD5{J4xzEXC#$G zx+n7dMuls3P(O^Re#)zC)H~oW?{t~6OqIr@%GJewfX$;fYkLI)qE_fOzHKv86DE?c zt6^F=f+1v$9wi;EO)c2EfFBr|u2u8|W5g3m=C-R`uTr#4ozRh{FA_aDtv@%T$i}l( zI_6Oy$Jztbg4x=r0EG&!sZMi!n(<|!Dus{pz?ZqvjLI$Y@l-V1`$1US3NEY~Bqe-d zixnuKGJu9CcT-f0ZkIoFmS#@6bDRELQf8K6^O(F(41vKvwgK8jj^+e4#gqd%#EuTc(gG9GzO^^&{OhRh-_qNk(#1pP09pVcb zJqSlmB%IJP+1j#SC4z|>W|F2!0`lmBXT&f$Lzw!!r9HS=k~p;Mm3`JmbiEYD8QH-H zeQYKL!i>2o=|1mfwhqH!B;FT8YZ;M*0oSQ zD$xDZNf+yClQHk?Yk-NUvM8fS(C`qB)wnoHd?FKe-vfS>(@ z9K#JFT$Q*|1;JI@<&B?wHqRMbQcMi(bnuZB5@IoT@&|rR5g8{;QkS5x#hFBClKVT* zxv&~(+d^l;VN1xbjg}0lsvFF)YAZ8;{B$MPRu+zy8ZNfW{EKO+IAf30TNlLlET4b` z0WI!YyKmZ$@=?+Pst{gn9T1_+bTK4-^Vt|Y6yr7k3ZmFn5hFUo4jmKrX|A_UAn~~O zO8?khMi0)rt!)U`8~4w_kunr28rK9W&yEy>Lr!QQ3_RIB`FZ&_*^8tmqpPPhVGa?n z(+u{H8(w?O`ZttdenATI(z^bk%gT4@c;u=^WBXwzSgyq4*A%yAg>PqJB5Y^EbL-@V z-Qdnu<@0Qi$Xirf1|6m(`4C)5#h40mlAI|+J)K+LjRce|551VVKpaslV(Uyp@{c&v z%EoZ#DLb(^Cve7 z9PbWQ^n1lda*|oPtyfglBOfI$RbNS+f|gH;q#s_3F3~-KA@VmAl6|>uI~O5NN|MXT zbw4D{NJ`e;_ky&OU-biQP6Ug|xi31>gyiUL=^tjV65=xg)l&}%IS z=)2w%OyYB%IG^LS7`m}J_aDBdKNurV*N|g*{awzf{Iqqi1c#(ZQS=+^%b|HuWp>Y!;g}ec1J!Tqk23cp=PNFKS~DF3R1- z65xZ*L(#Oz)TnS8-pn5yZPN$jrzEtch9OxO5{+QJyvW`0eO4mBgpZC`WXErC7l=S+ zfX|`k1-tT;t=QLb&A__w$1tjheLPGibOkBh711R0M=pb6v&g@3ahW`FmKl5pK%N46 zXG7tqCDF#beuV;Z8zCm_q89HN0WbE^#?FY?8$Dz_ijY8PrtXzW+4tHdFe<4un7OeY z@ADlvV^vLgy}LL*2XY(|q4+DPSJSRl&O~?fEgR3qeSQL4!%SNOC zzlu)-@skr_5Q|7!zs|hurDu#D3&#_Q^Jn@rhN$Piz~Over;4_ULXkXX-_5=aNNdFghJ!Ga;% z^_PY7WsecL26OcL!j&UtVk=6hC&8yN^e75!Y$2x6lB5U;YZn-gmb^e1rFo;e$u;$>+4m1Lp_B zpbZ;DSSc`qRNdZ(AkJ^Y@57F+e+e7mp}q+n!%%6_CErqG3^N#wgT=~i+QLOCBKr*)2YAK{n(#$?uPb`(a1TL6(+J9Z@OZ#M6qXB-F7e+tI{LGE-}d= zUL$s9R*kuO2Gh?(IS+Ug>VH29nzCZDwrc8MWV!rj3Y%nyj&QZ}h%~bvD z*{U7vbh*-PNinsBQMF#-uMuw=n|~RY=zoRXIfd=A3OIjEF9}%1n+gx(6$_t=(mKoAJJI9=#lS>!eUyaUT+G#G4_-OF_t(3`R z_GlS36U!LUz>0ePCfclFOpwWd_*7@@Yh!G1?6vlol$!;YfNW=W0dZ9`d&(weRfWze zcXZWs-}91O6Z;Nutlf-KWFPLPeXA%lD#kbPG%a`@gx#3$9Lrc-^O=)&$>3S7N+)iA z8%>3g^onXgfBZ^LS=d5!xcq;EWPmrOs;KUqADpY^l<4sKMsw!$=j`ILi{t@7mTyeq z6){e@9C7`?Ki{=W!qK)k5p2xz1CBLrsl=rBJ6V=8Fd4on6?eMXRYgAJ9@+i%aV5uS zrDVM34Kd<&tjTuXZ2kf-sFKD6r}7xfyQ`C7prfl|AW-A0v3Bwd_A6~gerQz>4abR8 zbN%=LpVKEI;0gTM7VhwwsvcwmP=EZ!s3Kw6W17#a_O-0Zlw@i%&t*!xak8#SuutzA z2I!^nfuBPfu3)5jy|#qlb*ANw&tb&QL(C?OzuRo=ZTB%_3`%tt&(FUvUZ$(C8E!oTV@`ZKc%1rL9UGhXS--X4@yTk=TiyZkTHP(W6Yak5 zD+HaBzt|8Zwn}9W41Af>1Vcjg6-7TGS0&Zx2|j*<8auKS^MI$O-@c3#a-3D%7U_+y zd>m`R`8dCJ*hOe3g1TlndRi}bw9FPao(bt)_9nN*29L67xcE&U3@S!`eHZ94>z&0} z+O}-lmRc5MgG4IcH1p7uyD=KHn;Z3fbvJk7<4EVvp{6K@f5rFVwP!#{FWaM&5b9Xi ztDQs!?A4IEe}Yg%O;hv}hlxDaYqOgUoAlLXb@3$>Sel4+8msg>J6*2W6U=r3g*FG~ zwNC+f+c{R_+A{pMVw|ca&$v$JTu6-ZMOv@1V)})(!9^;gw(tmxlswA!_2)F@1IR)} z$NR$+{AsG_*|37VbhJg(}Gngz@%SPbjpfxF1M=>!EHsT zO)uEKIsLg|frNQ8mYm|#vBC_HvH*a9ae}(P^1eo3&k)bFnRZUK3x3Iwqia#?qHS5S zqfsfp=@47`YdkwC(4?z8_W=&Mr^d&al7t`I7W-AUYis`SiKt^B`-v2-i^|%Hu8@)V zQpyQUu~5|O=ru&_e4G~pvlVnR&2%;z20Sz;jrlcPcz8ViRM$sb@x?1y^4}6GU5~0k zW^*0W)HdqUKTp;(Std8^EJmPUO&Kq}?H@-W2+E?9%9Y!PTU2pkk&=a#v03TqmS6#Z zXWUl2(!Ak)0Q)L$RFCU9yM3)>riugWi|VN_eF^lP!1IvniO>`uyWoJCm}h3){%S$j zb3<*XyHBk9rFY$F9*|)H8!137-@-hm5(n`QrrwT zWmffpsR(}Vkm(i*0Hr~K0VQm7MAPtYlRUXDO_XXrEqWQcr}7F%&a@44U(UlEP9Yo} zF;f8!TES*iFblp=p{wpS-?pBf1l1t5Q#h-6Wo`zK&oHhZ=?w|@ z!5pl`pb{-I#$@k%eul&{U!oxS2BC+Mm~*W76X4mzK17xxHq5ABO}Tm!MU<>7E?W;8 zjf}tvsAJ1k>D_H7uuDW}U+ddQM!=;z%B5<9a5=0oO06gv@s222$wiO5-iW61lql$% zXgia+8W(Y^hAx6hk9dVKhD*M2x_k;fj0AW!Qa89>6*=J3|Ak^6rC=c{B7d2F$B!?= zp>_ZTHV{4XFegY1@Oc_27hF7-U?UVU?}j0g0Zs|dNjebwy$F9R4ftv9wi{QCDbsk! z%<1xrA&NSo7gheyAt9Uv{fUR)AczOKc@4%Maax`$PXvho#@8zCL+8(sFjtfV0x78< z@b4BjPdZyE386hf3Wz{UDAM|PU7(uj9mqSc*yg8VF?)8nR+Plzb%l|ljRa3DXDfOr zVzr_2+foBri$^l|yO)P4_>)5<2lwW$!~NomvplQ2g)_pd);KmpEOI6J4YA$uWsxyV zm^)$x;_R_8KaDpZAYKuGg9jY`_Zf#jvC2OTlo$J$*r}tt`54A|D)IA{<_blz)a%{if@$9&t=Uy46#;zTx>n|gdi$_ zP@7DLK&dC=YjogK8Suv*^J&(tM&POsw2FqYCq@2ibn>1;++#}kExd)(!!-=?V!u9B zH{k~H0k^QHEacbP!3+$K);;wjXQ;ED-{yfEKbK@u z6-phw(!wLG8;Ha?L0wb3`W)z5yR{=k0&weDXoEP5T zAu{V<@_>0l4h=8oW|#O_6N8}8o{!gCUOkcLj8j2O zAt>QZHW{*cneTZ38k)7ssb9ArFKQTI4{)V1aoXQ8JK)T=2QK|sZ->fbZT+~wTSRg` zV;e*$t-efKly1vSZL^^i9a-gInU2G%c&V7x;A&U&;^M8rnI+NT7{lSz=3G!X^l2aC z>9~p99zN=9OeKQyB|Hyfp&fq?VYIk?3eVCIqYeA#e&*8B6O|+hJS;ZY^EE*VxvNc@ z*qO~Dp7b1gvrGxS;68f=jhooRl!m5}YMZV~^RMZr1%7(OJAB0PfC160WpM|`o8cb# z=!icdp}**kDMSAJh`r%`IH$GUh77IP)tESK?Nmp~(nAe|ao+Uj?jw%H$qS%|by(OVF`-ETjoa%eDra4;)lU!@DhlP1i zC%~?KR5M!um*wJd1xslgyDiKRk;KGXr0USb9#@vp4ip-5M6Zo@eiD?R7nS9kgcT~Z zKB691_{v(EC$cs84MHAa|3x0L-IGV4{8OQrx%J-dmc9)|w$Og87q4YbzQNyZCn!}h%#WNS6=e#%yh5teHPoh zM*8*uccjS2Yrr87!bBc?{lE(iQAPMG#?m_K{l*Qh(nHWOda?$dWcyix zF76jV*Mm)Hj(bV!FXZ>`k%a%v8qvx7ti z%nj0yE?v(}9(1S5zT?4^-3k~{#VE;5PmJBb^+*B5l!>#Cu}P#^odg#uw9NJ$SLj|o z;wY%${E$c(G(=q21xj)7VvT3eEg}$K#QXy(_{l2el$&QRj{mDH>GuCFOE$gwElV=~ zgc2BIr+p(U`vh&^7g=!S$$Cx|Z&L^A>DvmXPqAcfiX73u-gf|sUC9ioOBacKZOI1$ z+FA0pDVtGbLsBNEf@0w7-w~x`mt$fiE5$}U{u={Ll3Tzy+}Lt`RpB z$&78@BE~7s%H+4*+T@N=%=1Ta<;R*x7=r(#GWLm&wC4T|e~Rx#!e#zT^y#-Au722u7)c?I8rUVZc?xE(hli!8{Z$J4?}kOCmT`x1N7M@fZ+e;}m9e?~|h zkm$!OPEijSWQ=2vMvj=f67y@cN`FU5l(n80CnUEA$>+CbxQ`x+|0h(sf7P&_{l961 zRZUaJEuwH@%&NA{ME**ION~%@P?2$%G~`cT+*37+9t~(_t<2-0wQ)w@vw$*k$p8I| z_*wrvzBToi@e~JQJe{ccM<1H2@}GTZz;*D4KC~dfhI*Cp1pM$Th{O7K=oFwZe{)B2 zpHI(<{yT7@`aXH=j4E#KLb#*mjV6r#^cqx+TLEvmn0oT489+|ClaS;Kpk)a|8qqHL zsyW7)!)aA22QI1RN6nxL$GjFYG;UCPOSG7q2`IOfo5S9%fPCET(j1xZ(bKP!RTlE= z1=AG^3#X8}LTI47ts$+7AtPV2^7(?_+2!)QyfNG-Tj`%pt9m-Ebpbq)n> zcWh$kbD2kgtGwz7>9oShrs7<$bgSNysUdb`Rz22btaeNVu=#^w@3QHR`*(WU|qZKBq&hgp@Ly zGN>%>4Ci{+DE640NfGzj*K@JU>RfG%?@sx3Y7kBvgs zW{MR|kOHt~d(?FsRS2E%KL=3t?rF&5w!y3%a8?n#V#}VvEDEw>t1y$-o}-%I0*^x} z`ajM5%3&2Sp{VHx!^lon7f_Uqvf#^ADQ*v3h;j(Pgpqx>N|1~v(alp#%^jd;1gjob z3;bDdv&qQX~&*!UR%^}fWK_TbcNyj$6__jML ztZEv-Sr?3Ihy2v4CxpFieb=e8EE9#RY0-abjq6`SW`7Z)BuzN=<~E@m9qTg3inn{d z_o}#_JImd$GV?{*u%>+lgt*t1TS_nZ^IPoWZhaCXv_Tf7dlefO(|F&~HsepAC0^x> zz3HhMvnsusCY{e@?6f6{6&FCfVf4a){7^J(j=!)`;)ol(S>y}tPZSiWe#}5 zaAr|xrk<2k*(xmxf2(|QZx^+cXtn=%BR?#Xo4<@yz?2hB6+48sdNA7r?vlJVNn6{^ zMPp2}q6jx4r{ES;Uwr%iM;EWdVvi8PN^)6f@E|!wjI3YapSZBkm$3%?EqQhMMtj_W zeLp=-E^{n4ia^F*fcJYu$7mhF2CrSTIPqw?#12tfpvjwZl_&tst$U}@mShn+M)E8$ zm%a&gVk@P|n9|=hDvaoUJ>&698l*3+gD9HzwMw2e!l(|7M`kL;g9FHLeYZ=Hb(>f1 zF57Gy3wc+OK51A2A{~>vp!@p<=-Tk&SUt%8h#T9y@zMFYW--MfX(D?Xuk23w3UwWbA{Ke6J?$hDnwI z5f9C$u0k?D8yPL`&91@$YDA`5@C&m@{u`%xPEf;`M~S%%qRsY@dCYmfkq?o4tpoaI z<8k0S3Xd`1y8BtG+4w!g#E%U+^1tfKZPUa$8ZQ=ZTdU4P?zHE4_ZpBC`-=ccG3AL@ zWb_((X~1NIBW_ZDzw317#rcJ${BS*LkclE07$KAh7Jq=geS zYRqsg{wH$m7IReGCnqr_S0(w=77u8{BvUXFQ&)U+A;j260X+AnW}>~<_P{{t>iL(> z?TCdNZNrpEuM!3ne8b-G4Hlx~->lm-2kLJC3BFx_^C~Q7Ch*5Ars`CgCIX#J?)~0h zcI1g!=rj9pCu*ns^eCNUN&IpvJ_eR(A#>CKpElaC^YrD6ktG%2nuD66>T>>dqv7yl zad1WOrBMr2Kb3Z*`CyX?~wmh2H2gbPAUs_X!ggn#b9GUw(E?~$N zB8fljD5c-Kl!8YJxYSPKJvp1$^Mp}EJ-9w^KkXBg@3P1ARC9yR)9!+4uhbpG2-saa zS0q}cSek;3V^}ew^0s}S-O78lRMW{zFG01$4L2O;Wcjp?MZmpYpT-7rzt(yCfzvoi zBE1aq&Bsi5;mIh3oVQMGnpX53{XLx>A+?N++gg5dO?(-Z&&?K~CMQj(s3ijiKfmzL zNp2~K#dZb7qPJx;^&8)+VlP~tt$P8x-VmD?ghl`r$S5(7?itd_y%%Yi?eENM`&Z}P zcfYn;UjAq$zIQ*742-d0K(l+Do2vNIx46h5OUtz-1yKAKSNyRa@P=BFK_3XR@uvNx zH-4GQgtp+Op9+A6=W8Wr^}p&ReP6ye_eu8_CWc6|U6^w4FyUmr^2j0a`Ra4z&0vyt z8_{-KF8+b(OQEkYu=C-S!X%lJfA#BQge$vh-`ffsxT>7;?lM{2NeV*AGGuz zbst+|0oT==+<)_h+gH7yO`vds(Eg*J^(eIVR8D_i0d-$eIzmE$VUDCmIrOs7Ym<_q zE~*6OW~OS15ka^H`0>cYxLU@*>37}p^w=zM>7Kc@s%F%&_i({cuOsibS?_^F%*9*D zuI0GWTU&96BLWNNdBx3Hm5PnBSsbz>v%ynJIG$SmfI;D~d=5-F+(4fRfsW|qK5saP zNspgItE6jp8JyBSg}_nb2~dc!$Zzv)jk&l}&(eN7{{(5KyPAFU>@6w`TuI|H-&u1G z4kAoqbM$PB8p%jF>)4zB3AmlERb?8>4&taysb5C9`z7t5Y=1X3hlES-vsN6UH_C<#Kx35~dY_|Sw0AA# zvg%EEk!DL?uc*6}3wBVBMGSi0AlG1U0z`NKGnt)_EL92a+ds8dM-f14_5Sd7 zxhx>d1KC@$58oW{uA*9PSniEn034AqZ0L%G$yl+*6 zPxJNDpT7)$9`HSxIMT&Xp&6O%Y&;Dd>Oh6@u5WP;`gsIZ?@ND_{vglJ^?rw)c>3U2 zjh1~`*fIf->xbWkLlil0YSEtN$G*fTnY+|Bm79-{%w#(tHX0Jemhxzp$I@t-`ctfh zz+*=XIh{4mu3t+UM|<*Xw+(xOr@jn!V~h&rg(F70?wXl)@{M2OF76fEgI{4Uz-_A& zuH+8PN4d>N9cVI!hHdPR?zzt=at+;16q?2*wH3;wb%F~Cu3z&q3UcHEc#Ci#^Ckbu zykwEV-S2*5w1?NtA6<7Q@PBmO&HvSPN39BU-9^I!u>OIr{JYlp?==C?hm-DG<$%>e zHBEKv2-swg&AX0ge@#=_x!g@1-I&@?0z&k5r{zOi%y{tcSDm8V64WHq$SuEqiZxAB zk>{4w?Ax;~rH8_pCk;36YUMKWdA?sd>&_(^Vhg>YR0axTb~k2QA{~e7==0sqOGVH= zyDpN&}LUY*PNX& zLL=*7lSd#i0&bA2K68YlibTgL`cL2<)#-7x{q?{v>z4WJk@wwET-aJD;kFXYsPhTC z6EX*QubfLN(|DEchR|il{$MJmb3G#}TKU}8_hT)1-F&q1_ zxSm5Ck$`>i%FE@YFPbz(l69cZmJ=nmF97}#vo6eytsKJt0<^UPXNDS}VMDu*tXUfj!tN;@yExg#Q`Vz*m+j>{ z%~g%XxKvH@uU6fhdH3h{*x9<4fy3t#$aw*;CgT9jRyYa!c~nOMZ>5hH zQH7b#BS|e~6L z755Fu@(wvXCQqR?jR6)@h=1;~PaU!2!QZA&cV!6p%qz&K9cSCWe)dvxV*Y}K%vM=2 z^2t{pCcUMQM0d+kl*RFb52;ZYicBbW0v_Auo6};Y1|b0Z3S0y<@3bu_Ffxyd`T(_6 zehGk=E{5!D(KK^1&{IR17v4KRot%T2xFZ$;7({>_sJr%LE$#k+&S z&uZCB5mQHzz*T7pC_embjJi2q0}`G=JpuLHdl|OJ_UvEaC-UFCr!Mb8FTx-Z&uN^d zr8>Qd?H5a|K`q&dN2oSq;A7E%mg@;0nUUEbutI+uGLU_;W7X9^+ST!p(V5L?kubE> z)?}m#sf~NYQq`5)DrB;&R|=K=Iq zX_LPEoK))s-6KF&^pD65M%wHCalznCZZ)FX#ue-m&RrbkKq(Jyq0FE^cuvi3VqYys zbeE4hG(Bwk#5MzNJi}2<~^TPl|X@C%trZ4k{-@>mkWSl~$$VjSHw^j%>J)?e9LgA;J^z;Z^MLYwIEl zEWOq-4>6Bujszct3~q~0eK}OO%!x@m zoa==joMMU}Ki<2+V70L3VIVNfIpVvkHlcV%bR8ZneeiP@am3;yZQVP?HpM`&4&vZ3 z-ezX2%%*xFud+WFneGpvqFhKnY)gR|I@ZfCYpq++rS97)BKNHw#X zb+){zDvY|Jg#Lx=)Fych5=4L%kk;l^&hg_Ne74{WpYNExe)N1Wyn8)Y5jf%t7~^c@ zkg<0MKcmQdZOY?zW))cpeLzzq_-R2&so(Z1;Qd8C7FSI>$&|DIM*1LAmr(08eK@&JW#sUz6`#oy#*!7g1o`wY?^HbMX<27!3S7A3A{WulyXa#x4 z;8!okjnUVWDc}ifsPE8Ik`#;f$Xb5Fqn#q7VpL$QKL0kHkfYb**E+`c=4x z=k#N-V8F+>Klw%hAqg20y9cav6M&U2zXhhyEd3^Mh-X97UG3RqS|#@`TRraY8|J9% zQNW{4Q26hlqXQnfHklQ;U9lj1*!L6D}+`tmqwB|J@u?B^_7Z3h2W4$)QvJk|`Wa(37&=g{J0*Xm1=^o7yL!=CSDHrsT$kRw=MbUZ z)rRZ}*afkxU>oO;8Xi+{5Vnd%9-ED=2IHxZDB2w)B;pVzXHrT7^Rk z87mT}MAm3Lnt|@%V$5jvt{SUodKv4+}LhQiH(%B|cHGi63|R*v^<)&>H3Hh2(%|a5f^uUQMr464JNRHrnjJ z`O@IH@SV-d2uu;H9CNwYP9ZtelR!G@v_$LVSBX~apA#(%ty$4#;K+lOeU0Iug;r#L zbxFM%ado5LE<3Tdo&o9swGFE4R4M81mD>xc5)!+F!+7(l>oY?+3uUzB?kqV5DSMIT z)#H4ri|PRU(E|;2t=d8L?7Wr8(g0ynL|rEv+L}rud_Lf4g7qLb{a`Zj4evM<{@9e= zh=v{x`ZC~eTYn&E{zopgg>)`SIvfI*27AUfDTOCF#d-b~wlS8+?ywRQBL;FO;4GSe zpq)YG__mtFRVrMO@&~j3uOocQZxMiSyWYP_wbd&3DOH!uAla>%p+B|ZT_i4Vu3g#;W>;xmc9*-v!ptOJzzpgfj( z0qUT{%R`D~Dsv5R&54DTV&j!%p_0>qmy{B88F=r%1)ZRrwI)MAotg@rM~T}DG#+IC zjH&%@$*R{&K;eR(mZf5R5@;^!U#~HgnabrkT8k7|djh5UfNPT2q%XZvf#T=k;Qyzt z?~ZGtYudhP(yIieXy`~#1f=(>(g~2zgET=zK>?AD^xgvsB25I67^Dc&dsR9Liu4}3 zbP)J9p!fSc-}`&>*KSUmbM~Cs*_mr*wBD|=S^iMayd!b@qfgCsG!369iGqPJ`j@NK z2Z$z+0zJ~ECN|I3x*OB*q^_w7*+pyy;O!R2s^0Tk|6gb|cT5x5lVQ`u=G%G)kODnT zf9@w8W$mk7kIkFUd1A+z-|1uy&8W3opP6mTuvvSB?D>lp=a$*Q3{7coz{|(%$<6(s zsf-9-;kNl_M;)`)qs_ADjd$NKFRfo93PWTm==F)RzT3TRXlH_~Z@%^!wXg@40sCW$?$2({E3eb8Bg6t@2OK$ zVkQFm?8hNx3(U=@w4d*bzS4qh9-;V?^7Zg@iRP)`xRMRzh~t-~NX_C%*tv$wK<|^# z!gTcx)?r{&X^;9BE_Ar!e)np3j63r83ZvsT!KLY288g8Yv$=8~(zV~t?(P>Fq!QR% zv_Km=RIPzb@~$e#zJBm&x>EWc2>AFNU(uXXYe$#qKlls6-(ise7d53VBrVN}2giSD zF8?dS2#M?V&rtJ~lfu}d3;wsCr`7y)F@-nXSep^keo52of6cC-<3-(G2=nG{g{TBe zI?fSA=4Fe<_s@(aIqwD_FG(ZQBdd{4+b<;~Lg9)|c@4coz}svlND0R>HGp>R=X zqAl+FRfVz5?cqofJ1um-;r%obwYIo#@2YKIZ4_)6GY0SMcQ$e4HNDR95YDmT&sb6e zoWdTRB-yTrvc$9{a=ZIQr#0$FvoTV=>If~@rw@BWd9CVX*f2eHZ;|vxufb;0PaAbeq#5g*paX$^o>q5x2Mw^#M}L)S8k)Dc$|~{6=IumsMDZV$ zjiR1={<{pC4D3tWK&=2BGFYz6Q2*OA0jG8bW9Gz8#bqNY^EdG^ z#p1;2$@*#N#gnR?`xa9|v~r~`#)glN@1Qg$TuecM7AVCB&CVE%lD8zm9RA>DifW$PXluKm!apCJ z`Q}ZIkEB!ssv;P#eyMtocP>~{1^a9$vC|d2e{ZKFc?f!WG4}BlJ$bK7I%nB!0i) z$*v1ythI+HF!r-sL@EIEpEM1$Bmhj@FB-@L|K#d^wD@(eh_KO86aWEL;f3F3O_KlV z0a(wCOVq#;0$t;c_asL6gxP`h4)}4L`W`aMT9Wwp17Kr(?rl1A%?*J7K*XYxZ1ga7 z(stcx2f17YTDmA^nbFBw?noO#8?TN?e;^Z>yvYKn5_$0NuMK@q(xN=D;j?a%Ci_BL zQOUw%1d!Xl_Nc`QlTOw$@IncQJK(FHDnl3B%1K}^aLQ#EFebD{dwZsHzq7|DeJVV_ir%V))*--vulcqi1Xj*KLUZf+TxnA7rupoHxGZ?oAJ^}-+tR4;kQ3U3LfrN z8+d#i1_G6Ay2MAIH9q^lePs$Z@?H1+K2lY>t3>i!4R0&}5abY;4?EjWn(7^}Yt^yU zIv3Rob@{7OzByi}QpzG2=?ufVOke(ru;yJ9MODL|X)3>EJ1qqAlxIRhFfrYCg%Shd zKRw=4YnHh~(@lh!80@Q=nu(+Uo?~q_M%nuCQ-A%bCp7+4`qz38Vy(KS?%~o&=0%jE zK)HPK#KKQ2#Qf*Io$gPA1nVx~EfGt3q(*BJzetT%qOFx2M-iyl@pvV<@NJo_J2c%u zLb_ryRmqtH4S0aZOrzph=bK5JkqSeyQWUYDmx}r3T9!KB*5q8nQoP(S-{1x-NR>rU zQ22}prK*yiuI~vz2OjEd6c^lhzT&KpYI>Ur4=z#s^d&6U` zFHxd`hqf#>SNr0o+`)e1?mtC2(_9~CX5ETIj-aha3X>bgU^rtbj_bg7aU_qAZbaUv zA(dR=L}`>_r!4c>s`ZZQvVL^ehseuRucaPBudEyS7@MDPb$`jOPv2M6@XuK!+NT5{ zyTWVYDH8 zA5!@e`R_bndRa2}kqpFDKs*MZncE&lKS0q4cohLNS$hLhxbOlCWE01?l0(k|t$@FQ zCe`*xs=rOn)&)=OqBLCHQZI9L!_TQ8IdGgAm=UlFW2GqEQ`m{|POc!jq3%m2IlBt^ z_CWkBCz|;Z?8P|szqNibMC?40Z5MZbR^M?M&Vi=&fedRxoXr^2?RKI|uoVn$y5~ay zAZB%`kHp#_t?k+nOmku<8wiQi7h08glR9+~D?S zjR=uOe=Tq&9U_TkN+t5K%6S=~IJqRvC1Sx1x3Cp&GnxO4uj_N8S+lhEC_^TGqJ~ZI8cfRYI7y!4^ z*E`R5Mc~M*M_jKy&>2RPe^zH#!|218iCYf{Lv?ee-NXXvA~Q>F@2zVaMG^-(y^@D2 zeH00a_EQm$H0EIl{QE5SFbv7z56vdOtO)J;Gkcw;=DgUly_K0HVW_32gL|c$0P|}r za-6=kRMNUnSo{M$RF*uu6+#gPESB+WEEZ#yP>2iWRO@-`W0>=S$^xUIT&kf_|H2qH z%*Pn;KZ8uCh7UXT5Jk8+DG0rk|DEuQE8@_fe?8A2OY0XXmc+K(6<5-%SCYAD~w?kzw2)`!Uo1?xmY1JlI*SN68oTFF839 zfdrO+BsbS6>t&~=dNty@Op8kVa`eBkGopj1r4z~!F8t`{KAkpdL8TffdNMo0Cqb%k z4-i_mQ2b+lf8I zwVMAHlm2Bc06*eX%n|@JW@jfB&)9%USQ`)xp#}e$%u?kI_a*#~n_{KE)d4=iMCO+F zm!3S5|6pZT{geYB*fZN5ZaGq2d)c1!S+|OK&mgrY;gqpR1`y(=qL#>%1`^qj!rw=LC>ilOm<>7>STO`Wwf(rY-1lJthLz+pt@l)Sgc_#tM}A`6eqA zq-IoL-2Y;rovl^$(Y4LA+V@%K7CXVVb%ge9xfpXcuIRPPo}VN~jPt)Pnt9z0O@};* z?snd4iz~AJ8Y4d^0zV+lBcul}M37Wg>mkV=UUO- z(4FqXAifAg+=}hQ!@`9Rn_r5DP6|*Tu98~lig+znFt>dFEe8>OpF0>yZ}=0^Oet?M zG*6y?Et0c$aB2IUT3R9ByeR4@mFD77fr@{wt`e_P$x&ectke|+JLLi-98PVGEV>Ce zx%0ONGQ+b)`{%W}Q$`<)mF4t5*INC-Sea_Q#p{W4Qtjt%L;oj6Z)@YHN2lM-9}uuM zHcT&JB)eC9QToE!>rWyOR`(7o8=pMFw-c;*9B-5KkhM}l->T)4h^B}kCK>PjX{?qv z^MdaROJPa>)w}O{<15O<4F!g3$1g%eV5vJVt#d1jDs^}b97t1i3$wIg8uXA109N_6 zbM^-|gbwt~AwC_;Mgb^sRN7=*|LDmY1zSM*_Ay=UFfFX2V;1WhL64`|!7+;CAB(-g)IQ6Ozpuk1ivHY9!1)m1yR`u)MGu7-!b@M zw)PEu7CS?A`%ad#`yZdr&4h@M@}D)`fO9esl*TgwMwpZtSq--H=R%xH|Jj^uXi+D@ zLyz2I%}xKo@E^{?91a$3{|3z%jMD@iy4G*ywXBXhffFU*3F3}uUv%`F`>J=G3qD^d7%3s>hx``sW&rPV*$=sf(w1}bqC|P^=|8cuqp}{ikW8b zeZ3)?QWDv{x@nLvNEA6z1uyJ#8#|rosg&eFlHB`Eiz|LrOT}}QlRZ_jfsRgpcFwVs z<%3__ zGO@oVOiioyzJIH`IS(1_?eM15es0vU_}lSB$#%uhN-jwV-i{h4@{z6cr4{n=$n#3w zDP1n%@Wb9{Q8;FOC0IYZ1yMFi5O+Z?D6^+dV8R{URTe3hP>piS?lQxyo`{dtXhK(k zxjhdX!R3RgB`qws1P)^1R;Sm4K%)4lw0e8A)VLZOvp0+n8x@|OKv4_TMs_xlZI=Nj5T)pRsjg=3+hzDpKCQlgsO>5~}N$Qf}$Gc5x|Yj5Ap5 zU#m|C?^QdE?>m(nn`)UY@4+SCAyU4TR@^3iy_>B`scGheP+NoyT);BqcvaVwi+HXk zVc`;Kn--I|E%H*WJrG40=Z*vO`}akUtxKUsulO>%p3dv5U6wxmYVRyyNj#n$1$Olx z*Cf@pmfA)1%zo3z`yGWIm#gZUjQ-ivHMdH=Y}Ps~5jZBZZZcent>^cDNy(hH@t)tt zjl&YV0zX*iF_zY3KfY#mFe-qt&HO^_Wa|AbZ)9a!UupcB;Hj8|`!dJ^PvRj~Lq{iy zHJ}f9AM2RvaeZlfem}RS=4H9)R#Zi!%x84(;Nyp4GAxgR>TCJy>sLp=!^YFs%g4vu zmZ`^l!0a4upzoz~cLHQFq# zudx%68B6?pBcmdH6|2!WC(2B{>aFGm%0`n}w9;Cr0b?#g{1$;t<$E)hO-e*q7-}RX zFYotzf0H+6WGHD6_PY-j?Bi<`6CJGxGOmLPvBZ$J!KSN-5k;58ij6V3xikM%<5)PV z8^sdJiqUS;SAq$kzNugAX{bly zxbm#}e%PBgZyZD;AN%_HreSgG>vv9zi-osUspoTBP*(+O;DzjzZX6}j$p*V1+)SlCvr<==x_v0O<5Hu z(^64o1w8&hqZRs5{xa1x-4u}n)f<((Dk6#v0>{4DXVqdBAxXI~GTOnQ0Y(KY!V5u4 zz@TMl^iZiXbC?arrad-8)-$nQE|_jW85;(Y@=5udr)Z(GYc{&Bbd2`r6z|xE>OOT=5e{3QaV4N?kL?n^>0JVcy ztbQ*=7W)7)+$5Mz*>ngNR=!8jW-UynUdbA2cLj*xFi)qU_icGc!{6chD=q7tOMA<> z-4L|Qq;YbBQ;T1H6?xXUlei5H8LaDC!}=aAHT46;T?>PtqkkUShfqcvH5PX@iz}0H zOiaL5NrH*Pjwg75JGZYAgu-_#!6VNvas<;=;aKS@LZ&xA&6{P_^{J9^1Y **定义对象间的一种一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都得到通知并被自动更新。** 原文: +`Define a one-to-many dependency between objects so that when one object changes state, all its dependents are notified and updated automatically.` + +## 角色 + +* Observable 抽象被观察者 +* ConcreteObservable 具体的可观察对象 +* Observer 抽象观察者 +* ConcreteObserver 具体的观察者 + +## 类图 + +## 角色 + +* Observable 抽象被观察者 +* ConcreteObservable 具体的可观察对象 +* Observer 抽象观察者 +* ConcreteObserver 具体的观察者 + +## 类图 + +![](image/observer.png) + + +## 优缺点 + +**优点:** +* 观察者与被观察者抽象解耦, 可以很方便的添加或者删除观察者; +* 建立一套通知机制 +* 观察者模式符合“开闭原则”的要求 + +**缺点:** +* 强烈建议被观察者的noticeAll使用异步方式 +* 如果存在循环通知可能会导致系统崩溃. +* 如果一个观察目标对象有很多直接和间接的观察者的话,将所有的观察者都通知到会花费很多时间。 + + +## 应用 + +java.util.Observer(java9中已遗弃) +java.util.EventListener +javax.servlet.http.HttpSessionBindingListener +RxJava diff --git a/design-pattern/java-design-pattern-learn/src/site/markdown/template.md b/design-pattern/java-design-pattern-learn/src/site/markdown/template.md index ec245c3dc..f2a02705a 100644 --- a/design-pattern/java-design-pattern-learn/src/site/markdown/template.md +++ b/design-pattern/java-design-pattern-learn/src/site/markdown/template.md @@ -6,11 +6,9 @@ ## 3 类图 -## 4 优点 +## 4 优缺点 -## 5 缺点 +## 5 注意 -## 6 注意 - -## 7 应用 +## 6 应用 diff --git a/design-pattern/java-design-pattern-learn/src/site/markdown/uml/observer.uml b/design-pattern/java-design-pattern-learn/src/site/markdown/uml/observer.uml new file mode 100644 index 000000000..cbf661820 --- /dev/null +++ b/design-pattern/java-design-pattern-learn/src/site/markdown/uml/observer.uml @@ -0,0 +1,89 @@ + + + JAVA + org.laidu.learn.design.pattern.observer.Client + + org.laidu.learn.design.pattern.observer.Client + org.laidu.learn.design.pattern.observer.Boss + org.laidu.learn.design.pattern.observer.Worker + org.laidu.learn.design.pattern.observer.Observable + org.laidu.learn.design.pattern.observer.WorkerState + org.laidu.learn.design.pattern.observer.Observer + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + org.laidu.learn.design.pattern.observer.Boss + + + Fields + Methods + + All + public + + From d84e3568fff6714ebb890d067af835a986a0ea38 Mon Sep 17 00:00:00 2001 From: Tiancai ZANG Date: Thu, 25 Oct 2018 19:48:39 +0800 Subject: [PATCH 194/417] start xunlei code --- .../code/practice/company/package-info.java | 10 +++ .../company/xunlei/IntegerReverse.java | 80 +++++++++++++++++++ .../boot/app/SpringBootAppApplication.java | 4 +- 3 files changed, 93 insertions(+), 1 deletion(-) create mode 100644 code-practice/nowcoder/src/main/java/org/laidu/learn/code/practice/company/package-info.java create mode 100644 code-practice/nowcoder/src/main/java/org/laidu/learn/code/practice/company/xunlei/IntegerReverse.java diff --git a/code-practice/nowcoder/src/main/java/org/laidu/learn/code/practice/company/package-info.java b/code-practice/nowcoder/src/main/java/org/laidu/learn/code/practice/company/package-info.java new file mode 100644 index 000000000..6f6387679 --- /dev/null +++ b/code-practice/nowcoder/src/main/java/org/laidu/learn/code/practice/company/package-info.java @@ -0,0 +1,10 @@ +/** + * 各大公司面试题 + *

                    + * Created by laidu + * on 2018-10-25 19:13. + * + * @author laidu + */ +// TODO: 2018-10-25 19:13 各大公司面试题 +package org.laidu.learn.code.practice.company; \ No newline at end of file diff --git a/code-practice/nowcoder/src/main/java/org/laidu/learn/code/practice/company/xunlei/IntegerReverse.java b/code-practice/nowcoder/src/main/java/org/laidu/learn/code/practice/company/xunlei/IntegerReverse.java new file mode 100644 index 000000000..483e0651c --- /dev/null +++ b/code-practice/nowcoder/src/main/java/org/laidu/learn/code/practice/company/xunlei/IntegerReverse.java @@ -0,0 +1,80 @@ +package org.laidu.learn.code.practice.company.xunlei; + +import lombok.extern.slf4j.Slf4j; + +import java.util.ArrayDeque; +import java.util.Iterator; +import java.util.Scanner; + +/** + * 整数翻转 + *

                    + * [编程题] 整数反转 + * 时间限制:1秒 + *

                    + * 空间限制:131072K + *

                    + * 输入一个有符号整数,输出该整数的反转值。 + *

                    + * 输入描述: + * 一个整数 + *

                    + *

                    + * 输出描述: + * 一个整数 + *

                    + * 输入例子1: + * 123 + *

                    + * 输出例子1: + * 321 + * + * @author tiancai.zang + * on 2018-10-25 19:14. + */ +@Slf4j +public class IntegerReverse { + + + public static void main(String[] args) { + + Scanner scanner = new Scanner(System.in); + + String input = scanner.next(); + + int anInt = 0 ; + try { + anInt = Integer.parseInt(input); + }catch (Exception e){ + return; + } + + System.out.println(reverse(anInt)); + + } + + private static int reverse(int input) { + + + int flag = input >= 0 ? 1 : -1; + + ArrayDeque num = new ArrayDeque<>(); + + int var = Math.abs(input); + while (var != 0){ + int ge = var % 10; + num.add(ge+""); + var = var / 10; + } + + StringBuilder numStr = new StringBuilder(); + Iterator iterator = num.iterator(); + while (iterator.hasNext()) { + numStr.append(iterator.next()); + } + + return Integer.parseInt(numStr.toString()) * flag; + + } + +} \ No newline at end of file diff --git a/framework/spring/spring-boot/spring-boot-app/src/main/java/org/laidu/learn/spring/boot/app/SpringBootAppApplication.java b/framework/spring/spring-boot/spring-boot-app/src/main/java/org/laidu/learn/spring/boot/app/SpringBootAppApplication.java index 2e0894d50..a65603683 100644 --- a/framework/spring/spring-boot/spring-boot-app/src/main/java/org/laidu/learn/spring/boot/app/SpringBootAppApplication.java +++ b/framework/spring/spring-boot/spring-boot-app/src/main/java/org/laidu/learn/spring/boot/app/SpringBootAppApplication.java @@ -1,6 +1,7 @@ package org.laidu.learn.spring.boot.app; import lombok.extern.slf4j.Slf4j; +import org.springframework.boot.Banner; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.boot.builder.SpringApplicationBuilder; @@ -17,7 +18,8 @@ public static void main(String[] args) { new SpringApplicationBuilder() .sources(SpringBootAppApplication.class) .registerShutdownHook(true) - .logStartupInfo(true) + .logStartupInfo(false) + .bannerMode(Banner.Mode.OFF) .run(args); } } From e46b05b1103647e5fb27d47e9e1c8a60129d9b81 Mon Sep 17 00:00:00 2001 From: Tiancai ZANG Date: Fri, 26 Oct 2018 16:58:39 +0800 Subject: [PATCH 195/417] start hellwork deep learn --- .../learn/advance/bytecode/jdk/Main.java | 16 +++ .../bytecode/src/site/markdown/helloworld.md | 101 ++++++++++++++++++ .../learn/concurrent/daemon/DaemonDemo.java | 75 +++++++++++++ .../learn/language/feature/boxed/Boxing.java | 12 ++- .../language/feature/string/StringDemo.java | 26 +++++ 5 files changed, 227 insertions(+), 3 deletions(-) create mode 100644 language-advance/bytecode/src/main/java/org/laidu/learn/advance/bytecode/jdk/Main.java create mode 100644 language-advance/bytecode/src/site/markdown/helloworld.md create mode 100644 language-advance/concurrent/src/main/java/org/laidu/learn/concurrent/daemon/DaemonDemo.java create mode 100644 language-feature/src/main/java/org/laidu/learn/language/feature/string/StringDemo.java diff --git a/language-advance/bytecode/src/main/java/org/laidu/learn/advance/bytecode/jdk/Main.java b/language-advance/bytecode/src/main/java/org/laidu/learn/advance/bytecode/jdk/Main.java new file mode 100644 index 000000000..a21a7a0fa --- /dev/null +++ b/language-advance/bytecode/src/main/java/org/laidu/learn/advance/bytecode/jdk/Main.java @@ -0,0 +1,16 @@ +package org.laidu.learn.advance.bytecode.jdk; + +/** + * hello world + * + * @author tiancai.zang + * on 2018-10-26 13:23. + */ +public class Main { + + public static void main(String[] args) { + + System.out.println("hello world!"); + + } +} \ No newline at end of file diff --git a/language-advance/bytecode/src/site/markdown/helloworld.md b/language-advance/bytecode/src/site/markdown/helloworld.md new file mode 100644 index 000000000..aeb2009a9 --- /dev/null +++ b/language-advance/bytecode/src/site/markdown/helloworld.md @@ -0,0 +1,101 @@ + +hello world 源码 +```java +package org.laidu.learn.advance.bytecode.jdk; + +/** + * hello world + * + * @author tiancai.zang + * on 2018-10-26 13:23. + */ +public class Main { + + public static void main(String[] args) { + + System.out.println("hello world!"); + + } +} +``` + +javap -verbose 反编译字节码文件 + +```$xslt +Classfile /home/laidu/IdeaProjects/java-learn/language-advance/bytecode/target/classes/org/laidu/learn/advance/bytecode/jdk/Main.class + Last modified Oct 26, 2018; size 590 bytes + MD5 checksum f4cae3a6e4db863babbb5e5a115e8358 + Compiled from "Main.java" +public class org.laidu.learn.advance.bytecode.jdk.Main + minor version: 0 + major version: 52 + flags: ACC_PUBLIC, ACC_SUPER +Constant pool: + #1 = Methodref #6.#20 // java/lang/Object."":()V + #2 = Fieldref #21.#22 // java/lang/System.out:Ljava/io/PrintStream; + #3 = String #23 // hello world! + #4 = Methodref #24.#25 // java/io/PrintStream.println:(Ljava/lang/String;)V + #5 = Class #26 // org/laidu/learn/advance/bytecode/jdk/Main + #6 = Class #27 // java/lang/Object + #7 = Utf8 + #8 = Utf8 ()V + #9 = Utf8 Code + #10 = Utf8 LineNumberTable + #11 = Utf8 LocalVariableTable + #12 = Utf8 this + #13 = Utf8 Lorg/laidu/learn/advance/bytecode/jdk/Main; + #14 = Utf8 main + #15 = Utf8 ([Ljava/lang/String;)V + #16 = Utf8 args + #17 = Utf8 [Ljava/lang/String; + #18 = Utf8 SourceFile + #19 = Utf8 Main.java + #20 = NameAndType #7:#8 // "":()V + #21 = Class #28 // java/lang/System + #22 = NameAndType #29:#30 // out:Ljava/io/PrintStream; + #23 = Utf8 hello world! + #24 = Class #31 // java/io/PrintStream + #25 = NameAndType #32:#33 // println:(Ljava/lang/String;)V + #26 = Utf8 org/laidu/learn/advance/bytecode/jdk/Main + #27 = Utf8 java/lang/Object + #28 = Utf8 java/lang/System + #29 = Utf8 out + #30 = Utf8 Ljava/io/PrintStream; + #31 = Utf8 java/io/PrintStream + #32 = Utf8 println + #33 = Utf8 (Ljava/lang/String;)V +{ + public org.laidu.learn.advance.bytecode.jdk.Main(); + descriptor: ()V + flags: ACC_PUBLIC + Code: + stack=1, locals=1, args_size=1 + 0: aload_0 + 1: invokespecial #1 // Method java/lang/Object."":()V + 4: return + LineNumberTable: + line 9: 0 + LocalVariableTable: + Start Length Slot Name Signature + 0 5 0 this Lorg/laidu/learn/advance/bytecode/jdk/Main; + + public static void main(java.lang.String[]); + descriptor: ([Ljava/lang/String;)V + flags: ACC_PUBLIC, ACC_STATIC + Code: + stack=2, locals=1, args_size=1 + 0: getstatic #2 // Field java/lang/System.out:Ljava/io/PrintStream; + 3: ldc #3 // String hello world! + 5: invokevirtual #4 // Method java/io/PrintStream.println:(Ljava/lang/String;)V + 8: return + LineNumberTable: + line 13: 0 + line 15: 8 + LocalVariableTable: + Start Length Slot Name Signature + 0 9 0 args [Ljava/lang/String; +} +SourceFile: "Main.java" + + +``` \ No newline at end of file diff --git a/language-advance/concurrent/src/main/java/org/laidu/learn/concurrent/daemon/DaemonDemo.java b/language-advance/concurrent/src/main/java/org/laidu/learn/concurrent/daemon/DaemonDemo.java new file mode 100644 index 000000000..838b5febe --- /dev/null +++ b/language-advance/concurrent/src/main/java/org/laidu/learn/concurrent/daemon/DaemonDemo.java @@ -0,0 +1,75 @@ +package org.laidu.learn.concurrent.daemon; + +import jodd.util.ThreadUtil; +import lombok.extern.slf4j.Slf4j; +import org.apache.commons.lang3.RandomUtils; + +import java.util.ArrayList; +import java.util.List; +import java.util.concurrent.*; + +/** + * 守护线程 + * + * @author tiancai.zang + * on 2018-10-26 15:52. + */ +@Slf4j +public class DaemonDemo { + + + public static String doWork(){ + int random = RandomUtils.nextInt(1000, 2000); + + for (int i = 0; i < random; i++) { + if (i % 500 == 0) { + ThreadUtil.sleep(i); + System.out.println(Thread.currentThread().getName()); + } + } + + return Thread.currentThread().getId()+""; + } + + public static void main(String[] args) throws InterruptedException { + + int coreSize = 5; + int maxSize = 10; + + ExecutorService daemonService = new ThreadPoolExecutor(coreSize,maxSize,0L, TimeUnit.MICROSECONDS,new ArrayBlockingQueue<>(1) + ,r -> { + Thread thread = new Thread(r); + thread.setDaemon(true); + System.out.println("创建新的线程 : "+ thread.getName()); + return thread; + + }, new ThreadPoolExecutor.AbortPolicy()); + + + List> tasks = new ArrayList<>(); + for (int i = 0; i < maxSize; i++) { + tasks.add(DaemonDemo::doWork); + } + + tasks.forEach(daemonService::submit); + +// List> futures = daemonService.invokeAll(tasks); +// +// futures.forEach( future -> { +// try { +// System.out.println(future.get()); +// } catch (InterruptedException e) { +// e.printStackTrace(); +// } catch (ExecutionException e) { +// e.printStackTrace(); +// } +// }); + +// ThreadUtil.sleep(2500); +// daemonService.invokeAll(tasks); +// +// ThreadUtil.sleep(2500); +// daemonService.invokeAll(tasks); + + } +} \ No newline at end of file diff --git a/language-feature/src/main/java/org/laidu/learn/language/feature/boxed/Boxing.java b/language-feature/src/main/java/org/laidu/learn/language/feature/boxed/Boxing.java index ea3fac502..5164fee24 100644 --- a/language-feature/src/main/java/org/laidu/learn/language/feature/boxed/Boxing.java +++ b/language-feature/src/main/java/org/laidu/learn/language/feature/boxed/Boxing.java @@ -11,9 +11,15 @@ public class Boxing { public static void main(String[] args) { // 装箱 - Integer i = 10; + int i = 10; + Integer j = 10; + + int k = 222; + Integer l = 222; + + System.out.println("i == j :"+(i == j)); + + System.out.println("k == l : "+(k == l)); - //拆箱 - int n = i; } } diff --git a/language-feature/src/main/java/org/laidu/learn/language/feature/string/StringDemo.java b/language-feature/src/main/java/org/laidu/learn/language/feature/string/StringDemo.java new file mode 100644 index 000000000..640daf883 --- /dev/null +++ b/language-feature/src/main/java/org/laidu/learn/language/feature/string/StringDemo.java @@ -0,0 +1,26 @@ +package org.laidu.learn.language.feature.string; + +import lombok.extern.slf4j.Slf4j; + +/** + * spring demo + * + * @author tiancai.zang + * on 2018-10-26 12:33. + */ +@Slf4j +public class StringDemo { + + public static void main(String[] args) { + + + String s = "hello"; + + String s1 = new String("hello"); + + System.out.println("s == s1 : " + (s == s1)); + + System.out.println("s.equals(s1) : " + s.equals(s1)); + + } +} \ No newline at end of file From a5a0fb0f5ad586076b8d12173e5e824cdf20ed8c Mon Sep 17 00:00:00 2001 From: Tiancai ZANG Date: Mon, 29 Oct 2018 20:25:34 +0800 Subject: [PATCH 196/417] completed rebuild tree --- .../jianzhioffer/ReConstructBinaryTree.java | 72 +++++++++++++------ .../InitializingOnDemandHolderIdiom.java | 3 +- .../design/pattern/singleton/Singleton.java | 2 +- .../ThreadSafeDoubleCheckLocking.java | 6 +- .../ThreadSafeLazyLoadSyncSingleton.java | 4 +- .../ThreadUnSafeLazyLoadSingleton.java | 4 +- 6 files changed, 65 insertions(+), 26 deletions(-) diff --git a/code-practice/nowcoder/src/main/java/org/laidu/learn/code/practice/jianzhioffer/ReConstructBinaryTree.java b/code-practice/nowcoder/src/main/java/org/laidu/learn/code/practice/jianzhioffer/ReConstructBinaryTree.java index 532431e43..d7861f716 100644 --- a/code-practice/nowcoder/src/main/java/org/laidu/learn/code/practice/jianzhioffer/ReConstructBinaryTree.java +++ b/code-practice/nowcoder/src/main/java/org/laidu/learn/code/practice/jianzhioffer/ReConstructBinaryTree.java @@ -14,43 +14,75 @@ @Slf4j public class ReConstructBinaryTree { - public static class TreeNode { - int val; - TreeNode left; - TreeNode right; + public static void main(String[] args) { - TreeNode(int x) { - val = x; - } - } + ReConstructBinaryTree reConstructBinaryTree = new ReConstructBinaryTree(); + int[] pre = {1,2,4,7,3,5,6,8}; + int[] in = {4,7,2,1,5,3,8,6}; + + TreeNode treeNode = reConstructBinaryTree.reConstructBinaryTree(pre, in); + + System.out.println(treeNode); + + } public TreeNode reConstructBinaryTree(int[] pre, int[] in) { - /* - step 1 : 判断临界条件 - */ - if (pre.length != in.length || pre.length < 1) { + return re(pre, 0, pre.length - 1, in, 0, in.length - 1); + } + + private TreeNode re(int[] pre, int preStart, int preEnd, int[] in, int inStart, int inEnd) { + + + if (preStart > preEnd || inStart > inEnd || in.length != pre.length || in.length == 0){ return null; } /* - step 2 : 根据前序遍历确定根节点 + step 1 : 根据前序遍历第一个元素为 root 节点 */ - TreeNode root = new TreeNode(pre[0]); + int node = pre[preStart]; + TreeNode treeNode = new TreeNode(node); - if (pre.length == 1) { - return root; - } + int nodeIndex = indexOf(in,node); + /* + step 2 : 设置左子树 + */ + treeNode.left = re(pre, preStart+1, preStart + nodeIndex - inStart, in, inStart,nodeIndex-1); + /* + step 3 : 设置右子树 + */ + treeNode.right = re(pre, preStart + nodeIndex - inStart + 1 , preEnd, in, nodeIndex+1,inEnd); + + return treeNode; + } + /** + * 获取 数组下标 + * @param array + * @param value + * @return + */ + public int indexOf(int[] array, int value){ + for (int i = 0; i < array.length; i++) { + if (value == array[i]){ + return i; + } + } - return null; + throw new IllegalArgumentException("数据不合法"); } - public static void main(String[] args) { - System.out.println("laidu"); + public static class TreeNode { + int val; + TreeNode left; + TreeNode right; + TreeNode(int x) { + val = x; + } } } \ No newline at end of file diff --git a/design-pattern/java-design-pattern-learn/src/main/java/org/laidu/learn/design/pattern/singleton/InitializingOnDemandHolderIdiom.java b/design-pattern/java-design-pattern-learn/src/main/java/org/laidu/learn/design/pattern/singleton/InitializingOnDemandHolderIdiom.java index 33b0fb680..53a3057b3 100644 --- a/design-pattern/java-design-pattern-learn/src/main/java/org/laidu/learn/design/pattern/singleton/InitializingOnDemandHolderIdiom.java +++ b/design-pattern/java-design-pattern-learn/src/main/java/org/laidu/learn/design/pattern/singleton/InitializingOnDemandHolderIdiom.java @@ -9,6 +9,7 @@ * User: zangtiancai * Date: 2017/8/25 * Time: 上午10:35 + * @author laidu */ @Slf4j public class InitializingOnDemandHolderIdiom { @@ -30,7 +31,7 @@ public static class HelperHolder{ public static void main(String[] args) { - for (int i=0; i<1000; i++){ + for (int i=0; i<10000; i++){ new Thread(InitializingOnDemandHolderIdiom::getInstance).start(); } diff --git a/design-pattern/java-design-pattern-learn/src/main/java/org/laidu/learn/design/pattern/singleton/Singleton.java b/design-pattern/java-design-pattern-learn/src/main/java/org/laidu/learn/design/pattern/singleton/Singleton.java index 1e00da601..9d50574aa 100644 --- a/design-pattern/java-design-pattern-learn/src/main/java/org/laidu/learn/design/pattern/singleton/Singleton.java +++ b/design-pattern/java-design-pattern-learn/src/main/java/org/laidu/learn/design/pattern/singleton/Singleton.java @@ -28,7 +28,7 @@ private Singleton() { } public void doWork(){ - log.info("-*--*--*--*- doWork : {}-*--*--*--*--"); +// log.info("-*--*--*--*- doWork : {}-*--*--*--*--"); // IntStream.range(0,100) //// .parallel() // .boxed() diff --git a/design-pattern/java-design-pattern-learn/src/main/java/org/laidu/learn/design/pattern/singleton/ThreadSafeDoubleCheckLocking.java b/design-pattern/java-design-pattern-learn/src/main/java/org/laidu/learn/design/pattern/singleton/ThreadSafeDoubleCheckLocking.java index 20220167f..f9dfe5a90 100644 --- a/design-pattern/java-design-pattern-learn/src/main/java/org/laidu/learn/design/pattern/singleton/ThreadSafeDoubleCheckLocking.java +++ b/design-pattern/java-design-pattern-learn/src/main/java/org/laidu/learn/design/pattern/singleton/ThreadSafeDoubleCheckLocking.java @@ -19,9 +19,11 @@ public class ThreadSafeDoubleCheckLocking { public static ThreadSafeDoubleCheckLocking getInstance() { - if (ourInstance == null){ // 第一次 null值 校验 + // 第一次 null值 校验 + if (ourInstance == null){ synchronized (ThreadSafeDoubleCheckLocking.class){ - if (ourInstance == null) { // 第二次 null值 校验 + // 第二次 null值 校验 + if (ourInstance == null) { ourInstance = new ThreadSafeDoubleCheckLocking(); } } diff --git a/design-pattern/java-design-pattern-learn/src/main/java/org/laidu/learn/design/pattern/singleton/ThreadSafeLazyLoadSyncSingleton.java b/design-pattern/java-design-pattern-learn/src/main/java/org/laidu/learn/design/pattern/singleton/ThreadSafeLazyLoadSyncSingleton.java index 5871023dc..784a39c96 100644 --- a/design-pattern/java-design-pattern-learn/src/main/java/org/laidu/learn/design/pattern/singleton/ThreadSafeLazyLoadSyncSingleton.java +++ b/design-pattern/java-design-pattern-learn/src/main/java/org/laidu/learn/design/pattern/singleton/ThreadSafeLazyLoadSyncSingleton.java @@ -9,6 +9,7 @@ * User: zangtiancai * Date: 2017/8/24 * Time: 下午6:01 + * @author laidu */ @Slf4j public class ThreadSafeLazyLoadSyncSingleton { @@ -19,7 +20,8 @@ public class ThreadSafeLazyLoadSyncSingleton { public static synchronized ThreadSafeLazyLoadSyncSingleton getInstance() { if (ourInstance == null) { - ourInstance = new ThreadSafeLazyLoadSyncSingleton(); // 非原子操作, 故需要volatile修饰 + // 非原子操作, 故需要volatile修饰 + ourInstance = new ThreadSafeLazyLoadSyncSingleton(); } return ourInstance; } diff --git a/design-pattern/java-design-pattern-learn/src/main/java/org/laidu/learn/design/pattern/singleton/ThreadUnSafeLazyLoadSingleton.java b/design-pattern/java-design-pattern-learn/src/main/java/org/laidu/learn/design/pattern/singleton/ThreadUnSafeLazyLoadSingleton.java index c3d64cfe4..76f870fbc 100644 --- a/design-pattern/java-design-pattern-learn/src/main/java/org/laidu/learn/design/pattern/singleton/ThreadUnSafeLazyLoadSingleton.java +++ b/design-pattern/java-design-pattern-learn/src/main/java/org/laidu/learn/design/pattern/singleton/ThreadUnSafeLazyLoadSingleton.java @@ -9,6 +9,7 @@ * User: zangtiancai * Date: 2017/8/24 * Time: 下午6:01 + * @author laidu */ @Slf4j public class ThreadUnSafeLazyLoadSingleton { @@ -26,7 +27,8 @@ public static ThreadUnSafeLazyLoadSingleton getInstance() { } private ThreadUnSafeLazyLoadSingleton() { - int count = initCount.incrementAndGet(); // initCount.incrementAndGet() ; System.out.println(initCount); 为两步操作 + // initCount.incrementAndGet() ; System.out.println(initCount); 为两步操作 + int count = initCount.incrementAndGet(); log.info("-*--*--*--*- instance 初始化 第 {} 次-*--*--*--*--", count); } From 29d6a4081ccde5f799d5ee54359cbe3209310b9b Mon Sep 17 00:00:00 2001 From: Tiancai ZANG Date: Tue, 30 Oct 2018 18:36:55 +0800 Subject: [PATCH 197/417] sync --- .../jianzhioffer/SearchInDoubleDimArray.java | 44 +++++++++++++++++-- .../SearchInDoubleDimArrayTest.java | 6 +-- 2 files changed, 41 insertions(+), 9 deletions(-) diff --git a/code-practice/nowcoder/src/main/java/org/laidu/learn/code/practice/jianzhioffer/SearchInDoubleDimArray.java b/code-practice/nowcoder/src/main/java/org/laidu/learn/code/practice/jianzhioffer/SearchInDoubleDimArray.java index d6e07c534..7ea3b19b7 100644 --- a/code-practice/nowcoder/src/main/java/org/laidu/learn/code/practice/jianzhioffer/SearchInDoubleDimArray.java +++ b/code-practice/nowcoder/src/main/java/org/laidu/learn/code/practice/jianzhioffer/SearchInDoubleDimArray.java @@ -3,22 +3,30 @@ import lombok.extern.slf4j.Slf4j; import java.util.Arrays; +import java.util.List; import java.util.concurrent.atomic.AtomicBoolean; +import java.util.stream.Collectors; /** - * 二维数组中的查找 + * 二维数组中的查找 (杨氏矩阵) *

                    * 题目描述 * 在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。 * 请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。 * Created by tiancai.zang * on 2018-03-04 17:25. + * @author laidu */ @Slf4j public class SearchInDoubleDimArray { - public static boolean find(int target, int [][] array) { - + /** + * 通过二分法查找 + * @param target + * @param array + * @return + */ + public static boolean findByBinarySearch(int target, int [][] array) { if (array.length <= 0){ return false; } @@ -38,10 +46,38 @@ public static boolean find(int target, int [][] array) { result.set(true); } }); - return result.get(); + } + + /** + * 转换 list + * @param target + * @param array + * @return + */ + public static boolean convertListQuery(int target, int [][] array) { + + List list = Arrays.stream(array) + .flatMap(var -> Arrays.stream(var).boxed()) + .distinct() + .collect(Collectors.toList()); + + + return list.contains(target); + + } + + public static void main(String[] args) { + + + int[][] ayyays = {{1, 2, 3}, {2, 33, 2}}; + + int target = 2; + + boolean b = convertListQuery(target,ayyays); + System.out.println(b); } } \ No newline at end of file diff --git a/code-practice/nowcoder/src/test/java/org/laidu/learn/code/practice/jianzhioffer/SearchInDoubleDimArrayTest.java b/code-practice/nowcoder/src/test/java/org/laidu/learn/code/practice/jianzhioffer/SearchInDoubleDimArrayTest.java index 23a77899c..a23f32e3e 100644 --- a/code-practice/nowcoder/src/test/java/org/laidu/learn/code/practice/jianzhioffer/SearchInDoubleDimArrayTest.java +++ b/code-practice/nowcoder/src/test/java/org/laidu/learn/code/practice/jianzhioffer/SearchInDoubleDimArrayTest.java @@ -3,15 +3,11 @@ import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; -import javax.sound.midi.Soundbank; import java.util.ArrayList; -import java.util.Arrays; import java.util.List; import java.util.Random; import java.util.stream.IntStream; -import static org.junit.jupiter.api.Assertions.*; - class SearchInDoubleDimArrayTest { private List inputs = new ArrayList<>(); @@ -46,7 +42,7 @@ void find() { Random random = new Random(); inputs.forEach(array -> { int randomInt = random.nextInt(40)*10; - boolean reault = SearchInDoubleDimArray.find(randomInt,array); + boolean reault = SearchInDoubleDimArray.findByBinarySearch(randomInt,array); System.out.println(randomInt + " result " + reault); }); } From c7e49af7529e06a5bbd5b21c85570e04232e6b97 Mon Sep 17 00:00:00 2001 From: Tiancai ZANG Date: Wed, 31 Oct 2018 20:06:46 +0800 Subject: [PATCH 198/417] sync --- .../laidu/learn/algorithm/sort/QuickSort.java | 84 +++++++++++++++++++ algorithm/src/site/markdown/sort-quick.md | 22 +++++ algorithm/src/site/markdown/sort-selection.md | 6 +- algorithm/src/site/markdown/template.md | 12 +++ 4 files changed, 122 insertions(+), 2 deletions(-) create mode 100644 algorithm/src/main/java/org/laidu/learn/algorithm/sort/QuickSort.java create mode 100644 algorithm/src/site/markdown/sort-quick.md create mode 100644 algorithm/src/site/markdown/template.md diff --git a/algorithm/src/main/java/org/laidu/learn/algorithm/sort/QuickSort.java b/algorithm/src/main/java/org/laidu/learn/algorithm/sort/QuickSort.java new file mode 100644 index 000000000..5f678e83c --- /dev/null +++ b/algorithm/src/main/java/org/laidu/learn/algorithm/sort/QuickSort.java @@ -0,0 +1,84 @@ +package org.laidu.learn.algorithm.sort; + +/** + * 快排 + * + * @author tiancai.zang + * on 2018-10-31 13:05. + */ +public class QuickSort { + + public static void main(String[] args) { + + int[] input = new int[]{1,2,3,43,12,7,34}; + + QuickSort quickSort = new QuickSort(); + + int[] sort = quickSort.sort(input, 0, input.length-1); + + System.out.println(sort); + + } + + /** + * @param array + * @return + */ + public int[] sort(int[] array, int start, int end) { + + if ((end - start) < 2 || Math.max(start,end) > array.length-1) { + return array; + } + + int pivotIndex = (start + end) / 2; + int pivot = array[pivotIndex]; + + int i = start; + int j = end; + + boolean iWait = false; + boolean jWait = false; + + while (i <= j) { + if (array[i] > pivot) { + if (jWait) { + swap(array,i,j); + jWait = false; + }else { + iWait = true; + } + } else { + i++; + } + if (array[j] < pivot) { + if (iWait) { + swap(array,i,j); + iWait = false; + }else { + jWait = true; + } + } else { + j--; + } + } + + if (array[Math.min(i,end)] <= pivot) { + swap(array,pivotIndex,Math.min(i,end)); + } + + sort(array, start, pivotIndex-1); + sort(array, pivotIndex+1, end); + + return array ; + } + + public void swap(int[] array, int firstIndex, int second){ + + if (firstIndex == second) { + return; + } + int temp = array[firstIndex]; + array[firstIndex] = array[second]; + array[second] = temp; + } +} \ No newline at end of file diff --git a/algorithm/src/site/markdown/sort-quick.md b/algorithm/src/site/markdown/sort-quick.md new file mode 100644 index 000000000..a888abfa0 --- /dev/null +++ b/algorithm/src/site/markdown/sort-quick.md @@ -0,0 +1,22 @@ +# 快排 算法学习 + +## 1 场景 +> 针对一组数据进行排序 + +## 2 原理 +### 2.1 算法 +> + +### 2.2 基本步骤 +> 将数组S排序的基本算法由以下4步组成: +* 1.如果数组S元素个数为0或者1,则返回 +* 2.数组S中任意元素为 __枢纽元(pivot)__ v +* 3.将S中的其余元素划分两个不相交的集合: S1(所有元素均小于v) S2(所有元素均大于v) +* 4.返回{quickSort(S1),v,quickSort(S2)} + +## 3 复杂度 +### 3.1 时间复杂度 +### 3.2 空间复杂度 + +## 4 适用范围 + diff --git a/algorithm/src/site/markdown/sort-selection.md b/algorithm/src/site/markdown/sort-selection.md index ca04be1fd..a9406d59a 100644 --- a/algorithm/src/site/markdown/sort-selection.md +++ b/algorithm/src/site/markdown/sort-selection.md @@ -1,10 +1,12 @@ # 选择排序 算法学习 -## 1 原理 +## 1 场景 + +## 2 原理 -## 2 实现 ## 3 复杂度 ### 3.1 时间复杂度 ### 3.2 空间复杂度 + ## 4 适用范围 diff --git a/algorithm/src/site/markdown/template.md b/algorithm/src/site/markdown/template.md new file mode 100644 index 000000000..a9406d59a --- /dev/null +++ b/algorithm/src/site/markdown/template.md @@ -0,0 +1,12 @@ +# 选择排序 算法学习 + +## 1 场景 + +## 2 原理 + +## 3 复杂度 +### 3.1 时间复杂度 +### 3.2 空间复杂度 + +## 4 适用范围 + From b8c6f05999626501c8b90a55c1d962e8adb507ac Mon Sep 17 00:00:00 2001 From: ztc Date: Thu, 1 Nov 2018 08:36:53 +0800 Subject: [PATCH 199/417] start sort learn --- .../laidu/learn/algorithm/sort/QuickSort.java | 84 ------------------- .../laidu/learn/algorithm/sort/SortBub.java | 39 +++++++++ .../laidu/learn/algorithm/sort/SortQui.java | 74 ++++++++++++++++ .../laidu/learn/algorithm/sort/SortSel.java | 42 ++++++++++ .../laidu/learn/algorithm/sort/SortUtil.java | 38 +++++++++ algorithm/src/site/markdown/sort-bub.md | 35 ++++++++ .../markdown/{sort-quick.md => sort-qui.md} | 0 algorithm/src/site/markdown/sort.md | 13 +++ 8 files changed, 241 insertions(+), 84 deletions(-) delete mode 100644 algorithm/src/main/java/org/laidu/learn/algorithm/sort/QuickSort.java create mode 100644 algorithm/src/main/java/org/laidu/learn/algorithm/sort/SortBub.java create mode 100644 algorithm/src/main/java/org/laidu/learn/algorithm/sort/SortQui.java create mode 100644 algorithm/src/main/java/org/laidu/learn/algorithm/sort/SortSel.java create mode 100644 algorithm/src/main/java/org/laidu/learn/algorithm/sort/SortUtil.java create mode 100644 algorithm/src/site/markdown/sort-bub.md rename algorithm/src/site/markdown/{sort-quick.md => sort-qui.md} (100%) diff --git a/algorithm/src/main/java/org/laidu/learn/algorithm/sort/QuickSort.java b/algorithm/src/main/java/org/laidu/learn/algorithm/sort/QuickSort.java deleted file mode 100644 index 5f678e83c..000000000 --- a/algorithm/src/main/java/org/laidu/learn/algorithm/sort/QuickSort.java +++ /dev/null @@ -1,84 +0,0 @@ -package org.laidu.learn.algorithm.sort; - -/** - * 快排 - * - * @author tiancai.zang - * on 2018-10-31 13:05. - */ -public class QuickSort { - - public static void main(String[] args) { - - int[] input = new int[]{1,2,3,43,12,7,34}; - - QuickSort quickSort = new QuickSort(); - - int[] sort = quickSort.sort(input, 0, input.length-1); - - System.out.println(sort); - - } - - /** - * @param array - * @return - */ - public int[] sort(int[] array, int start, int end) { - - if ((end - start) < 2 || Math.max(start,end) > array.length-1) { - return array; - } - - int pivotIndex = (start + end) / 2; - int pivot = array[pivotIndex]; - - int i = start; - int j = end; - - boolean iWait = false; - boolean jWait = false; - - while (i <= j) { - if (array[i] > pivot) { - if (jWait) { - swap(array,i,j); - jWait = false; - }else { - iWait = true; - } - } else { - i++; - } - if (array[j] < pivot) { - if (iWait) { - swap(array,i,j); - iWait = false; - }else { - jWait = true; - } - } else { - j--; - } - } - - if (array[Math.min(i,end)] <= pivot) { - swap(array,pivotIndex,Math.min(i,end)); - } - - sort(array, start, pivotIndex-1); - sort(array, pivotIndex+1, end); - - return array ; - } - - public void swap(int[] array, int firstIndex, int second){ - - if (firstIndex == second) { - return; - } - int temp = array[firstIndex]; - array[firstIndex] = array[second]; - array[second] = temp; - } -} \ No newline at end of file diff --git a/algorithm/src/main/java/org/laidu/learn/algorithm/sort/SortBub.java b/algorithm/src/main/java/org/laidu/learn/algorithm/sort/SortBub.java new file mode 100644 index 000000000..bc31ef695 --- /dev/null +++ b/algorithm/src/main/java/org/laidu/learn/algorithm/sort/SortBub.java @@ -0,0 +1,39 @@ +package org.laidu.learn.algorithm.sort; + +import static org.laidu.learn.algorithm.sort.SortUtil.print; +import static org.laidu.learn.algorithm.sort.SortUtil.swap; + + +/** + * 冒泡排序 + *

                    + * Created by tiancai.zang + * on 2018-10-31 22:54. + */ +public class SortBub { + + + public static void main(String[] args) { + + int[] sort = new SortBub().sort(new int[]{12, 32, 1, 3, 4, 5, 7, 2}); + + print(sort); + } + + public int[] sort(int[] a){ + + for (int i = 0; i < a.length; i++) { + + for (int j = 0; j < a.length-1; j++) { + if (a[j] > a[j+1]) { + swap(a,j,j+1); + } + } + } + + return a; + + } + + +} \ No newline at end of file diff --git a/algorithm/src/main/java/org/laidu/learn/algorithm/sort/SortQui.java b/algorithm/src/main/java/org/laidu/learn/algorithm/sort/SortQui.java new file mode 100644 index 000000000..4cbee3932 --- /dev/null +++ b/algorithm/src/main/java/org/laidu/learn/algorithm/sort/SortQui.java @@ -0,0 +1,74 @@ +package org.laidu.learn.algorithm.sort; + +/** + * 快排 + * + * @author tiancai.zang + * on 2018-10-31 13:05. + */ +public class SortQui { + + public static void main(String[] args) { + + int[] input = new int[]{1, 32, 3, 43, 12, 7, 34}; + + int[] sort = sort(input, 0, input.length - 1); + + SortUtil.print(sort); + + } + + public static int divide(int[] a, int start, int end) { + + int base = a[end]; + + while (start < end) { + + while (start < end && a[start] <= base) { + start++; + } + + if (start < end) { + SortUtil.swap(a, start, end); + + end--; + } + + while (start < end && a[end] >= base) { + end--; + } + + if (start < end) { + + SortUtil.swap(a, start, end); + + start++; + } + + } + + return end; + } + + /** + * 排序 + * + * @param a + * @param start + * @param end + */ + public static int[] sort(int[] a, int start, int end) { + + if (start > end) { + return a; + } else { + + int partition = divide(a, start, end); + sort(a, start, partition - 1); + sort(a, partition + 1, end); + } + + return a; + + } +} \ No newline at end of file diff --git a/algorithm/src/main/java/org/laidu/learn/algorithm/sort/SortSel.java b/algorithm/src/main/java/org/laidu/learn/algorithm/sort/SortSel.java new file mode 100644 index 000000000..7f546615e --- /dev/null +++ b/algorithm/src/main/java/org/laidu/learn/algorithm/sort/SortSel.java @@ -0,0 +1,42 @@ +package org.laidu.learn.algorithm.sort; + +import static org.laidu.learn.algorithm.sort.SortUtil.print; + + +/** + * 选择排序 + *

                    + * Created by tiancai.zang + * on 2018-10-31 22:54. + */ +public class SortSel { + + + public static void main(String[] args) { + + int[] sort = new SortSel().sort(new int[]{12, 32, 1, 3, 4, 5, 7, 2}); + + print(sort); + } + + public int[] sort(int[] a){ + + for (int i = 0; i < a.length; i++) { + + int min = a[i]; + + for (int j = i; j < a.length; j++) { + if (min > a[j]) { + + min = a[j]; + SortUtil.swap(a,i,j); + } + } + } + + return a; + + } + + +} \ No newline at end of file diff --git a/algorithm/src/main/java/org/laidu/learn/algorithm/sort/SortUtil.java b/algorithm/src/main/java/org/laidu/learn/algorithm/sort/SortUtil.java new file mode 100644 index 000000000..b686c076f --- /dev/null +++ b/algorithm/src/main/java/org/laidu/learn/algorithm/sort/SortUtil.java @@ -0,0 +1,38 @@ +package org.laidu.learn.algorithm.sort; + +import lombok.extern.slf4j.Slf4j; + +import java.util.Arrays; +import java.util.stream.Collectors; + +/** + * 排序工具类 + *

                    + * Created by tiancai.zang + * on 2018-10-31 23:07. + */ +@Slf4j +public class SortUtil { + + /** + * 交换两个数位置 + * @param a + * @param first + * @param second + */ + public static void swap(int[] a, int first, int second) { + + if (first == second) { + return; + } + + int temp = a[first]; + a[first] = a[second]; + a[second] = temp; + } + + public static void print(int[] a){ + + System.out.println(Arrays.stream(a).mapToObj(String::valueOf).collect(Collectors.joining(","))); + } +} \ No newline at end of file diff --git a/algorithm/src/site/markdown/sort-bub.md b/algorithm/src/site/markdown/sort-bub.md new file mode 100644 index 000000000..252a8b88c --- /dev/null +++ b/algorithm/src/site/markdown/sort-bub.md @@ -0,0 +1,35 @@ +# 冒泡排序 算法学习 + +## 1 场景 + +## 2 原理 +给定一个N个元素的数组,冒泡法排序将: +* 1.如果元素大小关系不正确,交换这两个数(在本例中为a> b), +* 2.比较一对相邻元素(a,b), +* 3.重复步骤1和2,直到我们到达数组的末尾(最后一对是第(N-2)和(N-1)项,因为我们的数组从零开始) +* 4.到目前为止,最大的元素将在最后的位置。 然后我们将N减少1,并重复步骤1,直到N = 1。 + +## 3 复杂度 +### 3.1 时间复杂度 + +比较和交换需要一个以常量为界的时间,我们称之为c。 +(标准)Bubble Sort中有两个嵌套循环。 +外循环正好运行N次迭代。 但内部循环运行变得越来越短: + +* 1.当 i = 0,(N-1)次迭代(比较和可能交换)时。 +* 2.当 i = 1,(N-2)次迭代时,... +* 3.当 i =(N-2)时,1次迭代, +* 4.当 i=(N-1),0迭代. +因此,总迭代次数=(N-1)+(N-2)+ ... + 1 + 0 = N *(N-1)/ 2(推导)。 +总时间= c * N *(N-1)/ 2 = O(N ^ 2)。 + +### 3.2 空间复杂度 + + +## 4 适用范围 + +冒泡排序实际上是低效的,它的 O(N^2) 时间复杂度。 想象一下,我们有 N = 106 个数字。 即使我们的计算机速度超快,并且可以在1秒内计算108次操作,但冒泡排序仍需要大约100秒才能完成。 +但是,它可以提前终止,例如, 尝试Bubble Sort上面显示的小型升序示例[3,6,11,25,39],它在O(N)时间结束。 +改进的思路很简单:如果我们通过内部循环完全不交换,这意味着数组已经排序,我们可以在这个点上停止冒泡排序。 +讨论:虽然它使冒泡排序在一般情况下运行得更快,但这种改进的想法并没有改变冒泡排序的 O(N^2) 时间复杂性...为什么? + diff --git a/algorithm/src/site/markdown/sort-quick.md b/algorithm/src/site/markdown/sort-qui.md similarity index 100% rename from algorithm/src/site/markdown/sort-quick.md rename to algorithm/src/site/markdown/sort-qui.md diff --git a/algorithm/src/site/markdown/sort.md b/algorithm/src/site/markdown/sort.md index 388872f05..a81ec5d34 100644 --- a/algorithm/src/site/markdown/sort.md +++ b/algorithm/src/site/markdown/sort.md @@ -1,2 +1,15 @@ # 排序算法学习 + +基于比较的排序算法: +* BUB - 冒泡排序, +* SEL - 选择排序, +* INS - 插入排序, +* MER - 归并排序 (递归实现), +* QUI - 快速排序 (递归实现), +* R-Q - 随机快速排序 (递归实现). + +不基于比较的排序算法: +* COU - 计数排序, +* RAD - 基数排序. + From dcb3f423849b00b193e46ee979acf51858770e2c Mon Sep 17 00:00:00 2001 From: Tiancai ZANG Date: Fri, 2 Nov 2018 17:56:40 +0800 Subject: [PATCH 200/417] sync --- algorithm/src/site/markdown/index.md | 2 +- .../aop/proxy/cglib/CglibProxyDemo.java | 2 +- .../spring/aop/proxy/jdk/JDKProxyDemo.java | 2 +- .../learn/spring/aop/proxy/package-info.java | 1 + language-advance/bytecode/pom.xml | 5 +++ .../learn/advance/bytecode/cglib/Demo.java | 27 ++++++++++++ .../advance/bytecode/cglib/ItWorker.java | 42 +++++++++++++++++++ .../learn/advance/bytecode/cglib/Worker.java | 16 +++++++ .../advance/bytecode/cglib/WorkerProxy.java | 26 ++++++++++++ language-advance/pom.xml | 8 ++++ 10 files changed, 128 insertions(+), 3 deletions(-) create mode 100644 language-advance/bytecode/src/main/java/org/laidu/learn/advance/bytecode/cglib/Demo.java create mode 100644 language-advance/bytecode/src/main/java/org/laidu/learn/advance/bytecode/cglib/ItWorker.java create mode 100644 language-advance/bytecode/src/main/java/org/laidu/learn/advance/bytecode/cglib/Worker.java create mode 100644 language-advance/bytecode/src/main/java/org/laidu/learn/advance/bytecode/cglib/WorkerProxy.java diff --git a/algorithm/src/site/markdown/index.md b/algorithm/src/site/markdown/index.md index 39d1058ee..32bcfc80a 100644 --- a/algorithm/src/site/markdown/index.md +++ b/algorithm/src/site/markdown/index.md @@ -1,3 +1,3 @@ # algorithm -## \ No newline at end of file +## diff --git a/framework/spring/spring-aop/src/main/java/org/laidu/learn/spring/aop/proxy/cglib/CglibProxyDemo.java b/framework/spring/spring-aop/src/main/java/org/laidu/learn/spring/aop/proxy/cglib/CglibProxyDemo.java index 3a3c929d5..381f96323 100644 --- a/framework/spring/spring-aop/src/main/java/org/laidu/learn/spring/aop/proxy/cglib/CglibProxyDemo.java +++ b/framework/spring/spring-aop/src/main/java/org/laidu/learn/spring/aop/proxy/cglib/CglibProxyDemo.java @@ -11,7 +11,7 @@ *

                    * Created by tiancai.zang * on 2018-06-15 16:31. - * @Link org.springframework.aop.framework.CglibAopProxy#getProxy(java.lang.ClassLoader) + * @see org.springframework.aop.framework.CglibAopProxy#getProxy(java.lang.ClassLoader) * @author tiancai.zang */ @Slf4j diff --git a/framework/spring/spring-aop/src/main/java/org/laidu/learn/spring/aop/proxy/jdk/JDKProxyDemo.java b/framework/spring/spring-aop/src/main/java/org/laidu/learn/spring/aop/proxy/jdk/JDKProxyDemo.java index e1c69f1b7..af19ce8e3 100644 --- a/framework/spring/spring-aop/src/main/java/org/laidu/learn/spring/aop/proxy/jdk/JDKProxyDemo.java +++ b/framework/spring/spring-aop/src/main/java/org/laidu/learn/spring/aop/proxy/jdk/JDKProxyDemo.java @@ -13,7 +13,7 @@ *

                    * Created by tiancai.zang * on 2018-06-15 16:30. - * @Link org.springframework.aop.framework.JdkDynamicAopProxy#getProxy(java.lang.ClassLoader) + * @see org.springframework.aop.framework.JdkDynamicAopProxy#getProxy(java.lang.ClassLoader) * @author tiancai.zang */ @Slf4j diff --git a/framework/spring/spring-aop/src/main/java/org/laidu/learn/spring/aop/proxy/package-info.java b/framework/spring/spring-aop/src/main/java/org/laidu/learn/spring/aop/proxy/package-info.java index 1f72d4dd0..7602556d2 100644 --- a/framework/spring/spring-aop/src/main/java/org/laidu/learn/spring/aop/proxy/package-info.java +++ b/framework/spring/spring-aop/src/main/java/org/laidu/learn/spring/aop/proxy/package-info.java @@ -1,6 +1,7 @@ /** * proxy demo *

                    + * @see org.springframework.aop.framework.DefaultAopProxyFactory * Created by tiancai.zang. * on 2018-06-15 16:29. */ diff --git a/language-advance/bytecode/pom.xml b/language-advance/bytecode/pom.xml index 62a3409c4..cf0952cc9 100644 --- a/language-advance/bytecode/pom.xml +++ b/language-advance/bytecode/pom.xml @@ -20,6 +20,11 @@ org.aspectj aspectjweaver + + + cglib + cglib + diff --git a/language-advance/bytecode/src/main/java/org/laidu/learn/advance/bytecode/cglib/Demo.java b/language-advance/bytecode/src/main/java/org/laidu/learn/advance/bytecode/cglib/Demo.java new file mode 100644 index 000000000..d28990eb5 --- /dev/null +++ b/language-advance/bytecode/src/main/java/org/laidu/learn/advance/bytecode/cglib/Demo.java @@ -0,0 +1,27 @@ +package org.laidu.learn.advance.bytecode.cglib; + +import net.sf.cglib.proxy.Enhancer; + +/** + * cglib demo + * + * @author tiancai.zang + * on 2018-11-01 16:24. + */ +public class Demo { + + public static void main(String[] args) { + + +// WorkerProxy proxy = new WorkerProxy(); + +// Enhancer enhancer = new Enhancer(); +// enhancer.setSuperclass(ItWorker.class); +// enhancer.setCallback(proxy); + + ItWorker worker = (ItWorker) Enhancer.create(ItWorker.class,new Class[]{Worker.class},new WorkerProxy()); + + worker.doWork(); + + } +} \ No newline at end of file diff --git a/language-advance/bytecode/src/main/java/org/laidu/learn/advance/bytecode/cglib/ItWorker.java b/language-advance/bytecode/src/main/java/org/laidu/learn/advance/bytecode/cglib/ItWorker.java new file mode 100644 index 000000000..7c35f81e3 --- /dev/null +++ b/language-advance/bytecode/src/main/java/org/laidu/learn/advance/bytecode/cglib/ItWorker.java @@ -0,0 +1,42 @@ +package org.laidu.learn.advance.bytecode.cglib; + +import lombok.extern.slf4j.Slf4j; + +/** + * @author tiancai.zang + * on 2018-11-01 16:26. + */ +@Slf4j +public class ItWorker implements Worker { + + @Override + public void doWork() { + System.out.println("coding..."); + + getName(); + + getName1(); +// hello(); + } + + /** + * cglib 通过 继承方式 实现动态代理 因此无法代理被final, private , static修饰的无法被子类继承的方法 + * @return + */ +// protected final void doWork1() { +// System.out.println("coding..."); +// } + +// public static void hello(){ +// System.out.println("hello"); +// } + + @Override + public String getName() { + return "码农"; + } + + public String getName1() { + return "码农"; + } +} \ No newline at end of file diff --git a/language-advance/bytecode/src/main/java/org/laidu/learn/advance/bytecode/cglib/Worker.java b/language-advance/bytecode/src/main/java/org/laidu/learn/advance/bytecode/cglib/Worker.java new file mode 100644 index 000000000..ba2a6b3d0 --- /dev/null +++ b/language-advance/bytecode/src/main/java/org/laidu/learn/advance/bytecode/cglib/Worker.java @@ -0,0 +1,16 @@ +package org.laidu.learn.advance.bytecode.cglib; + +/** + * 工人接口 + *

                    + * Created by laidu + * on 2018-11-01 16:25. + * + * @author laidu + */ +public interface Worker { + + void doWork(); + + String getName(); +} diff --git a/language-advance/bytecode/src/main/java/org/laidu/learn/advance/bytecode/cglib/WorkerProxy.java b/language-advance/bytecode/src/main/java/org/laidu/learn/advance/bytecode/cglib/WorkerProxy.java new file mode 100644 index 000000000..536897ae6 --- /dev/null +++ b/language-advance/bytecode/src/main/java/org/laidu/learn/advance/bytecode/cglib/WorkerProxy.java @@ -0,0 +1,26 @@ +package org.laidu.learn.advance.bytecode.cglib; + +import lombok.extern.slf4j.Slf4j; +import net.sf.cglib.proxy.MethodInterceptor; +import net.sf.cglib.proxy.MethodProxy; + +import java.lang.reflect.Method; + +/** + * 工人 代理 + * + * @author tiancai.zang + * on 2018-11-01 16:27. + */ +@Slf4j +public class WorkerProxy implements MethodInterceptor { + + @Override + public Object intercept(Object o, Method method, Object[] objects, MethodProxy methodProxy) throws Throwable { + + System.out.println(" 上班 "); + Object result = methodProxy.invokeSuper(o, objects); + System.out.println(" 下班 "); + return result; + } +} \ No newline at end of file diff --git a/language-advance/pom.xml b/language-advance/pom.xml index 87e1e1dfb..7dcafc343 100644 --- a/language-advance/pom.xml +++ b/language-advance/pom.xml @@ -25,10 +25,18 @@ 1.9.1 + 3.2.9 + + + cglib + cglib + ${cglib.version} + + org.aspectj aspectjweaver From be61633a94cfa5280a09ffd92bcd250e26e56ec9 Mon Sep 17 00:00:00 2001 From: Tiancai ZANG Date: Fri, 2 Nov 2018 20:14:28 +0800 Subject: [PATCH 201/417] validate spring cyclic dependency --- .../boot/app/SpringBootAppApplication.java | 4 ++++ .../boot/app/controller/DemoController.java | 10 ++++++++ .../spring/boot/app/service/DemoService.java | 14 +++++++++++ .../app/service/impl/DemoServiceAImpl.java | 24 +++++++++++++++++++ .../app/service/impl/DemoServiceBImpl.java | 24 +++++++++++++++++++ .../src/main/resources/application.yml | 6 +++-- 6 files changed, 80 insertions(+), 2 deletions(-) create mode 100644 framework/spring/spring-boot/spring-boot-app/src/main/java/org/laidu/learn/spring/boot/app/service/DemoService.java create mode 100644 framework/spring/spring-boot/spring-boot-app/src/main/java/org/laidu/learn/spring/boot/app/service/impl/DemoServiceAImpl.java create mode 100644 framework/spring/spring-boot/spring-boot-app/src/main/java/org/laidu/learn/spring/boot/app/service/impl/DemoServiceBImpl.java diff --git a/framework/spring/spring-boot/spring-boot-app/src/main/java/org/laidu/learn/spring/boot/app/SpringBootAppApplication.java b/framework/spring/spring-boot/spring-boot-app/src/main/java/org/laidu/learn/spring/boot/app/SpringBootAppApplication.java index a65603683..26eb8a2e9 100644 --- a/framework/spring/spring-boot/spring-boot-app/src/main/java/org/laidu/learn/spring/boot/app/SpringBootAppApplication.java +++ b/framework/spring/spring-boot/spring-boot-app/src/main/java/org/laidu/learn/spring/boot/app/SpringBootAppApplication.java @@ -2,6 +2,7 @@ import lombok.extern.slf4j.Slf4j; import org.springframework.boot.Banner; +import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.boot.builder.SpringApplicationBuilder; @@ -15,6 +16,9 @@ public class SpringBootAppApplication { public static void main(String[] args) { + + SpringApplication.run(SpringBootAppApplication.class,args); + new SpringApplicationBuilder() .sources(SpringBootAppApplication.class) .registerShutdownHook(true) diff --git a/framework/spring/spring-boot/spring-boot-app/src/main/java/org/laidu/learn/spring/boot/app/controller/DemoController.java b/framework/spring/spring-boot/spring-boot-app/src/main/java/org/laidu/learn/spring/boot/app/controller/DemoController.java index eeffcdb9d..5f2aded8b 100644 --- a/framework/spring/spring-boot/spring-boot-app/src/main/java/org/laidu/learn/spring/boot/app/controller/DemoController.java +++ b/framework/spring/spring-boot/spring-boot-app/src/main/java/org/laidu/learn/spring/boot/app/controller/DemoController.java @@ -3,6 +3,8 @@ import io.micrometer.core.annotation.Timed; import lombok.extern.slf4j.Slf4j; import org.laidu.learn.spring.boot.app.dto.DemoDTO; +import org.laidu.learn.spring.boot.app.service.DemoService; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; /** @@ -18,6 +20,8 @@ @RequestMapping("/") public class DemoController { + @Autowired + private DemoService demoServiceA; @PostMapping("/demo") public DemoDTO demo(@RequestBody DemoDTO demoDTO){ @@ -29,6 +33,12 @@ public DemoDTO demo(@RequestBody DemoDTO demoDTO){ @Timed(extraTags = { "region", "us-east-1" }) @Timed(value = "all.people", longTask = true) public String hello(){ + demoServiceA.work(); + return "hello"; } + + + + } \ No newline at end of file diff --git a/framework/spring/spring-boot/spring-boot-app/src/main/java/org/laidu/learn/spring/boot/app/service/DemoService.java b/framework/spring/spring-boot/spring-boot-app/src/main/java/org/laidu/learn/spring/boot/app/service/DemoService.java new file mode 100644 index 000000000..f2995b8ce --- /dev/null +++ b/framework/spring/spring-boot/spring-boot-app/src/main/java/org/laidu/learn/spring/boot/app/service/DemoService.java @@ -0,0 +1,14 @@ +package org.laidu.learn.spring.boot.app.service; + +/** + * service + *

                    + * Created by laidu + * on 2018-11-02 19:49. + * + * @author laidu + */ +public interface DemoService { + + void work(); +} diff --git a/framework/spring/spring-boot/spring-boot-app/src/main/java/org/laidu/learn/spring/boot/app/service/impl/DemoServiceAImpl.java b/framework/spring/spring-boot/spring-boot-app/src/main/java/org/laidu/learn/spring/boot/app/service/impl/DemoServiceAImpl.java new file mode 100644 index 000000000..ba9666350 --- /dev/null +++ b/framework/spring/spring-boot/spring-boot-app/src/main/java/org/laidu/learn/spring/boot/app/service/impl/DemoServiceAImpl.java @@ -0,0 +1,24 @@ +package org.laidu.learn.spring.boot.app.service.impl; + +import lombok.extern.slf4j.Slf4j; +import org.laidu.learn.spring.boot.app.service.DemoService; +import org.springframework.stereotype.Service; + +import javax.annotation.Resource; + +/** + * @author tiancai.zang + * on 2018-11-02 19:50. + */ +@Slf4j +@Service("demoServiceA") +public class DemoServiceAImpl implements DemoService { + + @Resource(name = "demoServiceB") + private DemoService demoService; + + @Override + public void work() { + demoService.work(); + } +} \ No newline at end of file diff --git a/framework/spring/spring-boot/spring-boot-app/src/main/java/org/laidu/learn/spring/boot/app/service/impl/DemoServiceBImpl.java b/framework/spring/spring-boot/spring-boot-app/src/main/java/org/laidu/learn/spring/boot/app/service/impl/DemoServiceBImpl.java new file mode 100644 index 000000000..d8ce7cff2 --- /dev/null +++ b/framework/spring/spring-boot/spring-boot-app/src/main/java/org/laidu/learn/spring/boot/app/service/impl/DemoServiceBImpl.java @@ -0,0 +1,24 @@ +package org.laidu.learn.spring.boot.app.service.impl; + +import lombok.extern.slf4j.Slf4j; +import org.laidu.learn.spring.boot.app.service.DemoService; +import org.springframework.stereotype.Service; + +import javax.annotation.Resource; + +/** + * @author tiancai.zang + * on 2018-11-02 19:50. + */ +@Slf4j +@Service("demoServiceB") +public class DemoServiceBImpl implements DemoService { + + @Resource(name = "demoServiceA") + private DemoService demoService; + + @Override + public void work() { + demoService.work(); + } +} \ No newline at end of file diff --git a/framework/spring/spring-boot/spring-boot-app/src/main/resources/application.yml b/framework/spring/spring-boot/spring-boot-app/src/main/resources/application.yml index 4237dc26b..aa66cded5 100644 --- a/framework/spring/spring-boot/spring-boot-app/src/main/resources/application.yml +++ b/framework/spring/spring-boot/spring-boot-app/src/main/resources/application.yml @@ -7,6 +7,8 @@ spring: # property-naming-strategy: SNAKE_CASE application: name: spring-boot-app-1 + admin: + enabled: true management: endpoint: @@ -19,7 +21,7 @@ management: info: enabled: true endpoints: - enabled-by-default: true + enabled-by-default: false jmx: exposure: @@ -35,4 +37,4 @@ management: step: 1s binders: jvm: - enabled: true \ No newline at end of file + enabled: true From d1396c328c3d96d4868a37ec11c8451610cae65c Mon Sep 17 00:00:00 2001 From: Tiancai ZANG Date: Mon, 5 Nov 2018 21:11:33 +0800 Subject: [PATCH 202/417] sync --- .../src/site/markdown/cyclic-dependency.md | 1 + .../src/site/markdown/index.md | 6 ++- .../feature/net/SocketServerDemo.java | 49 +++++++++++++++++++ .../language/feature/object/ObjectDemo.java | 27 ++++++++++ .../language/feature/regex/RegexUsage.java | 17 +++++++ language-feature/src/site/markdown/index.md | 1 + language-feature/src/site/markdown/object.md | 14 ++++++ 7 files changed, 114 insertions(+), 1 deletion(-) create mode 100644 framework/spring/spring-boot/spring-boot-app/src/site/markdown/cyclic-dependency.md create mode 100644 language-feature/src/main/java/org/laidu/learn/language/feature/net/SocketServerDemo.java create mode 100644 language-feature/src/main/java/org/laidu/learn/language/feature/object/ObjectDemo.java create mode 100644 language-feature/src/site/markdown/object.md diff --git a/framework/spring/spring-boot/spring-boot-app/src/site/markdown/cyclic-dependency.md b/framework/spring/spring-boot/spring-boot-app/src/site/markdown/cyclic-dependency.md new file mode 100644 index 000000000..6eadd3484 --- /dev/null +++ b/framework/spring/spring-boot/spring-boot-app/src/site/markdown/cyclic-dependency.md @@ -0,0 +1 @@ +# Spring IOC 容器如何解决循环依赖? \ No newline at end of file diff --git a/framework/spring/spring-boot/spring-boot-app/src/site/markdown/index.md b/framework/spring/spring-boot/spring-boot-app/src/site/markdown/index.md index 1dc805484..7b5e51b7f 100644 --- a/framework/spring/spring-boot/spring-boot-app/src/site/markdown/index.md +++ b/framework/spring/spring-boot/spring-boot-app/src/site/markdown/index.md @@ -1 +1,5 @@ -# spring boot app 学习 \ No newline at end of file +# spring boot app 学习 + +*[spring解决循环依赖]() + +参考: diff --git a/language-feature/src/main/java/org/laidu/learn/language/feature/net/SocketServerDemo.java b/language-feature/src/main/java/org/laidu/learn/language/feature/net/SocketServerDemo.java new file mode 100644 index 000000000..8a2dc24d6 --- /dev/null +++ b/language-feature/src/main/java/org/laidu/learn/language/feature/net/SocketServerDemo.java @@ -0,0 +1,49 @@ +package org.laidu.learn.language.feature.net; + +import lombok.extern.slf4j.Slf4j; + +import java.io.*; +import java.net.ServerSocket; +import java.net.Socket; + +/** + * socket 服务其 + * + * @author tiancai.zang + * on 2018-11-05 19:15. + */ +@Slf4j +public class SocketServerDemo { + + public static void main(String[] args) throws IOException { + + ServerSocket server = new ServerSocket(8080); + + while (true){ + Socket accept = server.accept(); + + + BufferedReader reader = new BufferedReader(new InputStreamReader(accept.getInputStream())); + String message = "HTTP/1.1 200 OK\n" + + "Date: Mon, 05 Nov 2018 11:50:21 GMT\n" + + "Server: Apache\n" + + "Last-Modified: Tue, 12 Jan 2010 13:48:00 GMT\n" + + "ETag: \"51-47cf7e6ee8400\"\n" + + "Accept-Ranges: bytes\n" + + "Content-Length: 81\n" + + "Cache-Control: max-age=86400\n" + + "Expires: Tue, 06 Nov 2018 11:50:21 GMT\n" + + "Connection: Keep-Alive\n" + + "Content-Type: application/html\n" + + "{\"nihao\":123}"; + + + FileInputStream fileInputStream = new FileInputStream(new File("/home/laidu/Documents/e-book/高性能mysql第三版.pdf")); + + accept.getOutputStream().write(message.getBytes()); + + accept.close(); + } + } + +} \ No newline at end of file diff --git a/language-feature/src/main/java/org/laidu/learn/language/feature/object/ObjectDemo.java b/language-feature/src/main/java/org/laidu/learn/language/feature/object/ObjectDemo.java new file mode 100644 index 000000000..8531bb29f --- /dev/null +++ b/language-feature/src/main/java/org/laidu/learn/language/feature/object/ObjectDemo.java @@ -0,0 +1,27 @@ +package org.laidu.learn.language.feature.object; + +/** + * Object 方法测试 + * + * @author tiancai.zang + * on 2018-11-05 17:45. + */ +public class ObjectDemo { + + public static void main(String[] args) throws InterruptedException { + + Object o1 = new Object(); + Object o2 = new Object(){ + @Override + public Object clone() throws CloneNotSupportedException { + return super.clone(); + } + }; + + + System.out.println(o1.hashCode()); + System.out.println(o2.hashCode()); + + + } +} \ No newline at end of file diff --git a/language-feature/src/main/java/org/laidu/learn/language/feature/regex/RegexUsage.java b/language-feature/src/main/java/org/laidu/learn/language/feature/regex/RegexUsage.java index f86babd73..ba8d73782 100644 --- a/language-feature/src/main/java/org/laidu/learn/language/feature/regex/RegexUsage.java +++ b/language-feature/src/main/java/org/laidu/learn/language/feature/regex/RegexUsage.java @@ -2,6 +2,9 @@ import lombok.extern.slf4j.Slf4j; +import java.util.regex.Matcher; +import java.util.regex.Pattern; + /** * regex usage *

                    @@ -10,5 +13,19 @@ @Slf4j public class RegexUsage { + private static Pattern bugPattern = Pattern.compile("^\\s*\\w+(?:\\.{0,1}[\\w-]+)*@[a-zA-Z0-9]+(?:[-.][a-zA-Z0-9]+)*\\.[a-zA-Z]+\\s*$"); + + + public static void main(String[] args) { + + String email = "123qq@qq123@qq.com"; + + Matcher matcher = bugPattern.matcher(email); + + if (matcher.matches()) { + System.out.println(); + + } + } } \ No newline at end of file diff --git a/language-feature/src/site/markdown/index.md b/language-feature/src/site/markdown/index.md index 8502eaa16..ff93011b6 100644 --- a/language-feature/src/site/markdown/index.md +++ b/language-feature/src/site/markdown/index.md @@ -8,6 +8,7 @@ ------------ +* [Object解析](object.md) * [java数据结构]() * [java集合](collection.md) diff --git a/language-feature/src/site/markdown/object.md b/language-feature/src/site/markdown/object.md new file mode 100644 index 000000000..2beae70ca --- /dev/null +++ b/language-feature/src/site/markdown/object.md @@ -0,0 +1,14 @@ +# Object 源码解析 + +## 类图 + +![](image/Object.png) + +## 方法预览(API) + + + +## 关键方法解析 + +参考: +* [java-se 11 Object](https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/lang/Object.html) From 89b56876b9b24a8d359b074c72635d23b0479382 Mon Sep 17 00:00:00 2001 From: Tiancai ZANG Date: Tue, 6 Nov 2018 19:30:12 +0800 Subject: [PATCH 203/417] fixed order list bug --- .../design/pattern/proxy/ProxySubject.java | 6 +- .../amqp/rabbitmq/official/rpc/RPCServer.java | 77 ------------------- .../rpc/{RPCClient.java => RpcClient.java} | 26 ++++--- language-feature/pom.xml | 20 +++++ .../feature/net/http/HttpServerDemo.java | 32 ++++++++ .../src/site/markdown/uml/custom-mvc.puml | 18 +++++ 6 files changed, 88 insertions(+), 91 deletions(-) delete mode 100644 framework/spring/spring-amqp/src/main/java/org/laidu/learn/amqp/rabbitmq/official/rpc/RPCServer.java rename framework/spring/spring-amqp/src/main/java/org/laidu/learn/amqp/rabbitmq/official/rpc/{RPCClient.java => RpcClient.java} (80%) create mode 100644 language-feature/src/main/java/org/laidu/learn/language/feature/net/http/HttpServerDemo.java create mode 100644 language-feature/src/site/markdown/uml/custom-mvc.puml diff --git a/design-pattern/java-design-pattern-learn/src/main/java/org/laidu/learn/design/pattern/proxy/ProxySubject.java b/design-pattern/java-design-pattern-learn/src/main/java/org/laidu/learn/design/pattern/proxy/ProxySubject.java index 79d608cd8..1f604482a 100644 --- a/design-pattern/java-design-pattern-learn/src/main/java/org/laidu/learn/design/pattern/proxy/ProxySubject.java +++ b/design-pattern/java-design-pattern-learn/src/main/java/org/laidu/learn/design/pattern/proxy/ProxySubject.java @@ -20,11 +20,13 @@ public class ProxySubject extends AbstractSubject { @Override public void request(String name) { - preRequest(name); // 请求前置处理 + // 请求前置处理 + preRequest(name); subject.request(name); - postRequest(name); // 请求后置处理 + // 请求后置处理 + postRequest(name); } diff --git a/framework/spring/spring-amqp/src/main/java/org/laidu/learn/amqp/rabbitmq/official/rpc/RPCServer.java b/framework/spring/spring-amqp/src/main/java/org/laidu/learn/amqp/rabbitmq/official/rpc/RPCServer.java deleted file mode 100644 index 50df332cb..000000000 --- a/framework/spring/spring-amqp/src/main/java/org/laidu/learn/amqp/rabbitmq/official/rpc/RPCServer.java +++ /dev/null @@ -1,77 +0,0 @@ -package org.laidu.learn.amqp.rabbitmq.official.rpc; - - -import lombok.extern.slf4j.Slf4j; - -import com.rabbitmq.client.*; - -import java.io.IOException; - -/** - * rabbitmq 官方 示例 - *

                    - * Created by 臧天才 on 2017-09-13 10:55. - */ -@Slf4j -// : 2017-09-13 10:55 rabbitmq 官方 示例 -public class RPCServer { - - private static final String RPC_QUEUE_NAME = "rpc_queue"; - - public static void main(String[] argv) { - ConnectionFactory factory = new ConnectionFactory(); - factory.setHost("dev"); - factory.setUsername("admin"); - factory.setPassword("admin"); - factory.setPort(5672); - factory.setVirtualHost("/rpc"); - - Connection connection = null; - try { - connection = factory.newConnection(); - Channel channel = connection.createChannel(); - - channel.queueDeclare(RPC_QUEUE_NAME, false, false, false, null); - - channel.basicQos(1); - - System.out.println(" [x] Awaiting RPC requests"); - - Consumer consumer = new DefaultConsumer(channel) { - @Override - public void handleDelivery(String consumerTag, Envelope envelope, AMQP.BasicProperties properties, byte[] body) throws IOException { - AMQP.BasicProperties replyProps = new AMQP.BasicProperties - .Builder() - .correlationId(properties.getCorrelationId()) - .build(); - - String response = ""; - - try { - - response += fib(Integer.parseInt(new String(body))); - - } catch (RuntimeException e) { - System.out.println(" [.] " + e.toString()); - } finally { - channel.basicPublish("", properties.getReplyTo(), replyProps, response.getBytes("UTF-8")); - - channel.basicAck(envelope.getDeliveryTag(), false); - } - } - }; - - channel.basicConsume(RPC_QUEUE_NAME, false, consumer); - - } catch (Exception e) { - - } - } - - private static int fib(int n) { - if (n == 0) return 0; - if (n == 1) return 1; - return fib(n-1) + fib(n-2); - } - -} diff --git a/framework/spring/spring-amqp/src/main/java/org/laidu/learn/amqp/rabbitmq/official/rpc/RPCClient.java b/framework/spring/spring-amqp/src/main/java/org/laidu/learn/amqp/rabbitmq/official/rpc/RpcClient.java similarity index 80% rename from framework/spring/spring-amqp/src/main/java/org/laidu/learn/amqp/rabbitmq/official/rpc/RPCClient.java rename to framework/spring/spring-amqp/src/main/java/org/laidu/learn/amqp/rabbitmq/official/rpc/RpcClient.java index 1214e582e..be2e3e44c 100644 --- a/framework/spring/spring-amqp/src/main/java/org/laidu/learn/amqp/rabbitmq/official/rpc/RPCClient.java +++ b/framework/spring/spring-amqp/src/main/java/org/laidu/learn/amqp/rabbitmq/official/rpc/RpcClient.java @@ -1,31 +1,30 @@ package org.laidu.learn.amqp.rabbitmq.official.rpc; -import lombok.extern.slf4j.Slf4j; - import com.rabbitmq.client.*; +import lombok.extern.slf4j.Slf4j; import java.io.IOException; import java.util.UUID; import java.util.concurrent.*; /** - * rabbitmq 官方示例 RPCClient + * rabbitmq 官方示例 RpcClient *

                    - * Created by 臧天才 on 2017-09-13 11:02. + * + * @author 臧天才 + * @date 2017-09-13 11:02 */ @Slf4j -// : 2017-09-13 11:02 rabbitmq 官方示例 RPCClient -public class RPCClient { +public class RpcClient { private Connection connection; private Channel channel; - private String requestQueueName = "rpc_queue"; private String replyQueueName; - public RPCClient() throws IOException, TimeoutException { + public RpcClient() throws IOException, TimeoutException { ConnectionFactory factory = new ConnectionFactory(); - factory.setHost("dev"); + factory.setHost("local-dev"); factory.setUsername("admin"); factory.setPassword("admin"); factory.setPort(5672); @@ -34,6 +33,8 @@ public RPCClient() throws IOException, TimeoutException { connection = factory.newConnection(); channel = connection.createChannel(); + String replyTo = "rpc_reply_to"; +// replyQueueName = channel.queueDeclare(replyTo,true,false,false,null).getQueue(); replyQueueName = channel.queueDeclare().getQueue(); } @@ -46,7 +47,6 @@ public String call(String message) throws IOException, InterruptedException { .replyTo(replyQueueName) .build(); - channel.basicPublish("", requestQueueName, props, message.getBytes("UTF-8")); final BlockingQueue response = new ArrayBlockingQueue<>(1); @@ -59,6 +59,8 @@ public void handleDelivery(String consumerTag, Envelope envelope, AMQP.BasicProp } }); + channel.basicPublish("", RpcServer.RPC_QUEUE_NAME, props, message.getBytes("UTF-8")); + return response.take(); } @@ -68,7 +70,7 @@ public void close() throws IOException { public static void main(String[] args) throws IOException, TimeoutException, InterruptedException { - RPCClient fibonacciRpc = new RPCClient(); + RpcClient fibonacciRpc = new RpcClient(); ExecutorService service = Executors.newFixedThreadPool(10); service.submit(()->{ @@ -76,7 +78,7 @@ public static void main(String[] args) throws IOException, TimeoutException, Int System.out.println(" [x] Requesting fib(30)"); String response = null; try { - response = fibonacciRpc.call("30"); + response = fibonacciRpc.call("3"); } catch (IOException e) { e.printStackTrace(); } catch (InterruptedException e) { diff --git a/language-feature/pom.xml b/language-feature/pom.xml index 1133a38f3..d84805382 100644 --- a/language-feature/pom.xml +++ b/language-feature/pom.xml @@ -15,4 +15,24 @@ language-feature + + 3.1.0 + + + + + + javax.servlet + javax.servlet-api + ${javax.servlet.version} + provided + + + org.eclipse.jetty + jetty-server + 9.4.12.v20180830 + + + + \ No newline at end of file diff --git a/language-feature/src/main/java/org/laidu/learn/language/feature/net/http/HttpServerDemo.java b/language-feature/src/main/java/org/laidu/learn/language/feature/net/http/HttpServerDemo.java new file mode 100644 index 000000000..8742f8235 --- /dev/null +++ b/language-feature/src/main/java/org/laidu/learn/language/feature/net/http/HttpServerDemo.java @@ -0,0 +1,32 @@ +package org.laidu.learn.language.feature.net.http; + +import lombok.extern.slf4j.Slf4j; + +import javax.servlet.*; +import javax.servlet.annotation.WebServlet; +import java.io.IOException; + +/** + * http server demo + * + * @author tiancai.zang + * on 2018-11-06 17:17. + */ +@Slf4j +public class HttpServerDemo { + + public static void main(String[] args) { + + } + + @WebServlet("/") + public static class DemoServlet extends GenericServlet{ + + private static final long serialVersionUID = 6747504141486704337L; + + @Override + public void service(ServletRequest req, ServletResponse res) throws ServletException, IOException { + res.getWriter().write("helle"); + } + } +} \ No newline at end of file diff --git a/language-feature/src/site/markdown/uml/custom-mvc.puml b/language-feature/src/site/markdown/uml/custom-mvc.puml new file mode 100644 index 000000000..8159a571b --- /dev/null +++ b/language-feature/src/site/markdown/uml/custom-mvc.puml @@ -0,0 +1,18 @@ +@startuml + +interface EventListener +interface ServletDispatcher +class Route + + + +List <|-- EventListener +Collection <|-- AbstractCollection + + +interface EventListener { +void handleSocket(ServerSocket server); +} + + +@enduml \ No newline at end of file From 58f4b5a3da89a64aec2e00167c88522c22afd68e Mon Sep 17 00:00:00 2001 From: Tiancai ZANG Date: Tue, 6 Nov 2018 19:54:26 +0800 Subject: [PATCH 204/417] use settled reply queue --- .../official/rpc/{ => custom}/RpcClient.java | 41 ++++----- .../official/rpc/custom/RpcServer.java | 83 ++++++++++++++++++ .../src/site/markdown/image/Object.png | Bin 0 -> 12690 bytes 3 files changed, 104 insertions(+), 20 deletions(-) rename framework/spring/spring-amqp/src/main/java/org/laidu/learn/amqp/rabbitmq/official/rpc/{ => custom}/RpcClient.java (74%) create mode 100644 framework/spring/spring-amqp/src/main/java/org/laidu/learn/amqp/rabbitmq/official/rpc/custom/RpcServer.java create mode 100644 language-feature/src/site/markdown/image/Object.png diff --git a/framework/spring/spring-amqp/src/main/java/org/laidu/learn/amqp/rabbitmq/official/rpc/RpcClient.java b/framework/spring/spring-amqp/src/main/java/org/laidu/learn/amqp/rabbitmq/official/rpc/custom/RpcClient.java similarity index 74% rename from framework/spring/spring-amqp/src/main/java/org/laidu/learn/amqp/rabbitmq/official/rpc/RpcClient.java rename to framework/spring/spring-amqp/src/main/java/org/laidu/learn/amqp/rabbitmq/official/rpc/custom/RpcClient.java index be2e3e44c..af3c93f56 100644 --- a/framework/spring/spring-amqp/src/main/java/org/laidu/learn/amqp/rabbitmq/official/rpc/RpcClient.java +++ b/framework/spring/spring-amqp/src/main/java/org/laidu/learn/amqp/rabbitmq/official/rpc/custom/RpcClient.java @@ -1,4 +1,4 @@ -package org.laidu.learn.amqp.rabbitmq.official.rpc; +package org.laidu.learn.amqp.rabbitmq.official.rpc.custom; import com.rabbitmq.client.*; @@ -34,8 +34,8 @@ public RpcClient() throws IOException, TimeoutException { channel = connection.createChannel(); String replyTo = "rpc_reply_to"; -// replyQueueName = channel.queueDeclare(replyTo,true,false,false,null).getQueue(); - replyQueueName = channel.queueDeclare().getQueue(); + replyQueueName = channel.queueDeclare(replyTo,true,false,false,null).getQueue(); +// replyQueueName = channel.queueDeclare().getQueue(); } public String call(String message) throws IOException, InterruptedException { @@ -47,6 +47,7 @@ public String call(String message) throws IOException, InterruptedException { .replyTo(replyQueueName) .build(); + channel.basicPublish("", RpcServer.RPC_QUEUE_NAME, props, message.getBytes("UTF-8")); final BlockingQueue response = new ArrayBlockingQueue<>(1); @@ -59,8 +60,6 @@ public void handleDelivery(String consumerTag, Envelope envelope, AMQP.BasicProp } }); - channel.basicPublish("", RpcServer.RPC_QUEUE_NAME, props, message.getBytes("UTF-8")); - return response.take(); } @@ -72,23 +71,25 @@ public static void main(String[] args) throws IOException, TimeoutException, Int RpcClient fibonacciRpc = new RpcClient(); - ExecutorService service = Executors.newFixedThreadPool(10); - service.submit(()->{ - - System.out.println(" [x] Requesting fib(30)"); - String response = null; - try { - response = fibonacciRpc.call("3"); - } catch (IOException e) { - e.printStackTrace(); - } catch (InterruptedException e) { - e.printStackTrace(); - } - System.out.println(" [.] Got '" + response + "'"); - }); - +// ExecutorService service = Executors.newFixedThreadPool(10); +// service.submit(()->{ +// +// System.out.println(" [x] Requesting fib(30)"); +// String response = null; +// try { +// +// } catch (Exception e) { +// e.printStackTrace(); +// } +// System.out.println(" [.] Got '" + response + "'"); +// }); + + String result = fibonacciRpc.call("30"); fibonacciRpc.close(); + + System.out.println(result); + } } diff --git a/framework/spring/spring-amqp/src/main/java/org/laidu/learn/amqp/rabbitmq/official/rpc/custom/RpcServer.java b/framework/spring/spring-amqp/src/main/java/org/laidu/learn/amqp/rabbitmq/official/rpc/custom/RpcServer.java new file mode 100644 index 000000000..810b8f5d8 --- /dev/null +++ b/framework/spring/spring-amqp/src/main/java/org/laidu/learn/amqp/rabbitmq/official/rpc/custom/RpcServer.java @@ -0,0 +1,83 @@ +package org.laidu.learn.amqp.rabbitmq.official.rpc.custom; + + +import com.rabbitmq.client.*; +import lombok.extern.slf4j.Slf4j; + +import java.io.IOException; + +/** + * rabbitmq 官方 示例 + *

                    + * Created by 臧天才 on 2017-09-13 10:55. + */ +@Slf4j +public class RpcServer { + + public static final String RPC_QUEUE_NAME = "rpc_queue"; + + public static void main(String[] argv) { + ConnectionFactory factory = getConnectionFactory(); + + Connection connection = null; + try { + connection = factory.newConnection(); + Channel channel = connection.createChannel(); + + channel.queueDeclare(RPC_QUEUE_NAME, false, false, false, null); + + channel.basicQos(1); + + System.out.println(" [x] Awaiting RPC requests"); + + Consumer consumer = new DefaultConsumer(channel) { + @Override + public void handleDelivery(String consumerTag, Envelope envelope, AMQP.BasicProperties properties, byte[] body) throws IOException { + AMQP.BasicProperties replyProps = new AMQP.BasicProperties + .Builder() + .correlationId(properties.getCorrelationId()) + .replyTo(properties.getReplyTo()) + .build(); + + String response = ""; + + try { + + System.out.println(properties.getReplyTo()); + + response += fib(Integer.parseInt(new String(body))); + + } catch (RuntimeException e) { + System.out.println(" [.] " + e.toString()); + } finally { + channel.basicPublish("",replyProps.getReplyTo(), replyProps, response.getBytes("UTF-8")); + + channel.basicAck(envelope.getDeliveryTag(), false); + } + } + }; + + channel.basicConsume(RPC_QUEUE_NAME, false, consumer); + + } catch (Exception e) { + e.printStackTrace(); + } + } + + public static ConnectionFactory getConnectionFactory() { + ConnectionFactory factory = new ConnectionFactory(); + factory.setHost("local-dev"); + factory.setUsername("admin"); + factory.setPassword("admin"); + factory.setPort(5672); + factory.setVirtualHost("/rpc"); + return factory; + } + + private static int fib(int n) { + if (n == 0) return 0; + if (n == 1) return 1; + return fib(n-1) + fib(n-2); + } + +} diff --git a/language-feature/src/site/markdown/image/Object.png b/language-feature/src/site/markdown/image/Object.png new file mode 100644 index 0000000000000000000000000000000000000000..5112a152c1db263797813e3f6055bed7fe618d3c GIT binary patch literal 12690 zcmaL81yo$i7A@Kh1h+tN4cZXgU4lcfKyW9Gy9Xx_2rg-Yd$8bc!Gbp)+})kv`kI_` z?mhR9{~lxPLHDlOwXD{vxo1^}swl}|pc113000a*S;@Ds|Azno&CoNB{agYSReL?C7GFJyN zSA)2=6#c$$omWW!Byb$zk`8@J`d@X@?C;-A@5dC!Ki=ZL0D)B>u#y3&ndr~{eW?V) zJ^R-Mk_dqN*L7+GdF*8xaT~Fany~Qa$V7*=Ny9@{3dDdAAlQQI>KQ!h-NzFZ)q@97 zY)}Xz4fG&S8XH8<$Og3?eEZjjl2!$=%+!K5PznYHrHYce5k&XQMMi*r);>K`QqmyG=VEQP8RBo<+J70(Lr=03S6B1jG6Kp0jdxB_asH*8sQ!%;T9W- zbX>Uids#J3RDtrdw;z02y{o4gGViU8PWCxQELBiWb$}!NFk#Q}-xLZmXK&;%y+$i9 zz0#}E3V}Xx+iLsCc(U1ACtI=+SKHdr~ zHmvp5cOvOp*5YG>b~4xZ+8X<-BsHnD8G)*3zoo0xaYk`;g3vp+m6K zo8Bq~-RI9E9*E8Sq;M^>5(etTtaSOhPdfO?5(Lz83FmuG>=o$Zi(e5&lQ()5)1805 zJnmTt9gFzd8LW|0;rgoL+iYVCzg3*$JC26m2#>Y%*>Bx#g1?F|jF86PqDR-)FeZ)q zxmH=NRcZhr&Ul32_y`$X6ZLWz*_(G0ZLguz@3*{xy5Y&YrKf!x?bQQj;5!Nx=@Yz(&2uY#NpMHaOo$4$+SSyZ1m*sGqW%y+Qr5p&s| zV}o)~e$SsMW~MckcHuS79jfsx+N+FO=ruH=oKA-R(mLxx z*tycg8gLa0x@$+ozLkaQ`Og`1?;gxuDH^fy=eOkdkI=AVgD%G_{&MdIoh6y#Y2FgT zp{>%1XFc#^-{-&PKdwCT*PG zDWVh^tS)_4qb~V^q`C)`_$udzoyXhl9~UMCEH1AOI2sxs`?2nHM?|JANu92QG7y|X z-55@(`FgE+7;55XL%su{@vwQW_qJc%RDpBThY)-uqT}z{wIx3%f`e>lbF-kJusDb@ ztlkup%4&`6rhJVV?LPUVs-+7hB`+#g9AQFBVPy;Su<=rkWKU|r=i`o45Gziy80+W&Q_;HI+t|$JsRDbCr31kWcgLj` zxXgT5B~*}VebGu|viA1scB8aMc;Y*L3u~x=W+qIU2wTyD?ncuf1%Az!ZJLgE_=1cW^T2SkL8a3g+ku~T zvA$f@7SgOn0&yZo>V4%0d0sraC{EY&ZKTyns!DQd4W;<1c}QyMbTW8q@uy6p$-F>r zpYO+zO+t`D+X@sTc}n%syk*S5Ld{UG6p-XzGcbFu28r@DoRSz1?>{lQ@4 z<{65j5V$V4B&w>vgdObENd?j6r8f5C6&+>QojlS~@vS|hzNlT7W>f8lb|(r<-6(7wAWRa1omU{Axh40{Z`toQ3f6=)C}c0FHIM^K0m)j`x-kUX5_;&!a%%@GdAj5BMD*G zptV~!OFF355oVNO<2VW==N2$fU&SdWu1$KC?jSQiBQYiP;!kQJ zSGl_3D2f55?q0&l)Q&;NXd$F)-~#SO0($^>k!kHl>IxU3?Z< z$S0qG?Zx?TJ_vmqOS8_p>+mEe6K<8^cye8+D}s#B)po_Z*|}Ib=E(}e4ql{df2U{Y zZ0M~HD3H0v-l41P9M(tSUfldQ}Z&QiGfdAXtB4e`g^tUO*=^n~7whJI4+UV}s|C`(eWwK2r~v?{k9{ zYA_Qg$^S+?>BFpy)b*$VQAflB2u@u(ZHBL&D4N9`jV}pg`X%HfWFrDJjw<$|0eXlQqr=~giI$2-kle;CZh6>mMb^1o|eMNEuD>(G1J~Y4Y1}@#q z?#A^WxRpKATaz}hvT3s>xjdvmyf0;lzI8S?#p9>Qy7TFhRO%nRSk~skzx7dYZbezVg#=g=mJrSsr&9p(TX7_D_3o$Y~e) zKVFDjw{1QL3k5pTI)}_rM~={T97x)OBKmE2#u=_i!!LWy3qR~gBXsz>`|Z*w|KcYg zjBSgCI(*rh%O05WVrlVPaO6LbzJ9gbQJ%L_=v$RYJ)ujFIPNe(tiob!JdcI*QiiJd z***Y_4J%}Rymmx%O?1Nrbw7_Zn);z)I%~}M2>1Kd=H1zv@(T0$58i=>NVd=y5{c?3mY$q9 z+(vcK+-UZj8v%$42+7%;J)-Pky{Sd_;FS}^@WbAH)LmJ^t|+Xm)Y-Yq?{=-#$w%9* zT}9`}HL$q~vH4Ez$}1@GJY4k@c1rNG)!hHMQuTGjL^OWc&WCI=X8$Pu8rOcd9x@(I z?-~}^f7^af;l4%wJ7hdfI_;H+8tlnwW<^>GXaK{3c~|slxHFqO8GT(x4U$Z#LxmzVg-`%FVC4^to2=Dq@lX7)!lF~jdJjwFDuV$Ht zzr#2oKq6V@xa0Y=1nN$!Teu~A+2w)K7|o31>vI8mV$Qd$9Ca5HxjD`H*_zUz9QeY^ zPxh@xm<1>b?@+<_Z`PgKBQ)$u`G2~1f3E&^8)-fs&`+`uDzk|fy3_bPUq5=%!dD(b1%Z4M`0lm3&+6h6QP1G$?Q(0n( zY-oFN?R%rO3lF_M+A5imOT-r8tANI;pNAV-y`?V+K=DB7@q^YM*M{SV9(I_Bq4s50 zh7uT}!oeISd$;mlmCT6^_=K7qKBR)>Xt;(gGW1{Gp7u}eqvm^dUJgnuj$n{KHu8g^ zVoA2vMD{XLNrbDHWrja7m z{br=eT)l?yHGkp+&%mc+mCDw(`c>^SD-HPt?S*{?Up6Y%mk{BM8&>;AN|)cQEV-N7 z{Di|h@to5pn>wFI9kORyDg=xvwyUrT#zbQla+nCRR0A@_!AlX#TVtN`yU(1hvm5i6 zK&JDvL%C=|HwUTvzO%xk9jfD^#&@MMs&w6=L*dii<3IHXu5l6ioBBVEe<$|5gE>vS zsMdw=v!CJN=9dXOhalgW8S0(1chi?A1^H=)RG__Tis9@!gdR=DIJ0qH(fgiy`lxs{ zP|sZ&Ln6#ydVK>Y53f^xX2$QlGvU8DeCYQ{y6Qu(8e-D6{*olULgYh6d;WU9Z(65& z?j<*RX|Wba^meMBtVguhG`R8I-GFhY)p**W^EfY27vsr&_h<;Ce#qI5_x7Q{$h+Um zEhFD`NV7=KtiqZ0c$eyKaQJDm4-cG`oBY3wE{Cn;cRb$+?rt>r$-rlaT`_PE%CZkwbQ8==KI; z?u-{{&+reQWPyRk7q`BRD|bR`Zo{>Xg@pvwB@7J|7WVlTwL?cz)Byo3whKO8>%sva zOpN@w&uyekcw;mBtsFCCSno7w>jat|t;pUsso5L4YJkQnl<_fNq=z|5zLDxV21MO67V;QaaCPF?cG+0zi7?> zE{R*$maUPTtXbtq7;Hw}Acm^ynQm|mT6|mCKV%#~kVKT(o|A5^$Px%}D#`M*`hFlm zMAX{P3CY<$Y!~CoiA5ylC8*RVPBDkOjoltRpOD(7WSe4Os=A7=MBnhgjen)SK>!7U z0s&w#A_UN%wEzJQBK|~5z(F!XDwS>>UA>M@FQRiNT={r1-%2Ibr-2+v5Px+K5g=m$ z;u)du{Zb*;4agnv)Alr)+N1$qOG-q#*T1Wez@MFx*NPU_>|4&M(6O+2lFYmVCUT$E zjjgy156+~8ubI5;CeeysxH9nNQ}_wZ$oDaKed8JtDVoC_h79HsS)87c zxo2M`1d_SlW{{J|_?j4gH9v3Wz!57T;jb6aW1Glhz0<*u8pel&rqHk&djCCIzIJ== zY?NGz-pFpF7CQ>ESGLE+3(+)HH*_qwUTgXNYF09Gf4&xhW^Ydqz(=j(g4dqgDBsH> z5MT>+!-#%o?vN~W#gbI5Q?a|`u#8nOmDYG;c&tUO)-adrvO!bBdyEY6L{Pl{XI&5$ zfO{yvW^Ox9eExmv@fB}^$lQ31_Te7mmt%jfc4f(=Bn-;Dlm|||TdFF~Fh5 zfn0K>%+L{Zaj=$304HuLA5KVovCpy?<_+H~7A4GB6 zVw7Onlz&H}Fa)f*11e{IGrxA3d815@+jnE$tXnj6HfG^`t+f#sj-n`Ob(q9|SXbUxW z4HF=_3gQ0=8w3`%JA<#keTHw`CeqTw%M{E`oJEG?6Fm*pX8;>k8zCt|YSfY5BH`Z( zDuK`mC>BW5ghxzU=NbquKb5cs`~&Fzys$pyGBUzH2~IFKA%dN$hk0paG;j6p_VeSi z$qcmbQfG#zw`aCT?=}{!J8A7jOU!sooV4}&dELshDZ^KXLwpgp2Bnp@T_yorS*fCgsKGm{2aHfLd+7!tu*j2@sOa-bpp2jca1FD=F=1adTR!ipB5^B_T6VQta9wx*JBk3C@2uVOKSO;FCZsA5|_IwtTWIW_AZMasnN(NidZL%~j*AqaJy z77?ZB0L{Dgg-iB$Z&)L^nnp!yPHxvx3Vs z+Y+X3&%UdLaozk$?sGgbut&Zc~#^DX8 zqc2H$JT}xGk6bJOr)HFFMmpMaNqZ7%Qp^hj6EXT}XRcx9qea?&vY_bNF`F}5XD&7)07M|+;m-jtFC^v`8SSyO_hR6WgJQw=o3|PitS9|CmlqBB z`fcqmI%H0!+i7AcUmhGAtTe6tvI?mGlCGP1rH7LRcTH?W^9#AxQ1qUR0fLL6q~KC; zra;rkvL#2_s&!~*7pJx5X6iwh<|4Pgp#9^Bv*f(kS}wF3%sYuo@AmJtb5nT6xX4Q{ zBw@5ahx@4bh=%km%5u~rFjiNEI17$nGw|2GaMYT)K}w^+T!VvWNXB&|`YGbxJh|2J zM0;L$qm@;*L~aNYB#2TSU`NkLvc?#M+NPKemf#FR1wfzd{oj|Ne^WoD7vdfOHtITZWx4rU$MfR?-*v>Z`NBeHcu;F^! zo^?v@C=|F+hl17H@GIJQARXv$?74*J%P|pi{c^s`UgNg2z|>ARx)mRsTqoie3tv`t zAQ7oS2WnOH0E`tYyBMK{k8PcJ{AgdEb?cqe?cv3`{duKX7aJG~_DRo~Bl*b-9U#Ph zFGR}AX-~-sFE(96+R>rplQ$^$4{yVl`air)P?GNfsPesU!K{hm(Z?~7BNTFVWdVS2NEApia85GV^z2uBn=gZ@SL)l5Ynj+=vYR{=huouYlAC6jylta%}TSq z$@jbn&`!qghF3UX>25JZX!VbP0d&Cm`17&!NaJQfKHr_U^vj-Uc)E)5viW-&PI+m*>U(?ntWuEcPb*#FUh*~b zqfIbRyS1W+0&BKYFPZvRxl?rITAXB3EPITjI>&Fs&Lkp0vK$ZOdSQ-_-0^#X;S8bj zM(8rqS|?#6c;%yH60NC`5p~O~(nUR0q1H?99!Y-XSoq=^@SuWGnw%}yrmx&C$+kGA zjW`@O`EiuxKnfDzK*NB17SR{ zSq)f1{LZsMkUu|fqWI^ox(nntE`OVj?hc!R0o>jjs~q;rqW0B1Bz_1f)cyteh*56R z`7<4tLsw_Ex$Jnk#=MWCG|*qyznkE_0=1ZqoPDmz4JoiSiVn^qfUfW%SNfr6O}geB zr-;ejmPCL^vQk->xl%d(T1ah4dd9852L`^Mb`mBnCTEoEY*Wq!AkLylIZt;L(N_LR z(_d#wo@tXhd37Rx`F2>rC?)BRJ<5iw+qVLN|1;hIC9qyH?wE6I@P<2BRW#X=OozNy zDOdCib&lgXsC;X?THy5-$>Ga))YPV8MgLufBjR}3=DNXyfEXeq?>*}x1(v$GW_*W8 z5;f5Y#}Bq^i}xLwOWYfdeup;2R9n=L*0MzMf(t>Z+cUc>;t4^%Ttyn9@sS@-6WpVq zcHjrXWRi(|PQ|{a8dgp0ux2AOEbNt3!|kA}PkT(-6=lN!kAM-&r7i{S;(}gaecETo zt56D0=U@(I_+|cAPPziFs3JY9!l&8>^=o)|`~cn$W^gnyZi20MVoQe9R#K%FN??GH zJ#)*V^U3{QRKF!J)KLA4d^jlpvcv+v9Jy5eiwX(G{lNAa|Hk=&V*kMgndl#je6Yy@ zACLV%dd+-_w8~+MzPNw;Ll!dUf&i;vXsliW%#?l?_a>7mxzvz@d#Ek`SoK^AzNa=e zt042Arqywhd};`6Ma7XTUvZBw>=ILIZB9u0iXWqS>&qTRwJ1cEh28=G3#1lri!OFD z?=HvB1+g@9kI=o1`H*(#Is68VGM@g{_xX3q9pnvs^5bG4;+S*B%CKqTLesPTO;`LW zFEbr6gM(YCf{)++NUE{-U9U#3NZe`2&mORHGv_X=s=wwOgFCfaVttKALzX4Q7N=sFp!1}B z;bB|ZjB8kUuwRL@$#nj57HMD)omW&rM=X8+R;q|sNyZ;->KcccIWv3z);=Rjh45)J zc*9fh`G0P;g>ihTex0qiYA)JW?Jr+-)aobzmwD%A35+*eVvS1?0{#_DMpQ7HWI)>- z65PL6DwW`40Co`43%wwe#rxN|LO~cm^3ExRD2v7<7dGa!(2ALkg0lIdD7?GLc}Ykb zgWm`tlX$F6zN)*8AB*Pq+6I~{b7khU2=el?Ds7IxL)pVDv)=I*^pb$CAap13?MvzM6^U zOFg5xjb|grDw~b`Az6u;_s%D?bes4Wkr&-$)UZ#-DM z2E!=PmNh<+j(omT8Ck8a-n#>FG4mYCFXZ2;X;KhZt1kK+d{F@K4W#29$1Q4_qN?kx znhI?R@MJp_p6&}=LCwcR3>PL@lh2DbMRGGXL3VWEV30Cw0Tb~Yo0Vt|tpHiK<7aZ< z%F|~gi%@=Ds}|TVH}4u@&so;m7b{I8-R#5fe$%bzRq=(zWXcmvN`AavaoP;jr?N2( zMQ!tRXSw&OT&GlKuXQHdS40p~)hM>6YM~P3Y^CbE0#1GdmcHNg@XJy(9)X@QR*)); zeJ|W-h&&s?`+Lr6Ju7TeOpNj^5*nGPH}*df&-I z0x>&sBo+NVJAPg)2OsG=y=+F~Mi#!bA{mOSTJo1ENCc&5F8;Lmm)=D*AAGf$V_i$? z2e5gLp_74gp{SIB)MvIiOVcW8e1tW@4~2!bFs9(CEky_|t9vu4&6md0*~j&{0P=t< z>e!Fh({0u|SSrEg!1_Mi|8C0ttGKDpJkeH~b(bvmk6JqVA*S$*?;y{6%$Mw*_sEh6 z8d3@Y)W3ti+&jK4-Jtq`6lmr^VA*I!#<@qoBB5+O){(GHNk|zI3P(s`P2qeX^VPP? zyM}e}Wa99IcgfSZ1D>3_-c;}Ur(9-PI<*Ss{wIPaiu&gIyN^KBiRHrZJMVM)CD&cL zO)4p($Y@@-3st`eK4~$Tg$JQvBq4pQD;TNDE2ICl_)-C4$R?($x2`!i98L=U9**GX z?dqA7f9!8wJqzRc2lg8uHf=VX7#RsOK`MD#3XH-+%i><1W?=wkvrKldgNy=Ca>%?j z{mJxbazDFqtTw6F(#f1@T{@d88qHe!@#sebji`1&S&Mbp9LN6;3mxtdV<9kxq2!%k z*hp|cbUkw|cFd=92Wl1fXbZe>seJ+bPR4BOpqwIS|F)T<8&8RJFi;Z53$xzfABJr;vYF`cN{Jm=~YN?6Q(XQu&!nnfK$a zl>~wU5*(V9xHb~}kGHGje*4fFsD$kVjM0VSti;$k7+*Ruy`OU6r{!SpYY<0?4on3!oJ!moq$+sbj8FWh0cf-~nA5;bW7Mrn$07nbxo zZP2OiC#3Ssfpn_l_mEgfMr&uZPe45TyKC5E^34CCMZGYs*VIV#jF)E^&B|)@aeMoF z#x7LkgghkQ3fU3s8kbrHKuWDl9Y+51X?GKIn)>+AI^3$0LX0S-$qC`oj{fb9(PZ~Y zcN|R5p6XL7nFf~*c(#Eb>$dsb3a{A!^Xu9sD?l8d%W;p(0{02a??d}ul!SmoO%{g2 z5Z)YK0^K!56U01hbO1<#4e)0(=s!r{i6!`h3!c`GO!O5XB{CLhzTECgt{61bL7EK>=F|2EB%{x(4{%cHq53ygLyM4@ckOvANhsfmG zDk4!Ft*O*VltP&_9q@1S8KjpO*{esC$W~PCk-)NpQBDmqPZD=NA<@{^Jyx$D(b^qJ z{>C~q*%Lmh%F#oKg~ujWfjL7CN%z>py02kd{Pa-DZcWf9vhbajYH3g}5N2M@v43a7 zMfZF&!@Gz^{5zx9=@=WRp``xD{&A>S%NnjsrHXwFXvZq{K{BcGPFLc0fP`5c&&JnO zPkO!o3IAE`d}Sm2>Uy_8sZZenlEpFSp2J5js!cu#O3}erwmxZkMkB?=Bixmrg7k z#F#W{>#ei z^4}LUB}p?GC(_c_JSk|+L0z-l+M1Ir&}NtOD$?rRN)i3QdfXvL6tZiQpRI=??FWm+ z?lAzEbai1`La`Rf*At?*qSf|mgr{c2Kc zpcEN-j0NmeNMCfx4$384ux0*FQJ(ul1_hJEmo}G@STd?u0VhqBIeIVu$XGn~Ur(RI zIxN++v2YlO&s19ZRYE&FF^(H@mDKThqCjwAtH7NtYy#u50yxeGlpFJ){o_R04){ae zDo2NjT!odURjzNojCQ*-VV!nV;t3P0BGCp{C5`9=w?3(2pZ;{G`U&5*jdf`Rk@J8B z0l0D6U`Q14;O}%j?};VtCq|@4^Ay$p@a%u!9NZJX@CUnP>LslJ>8=Hzh=zF*4+F>c zXHLkl`Ifl?d>z4CPOc!@y8n(#0uuN5Rm0(ghmxK@+=xiOehUWue>Oc&PlPrSBw(|P7MDCmI%y~P2>%D} zWXc`yiCV@4s5B14uDcB9=%=kya7SrSNG^BO>9^eS_UC~Q#Et#z{R3b z64llHLs~tzH=pZ}a84daRNmi-b#M675#{fWRU&lc|6re0csCgKQH%ybxkCW3$qU1( zksL)N>3HB(vXldoBHW7rkz0Qq`Fo5SZ|5gROn1P4rdaFknw~%I1gu#PEX4|td-(6i zn@3#|%)US@c~gedUlG>(5|+lT0^`R-RqW&M=)q;O&lF)Kj+dCGO{{~JvU z+f@NV|9T;lN5k?^RD?1GJb6V#Xc^4S(2DRBXINsUs+Te0J~^WkR!9t+ofIiy*8W1n zGHMw7{1$g}(qaM^&kznaMbs@k0R7kC?{tK9y8$Jt#UWBjVle&V3CY`h-})Ki)|RlV zu>5=)wxIqP;08Ie{@KWl2<=LE>V-!@9zy~N=Xlb9kyZ$RTR?wr&{Xl&$3M0hWpDDZ zNXC~jjPsvXHFPrRoT+x84t?6i*xdLzmQ9I(ezS?vlWJk8SQg1Cbzz26DH`fedc839 z0CaEFVML!76&YB&mwZEjt2b;Qge_+kDhwXXe(_($VEiMj6U~#W>J9&U2J3$*?S!2_ zl=hVun`CmScF(|#+||g~?1o1i_2a|l$v~<bfvK!VGeL6&w7gQu*GatqO_I_Ao`g?5>_V<2k*U6o1Fs;wX1wy}Pzea(JhN z^9|!0iwh*g^`Lihe6F(7rHQfdQWht$iSs%bN#%C4hXnHRbS=uemJhfKplAfG32?G< zN&xP%ys%4HXjO;40SN5Xn~<+WK%)G+}kHy=`G@i-(Nx1|ptG%Ge5e z6)(?qGNvq=G`Q)0w0OUx7-mrRc-i_mm}+Qf$oc}+u+^uUtU+%m^)ch|4(WiwHAk$G2x2g`k{Y)6>2CiT&tcGa#fNdqb2%K|!HE1dC$C`%B;1u-^kNb1x8wLW|rDgOTbmsO1gTnC$r1wZM~QS0MFLhIeek>8`B4&ptnsx)>c?c>cJky9G0b)0ugb!$L4EE$txm zqmd64bU+{nBO4cm3+Y|Tc@+>u@Ep1wlauqwlWdcu_dUnB!b`Wlp|`njv&50%o&zJJ zszp?>CDxHi6xA4vS*Yb-oVH5mz_w$??u*)uDC;7QU&l;LO!(Ygon(<^G5@YKNYXYx zD-@#;t!AjkzkdD<65gz7<^vz}>~#_;Po_lFS4qRAg0gJitek{`F%wL`r2b6iZ$0hW zh=e;eBZz(v*XCR&bM~!Sc%$xcd)ptGs=)@q9DBYmKaQ#(`2;_oUndo7=v1Ne8xvbv z*v`y80qh=+$R^y8Kf;`(fC)cx$*L0^6c^0lOvE)L-Jj`;i9tT1DgG6RsPl~3v_fkH zf!|lGnJ;-*piwrOy`cXGY!alYic^?YDrAuNV z+LwM6<={k7dA0;`nwQHXmWHqaUnAWU_>4|XPUdap7zp)me{2}AR=Txt#Sib=rcIV3 zbCzIeG-L~FjS;3IF3hRwo??Q3ro!SNF7eJqBTV2_lLhwm|Md$7AS4U+Q-v%shBw!b Y!n7Z9TohotORzsVDJ99$*G3=z4{8=$*8l(j literal 0 HcmV?d00001 From 43b4e4a258262e37fd91a7f0ca0f57d3247eeffb Mon Sep 17 00:00:00 2001 From: Tiancai ZANG Date: Tue, 6 Nov 2018 20:38:06 +0800 Subject: [PATCH 205/417] use settled reply queue --- .../learn/language/feature/string/StringDemo.java | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/language-feature/src/main/java/org/laidu/learn/language/feature/string/StringDemo.java b/language-feature/src/main/java/org/laidu/learn/language/feature/string/StringDemo.java index 640daf883..9cabfe529 100644 --- a/language-feature/src/main/java/org/laidu/learn/language/feature/string/StringDemo.java +++ b/language-feature/src/main/java/org/laidu/learn/language/feature/string/StringDemo.java @@ -13,12 +13,23 @@ public class StringDemo { public static void main(String[] args) { - + // 会在栈中创建一个对象引用变量str,然后查看字符串池中是否存在”XXX”,如果没有,则将”XXX”存放字符串池,并令引用变量str指向它;如果已经有”XXX”,则直接令str指向它 String s = "hello"; + // 是java中标准的对象创建方式,其创建的对象将直接放置到堆中,每调用一次就会在堆上面创建一个新的对象 String s1 = new String("hello"); + // intern() 用于返回一个String池中的对象,如果池中没有该对象则先将该String放入String池中然后返回该对象 + String s2 = new String("hello").intern(); + System.out.println("s == s1 : " + (s == s1)); + System.out.println("s == s2 : " + (s == s2)); + + + // System.identityHashCode(s) 获取对象内存地址,不管该对象是否重写hashCode() + System.out.println("s\t" + System.identityHashCode(s)); + System.out.println("s1\t" + System.identityHashCode(s1)); + System.out.println("s2\t" + System.identityHashCode(s2)); System.out.println("s.equals(s1) : " + s.equals(s1)); From 19a097dc98246e80e6636f0698adaca094d5ccb3 Mon Sep 17 00:00:00 2001 From: Tiancai ZANG Date: Wed, 7 Nov 2018 16:41:20 +0800 Subject: [PATCH 206/417] sync --- .../learn/advance/bytecode/jdk/Main.java | 18 ++- .../bytecode/jdk/ObjectCreateByNew.java | 15 +++ .../learn/advance/bytecode/jdk/People.java | 15 +++ .../src/site/markdown/object-create-by-new.md | 115 ++++++++++++++++++ 4 files changed, 162 insertions(+), 1 deletion(-) create mode 100644 language-advance/bytecode/src/main/java/org/laidu/learn/advance/bytecode/jdk/ObjectCreateByNew.java create mode 100644 language-advance/bytecode/src/main/java/org/laidu/learn/advance/bytecode/jdk/People.java create mode 100644 language-advance/bytecode/src/site/markdown/object-create-by-new.md diff --git a/language-advance/bytecode/src/main/java/org/laidu/learn/advance/bytecode/jdk/Main.java b/language-advance/bytecode/src/main/java/org/laidu/learn/advance/bytecode/jdk/Main.java index a21a7a0fa..a26da6f54 100644 --- a/language-advance/bytecode/src/main/java/org/laidu/learn/advance/bytecode/jdk/Main.java +++ b/language-advance/bytecode/src/main/java/org/laidu/learn/advance/bytecode/jdk/Main.java @@ -10,7 +10,23 @@ public class Main { public static void main(String[] args) { - System.out.println("hello world!"); + int i = 127; + int j = 128; + double d = 123.123d; + + byte b = 127; + + System.out.println("int-i == byte-b : "+ (i==b)); + Integer k = 127; + Integer l = 1290; + l = new Integer(k); + + System.out.println(i + 1); + System.out.println(j + 1); + System.out.println(k + 1); + System.out.println(l + 1); + + System.out.println("hello world!"); } } \ No newline at end of file diff --git a/language-advance/bytecode/src/main/java/org/laidu/learn/advance/bytecode/jdk/ObjectCreateByNew.java b/language-advance/bytecode/src/main/java/org/laidu/learn/advance/bytecode/jdk/ObjectCreateByNew.java new file mode 100644 index 000000000..93e13c65b --- /dev/null +++ b/language-advance/bytecode/src/main/java/org/laidu/learn/advance/bytecode/jdk/ObjectCreateByNew.java @@ -0,0 +1,15 @@ +package org.laidu.learn.advance.bytecode.jdk; + +/** + * 通过new关键字创建对象 + * + * @author tiancai.zang + * on 2018-11-07 10:39. + */ +public class ObjectCreateByNew { + + public static void main(String[] args) throws CloneNotSupportedException { + + People people = new People(); + } +} \ No newline at end of file diff --git a/language-advance/bytecode/src/main/java/org/laidu/learn/advance/bytecode/jdk/People.java b/language-advance/bytecode/src/main/java/org/laidu/learn/advance/bytecode/jdk/People.java new file mode 100644 index 000000000..e1d0106fd --- /dev/null +++ b/language-advance/bytecode/src/main/java/org/laidu/learn/advance/bytecode/jdk/People.java @@ -0,0 +1,15 @@ +package org.laidu.learn.advance.bytecode.jdk; + +/** + * people + * + * @author tiancai.zang + * on 2018-11-07 14:45. + */ +public class People implements Cloneable{ + + @Override + public Object clone() throws CloneNotSupportedException { + return super.clone(); + } +} \ No newline at end of file diff --git a/language-advance/bytecode/src/site/markdown/object-create-by-new.md b/language-advance/bytecode/src/site/markdown/object-create-by-new.md new file mode 100644 index 000000000..1ed855eac --- /dev/null +++ b/language-advance/bytecode/src/site/markdown/object-create-by-new.md @@ -0,0 +1,115 @@ +# java 通过new关键字创建新对象 + +源文件: +```java +package org.laidu.learn.advance.bytecode.jdk; + +/** + * 通过new关键字创建对象 + * + * @author tiancai.zang + * on 2018-11-07 10:39. + */ +public class ObjectCreateByNew { + + public static void main(String[] args) { + + Object o = new Object(); + + // 使用变量,防止javac编译优化 + System.out.println(o.hashCode()); + + } +} +``` + + +``` +Classfile /home/laidu/IdeaProjects/java-learn/language-advance/bytecode/target/classes/org/laidu/learn/advance/bytecode/jdk/ObjectCreateByNew.class + Last modified Nov 7, 2018; size 670 bytes + MD5 checksum 580a47ca24478027508bd19823b97005 + Compiled from "ObjectCreateByNew.java" +public class org.laidu.learn.advance.bytecode.jdk.ObjectCreateByNew + minor version: 0 + major version: 52 + flags: ACC_PUBLIC, ACC_SUPER +Constant pool: + #1 = Methodref #2.#22 // java/lang/Object."":()V + #2 = Class #23 // java/lang/Object + #3 = Fieldref #24.#25 // java/lang/System.out:Ljava/io/PrintStream; + #4 = Methodref #2.#26 // java/lang/Object.hashCode:()I + #5 = Methodref #27.#28 // java/io/PrintStream.println:(I)V + #6 = Class #29 // org/laidu/learn/advance/bytecode/jdk/ObjectCreateByNew + #7 = Utf8 + #8 = Utf8 ()V + #9 = Utf8 Code + #10 = Utf8 LineNumberTable + #11 = Utf8 LocalVariableTable + #12 = Utf8 this + #13 = Utf8 Lorg/laidu/learn/advance/bytecode/jdk/ObjectCreateByNew; + #14 = Utf8 main + #15 = Utf8 ([Ljava/lang/String;)V + #16 = Utf8 args + #17 = Utf8 [Ljava/lang/String; + #18 = Utf8 o + #19 = Utf8 Ljava/lang/Object; + #20 = Utf8 SourceFile + #21 = Utf8 ObjectCreateByNew.java + #22 = NameAndType #7:#8 // "":()V + #23 = Utf8 java/lang/Object + #24 = Class #30 // java/lang/System + #25 = NameAndType #31:#32 // out:Ljava/io/PrintStream; + #26 = NameAndType #33:#34 // hashCode:()I + #27 = Class #35 // java/io/PrintStream + #28 = NameAndType #36:#37 // println:(I)V + #29 = Utf8 org/laidu/learn/advance/bytecode/jdk/ObjectCreateByNew + #30 = Utf8 java/lang/System + #31 = Utf8 out + #32 = Utf8 Ljava/io/PrintStream; + #33 = Utf8 hashCode + #34 = Utf8 ()I + #35 = Utf8 java/io/PrintStream + #36 = Utf8 println + #37 = Utf8 (I)V +{ + public org.laidu.learn.advance.bytecode.jdk.ObjectCreateByNew(); + descriptor: ()V + flags: ACC_PUBLIC + Code: + stack=1, locals=1, args_size=1 + 0: aload_0 + 1: invokespecial #1 // Method java/lang/Object."":()V + 4: return + LineNumberTable: + line 9: 0 + LocalVariableTable: + Start Length Slot Name Signature + 0 5 0 this Lorg/laidu/learn/advance/bytecode/jdk/ObjectCreateByNew; + + public static void main(java.lang.String[]); + descriptor: ([Ljava/lang/String;)V + flags: ACC_PUBLIC, ACC_STATIC + Code: + stack=2, locals=2, args_size=1 + 0: new #2 // class java/lang/Object + 3: dup + 4: invokespecial #1 // Method java/lang/Object."":()V + 7: astore_1 + 8: getstatic #3 // Field java/lang/System.out:Ljava/io/PrintStream; + 11: aload_1 + 12: invokevirtual #4 // Method java/lang/Object.hashCode:()I + 15: invokevirtual #5 // Method java/io/PrintStream.println:(I)V + 18: return + LineNumberTable: + line 13: 0 + line 16: 8 + line 18: 18 + LocalVariableTable: + Start Length Slot Name Signature + 0 19 0 args [Ljava/lang/String; + 8 11 1 o Ljava/lang/Object; +} +SourceFile: "ObjectCreateByNew.java" + + +``` \ No newline at end of file From 1bb6598551411d2907db14bcbcf98a269f8e2a0d Mon Sep 17 00:00:00 2001 From: Tiancai ZANG Date: Thu, 8 Nov 2018 19:12:30 +0800 Subject: [PATCH 207/417] sync --- .../concurrent/problem/DeadLockDemo.java | 91 +++++++++++++++++++ .../src/site/markdown/dead-lock-impl.md | 10 ++ .../concurrent/src/site/markdown/index.md | 2 +- .../jvm/classloader/ClassLoaderDemo.java | 2 - language-feature/src/site/markdown/index.md | 5 + language-feature/src/site/markdown/net.md | 12 +++ 6 files changed, 119 insertions(+), 3 deletions(-) create mode 100644 language-advance/concurrent/src/main/java/org/laidu/learn/concurrent/problem/DeadLockDemo.java create mode 100644 language-advance/concurrent/src/site/markdown/dead-lock-impl.md create mode 100644 language-feature/src/site/markdown/net.md diff --git a/language-advance/concurrent/src/main/java/org/laidu/learn/concurrent/problem/DeadLockDemo.java b/language-advance/concurrent/src/main/java/org/laidu/learn/concurrent/problem/DeadLockDemo.java new file mode 100644 index 000000000..066f9df77 --- /dev/null +++ b/language-advance/concurrent/src/main/java/org/laidu/learn/concurrent/problem/DeadLockDemo.java @@ -0,0 +1,91 @@ +package org.laidu.learn.concurrent.problem; + +import jodd.util.ThreadUtil; +import lombok.AllArgsConstructor; + +import java.util.concurrent.locks.ReentrantLock; + +/** + * java 实现死锁的方式 + * + * + "Thread-0" #13 prio=5 os_prio=0 cpu=7.61ms elapsed=256.39s tid=0x00007fbfac566800 nid=0x789f waiting for monitor entry [0x00007fbf4fbf8000] + java.lang.Thread.State: BLOCKED (on object monitor) + at org.laidu.learn.concurrent.problem.DeadLockDemo$DeadLockWorker.run(DeadLockDemo.java:32) + - waiting to lock <0x00000007168d05d8> (a java.lang.Object) + - locked <0x00000007168d05c8> (a java.lang.Object) + at java.lang.Thread.run(java.base@11.0.1/Thread.java:834) + + Locked ownable synchronizers: + - None + + "Thread-1" #14 prio=5 os_prio=0 cpu=5.64ms elapsed=256.39s tid=0x00007fbfac568000 nid=0x78a0 waiting for monitor entry [0x00007fbf4faf7000] + java.lang.Thread.State: BLOCKED (on object monitor) + at org.laidu.learn.concurrent.problem.DeadLockDemo$DeadLockWorker.run(DeadLockDemo.java:32) + - waiting to lock <0x00000007168d05c8> (a java.lang.Object) + - locked <0x00000007168d05d8> (a java.lang.Object) + at java.lang.Thread.run(java.base@11.0.1/Thread.java:834) + + Locked ownable synchronizers: + - None + + * @author tiancai.zang + * on 2018-11-08 14:52. + */ +public class DeadLockDemo { + + public static void main(String[] args) { + +// deadLockWithSynchronized(); + + deadLockWithReentrantLock(); + } + + public static void deadLockWithReentrantLock() { + ReentrantLock lock = new ReentrantLock(); + new Thread(new DeadLoclWorker2(lock)).start(); + new Thread(new DeadLoclWorker2(lock)).start(); + } + + @AllArgsConstructor + static class DeadLoclWorker2 implements Runnable{ + private ReentrantLock lock; + @Override + public void run() { + // ReentrantLock 底层实现?,第一个线程已经结束,但是并未放弃lock,导致虽然线程已经结束但是对象的锁定状态依然保留。 + lock.lock(); + ThreadUtil.sleep(300); + System.out.println(Thread.currentThread().getName() + "已获取 lock 锁"); + } + } + + /** + * 通过 synchronized 实现 java 死锁 + */ + public static void deadLockWithSynchronized() { + Object a = new Object(); + Object b = new Object(); + + new Thread(new DeadLockWorker(a,b)).start(); + new Thread(new DeadLockWorker(b,a)).start(); + } + + @AllArgsConstructor + static class DeadLockWorker implements Runnable{ + private Object a,b; + @Override + public void run() { + synchronized (a){ + System.out.println("已获取对象b锁"); + ThreadUtil.sleep(300); + synchronized (b){ + System.out.println("已获取对象a锁"); + } + } + } + } + + + + +} \ No newline at end of file diff --git a/language-advance/concurrent/src/site/markdown/dead-lock-impl.md b/language-advance/concurrent/src/site/markdown/dead-lock-impl.md new file mode 100644 index 000000000..a5cfbc7a3 --- /dev/null +++ b/language-advance/concurrent/src/site/markdown/dead-lock-impl.md @@ -0,0 +1,10 @@ +# 如何使用java实现线程间死锁 + +## 1、死锁定义 +> + +## 2、造成死锁的条件 + +## 3、java 中的锁 + +## 4、死锁实现方式 \ No newline at end of file diff --git a/language-advance/concurrent/src/site/markdown/index.md b/language-advance/concurrent/src/site/markdown/index.md index 5ea39bc8e..a90de22e1 100644 --- a/language-advance/concurrent/src/site/markdown/index.md +++ b/language-advance/concurrent/src/site/markdown/index.md @@ -17,7 +17,7 @@ ### 3.2 线程创建 ### 3.3 执行器 Executor -#### 3.3.1 +#### 3.3.1 线程池种类 ### 3.4 同步器 diff --git a/language-advance/jvm/src/main/java/org/laidu/learn/jvm/classloader/ClassLoaderDemo.java b/language-advance/jvm/src/main/java/org/laidu/learn/jvm/classloader/ClassLoaderDemo.java index b43957a89..e468d6d5d 100644 --- a/language-advance/jvm/src/main/java/org/laidu/learn/jvm/classloader/ClassLoaderDemo.java +++ b/language-advance/jvm/src/main/java/org/laidu/learn/jvm/classloader/ClassLoaderDemo.java @@ -14,10 +14,8 @@ public class ClassLoaderDemo { public static void main(String[] args) throws ClassNotFoundException, IllegalAccessException, InstantiationException { - } - @Data public static class Person { private String name; diff --git a/language-feature/src/site/markdown/index.md b/language-feature/src/site/markdown/index.md index ff93011b6..e7379cbf6 100644 --- a/language-feature/src/site/markdown/index.md +++ b/language-feature/src/site/markdown/index.md @@ -27,3 +27,8 @@ * []() * []() + +------------- + +* [网络](net.md) + diff --git a/language-feature/src/site/markdown/net.md b/language-feature/src/site/markdown/net.md new file mode 100644 index 000000000..c0ea4fe79 --- /dev/null +++ b/language-feature/src/site/markdown/net.md @@ -0,0 +1,12 @@ +# java 中的网络编程 + + +## 1、计算机网络架构 + +## 2、java 中的网络 API + +## 3、常用应用层协议 + +### 3.1、http/https + +### 3.2、ftp \ No newline at end of file From 7cc9ae4df0b793738325b2f8cada8dffb06e9695 Mon Sep 17 00:00:00 2001 From: ztc Date: Thu, 8 Nov 2018 23:58:02 +0800 Subject: [PATCH 208/417] add string pool --- .../concurrent/problem/DeadLockDemo.java | 3 ++ .../constantpool/StringPoolLocationTest.java | 34 +++++++++++++++++++ 2 files changed, 37 insertions(+) create mode 100644 language-advance/jvm/src/main/java/org/laidu/learn/jvm/constantpool/StringPoolLocationTest.java diff --git a/language-advance/concurrent/src/main/java/org/laidu/learn/concurrent/problem/DeadLockDemo.java b/language-advance/concurrent/src/main/java/org/laidu/learn/concurrent/problem/DeadLockDemo.java index 066f9df77..d520f83d3 100644 --- a/language-advance/concurrent/src/main/java/org/laidu/learn/concurrent/problem/DeadLockDemo.java +++ b/language-advance/concurrent/src/main/java/org/laidu/learn/concurrent/problem/DeadLockDemo.java @@ -41,6 +41,9 @@ public static void main(String[] args) { deadLockWithReentrantLock(); } + /** + * 通过重入锁实现 + */ public static void deadLockWithReentrantLock() { ReentrantLock lock = new ReentrantLock(); new Thread(new DeadLoclWorker2(lock)).start(); diff --git a/language-advance/jvm/src/main/java/org/laidu/learn/jvm/constantpool/StringPoolLocationTest.java b/language-advance/jvm/src/main/java/org/laidu/learn/jvm/constantpool/StringPoolLocationTest.java new file mode 100644 index 000000000..292308c03 --- /dev/null +++ b/language-advance/jvm/src/main/java/org/laidu/learn/jvm/constantpool/StringPoolLocationTest.java @@ -0,0 +1,34 @@ +package org.laidu.learn.jvm.constantpool; + +/** + * 字符串池存放位置 测试 + * -Xms8m -Xmx8m -Xmn4 -XX:MaxMetaspaceSize=10m + *

                    + * Exception in thread "main" java.lang.OutOfMemoryError: Java heap space + * at java.base/jdk.internal.misc.Unsafe.allocateUninitializedArray0(Unsafe.java:1276) + * at java.base/jdk.internal.misc.Unsafe.allocateUninitializedArray(Unsafe.java:1269) + * at java.base/java.lang.invoke.StringConcatFactory$MethodHandleInlineCopyStrategy.newArray(StringConcatFactory.java:1633) + * at java.base/java.lang.invoke.DirectMethodHandle$Holder.invokeStatic(DirectMethodHandle$Holder) + * at java.base/java.lang.invoke.LambdaForm$MH/0x00000001000aa840.invoke(LambdaForm$MH) + * at java.base/java.lang.invoke.Invokers$Holder.linkToTargetMethod(Invokers$Holder) + * at org.laidu.learn.jvm.constantpool.StringPoolLocationTest.main(StringPoolLocationTest.java:18) + * Created by tiancai.zang + * on 2018-11-08 23:49. + */ +public class StringPoolLocationTest { + + public static void main(String[] args) { + + for (int i = 0; i < 999999; i++) { + + String var = ("的教案设计大师就会看到哈三等奖"+i).intern(); + for (int j = 0; j < 99999; j++) { + + var += (var + j * 100).intern(); + + System.out.println(var); + } + } + + } +} \ No newline at end of file From d5a62852e71fa7615ccc0ba8cf43008412174d76 Mon Sep 17 00:00:00 2001 From: Tiancai ZANG Date: Fri, 9 Nov 2018 11:14:51 +0800 Subject: [PATCH 209/417] update dependency varsion --- convenient-util/pom.xml | 2 +- framework/spring/pom.xml | 2 +- framework/spring/spring-amqp/pom.xml | 2 +- production-component/common-util/pom.xml | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/convenient-util/pom.xml b/convenient-util/pom.xml index bf1845c99..6f029cdfd 100644 --- a/convenient-util/pom.xml +++ b/convenient-util/pom.xml @@ -24,7 +24,7 @@ 3.4.0 1.1.0 - 5.0.3.RELEASE + 5.1.2.RELEASE diff --git a/framework/spring/pom.xml b/framework/spring/pom.xml index 175f454d6..373a0dc36 100644 --- a/framework/spring/pom.xml +++ b/framework/spring/pom.xml @@ -30,7 +30,7 @@ 2.5.0.RELEASE - 5.1.1 + 5.5.0 5.0.6.RELEASE 2.0.5.RELEASE diff --git a/framework/spring/spring-amqp/pom.xml b/framework/spring/spring-amqp/pom.xml index 14c9f77ba..3bb634548 100644 --- a/framework/spring/spring-amqp/pom.xml +++ b/framework/spring/spring-amqp/pom.xml @@ -13,7 +13,7 @@ - 2.0.1.RELEASE + 2.1.1.RELEASE diff --git a/production-component/common-util/pom.xml b/production-component/common-util/pom.xml index dd454883d..d2013cca3 100644 --- a/production-component/common-util/pom.xml +++ b/production-component/common-util/pom.xml @@ -29,7 +29,7 @@ 5.0.4 1.2.47 - 2.9.1 + 2.9.7 2.1.1 From 6e99fb6d1e6f5cfb94f0abd531371bc835f2b65d Mon Sep 17 00:00:00 2001 From: Tiancai ZANG Date: Mon, 12 Nov 2018 19:24:45 +0800 Subject: [PATCH 210/417] learn bloom filter --- .../learn/code/practice/ArrayReverse.java | 71 ++++++++++++++++ .../learn/code/practice/LockAndLoad.java | 80 +++++++++++++++++++ .../learn/code/practice/package-info.java | 10 +++ 3 files changed, 161 insertions(+) create mode 100644 code-practice/src/java/org/laidu/learn/code/practice/ArrayReverse.java create mode 100644 code-practice/src/java/org/laidu/learn/code/practice/LockAndLoad.java create mode 100644 code-practice/src/java/org/laidu/learn/code/practice/package-info.java diff --git a/code-practice/src/java/org/laidu/learn/code/practice/ArrayReverse.java b/code-practice/src/java/org/laidu/learn/code/practice/ArrayReverse.java new file mode 100644 index 000000000..663e6d70f --- /dev/null +++ b/code-practice/src/java/org/laidu/learn/code/practice/ArrayReverse.java @@ -0,0 +1,71 @@ +package org.laidu.learn.code.practice; + +import lombok.extern.slf4j.Slf4j; + +import java.util.Arrays; +import java.util.Collections; +import java.util.List; +import java.util.stream.Collectors; + +/** + * 数组翻转 + * + * @author tiancai.zang + * on 2018-11-12 15:32. + */ +@Slf4j +public class ArrayReverse { + + public static void main(String[] args) { + + int[] input = {1,2,3,4,5,6,7}; + + int[] result = reverse(input); +// int[] result = reverse2(input); + + print(result); + + } + + private static void print(int[] array) { + System.out.println(Arrays.stream(array).boxed().map(String::valueOf).collect(Collectors.joining(","))); + } + + /** + * for + * @param input + * @return + */ + private static int[] reverse(int[] input) { + + int length = input.length; +// int[] result = new int[length]; +// +// for (int i = length-1; i > -1; i--) { +// result[input.length-i-1] = input[i]; +// } +// return result; + + for (int i = 0, mid = length >> 1; i < mid ; i++) { + swap(input,i,length-i-1); + } + return input; + } + + private static void swap(int[] array, int i, int j){ + + int length; + if (array == null || i<0 || j<0 || i == j || i > (length = array.length-1) || j > length) { + return; + } + int temp = array[i]; + array[i] = array[j]; + array[j] = temp; + } + + private static int[] reverse2(int[] input){ + List raw = Arrays.stream(input).boxed().collect(Collectors.toList()); + Collections.reverse(raw); + return raw.stream().mapToInt(i->i).toArray(); + } +} \ No newline at end of file diff --git a/code-practice/src/java/org/laidu/learn/code/practice/LockAndLoad.java b/code-practice/src/java/org/laidu/learn/code/practice/LockAndLoad.java new file mode 100644 index 000000000..9ae918659 --- /dev/null +++ b/code-practice/src/java/org/laidu/learn/code/practice/LockAndLoad.java @@ -0,0 +1,80 @@ +package org.laidu.learn.code.practice; + +import lombok.extern.slf4j.Slf4j; + +import java.util.concurrent.ArrayBlockingQueue; +import java.util.concurrent.BlockingQueue; + +/** + * 子弹上膛问题 + * + * 有一把枪做多装弹20, 一个线程装弹一个线程发射子弹. + * @author tiancai.zang + * on 2018-11-12 11:42. + */ +@Slf4j +public class LockAndLoad { + + + + public static void main(String[] args) { + + Gun gun = new Gun(); + gun.load(new Bullet()); + + new Thread(() -> { + while (true){ + gun.emit(); + } + }).start(); + + new Thread(()->{ + + while (true){ + gun.load(new Bullet()); + } + + }).start(); + + } + + + /** + * 枪 + */ + static class Gun{ + + private BlockingQueue charger = new ArrayBlockingQueue<>(20); + + public void emit() { + try { + try { + Thread.sleep(100); + } catch (InterruptedException e) { + e.printStackTrace(); + } + charger.take(); + } catch (InterruptedException e) { + e.printStackTrace(); + } + log.info("发射子弹, 当前子弹剩余: {}", charger.size()); + } + + public void load(Bullet bullet){ + try { + Thread.sleep(50); + } catch (InterruptedException e) { + e.printStackTrace(); + } + charger.offer(bullet); + log.info("填充子弹, 当前子弹剩余: {}", charger.size()); + } + } + + /** + * 子弹 + */ + static class Bullet{ + + } +} \ No newline at end of file diff --git a/code-practice/src/java/org/laidu/learn/code/practice/package-info.java b/code-practice/src/java/org/laidu/learn/code/practice/package-info.java new file mode 100644 index 000000000..ae2b4a0e5 --- /dev/null +++ b/code-practice/src/java/org/laidu/learn/code/practice/package-info.java @@ -0,0 +1,10 @@ +/** + * 代码练习 + *

                    + * Created by laidu + * on 2018-11-12 11:33. + * + * @author laidu + */ +// TODO: 2018-11-12 11:33 代码练习 +package org.laidu.learn.code.practice; \ No newline at end of file From e0cac9e6defb8163aac0d37734a7866ca4106658 Mon Sep 17 00:00:00 2001 From: Tiancai ZANG Date: Tue, 13 Nov 2018 19:06:03 +0800 Subject: [PATCH 211/417] learn bloom filter --- .../learn/code/practice/sort/QuickSort.java | 56 +++++++++++++++++++ 1 file changed, 56 insertions(+) create mode 100644 code-practice/src/java/org/laidu/learn/code/practice/sort/QuickSort.java diff --git a/code-practice/src/java/org/laidu/learn/code/practice/sort/QuickSort.java b/code-practice/src/java/org/laidu/learn/code/practice/sort/QuickSort.java new file mode 100644 index 000000000..809c08031 --- /dev/null +++ b/code-practice/src/java/org/laidu/learn/code/practice/sort/QuickSort.java @@ -0,0 +1,56 @@ +package org.laidu.learn.code.practice.sort; + +import lombok.extern.slf4j.Slf4j; + +import java.util.Arrays; +import java.util.stream.Collectors; + +/** + * 快排练习 + * + * @author tiancai.zang + * on 2018-11-13 18:10. + */ +@Slf4j +public class QuickSort { + + public static void main(String[] args) { + + int[] input = {6, 5, 4, 3, 2, 1}; + + quickSort(input); + + System.out.println(Arrays.stream(input).boxed().map(i -> i + "").collect(Collectors.joining(","))); + + } + + public static void quickSort(int[] arr) { + qsort(arr, 0, arr.length - 1); + } + + private static void qsort(int[] arr, int low, int high) { + if (low < high) { + int pivot = partition(arr, low, high); + + qsort(arr, low, pivot - 1); + + qsort(arr, pivot + 1, high); + } + } + + private static int partition(int[] arr, int low, int high) { + int pivot = arr[low]; + while (low < high) { + while (low < high && arr[high] >= pivot) { + --high; + } + arr[low] = arr[high]; + while (low < high && arr[low] <= pivot) { + ++low; + } + arr[high] = arr[low]; + } + arr[low] = pivot; + return low; + } +} \ No newline at end of file From 639297a21a6116e29c2f8e070d143de2aa66c1fc Mon Sep 17 00:00:00 2001 From: Tiancai ZANG Date: Wed, 14 Nov 2018 11:08:12 +0800 Subject: [PATCH 212/417] optimize enum name --- .../laidu/learn/spring/mvc/controller/GoodsController.java | 2 +- .../java/org/laidu/learn/spring/mvc/enums/GoodsTypeEnum.java | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/framework/spring/spring-web/spring-mvc/src/main/java/org/laidu/learn/spring/mvc/controller/GoodsController.java b/framework/spring/spring-web/spring-mvc/src/main/java/org/laidu/learn/spring/mvc/controller/GoodsController.java index ea799f99f..977caffcf 100644 --- a/framework/spring/spring-web/spring-mvc/src/main/java/org/laidu/learn/spring/mvc/controller/GoodsController.java +++ b/framework/spring/spring-web/spring-mvc/src/main/java/org/laidu/learn/spring/mvc/controller/GoodsController.java @@ -47,7 +47,7 @@ public Result query(@PathVariable("goodId") Long goodId){ return Result.ok(GetGoodsResDTO.builder() .goodsName("name") .goodsId(goodId) - .goodsType(GoodsTypeEnum.BOOK) + .goodsType(GoodsTypeEnum.BOOK_0) .build()); } diff --git a/framework/spring/spring-web/spring-mvc/src/main/java/org/laidu/learn/spring/mvc/enums/GoodsTypeEnum.java b/framework/spring/spring-web/spring-mvc/src/main/java/org/laidu/learn/spring/mvc/enums/GoodsTypeEnum.java index 1d0999b1d..10d86c425 100644 --- a/framework/spring/spring-web/spring-mvc/src/main/java/org/laidu/learn/spring/mvc/enums/GoodsTypeEnum.java +++ b/framework/spring/spring-web/spring-mvc/src/main/java/org/laidu/learn/spring/mvc/enums/GoodsTypeEnum.java @@ -20,12 +20,12 @@ public enum GoodsTypeEnum implements NameValueEnum { /** * 书籍 */ - BOOK(0,"书籍"), + BOOK_0(0,"书籍"), /** * 手机 */ - PHONE(1,"手机"), + PHONE_1(1,"手机"), ; @JsonValue From 62342a2050d4f1bad7a21d9df1745f97b746f3f3 Mon Sep 17 00:00:00 2001 From: Tiancai ZANG Date: Wed, 14 Nov 2018 20:08:21 +0800 Subject: [PATCH 213/417] code quickSort GUI --- .../src/java/org/laidu/learn/code/practice/sort/QuickSort.java | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/code-practice/src/java/org/laidu/learn/code/practice/sort/QuickSort.java b/code-practice/src/java/org/laidu/learn/code/practice/sort/QuickSort.java index 809c08031..d10044f4c 100644 --- a/code-practice/src/java/org/laidu/learn/code/practice/sort/QuickSort.java +++ b/code-practice/src/java/org/laidu/learn/code/practice/sort/QuickSort.java @@ -16,7 +16,7 @@ public class QuickSort { public static void main(String[] args) { - int[] input = {6, 5, 4, 3, 2, 1}; + int[] input = {6, 5, 4, 7, 10, 123, 3, 2, 1}; quickSort(input); @@ -40,6 +40,7 @@ private static void qsort(int[] arr, int low, int high) { private static int partition(int[] arr, int low, int high) { int pivot = arr[low]; + while (low < high) { while (low < high && arr[high] >= pivot) { --high; From 207a5a3cf3dc3d596a127c8906c6f9195e36dad5 Mon Sep 17 00:00:00 2001 From: Tiancai ZANG Date: Wed, 14 Nov 2018 20:39:24 +0800 Subject: [PATCH 214/417] code qui --- .../learn/code/practice/sort/QuickSort.java | 51 ++++++++++++++++++- 1 file changed, 50 insertions(+), 1 deletion(-) diff --git a/code-practice/src/java/org/laidu/learn/code/practice/sort/QuickSort.java b/code-practice/src/java/org/laidu/learn/code/practice/sort/QuickSort.java index d10044f4c..154bc5c90 100644 --- a/code-practice/src/java/org/laidu/learn/code/practice/sort/QuickSort.java +++ b/code-practice/src/java/org/laidu/learn/code/practice/sort/QuickSort.java @@ -30,7 +30,7 @@ public static void quickSort(int[] arr) { private static void qsort(int[] arr, int low, int high) { if (low < high) { - int pivot = partition(arr, low, high); + int pivot = partition2(arr, low, high); qsort(arr, low, pivot - 1); @@ -38,6 +38,13 @@ private static void qsort(int[] arr, int low, int high) { } } + /** + * 保证 数组中在pivot(枢纽元)之前的元素均小于index上的元素, 之后的元素均大于枢纽元 + * @param arr + * @param low + * @param high + * @return 枢纽元(pivot) 下标 + */ private static int partition(int[] arr, int low, int high) { int pivot = arr[low]; @@ -54,4 +61,46 @@ private static int partition(int[] arr, int low, int high) { arr[low] = pivot; return low; } + + private static int partition2(int[] arr, int low, int high){ + + int mid = (low+high)/2; + int pivot = arr[mid]; + + int i = low, j= high; + + while (i < j){ + + + while (i < j && arr[i] <= pivot){ + i++; + } + + while (i = pivot){ + j--; + } + + if (i < mid && mid < j){ + int temp = arr[i]; + arr[i] = arr[j]; + arr[j] = temp; + }else if (i < j && mid < i){ + + int temp = arr[mid]; + arr[mid] = arr[j]; + arr[j] = arr[i]; + arr[i] = temp; + + }else if (i < j && j < mid){ + int temp = arr[mid]; + arr[mid] = arr[i]; + arr[i] = arr[j]; + arr[j] = temp; + } + } + + return i; + } + + } \ No newline at end of file From 08a71dffb23229b2f53867d26bb0ffcde3486771 Mon Sep 17 00:00:00 2001 From: Tiancai ZANG Date: Thu, 15 Nov 2018 19:04:49 +0800 Subject: [PATCH 215/417] code merge sort --- .../code/practice/sort/MergeSortDemo.java | 65 +++++++++++++++++++ .../learn/code/practice/sort/QuickSort.java | 44 +------------ .../code/practice/sort/package-info.java | 10 +++ 3 files changed, 77 insertions(+), 42 deletions(-) create mode 100644 code-practice/src/java/org/laidu/learn/code/practice/sort/MergeSortDemo.java create mode 100644 code-practice/src/java/org/laidu/learn/code/practice/sort/package-info.java diff --git a/code-practice/src/java/org/laidu/learn/code/practice/sort/MergeSortDemo.java b/code-practice/src/java/org/laidu/learn/code/practice/sort/MergeSortDemo.java new file mode 100644 index 000000000..fdf9f037e --- /dev/null +++ b/code-practice/src/java/org/laidu/learn/code/practice/sort/MergeSortDemo.java @@ -0,0 +1,65 @@ +package org.laidu.learn.code.practice.sort; + +import java.lang.Math; + +/** + * @author laidu + */ +public class MergeSortDemo{ + + public static void main(String[] args){ + + int[] input = {1,2,43,65,76,32,89}; + + int[] result = mergeSort(input, 0, input.length - 1); + + for (int var : result ) { + System.out.print(var + ","); + } + } + + private static int[] mergeSort(int[] a, int low, int high){ + + if (low == high) { + return new int[]{a[low]}; + }else if (high - low == 1) { + if (a[low] > a[high]) { + swap(a, low, high); + } + return new int[]{a[low],a[high]}; + } + + int mid = (low + high) /2; + + int[] left = mergeSort(a, low, mid); + int[] right = mergeSort(a, mid+1, high); + + return merge(left, right); + } + + private static int[] merge(int[] left, int[] right){ + int length = left.length + right.length; + int[] result = new int[length]; + int i = 0, j=0, k=0; + while(k < length){ + while(i < left.length && (j >= right.length || left[i] < right[j]) ){ + result[k++] = left[i++]; + } + while(j < right.length && (i >= left.length || left[i] > right[j])){ + result[k++] = right[j++]; + } + } + + return result; + } + + public static void swap(int[] a, int i, int j){ + if (i==j || a.length < Math.max(i,j) || Math.min(i,j) < 0 ) { + return; + } + int temp = a[i]; + a[i] = a[j]; + a[j] = temp; + } + +} diff --git a/code-practice/src/java/org/laidu/learn/code/practice/sort/QuickSort.java b/code-practice/src/java/org/laidu/learn/code/practice/sort/QuickSort.java index 154bc5c90..f2155c166 100644 --- a/code-practice/src/java/org/laidu/learn/code/practice/sort/QuickSort.java +++ b/code-practice/src/java/org/laidu/learn/code/practice/sort/QuickSort.java @@ -16,7 +16,7 @@ public class QuickSort { public static void main(String[] args) { - int[] input = {6, 5, 4, 7, 10, 123, 3, 2, 1}; + int[] input = {1, 5, 4, 7, 10, 123, 3, 2, 6}; quickSort(input); @@ -30,7 +30,7 @@ public static void quickSort(int[] arr) { private static void qsort(int[] arr, int low, int high) { if (low < high) { - int pivot = partition2(arr, low, high); + int pivot = partition(arr, low, high); qsort(arr, low, pivot - 1); @@ -62,45 +62,5 @@ private static int partition(int[] arr, int low, int high) { return low; } - private static int partition2(int[] arr, int low, int high){ - - int mid = (low+high)/2; - int pivot = arr[mid]; - - int i = low, j= high; - - while (i < j){ - - - while (i < j && arr[i] <= pivot){ - i++; - } - - while (i = pivot){ - j--; - } - - if (i < mid && mid < j){ - int temp = arr[i]; - arr[i] = arr[j]; - arr[j] = temp; - }else if (i < j && mid < i){ - - int temp = arr[mid]; - arr[mid] = arr[j]; - arr[j] = arr[i]; - arr[i] = temp; - - }else if (i < j && j < mid){ - int temp = arr[mid]; - arr[mid] = arr[i]; - arr[i] = arr[j]; - arr[j] = temp; - } - } - - return i; - } - } \ No newline at end of file diff --git a/code-practice/src/java/org/laidu/learn/code/practice/sort/package-info.java b/code-practice/src/java/org/laidu/learn/code/practice/sort/package-info.java new file mode 100644 index 000000000..869645df0 --- /dev/null +++ b/code-practice/src/java/org/laidu/learn/code/practice/sort/package-info.java @@ -0,0 +1,10 @@ +/** + * 排序练习 + *

                    + * Created by laidu + * on 2018-11-15 17:01. + * + * @author laidu + */ +// TODO: 2018-11-15 17:01 排序练习 +package org.laidu.learn.code.practice.sort; \ No newline at end of file From a876ff027239f0ac56a5bd02587129aa8b2e7155 Mon Sep 17 00:00:00 2001 From: Tiancai ZANG Date: Fri, 16 Nov 2018 11:34:11 +0800 Subject: [PATCH 216/417] add centos7-ssh dockerfile --- .../resources/docker/image/basic/Dockerfile | 7 ++++--- .../resources/docker/image/java/Dockerfile | 20 +------------------ .../docker/image/openjdk-build/Dockerfile | 0 3 files changed, 5 insertions(+), 22 deletions(-) create mode 100644 dev-ops/src/main/resources/docker/image/openjdk-build/Dockerfile diff --git a/dev-ops/src/main/resources/docker/image/basic/Dockerfile b/dev-ops/src/main/resources/docker/image/basic/Dockerfile index a5866768f..595140169 100644 --- a/dev-ops/src/main/resources/docker/image/basic/Dockerfile +++ b/dev-ops/src/main/resources/docker/image/basic/Dockerfile @@ -1,10 +1,10 @@ -# This Dockerfile uses the ubuntu image +# This Dockerfile uses the centos7 image # VERSION 2 - EDITION 1 # Author: docker_user # Command format: Instruction [arguments / command] .. # Base image to use, this must be set as the first line -FROM ubuntu:latest +FROM centos:7 # Maintainer: docker_user (@docker_user) MAINTAINER laidu laidu823@gmail.com @@ -14,4 +14,5 @@ MAINTAINER laidu laidu823@gmail.com # time zone ENV TZ=Asia/Shanghai -RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone \ No newline at end of file +RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone + diff --git a/dev-ops/src/main/resources/docker/image/java/Dockerfile b/dev-ops/src/main/resources/docker/image/java/Dockerfile index 63dbad179..1d8f987ef 100644 --- a/dev-ops/src/main/resources/docker/image/java/Dockerfile +++ b/dev-ops/src/main/resources/docker/image/java/Dockerfile @@ -6,27 +6,9 @@ # # Pull base image. -FROM dockerfile/ubuntu +FROM daocloud.io/laidu/centos7-ssh:master # time zone ENV TZ=Asia/Shanghai RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone -# Install Java. -RUN \ - echo oracle-java8-installer shared/accepted-oracle-license-v1-1 select true | debconf-set-selections && \ - add-apt-repository -y ppa:webupd8team/java && \ - apt-get update && \ - apt-get install -y oracle-java8-installer && \ - rm -rf /var/lib/apt/lists/* && \ - rm -rf /var/cache/oracle-jdk8-installer - - -# Define working directory. -WORKDIR /data - -# Define commonly used JAVA_HOME variable -ENV JAVA_HOME /usr/lib/jvm/java-8-oracle - -# Define default command. -CMD ["bash"] \ No newline at end of file diff --git a/dev-ops/src/main/resources/docker/image/openjdk-build/Dockerfile b/dev-ops/src/main/resources/docker/image/openjdk-build/Dockerfile new file mode 100644 index 000000000..e69de29bb From 66746dccdaf60c21a496acbc7f5137eee4b2e269 Mon Sep 17 00:00:00 2001 From: Tiancai ZANG Date: Fri, 16 Nov 2018 18:59:59 +0800 Subject: [PATCH 217/417] =?UTF-8?q?=E6=96=B0=E5=A2=9E=20openjdk=20build=20?= =?UTF-8?q?=E7=8E=AF=E5=A2=83=20docker?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../resources/docker/image/basic/Dockerfile | 15 +++++++++++++-- .../resources/docker/image/basic/start.sh | 12 ++++++++++++ .../docker/image/openjdk-build/Dockerfile | 19 +++++++++++++++++++ .../resources/docker/shell/rabbitmq_create.sh | 5 ++++- 4 files changed, 48 insertions(+), 3 deletions(-) create mode 100644 dev-ops/src/main/resources/docker/image/basic/start.sh diff --git a/dev-ops/src/main/resources/docker/image/basic/Dockerfile b/dev-ops/src/main/resources/docker/image/basic/Dockerfile index 595140169..f1febb94a 100644 --- a/dev-ops/src/main/resources/docker/image/basic/Dockerfile +++ b/dev-ops/src/main/resources/docker/image/basic/Dockerfile @@ -1,10 +1,10 @@ # This Dockerfile uses the centos7 image # VERSION 2 - EDITION 1 -# Author: docker_user +# Author: laidu # Command format: Instruction [arguments / command] .. # Base image to use, this must be set as the first line -FROM centos:7 +FROM centos:7.5.1804 # Maintainer: docker_user (@docker_user) MAINTAINER laidu laidu823@gmail.com @@ -16,3 +16,14 @@ MAINTAINER laidu laidu823@gmail.com ENV TZ=Asia/Shanghai RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone +RUN yum -y update; yum clean all +RUN yum -y install openssh-server passwd; yum clean all +ADD ./start.sh /start.sh +RUN mkdir /var/run/sshd + +RUN ssh-keygen -t rsa -f /etc/ssh/ssh_host_rsa_key -N '' + +RUN chmod 755 /start.sh +# EXPOSE 22 +RUN ./start.sh +ENTRYPOINT ["/usr/sbin/sshd", "-D"] \ No newline at end of file diff --git a/dev-ops/src/main/resources/docker/image/basic/start.sh b/dev-ops/src/main/resources/docker/image/basic/start.sh new file mode 100644 index 000000000..a3920487e --- /dev/null +++ b/dev-ops/src/main/resources/docker/image/basic/start.sh @@ -0,0 +1,12 @@ +#!/bin/bash + +__create_user() { +# Create a user to SSH into as. +useradd user +SSH_USERPASS=newpass +echo -e "$SSH_USERPASS\n$SSH_USERPASS" | (passwd --stdin user) +echo ssh user password: $SSH_USERPASS +} + +# Call all functions +__create_user \ No newline at end of file diff --git a/dev-ops/src/main/resources/docker/image/openjdk-build/Dockerfile b/dev-ops/src/main/resources/docker/image/openjdk-build/Dockerfile index e69de29bb..95e7316bc 100644 --- a/dev-ops/src/main/resources/docker/image/openjdk-build/Dockerfile +++ b/dev-ops/src/main/resources/docker/image/openjdk-build/Dockerfile @@ -0,0 +1,19 @@ +# This Dockerfile uses the centos7 image +# VERSION 2 - EDITION 1 +# Author: laidu +# Command format: Instruction [arguments / command] .. + +# Base image to use, this must be set as the first line +FROM daocloud.io/laidu/centos7-ssh:master + +# Maintainer: docker_user (@docker_user) +MAINTAINER laidu laidu823@gmail.com + +# Commands to update the image +# Set aliyun mirror + +RUN yum -y update; yum clean all +RUN yum -y install openssh-server passwd; yum clean all +RUN yum -y groupinstall "Development Tools" +RUN yum -y java-1.7.0-openjdk-devel.x86_64 libXtst-devel libXt-devel libXrender-devel \ + cups-devel freetype-devel alsa-lib-devel; yum clean all \ No newline at end of file diff --git a/dev-ops/src/main/resources/docker/shell/rabbitmq_create.sh b/dev-ops/src/main/resources/docker/shell/rabbitmq_create.sh index c80154d6a..6e006efbd 100755 --- a/dev-ops/src/main/resources/docker/shell/rabbitmq_create.sh +++ b/dev-ops/src/main/resources/docker/shell/rabbitmq_create.sh @@ -2,4 +2,7 @@ name=$1 port=$2 web_port=$3 -docker run --restart=always -d -p0.0.0.0:$port:5672 -p0.0.0.0:${web_port}:15672 --name rabbitmq-$name rabbitmq:3-management +docker run \ + -d -p0.0.0.0:$port:5672 \ + -p0.0.0.0:${web_port}:15672 \ + --name rabbitmq-$name rabbitmq:3-management From e1c431e83532639a6d5d9c2e467883dedfc29733 Mon Sep 17 00:00:00 2001 From: Tiancai ZANG Date: Fri, 16 Nov 2018 19:15:42 +0800 Subject: [PATCH 218/417] =?UTF-8?q?=E6=96=B0=E5=A2=9E=20openjdk=20build=20?= =?UTF-8?q?=E7=8E=AF=E5=A2=83=20docker?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/main/resources/docker/image/openjdk-build/Dockerfile | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/dev-ops/src/main/resources/docker/image/openjdk-build/Dockerfile b/dev-ops/src/main/resources/docker/image/openjdk-build/Dockerfile index 95e7316bc..f1c2a3587 100644 --- a/dev-ops/src/main/resources/docker/image/openjdk-build/Dockerfile +++ b/dev-ops/src/main/resources/docker/image/openjdk-build/Dockerfile @@ -16,4 +16,6 @@ RUN yum -y update; yum clean all RUN yum -y install openssh-server passwd; yum clean all RUN yum -y groupinstall "Development Tools" RUN yum -y java-1.7.0-openjdk-devel.x86_64 libXtst-devel libXt-devel libXrender-devel \ - cups-devel freetype-devel alsa-lib-devel; yum clean all \ No newline at end of file + cups-devel freetype-devel alsa-lib-devel; yum clean all + +ENTRYPOINT ["/usr/sbin/sshd", "-D"] \ No newline at end of file From a4365aabe3256706e0e900c262e7355362c73e60 Mon Sep 17 00:00:00 2001 From: ztc Date: Fri, 16 Nov 2018 22:09:30 +0800 Subject: [PATCH 219/417] install which --- .../src/main/resources/docker/image/openjdk-build/Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/dev-ops/src/main/resources/docker/image/openjdk-build/Dockerfile b/dev-ops/src/main/resources/docker/image/openjdk-build/Dockerfile index f1c2a3587..92018be6c 100644 --- a/dev-ops/src/main/resources/docker/image/openjdk-build/Dockerfile +++ b/dev-ops/src/main/resources/docker/image/openjdk-build/Dockerfile @@ -15,7 +15,7 @@ MAINTAINER laidu laidu823@gmail.com RUN yum -y update; yum clean all RUN yum -y install openssh-server passwd; yum clean all RUN yum -y groupinstall "Development Tools" -RUN yum -y java-1.7.0-openjdk-devel.x86_64 libXtst-devel libXt-devel libXrender-devel \ +RUN yum -y java-1.7.0-openjdk-devel.x86_64 which libXtst-devel libXt-devel libXrender-devel \ cups-devel freetype-devel alsa-lib-devel; yum clean all ENTRYPOINT ["/usr/sbin/sshd", "-D"] \ No newline at end of file From 1de5c803c8e3c07c509d8a62ac59da9661536e81 Mon Sep 17 00:00:00 2001 From: ztc Date: Fri, 16 Nov 2018 22:16:20 +0800 Subject: [PATCH 220/417] install which --- .../src/main/resources/docker/image/openjdk-build/Dockerfile | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/dev-ops/src/main/resources/docker/image/openjdk-build/Dockerfile b/dev-ops/src/main/resources/docker/image/openjdk-build/Dockerfile index 92018be6c..63fd702ee 100644 --- a/dev-ops/src/main/resources/docker/image/openjdk-build/Dockerfile +++ b/dev-ops/src/main/resources/docker/image/openjdk-build/Dockerfile @@ -14,8 +14,9 @@ MAINTAINER laidu laidu823@gmail.com RUN yum -y update; yum clean all RUN yum -y install openssh-server passwd; yum clean all -RUN yum -y groupinstall "Development Tools" -RUN yum -y java-1.7.0-openjdk-devel.x86_64 which libXtst-devel libXt-devel libXrender-devel \ +RUN yum -y groupinstall "Development Tools"; yum clean all +RUN yum -y install which libXtst-devel libXt-devel libXrender-devel \ cups-devel freetype-devel alsa-lib-devel; yum clean all +RUN yum -y install java-1.7.0-openjdk-devel.x86_64; yum clean all ENTRYPOINT ["/usr/sbin/sshd", "-D"] \ No newline at end of file From 2c2d4bbd0af903a95d0bb96fe662d1166d4e0cd2 Mon Sep 17 00:00:00 2001 From: ztc Date: Fri, 16 Nov 2018 22:17:17 +0800 Subject: [PATCH 221/417] install which --- .../src/main/resources/docker/image/openjdk-build/Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/dev-ops/src/main/resources/docker/image/openjdk-build/Dockerfile b/dev-ops/src/main/resources/docker/image/openjdk-build/Dockerfile index 63fd702ee..dffa05dcd 100644 --- a/dev-ops/src/main/resources/docker/image/openjdk-build/Dockerfile +++ b/dev-ops/src/main/resources/docker/image/openjdk-build/Dockerfile @@ -17,6 +17,6 @@ RUN yum -y install openssh-server passwd; yum clean all RUN yum -y groupinstall "Development Tools"; yum clean all RUN yum -y install which libXtst-devel libXt-devel libXrender-devel \ cups-devel freetype-devel alsa-lib-devel; yum clean all -RUN yum -y install java-1.7.0-openjdk-devel.x86_64; yum clean all +RUN yum -y install java-1.7.0-openjdk-devel; yum clean all ENTRYPOINT ["/usr/sbin/sshd", "-D"] \ No newline at end of file From d2049542548cdc6c313c7607f56e0f80ad79d633 Mon Sep 17 00:00:00 2001 From: Tiancai ZANG Date: Mon, 19 Nov 2018 13:07:18 +0800 Subject: [PATCH 222/417] add jni learn module --- language-advance/jni/pom.xml | 15 ++++++++++++ .../advance/jni/demo/NativeHelloWorld.java | 23 ++++++++++++++++++ .../laidu/learn/advance/jni/package-info.java | 10 ++++++++ .../main/resources/lib/NativeHelloWorld.so | Bin 0 -> 15984 bytes ..._learn_advance_jni_demo_NativeHelloWorld.c | 22 +++++++++++++++++ ..._learn_advance_jni_demo_NativeHelloWorld.h | 22 +++++++++++++++++ .../jni/src/site/markdown/index.md | 1 + language-advance/pom.xml | 1 + language-feature/src/site/markdown/index.md | 2 +- language-feature/src/site/markdown/object.md | 9 ++++--- 10 files changed, 101 insertions(+), 4 deletions(-) create mode 100644 language-advance/jni/pom.xml create mode 100644 language-advance/jni/src/main/java/org/laidu/learn/advance/jni/demo/NativeHelloWorld.java create mode 100644 language-advance/jni/src/main/java/org/laidu/learn/advance/jni/package-info.java create mode 100755 language-advance/jni/src/main/resources/lib/NativeHelloWorld.so create mode 100644 language-advance/jni/src/main/resources/lib/org_laidu_learn_advance_jni_demo_NativeHelloWorld.c create mode 100644 language-advance/jni/src/main/resources/lib/org_laidu_learn_advance_jni_demo_NativeHelloWorld.h create mode 100644 language-advance/jni/src/site/markdown/index.md diff --git a/language-advance/jni/pom.xml b/language-advance/jni/pom.xml new file mode 100644 index 000000000..69ee662a7 --- /dev/null +++ b/language-advance/jni/pom.xml @@ -0,0 +1,15 @@ + + + + language-advance + org.laidu.learn + 1.0-SNAPSHOT + + 4.0.0 + + jni + + + \ No newline at end of file diff --git a/language-advance/jni/src/main/java/org/laidu/learn/advance/jni/demo/NativeHelloWorld.java b/language-advance/jni/src/main/java/org/laidu/learn/advance/jni/demo/NativeHelloWorld.java new file mode 100644 index 000000000..2f426aa90 --- /dev/null +++ b/language-advance/jni/src/main/java/org/laidu/learn/advance/jni/demo/NativeHelloWorld.java @@ -0,0 +1,23 @@ +package org.laidu.learn.advance.jni.demo; + +/** + * 使用native 方法实现 helloworld + * + * gcc -I/usr/lib/jvm/java-11-jdk/include -I/usr/lib/jvm/java-11-jdk/include/linux org_laidu_learn_advance_jni_demo_NativeHelloWorld.c -shared -z noexecstack -o NativeHelloWorld.so + * @author tiancai.zang + * on 2018-11-19 11:17. + */ +public class NativeHelloWorld { + + static { + System.load(System.getProperty("user.dir")+"/language-advance/jni/src/main/resources/lib/NativeHelloWorld.so"); + } + + + public native void hello(); + + public static void main(String[] args) { + + new NativeHelloWorld().hello(); + } +} \ No newline at end of file diff --git a/language-advance/jni/src/main/java/org/laidu/learn/advance/jni/package-info.java b/language-advance/jni/src/main/java/org/laidu/learn/advance/jni/package-info.java new file mode 100644 index 000000000..555a497bf --- /dev/null +++ b/language-advance/jni/src/main/java/org/laidu/learn/advance/jni/package-info.java @@ -0,0 +1,10 @@ +/** + * java JNI + *

                    + * Created by laidu + * on 2018-11-19 11:17. + * + * @author laidu + */ +// TODO: 2018-11-19 11:17 java JNI +package org.laidu.learn.advance.jni; \ No newline at end of file diff --git a/language-advance/jni/src/main/resources/lib/NativeHelloWorld.so b/language-advance/jni/src/main/resources/lib/NativeHelloWorld.so new file mode 100755 index 0000000000000000000000000000000000000000..aa03b564b72c267b5d8691ccd59adacef1585869 GIT binary patch literal 15984 zcmeHOUu+yl8K3jTjU6YxYnp(YAhL~ul(ulSoqvWZ%{l&)O=Y_f>_VlY$@*?>AG$x$ z-d?bafJiBYP$IRw&<7sMTNS8OUVs;*gg{^5!F{UQht@@{l&T;MRja^*m+#w|-+FJo zhgu<3Jj_VmZ@%C6XJ)>c-JA7(^Sz0w$*xRBpk&2Eg1KT|Aw?~C>4dHjDT)!%OV|Bk zU#PonQ?#YFs)e9J`{g#eSzGf-I;y(_3OU1}ON))ESm8CI&uA7jZg&UC@&%=kf2f@f zbSd7_6n4zAou%z8Z3lW?_Y<^7xe5Eo{T$K$lJt<)0}aPS*q7h&%Us`MDTO5cjDiIy z?7l*F+|Q3%5cYGry-smi*W&}#Y&gC>)L54O&dkh-v#VDhePPGlUw{6W)!%emC(i%w z&EmJYFNh!8ss3FOh!OLz-u}Tg*6UQbpH_&&3c6zs5Rt_<5w=awp*<>zSi)nWx2#v zaiQfmMYS?tDl{8~Nepj$+U;abS z&Cn(|_7{SK&%I68+<_w1m|tSqyK6xZ*jG=!#dcS_UuW{g+x}j1^%U31Rd2ACJ8+4W zZ)!^VzY6t_U1M_ZhJ9lrYhPKnZ`?X%XI{2n+3@#}gE{S>CsfymoezH{5Y(psmEuJx0jK0QdT2OB}~-akW|FlJGdLf7VEB48q5B48q5B48q5 zB48q5B48q5B48q5BJh73f$(#p6@E{=M+^-g;f`kZXCE9O%HP#?t_Q(Uq8|`_oG5?u z<&t^goX9NaGy8XL?|Ftk@EszIze%tDJqRqKqCY>`Kk#s_?^`{W#HoD`-go5CL5A5c zz0Qkg$zS+Qb+kYKRM*%p^=+6nOfeBK5ik)j5ik)j5ik)j5ik)j5ik)j5%@$Rpz}SE z--+B!&Kc#hQ;{fvbeHCjYP-8Nk37=-nn!-O{`xpiUOW zd*TnZe24b;qNaVC@_QziD95xIvQe%m#d%_9g2uWqRLhjZkj! zkTpCwG%`4HWGHEv!e=Q182RsUah7HS^W2VS1?IOM-zKmQ+VO6Ic(&tr2+Tt}zFlBG z+wq=g-rI4SWh6|;1X-~|SgCklbbcbHPHS6LF?=j1a$&!0*vGo?ps~5GSaT5u5$N{mA+M8A@_b#;2zJApaeHRzm%) zaej{QwElM**PlZ_Iq_qQDv6Tj=XKKQN?AW^glAIX|F;m|I=>$hPXC%8Ajco&@lO5PVkgj-=7?U!l7)6Q$i5Z`*v;%6QF{GtQ?N5T)bH>tRi=QsTp zW&M=I<}nTF*JOzgYBYtE<%V3WHs+nGEc*?wDV^4`C^c#qs;=*r3nzw0j;AZ}`HhNn zJkME?Zr%4*#DeG4Tv=|_YAa+C<0NVNZK@ypvl{>SU>??L&J zOM32?%47>pS*S&zEKn!MPOVa+RvYAtE`_iG-%G3ydR67nZfTe zDE}WnUi7vng7_HRhqPzW+pp;N`@9BVkNphxOK>nk72c!49>4RT*jI78bW2BP#jw9B z62`t^kNp7XizJH|_7N{OF}x>(J@yTt{JX*h{f8bXp9|wX9(e38KrJ?=lI*`ig(zzo z?6D64#rV-a;)n6qwf$-B5c^b6=&?QTZIkxPgmFx;kB*+-`gaujby5ink0V~1#Ki5f z|A}Z^nd}P}DTp{~u|4#9vriQB(aIqd_&+h@lFf zJLK`hzSH?k*d*J3K4Fi29O!u%YKr*-e2pr+MzKEdo`v(9Nqz93zb4yU%pUum0lu-R zKu>X-Jn-L>fY%P%$NmxLW3O{?s9@Z%!~Fk=WUK;v>@(LMU@H+#hvK%jze<9*y(ntU zK}9Xif}nlS*GLezw~9*B()Q3x+Jk?SDy)P4W50B`gFUwuFK-jWm{yNOu*dr`1h9`& ztUc&3wY9_Nbl~|t{C@hwc<@}{_f_@xs;Y0HAuUO;;dVI9{>E`-!28a4N!tGh D$gp-J literal 0 HcmV?d00001 diff --git a/language-advance/jni/src/main/resources/lib/org_laidu_learn_advance_jni_demo_NativeHelloWorld.c b/language-advance/jni/src/main/resources/lib/org_laidu_learn_advance_jni_demo_NativeHelloWorld.c new file mode 100644 index 000000000..4ac0c15ae --- /dev/null +++ b/language-advance/jni/src/main/resources/lib/org_laidu_learn_advance_jni_demo_NativeHelloWorld.c @@ -0,0 +1,22 @@ +#include + + +#ifdef __cplusplus +extern "C" { +#endif +/* + * Class: HelloWorld + * Method: print + * Signature: ()V + */ +JNIEXPORT void JNICALL Java_org_laidu_learn_advance_jni_demo_NativeHelloWorld_hello + (JNIEnv * env, jobject obj) { + printf("Hello World!\n"); +// while(1){ +// printf("123\n"); +// } +} + +#ifdef __cplusplus +} +#endif \ No newline at end of file diff --git a/language-advance/jni/src/main/resources/lib/org_laidu_learn_advance_jni_demo_NativeHelloWorld.h b/language-advance/jni/src/main/resources/lib/org_laidu_learn_advance_jni_demo_NativeHelloWorld.h new file mode 100644 index 000000000..237eb78ab --- /dev/null +++ b/language-advance/jni/src/main/resources/lib/org_laidu_learn_advance_jni_demo_NativeHelloWorld.h @@ -0,0 +1,22 @@ +/* DO NOT EDIT THIS FILE - it is machine generated */ +#include + +/* Header for class org_laidu_learn_advance_jni_demo_NativeHelloWorld */ + +#ifndef _Included_org_laidu_learn_advance_jni_demo_NativeHelloWorld +#define _Included_org_laidu_learn_advance_jni_demo_NativeHelloWorld +#ifdef __cplusplus +extern "C" { +#endif +/* + * Class: org_laidu_learn_advance_jni_demo_NativeHelloWorld + * Method: hello + * Signature: ()V + */ +JNIEXPORT void JNICALL Java_org_laidu_learn_advance_jni_demo_NativeHelloWorld_hello + (JNIEnv * , jobject); + +#ifdef __cplusplus +} +#endif +#endif diff --git a/language-advance/jni/src/site/markdown/index.md b/language-advance/jni/src/site/markdown/index.md new file mode 100644 index 000000000..21c508f05 --- /dev/null +++ b/language-advance/jni/src/site/markdown/index.md @@ -0,0 +1 @@ +# java jni编程 学习 \ No newline at end of file diff --git a/language-advance/pom.xml b/language-advance/pom.xml index 7dcafc343..9202284bf 100644 --- a/language-advance/pom.xml +++ b/language-advance/pom.xml @@ -21,6 +21,7 @@ xml gui bytecode + jni diff --git a/language-feature/src/site/markdown/index.md b/language-feature/src/site/markdown/index.md index e7379cbf6..e92937164 100644 --- a/language-feature/src/site/markdown/index.md +++ b/language-feature/src/site/markdown/index.md @@ -8,7 +8,7 @@ ------------ -* [Object解析](object.md) +* [Object深入解析](object.md) * [java数据结构]() * [java集合](collection.md) diff --git a/language-feature/src/site/markdown/object.md b/language-feature/src/site/markdown/object.md index 2beae70ca..a732e1f48 100644 --- a/language-feature/src/site/markdown/object.md +++ b/language-feature/src/site/markdown/object.md @@ -1,4 +1,7 @@ -# Object 源码解析 +# Object 深入解析 + +## 简介 +> 类 Object 是类层次结构的根类。每个类都使用 Object 作为超类。所有对象(包括数组)都实现这个类的方法。(未继承任何超类的类将自动继承Object) ## 类图 @@ -7,8 +10,8 @@ ## 方法预览(API) - -## 关键方法解析 +## 常用方法解析 参考: +* [java se 6 api](http://tool.oschina.net/apidocs/apidoc?api=jdk-zh) * [java-se 11 Object](https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/lang/Object.html) From 2bc77ddfadccc7335dad92616718186870115706 Mon Sep 17 00:00:00 2001 From: Tiancai ZANG Date: Mon, 19 Nov 2018 19:15:58 +0800 Subject: [PATCH 223/417] add wechat-robot moudle --- framework/thirdparty/wechat/pom.xml | 8 ++ .../thirdparty/wechat/wechat-robot/pom.xml | 24 +++++ .../laidu/learn/wechat/robot/WxRobotApp.java | 36 +++++++ .../language/feature/object/ObjectDemo.java | 54 ++++++++-- .../src/main/resources/rawObject.bin | Bin 0 -> 81 bytes language-feature/src/site/markdown/object.md | 95 +++++++++++++++++- 6 files changed, 205 insertions(+), 12 deletions(-) create mode 100644 framework/thirdparty/wechat/wechat-robot/pom.xml create mode 100644 framework/thirdparty/wechat/wechat-robot/src/main/java/org/laidu/learn/wechat/robot/WxRobotApp.java create mode 100644 language-feature/src/main/resources/rawObject.bin diff --git a/framework/thirdparty/wechat/pom.xml b/framework/thirdparty/wechat/pom.xml index ef434672f..cbd956b35 100644 --- a/framework/thirdparty/wechat/pom.xml +++ b/framework/thirdparty/wechat/pom.xml @@ -14,11 +14,13 @@ wechat-mp wechat-common + wechat-robot 3.1.0 + 1.0.6 @@ -31,6 +33,12 @@ + + io.github.biezhi + wechat-api + ${wechat-robot.version} + + com.github.binarywang diff --git a/framework/thirdparty/wechat/wechat-robot/pom.xml b/framework/thirdparty/wechat/wechat-robot/pom.xml new file mode 100644 index 000000000..d64958c85 --- /dev/null +++ b/framework/thirdparty/wechat/wechat-robot/pom.xml @@ -0,0 +1,24 @@ + + + + wechat + org.laidu.learn + 1.0-SNAPSHOT + + 4.0.0 + + wechat-robot + + + + + io.github.biezhi + wechat-api + 1.0.6 + + + + + \ No newline at end of file diff --git a/framework/thirdparty/wechat/wechat-robot/src/main/java/org/laidu/learn/wechat/robot/WxRobotApp.java b/framework/thirdparty/wechat/wechat-robot/src/main/java/org/laidu/learn/wechat/robot/WxRobotApp.java new file mode 100644 index 000000000..6e9eb8d46 --- /dev/null +++ b/framework/thirdparty/wechat/wechat-robot/src/main/java/org/laidu/learn/wechat/robot/WxRobotApp.java @@ -0,0 +1,36 @@ +package org.laidu.learn.wechat.robot; + +import io.github.biezhi.wechat.WeChatBot; +import io.github.biezhi.wechat.api.annotation.Bind; +import io.github.biezhi.wechat.api.constant.Config; +import io.github.biezhi.wechat.api.enums.MsgType; +import io.github.biezhi.wechat.api.model.WeChatMessage; +import io.github.biezhi.wechat.utils.StringUtils; +import lombok.extern.slf4j.Slf4j; + +/** + * 微信聊天机器人 + * + * @author tiancai.zang + * on 2018-11-19 18:33. + */ +@Slf4j +public class WxRobotApp extends WeChatBot { + + public WxRobotApp(Config config) { + super(config); + } + + @Bind(msgType = MsgType.TEXT) + public void handleText(WeChatMessage message) { + if (StringUtils.isNotEmpty(message.getName())) { + log.info("接收到 [{}] 的消息: {}", message.getName(), message.getText()); + this.sendMsg(message.getFromUserName(), "自动回复: " + message.getText()); + } + } + + public static void main(String[] args) { + new WxRobotApp(Config.me().autoLogin(true).showTerminal(true)).start(); + } + +} \ No newline at end of file diff --git a/language-feature/src/main/java/org/laidu/learn/language/feature/object/ObjectDemo.java b/language-feature/src/main/java/org/laidu/learn/language/feature/object/ObjectDemo.java index 8531bb29f..b6c2275a3 100644 --- a/language-feature/src/main/java/org/laidu/learn/language/feature/object/ObjectDemo.java +++ b/language-feature/src/main/java/org/laidu/learn/language/feature/object/ObjectDemo.java @@ -1,5 +1,9 @@ package org.laidu.learn.language.feature.object; +import java.io.*; +import java.lang.reflect.Constructor; +import java.lang.reflect.InvocationTargetException; + /** * Object 方法测试 * @@ -8,20 +12,54 @@ */ public class ObjectDemo { - public static void main(String[] args) throws InterruptedException { + public static void main(String[] args) throws InterruptedException, CloneNotSupportedException, IllegalAccessException, InstantiationException, InvocationTargetException, IOException { + + // 通过new关键字创建新对象 + RawObject o1 = new RawObject(); + + // 使用clone方式创建指定对象副本,前提是该对象必须实现Cloneable接口 + RawObject o2 = (RawObject) o1.clone(); + + // 使用反射方法中的newInstance调用无参构造器, 前提是该对象必须提供了无参构造器 + RawObject o3 = o2.getClass().newInstance(); + + // 使用反射获取构造器,通过指定构造器创建新对象, 该类必须实现序列化接口 + for (Constructor constructor : o3.getClass().getConstructors()) { + Object o = constructor.newInstance(null); + } - Object o1 = new Object(); - Object o2 = new Object(){ - @Override - public Object clone() throws CloneNotSupportedException { - return super.clone(); - } - }; + // 通过序列化创建新对象 + String fileName = System.getProperty("user.dir")+"/language-feature/src/main/resources/rawObject.bin"; + try (ObjectOutputStream out = new ObjectOutputStream(new FileOutputStream(new File(fileName)))) { + out.writeObject(o2); + } + RawObject o4 = null; + try(ObjectInputStream in = new ObjectInputStream(new FileInputStream(new File(fileName)))) { + o4 = (RawObject) in.readObject(); + } catch (ClassNotFoundException e) { + e.printStackTrace(); + } + assert o4 != null; + System.out.println(o4.hashCode()); System.out.println(o1.hashCode()); System.out.println(o2.hashCode()); } + + + /** + * 当class未指定任何父类时,默认继承于Object + * + */ + public static class RawObject implements Cloneable,Serializable{ + private static final long serialVersionUID = 1L; + + @Override + public Object clone() throws CloneNotSupportedException { + return super.clone(); + } + } } \ No newline at end of file diff --git a/language-feature/src/main/resources/rawObject.bin b/language-feature/src/main/resources/rawObject.bin new file mode 100644 index 0000000000000000000000000000000000000000..cd713249782e42359acf9f5434eb3ab9b2b60b17 GIT binary patch literal 81 zcmZ4UmVvdnh`}bmC|xfnF*Bu9FDEszC=bZaOD|1KPt{9HO)M!bO4Z9x%1TWx(enpW XE~&ZsDnW_m5FP^rFfuVPR1^RJw5=LY literal 0 HcmV?d00001 diff --git a/language-feature/src/site/markdown/object.md b/language-feature/src/site/markdown/object.md index a732e1f48..a1fc69668 100644 --- a/language-feature/src/site/markdown/object.md +++ b/language-feature/src/site/markdown/object.md @@ -1,16 +1,103 @@ # Object 深入解析 -## 简介 +##1、 简介 > 类 Object 是类层次结构的根类。每个类都使用 Object 作为超类。所有对象(包括数组)都实现这个类的方法。(未继承任何超类的类将自动继承Object) -## 类图 +##2、类图 ![](image/Object.png) -## 方法预览(API) +##3、方法预览(API) +方法签名 | 描述 +--- | --- +protected native Object clone() | 创建并返回此对象的一个副本。 +public boolean equals(Object obj) | 指示其他某个对象是否与此对象“相等”。 +protected void finalize() | 当垃圾回收器确定不存在对该对象的更多引用时,由对象的垃圾回收器调用此方法。 +public final native Class getClass() | 返回此 Object 的运行时类。 +public native int hashCode() | 返回该对象的哈希码值。 +public final native void notify() | 唤醒在此对象监视器上等待的单个线程。 +public final native void notifyAll() | 唤醒在此对象监视器上等待的所有线程。 +private static native void registerNatives() | 其主要作用是将C/C++中的方法映射到Java中的native方法,实现方法命名的解耦。 +public String toString() | 返回该对象的字符串表示。 +public final void wait() | 在其他线程调用此对象的 notify() 方法或 notifyAll() 方法前,导致当前线程等待。 +public final void wait(long timeout) | 在其他线程调用此对象的 notify() 方法或 notifyAll() 方法,或者超过指定的时间量前,导致当前线程等待。 +public final void wait(long timeout, int nanos) | 在其他线程调用此对象的 notify() 方法或 notifyAll() 方法,或者其他某个线程中断当前线程,或者已超过某个实际时间量前,导致当前线程等待。 + +##4、常用方法解析 + +### 4.1、clone + +> 创建并返回此对象的一个副本。 + +java 源码: +```java +protected native Object clone() throws CloneNotSupportedException; +``` +[c源码](http://hg.openjdk.java.net/jdk8u/jdk8u60/jdk/file/37a05a11f281/src/share/native/java/lang/Object.c): +```c++ +``` +#### 4.1.1 java创建对象的几种方式 + +方式 | 描述 | 原理 +---|---|--- +new 关键字 | 调用构造器 | 调用构造器 +反射 | 通过反射调用newInstance或者调用指定Constructor创建对象 | 通过调用构造器 +clone | 通过clone获取对象副本 | 通过native clone方法 +序列化 | 通过序列化创建新实例 | 通过序列化 + +``` + // 通过new关键字创建新对象 + RawObject o1 = new RawObject(); + + // 使用clone方式创建指定对象副本,前提是该对象必须实现Cloneable接口 + RawObject o2 = (RawObject) o1.clone(); + + // 使用反射方法中的newInstance调用无参构造器, 前提是该对象必须提供了无参构造器 + RawObject o3 = o2.getClass().newInstance(); + + // 使用反射获取构造器,通过指定构造器创建新对象, 该类必须实现序列化接口 + for (Constructor constructor : o3.getClass().getConstructors()) { + Object o = constructor.newInstance(null); + } + + // 通过序列化创建新对象 + String fileName = System.getProperty("user.dir")+"/language-feature/src/main/resources/rawObject.bin"; + try (ObjectOutputStream out = new ObjectOutputStream(new FileOutputStream(new File(fileName)))) { + out.writeObject(o2); + } + RawObject o4 = null; + try(ObjectInputStream in = new ObjectInputStream(new FileInputStream(new File(fileName)))) { + o4 = (RawObject) in.readObject(); + } catch (ClassNotFoundException e) { + e.printStackTrace(); + } +``` + +#### 4.1.2 深克隆与浅克隆 +> * 浅克隆 只克隆当前对象和引用对象的引用 +> * 深克隆 克隆当前对象及其应用对象 + +### 4.2、hashCode & equals + +java 源码: +```java +public native int hashCode(); +``` +[c源码](http://hg.openjdk.java.net/jdk8u/jdk8u60/jdk/file/37a05a11f281/src/share/native/java/lang/Object.c): +```c++ +``` +#### 4.2.1、hash算法 + +#### 4.2.2、hashCode方法的应用 +#### 4.2.3、equals方法的应用 +#### 4.2.4、默认的hashCode生成策略 +#### 4.2.5、对比 + +### 4.3、wait & notify + +### 4.4、getClass -## 常用方法解析 参考: * [java se 6 api](http://tool.oschina.net/apidocs/apidoc?api=jdk-zh) From 36f4f46dbdc450d0fe244d3613a7091a47139036 Mon Sep 17 00:00:00 2001 From: Tiancai ZANG Date: Tue, 20 Nov 2018 12:06:35 +0800 Subject: [PATCH 224/417] perfection object --- .../language/feature/string/StringDemo.java | 12 +- language-feature/src/site/markdown/object.md | 134 +++++++++++++++++- 2 files changed, 144 insertions(+), 2 deletions(-) diff --git a/language-feature/src/main/java/org/laidu/learn/language/feature/string/StringDemo.java b/language-feature/src/main/java/org/laidu/learn/language/feature/string/StringDemo.java index 9cabfe529..187bea050 100644 --- a/language-feature/src/main/java/org/laidu/learn/language/feature/string/StringDemo.java +++ b/language-feature/src/main/java/org/laidu/learn/language/feature/string/StringDemo.java @@ -13,6 +13,17 @@ public class StringDemo { public static void main(String[] args) { + String aa = "Aa"; + String bb = "BB"; + + // aa==bb : false + log.debug("aa==bb : {}", aa==bb); + + // aa.hashCode() == bb.hashCode() : true + log.debug("aa.hashCode() == bb.hashCode() : {}", aa.hashCode() == bb.hashCode()); + } + + public static void createString() { // 会在栈中创建一个对象引用变量str,然后查看字符串池中是否存在”XXX”,如果没有,则将”XXX”存放字符串池,并令引用变量str指向它;如果已经有”XXX”,则直接令str指向它 String s = "hello"; @@ -32,6 +43,5 @@ public static void main(String[] args) { System.out.println("s2\t" + System.identityHashCode(s2)); System.out.println("s.equals(s1) : " + s.equals(s1)); - } } \ No newline at end of file diff --git a/language-feature/src/site/markdown/object.md b/language-feature/src/site/markdown/object.md index a1fc69668..eed97304b 100644 --- a/language-feature/src/site/markdown/object.md +++ b/language-feature/src/site/markdown/object.md @@ -78,6 +78,8 @@ clone | 通过clone获取对象副本 | 通过native clone方法 > * 浅克隆 只克隆当前对象和引用对象的引用 > * 深克隆 克隆当前对象及其应用对象 +#### 4.1.3 关于原型模式 + ### 4.2、hashCode & equals java 源码: @@ -88,17 +90,147 @@ public native int hashCode(); ```c++ ``` #### 4.2.1、hash算法 +> 散列函数(英语:Hash function)又称散列算法、哈希函数,是一种从任何一种数据中创建小的数字“指纹”的方法。散列函数把消息或数据压缩 +成摘要,使得数据量变小,将数据的格式固定下来。该函数将数据打乱混合,重新创建一个叫做散列值(hash values,hash codes,hash sums, +或hashes)的指纹。散列值通常用一个短的随机字母和数字组成的字符串来代表。好的散列函数在输入域中很少出现散列冲突。在散列表和数据处理中, +不抑制冲突来区别数据,会使得数据库记录更难找到。 #### 4.2.2、hashCode方法的应用 +> Object中的hashCode主要用于构建哈希表,其中包含HashMap及其相关的数据结构中。 + #### 4.2.3、equals方法的应用 +> 主要用于比较两个对象是否“相等”。 + #### 4.2.4、默认的hashCode生成策略 -#### 4.2.5、对比 +```c +intptr_t ObjectSynchronizer::FastHashCode (Thread * Self, oop obj) { + if (UseBiasedLocking) { + // NOTE: many places throughout the JVM do not expect a safepoint + // to be taken here, in particular most operations on perm gen + // objects. However, we only ever bias Java instances and all of + // the call sites of identity_hash that might revoke biases have + // been checked to make sure they can handle a safepoint. The + // added check of the bias pattern is to avoid useless calls to + // thread-local storage. + if (obj->mark()->has_bias_pattern()) { + // Box and unbox the raw reference just in case we cause a STW safepoint. + Handle hobj (Self, obj) ; + // Relaxing assertion for bug 6320749. + assert (Universe::verify_in_progress() || + !SafepointSynchronize::is_at_safepoint(), + "biases should not be seen by VM thread here"); + BiasedLocking::revoke_and_rebias(hobj, false, JavaThread::current()); + obj = hobj() ; + assert(!obj->mark()->has_bias_pattern(), "biases should be revoked by now"); + } + } + + // hashCode() is a heap mutator ... + // Relaxing assertion for bug 6320749. + assert (Universe::verify_in_progress() || + !SafepointSynchronize::is_at_safepoint(), "invariant") ; + assert (Universe::verify_in_progress() || + Self->is_Java_thread() , "invariant") ; + assert (Universe::verify_in_progress() || + ((JavaThread *)Self)->thread_state() != _thread_blocked, "invariant") ; + + ObjectMonitor* monitor = NULL; + markOop temp, test; + intptr_t hash; + markOop mark = ReadStableMark (obj); + + // object should remain ineligible for biased locking + assert (!mark->has_bias_pattern(), "invariant") ; + + if (mark->is_neutral()) { + hash = mark->hash(); // this is a normal header + if (hash) { // if it has hash, just return it + return hash; + } + hash = get_next_hash(Self, obj); // allocate a new hash code + temp = mark->copy_set_hash(hash); // merge the hash code into header + // use (machine word version) atomic operation to install the hash + test = (markOop) Atomic::cmpxchg_ptr(temp, obj->mark_addr(), mark); + if (test == mark) { + return hash; + } + // If atomic operation failed, we must inflate the header + // into heavy weight monitor. We could add more code here + // for fast path, but it does not worth the complexity. + } else if (mark->has_monitor()) { + monitor = mark->monitor(); + temp = monitor->header(); + assert (temp->is_neutral(), "invariant") ; + hash = temp->hash(); + if (hash) { + return hash; + } + // Skip to the following code to reduce code size + } else if (Self->is_lock_owned((address)mark->locker())) { + temp = mark->displaced_mark_helper(); // this is a lightweight monitor owned + assert (temp->is_neutral(), "invariant") ; + hash = temp->hash(); // by current thread, check if the displaced + if (hash) { // header contains hash code + return hash; + } + // WARNING: + // The displaced header is strictly immutable. + // It can NOT be changed in ANY cases. So we have + // to inflate the header into heavyweight monitor + // even the current thread owns the lock. The reason + // is the BasicLock (stack slot) will be asynchronously + // read by other threads during the inflate() function. + // Any change to stack may not propagate to other threads + // correctly. + } + + // Inflate the monitor to set hash code + monitor = ObjectSynchronizer::inflate(Self, obj); + // Load displaced header and check it has hash code + mark = monitor->header(); + assert (mark->is_neutral(), "invariant") ; + hash = mark->hash(); + if (hash == 0) { + hash = get_next_hash(Self, obj); + temp = mark->copy_set_hash(hash); // merge hash code into header + assert (temp->is_neutral(), "invariant") ; + test = (markOop) Atomic::cmpxchg_ptr(temp, monitor, mark); + if (test != mark) { + // The only update to the header in the monitor (outside GC) + // is install the hash code. If someone add new usage of + // displaced header, please update this code + hash = test->hash(); + assert (test->is_neutral(), "invariant") ; + assert (hash != 0, "Trivial unexpected object/monitor header usage."); + } + } + // We finally get the hash + return hash; +} +``` + +#### 4.2.5、应用 +#### 4.2.6、常见的hashCode相同的字符串 + +> 字符串 "Aa"与"BB" hashCode相同 +``` + String aa = "Aa"; + String bb = "BB"; + + // aa==bb : false + log.debug("aa==bb : {}", aa==bb); + + // aa.hashCode() == bb.hashCode() : true + log.debug("aa.hashCode() == bb.hashCode() : {}", aa.hashCode() == bb.hashCode()); +``` ### 4.3、wait & notify + ### 4.4、getClass 参考: * [java se 6 api](http://tool.oschina.net/apidocs/apidoc?api=jdk-zh) * [java-se 11 Object](https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/lang/Object.html) +* [散列函數-中文维基](https://zh.wikipedia.org/wiki/%E6%95%A3%E5%88%97%E5%87%BD%E6%95%B8) \ No newline at end of file From 66bf319780fe1c1b9cf2673910f3172840e8cc6f Mon Sep 17 00:00:00 2001 From: Tiancai ZANG Date: Tue, 20 Nov 2018 14:38:18 +0800 Subject: [PATCH 225/417] add security module --- language-advance/pom.xml | 11 +++++++ language-advance/security/pom.xml | 23 ++++++++++++++ .../advance/security/demo/CipherDemo.java | 30 +++++++++++++++++++ .../learn/advance/security/package-info.java | 10 +++++++ 4 files changed, 74 insertions(+) create mode 100644 language-advance/security/pom.xml create mode 100644 language-advance/security/src/main/java/org/laidu/learn/advance/security/demo/CipherDemo.java create mode 100644 language-advance/security/src/main/java/org/laidu/learn/advance/security/package-info.java diff --git a/language-advance/pom.xml b/language-advance/pom.xml index 9202284bf..15dd72668 100644 --- a/language-advance/pom.xml +++ b/language-advance/pom.xml @@ -22,11 +22,13 @@ gui bytecode jni + security 1.9.1 3.2.9 + 1.60 @@ -49,7 +51,16 @@ ${aspectj.version} + + org.bouncycastle + bcprov-jdk15on + ${bouncycastle.version} + + + + + diff --git a/language-advance/security/pom.xml b/language-advance/security/pom.xml new file mode 100644 index 000000000..229d15b35 --- /dev/null +++ b/language-advance/security/pom.xml @@ -0,0 +1,23 @@ + + + + language-advance + org.laidu.learn + 1.0-SNAPSHOT + + 4.0.0 + + security + + + + org.bouncycastle + bcprov-jdk15on + 1.60 + + + + + \ No newline at end of file diff --git a/language-advance/security/src/main/java/org/laidu/learn/advance/security/demo/CipherDemo.java b/language-advance/security/src/main/java/org/laidu/learn/advance/security/demo/CipherDemo.java new file mode 100644 index 000000000..b373b37de --- /dev/null +++ b/language-advance/security/src/main/java/org/laidu/learn/advance/security/demo/CipherDemo.java @@ -0,0 +1,30 @@ +package org.laidu.learn.advance.security.demo; + +import lombok.extern.slf4j.Slf4j; +import org.bouncycastle.jce.provider.BouncyCastleProvider; + +import javax.crypto.Cipher; +import javax.crypto.spec.SecretKeySpec; +import java.security.Security; + +/** + * cipher 使用 + * + * @author tiancai.zang + * on 2018-11-20 13:44. + */ +@Slf4j +public class CipherDemo { + + public static void main(String[] args) throws Exception { + + Security.addProvider(new BouncyCastleProvider()); + + Cipher cipher = Cipher.getInstance("RSA/NONE/OAEPWithSHA1AndMGF1Padding","BC"); + cipher.init(Cipher.PUBLIC_KEY, new SecretKeySpec("AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA".getBytes("UTF-8"), "AES")); + + byte[] bytes = cipher.doFinal("nihao".getBytes()); + + + } +} \ No newline at end of file diff --git a/language-advance/security/src/main/java/org/laidu/learn/advance/security/package-info.java b/language-advance/security/src/main/java/org/laidu/learn/advance/security/package-info.java new file mode 100644 index 000000000..2057030ed --- /dev/null +++ b/language-advance/security/src/main/java/org/laidu/learn/advance/security/package-info.java @@ -0,0 +1,10 @@ +/** + * java 加解密 + *

                    + * Created by laidu + * on 2018-11-20 13:43. + * + * @author laidu + */ +// TODO: 2018-11-20 13:43 java 加解密 +package org.laidu.learn.advance.security; \ No newline at end of file From a7443adeb13a887ac390a7e6b6df84479403c475 Mon Sep 17 00:00:00 2001 From: ztc Date: Wed, 21 Nov 2018 23:20:50 +0800 Subject: [PATCH 226/417] add hashmap put test --- .../tool/spring/stopwatch/HashMapDemo.java | 56 +++++++++++++++++++ .../docker/image/openjdk-build/Dockerfile | 3 +- .../laidu/learn/wechat/robot/WxRobotApp.java | 1 + .../advance/security/demo/CipherDemo.java | 16 ++++-- 4 files changed, 70 insertions(+), 6 deletions(-) create mode 100644 convenient-util/spring-tool/src/main/java/org/laidu/learn/tool/spring/stopwatch/HashMapDemo.java diff --git a/convenient-util/spring-tool/src/main/java/org/laidu/learn/tool/spring/stopwatch/HashMapDemo.java b/convenient-util/spring-tool/src/main/java/org/laidu/learn/tool/spring/stopwatch/HashMapDemo.java new file mode 100644 index 000000000..bda340c44 --- /dev/null +++ b/convenient-util/spring-tool/src/main/java/org/laidu/learn/tool/spring/stopwatch/HashMapDemo.java @@ -0,0 +1,56 @@ +package org.laidu.learn.tool.spring.stopwatch; + +import lombok.extern.slf4j.Slf4j; +import org.laidu.learn.tool.spring.stopwatch.source.StopWatch; + +import java.util.HashMap; +import java.util.Map; + +/** + * Created by tiancai.zang + * on 2018-11-21 23:02. + */ +@Slf4j +public class HashMapDemo { + + public static void main(String[] args) { + + for (int i = 0; i < 1000; i++) { + test(); + } + + } + + private static void test() { + + Object o = new Object(); + Map map1 = new HashMap<>(100000); + Map map2 = new HashMap<>(10000000); + + StopWatch s1 = new StopWatch(); + StopWatch s2 = new StopWatch(); + s1.start(); + Long temp = 0L; + for (int i = 0; i < 100_000_000; i++) { +// map1.put(i,o); + temp++; + } + s1.stop(); + System.out.println(map1.size()); + + System.out.println(temp); + temp=0L; + s2.start(); + for (int i = 0; i < 1_000_000_000; i++) { +// map2.put(i,o); + temp++; + + } + s2.stop(); + System.out.println(temp); + System.out.println(map2.size()); + + System.out.println(String.format("s1 : %s , s2 %s :",s1.getTotalTimeMillis(),s2.getTotalTimeMillis())+s2.getTotalTimeMillis()*1.0/s1.getTotalTimeMillis()); + } + +} \ No newline at end of file diff --git a/dev-ops/src/main/resources/docker/image/openjdk-build/Dockerfile b/dev-ops/src/main/resources/docker/image/openjdk-build/Dockerfile index dffa05dcd..d093dc5af 100644 --- a/dev-ops/src/main/resources/docker/image/openjdk-build/Dockerfile +++ b/dev-ops/src/main/resources/docker/image/openjdk-build/Dockerfile @@ -15,8 +15,7 @@ MAINTAINER laidu laidu823@gmail.com RUN yum -y update; yum clean all RUN yum -y install openssh-server passwd; yum clean all RUN yum -y groupinstall "Development Tools"; yum clean all -RUN yum -y install which libXtst-devel libXt-devel libXrender-devel \ - cups-devel freetype-devel alsa-lib-devel; yum clean all +RUN yum -y install which libXtst-devel libXt-devel libXrender-devel cups-devel freetype-devel alsa-lib-devel; yum clean all RUN yum -y install java-1.7.0-openjdk-devel; yum clean all ENTRYPOINT ["/usr/sbin/sshd", "-D"] \ No newline at end of file diff --git a/framework/thirdparty/wechat/wechat-robot/src/main/java/org/laidu/learn/wechat/robot/WxRobotApp.java b/framework/thirdparty/wechat/wechat-robot/src/main/java/org/laidu/learn/wechat/robot/WxRobotApp.java index 6e9eb8d46..f6a47b4d7 100644 --- a/framework/thirdparty/wechat/wechat-robot/src/main/java/org/laidu/learn/wechat/robot/WxRobotApp.java +++ b/framework/thirdparty/wechat/wechat-robot/src/main/java/org/laidu/learn/wechat/robot/WxRobotApp.java @@ -19,6 +19,7 @@ public class WxRobotApp extends WeChatBot { public WxRobotApp(Config config) { super(config); + config.assetsDir(""); } @Bind(msgType = MsgType.TEXT) diff --git a/language-advance/security/src/main/java/org/laidu/learn/advance/security/demo/CipherDemo.java b/language-advance/security/src/main/java/org/laidu/learn/advance/security/demo/CipherDemo.java index b373b37de..a124ee589 100644 --- a/language-advance/security/src/main/java/org/laidu/learn/advance/security/demo/CipherDemo.java +++ b/language-advance/security/src/main/java/org/laidu/learn/advance/security/demo/CipherDemo.java @@ -4,8 +4,11 @@ import org.bouncycastle.jce.provider.BouncyCastleProvider; import javax.crypto.Cipher; -import javax.crypto.spec.SecretKeySpec; +import java.math.BigInteger; +import java.security.KeyFactory; +import java.security.PublicKey; import java.security.Security; +import java.security.spec.RSAPublicKeySpec; /** * cipher 使用 @@ -19,11 +22,16 @@ public class CipherDemo { public static void main(String[] args) throws Exception { Security.addProvider(new BouncyCastleProvider()); + KeyFactory keyFactory = KeyFactory.getInstance("RSA"); - Cipher cipher = Cipher.getInstance("RSA/NONE/OAEPWithSHA1AndMGF1Padding","BC"); - cipher.init(Cipher.PUBLIC_KEY, new SecretKeySpec("AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA".getBytes("UTF-8"), "AES")); + Cipher cipher = Cipher.getInstance("RSA/NONE/OAEPWithSHA1AndMGF1Padding"); - byte[] bytes = cipher.doFinal("nihao".getBytes()); + RSAPublicKeySpec publicKeySpec = new RSAPublicKeySpec(new BigInteger("65537"), new BigInteger("106882600647480514425203993707237979118872422951401375908983282906487692723410215442759547605803056576906218497184092858227835965536513358181249995214218936822735364017932094056653315972781647444937415684970985863266111417822863732480922077774932449773468399591710215272309257361400091066747899303034932341649")); + + PublicKey publicKey = keyFactory.generatePublic(publicKeySpec); + cipher.init(Cipher.ENCRYPT_MODE,publicKey); + + byte[] bytes = cipher.doFinal("n".getBytes()); } From 7578193a5e21ec860824de62d67159ed70c11b1f Mon Sep 17 00:00:00 2001 From: Tiancai ZANG Date: Thu, 22 Nov 2018 20:48:01 +0800 Subject: [PATCH 227/417] sync --- .../language/feature/collection/ListDemo.java | 25 ++++++++++--------- 1 file changed, 13 insertions(+), 12 deletions(-) diff --git a/language-feature/src/main/java/org/laidu/learn/language/feature/collection/ListDemo.java b/language-feature/src/main/java/org/laidu/learn/language/feature/collection/ListDemo.java index 9cd96e7f7..1f2f0ac29 100644 --- a/language-feature/src/main/java/org/laidu/learn/language/feature/collection/ListDemo.java +++ b/language-feature/src/main/java/org/laidu/learn/language/feature/collection/ListDemo.java @@ -2,9 +2,8 @@ import lombok.extern.slf4j.Slf4j; -import java.util.ArrayList; +import java.util.Arrays; import java.util.List; -import java.util.stream.IntStream; /** * list learn @@ -21,18 +20,20 @@ public static void main(String[] args) { int initSize = 8; - List list = new ArrayList<>(initSize); + List list = Arrays.asList(11,2,3,4,5,1,58); - IntStream.range(0,99999).boxed() - .forEach(e -> { +// IntStream.range(0,99999).boxed() +// .forEach(e -> { +// +// try { +// Thread.sleep(500); +// } catch (InterruptedException e1) { +// } +// +// list.add(e); +// }); - try { - Thread.sleep(500); - } catch (InterruptedException e1) { - } - - list.add(e); - }); + list.stream().forEach(System.out::print); } From 69d32df4cda1ed37b0c5e80ebf4c5aa0503a5adb Mon Sep 17 00:00:00 2001 From: ztc Date: Mon, 26 Nov 2018 00:19:53 +0800 Subject: [PATCH 228/417] add wechat robot --- .../date/structure/tree/avl/AvlTreeDemo.java | 28 + .../{BtreeBuild.java => TreeBuild.java} | 2 +- .../org/laidu/learn/wechat/robot/WxBot.java | 586 ++++++++++++++++++ .../laidu/learn/wechat/robot/WxRobotApp.java | 15 +- .../concurrent/pool/ForkJoinPoolDemo.java | 67 ++ .../pool/ScheduleThreadPoolExecutorDemo.java | 18 + .../pool/ThreadPoolExecutorDemo.java | 49 ++ .../concurrent/pool/ForkJoinPoolDemoTest.java | 7 + 8 files changed, 769 insertions(+), 3 deletions(-) create mode 100644 data-structure/src/main/java/org/laidu/learn/date/structure/tree/avl/AvlTreeDemo.java rename data-structure/src/main/java/org/laidu/learn/date/structure/tree/binarytree/{BtreeBuild.java => TreeBuild.java} (97%) create mode 100644 framework/thirdparty/wechat/wechat-robot/src/main/java/org/laidu/learn/wechat/robot/WxBot.java create mode 100644 language-advance/concurrent/src/main/java/org/laidu/learn/concurrent/pool/ForkJoinPoolDemo.java create mode 100644 language-advance/concurrent/src/main/java/org/laidu/learn/concurrent/pool/ScheduleThreadPoolExecutorDemo.java create mode 100644 language-advance/concurrent/src/main/java/org/laidu/learn/concurrent/pool/ThreadPoolExecutorDemo.java create mode 100644 language-advance/concurrent/src/test/java/org/laidu/learn/concurrent/pool/ForkJoinPoolDemoTest.java diff --git a/data-structure/src/main/java/org/laidu/learn/date/structure/tree/avl/AvlTreeDemo.java b/data-structure/src/main/java/org/laidu/learn/date/structure/tree/avl/AvlTreeDemo.java new file mode 100644 index 000000000..72f64bc8a --- /dev/null +++ b/data-structure/src/main/java/org/laidu/learn/date/structure/tree/avl/AvlTreeDemo.java @@ -0,0 +1,28 @@ +package org.laidu.learn.date.structure.tree.avl; + +import lombok.extern.slf4j.Slf4j; + +/** + * avl 树 + * 定义: + * + * + * 以下摘自 维基百科:https://zh.wikipedia.org/wiki/AVL%E6%A0%91 + * 类型 树 + * 发明时间 1962 + * 发明者 格奥尔吉·阿杰尔松-韦利斯基及E. M. Landis + * 大O符号的时间复杂度 + * 算法 平均 最差 + * 空间 O(n) O(n) + * 搜索 O(log n) O(log n) + * 插入 O(log n) O(log n) + * 删除 O(log n) O(log n) + * + * Created by tiancai.zang + * on 2018-04-03 23:33. + * @author laidu + */ +@Slf4j +public class AvlTreeDemo { + +} \ No newline at end of file diff --git a/data-structure/src/main/java/org/laidu/learn/date/structure/tree/binarytree/BtreeBuild.java b/data-structure/src/main/java/org/laidu/learn/date/structure/tree/binarytree/TreeBuild.java similarity index 97% rename from data-structure/src/main/java/org/laidu/learn/date/structure/tree/binarytree/BtreeBuild.java rename to data-structure/src/main/java/org/laidu/learn/date/structure/tree/binarytree/TreeBuild.java index e51a8def4..38dfcff75 100644 --- a/data-structure/src/main/java/org/laidu/learn/date/structure/tree/binarytree/BtreeBuild.java +++ b/data-structure/src/main/java/org/laidu/learn/date/structure/tree/binarytree/TreeBuild.java @@ -10,7 +10,7 @@ * @author laidu */ @Slf4j -public class BtreeBuild { +public class TreeBuild { private static int count = 0; private static final String TREETOP = "#"; diff --git a/framework/thirdparty/wechat/wechat-robot/src/main/java/org/laidu/learn/wechat/robot/WxBot.java b/framework/thirdparty/wechat/wechat-robot/src/main/java/org/laidu/learn/wechat/robot/WxBot.java new file mode 100644 index 000000000..e8e0c3045 --- /dev/null +++ b/framework/thirdparty/wechat/wechat-robot/src/main/java/org/laidu/learn/wechat/robot/WxBot.java @@ -0,0 +1,586 @@ +package org.laidu.learn.wechat.robot; + +import com.google.gson.JsonArray; +import com.google.gson.JsonObject; +import com.google.gson.JsonParser; +import org.apache.http.HttpEntity; +import org.apache.http.HttpStatus; +import org.apache.http.NameValuePair; +import org.apache.http.client.methods.CloseableHttpResponse; +import org.apache.http.client.methods.HttpGet; +import org.apache.http.client.methods.HttpPost; +import org.apache.http.client.utils.URIBuilder; +import org.apache.http.conn.ssl.SSLConnectionSocketFactory; +import org.apache.http.entity.ContentType; +import org.apache.http.entity.StringEntity; +import org.apache.http.impl.client.CloseableHttpClient; +import org.apache.http.impl.client.HttpClients; +import org.apache.http.message.BasicNameValuePair; +import org.apache.http.util.EntityUtils; +import org.apache.http.util.TextUtils; + +import javax.net.ssl.SSLContext; +import java.awt.*; +import java.io.File; +import java.io.FileOutputStream; +import java.io.IOException; +import java.io.InputStream; +import java.net.URI; +import java.security.NoSuchAlgorithmException; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.List; +import java.util.Random; +import java.util.regex.Matcher; +import java.util.regex.Pattern; + +public class WxBot { + + private CloseableHttpClient httpClient; + private File qrCodeFile = new File("qrcode.jpeg"); + + private String uuid; + private String redirectUri; + private String baseUrl; + private String skey; + private String wxsid; + private String wxuin; + private String passTicket; + private String deviceId; + private String userName; + private int retcode; + private int selector; + + private JsonParser jsonParser = new JsonParser(); + private JsonObject syncKeyJsonObject; + // 特殊账号 + private List specialUsers = Arrays.asList("newsapp", "fmessage", "filehelper", "weibo", "qqmail", + "fmessage", "tmessage", "qmessage", "qqsync", "floatbottle", "lbsapp", "shakeapp", "medianote", "qqfriend", + "readerapp", "blogapp", "facebookapp", "masssendapp", "meishiapp", "feedsapp", "voip", "blogappweixin", + "weixin", "brandsessionholder", "weixinreminder", "wxid_novlwrv3lqwv11", "gh_22b87fa7cb3c", + "officialaccounts", "notification_messages", "wxid_novlwrv3lqwv11", "gh_22b87fa7cb3c", "wxitil", + "userexperience_alarm", "notification_messages"); + + public WxBot() { + System.setProperty("jsse.enableSNIExtension", "false"); + System.setProperty("https.protocols", "TLSv1"); + + try { + SSLConnectionSocketFactory sslsf = new SSLConnectionSocketFactory(SSLContext.getDefault(), + new String[] { "TLSv1" }, null, SSLConnectionSocketFactory.getDefaultHostnameVerifier()); + httpClient = HttpClients.custom().setSSLSocketFactory(sslsf).build(); + } catch (NoSuchAlgorithmException e) { + e.printStackTrace(); + } + } + + public void start() { + this.getUuid();// 获取uuid + if (!TextUtils.isBlank(uuid)) { + this.downQrCode();// 下载二维码图片 + this.showQrCode();// 显示二维码图片 + } + this.login();// 登录操作 + if (!TextUtils.isBlank(redirectUri)) {// 跳转到登录后页面 + this.wxNewLoginPage(); + } + if (!TextUtils.isBlank(skey)) {// 初始化微信 + this.wxInit(); + } + if (syncKeyJsonObject != null) {// 开启微信状态通知 + this.wxStatusNotify(); + this.listenMsg(); + } + } + + private void getUuid() { + String url = "https://login.weixin.qq.com/jslogin"; + CloseableHttpResponse response = null; + try { + List list = new ArrayList(); + list.add(new BasicNameValuePair("appid", "wx782c26e4c19acffb")); + list.add(new BasicNameValuePair("fun", "new")); + list.add(new BasicNameValuePair("lang", "zh_CN")); + list.add(new BasicNameValuePair("_", Long.toString(System.currentTimeMillis()))); + + URIBuilder urlBuilder = new URIBuilder(); + urlBuilder.setPath(url); + urlBuilder.setParameters(list); + URI uri = urlBuilder.build(); + + HttpGet httpGet = new HttpGet(uri); + System.out.println("获取uuid"); + System.out.println(httpGet.getRequestLine()); + response = httpClient.execute(httpGet); + int statusCode = response.getStatusLine().getStatusCode(); + if (statusCode == HttpStatus.SC_OK) { + HttpEntity entity = response.getEntity(); + String responseContent = EntityUtils.toString(entity, "UTF-8"); + System.out.println(responseContent); + if (!TextUtils.isBlank(responseContent)) { + String code = this.findStr("window.QRLogin.code = (\\d+);", responseContent); + if (!TextUtils.isEmpty(code) && code.equals("200")) { + this.uuid = this.findStr("window.QRLogin.uuid = \"(.*)\";", responseContent); + } + } + } + } catch (Exception e) { + e.printStackTrace(); + } finally { + try { + response.close(); + } catch (IOException e) { + e.printStackTrace(); + } + } + } + + private void downQrCode() { + String url = "https://login.weixin.qq.com/qrcode/" + this.uuid; + CloseableHttpResponse response = null; + try { + HttpGet httpGet = new HttpGet(url); + System.out.println("下载二维码图片"); + System.out.println(httpGet.getRequestLine()); + response = httpClient.execute(httpGet); + int statusCode = response.getStatusLine().getStatusCode(); + if (statusCode == HttpStatus.SC_OK) { + HttpEntity entity = response.getEntity(); + InputStream is = entity.getContent(); + FileOutputStream fos = new FileOutputStream(qrCodeFile); + int l = -1; + byte[] b = new byte[1024]; + while ((l = is.read(b)) != -1) { + fos.write(b, 0, l); + } + fos.close(); + } + } catch (Exception e) { + e.printStackTrace(); + } finally { + try { + response.close(); + } catch (IOException e) { + e.printStackTrace(); + } + } + } + + private void showQrCode() { + try { + if (Desktop.isDesktopSupported()) { + Desktop desktop = Desktop.getDesktop(); + if (desktop.isSupported(Desktop.Action.BROWSE)) { + desktop.browse(qrCodeFile.toURI()); + } + } + } catch (IOException e) { + e.printStackTrace(); + } + } + + private void login() { + String tip = "1";// 首次时为1 + long currentTimeMillis = System.currentTimeMillis();// 首次时为系统时间,之后每次请求加1 + while (!this.checkLogin(tip, currentTimeMillis)) { + tip = "0"; + currentTimeMillis++; + try { + Thread.sleep(1000); + } catch (InterruptedException e) { + e.printStackTrace(); + } + } + } + + private boolean checkLogin(String tip, long currentTimeMillis) { + String url = "https://login.wx.qq.com/cgi-bin/mmwebwx-bin/login"; + CloseableHttpResponse response = null; + try { + List list = new ArrayList(); + list.add(new BasicNameValuePair("loginicon", "true")); + list.add(new BasicNameValuePair("uuid", this.uuid)); + list.add(new BasicNameValuePair("tip", tip)); + list.add(new BasicNameValuePair("r", this.r())); + list.add(new BasicNameValuePair("_", Long.toString(currentTimeMillis))); + + URIBuilder urlBuilder = new URIBuilder(); + urlBuilder.setPath(url); + urlBuilder.setParameters(list); + URI uri = urlBuilder.build(); + + HttpGet httpGet = new HttpGet(uri); + System.out.println("检测登录"); + System.out.println(httpGet.getRequestLine()); + response = httpClient.execute(httpGet); + int statusCode = response.getStatusLine().getStatusCode(); + if (statusCode == HttpStatus.SC_OK) { + HttpEntity entity = response.getEntity(); + String responseContent = EntityUtils.toString(entity, "UTF-8"); + System.out.println(responseContent); + if (!TextUtils.isBlank(responseContent)) { + String code = this.findStr("window.code=(\\d+);", responseContent); + if (TextUtils.isEmpty(code)) { + + } else if (code.equals("200")) {// 点击登录后执行 + redirectUri = this.findStr("window.redirect_uri=\"(\\S+?)\";", responseContent); + baseUrl = redirectUri.substring(0, redirectUri.lastIndexOf("/")); + System.out.println("登录成功"); + return true; + } else if (code.equals("201")) {// 扫描成功,还未点击登录 + System.out.println("扫描成功,请点击登录"); + } else if (code.equals("408")) {// 二维码未扫描,登录超时 + + } + } + } + } catch (Exception e) { + e.printStackTrace(); + } finally { + try { + response.close(); + } catch (IOException e) { + e.printStackTrace(); + } + } + return false; + } + + private void wxNewLoginPage() { + CloseableHttpResponse response = null; + try { + HttpGet httpGet = new HttpGet(redirectUri + "&fun=new&version=v2"); + System.out.println("跳转到新的登录页面"); + System.out.println(httpGet.getRequestLine()); + response = httpClient.execute(httpGet); + int statusCode = response.getStatusLine().getStatusCode(); + if (statusCode == HttpStatus.SC_OK) { + HttpEntity entity = response.getEntity(); + String responseContent = EntityUtils.toString(entity, "UTF-8"); + System.out.println(responseContent); + + skey = this.findStr("(\\S+)", responseContent); + wxsid = this.findStr("(\\S+)", responseContent); + wxuin = this.findStr("(\\S+)", responseContent); + passTicket = this.findStr("(\\S+)", responseContent); + + // List cookies = cookieStore.getCookies(); + // if (cookies.isEmpty()) { + // System.out.println("获取Cookie失败"); + // } else { + // System.out.println("获取并保存Cookie"); + // for (int i = 0; i < cookies.size(); i++) { + // System.out.println(cookies.get(i).toString()); + // } + // } + } + } catch (Exception e) { + e.printStackTrace(); + } finally { + try { + response.close(); + } catch (IOException e) { + e.printStackTrace(); + } + } + } + + private void wxInit() { + String url = baseUrl + "/webwxinit"; + CloseableHttpResponse response = null; + try { + List list = new ArrayList(); + list.add(new BasicNameValuePair("r", this.r())); + list.add(new BasicNameValuePair("lang", "zh_CN")); + list.add(new BasicNameValuePair("pass_ticket", passTicket)); + + URIBuilder urlBuilder = new URIBuilder(); + urlBuilder.setPath(url); + urlBuilder.setParameters(list); + URI uri = urlBuilder.build(); + + deviceId = "e" + System.currentTimeMillis() + wxuin.substring(0, 2);// 生成15位随机数 + String json = "{\"BaseRequest\":{\"Uin\":\"" + wxuin + "\",\"Sid\":\"" + wxsid + "\"," + "\"Skey\":\"" + + skey + "\",\"DeviceID\":\"" + deviceId + "\"}}"; + StringEntity stringEntity = new StringEntity(json, ContentType.APPLICATION_JSON); + + HttpPost httpPost = new HttpPost(uri); + httpPost.setEntity(stringEntity); + System.out.println("微信初始化"); + System.out.println(httpPost.getRequestLine()); + response = httpClient.execute(httpPost); + int statusCode = response.getStatusLine().getStatusCode(); + if (statusCode == HttpStatus.SC_OK) { + HttpEntity entity = response.getEntity(); + String responseContent = EntityUtils.toString(entity, "UTF-8"); + JsonObject jsonObject = jsonParser.parse(responseContent).getAsJsonObject(); + syncKeyJsonObject = jsonObject.getAsJsonObject("SyncKey"); + System.out.println(syncKeyJsonObject); + userName = jsonObject.getAsJsonObject("User").get("UserName").getAsString(); + } + } catch (Exception e) { + e.printStackTrace(); + } finally { + try { + response.close(); + } catch (IOException e) { + e.printStackTrace(); + } + } + } + + private void wxStatusNotify() { + String url = baseUrl + "/webwxstatusnotify"; + CloseableHttpResponse response = null; + try { + String json = "{\"BaseRequest\":{\"Uin\":\"" + wxuin + "\",\"Sid\":\"" + wxsid + "\"," + "\"Skey\":\"" + + skey + "\",\"DeviceID\":\"" + deviceId + "\"},\"Code\":3," + "\"FromUserName\":" + userName + + ",\"ToUserName\":" + userName + ",\"ClientMsgId\":" + + System.currentTimeMillis() + "}"; + StringEntity stringEntity = new StringEntity(json, ContentType.APPLICATION_JSON); + + HttpPost httpPost = new HttpPost(url); + httpPost.setEntity(stringEntity); + System.out.println("开始微信状态通知"); + System.out.println(httpPost.getRequestLine()); + response = httpClient.execute(httpPost); + int statusCode = response.getStatusLine().getStatusCode(); + if (statusCode == HttpStatus.SC_OK) { + HttpEntity entity = response.getEntity(); + String responseContent = EntityUtils.toString(entity, "UTF-8"); + JsonObject jsonObject = jsonParser.parse(responseContent).getAsJsonObject(); + int ret = jsonObject.getAsJsonObject("BaseResponse").get("Ret").getAsInt(); + if(ret == 0){ + System.out.println("开始微信状态通知: 成功"); + } + } + } catch (Exception e) { + e.printStackTrace(); + } finally { + try { + response.close(); + } catch (IOException e) { + e.printStackTrace(); + } + } + } + + private void syncCheck() { + String url = "https://webpush." + baseUrl.substring(8, baseUrl.length()) + "/synccheck"; + CloseableHttpResponse response = null; + try { + List list = new ArrayList(); + list.add(new BasicNameValuePair("r", this.r())); + list.add(new BasicNameValuePair("skey", skey)); + list.add(new BasicNameValuePair("sid", wxsid)); + list.add(new BasicNameValuePair("uin", wxuin)); + list.add(new BasicNameValuePair("deviceid", deviceId)); + list.add(new BasicNameValuePair("synckey", this.getSyncKeyStr())); + list.add(new BasicNameValuePair("_", Long.toString(System.currentTimeMillis()))); + + URIBuilder urlBuilder = new URIBuilder(); + urlBuilder.setPath(url); + urlBuilder.setParameters(list); + URI uri = urlBuilder.build(); + + HttpGet httpGet = new HttpGet(uri); + System.out.println("消息检查"); + System.out.println(httpGet.getRequestLine()); + response = httpClient.execute(httpGet); + int statusCode = response.getStatusLine().getStatusCode(); + if (statusCode == HttpStatus.SC_OK) { + HttpEntity entity = response.getEntity(); + String responseContent = EntityUtils.toString(entity, "UTF-8"); + System.out.println(responseContent); + if (!TextUtils.isBlank(responseContent)) { + String retcodeStr = this.findStr("retcode:\"(\\d+)\"", responseContent); + String selectorStr = this.findStr("selector:\"(\\d+)\"}", responseContent); + if (!TextUtils.isBlank(retcodeStr) && !TextUtils.isBlank(selectorStr)) { + retcode = Integer.valueOf(retcodeStr); + selector = Integer.valueOf(selectorStr); + } + } + } + } catch (Exception e) { + e.printStackTrace(); + } finally { + try { + response.close(); + } catch (IOException e) { + e.printStackTrace(); + } + } + } + + private void listenMsg() { + while (true) { + this.syncCheck(); + if (retcode == 0) { + if (selector == 0) {// 0为正常 + try { + Thread.sleep(100); + } catch (InterruptedException e) { + e.printStackTrace(); + } + } else if (selector == 2) {// 新消息 + this.wxSync(); + } else if (selector == 6) { + + } else if (selector == 7) { + + } + + } else if (retcode == 1100) {// 1100暂不处理,再请求一次同步 + System.out.println(1100); + } + } + } + + private void wxSync() { + String url = baseUrl + "/webwxsync"; + CloseableHttpResponse response = null; + try { + List list = new ArrayList(); + list.add(new BasicNameValuePair("sid", wxsid)); + list.add(new BasicNameValuePair("skey", skey)); + + URIBuilder urlBuilder = new URIBuilder(); + urlBuilder.setPath(url); + urlBuilder.setParameters(list); + URI uri = urlBuilder.build(); + + String json = "{\"BaseRequest\":{\"Uin\":\"" + wxuin + "\",\"Sid\":\"" + wxsid + "\",\"Skey\":\"" + + skey + "\",\"DeviceID\":\"" + deviceId + "\"},\"SyncKey\":" + syncKeyJsonObject.toString() + + ",\"rr\":" + this.r() + "}"; + StringEntity stringEntity = new StringEntity(json, ContentType.APPLICATION_JSON); + + HttpPost httpPost = new HttpPost(uri); + httpPost.setEntity(stringEntity); + System.out.println("获取最新消息"); + System.out.println(httpPost.getRequestLine()); + response = httpClient.execute(httpPost); + int statusCode = response.getStatusLine().getStatusCode(); + if (statusCode == HttpStatus.SC_OK) { + HttpEntity entity = response.getEntity(); + String responseContent = EntityUtils.toString(entity, "UTF-8"); + // System.out.println(responseContent); + if (!TextUtils.isBlank(responseContent)) { + JsonObject jsonObject = jsonParser.parse(responseContent).getAsJsonObject(); + syncKeyJsonObject = jsonObject.getAsJsonObject("SyncKey"); + JsonArray jsonArray = jsonObject.getAsJsonArray("AddMsgList"); + for (int i = 0; i < jsonArray.size(); i++) { + JsonObject obj = (JsonObject) jsonArray.get(i); + int msgType = obj.get("MsgType").getAsInt(); + String fromUserName = obj.get("FromUserName").getAsString(); + String toUserName = obj.get("ToUserName").getAsString(); + if (msgType == 1) {// 普通消息 + if (specialUsers.contains(toUserName)) {// 如果是特殊账号 + continue; + } + if (toUserName.indexOf("@@") != -1) {// 群消息 + continue; + } + if (toUserName.equals(userName)) {// 必须是发给我的,我才回复 + String msg = this.getMsg(fromUserName, obj.get("Content").getAsString()); + this.wxSendMsg(fromUserName, msg); + } + + } else if (msgType == 3) {// 图片 + + } else if (msgType == 34) {// 语音 + + } else if (msgType == 42) {// 名片 + + } else if (msgType == 51) {// 微信初始化消息 + + } + } + } + } + } catch (Exception e) { + e.printStackTrace(); + } finally { + try { + response.close(); + } catch (IOException e) { + e.printStackTrace(); + } + } + } + + public void wxSendMsg(String toUserName, String msg) { + if (TextUtils.isBlank(toUserName) || TextUtils.isBlank(msg)) { + return; + } + String url = baseUrl + "/webwxsendmsg"; + CloseableHttpResponse response = null; + try { + String randomId = String.valueOf(System.currentTimeMillis()); + Random random = new Random(); + for (int i = 0; i < 4; i++) { + randomId += random.nextInt(10); + } + String json = "{\"BaseRequest\":{\"Uin\":\"" + wxuin + "\",\"Sid\":\"" + wxsid + "\"," + "\"Skey\":\"" + + skey + "\",\"DeviceID\":\"" + deviceId + "\"},\"Msg\":{\"Type\":1,\"Content\":\"" + msg + + "\",\"FromUserName\":\"" + userName + "\",\"ToUserName\":\"" + toUserName + "\",\"LocalID\":\"" + + randomId + "\",\"ClientMsgId\":\"" + randomId + "\"},\"Scene\":0}"; + StringEntity stringEntity = new StringEntity(json, ContentType.APPLICATION_JSON); + HttpPost httpPost = new HttpPost(url); + httpPost.setEntity(stringEntity); + // System.out.println("发送消息:" + msg); + System.out.println(httpPost.getRequestLine()); + response = httpClient.execute(httpPost); + int statusCode = response.getStatusLine().getStatusCode(); + if (statusCode == HttpStatus.SC_OK) { + // HttpEntity entity = response.getEntity(); + // String responseContent = EntityUtils.toString(entity, "UTF-8"); + // System.out.println(responseContent); + System.out.println("发送成功"); + } + } catch (Exception e) { + e.printStackTrace(); + } finally { + try { + response.close(); + } catch (IOException e) { + e.printStackTrace(); + } + } + } + + // 如果有需要发送的消息,重写此方法 + private String getMsg(String fromUserName, String content) { + + return null; + } + + private String findStr(String regex, String str) { + Matcher matcher = Pattern.compile(regex).matcher(str); + if (matcher.find()) { + return matcher.group(1); + } + return null; + } + + private String r() { + return Integer.toString(~((int) System.currentTimeMillis()));// 转换成int后取反,因为js位运算只支持32位 + } + + private String getSyncKeyStr() { + String syncKeyTmp = ""; + JsonArray jsonArray = syncKeyJsonObject.getAsJsonArray("List"); + for (int i = 0; i < jsonArray.size(); i++) { + JsonObject obj = (JsonObject) jsonArray.get(i); + syncKeyTmp += obj.get("Key") + "_" + obj.get("Val") + "|"; + } + if (syncKeyTmp.length() > 0) { + syncKeyTmp = syncKeyTmp.substring(0, syncKeyTmp.length() - 1); + } + return syncKeyTmp; + } + + public static void main(String[] args) { + new WxBot().start(); + } + +} diff --git a/framework/thirdparty/wechat/wechat-robot/src/main/java/org/laidu/learn/wechat/robot/WxRobotApp.java b/framework/thirdparty/wechat/wechat-robot/src/main/java/org/laidu/learn/wechat/robot/WxRobotApp.java index f6a47b4d7..21a2f64d4 100644 --- a/framework/thirdparty/wechat/wechat-robot/src/main/java/org/laidu/learn/wechat/robot/WxRobotApp.java +++ b/framework/thirdparty/wechat/wechat-robot/src/main/java/org/laidu/learn/wechat/robot/WxRobotApp.java @@ -19,7 +19,6 @@ public class WxRobotApp extends WeChatBot { public WxRobotApp(Config config) { super(config); - config.assetsDir(""); } @Bind(msgType = MsgType.TEXT) @@ -31,7 +30,19 @@ public void handleText(WeChatMessage message) { } public static void main(String[] args) { - new WxRobotApp(Config.me().autoLogin(true).showTerminal(true)).start(); + + String assetDir = System.getProperty("user.home")+"/.wechat/"; + WxRobotApp robotApp = new WxRobotApp(Config.me() + .autoLogin(true) + .showTerminal(true) + .autoReply(true) + .assetsDir(assetDir)); + + robotApp.start(); + + robotApp.sendMsgByName("",""); + + } } \ No newline at end of file diff --git a/language-advance/concurrent/src/main/java/org/laidu/learn/concurrent/pool/ForkJoinPoolDemo.java b/language-advance/concurrent/src/main/java/org/laidu/learn/concurrent/pool/ForkJoinPoolDemo.java new file mode 100644 index 000000000..d899f2ff5 --- /dev/null +++ b/language-advance/concurrent/src/main/java/org/laidu/learn/concurrent/pool/ForkJoinPoolDemo.java @@ -0,0 +1,67 @@ +package org.laidu.learn.concurrent.pool; + +import lombok.extern.slf4j.Slf4j; + +import java.util.concurrent.ExecutionException; +import java.util.concurrent.ForkJoinPool; +import java.util.concurrent.Future; +import java.util.concurrent.RecursiveTask; + +/** + * FJPool 示例 + * 1+2+3+....+100 求和 + *

                    + * Created by tiancai.zang + * on 2018-11-25 10:45. + */ +@Slf4j +public class ForkJoinPoolDemo { + + public static void main(String[] args) throws ExecutionException, InterruptedException { + + ForkJoinPool fjPoll = new ForkJoinPool(); + + Future task = fjPoll.submit(new MyFjTask(1, 10000)); + + Integer integer = task.get(); + System.out.println(integer); + + + } + + public static class MyFjTask extends RecursiveTask { + + private int begin; + private int end; + private final static int THRESHOLD = 2; + + public MyFjTask(int begin, int end) { + this.begin = begin; + this.end = end; + } + + + @Override + protected Integer compute() { + + int sum = 0; + if (end - begin < THRESHOLD) { + for(int i = begin; i <= end; i++) { + sum += i; + } + }else { + + int mid = (end+begin) >>> 1; + + MyFjTask leftTask = new MyFjTask(begin, mid); + MyFjTask rightTask = new MyFjTask(mid+1, end); + + invokeAll(leftTask,rightTask); + + sum = leftTask.join() + rightTask.join(); + } + + return sum; + } + } +} \ No newline at end of file diff --git a/language-advance/concurrent/src/main/java/org/laidu/learn/concurrent/pool/ScheduleThreadPoolExecutorDemo.java b/language-advance/concurrent/src/main/java/org/laidu/learn/concurrent/pool/ScheduleThreadPoolExecutorDemo.java new file mode 100644 index 000000000..1022568eb --- /dev/null +++ b/language-advance/concurrent/src/main/java/org/laidu/learn/concurrent/pool/ScheduleThreadPoolExecutorDemo.java @@ -0,0 +1,18 @@ +package org.laidu.learn.concurrent.pool; + +import lombok.extern.slf4j.Slf4j; + +/** + * 带有定时功能的线程池 + *

                    + * Created by tiancai.zang + * on 2018-11-25 12:48. + */ +@Slf4j +public class ScheduleThreadPoolExecutorDemo { + + public static void main(String[] args) { + + + } +} \ No newline at end of file diff --git a/language-advance/concurrent/src/main/java/org/laidu/learn/concurrent/pool/ThreadPoolExecutorDemo.java b/language-advance/concurrent/src/main/java/org/laidu/learn/concurrent/pool/ThreadPoolExecutorDemo.java new file mode 100644 index 000000000..8a68d5457 --- /dev/null +++ b/language-advance/concurrent/src/main/java/org/laidu/learn/concurrent/pool/ThreadPoolExecutorDemo.java @@ -0,0 +1,49 @@ +package org.laidu.learn.concurrent.pool; + +import jodd.util.ThreadUtil; +import lombok.extern.slf4j.Slf4j; +import org.apache.commons.lang3.RandomUtils; + +import java.util.concurrent.ArrayBlockingQueue; +import java.util.concurrent.ThreadPoolExecutor; +import java.util.concurrent.TimeUnit; + +/** + * ThreadPoolExecutorDemo + *

                    + * Created by tiancai.zang + * on 2018-11-25 10:44. + */ +@Slf4j +public class ThreadPoolExecutorDemo { + + public static void main(String[] args) { + + + ThreadPoolExecutor executor = new ThreadPoolExecutor(1, + 5, + 500L, TimeUnit.MICROSECONDS, + new ArrayBlockingQueue<>(2), + Thread::new, + new ThreadPoolExecutor.AbortPolicy()); + + executor.submit(()->{ + + while (true){ + ThreadUtil.sleep(500); + System.out.println(String.format("当前线程池大小:%d, 当前work queue大小: %d",executor.getPoolSize(), executor.getQueue().size())); + } + + }); + + while (true){ + ThreadUtil.sleep(600); + executor.submit(()->{ + ThreadUtil.sleep(RandomUtils.nextInt(8000,10000)); +// System.out.println("执行新任务: "+Thread.currentThread().getName()); + }); + } + +// executor.shutdown(); + } +} \ No newline at end of file diff --git a/language-advance/concurrent/src/test/java/org/laidu/learn/concurrent/pool/ForkJoinPoolDemoTest.java b/language-advance/concurrent/src/test/java/org/laidu/learn/concurrent/pool/ForkJoinPoolDemoTest.java new file mode 100644 index 000000000..2cf7add67 --- /dev/null +++ b/language-advance/concurrent/src/test/java/org/laidu/learn/concurrent/pool/ForkJoinPoolDemoTest.java @@ -0,0 +1,7 @@ +package org.laidu.learn.concurrent.pool; + +import static org.junit.jupiter.api.Assertions.*; + +class ForkJoinPoolDemoTest { + +} \ No newline at end of file From 980bd4b1951b31aea7eff198c0c1a0ee1a9b048c Mon Sep 17 00:00:00 2001 From: Tiancai ZANG Date: Wed, 28 Nov 2018 19:10:45 +0800 Subject: [PATCH 229/417] learn swagger annotation --- .../laidu/learn/apache/poi/api/ExcelApi.java | 4 ++ .../swagger/demo/config/SwaggerConfig.java | 2 +- .../demo/controller/HomeController.java | 3 +- .../learn/swagger/demo/dto/ProductReqDTO.java | 45 +++++++++++++++++++ .../learn/swagger/demo/dto/ProductResDTO.java | 9 ++-- .../learn/swagger/demo/model/Product.java | 36 +++++++++++++++ .../src/main/resources/application.properties | 4 +- 7 files changed, 97 insertions(+), 6 deletions(-) create mode 100644 framework/spring/swagger/src/main/java/org/laidu/learn/swagger/demo/dto/ProductReqDTO.java create mode 100644 framework/spring/swagger/src/main/java/org/laidu/learn/swagger/demo/model/Product.java diff --git a/framework/common/apache-poi/src/main/java/org/laidu/learn/apache/poi/api/ExcelApi.java b/framework/common/apache-poi/src/main/java/org/laidu/learn/apache/poi/api/ExcelApi.java index 82d1252ad..b62ed9e16 100644 --- a/framework/common/apache-poi/src/main/java/org/laidu/learn/apache/poi/api/ExcelApi.java +++ b/framework/common/apache-poi/src/main/java/org/laidu/learn/apache/poi/api/ExcelApi.java @@ -9,5 +9,9 @@ @Slf4j public class ExcelApi { + public static void main(String[] args) { + + + } } \ No newline at end of file diff --git a/framework/spring/swagger/src/main/java/org/laidu/learn/swagger/demo/config/SwaggerConfig.java b/framework/spring/swagger/src/main/java/org/laidu/learn/swagger/demo/config/SwaggerConfig.java index 9b0d47707..359e40d06 100644 --- a/framework/spring/swagger/src/main/java/org/laidu/learn/swagger/demo/config/SwaggerConfig.java +++ b/framework/spring/swagger/src/main/java/org/laidu/learn/swagger/demo/config/SwaggerConfig.java @@ -45,7 +45,7 @@ public Docket apiDev() { ParameterBuilder ticketPar = new ParameterBuilder(); List pars = new ArrayList<>(); - ticketPar.name("__sid").description("__sid") + ticketPar.name("_sid").description("_sid") .parameterType("query") .modelRef(new ModelRef("string")) .required(false).build(); diff --git a/framework/spring/swagger/src/main/java/org/laidu/learn/swagger/demo/controller/HomeController.java b/framework/spring/swagger/src/main/java/org/laidu/learn/swagger/demo/controller/HomeController.java index acc27b698..d11fda6ff 100644 --- a/framework/spring/swagger/src/main/java/org/laidu/learn/swagger/demo/controller/HomeController.java +++ b/framework/spring/swagger/src/main/java/org/laidu/learn/swagger/demo/controller/HomeController.java @@ -4,6 +4,7 @@ import io.swagger.annotations.ApiParam; import io.swagger.annotations.ApiResponse; import lombok.extern.slf4j.Slf4j; +import org.laidu.learn.swagger.demo.dto.ProductReqDTO; import org.laidu.learn.swagger.demo.dto.ProductResDTO; import org.springframework.web.bind.annotation.*; @@ -39,7 +40,7 @@ public ProductResDTO query(@PathVariable String id){ } @PostMapping("/add") - public ProductResDTO add(ProductResDTO product){ + public ProductReqDTO add(@RequestBody ProductReqDTO product){ return product; } diff --git a/framework/spring/swagger/src/main/java/org/laidu/learn/swagger/demo/dto/ProductReqDTO.java b/framework/spring/swagger/src/main/java/org/laidu/learn/swagger/demo/dto/ProductReqDTO.java new file mode 100644 index 000000000..df2007636 --- /dev/null +++ b/framework/spring/swagger/src/main/java/org/laidu/learn/swagger/demo/dto/ProductReqDTO.java @@ -0,0 +1,45 @@ +package org.laidu.learn.swagger.demo.dto; + +import com.fasterxml.jackson.annotation.JsonFormat; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.util.Date; + +/** + * product + *

                    + * + * @author tiancai.zang + * @date 2017-12-10 21:46 + */ +@Data +@Builder +@AllArgsConstructor +@NoArgsConstructor +@ApiModel +public class ProductReqDTO { + + /** + * id + */ + @ApiModelProperty(required = true,name = "产品ID") + private String id; + + /** + * product name + */ + @ApiModelProperty(required = true,name = "产品ID",allowableValues = "") + private String name; + + /** + * product date + */ + @ApiModelProperty(required = true,example = "2016-01-01") + @JsonFormat(pattern = "yyyy-MM-dd hh:mm:ss",timezone = "GMT+8") + private Date productDate; +} \ No newline at end of file diff --git a/framework/spring/swagger/src/main/java/org/laidu/learn/swagger/demo/dto/ProductResDTO.java b/framework/spring/swagger/src/main/java/org/laidu/learn/swagger/demo/dto/ProductResDTO.java index 335492e51..62834a201 100644 --- a/framework/spring/swagger/src/main/java/org/laidu/learn/swagger/demo/dto/ProductResDTO.java +++ b/framework/spring/swagger/src/main/java/org/laidu/learn/swagger/demo/dto/ProductResDTO.java @@ -2,6 +2,7 @@ import com.fasterxml.jackson.annotation.JsonFormat; import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; import lombok.AllArgsConstructor; import lombok.Builder; import lombok.Data; @@ -26,16 +27,18 @@ public class ProductResDTO { /** * id */ - public String id; + @ApiModelProperty(required = true,name = "产品ID") + private String id; /** * product name */ - public String name; + private String name; /** * product date */ + @ApiModelProperty(required = true,example = "2016-01-01 18:10:12") @JsonFormat(pattern = "yyyy-MM-dd hh:mm:ss",timezone = "GMT+8") - public Date productDate; + private Date productDate; } \ No newline at end of file diff --git a/framework/spring/swagger/src/main/java/org/laidu/learn/swagger/demo/model/Product.java b/framework/spring/swagger/src/main/java/org/laidu/learn/swagger/demo/model/Product.java new file mode 100644 index 000000000..29a86a68d --- /dev/null +++ b/framework/spring/swagger/src/main/java/org/laidu/learn/swagger/demo/model/Product.java @@ -0,0 +1,36 @@ +package org.laidu.learn.swagger.demo.model; + +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.util.Date; + +/** + * 产品信息 + * + * @author tiancai.zang + * on 2018-11-28 18:45. + */ +@Data +@Builder +@AllArgsConstructor +@NoArgsConstructor +public class Product { + + /** + * id + */ + public String id; + + /** + * product name + */ + public String name; + + /** + * product date + */ + public Date productDate; +} \ No newline at end of file diff --git a/framework/spring/swagger/src/main/resources/application.properties b/framework/spring/swagger/src/main/resources/application.properties index 7467cc18f..fabb5cfe4 100644 --- a/framework/spring/swagger/src/main/resources/application.properties +++ b/framework/spring/swagger/src/main/resources/application.properties @@ -2,4 +2,6 @@ spring.jackson.property-naming-strategy=CAMEL_CASE_TO_LOWER_CASE_WITH_UNDERSCORE server.address=0.0.0.0 spring.application.name=swagger-demo -spring.application.admin.enabled=true \ No newline at end of file +spring.application.admin.enabled=true + +spring.devtools.restart.enabled=true \ No newline at end of file From 72dedec3c93b93b88d1c03f7969bb93d0a20a8ef Mon Sep 17 00:00:00 2001 From: Tiancai ZANG Date: Thu, 29 Nov 2018 18:49:29 +0800 Subject: [PATCH 230/417] start ziroom crawler --- .../framework/webmagic/package-info.java | 10 +++ .../webmagic/renting/RentingSpider.java | 37 ++++++++++ .../renting/conf/RequirementConf.java | 37 ++++++++++ .../webmagic/renting/entity/HouseInfo.java | 34 +++++++++ .../webmagic/renting/package-info.java | 10 +++ .../AbstractRentingPageProcessor.java | 70 +++++++++++++++++++ .../renting/processor/package-info.java | 10 +++ .../processor/ziroom/ZiroomPageProcessor.java | 60 ++++++++++++++++ .../src/site/markdown/ziroom.md | 11 +++ 9 files changed, 279 insertions(+) create mode 100644 framework/webmagic/webmagic-learn/src/main/java/org/laidu/learn/framework/webmagic/package-info.java create mode 100644 framework/webmagic/webmagic-learn/src/main/java/org/laidu/learn/framework/webmagic/renting/RentingSpider.java create mode 100644 framework/webmagic/webmagic-learn/src/main/java/org/laidu/learn/framework/webmagic/renting/conf/RequirementConf.java create mode 100644 framework/webmagic/webmagic-learn/src/main/java/org/laidu/learn/framework/webmagic/renting/entity/HouseInfo.java create mode 100644 framework/webmagic/webmagic-learn/src/main/java/org/laidu/learn/framework/webmagic/renting/package-info.java create mode 100644 framework/webmagic/webmagic-learn/src/main/java/org/laidu/learn/framework/webmagic/renting/processor/AbstractRentingPageProcessor.java create mode 100644 framework/webmagic/webmagic-learn/src/main/java/org/laidu/learn/framework/webmagic/renting/processor/package-info.java create mode 100644 framework/webmagic/webmagic-learn/src/main/java/org/laidu/learn/framework/webmagic/renting/processor/ziroom/ZiroomPageProcessor.java create mode 100644 framework/webmagic/webmagic-learn/src/site/markdown/ziroom.md diff --git a/framework/webmagic/webmagic-learn/src/main/java/org/laidu/learn/framework/webmagic/package-info.java b/framework/webmagic/webmagic-learn/src/main/java/org/laidu/learn/framework/webmagic/package-info.java new file mode 100644 index 000000000..c171ef104 --- /dev/null +++ b/framework/webmagic/webmagic-learn/src/main/java/org/laidu/learn/framework/webmagic/package-info.java @@ -0,0 +1,10 @@ +/** + * webmagic 学习使用 + *

                    + * Created by laidu + * on 2018-11-29 17:00. + * + * @author laidu + */ +// TODO: 2018-11-29 17:00 webmagic 学习使用 +package org.laidu.learn.framework.webmagic; \ No newline at end of file diff --git a/framework/webmagic/webmagic-learn/src/main/java/org/laidu/learn/framework/webmagic/renting/RentingSpider.java b/framework/webmagic/webmagic-learn/src/main/java/org/laidu/learn/framework/webmagic/renting/RentingSpider.java new file mode 100644 index 000000000..16b86d671 --- /dev/null +++ b/framework/webmagic/webmagic-learn/src/main/java/org/laidu/learn/framework/webmagic/renting/RentingSpider.java @@ -0,0 +1,37 @@ +package org.laidu.learn.framework.webmagic.renting; + +import lombok.extern.slf4j.Slf4j; +import org.laidu.learn.framework.webmagic.renting.conf.RequirementConf; +import org.laidu.learn.framework.webmagic.renting.processor.ziroom.ZiroomPageProcessor; +import us.codecraft.webmagic.Request; +import us.codecraft.webmagic.Spider; +import us.codecraft.webmagic.processor.PageProcessor; + +/** + * 租房信息爬取启动类 + * + * @author tiancai.zang + * on 2018-11-29 17:12. + */ +@Slf4j +public class RentingSpider extends Spider { + + /** + * create a spider with pageProcessor. + * + * @param pageProcessor pageProcessor + */ + public RentingSpider(PageProcessor pageProcessor) { + super(pageProcessor); + } + + public static void main(String[] args) { + + RequirementConf conf = RequirementConf.builder().build(); + + RentingSpider spider = new RentingSpider(new ZiroomPageProcessor(conf)); + + Spider.create(new ZiroomPageProcessor(conf)).addRequest(new Request("http://www.ziroom.com/z/nl/z2-r1.html")).start(); + + } +} \ No newline at end of file diff --git a/framework/webmagic/webmagic-learn/src/main/java/org/laidu/learn/framework/webmagic/renting/conf/RequirementConf.java b/framework/webmagic/webmagic-learn/src/main/java/org/laidu/learn/framework/webmagic/renting/conf/RequirementConf.java new file mode 100644 index 000000000..02270441b --- /dev/null +++ b/framework/webmagic/webmagic-learn/src/main/java/org/laidu/learn/framework/webmagic/renting/conf/RequirementConf.java @@ -0,0 +1,37 @@ +package org.laidu.learn.framework.webmagic.renting.conf; + +import lombok.Builder; +import lombok.Data; +import lombok.extern.slf4j.Slf4j; + +/** + * 租房需求配置 + * + * @author tiancai.zang + * on 2018-11-29 17:03. + */ +@Slf4j +@Data +@Builder +public class RequirementConf { + + /** + * 价格上线 + */ + private Double highPrice; + + /** + * 价格下线 + */ + private Double lowPrice = 0.0; + + /** + * 目的地 + */ + private String destination; + + /** + * 期望耗时(分钟) + */ + private Integer expireElapsed; +} \ No newline at end of file diff --git a/framework/webmagic/webmagic-learn/src/main/java/org/laidu/learn/framework/webmagic/renting/entity/HouseInfo.java b/framework/webmagic/webmagic-learn/src/main/java/org/laidu/learn/framework/webmagic/renting/entity/HouseInfo.java new file mode 100644 index 000000000..4ff06efd9 --- /dev/null +++ b/framework/webmagic/webmagic-learn/src/main/java/org/laidu/learn/framework/webmagic/renting/entity/HouseInfo.java @@ -0,0 +1,34 @@ +package org.laidu.learn.framework.webmagic.renting.entity; + +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +/** + * 房源信息 + * + * @author tiancai.zang + * on 2018-11-29 17:09. + */ +@Data +@Builder +@AllArgsConstructor +@NoArgsConstructor +public class HouseInfo { + + private String name; + + private String url; + + private Double price; + + private Integer expireElapsed; + + private String destination; + + /** + * 路线信息 + */ + private String routeInfo; +} \ No newline at end of file diff --git a/framework/webmagic/webmagic-learn/src/main/java/org/laidu/learn/framework/webmagic/renting/package-info.java b/framework/webmagic/webmagic-learn/src/main/java/org/laidu/learn/framework/webmagic/renting/package-info.java new file mode 100644 index 000000000..9f8916c7e --- /dev/null +++ b/framework/webmagic/webmagic-learn/src/main/java/org/laidu/learn/framework/webmagic/renting/package-info.java @@ -0,0 +1,10 @@ +/** + * 租房信息爬取 + *

                    + * Created by laidu + * on 2018-11-29 17:01. + * + * @author laidu + */ +// TODO: 2018-11-29 17:01 租房信息爬取 +package org.laidu.learn.framework.webmagic.renting; \ No newline at end of file diff --git a/framework/webmagic/webmagic-learn/src/main/java/org/laidu/learn/framework/webmagic/renting/processor/AbstractRentingPageProcessor.java b/framework/webmagic/webmagic-learn/src/main/java/org/laidu/learn/framework/webmagic/renting/processor/AbstractRentingPageProcessor.java new file mode 100644 index 000000000..835a13b71 --- /dev/null +++ b/framework/webmagic/webmagic-learn/src/main/java/org/laidu/learn/framework/webmagic/renting/processor/AbstractRentingPageProcessor.java @@ -0,0 +1,70 @@ +package org.laidu.learn.framework.webmagic.renting.processor; + +import org.laidu.learn.framework.webmagic.renting.conf.RequirementConf; +import org.laidu.learn.framework.webmagic.renting.entity.HouseInfo; +import us.codecraft.webmagic.Page; +import us.codecraft.webmagic.processor.PageProcessor; + +import java.util.List; + +/** + * 房源信息爬虫抽象类 + * + * @author tiancai.zang + * on 2018-11-29 17:14. + */ +public abstract class AbstractRentingPageProcessor implements PageProcessor { + + private final RequirementConf conf; + + public AbstractRentingPageProcessor(RequirementConf conf) { + this.conf = conf; + } + + /** + * 爬虫处理逻辑 + * @param page + */ + @Override + public void process(Page page) { + + + List houseInfos = processPage(page); + + houseInfos.stream() + .peek(houseInfo -> { + int elapsed = queryExpireElapsed(houseInfo.getName(), this.conf.getDestination()); + houseInfo.setExpireElapsed(elapsed); + }) + .filter(this::filter) + .forEach(houseInfo -> page.getResultItems().put(houseInfo.getName(),houseInfo)); + } + + /** + * 房源信息筛选 + * @param houseInfo + * @return + */ + protected Boolean filter(HouseInfo houseInfo){ + return houseInfo.getPrice() < this.conf.getHighPrice() && houseInfo.getExpireElapsed() < this.conf.getExpireElapsed(); + } + + /** + * @param source 出发地 + * @param dest 目的地 + * @return 获取房源信息到目的所消耗的最短时间(分钟) + */ + protected int queryExpireElapsed(String source,String dest){ + int elapsed = -1; + + return elapsed; + } + + /** + * 页面解析逻辑 + * @param page + * @return + */ + protected abstract List processPage(Page page); + +} \ No newline at end of file diff --git a/framework/webmagic/webmagic-learn/src/main/java/org/laidu/learn/framework/webmagic/renting/processor/package-info.java b/framework/webmagic/webmagic-learn/src/main/java/org/laidu/learn/framework/webmagic/renting/processor/package-info.java new file mode 100644 index 000000000..c33734632 --- /dev/null +++ b/framework/webmagic/webmagic-learn/src/main/java/org/laidu/learn/framework/webmagic/renting/processor/package-info.java @@ -0,0 +1,10 @@ +/** + * 页面爬取分析逻辑 + *

                    + * Created by laidu + * on 2018-11-29 17:12. + * + * @author laidu + */ +// TODO: 2018-11-29 17:12 页面爬取分析逻辑 +package org.laidu.learn.framework.webmagic.renting.processor; \ No newline at end of file diff --git a/framework/webmagic/webmagic-learn/src/main/java/org/laidu/learn/framework/webmagic/renting/processor/ziroom/ZiroomPageProcessor.java b/framework/webmagic/webmagic-learn/src/main/java/org/laidu/learn/framework/webmagic/renting/processor/ziroom/ZiroomPageProcessor.java new file mode 100644 index 000000000..989c33c6f --- /dev/null +++ b/framework/webmagic/webmagic-learn/src/main/java/org/laidu/learn/framework/webmagic/renting/processor/ziroom/ZiroomPageProcessor.java @@ -0,0 +1,60 @@ +package org.laidu.learn.framework.webmagic.renting.processor.ziroom; + +import lombok.extern.slf4j.Slf4j; +import org.laidu.learn.framework.webmagic.renting.conf.RequirementConf; +import org.laidu.learn.framework.webmagic.renting.entity.HouseInfo; +import org.laidu.learn.framework.webmagic.renting.processor.AbstractRentingPageProcessor; +import us.codecraft.webmagic.Page; +import us.codecraft.webmagic.Site; +import us.codecraft.webmagic.selector.Selectable; + +import java.util.ArrayList; +import java.util.List; + +/** + * 自如房源爬虫程序 + * + * @author tiancai.zang + * on 2018-11-29 17:13. + */ +@Slf4j +public class ZiroomPageProcessor extends AbstractRentingPageProcessor { + + + public ZiroomPageProcessor(RequirementConf conf) { + super(conf); + } + + @Override + protected List processPage(Page page) { + + List houseInfos = new ArrayList<>(); + List houseList = page.getHtml().xpath("//*[@id=\"houseList\"]/li").nodes(); + houseList.stream().forEach(house -> { + + log.debug("house : {}", house); + + String name = house.xpath("//div[2]/h3/a/text()").get(); + String url = house.links().get(); + + //价格信息暂无法获取 + Double price = 0.0; + + String routeInfo = ""; + + houseInfos.add(HouseInfo.builder() + .name(name) + .url(url) + .price(price) + .routeInfo(routeInfo) + .build()); + + }); + return houseInfos; + } + + @Override + public Site getSite() { + return Site.me(); + } +} \ No newline at end of file diff --git a/framework/webmagic/webmagic-learn/src/site/markdown/ziroom.md b/framework/webmagic/webmagic-learn/src/site/markdown/ziroom.md new file mode 100644 index 000000000..8188a01ca --- /dev/null +++ b/framework/webmagic/webmagic-learn/src/site/markdown/ziroom.md @@ -0,0 +1,11 @@ +# 自如租房信息查询 + +目标 +* 价格~1500 +* 距离百度科技园22号楼,1小时以内(公交或者地铁) + +问题: +* 获取所有符合基础条件的房源信息 +* 获取路线信息 +* 按照路线最近排序展示 + From 553c6c7897cc54b16ea688a16b72c5e96ef73549 Mon Sep 17 00:00:00 2001 From: Tiancai ZANG Date: Fri, 30 Nov 2018 16:33:00 +0800 Subject: [PATCH 231/417] continue ziroom crawler --- .../webmagic/renting/entity/HouseInfo.java | 61 ++++++++++- .../webmagic/renting/entity/package-info.java | 9 ++ .../webmagic/renting/enums/PageTypeEnum.java | 26 +++++ .../AbstractRentingPageProcessor.java | 15 +-- .../processor/ziroom/ZiroomPageProcessor.java | 103 ++++++++++++++---- 5 files changed, 184 insertions(+), 30 deletions(-) create mode 100644 framework/webmagic/webmagic-learn/src/main/java/org/laidu/learn/framework/webmagic/renting/entity/package-info.java create mode 100644 framework/webmagic/webmagic-learn/src/main/java/org/laidu/learn/framework/webmagic/renting/enums/PageTypeEnum.java diff --git a/framework/webmagic/webmagic-learn/src/main/java/org/laidu/learn/framework/webmagic/renting/entity/HouseInfo.java b/framework/webmagic/webmagic-learn/src/main/java/org/laidu/learn/framework/webmagic/renting/entity/HouseInfo.java index 4ff06efd9..375e983a1 100644 --- a/framework/webmagic/webmagic-learn/src/main/java/org/laidu/learn/framework/webmagic/renting/entity/HouseInfo.java +++ b/framework/webmagic/webmagic-learn/src/main/java/org/laidu/learn/framework/webmagic/renting/entity/HouseInfo.java @@ -19,16 +19,69 @@ public class HouseInfo { private String name; + private HouseDetail detail; + private String url; private Double price; - private Integer expireElapsed; - - private String destination; - /** * 路线信息 */ private String routeInfo; + + /** + * 面积: 13.3 ㎡ + * 朝向: 南 + * 户型: 3室1厅 合 + * 楼层: 15/15层 + * 交通: 距房山线良乡南关686米 + * 距房山线良乡大学城西759米 + * + * 距房山线苏庄1959米 + */ + @Data + @Builder + @AllArgsConstructor + @NoArgsConstructor + public static class HouseDetail{ + + private String locationName; + + /** + * 经度 + */ + private Double longitude; + + /** + * 纬度 + */ + private Double latitude; + + /** + * 面积 + */ + private String areaSize; + + + /** + * 朝向 + */ + private String toward; + + /** + * 户型信息 + */ + private String unit; + + /** + * 楼层信息 + */ + private String floor; + + /** + * 交通信息 + */ + private String traffic; + } } \ No newline at end of file diff --git a/framework/webmagic/webmagic-learn/src/main/java/org/laidu/learn/framework/webmagic/renting/entity/package-info.java b/framework/webmagic/webmagic-learn/src/main/java/org/laidu/learn/framework/webmagic/renting/entity/package-info.java new file mode 100644 index 000000000..d02fbeac2 --- /dev/null +++ b/framework/webmagic/webmagic-learn/src/main/java/org/laidu/learn/framework/webmagic/renting/entity/package-info.java @@ -0,0 +1,9 @@ +/** + * 房源信息 + *

                    + * Created by laidu + * on 2018-11-30 15:33. + * + * @author laidu + */ +package org.laidu.learn.framework.webmagic.renting.entity; \ No newline at end of file diff --git a/framework/webmagic/webmagic-learn/src/main/java/org/laidu/learn/framework/webmagic/renting/enums/PageTypeEnum.java b/framework/webmagic/webmagic-learn/src/main/java/org/laidu/learn/framework/webmagic/renting/enums/PageTypeEnum.java new file mode 100644 index 000000000..aa1ef87ea --- /dev/null +++ b/framework/webmagic/webmagic-learn/src/main/java/org/laidu/learn/framework/webmagic/renting/enums/PageTypeEnum.java @@ -0,0 +1,26 @@ +package org.laidu.learn.framework.webmagic.renting.enums; + +/** + * 页面类型 + * + * @author tiancai.zang + * on 2018-11-30 10:44. + */ +public enum PageTypeEnum { + + /** + * 列表页 + */ + LIST, + + /** + * 详情页 + */ + DETAIL, + + /** + * 未知类型 + */ + UNKNOW, + ; +} \ No newline at end of file diff --git a/framework/webmagic/webmagic-learn/src/main/java/org/laidu/learn/framework/webmagic/renting/processor/AbstractRentingPageProcessor.java b/framework/webmagic/webmagic-learn/src/main/java/org/laidu/learn/framework/webmagic/renting/processor/AbstractRentingPageProcessor.java index 835a13b71..290b15983 100644 --- a/framework/webmagic/webmagic-learn/src/main/java/org/laidu/learn/framework/webmagic/renting/processor/AbstractRentingPageProcessor.java +++ b/framework/webmagic/webmagic-learn/src/main/java/org/laidu/learn/framework/webmagic/renting/processor/AbstractRentingPageProcessor.java @@ -29,13 +29,14 @@ public AbstractRentingPageProcessor(RequirementConf conf) { public void process(Page page) { - List houseInfos = processPage(page); + List houseInfos = null; + try { + houseInfos = processPage(page); + } catch (Exception e) { + e.printStackTrace(); + } houseInfos.stream() - .peek(houseInfo -> { - int elapsed = queryExpireElapsed(houseInfo.getName(), this.conf.getDestination()); - houseInfo.setExpireElapsed(elapsed); - }) .filter(this::filter) .forEach(houseInfo -> page.getResultItems().put(houseInfo.getName(),houseInfo)); } @@ -46,7 +47,7 @@ public void process(Page page) { * @return */ protected Boolean filter(HouseInfo houseInfo){ - return houseInfo.getPrice() < this.conf.getHighPrice() && houseInfo.getExpireElapsed() < this.conf.getExpireElapsed(); + return houseInfo.getPrice() < this.conf.getHighPrice() && queryExpireElapsed(houseInfo.getName(), this.conf.getDestination()) < this.conf.getExpireElapsed(); } /** @@ -65,6 +66,6 @@ protected int queryExpireElapsed(String source,String dest){ * @param page * @return */ - protected abstract List processPage(Page page); + protected abstract List processPage(Page page) throws Exception; } \ No newline at end of file diff --git a/framework/webmagic/webmagic-learn/src/main/java/org/laidu/learn/framework/webmagic/renting/processor/ziroom/ZiroomPageProcessor.java b/framework/webmagic/webmagic-learn/src/main/java/org/laidu/learn/framework/webmagic/renting/processor/ziroom/ZiroomPageProcessor.java index 989c33c6f..02fb537be 100644 --- a/framework/webmagic/webmagic-learn/src/main/java/org/laidu/learn/framework/webmagic/renting/processor/ziroom/ZiroomPageProcessor.java +++ b/framework/webmagic/webmagic-learn/src/main/java/org/laidu/learn/framework/webmagic/renting/processor/ziroom/ZiroomPageProcessor.java @@ -3,12 +3,17 @@ import lombok.extern.slf4j.Slf4j; import org.laidu.learn.framework.webmagic.renting.conf.RequirementConf; import org.laidu.learn.framework.webmagic.renting.entity.HouseInfo; +import org.laidu.learn.framework.webmagic.renting.enums.PageTypeEnum; import org.laidu.learn.framework.webmagic.renting.processor.AbstractRentingPageProcessor; import us.codecraft.webmagic.Page; +import us.codecraft.webmagic.Request; import us.codecraft.webmagic.Site; +import us.codecraft.webmagic.Spider; +import us.codecraft.webmagic.selector.Html; import us.codecraft.webmagic.selector.Selectable; -import java.util.ArrayList; +import java.util.Arrays; +import java.util.Collections; import java.util.List; /** @@ -26,35 +31,95 @@ public ZiroomPageProcessor(RequirementConf conf) { } @Override - protected List processPage(Page page) { + protected List processPage(Page page) throws Exception { - List houseInfos = new ArrayList<>(); - List houseList = page.getHtml().xpath("//*[@id=\"houseList\"]/li").nodes(); - houseList.stream().forEach(house -> { + /* + step 1 : 判断是否为详情页/列表页 + */ + PageTypeEnum pageType = judgePageType(page.getUrl().get()); - log.debug("house : {}", house); + switch (pageType) { + case LIST: - String name = house.xpath("//div[2]/h3/a/text()").get(); - String url = house.links().get(); + handleListPage(page); + break; + case DETAIL: + HouseInfo houseInfo = handleDetailPage(page); - //价格信息暂无法获取 - Double price = 0.0; + log.debug("houseInfo : {}", houseInfo); - String routeInfo = ""; + return Arrays.asList(houseInfo); + default: + throw new Exception("未知页面类型"); + } - houseInfos.add(HouseInfo.builder() - .name(name) - .url(url) - .price(price) - .routeInfo(routeInfo) - .build()); + return Collections.emptyList(); + } + + private HouseInfo handleDetailPage(Page page) { + + + Html html = page.getHtml(); + + String name = html.xpath("/html/body/div[3]/div[2]/div[1]/h2/text()").get().trim(); + + Selectable detail = html.xpath("/html/body/div[3]/div[2]/ul"); - }); - return houseInfos; + String areaSize = detail.xpath("/ul//li[1]/text()").get().trim(); + String toward = detail.xpath("/ul//li[2]/text()").get().trim(); + String unit = detail.xpath("/ul//li[3]/text()").get().trim(); + String floor = detail.xpath("/ul//li[4]/text()").get().trim(); + String traffic = detail.xpath("/ul//li[5]/text()").get().trim(); + + return HouseInfo.builder() + .name(name) + .detail(HouseInfo.HouseDetail.builder() + .areaSize(areaSize) + .toward(toward) + .unit(unit) + .floor(floor) + .traffic(traffic) + .build()) + .build(); + } + + private void handleListPage(Page page) { + Html pageHtml = page.getHtml(); + Selectable houseList = pageHtml.xpath("//*[@id=\"houseList\"]/li"); + + List houseDetialPageUrls = houseList.links() + .regex("http://www\\.ziroom\\.com/z/vr/[0-9]+\\.html") + .all(); + + page.addTargetRequests(houseDetialPageUrls); + + List listPageUrls = pageHtml.xpath("//*[@id=\"page\"]").links() + .regex("http://www\\.ziroom\\.com/z/nl/[a-z0-1-]+\\.html\\?p=[0-9]+") + .all(); + + page.addTargetRequests(listPageUrls); + } + + + private PageTypeEnum judgePageType(String url) { + if (url.contains(".com/z/vr/")) { + return PageTypeEnum.DETAIL; + } else if (url.contains("")) { + return PageTypeEnum.LIST; + } + return PageTypeEnum.UNKNOW; } @Override public Site getSite() { return Site.me(); } + + public static void main(String[] args) { + + RequirementConf conf = RequirementConf.builder().build(); + + + Spider.create(new ZiroomPageProcessor(conf)).addRequest(new Request("http://www.ziroom.com/z/nl/z2-r1.html")).start(); + } } \ No newline at end of file From 170741f7a8bc111d5a410e9a27738742f29ca561 Mon Sep 17 00:00:00 2001 From: ztc Date: Sun, 23 Dec 2018 23:00:24 +0800 Subject: [PATCH 232/417] optimize import --- .../laidu/learn/algorithm/leetcode/TwoSumTest.java | 2 -- .../src/main/java/org/laidu/learn/hadoop/hdfs/Ls.java | 6 ++---- .../org/laidu/learn/hadoop/mapreduce/WordCount.java | 6 +++--- .../laidu/learn/code/practice/sort/MergeSortDemo.java | 2 -- .../org/laidu/learn/btrace/monitor/MethodRunTime.java | 1 + .../pattern/_abstract/factory/ConcreteProductA.java | 1 - .../learn/design/pattern/iterator/Aggregate.java | 1 - .../org/elasticsearch/license/LicenseVerifier.java | 6 +----- .../java/org/elasticsearch/xpack/core/XPackBuild.java | 6 +----- .../learn/aws/dynamodb/convert/ItermConverter.java | 3 +-- .../commins/lang3/source/DateUtilsPartMethod.java | 1 - .../laidu/learn/shiro/reaml/ini/IniRealmDemoTest.java | 2 -- .../retrofit/usage/github/dto/UserBasicInfo.java | 3 ++- .../laidu/learn/amqp/rabbitmq/java/DeclareQueue.java | 5 ----- .../learn/amqp/rabbitmq/java/RabbitmqClientDemo.java | 2 +- .../learn/amqp/rabbitmq/java/SpringClientDemo.java | 7 ------- .../amqp/rabbitmq/official/conf/RabbitmqConfig.java | 1 - .../amqp/rabbitmq/official/hello/world/Send.java | 1 - .../amqp/rabbitmq/official/rpc/custom/RpcClient.java | 4 +++- .../amqp/rabbitmq/java/SpringClientDemoTest.java | 2 -- .../java/org/laidu/learn/spring/aop/AopAppTest.java | 2 -- .../spring/aop/proxy/cglib/CglibProxyDemoTest.java | 2 -- .../learn/spring/aop/proxy/jdk/JDKProxyDemoTest.java | 2 -- .../spring/boot/admin/conf/NotifierConfiguration.java | 7 ------- .../consumer/controller/HelloConsumerController.java | 2 +- .../learn/spring/cloud/ServiceHelloApplication.java | 1 - .../spring/cloud/controller/HelloController.java | 3 +-- .../learn/mybatis/controller/UserInfoController.java | 2 +- .../data/redis/service/impl/UserServiceImplTest.java | 1 - .../org/laidu/learn/spring/statemachine/StateApp.java | 1 - .../spring/statemachine/action/PayAdvanceAction.java | 1 - .../learn/webfulx/controller/HomeController.java | 2 +- .../learn/test/junit5/mock/TestedServiceTest.java | 2 -- .../org/laidu/learn/test/mockito/ServiceATest.java | 7 ++----- .../learn/wechat/common/service/CoreService.java | 11 +++++------ .../org/laidu/learn/wechat/common/util/Sha1Util.java | 6 +----- .../org/laidu/learn/play/controller/Application.java | 4 ++-- .../learn/concurrent/pool/ForkJoinPoolDemoTest.java | 2 -- .../src/main/java/org/laidu/learn/io/nio/Worker.java | 2 -- .../learn/io/nio/channel/BasicChannelExample.java | 1 - .../language/feature/net/http/HttpServerDemo.java | 5 ++++- .../language/feature/string/StringPartMethod.java | 2 -- .../language/feature/container/ContainerTest.java | 4 +++- .../learn/language/feature/date/DateUsageTest.java | 2 -- .../language/feature/date/source/LocalTimeTest.java | 3 --- .../learn/language/feature/string/StringTest.java | 3 --- .../java/org/laidu/commom/util/string/StringUtil.java | 2 -- .../org/laidu/commom/util/string/StringUtilTest.java | 2 -- .../org/laidu/crawler/helper/PageProcessorGen.java | 2 -- .../resources/template/PageProcessorTemplate.java | 8 -------- .../java/org/laidu/crawler/entity/ParserResult.java | 4 +++- .../main/java/org/laidu/crawler/model/PageProxy.java | 1 - .../crawler/processor/AbstractPageProcessor.java | 2 -- .../laidu/crawler/processor/BaiduPageProcessor.java | 1 + .../org/laidu/crawler/spider/CrawlerBootStrap.java | 4 ---- src/site/pdf-config.xml | 2 +- 56 files changed, 41 insertions(+), 129 deletions(-) diff --git a/algorithm/src/test/java/org/laidu/learn/algorithm/leetcode/TwoSumTest.java b/algorithm/src/test/java/org/laidu/learn/algorithm/leetcode/TwoSumTest.java index b11973a14..a21d386ea 100644 --- a/algorithm/src/test/java/org/laidu/learn/algorithm/leetcode/TwoSumTest.java +++ b/algorithm/src/test/java/org/laidu/learn/algorithm/leetcode/TwoSumTest.java @@ -2,8 +2,6 @@ import org.junit.jupiter.api.Test; -import static org.junit.jupiter.api.Assertions.*; - class TwoSumTest { @Test void twoSum() { diff --git a/big-data/hadoop/src/main/java/org/laidu/learn/hadoop/hdfs/Ls.java b/big-data/hadoop/src/main/java/org/laidu/learn/hadoop/hdfs/Ls.java index 2be84b5df..4e9100df5 100644 --- a/big-data/hadoop/src/main/java/org/laidu/learn/hadoop/hdfs/Ls.java +++ b/big-data/hadoop/src/main/java/org/laidu/learn/hadoop/hdfs/Ls.java @@ -1,12 +1,10 @@ package org.laidu.learn.hadoop.hdfs; import lombok.extern.slf4j.Slf4j; +import org.apache.hadoop.conf.Configuration; +import org.apache.hadoop.fs.*; import java.net.URI; -import org.apache.hadoop.conf.Configuration; import org.apache.hadoop.fs.BlockLocation; import org.apache.hadoop.fs.FileStatus; -import org.apache.hadoop.fs.FileSystem; -import org.apache.hadoop.fs.LocatedFileStatus; import org.apache.hadoop.fs.Path; -import org.apache.hadoop.fs.RemoteIterator; /** * view files list diff --git a/big-data/hadoop/src/main/java/org/laidu/learn/hadoop/mapreduce/WordCount.java b/big-data/hadoop/src/main/java/org/laidu/learn/hadoop/mapreduce/WordCount.java index 4f3e171e9..e861ea75f 100644 --- a/big-data/hadoop/src/main/java/org/laidu/learn/hadoop/mapreduce/WordCount.java +++ b/big-data/hadoop/src/main/java/org/laidu/learn/hadoop/mapreduce/WordCount.java @@ -1,8 +1,5 @@ package org.laidu.learn.hadoop.mapreduce; -import java.io.IOException; -import java.util.StringTokenizer; - import lombok.extern.slf4j.Slf4j; import org.apache.hadoop.conf.Configuration; import org.apache.hadoop.fs.Path; @@ -14,6 +11,9 @@ import org.apache.hadoop.mapreduce.lib.input.FileInputFormat; import org.apache.hadoop.mapreduce.lib.output.FileOutputFormat; +import java.io.IOException; +import java.util.StringTokenizer; + /** * WordCount by official example *

                    diff --git a/code-practice/src/java/org/laidu/learn/code/practice/sort/MergeSortDemo.java b/code-practice/src/java/org/laidu/learn/code/practice/sort/MergeSortDemo.java index fdf9f037e..f03ecfae4 100644 --- a/code-practice/src/java/org/laidu/learn/code/practice/sort/MergeSortDemo.java +++ b/code-practice/src/java/org/laidu/learn/code/practice/sort/MergeSortDemo.java @@ -1,7 +1,5 @@ package org.laidu.learn.code.practice.sort; -import java.lang.Math; - /** * @author laidu */ diff --git a/convenient-util/BTrace/src/main/java/org/laidu/learn/btrace/monitor/MethodRunTime.java b/convenient-util/BTrace/src/main/java/org/laidu/learn/btrace/monitor/MethodRunTime.java index 5d511deb2..0ae6cd1fa 100644 --- a/convenient-util/BTrace/src/main/java/org/laidu/learn/btrace/monitor/MethodRunTime.java +++ b/convenient-util/BTrace/src/main/java/org/laidu/learn/btrace/monitor/MethodRunTime.java @@ -1,6 +1,7 @@ package org.laidu.learn.btrace.monitor; import com.sun.btrace.annotations.*; + import static com.sun.btrace.BTraceUtils.*; /** diff --git a/design-pattern/java-design-pattern-learn/src/main/java/org/laidu/learn/design/pattern/_abstract/factory/ConcreteProductA.java b/design-pattern/java-design-pattern-learn/src/main/java/org/laidu/learn/design/pattern/_abstract/factory/ConcreteProductA.java index cd2a9b765..a335389ad 100644 --- a/design-pattern/java-design-pattern-learn/src/main/java/org/laidu/learn/design/pattern/_abstract/factory/ConcreteProductA.java +++ b/design-pattern/java-design-pattern-learn/src/main/java/org/laidu/learn/design/pattern/_abstract/factory/ConcreteProductA.java @@ -1,7 +1,6 @@ package org.laidu.learn.design.pattern._abstract.factory; import lombok.extern.slf4j.Slf4j; -import org.laidu.learn.design.pattern.simple.factory.AbstractProduct; /** * 红色产品 diff --git a/design-pattern/java-design-pattern-learn/src/main/java/org/laidu/learn/design/pattern/iterator/Aggregate.java b/design-pattern/java-design-pattern-learn/src/main/java/org/laidu/learn/design/pattern/iterator/Aggregate.java index ccd8efd16..6e4128519 100644 --- a/design-pattern/java-design-pattern-learn/src/main/java/org/laidu/learn/design/pattern/iterator/Aggregate.java +++ b/design-pattern/java-design-pattern-learn/src/main/java/org/laidu/learn/design/pattern/iterator/Aggregate.java @@ -1,7 +1,6 @@ package org.laidu.learn.design.pattern.iterator; import java.util.Iterator; -import java.util.List; /** * aggregate container diff --git a/dev-ops/x-pack/src/main/java/org/elasticsearch/license/LicenseVerifier.java b/dev-ops/x-pack/src/main/java/org/elasticsearch/license/LicenseVerifier.java index 58c3b0685..daa17beae 100644 --- a/dev-ops/x-pack/src/main/java/org/elasticsearch/license/LicenseVerifier.java +++ b/dev-ops/x-pack/src/main/java/org/elasticsearch/license/LicenseVerifier.java @@ -1,12 +1,8 @@ package org.elasticsearch.license; -import java.nio.*; -import java.util.*; -import java.security.*; -import org.elasticsearch.common.xcontent.*; import org.apache.lucene.util.*; import org.elasticsearch.common.io.*; -import java.io.*; +import org.elasticsearch.common.xcontent.*; public class LicenseVerifier { diff --git a/dev-ops/x-pack/src/main/java/org/elasticsearch/xpack/core/XPackBuild.java b/dev-ops/x-pack/src/main/java/org/elasticsearch/xpack/core/XPackBuild.java index e86be029c..a57d9456c 100644 --- a/dev-ops/x-pack/src/main/java/org/elasticsearch/xpack/core/XPackBuild.java +++ b/dev-ops/x-pack/src/main/java/org/elasticsearch/xpack/core/XPackBuild.java @@ -1,11 +1,7 @@ package org.elasticsearch.xpack.core; -import org.elasticsearch.common.io.*; -import java.net.*; import org.elasticsearch.common.*; -import java.nio.file.*; -import java.io.*; -import java.util.jar.*; +import org.elasticsearch.common.io.*; public class XPackBuild { diff --git a/framework/aws/dynamoDB/src/main/java/org/laidu/learn/aws/dynamodb/convert/ItermConverter.java b/framework/aws/dynamoDB/src/main/java/org/laidu/learn/aws/dynamodb/convert/ItermConverter.java index 82dc8b9a5..ecc0357bd 100644 --- a/framework/aws/dynamoDB/src/main/java/org/laidu/learn/aws/dynamodb/convert/ItermConverter.java +++ b/framework/aws/dynamoDB/src/main/java/org/laidu/learn/aws/dynamodb/convert/ItermConverter.java @@ -3,9 +3,8 @@ import com.amazonaws.services.dynamodbv2.model.AttributeValue; import lombok.extern.slf4j.Slf4j; import org.nustaq.serialization.FSTConfiguration; -import org.nustaq.serialization.serializers.FSTStringSerializer; -import java.io.*; +import java.io.Serializable; import java.util.HashMap; import java.util.Map; diff --git a/framework/common/commons-lang3/src/main/java/org/laidu/learn/apache/commins/lang3/source/DateUtilsPartMethod.java b/framework/common/commons-lang3/src/main/java/org/laidu/learn/apache/commins/lang3/source/DateUtilsPartMethod.java index 3d90d4ba4..3dcc0e6ef 100644 --- a/framework/common/commons-lang3/src/main/java/org/laidu/learn/apache/commins/lang3/source/DateUtilsPartMethod.java +++ b/framework/common/commons-lang3/src/main/java/org/laidu/learn/apache/commins/lang3/source/DateUtilsPartMethod.java @@ -1,7 +1,6 @@ package org.laidu.learn.apache.commins.lang3.source; import org.apache.commons.lang3.Validate; -import org.apache.commons.lang3.time.DateUtils; import java.util.Calendar; import java.util.Date; diff --git a/framework/common/shiro/src/test/java/org/laidu/learn/shiro/reaml/ini/IniRealmDemoTest.java b/framework/common/shiro/src/test/java/org/laidu/learn/shiro/reaml/ini/IniRealmDemoTest.java index 854258e59..85903bfbf 100644 --- a/framework/common/shiro/src/test/java/org/laidu/learn/shiro/reaml/ini/IniRealmDemoTest.java +++ b/framework/common/shiro/src/test/java/org/laidu/learn/shiro/reaml/ini/IniRealmDemoTest.java @@ -3,8 +3,6 @@ import org.junit.Assert; import org.junit.jupiter.api.Test; -import static org.junit.jupiter.api.Assertions.*; - class IniRealmDemoTest { diff --git a/framework/network/retrofit/src/main/java/org/laidu/learn/network/retrofit/usage/github/dto/UserBasicInfo.java b/framework/network/retrofit/src/main/java/org/laidu/learn/network/retrofit/usage/github/dto/UserBasicInfo.java index 2db414aa1..68462d606 100644 --- a/framework/network/retrofit/src/main/java/org/laidu/learn/network/retrofit/usage/github/dto/UserBasicInfo.java +++ b/framework/network/retrofit/src/main/java/org/laidu/learn/network/retrofit/usage/github/dto/UserBasicInfo.java @@ -1,10 +1,11 @@ package org.laidu.learn.network.retrofit.usage.github.dto; -import javax.annotation.Generated; import com.google.gson.annotations.Expose; import com.google.gson.annotations.SerializedName; +import javax.annotation.Generated; + @Generated("net.hexar.json2pojo") @SuppressWarnings("unused") public class UserBasicInfo { diff --git a/framework/spring/spring-amqp/src/main/java/org/laidu/learn/amqp/rabbitmq/java/DeclareQueue.java b/framework/spring/spring-amqp/src/main/java/org/laidu/learn/amqp/rabbitmq/java/DeclareQueue.java index 56e065460..d8fd41d05 100644 --- a/framework/spring/spring-amqp/src/main/java/org/laidu/learn/amqp/rabbitmq/java/DeclareQueue.java +++ b/framework/spring/spring-amqp/src/main/java/org/laidu/learn/amqp/rabbitmq/java/DeclareQueue.java @@ -1,12 +1,7 @@ package org.laidu.learn.amqp.rabbitmq.java; -import com.rabbitmq.client.ConnectionFactory; import lombok.extern.slf4j.Slf4j; -import java.net.URISyntaxException; -import java.security.KeyManagementException; -import java.security.NoSuchAlgorithmException; - /** * declare queue * diff --git a/framework/spring/spring-amqp/src/main/java/org/laidu/learn/amqp/rabbitmq/java/RabbitmqClientDemo.java b/framework/spring/spring-amqp/src/main/java/org/laidu/learn/amqp/rabbitmq/java/RabbitmqClientDemo.java index eca775938..966158dc1 100644 --- a/framework/spring/spring-amqp/src/main/java/org/laidu/learn/amqp/rabbitmq/java/RabbitmqClientDemo.java +++ b/framework/spring/spring-amqp/src/main/java/org/laidu/learn/amqp/rabbitmq/java/RabbitmqClientDemo.java @@ -15,7 +15,7 @@ * @author tiancai.zang * 2018-01-11 16:24. */ -@Slf4j +@Slf4j(topic = "rabbitmqClientDemo") public class RabbitmqClientDemo implements ClientDemo { public ConnectionFactory connectionFactory(){ diff --git a/framework/spring/spring-amqp/src/main/java/org/laidu/learn/amqp/rabbitmq/java/SpringClientDemo.java b/framework/spring/spring-amqp/src/main/java/org/laidu/learn/amqp/rabbitmq/java/SpringClientDemo.java index eb210cd24..38b2adbd7 100644 --- a/framework/spring/spring-amqp/src/main/java/org/laidu/learn/amqp/rabbitmq/java/SpringClientDemo.java +++ b/framework/spring/spring-amqp/src/main/java/org/laidu/learn/amqp/rabbitmq/java/SpringClientDemo.java @@ -3,16 +3,9 @@ import com.rabbitmq.client.ShutdownSignalException; import com.rabbitmq.client.impl.AMQImpl; import lombok.extern.slf4j.Slf4j; -import org.springframework.amqp.AmqpIOException; -import org.springframework.amqp.core.BindingBuilder; import org.springframework.amqp.core.Queue; -import org.springframework.amqp.core.TopicExchange; import org.springframework.amqp.rabbit.connection.CachingConnectionFactory; -import org.springframework.amqp.rabbit.connection.ConnectionFactory; import org.springframework.amqp.rabbit.core.RabbitAdmin; -import org.springframework.amqp.rabbit.core.RabbitTemplate; -import org.springframework.amqp.rabbit.listener.SimpleMessageListenerContainer; -import org.springframework.amqp.rabbit.listener.adapter.MessageListenerAdapter; import java.io.IOException; diff --git a/framework/spring/spring-amqp/src/main/java/org/laidu/learn/amqp/rabbitmq/official/conf/RabbitmqConfig.java b/framework/spring/spring-amqp/src/main/java/org/laidu/learn/amqp/rabbitmq/official/conf/RabbitmqConfig.java index 76ab64769..15ec90b79 100644 --- a/framework/spring/spring-amqp/src/main/java/org/laidu/learn/amqp/rabbitmq/official/conf/RabbitmqConfig.java +++ b/framework/spring/spring-amqp/src/main/java/org/laidu/learn/amqp/rabbitmq/official/conf/RabbitmqConfig.java @@ -4,7 +4,6 @@ import lombok.Builder; import lombok.Data; import lombok.NoArgsConstructor; -import lombok.extern.slf4j.Slf4j; /** * RabbitmqConfig diff --git a/framework/spring/spring-amqp/src/main/java/org/laidu/learn/amqp/rabbitmq/official/hello/world/Send.java b/framework/spring/spring-amqp/src/main/java/org/laidu/learn/amqp/rabbitmq/official/hello/world/Send.java index 27cc96ac3..4e196ef03 100644 --- a/framework/spring/spring-amqp/src/main/java/org/laidu/learn/amqp/rabbitmq/official/hello/world/Send.java +++ b/framework/spring/spring-amqp/src/main/java/org/laidu/learn/amqp/rabbitmq/official/hello/world/Send.java @@ -8,7 +8,6 @@ import java.util.Date; import java.util.HashMap; import java.util.concurrent.ExecutorService; -import java.util.concurrent.Executors; import java.util.concurrent.ForkJoinPool; import java.util.concurrent.TimeoutException; diff --git a/framework/spring/spring-amqp/src/main/java/org/laidu/learn/amqp/rabbitmq/official/rpc/custom/RpcClient.java b/framework/spring/spring-amqp/src/main/java/org/laidu/learn/amqp/rabbitmq/official/rpc/custom/RpcClient.java index af3c93f56..e23fde901 100644 --- a/framework/spring/spring-amqp/src/main/java/org/laidu/learn/amqp/rabbitmq/official/rpc/custom/RpcClient.java +++ b/framework/spring/spring-amqp/src/main/java/org/laidu/learn/amqp/rabbitmq/official/rpc/custom/RpcClient.java @@ -6,7 +6,9 @@ import java.io.IOException; import java.util.UUID; -import java.util.concurrent.*; +import java.util.concurrent.ArrayBlockingQueue; +import java.util.concurrent.BlockingQueue; +import java.util.concurrent.TimeoutException; /** * rabbitmq 官方示例 RpcClient diff --git a/framework/spring/spring-amqp/src/test/java/org/laidu/learn/amqp/rabbitmq/java/SpringClientDemoTest.java b/framework/spring/spring-amqp/src/test/java/org/laidu/learn/amqp/rabbitmq/java/SpringClientDemoTest.java index 6d052b456..edb057264 100644 --- a/framework/spring/spring-amqp/src/test/java/org/laidu/learn/amqp/rabbitmq/java/SpringClientDemoTest.java +++ b/framework/spring/spring-amqp/src/test/java/org/laidu/learn/amqp/rabbitmq/java/SpringClientDemoTest.java @@ -4,8 +4,6 @@ import java.io.IOException; -import static org.junit.jupiter.api.Assertions.*; - class SpringClientDemoTest { @Test void declareQueue() throws IOException { diff --git a/framework/spring/spring-aop/src/test/java/org/laidu/learn/spring/aop/AopAppTest.java b/framework/spring/spring-aop/src/test/java/org/laidu/learn/spring/aop/AopAppTest.java index 1d8b6cc5a..8e9e99230 100644 --- a/framework/spring/spring-aop/src/test/java/org/laidu/learn/spring/aop/AopAppTest.java +++ b/framework/spring/spring-aop/src/test/java/org/laidu/learn/spring/aop/AopAppTest.java @@ -1,7 +1,5 @@ package org.laidu.learn.spring.aop; -import static org.junit.jupiter.api.Assertions.*; - class AopAppTest { } \ No newline at end of file diff --git a/framework/spring/spring-aop/src/test/java/org/laidu/learn/spring/aop/proxy/cglib/CglibProxyDemoTest.java b/framework/spring/spring-aop/src/test/java/org/laidu/learn/spring/aop/proxy/cglib/CglibProxyDemoTest.java index 6637bc5e0..7097a6270 100644 --- a/framework/spring/spring-aop/src/test/java/org/laidu/learn/spring/aop/proxy/cglib/CglibProxyDemoTest.java +++ b/framework/spring/spring-aop/src/test/java/org/laidu/learn/spring/aop/proxy/cglib/CglibProxyDemoTest.java @@ -5,8 +5,6 @@ import org.junit.jupiter.api.Test; import org.laidu.learn.spring.aop.service.impl.UserServiceImpl; -import static org.junit.jupiter.api.Assertions.*; - @Slf4j class CglibProxyDemoTest { diff --git a/framework/spring/spring-aop/src/test/java/org/laidu/learn/spring/aop/proxy/jdk/JDKProxyDemoTest.java b/framework/spring/spring-aop/src/test/java/org/laidu/learn/spring/aop/proxy/jdk/JDKProxyDemoTest.java index 4f9df1adc..89213bc1b 100644 --- a/framework/spring/spring-aop/src/test/java/org/laidu/learn/spring/aop/proxy/jdk/JDKProxyDemoTest.java +++ b/framework/spring/spring-aop/src/test/java/org/laidu/learn/spring/aop/proxy/jdk/JDKProxyDemoTest.java @@ -4,8 +4,6 @@ import org.junit.jupiter.api.Test; import org.laidu.learn.spring.aop.service.impl.UserServiceImpl; -import static org.junit.jupiter.api.Assertions.*; - class JDKProxyDemoTest { JDKProxyDemo jdkProxyDemo; diff --git a/framework/spring/spring-cloud/admin-dashboard/src/main/java/org/laidu/learn/spring/boot/admin/conf/NotifierConfiguration.java b/framework/spring/spring-cloud/admin-dashboard/src/main/java/org/laidu/learn/spring/boot/admin/conf/NotifierConfiguration.java index 65aa322d1..c7b9b13b5 100644 --- a/framework/spring/spring-cloud/admin-dashboard/src/main/java/org/laidu/learn/spring/boot/admin/conf/NotifierConfiguration.java +++ b/framework/spring/spring-cloud/admin-dashboard/src/main/java/org/laidu/learn/spring/boot/admin/conf/NotifierConfiguration.java @@ -5,17 +5,10 @@ import de.codecentric.boot.admin.server.domain.events.InstanceEvent; import de.codecentric.boot.admin.server.domain.events.InstanceStatusChangedEvent; import de.codecentric.boot.admin.server.notify.AbstractEventNotifier; -import de.codecentric.boot.admin.server.notify.Notifier; -import de.codecentric.boot.admin.server.notify.RemindingNotifier; import lombok.extern.slf4j.Slf4j; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; -import org.springframework.context.annotation.Primary; import reactor.core.publisher.Mono; -import java.time.Duration; - /** * notify config * diff --git a/framework/spring/spring-cloud/consumer-hello/src/main/java/org/laidu/learn/spring/cloud/consumer/controller/HelloConsumerController.java b/framework/spring/spring-cloud/consumer-hello/src/main/java/org/laidu/learn/spring/cloud/consumer/controller/HelloConsumerController.java index 5177c62ce..ad574eed5 100644 --- a/framework/spring/spring-cloud/consumer-hello/src/main/java/org/laidu/learn/spring/cloud/consumer/controller/HelloConsumerController.java +++ b/framework/spring/spring-cloud/consumer-hello/src/main/java/org/laidu/learn/spring/cloud/consumer/controller/HelloConsumerController.java @@ -3,8 +3,8 @@ import lombok.extern.slf4j.Slf4j; import org.laidu.learn.spring.cloud.consumer.service.HelloService; import org.springframework.web.bind.annotation.GetMapping; -import org.springframework.web.bind.annotation.RestController; import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; /** * @author tiancai.zang diff --git a/framework/spring/spring-cloud/service-hello/src/main/java/org/laidu/learn/spring/cloud/ServiceHelloApplication.java b/framework/spring/spring-cloud/service-hello/src/main/java/org/laidu/learn/spring/cloud/ServiceHelloApplication.java index 21d1d894d..6c5599a60 100644 --- a/framework/spring/spring-cloud/service-hello/src/main/java/org/laidu/learn/spring/cloud/ServiceHelloApplication.java +++ b/framework/spring/spring-cloud/service-hello/src/main/java/org/laidu/learn/spring/cloud/ServiceHelloApplication.java @@ -1,7 +1,6 @@ package org.laidu.learn.spring.cloud; import org.springframework.boot.Banner; -import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.boot.builder.SpringApplicationBuilder; import org.springframework.cloud.client.discovery.EnableDiscoveryClient; diff --git a/framework/spring/spring-cloud/service-hello/src/main/java/org/laidu/learn/spring/cloud/controller/HelloController.java b/framework/spring/spring-cloud/service-hello/src/main/java/org/laidu/learn/spring/cloud/controller/HelloController.java index a433544fb..7ed1deb02 100644 --- a/framework/spring/spring-cloud/service-hello/src/main/java/org/laidu/learn/spring/cloud/controller/HelloController.java +++ b/framework/spring/spring-cloud/service-hello/src/main/java/org/laidu/learn/spring/cloud/controller/HelloController.java @@ -3,10 +3,9 @@ import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.cloud.client.ServiceInstance; -import org.springframework.cloud.client.discovery.DiscoveryClient; import org.springframework.web.bind.annotation.GetMapping; -import org.springframework.web.bind.annotation.RestController; import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; /** * hello controller diff --git a/framework/spring/spring-data/spring-mybatis/src/main/java/org/laidu/learn/mybatis/controller/UserInfoController.java b/framework/spring/spring-data/spring-mybatis/src/main/java/org/laidu/learn/mybatis/controller/UserInfoController.java index dd763d2f5..a52b4450d 100644 --- a/framework/spring/spring-data/spring-mybatis/src/main/java/org/laidu/learn/mybatis/controller/UserInfoController.java +++ b/framework/spring/spring-data/spring-mybatis/src/main/java/org/laidu/learn/mybatis/controller/UserInfoController.java @@ -1,8 +1,8 @@ package org.laidu.learn.mybatis.controller; import lombok.extern.slf4j.Slf4j; -import org.laidu.learn.mybatis.mapper.AppUserMapper; import org.laidu.learn.mybatis.entity.AppUser; +import org.laidu.learn.mybatis.mapper.AppUserMapper; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.transaction.annotation.Transactional; import org.springframework.web.bind.annotation.GetMapping; diff --git a/framework/spring/spring-data/spring-redis/src/test/java/org/laidu/learn/spring/data/redis/service/impl/UserServiceImplTest.java b/framework/spring/spring-data/spring-redis/src/test/java/org/laidu/learn/spring/data/redis/service/impl/UserServiceImplTest.java index 396ece68d..c43cdd160 100644 --- a/framework/spring/spring-data/spring-redis/src/test/java/org/laidu/learn/spring/data/redis/service/impl/UserServiceImplTest.java +++ b/framework/spring/spring-data/spring-redis/src/test/java/org/laidu/learn/spring/data/redis/service/impl/UserServiceImplTest.java @@ -3,7 +3,6 @@ import lombok.extern.slf4j.Slf4j; import org.junit.jupiter.api.Test; import org.junit.runner.RunWith; -import org.laidu.learn.spring.data.redis.RedisApp; import org.laidu.learn.spring.data.redis.model.UserInfo; import org.laidu.learn.spring.data.redis.service.UserService; import org.springframework.beans.factory.annotation.Autowired; diff --git a/framework/spring/spring-statemachine/src/main/java/org/laidu/learn/spring/statemachine/StateApp.java b/framework/spring/spring-statemachine/src/main/java/org/laidu/learn/spring/statemachine/StateApp.java index 94cf0f6ec..a18256be5 100644 --- a/framework/spring/spring-statemachine/src/main/java/org/laidu/learn/spring/statemachine/StateApp.java +++ b/framework/spring/spring-statemachine/src/main/java/org/laidu/learn/spring/statemachine/StateApp.java @@ -3,7 +3,6 @@ import lombok.extern.slf4j.Slf4j; import org.laidu.learn.spring.statemachine.enums.EventEnum; import org.laidu.learn.spring.statemachine.enums.OrderStatusEnum; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.boot.builder.SpringApplicationBuilder; import org.springframework.context.ApplicationContext; diff --git a/framework/spring/spring-statemachine/src/main/java/org/laidu/learn/spring/statemachine/action/PayAdvanceAction.java b/framework/spring/spring-statemachine/src/main/java/org/laidu/learn/spring/statemachine/action/PayAdvanceAction.java index a3b60d94a..3d749a49f 100644 --- a/framework/spring/spring-statemachine/src/main/java/org/laidu/learn/spring/statemachine/action/PayAdvanceAction.java +++ b/framework/spring/spring-statemachine/src/main/java/org/laidu/learn/spring/statemachine/action/PayAdvanceAction.java @@ -5,7 +5,6 @@ import org.laidu.learn.spring.statemachine.enums.OrderStatusEnum; import org.springframework.statemachine.StateContext; import org.springframework.statemachine.action.Action; -import org.springframework.statemachine.annotation.OnTransition; import org.springframework.statemachine.annotation.WithStateMachine; /** diff --git a/framework/spring/spring-web/spring-webflux/src/main/java/org/laidu/learn/webfulx/controller/HomeController.java b/framework/spring/spring-web/spring-webflux/src/main/java/org/laidu/learn/webfulx/controller/HomeController.java index 46a6a64dc..1022cf675 100644 --- a/framework/spring/spring-web/spring-webflux/src/main/java/org/laidu/learn/webfulx/controller/HomeController.java +++ b/framework/spring/spring-web/spring-webflux/src/main/java/org/laidu/learn/webfulx/controller/HomeController.java @@ -5,9 +5,9 @@ import org.laidu.learn.webfulx.service.HelloService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.RestController; -import org.springframework.web.bind.annotation.RequestMapping; import java.time.LocalDate; diff --git a/framework/test/junit5/src/test/java/org/laidu/learn/test/junit5/mock/TestedServiceTest.java b/framework/test/junit5/src/test/java/org/laidu/learn/test/junit5/mock/TestedServiceTest.java index 29770bc2e..782e64165 100644 --- a/framework/test/junit5/src/test/java/org/laidu/learn/test/junit5/mock/TestedServiceTest.java +++ b/framework/test/junit5/src/test/java/org/laidu/learn/test/junit5/mock/TestedServiceTest.java @@ -6,8 +6,6 @@ import org.junit.jupiter.api.DisplayName; import org.junit.jupiter.api.Test; -import static org.junit.jupiter.api.Assertions.*; - @Slf4j @DisplayName("TestedService测试") class TestedServiceTest { diff --git a/framework/test/mockito/src/test/java/org/laidu/learn/test/mockito/ServiceATest.java b/framework/test/mockito/src/test/java/org/laidu/learn/test/mockito/ServiceATest.java index fad694483..53891d9fb 100644 --- a/framework/test/mockito/src/test/java/org/laidu/learn/test/mockito/ServiceATest.java +++ b/framework/test/mockito/src/test/java/org/laidu/learn/test/mockito/ServiceATest.java @@ -4,13 +4,10 @@ import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.DisplayName; import org.junit.jupiter.api.Test; -import org.mockito.Mock; -import org.mockito.Mockito; import org.mockito.invocation.InvocationOnMock; -import org.mockito.stubbing.Answer; -import static org.junit.jupiter.api.Assertions.*; -import static org.mockito.Mockito.*; +import static org.mockito.Mockito.doAnswer; +import static org.mockito.Mockito.mock; @Slf4j @DisplayName("Mockito ServiceA Test") diff --git a/framework/thirdparty/wechat/wechat-common/src/main/java/org/laidu/learn/wechat/common/service/CoreService.java b/framework/thirdparty/wechat/wechat-common/src/main/java/org/laidu/learn/wechat/common/service/CoreService.java index 3425e015d..f2e49eef9 100644 --- a/framework/thirdparty/wechat/wechat-common/src/main/java/org/laidu/learn/wechat/common/service/CoreService.java +++ b/framework/thirdparty/wechat/wechat-common/src/main/java/org/laidu/learn/wechat/common/service/CoreService.java @@ -1,14 +1,13 @@ package org.laidu.learn.wechat.common.service; -import java.io.IOException; -import java.util.List; - -import org.apache.http.NameValuePair; -import org.apache.http.client.ClientProtocolException; - import me.chanjar.weixin.mp.bean.message.WxMpXmlMessage; import me.chanjar.weixin.mp.bean.message.WxMpXmlOutMessage; import me.chanjar.weixin.mp.bean.result.WxMpUser; +import org.apache.http.NameValuePair; +import org.apache.http.client.ClientProtocolException; + +import java.io.IOException; +import java.util.List; /** * Created by FirenzesEagle on 2016/5/30 0030. diff --git a/framework/thirdparty/wechat/wechat-common/src/main/java/org/laidu/learn/wechat/common/util/Sha1Util.java b/framework/thirdparty/wechat/wechat-common/src/main/java/org/laidu/learn/wechat/common/util/Sha1Util.java index 6bf560a9a..02712ddb2 100644 --- a/framework/thirdparty/wechat/wechat-common/src/main/java/org/laidu/learn/wechat/common/util/Sha1Util.java +++ b/framework/thirdparty/wechat/wechat-common/src/main/java/org/laidu/learn/wechat/common/util/Sha1Util.java @@ -1,11 +1,7 @@ package org.laidu.learn.wechat.common.util; import java.security.MessageDigest; -import java.util.Iterator; -import java.util.Map; -import java.util.Random; -import java.util.Set; -import java.util.SortedMap; +import java.util.*; /** * createSHA1Sign创建签名SHA1 diff --git a/framework/web/play/src/main/java/org/laidu/learn/play/controller/Application.java b/framework/web/play/src/main/java/org/laidu/learn/play/controller/Application.java index dd973d291..881fd313b 100644 --- a/framework/web/play/src/main/java/org/laidu/learn/play/controller/Application.java +++ b/framework/web/play/src/main/java/org/laidu/learn/play/controller/Application.java @@ -1,8 +1,8 @@ package org.laidu.learn.play.controller; import lombok.extern.slf4j.Slf4j; -import play.*; -import play.mvc.*; +import play.mvc.Controller; +import play.mvc.Result; /** * Application diff --git a/language-advance/concurrent/src/test/java/org/laidu/learn/concurrent/pool/ForkJoinPoolDemoTest.java b/language-advance/concurrent/src/test/java/org/laidu/learn/concurrent/pool/ForkJoinPoolDemoTest.java index 2cf7add67..d6404bbd3 100644 --- a/language-advance/concurrent/src/test/java/org/laidu/learn/concurrent/pool/ForkJoinPoolDemoTest.java +++ b/language-advance/concurrent/src/test/java/org/laidu/learn/concurrent/pool/ForkJoinPoolDemoTest.java @@ -1,7 +1,5 @@ package org.laidu.learn.concurrent.pool; -import static org.junit.jupiter.api.Assertions.*; - class ForkJoinPoolDemoTest { } \ No newline at end of file diff --git a/language-advance/io/src/main/java/org/laidu/learn/io/nio/Worker.java b/language-advance/io/src/main/java/org/laidu/learn/io/nio/Worker.java index 4799f3e5a..ed0227234 100644 --- a/language-advance/io/src/main/java/org/laidu/learn/io/nio/Worker.java +++ b/language-advance/io/src/main/java/org/laidu/learn/io/nio/Worker.java @@ -4,9 +4,7 @@ import lombok.extern.slf4j.Slf4j; import java.io.IOException; -import java.nio.Buffer; import java.nio.ByteBuffer; -import java.nio.IntBuffer; import java.nio.channels.SocketChannel; /** diff --git a/language-advance/io/src/main/java/org/laidu/learn/io/nio/channel/BasicChannelExample.java b/language-advance/io/src/main/java/org/laidu/learn/io/nio/channel/BasicChannelExample.java index dd6fe713d..9abd07b5e 100644 --- a/language-advance/io/src/main/java/org/laidu/learn/io/nio/channel/BasicChannelExample.java +++ b/language-advance/io/src/main/java/org/laidu/learn/io/nio/channel/BasicChannelExample.java @@ -3,7 +3,6 @@ import lombok.extern.slf4j.Slf4j; -import java.io.File; import java.io.IOException; import java.io.RandomAccessFile; import java.nio.ByteBuffer; diff --git a/language-feature/src/main/java/org/laidu/learn/language/feature/net/http/HttpServerDemo.java b/language-feature/src/main/java/org/laidu/learn/language/feature/net/http/HttpServerDemo.java index 8742f8235..48258985e 100644 --- a/language-feature/src/main/java/org/laidu/learn/language/feature/net/http/HttpServerDemo.java +++ b/language-feature/src/main/java/org/laidu/learn/language/feature/net/http/HttpServerDemo.java @@ -2,7 +2,10 @@ import lombok.extern.slf4j.Slf4j; -import javax.servlet.*; +import javax.servlet.GenericServlet; +import javax.servlet.ServletException; +import javax.servlet.ServletRequest; +import javax.servlet.ServletResponse; import javax.servlet.annotation.WebServlet; import java.io.IOException; diff --git a/language-feature/src/main/java/org/laidu/learn/language/feature/string/StringPartMethod.java b/language-feature/src/main/java/org/laidu/learn/language/feature/string/StringPartMethod.java index efb73143a..1cf6b7a71 100644 --- a/language-feature/src/main/java/org/laidu/learn/language/feature/string/StringPartMethod.java +++ b/language-feature/src/main/java/org/laidu/learn/language/feature/string/StringPartMethod.java @@ -3,10 +3,8 @@ import lombok.extern.slf4j.Slf4j; -import java.util.ArrayList; import java.util.Objects; import java.util.StringJoiner; -import java.util.regex.Pattern; /** * java.lang.String 部分源码分析 diff --git a/language-feature/src/test/java/org/laidu/learn/language/feature/container/ContainerTest.java b/language-feature/src/test/java/org/laidu/learn/language/feature/container/ContainerTest.java index 162b5e3dc..6d297ccb9 100644 --- a/language-feature/src/test/java/org/laidu/learn/language/feature/container/ContainerTest.java +++ b/language-feature/src/test/java/org/laidu/learn/language/feature/container/ContainerTest.java @@ -3,7 +3,9 @@ import lombok.extern.slf4j.Slf4j; import org.junit.jupiter.api.Test; -import java.util.*; +import java.util.HashMap; +import java.util.Map; +import java.util.Set; import java.util.concurrent.CopyOnWriteArraySet; import java.util.stream.IntStream; diff --git a/language-feature/src/test/java/org/laidu/learn/language/feature/date/DateUsageTest.java b/language-feature/src/test/java/org/laidu/learn/language/feature/date/DateUsageTest.java index 68883b01a..c25b629c2 100644 --- a/language-feature/src/test/java/org/laidu/learn/language/feature/date/DateUsageTest.java +++ b/language-feature/src/test/java/org/laidu/learn/language/feature/date/DateUsageTest.java @@ -2,8 +2,6 @@ import org.junit.jupiter.api.Test; -import static org.junit.jupiter.api.Assertions.*; - /** * Created by 臧天才 on 2017/8/23 下午6:31. */ diff --git a/language-feature/src/test/java/org/laidu/learn/language/feature/date/source/LocalTimeTest.java b/language-feature/src/test/java/org/laidu/learn/language/feature/date/source/LocalTimeTest.java index f9cd2442f..33ec9ce9f 100644 --- a/language-feature/src/test/java/org/laidu/learn/language/feature/date/source/LocalTimeTest.java +++ b/language-feature/src/test/java/org/laidu/learn/language/feature/date/source/LocalTimeTest.java @@ -5,9 +5,6 @@ import org.junit.jupiter.api.Test; import java.time.LocalTime; -import java.time.ZoneId; - -import static org.junit.jupiter.api.Assertions.*; /** * Created by 臧天才 on 2017/8/23 下午6:38. diff --git a/language-feature/src/test/java/org/laidu/learn/language/feature/string/StringTest.java b/language-feature/src/test/java/org/laidu/learn/language/feature/string/StringTest.java index 0787340bb..663f254b7 100644 --- a/language-feature/src/test/java/org/laidu/learn/language/feature/string/StringTest.java +++ b/language-feature/src/test/java/org/laidu/learn/language/feature/string/StringTest.java @@ -3,9 +3,6 @@ import lombok.extern.slf4j.Slf4j; import org.junit.jupiter.api.DisplayName; import org.junit.jupiter.api.Test; -import org.junit.runner.RunWith; - -import static org.junit.jupiter.api.Assertions.*; /** * Created by 臧天才 on 2017/8/21. diff --git a/production-component/common-util/src/main/java/org/laidu/commom/util/string/StringUtil.java b/production-component/common-util/src/main/java/org/laidu/commom/util/string/StringUtil.java index 4918bcc23..20e5e56c2 100644 --- a/production-component/common-util/src/main/java/org/laidu/commom/util/string/StringUtil.java +++ b/production-component/common-util/src/main/java/org/laidu/commom/util/string/StringUtil.java @@ -1,8 +1,6 @@ package org.laidu.commom.util.string; import lombok.extern.slf4j.Slf4j; -import org.laidu.commom.util.annotation.Singleton; -import org.laidu.commom.util.xml.JAXBUtil; import java.util.ArrayList; import java.util.List; diff --git a/production-component/common-util/src/test/java/org/laidu/commom/util/string/StringUtilTest.java b/production-component/common-util/src/test/java/org/laidu/commom/util/string/StringUtilTest.java index 86e96e67f..92e9fcac5 100644 --- a/production-component/common-util/src/test/java/org/laidu/commom/util/string/StringUtilTest.java +++ b/production-component/common-util/src/test/java/org/laidu/commom/util/string/StringUtilTest.java @@ -3,8 +3,6 @@ import lombok.extern.slf4j.Slf4j; import org.junit.jupiter.api.Test; -import static org.junit.jupiter.api.Assertions.*; - @Slf4j class StringUtilTest { diff --git a/production-component/crawler-helper/src/main/java/org/laidu/crawler/helper/PageProcessorGen.java b/production-component/crawler-helper/src/main/java/org/laidu/crawler/helper/PageProcessorGen.java index 7f68bb2f3..fd61f8fd8 100644 --- a/production-component/crawler-helper/src/main/java/org/laidu/crawler/helper/PageProcessorGen.java +++ b/production-component/crawler-helper/src/main/java/org/laidu/crawler/helper/PageProcessorGen.java @@ -4,12 +4,10 @@ import com.google.gson.Gson; import com.squareup.javapoet.CodeBlock; import com.squareup.javapoet.MethodSpec; -import com.squareup.javapoet.ParameterSpec; import jodd.io.FileUtil; import jodd.util.StringUtil; import lombok.NonNull; import lombok.extern.slf4j.Slf4j; -import org.laidu.commom.util.encryption.AESEncryptionUtil; import org.laidu.commom.util.http.curl.CurlParserUtilV2; import org.laidu.commom.util.xml.JAXBUtil; import org.laidu.crawler.helper.model.CrawlerSite; diff --git a/production-component/crawler-helper/src/main/resources/template/PageProcessorTemplate.java b/production-component/crawler-helper/src/main/resources/template/PageProcessorTemplate.java index f676fba32..5d73bfec4 100644 --- a/production-component/crawler-helper/src/main/resources/template/PageProcessorTemplate.java +++ b/production-component/crawler-helper/src/main/resources/template/PageProcessorTemplate.java @@ -1,17 +1,9 @@ package __PACKAGE_NAME__; -import com.alibaba.fastjson.JSONObject; import com.alpha.business.common.model.query.base.StringQueryRequest; import com.alpha.business.crawler.AbstractRegPageProcessor; -import com.alpha.business.crawler.annotation.CrawlerProxyType; -import com.alpha.common.enums.query.CrawlerProxyTypeEnum; import com.alpha.common.enums.crawler.PlatformCodeEnum; -import com.alpha.common.utils.Md5Util; import lombok.extern.slf4j.Slf4j; -import org.apache.commons.lang.StringUtils; -import org.apache.http.NameValuePair; -import org.apache.http.message.BasicNameValuePair; -import org.springframework.stereotype.Component; import us.codecraft.webmagic.Page; import us.codecraft.webmagic.Request; import us.codecraft.webmagic.Site; diff --git a/production-component/crawler/src/main/java/org/laidu/crawler/entity/ParserResult.java b/production-component/crawler/src/main/java/org/laidu/crawler/entity/ParserResult.java index 552026662..d4d5e69f9 100644 --- a/production-component/crawler/src/main/java/org/laidu/crawler/entity/ParserResult.java +++ b/production-component/crawler/src/main/java/org/laidu/crawler/entity/ParserResult.java @@ -1,6 +1,8 @@ package org.laidu.crawler.entity; -import lombok.*; +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; import us.codecraft.webmagic.Request; import java.util.ArrayList; diff --git a/production-component/crawler/src/main/java/org/laidu/crawler/model/PageProxy.java b/production-component/crawler/src/main/java/org/laidu/crawler/model/PageProxy.java index 599451316..4b1bd3a19 100644 --- a/production-component/crawler/src/main/java/org/laidu/crawler/model/PageProxy.java +++ b/production-component/crawler/src/main/java/org/laidu/crawler/model/PageProxy.java @@ -1,7 +1,6 @@ package org.laidu.crawler.model; import lombok.AllArgsConstructor; -import lombok.Builder; import lombok.Getter; import us.codecraft.webmagic.Request; import us.codecraft.webmagic.selector.Html; diff --git a/production-component/crawler/src/main/java/org/laidu/crawler/processor/AbstractPageProcessor.java b/production-component/crawler/src/main/java/org/laidu/crawler/processor/AbstractPageProcessor.java index 0371999e2..6967a2947 100644 --- a/production-component/crawler/src/main/java/org/laidu/crawler/processor/AbstractPageProcessor.java +++ b/production-component/crawler/src/main/java/org/laidu/crawler/processor/AbstractPageProcessor.java @@ -10,8 +10,6 @@ import us.codecraft.webmagic.Site; import us.codecraft.webmagic.processor.PageProcessor; -import java.util.List; - /** * abstract page processor * diff --git a/production-component/crawler/src/main/java/org/laidu/crawler/processor/BaiduPageProcessor.java b/production-component/crawler/src/main/java/org/laidu/crawler/processor/BaiduPageProcessor.java index f3e7f4a41..ab976cd84 100644 --- a/production-component/crawler/src/main/java/org/laidu/crawler/processor/BaiduPageProcessor.java +++ b/production-component/crawler/src/main/java/org/laidu/crawler/processor/BaiduPageProcessor.java @@ -8,6 +8,7 @@ import org.springframework.stereotype.Component; import us.codecraft.webmagic.Request; import us.codecraft.webmagic.Site; + import java.util.Date; /** diff --git a/production-component/crawler/src/main/java/org/laidu/crawler/spider/CrawlerBootStrap.java b/production-component/crawler/src/main/java/org/laidu/crawler/spider/CrawlerBootStrap.java index 5e55786e8..f11995c08 100644 --- a/production-component/crawler/src/main/java/org/laidu/crawler/spider/CrawlerBootStrap.java +++ b/production-component/crawler/src/main/java/org/laidu/crawler/spider/CrawlerBootStrap.java @@ -2,13 +2,9 @@ import org.laidu.crawler.processor.AbstractPageProcessor; import org.laidu.crawler.scheduler.RabbitMQScheduler; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.beans.factory.config.ConfigurableBeanFactory; import org.springframework.context.annotation.Bean; -import org.springframework.context.annotation.Scope; import org.springframework.stereotype.Component; import us.codecraft.webmagic.Spider; -import us.codecraft.webmagic.processor.PageProcessor; import java.util.ArrayList; import java.util.List; diff --git a/src/site/pdf-config.xml b/src/site/pdf-config.xml index 89dfbd332..9165721f9 100644 --- a/src/site/pdf-config.xml +++ b/src/site/pdf-config.xml @@ -1,7 +1,7 @@ +> 8pt From 4c2d32ba986f9091c2d5e3499a013f9b3b881886 Mon Sep 17 00:00:00 2001 From: unknown Date: Sat, 19 Jan 2019 11:43:40 +0800 Subject: [PATCH 233/417] fix webmagic pom --- framework/webmagic/pom.xml | 15 +++++++++++++++ framework/webmagic/webmagic-learn/pom.xml | 1 - 2 files changed, 15 insertions(+), 1 deletion(-) diff --git a/framework/webmagic/pom.xml b/framework/webmagic/pom.xml index 961d196f3..10060cbff 100644 --- a/framework/webmagic/pom.xml +++ b/framework/webmagic/pom.xml @@ -19,5 +19,20 @@ 0.7.3 + + + + us.codecraft + webmagic-core + ${webmagic.version} + + + us.codecraft + webmagic-extension + ${webmagic.version} + + + + \ No newline at end of file diff --git a/framework/webmagic/webmagic-learn/pom.xml b/framework/webmagic/webmagic-learn/pom.xml index e30e03b8b..90059228f 100644 --- a/framework/webmagic/webmagic-learn/pom.xml +++ b/framework/webmagic/webmagic-learn/pom.xml @@ -23,7 +23,6 @@ us.codecraft webmagic-core - ${webmagic.version} From ad40d667816911b7521ea530a95fe77ec1fcb5df Mon Sep 17 00:00:00 2001 From: ztc Date: Tue, 22 Jan 2019 00:14:00 +0800 Subject: [PATCH 234/417] add swagger javax.validators support --- framework/spring/swagger/pom.xml | 7 ++++ .../learn/swagger/demo/config/MvcConfig.java | 37 +++++++++++++++++++ .../swagger/demo/config/SwaggerConfig.java | 2 + .../learn/swagger/demo/dto/ProductReqDTO.java | 8 +++- .../learn/swagger/demo/dto/ProductResDTO.java | 4 +- .../spring/swagger/src/site/markdown/index.md | 2 + 6 files changed, 58 insertions(+), 2 deletions(-) create mode 100644 framework/spring/swagger/src/main/java/org/laidu/learn/swagger/demo/config/MvcConfig.java create mode 100644 framework/spring/swagger/src/site/markdown/index.md diff --git a/framework/spring/swagger/pom.xml b/framework/spring/swagger/pom.xml index 72267a3be..ae6f2f144 100644 --- a/framework/spring/swagger/pom.xml +++ b/framework/spring/swagger/pom.xml @@ -49,6 +49,13 @@ ${springfox-swagger2.version} + + io.springfox + springfox-bean-validators + ${springfox-swagger2.version} + + + org.springframework.boot diff --git a/framework/spring/swagger/src/main/java/org/laidu/learn/swagger/demo/config/MvcConfig.java b/framework/spring/swagger/src/main/java/org/laidu/learn/swagger/demo/config/MvcConfig.java new file mode 100644 index 000000000..53056cd3b --- /dev/null +++ b/framework/spring/swagger/src/main/java/org/laidu/learn/swagger/demo/config/MvcConfig.java @@ -0,0 +1,37 @@ +package org.laidu.learn.swagger.demo.config; + +import lombok.extern.slf4j.Slf4j; +import org.laidu.learn.swagger.demo.enums.ProductTypeIntEnum; +import org.springframework.context.annotation.Configuration; +import org.springframework.format.Formatter; +import org.springframework.format.FormatterRegistry; +import org.springframework.web.servlet.config.annotation.WebMvcConfigurer; + +import java.text.ParseException; +import java.util.Locale; + +/** + * mvc config + *

                    + * Created by tiancai.zang + * on 2019-01-22 00:05. + */ +@Slf4j +@Configuration +public class MvcConfig implements WebMvcConfigurer { + + @Override + public void addFormatters(FormatterRegistry registry) { + registry.addFormatter(new Formatter() { + @Override + public ProductTypeIntEnum parse(String text, Locale locale) throws ParseException { + return ProductTypeIntEnum.valueOf(text); + } + + @Override + public String print(ProductTypeIntEnum object, Locale locale) { + return object.getValue()+""; + } + }); + } +} \ No newline at end of file diff --git a/framework/spring/swagger/src/main/java/org/laidu/learn/swagger/demo/config/SwaggerConfig.java b/framework/spring/swagger/src/main/java/org/laidu/learn/swagger/demo/config/SwaggerConfig.java index 359e40d06..c658b024b 100644 --- a/framework/spring/swagger/src/main/java/org/laidu/learn/swagger/demo/config/SwaggerConfig.java +++ b/framework/spring/swagger/src/main/java/org/laidu/learn/swagger/demo/config/SwaggerConfig.java @@ -3,6 +3,7 @@ import com.google.common.base.Predicates; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; +import org.springframework.context.annotation.Import; import org.springframework.context.annotation.Profile; import springfox.documentation.builders.ParameterBuilder; import springfox.documentation.builders.PathSelectors; @@ -23,6 +24,7 @@ * @date 2017-12-10 21:55 */ @Configuration +@Import(springfox.bean.validators.configuration.BeanValidatorPluginsConfiguration.class) public class SwaggerConfig { diff --git a/framework/spring/swagger/src/main/java/org/laidu/learn/swagger/demo/dto/ProductReqDTO.java b/framework/spring/swagger/src/main/java/org/laidu/learn/swagger/demo/dto/ProductReqDTO.java index df2007636..31a97b4ce 100644 --- a/framework/spring/swagger/src/main/java/org/laidu/learn/swagger/demo/dto/ProductReqDTO.java +++ b/framework/spring/swagger/src/main/java/org/laidu/learn/swagger/demo/dto/ProductReqDTO.java @@ -7,7 +7,9 @@ import lombok.Builder; import lombok.Data; import lombok.NoArgsConstructor; +import org.laidu.learn.swagger.demo.enums.ProductTypeIntEnum; +import javax.validation.constraints.NotNull; import java.util.Date; /** @@ -30,10 +32,14 @@ public class ProductReqDTO { @ApiModelProperty(required = true,name = "产品ID") private String id; + @NotNull + @ApiModelProperty(name = "产品类型",dataType = "ProductTypeIntEnum") + private ProductTypeIntEnum type; + /** * product name */ - @ApiModelProperty(required = true,name = "产品ID",allowableValues = "") + @ApiModelProperty(required = true,name = "产品ID") private String name; /** diff --git a/framework/spring/swagger/src/main/java/org/laidu/learn/swagger/demo/dto/ProductResDTO.java b/framework/spring/swagger/src/main/java/org/laidu/learn/swagger/demo/dto/ProductResDTO.java index 62834a201..bcb9f1960 100644 --- a/framework/spring/swagger/src/main/java/org/laidu/learn/swagger/demo/dto/ProductResDTO.java +++ b/framework/spring/swagger/src/main/java/org/laidu/learn/swagger/demo/dto/ProductResDTO.java @@ -8,6 +8,7 @@ import lombok.Data; import lombok.NoArgsConstructor; +import javax.validation.constraints.NotNull; import java.util.Date; /** @@ -27,12 +28,13 @@ public class ProductResDTO { /** * id */ - @ApiModelProperty(required = true,name = "产品ID") +// @ApiModelProperty(required = true,name = "产品ID") private String id; /** * product name */ + @NotNull(message = "产品名不能为空!") private String name; /** diff --git a/framework/spring/swagger/src/site/markdown/index.md b/framework/spring/swagger/src/site/markdown/index.md new file mode 100644 index 000000000..4ff5a2a43 --- /dev/null +++ b/framework/spring/swagger/src/site/markdown/index.md @@ -0,0 +1,2 @@ +# springfox 学习 + From cb3d8ef7bfe8df6d5786550ae03e1cc462537446 Mon Sep 17 00:00:00 2001 From: zangtiancai Date: Mon, 11 Feb 2019 16:41:29 +0800 Subject: [PATCH 235/417] fix h ttp -> http --- .../java/org/laidu/learn/framework/webclient/usage/Usage.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/framework/network/web-client/src/main/java/org/laidu/learn/framework/webclient/usage/Usage.java b/framework/network/web-client/src/main/java/org/laidu/learn/framework/webclient/usage/Usage.java index 7111775ab..ca9c71ba5 100644 --- a/framework/network/web-client/src/main/java/org/laidu/learn/framework/webclient/usage/Usage.java +++ b/framework/network/web-client/src/main/java/org/laidu/learn/framework/webclient/usage/Usage.java @@ -26,7 +26,7 @@ public static void main(String[] args) { WebClient.create() .get() .uri(uriBuilder -> uriBuilder - .scheme("h ttp") + .scheme("http") .host("www.baidu.com") .path("/s") .queryParam("wd", "北京天气") From 59ecb3f608c3297449fb1ab0d26d9c7baaadc3fb Mon Sep 17 00:00:00 2001 From: zangtiancai Date: Mon, 11 Feb 2019 16:57:20 +0800 Subject: [PATCH 236/417] remove same encryption --- .../learn/algorithm/encryption/AESUtil.java | 59 --------- .../algorithm/encryption/BytesToHex.java | 25 ---- .../learn/algorithm/encryption/DESUtil.java | 74 ------------ .../learn/algorithm/encryption/DESede.java | 113 ------------------ .../algorithm/encryption/AESUtilTest.java | 65 ---------- .../algorithm/encryption/DESedeTest.java | 49 -------- .../bytecode/aspectj/LogStartTime0.java | 18 --- .../bytecode/aspectj/LogStartTime1.java | 18 --- .../bytecode/aspectj/MethodStartAspect0.java | 37 ------ .../bytecode/aspectj/MethodStartAspect1.java | 37 ------ 10 files changed, 495 deletions(-) delete mode 100755 algorithm/src/main/java/org/laidu/learn/algorithm/encryption/AESUtil.java delete mode 100755 algorithm/src/main/java/org/laidu/learn/algorithm/encryption/BytesToHex.java delete mode 100755 algorithm/src/main/java/org/laidu/learn/algorithm/encryption/DESUtil.java delete mode 100644 algorithm/src/main/java/org/laidu/learn/algorithm/encryption/DESede.java delete mode 100644 algorithm/src/test/java/org/laidu/learn/algorithm/encryption/AESUtilTest.java delete mode 100644 algorithm/src/test/java/org/laidu/learn/algorithm/encryption/DESedeTest.java delete mode 100644 language-advance/bytecode/src/main/java/org/laidu/learn/advance/bytecode/aspectj/LogStartTime0.java delete mode 100644 language-advance/bytecode/src/main/java/org/laidu/learn/advance/bytecode/aspectj/LogStartTime1.java delete mode 100644 language-advance/bytecode/src/main/java/org/laidu/learn/advance/bytecode/aspectj/MethodStartAspect0.java delete mode 100644 language-advance/bytecode/src/main/java/org/laidu/learn/advance/bytecode/aspectj/MethodStartAspect1.java diff --git a/algorithm/src/main/java/org/laidu/learn/algorithm/encryption/AESUtil.java b/algorithm/src/main/java/org/laidu/learn/algorithm/encryption/AESUtil.java deleted file mode 100755 index e24b5a5fe..000000000 --- a/algorithm/src/main/java/org/laidu/learn/algorithm/encryption/AESUtil.java +++ /dev/null @@ -1,59 +0,0 @@ -package org.laidu.learn.algorithm.encryption; - -import javax.crypto.Cipher; -import javax.crypto.KeyGenerator; -import javax.crypto.SecretKey; -import javax.crypto.spec.IvParameterSpec; -import javax.crypto.spec.SecretKeySpec; - -/** - * AES算法编程实现 - * @author xzb - * - */ -public class AESUtil { - - /** - * 生成密钥 - * @throws Exception - */ - public static byte[] initKey() throws Exception{ - //密钥生成器 - KeyGenerator keyGen = KeyGenerator.getInstance("AES"); - //初始化密钥生成器 - keyGen.init(128); //默认128,获得无政策权限后可用192或256 - //生成密钥 - SecretKey secretKey = keyGen.generateKey(); - return secretKey.getEncoded(); - } - - /** - * 加密 - * @throws Exception - */ - public static byte[] encryptAES(byte[] data, byte[] key, byte[] ivp) throws Exception{ - //恢复密钥 - SecretKey secretKey = new SecretKeySpec(key, "AES"); - //Cipher完成加密 - Cipher cipher = Cipher.getInstance("AES/CBC/PKCS5Padding"); - //根据密钥对cipher进行初始化 - cipher.init(Cipher.ENCRYPT_MODE, secretKey, new IvParameterSpec(ivp)); - //加密 - byte[] encrypt = cipher.doFinal(data); - - return encrypt; - } - /** - * 解密 - */ - public static byte[] decryptAES(byte[] data, byte[] key, byte[] ivp) throws Exception{ - //恢复密钥生成器 - SecretKey secretKey = new SecretKeySpec(key, "AES"); - //Cipher完成解密 - Cipher cipher = Cipher.getInstance("AES/CBC/PKCS5Padding"); - //根据密钥对cipher进行初始化 - cipher.init(Cipher.DECRYPT_MODE, secretKey, new IvParameterSpec(ivp)); - byte[] plain = cipher.doFinal(data); - return plain; - } -} diff --git a/algorithm/src/main/java/org/laidu/learn/algorithm/encryption/BytesToHex.java b/algorithm/src/main/java/org/laidu/learn/algorithm/encryption/BytesToHex.java deleted file mode 100755 index 0fb4aa298..000000000 --- a/algorithm/src/main/java/org/laidu/learn/algorithm/encryption/BytesToHex.java +++ /dev/null @@ -1,25 +0,0 @@ -package org.laidu.learn.algorithm.encryption; - -/** - * 字节码转化十六进制 - * @author xzb - * - */ -public class BytesToHex { - - public static String fromBytesToHex(byte[] resultBytes){ - StringBuilder builder = new StringBuilder(); - for(int i = 0; i < resultBytes.length; i++){ - if(Integer.toHexString(0xFF & resultBytes[i]).length() == 1){ - builder.append("0").append(Integer.toHexString(0xFF & resultBytes[i])); - }else{ - builder.append(Integer.toHexString(0xFF & resultBytes[i])); - } - } - return builder.toString(); - } - - public static void main(String[] args) { - System.out.println(Integer.toHexString(0xFF & 15)); - } -} diff --git a/algorithm/src/main/java/org/laidu/learn/algorithm/encryption/DESUtil.java b/algorithm/src/main/java/org/laidu/learn/algorithm/encryption/DESUtil.java deleted file mode 100755 index c1061187f..000000000 --- a/algorithm/src/main/java/org/laidu/learn/algorithm/encryption/DESUtil.java +++ /dev/null @@ -1,74 +0,0 @@ -package org.laidu.learn.algorithm.encryption; - -import jodd.util.Base64; - -import javax.crypto.Cipher; -import javax.crypto.KeyGenerator; -import javax.crypto.SecretKey; -import javax.crypto.spec.SecretKeySpec; - -/** - * DES算法实现 - * @author xzb - * - */ -public class DESUtil { - - /** - * 生成密钥 - * @throws Exception - */ - public static byte[] initKey() throws Exception{ - //密钥生成器 - KeyGenerator keyGen = KeyGenerator.getInstance("DES"); - //初始化密钥生成器 - keyGen.init(56); - //生成密钥 - SecretKey secretKey = keyGen.generateKey(); - return secretKey.getEncoded(); - } - - /** - * 加密 - * @throws Exception - */ - public static byte[] encryptDES(byte[] data, byte[] key) throws Exception{ - //获得密钥 - SecretKey secretKey = new SecretKeySpec(key, "DES"); - //Cipher完成加密 - Cipher cipher = Cipher.getInstance("DES"); - //初始化cipher - cipher.init(Cipher.ENCRYPT_MODE, secretKey); - //加密 - byte[] encrypt = cipher.doFinal(data); - - return encrypt; - } - - /** - * 解密 - */ - public static byte[] decryptDES(byte[] data, byte[] key) throws Exception{ - //恢复密钥 - SecretKey secretKey = new SecretKeySpec(key, "DES"); - //Cipher完成解密 - Cipher cipher = Cipher.getInstance("DES"); - //初始化cipher - cipher.init(Cipher.DECRYPT_MODE, secretKey); - //解密 - byte[] plain = cipher.doFinal(data); - - return plain; - } - - public static void main(String[] args) throws Exception { - - System.out.println(Base64.encodeToString(encryptDES("{\"deviceImsi\":\"\",\"deviceUuid\":\"\",\"imei\":\"\",\"ip\":\"\",\"latitude\":\"\",\"loginId\":\"13241487379\",\"longitude\":\"\",\"mac\":\"\",\"password\":\"q1111111\",\"tokenKey\":\"97317bee-4a6b-4063-92ec-c908b47ffe96\"}".getBytes(), - "ab_sdgd_".getBytes()))); - - - System.out.println(new String(decryptDES(Base64.decode("BQr0VsH+iN+VZMVameIzweZEH84tKfUxcWyYwMqFi2RI1iVKQLjNCKiW4G4zDoClCJSbUZuhkNeqGfEs5pI6/ywhukFgkT3lPOM4q+LbMwG7wlkKrRCNsJGJkUWrV2M6NmZjSKwy72wo1hXThNCpsfCby53VqI3b/JTAfzcsMwPl/u0vGXKdkQh7h25eH5+v1nrjCS4DGipsQI2blkKI55PBgQ2fsfgB"), - "ab_sdgd_".getBytes()))); - - } -} diff --git a/algorithm/src/main/java/org/laidu/learn/algorithm/encryption/DESede.java b/algorithm/src/main/java/org/laidu/learn/algorithm/encryption/DESede.java deleted file mode 100644 index 75006c570..000000000 --- a/algorithm/src/main/java/org/laidu/learn/algorithm/encryption/DESede.java +++ /dev/null @@ -1,113 +0,0 @@ -package org.laidu.learn.algorithm.encryption; - -import javax.crypto.Cipher; -import javax.crypto.KeyGenerator; -import javax.crypto.SecretKey; -import javax.crypto.SecretKeyFactory; -import javax.crypto.spec.DESedeKeySpec; -import javax.crypto.spec.IvParameterSpec; -import java.security.Key; - -/** - * user: wen.chen(wen.chen@cafintech.com) - *

                    - * time: 17/12/5 - */ -public class DESede { - /** - * 密钥算法 - * */ - public static final String KEY_ALGORITHM="DESede"; - - /** - * 加密/解密算法/工作模式/填充方式 - * */ - public static final String CIPHER_ALGORITHM="DESede/CBC/PKCS5Padding"; - - /** - * - * 生成密钥 - * @return byte[] 二进制密钥 - * */ - public static byte[] initkey() throws Exception{ - - //实例化密钥生成器 - KeyGenerator kg=KeyGenerator.getInstance(KEY_ALGORITHM); - //初始化密钥生成器 - kg.init(168); - //生成密钥 - SecretKey secretKey=kg.generateKey(); - //获取二进制密钥编码形式 - return secretKey.getEncoded(); - } - /** - * 转换密钥 - * @param key 二进制密钥 - * @return Key 密钥 - * */ - public static Key toKey(byte[] key) throws Exception{ - //实例化Des密钥 - DESedeKeySpec dks=new DESedeKeySpec(key); - //实例化密钥工厂 - SecretKeyFactory keyFactory=SecretKeyFactory.getInstance(KEY_ALGORITHM); - //生成密钥 - SecretKey secretKey=keyFactory.generateSecret(dks); - return secretKey; - } - - /** - * 加密数据 - * @param data 待加密数据 - * @param key 密钥 - * @return byte[] 加密后的数据 - * */ - public static byte[] encrypt(byte[] data,byte[] key,byte[] ivp) throws Exception{ - //还原密钥 - Key k=toKey(key); - //实例化 - Cipher cipher=Cipher.getInstance(CIPHER_ALGORITHM); - //初始化,设置为加密模式 - cipher.init(Cipher.ENCRYPT_MODE, k,new IvParameterSpec(ivp)); - //执行操作 - return cipher.doFinal(data); - } - /** - * 解密数据 - * @param data 待解密数据 - * @param key 密钥 - * @return byte[] 解密后的数据 - * */ - public static byte[] decrypt(byte[] data,byte[] key,byte[] ivp) throws Exception{ - //欢迎密钥 - Key k =toKey(key); - //实例化 - Cipher cipher=Cipher.getInstance(CIPHER_ALGORITHM); - //初始化,设置为解密模式 - cipher.init(Cipher.DECRYPT_MODE, k, new IvParameterSpec(ivp)); - //执行操作 - return cipher.doFinal(data); - } - /** - * 进行加解密的测试 - * @throws Exception - */ - public static void main(String[] args) throws Exception { -// String str="DESede"; -// System.out.println("原文:/t"+str); -// //初始化密钥 -// byte[] key=DESede.initkey(); -// System.out.println("密钥:/t"+ Base64.encodeBase64String(key)); -// //加密数据 -// byte[] data=DESede.encrypt(str.getBytes(), key); -// System.out.println("加密后:/t"+Base64.encodeBase64String(data)); -// //解密数据 -// data=DESede.cbcDecrypt(data, key); -// System.out.println("解密后:/t"+new String(data)); - - -// System.out.println(new String(cbcDecrypt(Hex.decodeHex("b5720f816f50db5eb94116fd795b9f770f4af1f252692aa8c138f0e8150856db0b52b7c8000a7be699aabc4ab106f380f9e488a10e8269792beb5b46a667cdf32e20cf7649e74841dcfc49d871e100bda5b005efdca1abf6d8f95b802b6db01dc0bc44d9f75be7b899fcac6bf3674bff51429cb76f9ea218fa2bad0b88a6c6c80d9edbb96f284e26c08a514ffe89869973b1d297873df3042f7fed5cff21498279cee5c1521deab082083b21bbdbcdcbe94fb492867d0f86e85abe28a833f518ae8bea426903c923bd5014d733aca51d689036c848d6a9f9a984ac4b07ea513bc0e43baa0023274cbac722d157661202e3f3be1793e6e813".toCharArray()), -// "1234567`90koiuyhgtfrdews".getBytes(),Hex.decodeHex("0000000000000000".toCharArray())))); - - - } -} diff --git a/algorithm/src/test/java/org/laidu/learn/algorithm/encryption/AESUtilTest.java b/algorithm/src/test/java/org/laidu/learn/algorithm/encryption/AESUtilTest.java deleted file mode 100644 index 8f162e84b..000000000 --- a/algorithm/src/test/java/org/laidu/learn/algorithm/encryption/AESUtilTest.java +++ /dev/null @@ -1,65 +0,0 @@ -package org.laidu.learn.algorithm.encryption; - -import jodd.util.Base64; -import lombok.extern.slf4j.Slf4j; -import org.apache.commons.codec.binary.Hex; -import org.junit.jupiter.api.BeforeEach; -import org.junit.jupiter.api.Test; - -@Slf4j -class AESUtilTest { - - - @BeforeEach - void setUp() { - } - - @Test - void encryptAES() throws Exception { - - //爸爸钱包 - String encrypString = "5LzbdFzcgXpHYzP/MtHpKpqeujNAr7nn05HWALGjudJedauho0G8HRXmgPL9h62PvciQ2NhiQ/j5PPknyP5PYeklspNa3iV5C9hm1/GauWR5nNmNfAjkSNPOe9oCK3ao9kiYlPZwJ+ggxu6sh0esNDJpIB14WjCOL8C+DZuL+lyPJqNNLbtzYeOFSdIdV7fe9vhWarVmGlGo92ATTV48vdNrxujOfhyrDBD9ks5pmY/wRs0RynrmCTEqbO4iECzTSahRtASv186LflijzlsTndK4aQuAOi4Dy+3ZkP04fb+VeO0h6vKVIECzkS/vmyVXIChsSvHesFnVeg5W4axUhnvGICO4xwM3H1t5lxUnnAo="; - byte[] source = AESUtil.decryptAES(Base64.decode(encrypString),"5O0ItwSgCtrrsuV9C2fRJWDBh2FNGItJ".getBytes(), Hex.decodeHex("00000000000000000000000000000000".toCharArray())); - log.info("new String(source) 's value : {}", new String(source)); - - } - - @Test - void encryptAES1() throws Exception { - - //百姓钱包 - String encrypString = "2LGhHJ9g7fNVpRcM3MRNA0zALulsd5t4tl3lmvxLo9WClgAkPoNOcSZFpipoXh9cseVoTT6cWwpBqKItUBBsIQ=="; - byte[] source = AESUtil.decryptAES(Base64.decode(encrypString),"418c764b9f0f202d".getBytes(), Base64.decode("NDI0ODI3QTU4NThDQzNCRA==")); - log.info("new String(source) 's value : {}", new String(source)); - - } - - @Test - void decryptAES2() throws Exception { - - //蜡笔分期 - String encrypString = "YXMwUmh6QzdoamNDMU9FOFBnRTh1TTQwOFdSWVQ4TkF6Ynh6TERIZTZmOTBFMjhJT2NvYUFoUExDOXNYTnMyVGxaUmVXTTM4RWc5OQ0KV0dFcXlBZUlaUUMyUWhqMGtGb2toMXh6ME1EYXAyTGxZRGFKVGRRaVM1S1VYZmhQajFIRWxkcVgrTEhXZXBGb1YvaU9DTXpqbWszdQ0KR2hxcmMxb3haNC9ROEFDY0dVS1VyUXU5eTQweUltSGNaZlpibXUyRHdyTlZqL2lUeXNVdko4NlJyK2dDTDRBcW11SUVGTGZvQzdwVQ0KbUFzTDNndWJFZTRraHBNRTl1QmZEdmlwd09hL2NzVkQybUxvbzYvb0RtWVhPaDNVQWFwZkVaemZFZExjZGZTcEM4d2YzMGtvS2RNeQ0KaFU4bmtJdlFFV0tEY2lWY0FRZFlYbDM1eEJsTHJlUkpscHhHOE5uOFRPWUh4WktEQVhHb2M1N2h4M1k9"; - byte[] source = AESUtil.decryptAES(Base64.decode(Base64.decode(encrypString)),"8183878756300635".getBytes(), "1861218900688990".getBytes()); - log.info("new String(source) 's value : {}", new String(source)); - - } - - @Test - void encryptAES3() throws Exception { - - System.out.println(Base64.encodeToString( - new String(Hex.decodeHex("79311704ccfe4f16befba4d227c9c961e5232f49eb61280a932550ec4960bcbe03a52a70d05af400084e7805a018db898c5b3b24cf5c7636e1fa69f2f348910844ab61638c06584c29edecc7a3c8f96d4ad142124aa11be9e227025dfdd5da19d15c6f876607a47e3e59830cb7f86f15fd634a80f32955f0cdafaa4ca29be33a718860a0ceb3f89654bb3d9a81e5938dd86a01d6c9f2615372a946d19de24e412ea11d97edd79a7c7e31603922d04d9f43f2cc1da6f8ab3823512f24de58e6d8803982be3777cd892d7d0be87278a0eba2f09f8f5be5d25c31d845c98da43dc746bfdebf9dca5320d1d5495e9dd902b33578bd82318056ea5b0490e5487a020a626f3ebf236e96a56136a30a0d12a562526928e0eccd3a28cde1e2cdce5ad02cd6dd7c249e5bfdebbf06958991d874961e0b1f266ccbd66c135410da342837a329bd6a9077ae6430755b749a0a77a5c35a01cf857669b137c8955b006c39114ad19337cfcb410e7ad1bf8ef9581009cf602da09e0aebf9f0843b55dc68feb9cd2834c83f259860148ba44defaf965bbc21c64b89882ebbdc76083b63ae12fd2e5a465b61207a98c48e047e451ea525ad0cd78247b0c16149ab8ff15bf31e0fae8d1395b1ba462edae0ed97cb39a17f1a22631f8ea032a852d325fc26602db907d0906f525dfd387103c3984b2830ea9a".toCharArray())))); - } - - @Test - void decryptAES() { - } - - @Test - void encryptAESECB(){ - - - - } - -} \ No newline at end of file diff --git a/algorithm/src/test/java/org/laidu/learn/algorithm/encryption/DESedeTest.java b/algorithm/src/test/java/org/laidu/learn/algorithm/encryption/DESedeTest.java deleted file mode 100644 index 2779268ba..000000000 --- a/algorithm/src/test/java/org/laidu/learn/algorithm/encryption/DESedeTest.java +++ /dev/null @@ -1,49 +0,0 @@ -package org.laidu.learn.algorithm.encryption; - -import jodd.util.Base64; -import lombok.extern.slf4j.Slf4j; -import org.junit.jupiter.api.BeforeEach; -import org.junit.jupiter.api.Test; - -@Slf4j -class DESedeTest { - @BeforeEach - void setUp() { - } - - @Test - void encrypt() throws Exception { - - String encrypString = "15838125654"; - byte[] source = DESede.encrypt(Base64.decode(encrypString), "@xi'an%lvdian#xitongbu~&".getBytes(), "01234567".getBytes()); - log.info("new String(source) 's value : {}", Base64.encodeToString(source)); - } - - @Test - void decrypt() throws Exception { - - String encrypString = "Kk8Ul0RirAmpHbpS5Kd2jNJEttb56l2S3BrcHfdNZmL6cyarBgpbA5JQ74EV1KnSMYObGkB248bB7iTVy/da6JMwK6b2sK1ET28zz0nd3191ukMmlXbrv6V2XlvvWZvRWbqe1M+roolt7Pfo1wLE8Qai7Z6nuSpWyyGYvSmV2K0="; -// String encrypString = "+SqABQLTngme+5ta3MAie9sZWlhM48/q4URHBfdsnEvvw4zvrf03QzFlQUrzuoUhItDbvZ9iAQy9M9zC4uN+7gC0daWBiELR/X3Y8SsdK6A="; - byte[] source = DESede.decrypt(Base64.decode(encrypString), "@xi'an%lvdian#xitongbu~&".getBytes(), "01234567".getBytes()); - log.info("new String(source) 's value : {}", new String(source)); - } - - @Test - void decrypt1() throws Exception { - -// String encrypString = "tpU56yxqMfMzGzDO1zApo4uKU0S72j5aiWklRT+BZ3JuSiJAnozaP4pUyvPHUriIPCyqz3WrPFdvQfOhM/rIsKHl8rapeCR7RCfXLC+a35GF7DSTIUcEjM/E3CULKaQIaKwRAIlUpkQ/HzvV5OxIJkitUYvToHuI"; -// String encrypString = "lXAMG0mJ3Vj95uytdjyxG0dqtXylyHXDc4oExQaPlcpg/mrr5jQhtO94mlNN6V5ynAtPGbfQ4gCEAl8WBQm3Wn7GwgFKpdmYWa3CDEUxAoIMFOBwVMvPVmlRRHjU++PADngJ8vRgzGm7lyqNHzCziyj4zszsColpTuBEqrgwOULAMAVamc3zHsFa1vl5vzCfclKlqDg91jvxpt3Zz+q8YSd4fkEDzaz4e6tICkPiXdUVVAWnX5miY/ZHAbq6XHMtGtzlhrWX0i7iBVI0kEw6LZyb5drPFCtNB5jRiGOGcMEIZxjHqdcskdY1PPYL4h3CWQcs9NOr6iVxHUkc6SBFVdlpCuRBURXGlfu52v1ZNT8jD1xkaz5arSxlJFiirVq26hI4/uQDosqRZy+63YegVCxbvkUUUXkfY2AhFCVqTNc7E/Hxdl6CcFQPWHmB59knH3xcFWehi11oF/PYeQbLFk0XmC8CN/JRgR1v1bus7r3zzrTvJdL2YdRSscCLtmlgb+G5/5ZxqAzeFfs7SQd0ocfOOzlFkK5YeRIIX0PNjIxS6RfwWwlZjbXW/oGmKOId2LcHdhuWeIZPkpgUtbW7mzzzVQwMz35+vL/Rz9pYgZr6tl1kQRUnpSFgACDoC0M68UPmtFLSgFYk2TGl0VQOaQmlFl6dvlDKZXUU06hREuuyFKtmKkEjzZO7SfZAdtwvUvQ9aMsuTvJGWVio0FrQlL+cLbs2ktEhhQSeo6Yqs+8zNG1sbzCLeEimsfZS4eLtZL/daM/JWKoDgEkDaKXrcBI3gkQQx6Yhgkjz64r1iCHyxd0nw8i94igoVsao0GuFWKjoZlTM942bWcQyfePfzb8/27ltZSkjbyGFuKlWW+ymbS5cioGwGkRT4LecGraOaWX6t+tofbT+PcflLLzJkcjTorEus4NojzeU+5Z8t8HZSqEnXfjzr86MIexiNs0RV/S/JKfIKRY9dhEksf3LbmmqXvHjQpTaxjgRBE/6PiDPRorFt9/I6KsEfLR8SIe8VhwDUXiD1phvH0pGWzAhI7Xu7/A/I6JB5NojhQTP/muIUFG8kGAvtXqL9pshbTrZPO/pl0yKGAf3VN3QViD/OCyNOmjMbjQsFc2kf3Ro4I1xvd5hRPU3Uz/JKRMgstlYsiZ7y9+FoCDBmeAgfa3uTmNsBVWWOBXNuqdmwTksCc9xPgm/0FUtvHY4oyNopoMEkJUk1Li1ODQ="; - String encrypString = "tpU56yxqMfMzGzDO1zApo4uKU0S72j5aiWklRT+BZ3JuSiJAnozaP4pUyvPHUriIPCyqz3WrPFdvQfOhM/rIsKHl8rapeCR7RCfXLC+a35GF7DSTIUcEjM/E3CULKaQIaKwRAIlUpkQ/HzvV5OxIJkitUYvToHuI"; - byte[] source = DESede.decrypt(Base64.decode(encrypString), "qazwUIUY45gftyu7689014dv".getBytes(), "08965438".getBytes()); - log.info("new String(source) 's value : {}", new String(source)); - } - - @Test - void encrypt1() throws Exception { - - String encrypString = "{\"RequestParams\":{\"PhoneNo\":\"13241847378\",\"UUID\":\"7297894caecc7a31\",\"UserPwd\":\"2AA1CEDF567ED470313F3EC328E9E10E\",\"channelId\":\"happiness\",\"deviceId\":\"bfe0d224-61a6-3701-bc5e-b38d2e58c6ec\",\"deviceType\":\"android\",\"location\":\"\",\"osVersion\":\"6.0.1\",\"phoneModel\":\"Coolpad\",\"userId\":\"\",\"version\":\"2.1.0\"},\"deviceId\":\"bfe0d224-61a6-3701-bc5e-b38d2e58c6ec\",\"deviceType\":\"android\",\"latitude\":\"39.921154\",\"longitude\":\"116.419624\",\"pushToken\":\"13065ffa4e02776121d\",\"requestUrl\":\"logon\",\"responseClass\":\"com.happycfc.finance.gen.responses.LogonResponse\",\"returnCode\":null,\"returnMsg\":null,\"tag\":\"LoginActivity\",\"token\":\"\",\"tongdunId\":\"eyJvcyI6ImFuZHJvaWQiLCJ2ZXJzaW9uIjoiMy4xLjEiLCJwYWNrYWdlcyI6ImNvbS5oYXBweWNmYy5maW5hbmNlXzIuMS4wIiwicHJvZmlsZV90aW1lIjoyNjAsImludGVydmFsX3RpbWUiOjQ2MjksInRva2VuX2lkIjoidHJyYWVLWk5aQ1hCdHV1d1puS2lcL2RVaXFQbnV1U3duRXEzcitBU1graHFnNlwvbk1rXC84endhTzlPMXhiVGNVWE96ckpFbmFUMW9yQnRKQXBWWU55Vmc9PSJ9\"}"; - byte[] source = DESede.encrypt(encrypString.getBytes(), "qazwUIUY45gftyu7689014dv".getBytes(), "08965438".getBytes()); - log.info("new String(source) 's value : {}", Base64.encodeToString(source)); - } - -} \ No newline at end of file diff --git a/language-advance/bytecode/src/main/java/org/laidu/learn/advance/bytecode/aspectj/LogStartTime0.java b/language-advance/bytecode/src/main/java/org/laidu/learn/advance/bytecode/aspectj/LogStartTime0.java deleted file mode 100644 index 0e36ed6fd..000000000 --- a/language-advance/bytecode/src/main/java/org/laidu/learn/advance/bytecode/aspectj/LogStartTime0.java +++ /dev/null @@ -1,18 +0,0 @@ -package org.laidu.learn.advance.bytecode.aspectj; - -import java.lang.annotation.ElementType; -import java.lang.annotation.Retention; -import java.lang.annotation.RetentionPolicy; -import java.lang.annotation.Target; - -/** - * LogStartTime - * - * @author tiancai.zang - * on 2018-08-28 19:04. - */ -@Target(ElementType.METHOD) -@Retention(RetentionPolicy.RUNTIME) -public @interface LogStartTime0 { - String value() default ""; -} \ No newline at end of file diff --git a/language-advance/bytecode/src/main/java/org/laidu/learn/advance/bytecode/aspectj/LogStartTime1.java b/language-advance/bytecode/src/main/java/org/laidu/learn/advance/bytecode/aspectj/LogStartTime1.java deleted file mode 100644 index 67b9b244b..000000000 --- a/language-advance/bytecode/src/main/java/org/laidu/learn/advance/bytecode/aspectj/LogStartTime1.java +++ /dev/null @@ -1,18 +0,0 @@ -package org.laidu.learn.advance.bytecode.aspectj; - -import java.lang.annotation.ElementType; -import java.lang.annotation.Retention; -import java.lang.annotation.RetentionPolicy; -import java.lang.annotation.Target; - -/** - * LogStartTime - * - * @author tiancai.zang - * on 2018-08-28 19:04. - */ -@Target(ElementType.METHOD) -@Retention(RetentionPolicy.RUNTIME) -public @interface LogStartTime1 { - String value() default ""; -} \ No newline at end of file diff --git a/language-advance/bytecode/src/main/java/org/laidu/learn/advance/bytecode/aspectj/MethodStartAspect0.java b/language-advance/bytecode/src/main/java/org/laidu/learn/advance/bytecode/aspectj/MethodStartAspect0.java deleted file mode 100644 index c9fa58c5c..000000000 --- a/language-advance/bytecode/src/main/java/org/laidu/learn/advance/bytecode/aspectj/MethodStartAspect0.java +++ /dev/null @@ -1,37 +0,0 @@ -package org.laidu.learn.advance.bytecode.aspectj; - -import org.aspectj.lang.annotation.Aspect; -import org.aspectj.lang.annotation.Before; -import org.aspectj.lang.annotation.Pointcut; - -/** - * MethodStartAspect - * - * @author tiancai.zang - * on 2018-08-28 19:05. - */ -@Aspect -public class MethodStartAspect0 { - - private static ThreadLocal startTime = new ThreadLocal<>(); - - @Pointcut("@annotation(logStartTime0)") - private void logStartTimePointcut(LogStartTime0 logStartTime0) { - - } - - @Before("logStartTimePointcut(logStartTime0)") - public void setStartTimeInThreadLocal(LogStartTime0 logStartTime0) { - System.out.println(logStartTime0.value()); - startTime.set(System.currentTimeMillis()); - System.out.println("saved method start time in threadLocal"); - } - - public static Long getStartTime() { - return startTime.get(); - } - - public static void clearStartTime() { - startTime.set(null); - } -} \ No newline at end of file diff --git a/language-advance/bytecode/src/main/java/org/laidu/learn/advance/bytecode/aspectj/MethodStartAspect1.java b/language-advance/bytecode/src/main/java/org/laidu/learn/advance/bytecode/aspectj/MethodStartAspect1.java deleted file mode 100644 index d25e20425..000000000 --- a/language-advance/bytecode/src/main/java/org/laidu/learn/advance/bytecode/aspectj/MethodStartAspect1.java +++ /dev/null @@ -1,37 +0,0 @@ -package org.laidu.learn.advance.bytecode.aspectj; - -import org.aspectj.lang.annotation.Aspect; -import org.aspectj.lang.annotation.Before; -import org.aspectj.lang.annotation.Pointcut; - -/** - * MethodStartAspect - * - * @author tiancai.zang - * on 2018-08-28 19:05. - */ -@Aspect -public class MethodStartAspect1 { - - private static ThreadLocal startTime = new ThreadLocal<>(); - - @Pointcut("@annotation(logStartTime1)") - private void logStartTimePointcut(LogStartTime1 logStartTime1) { - - } - - @Before("logStartTimePointcut(logStartTime1)") - public void setStartTimeInThreadLocal(LogStartTime1 logStartTime1) { - System.out.println(logStartTime1.value()); - startTime.set(System.currentTimeMillis()); - System.out.println("saved method start time in threadLocal"); - } - - public static Long getStartTime() { - return startTime.get(); - } - - public static void clearStartTime() { - startTime.set(null); - } -} \ No newline at end of file From 290d243228b5c3ee07f73e164dc1a58839c6cdae Mon Sep 17 00:00:00 2001 From: zangtiancai Date: Wed, 13 Feb 2019 20:09:24 +0800 Subject: [PATCH 237/417] add spring core module --- framework/spring/pom.xml | 1 + framework/spring/spring-core/pom.xml | 15 +++++ .../laidu/learn/spring/core/bean/Student.java | 60 +++++++++++++++++++ .../spring/core/beanfactory/XmlCreateIOC.java | 26 ++++++++ .../laidu/learn/spring/core/package-info.java | 8 +++ .../src/main/resources/xml/spring.xml | 27 +++++++++ 6 files changed, 137 insertions(+) create mode 100644 framework/spring/spring-core/pom.xml create mode 100644 framework/spring/spring-core/src/main/java/org/laidu/learn/spring/core/bean/Student.java create mode 100644 framework/spring/spring-core/src/main/java/org/laidu/learn/spring/core/beanfactory/XmlCreateIOC.java create mode 100644 framework/spring/spring-core/src/main/java/org/laidu/learn/spring/core/package-info.java create mode 100644 framework/spring/spring-core/src/main/resources/xml/spring.xml diff --git a/framework/spring/pom.xml b/framework/spring/pom.xml index 373a0dc36..bffab652b 100644 --- a/framework/spring/pom.xml +++ b/framework/spring/pom.xml @@ -23,6 +23,7 @@ spring-transaction spring-aop spring-spel + spring-core diff --git a/framework/spring/spring-core/pom.xml b/framework/spring/spring-core/pom.xml new file mode 100644 index 000000000..ce8c46a05 --- /dev/null +++ b/framework/spring/spring-core/pom.xml @@ -0,0 +1,15 @@ + + + + spring + org.laidu.learn + 1.0-SNAPSHOT + + 4.0.0 + + spring-core + + + \ No newline at end of file diff --git a/framework/spring/spring-core/src/main/java/org/laidu/learn/spring/core/bean/Student.java b/framework/spring/spring-core/src/main/java/org/laidu/learn/spring/core/bean/Student.java new file mode 100644 index 000000000..1390e1885 --- /dev/null +++ b/framework/spring/spring-core/src/main/java/org/laidu/learn/spring/core/bean/Student.java @@ -0,0 +1,60 @@ +package org.laidu.learn.spring.core.bean; + +import lombok.Data; +import lombok.ToString; +import lombok.extern.slf4j.Slf4j; + +/** + * student bean + *

                    + * Created by zangtiancai. + * on 2019-02-13 19:29. + */ +@Slf4j(topic = "student") +@Data +@ToString +public class Student { + + private String name; + + private String idCard; + + public String getName() { + return name; + } + + public void setName(String name) { + log.info("===========setName===========: {}",name); + this.name = name; + } + + public String getIdCard() { + return idCard; + } + + public void setIdCard(String idCard) { + log.info("===========setIdCard===========: {}",idCard); + this.idCard = idCard; + } + + public Student() { + log.info("===========无参构造器==========="); + } + + public Student(String name, String idCard) { + this.name = name; + this.idCard = idCard; + log.info("===========全参构造器==========="); + + } + + public Student(String name) { + this.name = name; + log.info("===========name参构造器==========="); + } + + public void init(){ + log.info("===========init方法==========="); + } + +} diff --git a/framework/spring/spring-core/src/main/java/org/laidu/learn/spring/core/beanfactory/XmlCreateIOC.java b/framework/spring/spring-core/src/main/java/org/laidu/learn/spring/core/beanfactory/XmlCreateIOC.java new file mode 100644 index 000000000..56870ff2a --- /dev/null +++ b/framework/spring/spring-core/src/main/java/org/laidu/learn/spring/core/beanfactory/XmlCreateIOC.java @@ -0,0 +1,26 @@ +package org.laidu.learn.spring.core.beanfactory; + +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.BeanFactory; +import org.springframework.beans.factory.xml.XmlBeanFactory; +import org.springframework.core.io.ClassPathResource; + +/** + * 通过xml 初始化容器 + *

                    + * Created by zangtiancai. + * on 2019-02-13 19:28. + */ +@Slf4j +public class XmlCreateIOC { + + public static void main(String[] args) throws InterruptedException { + + BeanFactory factory = new XmlBeanFactory(new ClassPathResource("xml/spring.xml")); + +// Student student = factory.getBean(Student.class); + + System.out.println(factory); + + } +} diff --git a/framework/spring/spring-core/src/main/java/org/laidu/learn/spring/core/package-info.java b/framework/spring/spring-core/src/main/java/org/laidu/learn/spring/core/package-info.java new file mode 100644 index 000000000..222596a41 --- /dev/null +++ b/framework/spring/spring-core/src/main/java/org/laidu/learn/spring/core/package-info.java @@ -0,0 +1,8 @@ +package org.laidu.learn.spring.core; + +/** + * spring core 学习 + *

                    + * Created by zangtiancai. + * on 2019-02-13 19:25. + */ \ No newline at end of file diff --git a/framework/spring/spring-core/src/main/resources/xml/spring.xml b/framework/spring/spring-core/src/main/resources/xml/spring.xml new file mode 100644 index 000000000..805c7d5b4 --- /dev/null +++ b/framework/spring/spring-core/src/main/resources/xml/spring.xml @@ -0,0 +1,27 @@ + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file From 8bdfc0a4a8a459b6f8deffd87b6f6b79c9169a5a Mon Sep 17 00:00:00 2001 From: zangtiancai Date: Wed, 13 Feb 2019 20:11:04 +0800 Subject: [PATCH 238/417] upgrade retrofit to 2.5.0 --- framework/network/pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/framework/network/pom.xml b/framework/network/pom.xml index 0d480f2b1..4b9c7bf98 100644 --- a/framework/network/pom.xml +++ b/framework/network/pom.xml @@ -22,7 +22,7 @@ - 2.4.0 + 2.5.0 2.1.0-alpha24 5.0.8.RELEASE From e3322bf4c42a553b7d2b9993f234e07eff368eff Mon Sep 17 00:00:00 2001 From: zangtiancai Date: Thu, 14 Feb 2019 13:56:59 +0800 Subject: [PATCH 239/417] remove useless todo --- .../src/java/org/laidu/learn/code/practice/package-info.java | 1 - .../java/org/laidu/learn/code/practice/sort/package-info.java | 1 - .../s3/src/main/java/org/laidu/learn/aws/s3/package-info.java | 1 - .../src/main/resources/template/PageProcessorTemplate.java | 2 -- 4 files changed, 5 deletions(-) diff --git a/code-practice/src/java/org/laidu/learn/code/practice/package-info.java b/code-practice/src/java/org/laidu/learn/code/practice/package-info.java index ae2b4a0e5..70406927b 100644 --- a/code-practice/src/java/org/laidu/learn/code/practice/package-info.java +++ b/code-practice/src/java/org/laidu/learn/code/practice/package-info.java @@ -6,5 +6,4 @@ * * @author laidu */ -// TODO: 2018-11-12 11:33 代码练习 package org.laidu.learn.code.practice; \ No newline at end of file diff --git a/code-practice/src/java/org/laidu/learn/code/practice/sort/package-info.java b/code-practice/src/java/org/laidu/learn/code/practice/sort/package-info.java index 869645df0..6fd10aa1d 100644 --- a/code-practice/src/java/org/laidu/learn/code/practice/sort/package-info.java +++ b/code-practice/src/java/org/laidu/learn/code/practice/sort/package-info.java @@ -6,5 +6,4 @@ * * @author laidu */ -// TODO: 2018-11-15 17:01 排序练习 package org.laidu.learn.code.practice.sort; \ No newline at end of file diff --git a/framework/aws/s3/src/main/java/org/laidu/learn/aws/s3/package-info.java b/framework/aws/s3/src/main/java/org/laidu/learn/aws/s3/package-info.java index 7c30b2c8b..0d138d0f9 100644 --- a/framework/aws/s3/src/main/java/org/laidu/learn/aws/s3/package-info.java +++ b/framework/aws/s3/src/main/java/org/laidu/learn/aws/s3/package-info.java @@ -6,4 +6,3 @@ * * @author laidu */ -// TODO: 2018-08-15 18:05 aws s3 使用 diff --git a/production-component/crawler-helper/src/main/resources/template/PageProcessorTemplate.java b/production-component/crawler-helper/src/main/resources/template/PageProcessorTemplate.java index 5d73bfec4..b6f4f2159 100644 --- a/production-component/crawler-helper/src/main/resources/template/PageProcessorTemplate.java +++ b/production-component/crawler-helper/src/main/resources/template/PageProcessorTemplate.java @@ -17,8 +17,6 @@ */ @Slf4j //@Component -//@CrawlerProxyType(type = CrawlerProxyTypeEnum.ONCE_WITHOUT_PROXY) -// TODO: __DATE__ 取消注解 __CLASS_CN_NAME__ public class __CLASS_NAME__PageProcessor extends AbstractRegPageProcessor { public __CLASS_NAME__PageProcessor() { From cb39f710d2aabbcf1e340704c2527a6de44ac81f Mon Sep 17 00:00:00 2001 From: zangtiancai Date: Thu, 14 Feb 2019 19:44:50 +0800 Subject: [PATCH 240/417] add mybatis annotation insert batch --- .../spring/spring-data/spring-mybatis/pom.xml | 17 +- .../controller/UserInfoController.java | 5 +- .../laidu/learn/mybatis/entity/AppUser.java | 47 -- .../learn/mybatis/mapper/AppUserMapper.java | 116 +--- .../mybatis/mapper/AppUserSqlProvider.java | 227 ------- .../learn/mybatis/model/package-info.java | 10 - .../learn/mybatis/model/var/VarAppUser.java | 27 - .../src/main/resources/application.properties | 16 +- .../main/resources/config/generatorConfig.xml | 2 +- .../config/mappers/AppUserMapper.xml | 594 ------------------ .../src/main/resources/db/data.sql | 1 + .../src/main/resources/db/schema.sql | 6 + .../mybatis/mapper/AppUserMapperTest.java | 17 +- .../src/test/resources/application.properties | 54 -- .../src/test/resources/generatorConfig.xml | 67 -- 15 files changed, 63 insertions(+), 1143 deletions(-) delete mode 100644 framework/spring/spring-data/spring-mybatis/src/main/java/org/laidu/learn/mybatis/mapper/AppUserSqlProvider.java delete mode 100644 framework/spring/spring-data/spring-mybatis/src/main/java/org/laidu/learn/mybatis/model/package-info.java delete mode 100644 framework/spring/spring-data/spring-mybatis/src/main/java/org/laidu/learn/mybatis/model/var/VarAppUser.java delete mode 100644 framework/spring/spring-data/spring-mybatis/src/main/resources/config/mappers/AppUserMapper.xml create mode 100644 framework/spring/spring-data/spring-mybatis/src/main/resources/db/data.sql create mode 100644 framework/spring/spring-data/spring-mybatis/src/main/resources/db/schema.sql delete mode 100644 framework/spring/spring-data/spring-mybatis/src/test/resources/application.properties delete mode 100644 framework/spring/spring-data/spring-mybatis/src/test/resources/generatorConfig.xml diff --git a/framework/spring/spring-data/spring-mybatis/pom.xml b/framework/spring/spring-data/spring-mybatis/pom.xml index cdb1ac970..902b64813 100644 --- a/framework/spring/spring-data/spring-mybatis/pom.xml +++ b/framework/spring/spring-data/spring-mybatis/pom.xml @@ -27,6 +27,11 @@ org.mybatis.spring.boot mybatis-spring-boot-starter + + com.h2database + h2 + runtime + org.mybatis.spring.boot mybatis-spring-boot-starter-test @@ -85,11 +90,17 @@ + + + + + - mysql - mysql-connector-java - ${mysql-connect.version} + com.h2database + h2 + 1.4.197 + com.softwareloop mybatis-generator-lombok-plugin diff --git a/framework/spring/spring-data/spring-mybatis/src/main/java/org/laidu/learn/mybatis/controller/UserInfoController.java b/framework/spring/spring-data/spring-mybatis/src/main/java/org/laidu/learn/mybatis/controller/UserInfoController.java index a52b4450d..79659e6b6 100644 --- a/framework/spring/spring-data/spring-mybatis/src/main/java/org/laidu/learn/mybatis/controller/UserInfoController.java +++ b/framework/spring/spring-data/spring-mybatis/src/main/java/org/laidu/learn/mybatis/controller/UserInfoController.java @@ -11,6 +11,7 @@ import org.springframework.web.bind.annotation.RestController; import java.util.List; +import java.util.Optional; /** @@ -37,9 +38,7 @@ public AppUser queryById(@PathVariable("id") Long id){ AppUser user = userMapper.selectByPrimaryKey(id); - System.out.println(user.getId()); - - user = userMapper.selectByPrimaryKey(id); + System.out.println(Optional.ofNullable(user).orElse(AppUser.builder().build()).getUsername()); return user; } diff --git a/framework/spring/spring-data/spring-mybatis/src/main/java/org/laidu/learn/mybatis/entity/AppUser.java b/framework/spring/spring-data/spring-mybatis/src/main/java/org/laidu/learn/mybatis/entity/AppUser.java index 2221a879c..3917caf6d 100644 --- a/framework/spring/spring-data/spring-mybatis/src/main/java/org/laidu/learn/mybatis/entity/AppUser.java +++ b/framework/spring/spring-data/spring-mybatis/src/main/java/org/laidu/learn/mybatis/entity/AppUser.java @@ -6,7 +6,6 @@ import lombok.NoArgsConstructor; import java.io.Serializable; -import java.util.Date; @Data @Builder @@ -15,55 +14,9 @@ public class AppUser implements Serializable { private Long id; - private String openId; - - private Long registerChannel; - private String username; private String idCard; - private String name; - - private String idCardDetailAddress; - - private Boolean isVerifyIdCard; - - private String idCardCoverup; - - private String idCardCoverdown; - - private String idCardHold; - - private Boolean isOtherPictureAuth; - - private Boolean isBankcardAuth; - - private String signaturePic; - - private Boolean isAdditionalAuth; - - private Boolean isEmergencyAuth; - - private String phone; - - private String email; - - private String address; - - private Integer userStatus; - - private Date createTime; - - private Date updateTime; - - private String remark; - - private Integer blackStatus; - - private Date auditTime; - - private String idCardPolice; - private static final long serialVersionUID = 1L; } \ No newline at end of file diff --git a/framework/spring/spring-data/spring-mybatis/src/main/java/org/laidu/learn/mybatis/mapper/AppUserMapper.java b/framework/spring/spring-data/spring-mybatis/src/main/java/org/laidu/learn/mybatis/mapper/AppUserMapper.java index 71ae02092..c308be122 100644 --- a/framework/spring/spring-data/spring-mybatis/src/main/java/org/laidu/learn/mybatis/mapper/AppUserMapper.java +++ b/framework/spring/spring-data/spring-mybatis/src/main/java/org/laidu/learn/mybatis/mapper/AppUserMapper.java @@ -3,120 +3,28 @@ import org.apache.ibatis.annotations.*; import org.laidu.learn.mybatis.entity.AppUser; +import java.util.List; + @Mapper public interface AppUserMapper { @Delete({ - "delete from ca_app_user", + "delete from app_user", "where id = #{id}" }) int deleteByPrimaryKey(Long id); - @Insert({ - "insert into ca_app_user (id, open_id, ", - "register_channel, username, ", - "id_card, name, id_card_detail_address, ", - "is_verify_id_card, id_card_coverup, ", - "id_card_coverdown, id_card_hold, ", - "is_other_picture_auth, is_bankcard_auth, ", - "signature_pic, is_additional_auth, ", - "is_emergency_auth, phone, ", - "email, address, ", - "user_status, create_time, ", - "update_time, remark, ", - "black_status, audit_time, ", - "id_card_police)", - "values (#{id}, #{openId}, ", - "#{registerChannel}, #{username}, ", - "#{idCard}, #{name}, #{idCardDetailAddress}, ", - "#{isVerifyIdCard}, #{idCardCoverup}, ", - "#{idCardCoverdown}, #{idCardHold}, ", - "#{isOtherPictureAuth}, #{isBankcardAuth}, ", - "#{signaturePic}, #{isAdditionalAuth}, ", - "#{isEmergencyAuth}, #{phone}, ", - "#{email}, #{address}, ", - "#{userStatus}, #{createTime}, ", - "#{updateTime}, #{remark}, ", - "#{blackStatus}, #{auditTime}, ", - "#{idCardPolice})" - }) - int insert(AppUser record); - - @InsertProvider(type=AppUserSqlProvider.class, method="insertSelective") - int insertSelective(AppUser record); - @Select({ - "select", - "id, open_id, register_channel, username, id_card, name, id_card_detail_address, ", - "is_verify_id_card, id_card_coverup, id_card_coverdown, id_card_hold, is_other_picture_auth, ", - "is_bankcard_auth, signature_pic, is_additional_auth, is_emergency_auth, phone, ", - "email, address, user_status, create_time, update_time, remark, black_status, ", - "audit_time, id_card_police", - "from ca_app_user", - "where id = #{id}" + "select id, username, id_card from app_user ", + "where 1=1 and id = #{id}" }) AppUser selectByPrimaryKey(Long id); - @UpdateProvider(type=AppUserSqlProvider.class, method="updateByPrimaryKeySelective") - int updateByPrimaryKeySelective(AppUser record); + @Insert("") + void insertBatch(@Param("appUsers") List appUsers); - @Update({ - "update ca_app_user", - "set open_id = #{openId},", - "register_channel = #{registerChannel},", - "username = #{username},", - "id_card = #{idCard},", - "name = #{name},", - "id_card_detail_address = #{idCardDetailAddress},", - "is_verify_id_card = #{isVerifyIdCard},", - "id_card_coverup = #{idCardCoverup},", - "id_card_coverdown = #{idCardCoverdown},", - "id_card_hold = #{idCardHold},", - "is_other_picture_auth = #{isOtherPictureAuth},", - "is_bankcard_auth = #{isBankcardAuth},", - "signature_pic = #{signaturePic},", - "is_additional_auth = #{isAdditionalAuth},", - "is_emergency_auth = #{isEmergencyAuth},", - "phone = #{phone},", - "email = #{email},", - "address = #{address},", - "user_status = #{userStatus},", - "create_time = #{createTime},", - "update_time = #{updateTime},", - "remark = #{remark},", - "black_status = #{blackStatus},", - "audit_time = #{auditTime},", - "id_card_police = #{idCardPolice}", - "where id = #{id}" - }) - int updateByPrimaryKeyWithBLOBs(AppUser record); - - @Update({ - "update ca_app_user", - "set open_id = #{openId},", - "register_channel = #{registerChannel},", - "username = #{username},", - "id_card = #{idCard},", - "name = #{name},", - "id_card_detail_address = #{idCardDetailAddress},", - "is_verify_id_card = #{isVerifyIdCard},", - "id_card_coverup = #{idCardCoverup},", - "id_card_coverdown = #{idCardCoverdown},", - "id_card_hold = #{idCardHold},", - "is_other_picture_auth = #{isOtherPictureAuth},", - "is_bankcard_auth = #{isBankcardAuth},", - "signature_pic = #{signaturePic},", - "is_additional_auth = #{isAdditionalAuth},", - "is_emergency_auth = #{isEmergencyAuth},", - "phone = #{phone},", - "email = #{email},", - "address = #{address},", - "user_status = #{userStatus},", - "create_time = #{createTime},", - "update_time = #{updateTime},", - "remark = #{remark},", - "black_status = #{blackStatus},", - "audit_time = #{auditTime}", - "where id = #{id}" - }) - int updateByPrimaryKey(AppUser record); } \ No newline at end of file diff --git a/framework/spring/spring-data/spring-mybatis/src/main/java/org/laidu/learn/mybatis/mapper/AppUserSqlProvider.java b/framework/spring/spring-data/spring-mybatis/src/main/java/org/laidu/learn/mybatis/mapper/AppUserSqlProvider.java deleted file mode 100644 index c21255074..000000000 --- a/framework/spring/spring-data/spring-mybatis/src/main/java/org/laidu/learn/mybatis/mapper/AppUserSqlProvider.java +++ /dev/null @@ -1,227 +0,0 @@ -package org.laidu.learn.mybatis.mapper; - -import org.apache.ibatis.jdbc.SQL; -import org.laidu.learn.mybatis.entity.AppUser; - -public class AppUserSqlProvider { - - public String insertSelective(AppUser record) { - SQL sql = new SQL(); - sql.INSERT_INTO("ca_app_user"); - - if (record.getId() != null) { - sql.VALUES("id", "#{id,jdbcType=BIGINT}"); - } - - if (record.getOpenId() != null) { - sql.VALUES("open_id", "#{openId,jdbcType=VARCHAR}"); - } - - if (record.getRegisterChannel() != null) { - sql.VALUES("register_channel", "#{registerChannel,jdbcType=BIGINT}"); - } - - if (record.getUsername() != null) { - sql.VALUES("username", "#{username,jdbcType=VARCHAR}"); - } - - if (record.getIdCard() != null) { - sql.VALUES("id_card", "#{idCard,jdbcType=VARCHAR}"); - } - - if (record.getName() != null) { - sql.VALUES("name", "#{name,jdbcType=VARCHAR}"); - } - - if (record.getIdCardDetailAddress() != null) { - sql.VALUES("id_card_detail_address", "#{idCardDetailAddress,jdbcType=VARCHAR}"); - } - - if (record.getIsVerifyIdCard() != null) { - sql.VALUES("is_verify_id_card", "#{isVerifyIdCard,jdbcType=BIT}"); - } - - if (record.getIdCardCoverup() != null) { - sql.VALUES("id_card_coverup", "#{idCardCoverup,jdbcType=VARCHAR}"); - } - - if (record.getIdCardCoverdown() != null) { - sql.VALUES("id_card_coverdown", "#{idCardCoverdown,jdbcType=VARCHAR}"); - } - - if (record.getIdCardHold() != null) { - sql.VALUES("id_card_hold", "#{idCardHold,jdbcType=VARCHAR}"); - } - - if (record.getIsOtherPictureAuth() != null) { - sql.VALUES("is_other_picture_auth", "#{isOtherPictureAuth,jdbcType=BIT}"); - } - - if (record.getIsBankcardAuth() != null) { - sql.VALUES("is_bankcard_auth", "#{isBankcardAuth,jdbcType=BIT}"); - } - - if (record.getSignaturePic() != null) { - sql.VALUES("signature_pic", "#{signaturePic,jdbcType=VARCHAR}"); - } - - if (record.getIsAdditionalAuth() != null) { - sql.VALUES("is_additional_auth", "#{isAdditionalAuth,jdbcType=BIT}"); - } - - if (record.getIsEmergencyAuth() != null) { - sql.VALUES("is_emergency_auth", "#{isEmergencyAuth,jdbcType=BIT}"); - } - - if (record.getPhone() != null) { - sql.VALUES("phone", "#{phone,jdbcType=VARCHAR}"); - } - - if (record.getEmail() != null) { - sql.VALUES("email", "#{email,jdbcType=VARCHAR}"); - } - - if (record.getAddress() != null) { - sql.VALUES("address", "#{address,jdbcType=VARCHAR}"); - } - - if (record.getUserStatus() != null) { - sql.VALUES("user_status", "#{userStatus,jdbcType=INTEGER}"); - } - - if (record.getCreateTime() != null) { - sql.VALUES("create_time", "#{createTime,jdbcType=TIMESTAMP}"); - } - - if (record.getUpdateTime() != null) { - sql.VALUES("update_time", "#{updateTime,jdbcType=TIMESTAMP}"); - } - - if (record.getRemark() != null) { - sql.VALUES("remark", "#{remark,jdbcType=VARCHAR}"); - } - - if (record.getBlackStatus() != null) { - sql.VALUES("black_status", "#{blackStatus,jdbcType=INTEGER}"); - } - - if (record.getAuditTime() != null) { - sql.VALUES("audit_time", "#{auditTime,jdbcType=TIMESTAMP}"); - } - - if (record.getIdCardPolice() != null) { - sql.VALUES("id_card_police", "#{idCardPolice,jdbcType=LONGVARCHAR}"); - } - - return sql.toString(); - } - - public String updateByPrimaryKeySelective(AppUser record) { - SQL sql = new SQL(); - sql.UPDATE("ca_app_user"); - - if (record.getOpenId() != null) { - sql.SET("open_id = #{openId,jdbcType=VARCHAR}"); - } - - if (record.getRegisterChannel() != null) { - sql.SET("register_channel = #{registerChannel,jdbcType=BIGINT}"); - } - - if (record.getUsername() != null) { - sql.SET("username = #{username,jdbcType=VARCHAR}"); - } - - if (record.getIdCard() != null) { - sql.SET("id_card = #{idCard,jdbcType=VARCHAR}"); - } - - if (record.getName() != null) { - sql.SET("name = #{name,jdbcType=VARCHAR}"); - } - - if (record.getIdCardDetailAddress() != null) { - sql.SET("id_card_detail_address = #{idCardDetailAddress,jdbcType=VARCHAR}"); - } - - if (record.getIsVerifyIdCard() != null) { - sql.SET("is_verify_id_card = #{isVerifyIdCard,jdbcType=BIT}"); - } - - if (record.getIdCardCoverup() != null) { - sql.SET("id_card_coverup = #{idCardCoverup,jdbcType=VARCHAR}"); - } - - if (record.getIdCardCoverdown() != null) { - sql.SET("id_card_coverdown = #{idCardCoverdown,jdbcType=VARCHAR}"); - } - - if (record.getIdCardHold() != null) { - sql.SET("id_card_hold = #{idCardHold,jdbcType=VARCHAR}"); - } - - if (record.getIsOtherPictureAuth() != null) { - sql.SET("is_other_picture_auth = #{isOtherPictureAuth,jdbcType=BIT}"); - } - - if (record.getIsBankcardAuth() != null) { - sql.SET("is_bankcard_auth = #{isBankcardAuth,jdbcType=BIT}"); - } - - if (record.getSignaturePic() != null) { - sql.SET("signature_pic = #{signaturePic,jdbcType=VARCHAR}"); - } - - if (record.getIsAdditionalAuth() != null) { - sql.SET("is_additional_auth = #{isAdditionalAuth,jdbcType=BIT}"); - } - - if (record.getIsEmergencyAuth() != null) { - sql.SET("is_emergency_auth = #{isEmergencyAuth,jdbcType=BIT}"); - } - - if (record.getPhone() != null) { - sql.SET("phone = #{phone,jdbcType=VARCHAR}"); - } - - if (record.getEmail() != null) { - sql.SET("email = #{email,jdbcType=VARCHAR}"); - } - - if (record.getAddress() != null) { - sql.SET("address = #{address,jdbcType=VARCHAR}"); - } - - if (record.getUserStatus() != null) { - sql.SET("user_status = #{userStatus,jdbcType=INTEGER}"); - } - - if (record.getCreateTime() != null) { - sql.SET("create_time = #{createTime,jdbcType=TIMESTAMP}"); - } - - if (record.getUpdateTime() != null) { - sql.SET("update_time = #{updateTime,jdbcType=TIMESTAMP}"); - } - - if (record.getRemark() != null) { - sql.SET("remark = #{remark,jdbcType=VARCHAR}"); - } - - if (record.getBlackStatus() != null) { - sql.SET("black_status = #{blackStatus,jdbcType=INTEGER}"); - } - - if (record.getAuditTime() != null) { - sql.SET("audit_time = #{auditTime,jdbcType=TIMESTAMP}"); - } - - if (record.getIdCardPolice() != null) { - sql.SET("id_card_police = #{idCardPolice,jdbcType=LONGVARCHAR}"); - } - - sql.WHERE("id = #{id,jdbcType=BIGINT}"); - - return sql.toString(); - } -} \ No newline at end of file diff --git a/framework/spring/spring-data/spring-mybatis/src/main/java/org/laidu/learn/mybatis/model/package-info.java b/framework/spring/spring-data/spring-mybatis/src/main/java/org/laidu/learn/mybatis/model/package-info.java deleted file mode 100644 index 8b91cf5d0..000000000 --- a/framework/spring/spring-data/spring-mybatis/src/main/java/org/laidu/learn/mybatis/model/package-info.java +++ /dev/null @@ -1,10 +0,0 @@ -/** - * model - *

                    - * Created by laidu - * on 2018-10-08 18:53. - * - * @author laidu - */ -// TODO: 2018-10-08 18:53 model -package org.laidu.learn.mybatis.model; \ No newline at end of file diff --git a/framework/spring/spring-data/spring-mybatis/src/main/java/org/laidu/learn/mybatis/model/var/VarAppUser.java b/framework/spring/spring-data/spring-mybatis/src/main/java/org/laidu/learn/mybatis/model/var/VarAppUser.java deleted file mode 100644 index 13f15dd71..000000000 --- a/framework/spring/spring-data/spring-mybatis/src/main/java/org/laidu/learn/mybatis/model/var/VarAppUser.java +++ /dev/null @@ -1,27 +0,0 @@ -package org.laidu.learn.mybatis.model.var; - -import lombok.AllArgsConstructor; -import lombok.Builder; -import lombok.Data; -import lombok.NoArgsConstructor; -import org.laidu.learn.mybatis.annotation.Query; - -/** - * 用户变量 - * - * @author tiancai.zang - * on 2018-10-08 18:54. - */ -@Data -@Builder -@AllArgsConstructor -@NoArgsConstructor -public class VarAppUser { - - /** - * 已注册用户数量 - */ - @Query("SELECT COUNT(*) FROM ca_app_user") - private Integer userCount; - -} \ No newline at end of file diff --git a/framework/spring/spring-data/spring-mybatis/src/main/resources/application.properties b/framework/spring/spring-data/spring-mybatis/src/main/resources/application.properties index c8d311146..8a7f8fb3b 100644 --- a/framework/spring/spring-data/spring-mybatis/src/main/resources/application.properties +++ b/framework/spring/spring-data/spring-mybatis/src/main/resources/application.properties @@ -2,11 +2,19 @@ spring.jackson.property-naming-strategy=SNAKE_CASE +spring.datasource.schema=classpath:db/schema.sql +spring.datasource.data=classpath:db/data.sql + +spring.h2.console.settings.web-allow-others=true +spring.h2.console.path=/h2-console +spring.h2.console.enabled=true +spring.h2.console.settings.trace=true + +spring.datasource.url=jdbc:h2:mem:default +spring.datasource.driver-class-name=org.h2.Driver +spring.datasource.username=sa +spring.datasource.password= spring.datasource.type=com.alibaba.druid.pool.DruidDataSource -spring.datasource.url= jdbc:mysql://local-dev:3306/o2o-dev?useSSL=false -spring.datasource.username=root -spring.datasource.password=root -spring.datasource.driver-class-name=com.mysql.jdbc.Driver # 初始化大小,最小,最大 spring.datasource.druid.initialSize=5 diff --git a/framework/spring/spring-data/spring-mybatis/src/main/resources/config/generatorConfig.xml b/framework/spring/spring-data/spring-mybatis/src/main/resources/config/generatorConfig.xml index fd2365fb2..3b6bc6c65 100644 --- a/framework/spring/spring-data/spring-mybatis/src/main/resources/config/generatorConfig.xml +++ b/framework/spring/spring-data/spring-mybatis/src/main/resources/config/generatorConfig.xml @@ -90,7 +90,7 @@ - diff --git a/framework/spring/spring-data/spring-mybatis/src/main/resources/config/mappers/AppUserMapper.xml b/framework/spring/spring-data/spring-mybatis/src/main/resources/config/mappers/AppUserMapper.xml deleted file mode 100644 index 9be87a7e6..000000000 --- a/framework/spring/spring-data/spring-mybatis/src/main/resources/config/mappers/AppUserMapper.xml +++ /dev/null @@ -1,594 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - and ${criterion.condition} - - - and ${criterion.condition} #{criterion.value} - - - and ${criterion.condition} #{criterion.value} and #{criterion.secondValue} - - - and ${criterion.condition} - - #{listItem} - - - - - - - - - - - id, open_id, register_channel, username, id_card, name, id_card_detail_address, is_verify_id_card, - id_card_coverup, id_card_coverdown, id_card_hold, is_other_picture_auth, is_bankcard_auth, - signature_pic, is_additional_auth, is_emergency_auth, phone, email, address, user_status, - create_time, update_time, remark, black_status, audit_time, cash_black_status, cash_quota, - frozen_cash_quota, credit_quota, frozen_credit_quota, audit_status - - - id_card_police - - - - - - delete from ca_app_user - where id = #{id,jdbcType=BIGINT} - - - insert into ca_app_user (id, open_id, register_channel, - username, id_card, name, - id_card_detail_address, is_verify_id_card, id_card_coverup, - id_card_coverdown, id_card_hold, is_other_picture_auth, - is_bankcard_auth, signature_pic, is_additional_auth, - is_emergency_auth, phone, email, - address, user_status, create_time, - update_time, remark, black_status, - audit_time, cash_black_status, cash_quota, - frozen_cash_quota, credit_quota, frozen_credit_quota, - audit_status, id_card_police) - values (#{id,jdbcType=BIGINT}, #{openId,jdbcType=VARCHAR}, #{registerChannel,jdbcType=BIGINT}, - #{username,jdbcType=VARCHAR}, #{idCard,jdbcType=VARCHAR}, #{name,jdbcType=VARCHAR}, - #{idCardDetailAddress,jdbcType=VARCHAR}, #{isVerifyIdCard,jdbcType=BIT}, #{idCardCoverup,jdbcType=VARCHAR}, - #{idCardCoverdown,jdbcType=VARCHAR}, #{idCardHold,jdbcType=VARCHAR}, #{isOtherPictureAuth,jdbcType=BIT}, - #{isBankcardAuth,jdbcType=BIT}, #{signaturePic,jdbcType=VARCHAR}, #{isAdditionalAuth,jdbcType=BIT}, - #{isEmergencyAuth,jdbcType=BIT}, #{phone,jdbcType=VARCHAR}, #{email,jdbcType=VARCHAR}, - #{address,jdbcType=VARCHAR}, #{userStatus,jdbcType=INTEGER}, #{createTime,jdbcType=TIMESTAMP}, - #{updateTime,jdbcType=TIMESTAMP}, #{remark,jdbcType=VARCHAR}, #{blackStatus,jdbcType=INTEGER}, - #{auditTime,jdbcType=TIMESTAMP}, #{cashBlackStatus,jdbcType=INTEGER}, #{cashQuota,jdbcType=DECIMAL}, - #{frozenCashQuota,jdbcType=DECIMAL}, #{creditQuota,jdbcType=DECIMAL}, #{frozenCreditQuota,jdbcType=DECIMAL}, - #{auditStatus,jdbcType=INTEGER}, #{idCardPolice,jdbcType=LONGVARCHAR}) - - - insert into ca_app_user - - - id, - - - open_id, - - - register_channel, - - - username, - - - id_card, - - - name, - - - id_card_detail_address, - - - is_verify_id_card, - - - id_card_coverup, - - - id_card_coverdown, - - - id_card_hold, - - - is_other_picture_auth, - - - is_bankcard_auth, - - - signature_pic, - - - is_additional_auth, - - - is_emergency_auth, - - - phone, - - - email, - - - address, - - - user_status, - - - create_time, - - - update_time, - - - remark, - - - black_status, - - - audit_time, - - - cash_black_status, - - - cash_quota, - - - frozen_cash_quota, - - - credit_quota, - - - frozen_credit_quota, - - - audit_status, - - - id_card_police, - - - - - #{id,jdbcType=BIGINT}, - - - #{openId,jdbcType=VARCHAR}, - - - #{registerChannel,jdbcType=BIGINT}, - - - #{username,jdbcType=VARCHAR}, - - - #{idCard,jdbcType=VARCHAR}, - - - #{name,jdbcType=VARCHAR}, - - - #{idCardDetailAddress,jdbcType=VARCHAR}, - - - #{isVerifyIdCard,jdbcType=BIT}, - - - #{idCardCoverup,jdbcType=VARCHAR}, - - - #{idCardCoverdown,jdbcType=VARCHAR}, - - - #{idCardHold,jdbcType=VARCHAR}, - - - #{isOtherPictureAuth,jdbcType=BIT}, - - - #{isBankcardAuth,jdbcType=BIT}, - - - #{signaturePic,jdbcType=VARCHAR}, - - - #{isAdditionalAuth,jdbcType=BIT}, - - - #{isEmergencyAuth,jdbcType=BIT}, - - - #{phone,jdbcType=VARCHAR}, - - - #{email,jdbcType=VARCHAR}, - - - #{address,jdbcType=VARCHAR}, - - - #{userStatus,jdbcType=INTEGER}, - - - #{createTime,jdbcType=TIMESTAMP}, - - - #{updateTime,jdbcType=TIMESTAMP}, - - - #{remark,jdbcType=VARCHAR}, - - - #{blackStatus,jdbcType=INTEGER}, - - - #{auditTime,jdbcType=TIMESTAMP}, - - - #{cashBlackStatus,jdbcType=INTEGER}, - - - #{cashQuota,jdbcType=DECIMAL}, - - - #{frozenCashQuota,jdbcType=DECIMAL}, - - - #{creditQuota,jdbcType=DECIMAL}, - - - #{frozenCreditQuota,jdbcType=DECIMAL}, - - - #{auditStatus,jdbcType=INTEGER}, - - - #{idCardPolice,jdbcType=LONGVARCHAR}, - - - - - update ca_app_user - - - open_id = #{openId,jdbcType=VARCHAR}, - - - register_channel = #{registerChannel,jdbcType=BIGINT}, - - - username = #{username,jdbcType=VARCHAR}, - - - id_card = #{idCard,jdbcType=VARCHAR}, - - - name = #{name,jdbcType=VARCHAR}, - - - id_card_detail_address = #{idCardDetailAddress,jdbcType=VARCHAR}, - - - is_verify_id_card = #{isVerifyIdCard,jdbcType=BIT}, - - - id_card_coverup = #{idCardCoverup,jdbcType=VARCHAR}, - - - id_card_coverdown = #{idCardCoverdown,jdbcType=VARCHAR}, - - - id_card_hold = #{idCardHold,jdbcType=VARCHAR}, - - - is_other_picture_auth = #{isOtherPictureAuth,jdbcType=BIT}, - - - is_bankcard_auth = #{isBankcardAuth,jdbcType=BIT}, - - - signature_pic = #{signaturePic,jdbcType=VARCHAR}, - - - is_additional_auth = #{isAdditionalAuth,jdbcType=BIT}, - - - is_emergency_auth = #{isEmergencyAuth,jdbcType=BIT}, - - - phone = #{phone,jdbcType=VARCHAR}, - - - email = #{email,jdbcType=VARCHAR}, - - - address = #{address,jdbcType=VARCHAR}, - - - user_status = #{userStatus,jdbcType=INTEGER}, - - - create_time = #{createTime,jdbcType=TIMESTAMP}, - - - update_time = #{updateTime,jdbcType=TIMESTAMP}, - - - remark = #{remark,jdbcType=VARCHAR}, - - - black_status = #{blackStatus,jdbcType=INTEGER}, - - - audit_time = #{auditTime,jdbcType=TIMESTAMP}, - - - cash_black_status = #{cashBlackStatus,jdbcType=INTEGER}, - - - cash_quota = #{cashQuota,jdbcType=DECIMAL}, - - - frozen_cash_quota = #{frozenCashQuota,jdbcType=DECIMAL}, - - - credit_quota = #{creditQuota,jdbcType=DECIMAL}, - - - frozen_credit_quota = #{frozenCreditQuota,jdbcType=DECIMAL}, - - - audit_status = #{auditStatus,jdbcType=INTEGER}, - - - id_card_police = #{idCardPolice,jdbcType=LONGVARCHAR}, - - - where id = #{id,jdbcType=BIGINT} - - - update ca_app_user - set open_id = #{openId,jdbcType=VARCHAR}, - register_channel = #{registerChannel,jdbcType=BIGINT}, - username = #{username,jdbcType=VARCHAR}, - id_card = #{idCard,jdbcType=VARCHAR}, - name = #{name,jdbcType=VARCHAR}, - id_card_detail_address = #{idCardDetailAddress,jdbcType=VARCHAR}, - is_verify_id_card = #{isVerifyIdCard,jdbcType=BIT}, - id_card_coverup = #{idCardCoverup,jdbcType=VARCHAR}, - id_card_coverdown = #{idCardCoverdown,jdbcType=VARCHAR}, - id_card_hold = #{idCardHold,jdbcType=VARCHAR}, - is_other_picture_auth = #{isOtherPictureAuth,jdbcType=BIT}, - is_bankcard_auth = #{isBankcardAuth,jdbcType=BIT}, - signature_pic = #{signaturePic,jdbcType=VARCHAR}, - is_additional_auth = #{isAdditionalAuth,jdbcType=BIT}, - is_emergency_auth = #{isEmergencyAuth,jdbcType=BIT}, - phone = #{phone,jdbcType=VARCHAR}, - email = #{email,jdbcType=VARCHAR}, - address = #{address,jdbcType=VARCHAR}, - user_status = #{userStatus,jdbcType=INTEGER}, - create_time = #{createTime,jdbcType=TIMESTAMP}, - update_time = #{updateTime,jdbcType=TIMESTAMP}, - remark = #{remark,jdbcType=VARCHAR}, - black_status = #{blackStatus,jdbcType=INTEGER}, - audit_time = #{auditTime,jdbcType=TIMESTAMP}, - cash_black_status = #{cashBlackStatus,jdbcType=INTEGER}, - cash_quota = #{cashQuota,jdbcType=DECIMAL}, - frozen_cash_quota = #{frozenCashQuota,jdbcType=DECIMAL}, - credit_quota = #{creditQuota,jdbcType=DECIMAL}, - frozen_credit_quota = #{frozenCreditQuota,jdbcType=DECIMAL}, - audit_status = #{auditStatus,jdbcType=INTEGER}, - id_card_police = #{idCardPolice,jdbcType=LONGVARCHAR} - where id = #{id,jdbcType=BIGINT} - - - update ca_app_user - set open_id = #{openId,jdbcType=VARCHAR}, - register_channel = #{registerChannel,jdbcType=BIGINT}, - username = #{username,jdbcType=VARCHAR}, - id_card = #{idCard,jdbcType=VARCHAR}, - name = #{name,jdbcType=VARCHAR}, - id_card_detail_address = #{idCardDetailAddress,jdbcType=VARCHAR}, - is_verify_id_card = #{isVerifyIdCard,jdbcType=BIT}, - id_card_coverup = #{idCardCoverup,jdbcType=VARCHAR}, - id_card_coverdown = #{idCardCoverdown,jdbcType=VARCHAR}, - id_card_hold = #{idCardHold,jdbcType=VARCHAR}, - is_other_picture_auth = #{isOtherPictureAuth,jdbcType=BIT}, - is_bankcard_auth = #{isBankcardAuth,jdbcType=BIT}, - signature_pic = #{signaturePic,jdbcType=VARCHAR}, - is_additional_auth = #{isAdditionalAuth,jdbcType=BIT}, - is_emergency_auth = #{isEmergencyAuth,jdbcType=BIT}, - phone = #{phone,jdbcType=VARCHAR}, - email = #{email,jdbcType=VARCHAR}, - address = #{address,jdbcType=VARCHAR}, - user_status = #{userStatus,jdbcType=INTEGER}, - create_time = #{createTime,jdbcType=TIMESTAMP}, - update_time = #{updateTime,jdbcType=TIMESTAMP}, - remark = #{remark,jdbcType=VARCHAR}, - black_status = #{blackStatus,jdbcType=INTEGER}, - audit_time = #{auditTime,jdbcType=TIMESTAMP}, - cash_black_status = #{cashBlackStatus,jdbcType=INTEGER}, - cash_quota = #{cashQuota,jdbcType=DECIMAL}, - frozen_cash_quota = #{frozenCashQuota,jdbcType=DECIMAL}, - credit_quota = #{creditQuota,jdbcType=DECIMAL}, - frozen_credit_quota = #{frozenCreditQuota,jdbcType=DECIMAL}, - audit_status = #{auditStatus,jdbcType=INTEGER} - where id = #{id,jdbcType=BIGINT} - - - - - - \ No newline at end of file diff --git a/framework/spring/spring-data/spring-mybatis/src/main/resources/db/data.sql b/framework/spring/spring-data/spring-mybatis/src/main/resources/db/data.sql new file mode 100644 index 000000000..3a9cabafc --- /dev/null +++ b/framework/spring/spring-data/spring-mybatis/src/main/resources/db/data.sql @@ -0,0 +1 @@ +insert into app_user (username, id_card) values ('John', '411122100012319876'); \ No newline at end of file diff --git a/framework/spring/spring-data/spring-mybatis/src/main/resources/db/schema.sql b/framework/spring/spring-data/spring-mybatis/src/main/resources/db/schema.sql new file mode 100644 index 000000000..e49ab1bff --- /dev/null +++ b/framework/spring/spring-data/spring-mybatis/src/main/resources/db/schema.sql @@ -0,0 +1,6 @@ + +create table app_user ( + id bigint auto_increment, + username varchar(80) null, + id_card varchar(80) null +); \ No newline at end of file diff --git a/framework/spring/spring-data/spring-mybatis/src/test/java/org/laidu/learn/mybatis/mapper/AppUserMapperTest.java b/framework/spring/spring-data/spring-mybatis/src/test/java/org/laidu/learn/mybatis/mapper/AppUserMapperTest.java index d5770a017..d8a6d732a 100644 --- a/framework/spring/spring-data/spring-mybatis/src/test/java/org/laidu/learn/mybatis/mapper/AppUserMapperTest.java +++ b/framework/spring/spring-data/spring-mybatis/src/test/java/org/laidu/learn/mybatis/mapper/AppUserMapperTest.java @@ -4,6 +4,7 @@ import org.junit.jupiter.api.Test; import org.junit.jupiter.api.extension.ExtendWith; import org.junit.runner.RunWith; +import org.laidu.learn.mybatis.entity.AppUser; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.jdbc.EmbeddedDatabaseConnection; import org.springframework.boot.test.autoconfigure.jdbc.AutoConfigureTestDatabase; @@ -11,6 +12,9 @@ import org.springframework.test.context.junit.jupiter.SpringExtension; import org.springframework.test.context.junit4.SpringRunner; +import java.util.Arrays; +import java.util.List; + @RunWith(SpringRunner.class) @SpringBootTest @@ -24,7 +28,16 @@ class AppUserMapperTest { @Test void selectAppUserList() { -// appUserMapper.selectAppUserList(1,2).forEach(System.out::println); - Assert.assertEquals(1,1); + AppUser appUser = appUserMapper.selectByPrimaryKey(1L); + Assert.assertNotNull(appUser.getId()); + + List appUserList = Arrays.asList(appUser,appUser,appUser,appUser); + + appUserMapper.insertBatch(appUserList); + + AppUser appUser1 = appUserMapper.selectByPrimaryKey(3L); + Assert.assertNotNull(appUser1); + + } } \ No newline at end of file diff --git a/framework/spring/spring-data/spring-mybatis/src/test/resources/application.properties b/framework/spring/spring-data/spring-mybatis/src/test/resources/application.properties deleted file mode 100644 index ee2b0a2c9..000000000 --- a/framework/spring/spring-data/spring-mybatis/src/test/resources/application.properties +++ /dev/null @@ -1,54 +0,0 @@ -#spring date source config - -spring.datasource.type=com.alibaba.druid.pool.DruidDataSource -spring.datasource.url= jdbc:mysql://local-dev:3306/o2o?useSSL=false -spring.datasource.username=root -spring.datasource.password=root -spring.datasource.driver-class-name=com.mysql.jdbc.Driver - -# 初始化大小,最小,最大 -spring.datasource.druid.initialSize=5 -spring.datasource.druid.minIdle=5 -spring.datasource.druid.maxActive=20 -# 配置获取连接等待超时的时间 -spring.datasource.druid.maxWait=60000 -# 配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位是毫秒 -spring.datasource.druid.timeBetweenEvictionRunsMillis=60000 -# 配置一个连接在池中最小生存的时间,单位是毫秒 -spring.datasource.druid.minEvictableIdleTimeMillis=300000 -spring.datasource.druid.validationQuery=SELECT 1 FROM DUAL -spring.datasource.druid.testWhileIdle=true -spring.datasource.druid.testOnBorrow=false -spring.datasource.druid.testOnReturn=false -# 打开PSCache,并且指定每个连接上PSCache的大小 -spring.datasource.druid.poolPreparedStatements=true -spring.datasource.druid.maxPoolPreparedStatementPerConnectionSize=20 -# 配置监控统计拦截的filters,去掉后监控界面sql无法统计,'wall'用于防火墙 -spring.datasource.druid.filters=stat,wall,slf4j -# 通过connectProperties属性来打开mergeSql功能;慢SQL记录 -spring.datasource.druid.connectionProperties=druid.stat.mergeSql=true;druid.stat.slowSqlMillis=5000 -spring.datasource.druid.useGlobalDataSourceStat=true - -spring.datasource.druid.filter.stat.db-type=mysql -spring.datasource.druid.filter.stat.log-slow-sql=true -spring.datasource.druid.filter.stat.slow-sql-millis=2000 -spring.datasource.druid.filter.stat.merge-sql=true - -spring.datasource.druid.filter.slf4j.enabled=true -spring.datasource.druid.filter.slf4j.statement-log-enabled=true - -spring.datasource.druid.filter.slf4j.statement-execute-after-log-enabled=false -spring.datasource.druid.filter.slf4j.statement-parameter-set-log-enabled=true -spring.datasource.druid.filter.slf4j.statement-execute-batch-after-log-enabled=false -spring.datasource.druid.filter.slf4j.statement-execute-query-after-log-enabled=false -spring.datasource.druid.filter.slf4j.statement-prepare-call-after-log-enabled=false -spring.datasource.druid.filter.slf4j.statement-parameter-clear-log-enable=false -spring.datasource.druid.filter.slf4j.statement-executable-sql-log-enable=false -spring.datasource.druid.filter.slf4j.statement-prepare-after-log-enabled=false -spring.datasource.druid.filter.slf4j.result-set-log-enabled=false -spring.datasource.druid.filter.slf4j.connection-log-enabled=false - - -pagehelper.reasonable= true -pagehelper.dialect=mysql -pagehelper.support-methods-arguments=true diff --git a/framework/spring/spring-data/spring-mybatis/src/test/resources/generatorConfig.xml b/framework/spring/spring-data/spring-mybatis/src/test/resources/generatorConfig.xml deleted file mode 100644 index c7489ebf0..000000000 --- a/framework/spring/spring-data/spring-mybatis/src/test/resources/generatorConfig.xml +++ /dev/null @@ -1,67 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
                    -
                    - - \ No newline at end of file From fe03f6871c1a09e684f38228134de27e45a81ea0 Mon Sep 17 00:00:00 2001 From: zangtiancai Date: Fri, 15 Feb 2019 10:16:02 +0800 Subject: [PATCH 241/417] convert properties 2 yml --- .../src/main/resources/application.properties | 91 ------------------- .../src/main/resources/application.yml | 70 ++++++++++++++ 2 files changed, 70 insertions(+), 91 deletions(-) delete mode 100644 framework/spring/spring-data/spring-mybatis/src/main/resources/application.properties create mode 100644 framework/spring/spring-data/spring-mybatis/src/main/resources/application.yml diff --git a/framework/spring/spring-data/spring-mybatis/src/main/resources/application.properties b/framework/spring/spring-data/spring-mybatis/src/main/resources/application.properties deleted file mode 100644 index 8a7f8fb3b..000000000 --- a/framework/spring/spring-data/spring-mybatis/src/main/resources/application.properties +++ /dev/null @@ -1,91 +0,0 @@ -#spring date source config - -spring.jackson.property-naming-strategy=SNAKE_CASE - -spring.datasource.schema=classpath:db/schema.sql -spring.datasource.data=classpath:db/data.sql - -spring.h2.console.settings.web-allow-others=true -spring.h2.console.path=/h2-console -spring.h2.console.enabled=true -spring.h2.console.settings.trace=true - -spring.datasource.url=jdbc:h2:mem:default -spring.datasource.driver-class-name=org.h2.Driver -spring.datasource.username=sa -spring.datasource.password= -spring.datasource.type=com.alibaba.druid.pool.DruidDataSource - -# 初始化大小,最小,最大 -spring.datasource.druid.initialSize=5 -spring.datasource.druid.minIdle=5 -spring.datasource.druid.maxActive=20 -# 配置获取连接等待超时的时间 -spring.datasource.druid.maxWait=60000 -# 配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位是毫秒 -spring.datasource.druid.timeBetweenEvictionRunsMillis=60000 -# 配置一个连接在池中最小生存的时间,单位是毫秒 -spring.datasource.druid.minEvictableIdleTimeMillis=300000 -spring.datasource.druid.validationQuery=SELECT 1 FROM DUAL -spring.datasource.druid.testWhileIdle=true -spring.datasource.druid.testOnBorrow=false -spring.datasource.druid.testOnReturn=false -# 打开PSCache,并且指定每个连接上PSCache的大小 -spring.datasource.druid.poolPreparedStatements=true -spring.datasource.druid.maxPoolPreparedStatementPerConnectionSize=20 -# 配置监控统计拦截的filters,去掉后监控界面sql无法统计,'wall'用于防火墙 -spring.datasource.druid.filters=stat,wall,slf4j -# 通过connectProperties属性来打开mergeSql功能;慢SQL记录 -spring.datasource.druid.connectionProperties=druid.stat.mergeSql=true;druid.stat.slowSqlMillis=5000 -spring.datasource.druid.useGlobalDataSourceStat=true - -spring.datasource.druid.filter.stat.db-type=mysql -spring.datasource.druid.filter.stat.log-slow-sql=true -spring.datasource.druid.filter.stat.slow-sql-millis=2000 -spring.datasource.druid.filter.stat.merge-sql=true - -spring.datasource.druid.log-different-thread=true - -spring.datasource.druid.filter.slf4j.enabled=true -spring.datasource.druid.filter.slf4j.statement-log-enabled=true -spring.datasource.druid.filter.slf4j.statement-execute-after-log-enabled=false -spring.datasource.druid.filter.slf4j.statement-parameter-set-log-enabled=true -spring.datasource.druid.filter.slf4j.statement-execute-batch-after-log-enabled=false -spring.datasource.druid.filter.slf4j.statement-execute-query-after-log-enabled=false -spring.datasource.druid.filter.slf4j.statement-prepare-call-after-log-enabled=false -spring.datasource.druid.filter.slf4j.statement-parameter-clear-log-enable=false -spring.datasource.druid.filter.slf4j.statement-executable-sql-log-enable=false -spring.datasource.druid.filter.slf4j.statement-prepare-after-log-enabled=false -spring.datasource.druid.filter.slf4j.result-set-log-enabled=false -spring.datasource.druid.filter.slf4j.connection-log-enabled=false - - -pagehelper.reasonable= true -pagehelper.support-methods-arguments=true - - -logging.level.org.laidu.learn.mybatis.mapper=debug -logging.config=classpath:config/logback-spring.xml - -#mybatis 配置 -#mybatis.generator.configurationFile=config/generatorConfig.xml -mybatis.configuration.use-generated-keys=true -mybatis.configuration.local-cache-scope=session -mybatis.configuration.map-underscore-to-camel-case=true - -#redis config -#spring.redis.database=0 -#spring.redis.host=localhost -#spring.redis.password= -#spring.redis.port=6379 -#spring.redis.jedis.pool.max-active=8 -#spring.redis.jedis.pool.max-idle=8 -#spring.redis.jedis.pool.max-wait=-1ms -#spring.redis.jedis.pool.min-idle=0 -#spring.redis.lettuce.pool.max-active=8 -#spring.redis.lettuce.pool.max-idle=8 -#spring.redis.lettuce.pool.max-wait=-1ms -#spring.redis.lettuce.pool.min-idle=0 -#spring.redis.lettuce.shutdown-timeout=100ms -#spring.redis.ssl=false -#spring.redis.timeout= \ No newline at end of file diff --git a/framework/spring/spring-data/spring-mybatis/src/main/resources/application.yml b/framework/spring/spring-data/spring-mybatis/src/main/resources/application.yml new file mode 100644 index 000000000..af96a6aee --- /dev/null +++ b/framework/spring/spring-data/spring-mybatis/src/main/resources/application.yml @@ -0,0 +1,70 @@ +logging: + config: classpath:config/logback-spring.xml + + +mybatis: + configuration: + local-cache-scope: session + map-underscore-to-camel-case: true + use-generated-keys: true + + +pagehelper: + reasonable: true + support-methods-arguments: true + + +spring: + datasource: + data: classpath:db/data.sql + driver-class-name: org.h2.Driver + druid: + connectionProperties: druid.stat.mergeSql=true;druid.stat.slowSqlMillis=5000 + filter: + slf4j: + connection-log-enabled: false + enabled: true + result-set-log-enabled: true +# statement-executable-sql-log-enable: true + statement-execute-after-log-enabled: true +# statement-execute-batch-after-log-enabled: false +# statement-execute-query-after-log-enabled: false +# statement-log-enabled: true +# statement-parameter-clear-log-enable: false +# statement-parameter-set-log-enabled: true +# statement-prepare-after-log-enabled: false +# statement-prepare-call-after-log-enabled: false + stat: + db-type: mysql + log-slow-sql: true + merge-sql: true + slow-sql-millis: 2000 + filters: stat,wall,slf4j + initialSize: 5 + log-different-thread: true + maxActive: 20 + maxPoolPreparedStatementPerConnectionSize: 20 + maxWait: 60000 + minEvictableIdleTimeMillis: 300000 + minIdle: 5 + poolPreparedStatements: true + testOnBorrow: false + testOnReturn: false + testWhileIdle: true + timeBetweenEvictionRunsMillis: 60000 + useGlobalDataSourceStat: true + validationQuery: SELECT 1 FROM DUAL + password: '' + schema: classpath:db/schema.sql + type: com.alibaba.druid.pool.DruidDataSource + url: jdbc:h2:mem:default + username: sa + h2: + console: + enabled: true + path: /h2-console + settings: + trace: true + web-allow-others: true + jackson: + property-naming-strategy: SNAKE_CASE From b9effd1f858e40d0b98ff00f014973d6cb5a758c Mon Sep 17 00:00:00 2001 From: zangtiancai Date: Fri, 15 Feb 2019 10:43:56 +0800 Subject: [PATCH 242/417] remove durid ad --- .../laidu/learn/mybatis/annotation/Query.java | 29 --- .../mybatis/annotation/package-info.java | 10 - .../annotation/processor/QueryProcessor.java | 45 ---- .../mybatis/config/DruidWebMonitorConfig.java | 54 ++++- .../learn/mybatis/mapper/AppUserMapper.java | 3 + .../src/main/resources/application.yml | 13 +- .../src/main/resources/db/data.sql | 6 +- .../src/main/resources/js/common.js | 201 ++++++++++++++++++ 8 files changed, 264 insertions(+), 97 deletions(-) delete mode 100644 framework/spring/spring-data/spring-mybatis/src/main/java/org/laidu/learn/mybatis/annotation/Query.java delete mode 100644 framework/spring/spring-data/spring-mybatis/src/main/java/org/laidu/learn/mybatis/annotation/package-info.java delete mode 100644 framework/spring/spring-data/spring-mybatis/src/main/java/org/laidu/learn/mybatis/annotation/processor/QueryProcessor.java create mode 100644 framework/spring/spring-data/spring-mybatis/src/main/resources/js/common.js diff --git a/framework/spring/spring-data/spring-mybatis/src/main/java/org/laidu/learn/mybatis/annotation/Query.java b/framework/spring/spring-data/spring-mybatis/src/main/java/org/laidu/learn/mybatis/annotation/Query.java deleted file mode 100644 index 37aff4b24..000000000 --- a/framework/spring/spring-data/spring-mybatis/src/main/java/org/laidu/learn/mybatis/annotation/Query.java +++ /dev/null @@ -1,29 +0,0 @@ -package org.laidu.learn.mybatis.annotation; - -import org.springframework.core.annotation.AliasFor; - -import java.lang.annotation.*; - -/** - * 查询sql - *

                    - * Created by laidu - * on 2018-10-08 18:57. - * - * @author laidu - */ -@Target(ElementType.FIELD) -@Documented -@Retention(RetentionPolicy.RUNTIME) -public @interface Query { - - /** - * @return 执行的sql语句 - */ - @AliasFor("value") - String sql() default ""; - - @AliasFor("sql") - String value(); - -} diff --git a/framework/spring/spring-data/spring-mybatis/src/main/java/org/laidu/learn/mybatis/annotation/package-info.java b/framework/spring/spring-data/spring-mybatis/src/main/java/org/laidu/learn/mybatis/annotation/package-info.java deleted file mode 100644 index dab900454..000000000 --- a/framework/spring/spring-data/spring-mybatis/src/main/java/org/laidu/learn/mybatis/annotation/package-info.java +++ /dev/null @@ -1,10 +0,0 @@ -/** - * 自定义注解 - *

                    - * Created by laidu - * on 2018-10-08 18:56. - * - * @author laidu - */ -// TODO: 2018-10-08 18:56 自定义注解 -package org.laidu.learn.mybatis.annotation; \ No newline at end of file diff --git a/framework/spring/spring-data/spring-mybatis/src/main/java/org/laidu/learn/mybatis/annotation/processor/QueryProcessor.java b/framework/spring/spring-data/spring-mybatis/src/main/java/org/laidu/learn/mybatis/annotation/processor/QueryProcessor.java deleted file mode 100644 index b93f0d4eb..000000000 --- a/framework/spring/spring-data/spring-mybatis/src/main/java/org/laidu/learn/mybatis/annotation/processor/QueryProcessor.java +++ /dev/null @@ -1,45 +0,0 @@ -package org.laidu.learn.mybatis.annotation.processor; - -import com.alibaba.druid.sql.parser.SQLExprParser; -import com.alibaba.druid.sql.parser.SQLParserUtils; -import com.alibaba.druid.util.JdbcUtils; -import lombok.extern.slf4j.Slf4j; -import org.aspectj.lang.ProceedingJoinPoint; -import org.aspectj.lang.annotation.Around; -import org.aspectj.lang.annotation.Aspect; -import org.aspectj.lang.annotation.Pointcut; -import org.laidu.learn.mybatis.annotation.Query; -import org.springframework.stereotype.Component; - -/** - * query 注解处理器 - * - * @author tiancai.zang - * on 2018-10-08 19:03. - */ -@Slf4j -@Aspect -@Component -public class QueryProcessor{ - - - @Pointcut("@annotation(org.laidu.learn.mybatis.annotation.Query)") - private void pointcut() { - } - - @Around("pointcut() && @annotation(query)") - public Object processor(ProceedingJoinPoint joinPoint, Query query) throws Throwable { - - Object result = null; - - String sql = query.sql(); - - SQLExprParser sqlParser = SQLParserUtils.createExprParser(sql, JdbcUtils.MYSQL); - - - result = joinPoint.proceed(); - - return result; - - } -} \ No newline at end of file diff --git a/framework/spring/spring-data/spring-mybatis/src/main/java/org/laidu/learn/mybatis/config/DruidWebMonitorConfig.java b/framework/spring/spring-data/spring-mybatis/src/main/java/org/laidu/learn/mybatis/config/DruidWebMonitorConfig.java index 276221fbe..4d9c63cf7 100644 --- a/framework/spring/spring-data/spring-mybatis/src/main/java/org/laidu/learn/mybatis/config/DruidWebMonitorConfig.java +++ b/framework/spring/spring-data/spring-mybatis/src/main/java/org/laidu/learn/mybatis/config/DruidWebMonitorConfig.java @@ -1,14 +1,22 @@ package org.laidu.learn.mybatis.config; +import com.alibaba.druid.spring.boot.autoconfigure.DruidDataSourceAutoConfigure; +import com.alibaba.druid.spring.boot.autoconfigure.properties.DruidStatProperties; import com.alibaba.druid.support.http.StatViewServlet; import com.alibaba.druid.support.http.WebStatFilter; +import com.alibaba.druid.util.Utils; import com.google.common.collect.Maps; import lombok.extern.slf4j.Slf4j; +import org.springframework.boot.autoconfigure.AutoConfigureAfter; +import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty; +import org.springframework.boot.autoconfigure.condition.ConditionalOnWebApplication; import org.springframework.boot.web.servlet.FilterRegistrationBean; import org.springframework.boot.web.servlet.ServletRegistrationBean; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; +import javax.servlet.*; +import java.io.IOException; import java.util.Map; /** @@ -20,6 +28,9 @@ */ @Slf4j @Configuration +@ConditionalOnWebApplication +@AutoConfigureAfter(DruidDataSourceAutoConfigure.class) +@ConditionalOnProperty(name = "spring.datasource.druid.stat-view-servlet.enabled", havingValue = "true", matchIfMissing = true) public class DruidWebMonitorConfig { @Bean @@ -29,8 +40,8 @@ public ServletRegistrationBean druidServlet() { servletRegistrationBean.setServlet(new StatViewServlet()); servletRegistrationBean.addUrlMappings("/druid/*"); Map initParameters = Maps.newHashMap(); -// initParameters.put("loginUsername", "admin"); -// initParameters.put("loginPassword", "admin"); + initParameters.put("loginUsername", "admin"); + initParameters.put("loginPassword", "admin"); // 禁用HTML页面上的“Reset All”功能 initParameters.put("resetEnable", "false"); // IP白名单 (没有配置或者为空,则允许所有访问) @@ -49,4 +60,43 @@ public FilterRegistrationBean filterRegistrationBean() { return filterRegistrationBean; } + + @Bean + public FilterRegistrationBean fuckDruidAdFilterRegistrationBean(DruidStatProperties properties) { + // 获取web监控页面的参数 + DruidStatProperties.StatViewServlet config = properties.getStatViewServlet(); + // 提取common.js的配置路径 + String pattern = config.getUrlPattern() != null ? config.getUrlPattern() : "/druid/*"; + String commonJsPattern = pattern.replaceAll("\\*", "js/common.js"); + + final String filePath = "js/common.js"; + + Filter filter = new Filter() { + @Override + public void init(FilterConfig filterConfig) throws ServletException { + } + + @Override + public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException { + chain.doFilter(request, response); + // 重置缓冲区,响应头不会被重置 + response.resetBuffer(); + // 获取common.js + String text = Utils.readFromResource(filePath); + // 正则替换banner + text = text.replaceAll("
                    ", ""); + response.getWriter().write(text); + } + + @Override + public void destroy() { + } + }; + + FilterRegistrationBean registrationBean = new FilterRegistrationBean(); + registrationBean.setFilter(filter); + registrationBean.addUrlPatterns(commonJsPattern); + return registrationBean; + } + } \ No newline at end of file diff --git a/framework/spring/spring-data/spring-mybatis/src/main/java/org/laidu/learn/mybatis/mapper/AppUserMapper.java b/framework/spring/spring-data/spring-mybatis/src/main/java/org/laidu/learn/mybatis/mapper/AppUserMapper.java index c308be122..0e1ea62e0 100644 --- a/framework/spring/spring-data/spring-mybatis/src/main/java/org/laidu/learn/mybatis/mapper/AppUserMapper.java +++ b/framework/spring/spring-data/spring-mybatis/src/main/java/org/laidu/learn/mybatis/mapper/AppUserMapper.java @@ -5,6 +5,9 @@ import java.util.List; +/** + * @author zangtiancai + */ @Mapper public interface AppUserMapper { @Delete({ diff --git a/framework/spring/spring-data/spring-mybatis/src/main/resources/application.yml b/framework/spring/spring-data/spring-mybatis/src/main/resources/application.yml index af96a6aee..c95c63507 100644 --- a/framework/spring/spring-data/spring-mybatis/src/main/resources/application.yml +++ b/framework/spring/spring-data/spring-mybatis/src/main/resources/application.yml @@ -24,21 +24,14 @@ spring: slf4j: connection-log-enabled: false enabled: true - result-set-log-enabled: true -# statement-executable-sql-log-enable: true - statement-execute-after-log-enabled: true -# statement-execute-batch-after-log-enabled: false -# statement-execute-query-after-log-enabled: false -# statement-log-enabled: true -# statement-parameter-clear-log-enable: false -# statement-parameter-set-log-enabled: true -# statement-prepare-after-log-enabled: false -# statement-prepare-call-after-log-enabled: false + statement-executable-sql-log-enable: true + stat: db-type: mysql log-slow-sql: true merge-sql: true slow-sql-millis: 2000 + filters: stat,wall,slf4j initialSize: 5 log-different-thread: true diff --git a/framework/spring/spring-data/spring-mybatis/src/main/resources/db/data.sql b/framework/spring/spring-data/spring-mybatis/src/main/resources/db/data.sql index 3a9cabafc..9ba54343a 100644 --- a/framework/spring/spring-data/spring-mybatis/src/main/resources/db/data.sql +++ b/framework/spring/spring-data/spring-mybatis/src/main/resources/db/data.sql @@ -1 +1,5 @@ -insert into app_user (username, id_card) values ('John', '411122100012319876'); \ No newline at end of file +insert into app_user (username, id_card) values ('John', '411122100012319876'); +insert into app_user (username, id_card) values ('小明', '411122100012319872'); +insert into app_user (username, id_card) values ('王尼玛', '411122100012319876'); +insert into app_user (username, id_card) values ('皮特朱', '411122100012319976'); +insert into app_user (username, id_card) values ('Jack', '41112210012319876X'); \ No newline at end of file diff --git a/framework/spring/spring-data/spring-mybatis/src/main/resources/js/common.js b/framework/spring/spring-data/spring-mybatis/src/main/resources/js/common.js new file mode 100644 index 000000000..929712bab --- /dev/null +++ b/framework/spring/spring-data/spring-mybatis/src/main/resources/js/common.js @@ -0,0 +1,201 @@ +$.namespace("druid.common"); + +druid.common = function () { + var statViewOrderBy = ''; + var statViewOrderBy_old = ''; + var statViewOrderType = 'asc'; + var isOrderRequest = false; + + // only one page for now + var sqlViewPage = 1; + var sqlViewPerPageCount = 1000000; + + return { + init : function() { + this.buildFooter(); + druid.lang.init(); + }, + + buildHead : function(index) { + $.get('header.html',function(html) { + $(document.body).prepend(html); + druid.lang.trigger(); + $(".navbar .nav li").eq(index).addClass("active"); + },"html"); + + }, + + buildFooter : function() { + var html = '

                    '; + $(document.body).append(html); + }, + + ajaxRequestForReset : function() { + if(!confirm("Are you sure to reset all stat? It'll clear all stat data !")){ + return; + } + + $.ajax({ + type: 'POST', + url: "reset-all.json", + success: function(data) { + if (data.ResultCode == 1) { + alert("already reset all stat"); + } + }, + dataType: "json" + }); + }, + + ajaxRequestForLogAndReset : function() { + if(!confirm("Are you sure to reset data source stat? It'll clear and log all stat data !")){ + return; + } + + $.ajax({ + type: 'POST', + url: "log-and-reset.json", + success: function(data) { + if (data.ResultCode == 1) { + alert("already reset all stat"); + } + }, + dataType: "json" + }); + }, + + getAjaxUrl : function(uri) { + var result = uri; + + if (statViewOrderBy != undefined) + result += 'orderBy=' + statViewOrderBy + '&'; + + if (statViewOrderType != undefined) + result += 'orderType=' + statViewOrderType + '&'; + + if (sqlViewPage != undefined) + result += 'page=' + sqlViewPage + '&'; + + if (sqlViewPerPageCount != undefined) + result += 'perPageCount=' + sqlViewPerPageCount + '&'; + + return result; + }, + + resetSortMark : function() { + var divObj = document.getElementById('th-' + statViewOrderBy); + var old_divObj = document.getElementById('th-' + statViewOrderBy_old); + var replaceToStr = ''; + if (old_divObj) { + var html = old_divObj.innerHTML; + if (statViewOrderBy_old.indexOf('[') > 0) + replaceToStr = '-'; + html = html.replace('▲', replaceToStr); + html = html.replace('▼', replaceToStr); + old_divObj.innerHTML = html + } + if (divObj) { + var html = divObj.innerHTML; + if (statViewOrderBy.indexOf('[') > 0) + html = ''; + + if (statViewOrderType == 'asc') { + html += '▲'; + } else if (statViewOrderType == 'desc') { + html += '▼'; + } + divObj.innerHTML = html; + } + isOrderRequest = true; + + this.ajaxRequestForBasicInfo(); + return false; + }, + + setOrderBy : function(orderBy) { + if (statViewOrderBy != orderBy) { + statViewOrderBy_old = statViewOrderBy; + statViewOrderBy = orderBy; + statViewOrderType = 'desc'; + druid.common.resetSortMark(); + return; + } + + statViewOrderBy_old = statViewOrderBy; + + if (statViewOrderType == 'asc') + statViewOrderType = 'desc' + else + statViewOrderType = 'asc'; + + druid.common.resetSortMark(); + }, + + ajaxuri : "", + handleCallback:null, + handleAjaxResult : function(data) { + druid.common.handleCallback(data); + if (!isOrderRequest) { + druid.lang.trigger(); + } + },//ajax 处理函数 + ajaxRequestForBasicInfo : function() { + $.ajax({ + type: 'POST', + url: druid.common.getAjaxUrl(druid.common.ajaxuri), + success: function(data) { + druid.common.handleAjaxResult(data); + }, + dataType: "json" + }); + }, + + subSqlString : function(sql, len) { + if (sql == undefined || sql == null) { + return ''; + } + + if (sql.length <= len) + return sql; + return sql.substr(0, len) + '...'; + }, + + stripes : function() { + $("#dataTable tbody tr").each(function () { + $(this).removeClass("striped"); + }); + $("#dataTable tbody tr:even").each(function () { + $(this).addClass("striped"); + }); + }, + + getUrlVar : function(name) { + var vars = {}; + var parts = window.location.href.replace(/[?&]+([^=&]+)=([^&]*)/gi, function(m,key,value) { + vars[key] = value; + }); + return vars[name]; + } + } +}(); + +$(document).ready(function() { + druid.common.init(); +}); + +function replace (data) { + if((!data)||data === undefined){ + return ''; + }else{ + return format(data); + } +} + +function format(s) { + var str=s+=''; + return str.replace(/(\d)(?=(\d{3})+(?!\d))/g, "$1,"); +} From 793b63fb2b31e6505998b12cd994b6cff489bb9d Mon Sep 17 00:00:00 2001 From: zangtiancai Date: Fri, 15 Feb 2019 19:40:46 +0800 Subject: [PATCH 243/417] add tomcat learn module --- framework/web/pom.xml | 1 + framework/web/tomcat/pom.xml | 29 +++++++++++++ .../org/laidu/learn/tomcat/TomcatApp.java | 43 +++++++++++++++++++ .../org/laidu/learn/tomcat/package-info.java | 7 +++ .../web/tomcat/src/site/markdown/index.md | 8 ++++ .../feature/net/SocketServerDemo.java | 29 ++++++------- .../feature/net/http/HttpServerDemo.java | 2 +- 7 files changed, 102 insertions(+), 17 deletions(-) create mode 100644 framework/web/tomcat/pom.xml create mode 100644 framework/web/tomcat/src/main/java/org/laidu/learn/tomcat/TomcatApp.java create mode 100644 framework/web/tomcat/src/main/java/org/laidu/learn/tomcat/package-info.java create mode 100644 framework/web/tomcat/src/site/markdown/index.md diff --git a/framework/web/pom.xml b/framework/web/pom.xml index d18e1263a..cb6683a6f 100644 --- a/framework/web/pom.xml +++ b/framework/web/pom.xml @@ -15,6 +15,7 @@ play + tomcat diff --git a/framework/web/tomcat/pom.xml b/framework/web/tomcat/pom.xml new file mode 100644 index 000000000..7d167533a --- /dev/null +++ b/framework/web/tomcat/pom.xml @@ -0,0 +1,29 @@ + + + + web + org.laidu.learn + 1.0-SNAPSHOT + + 4.0.0 + + tomcat + + + 9.0.16 + + + + + + org.apache.tomcat.embed + tomcat-embed-core + ${tomcat.version} + + + + + + \ No newline at end of file diff --git a/framework/web/tomcat/src/main/java/org/laidu/learn/tomcat/TomcatApp.java b/framework/web/tomcat/src/main/java/org/laidu/learn/tomcat/TomcatApp.java new file mode 100644 index 000000000..77e3556a6 --- /dev/null +++ b/framework/web/tomcat/src/main/java/org/laidu/learn/tomcat/TomcatApp.java @@ -0,0 +1,43 @@ +package org.laidu.learn.tomcat; + +import lombok.extern.slf4j.Slf4j; +import org.apache.catalina.LifecycleException; +import org.apache.catalina.startup.Tomcat; + +import javax.servlet.GenericServlet; +import javax.servlet.ServletException; +import javax.servlet.ServletRequest; +import javax.servlet.ServletResponse; +import java.io.IOException; + +/** + * tomcat embed app + * + * + * @author zangtiancai + * @date 2019-02-15 14:34. + */ +@Slf4j +public class TomcatApp { + + public static void main(String[] args) throws LifecycleException { + + // TODO: 完成hello搭建. create by zangtiancai on 2019-02-15 19:39. + Tomcat tomcat = new Tomcat(); + tomcat.setPort(8080); + + tomcat.addServlet("","",new HelloServlet()); + + tomcat.start(); + tomcat.getServer().await(); + + } + + public static class HelloServlet extends GenericServlet{ + + @Override + public void service(ServletRequest req, ServletResponse res) throws ServletException, IOException { + log.info(" local name {}",req.getLocalName()); + } + } +} diff --git a/framework/web/tomcat/src/main/java/org/laidu/learn/tomcat/package-info.java b/framework/web/tomcat/src/main/java/org/laidu/learn/tomcat/package-info.java new file mode 100644 index 000000000..6d07af1e5 --- /dev/null +++ b/framework/web/tomcat/src/main/java/org/laidu/learn/tomcat/package-info.java @@ -0,0 +1,7 @@ +/** + * tomcat 学习 + * + * @author zangtiancai + * @date 2019-02-15 14:35. + */ +package org.laidu.learn.tomcat; \ No newline at end of file diff --git a/framework/web/tomcat/src/site/markdown/index.md b/framework/web/tomcat/src/site/markdown/index.md new file mode 100644 index 000000000..9c8f15386 --- /dev/null +++ b/framework/web/tomcat/src/site/markdown/index.md @@ -0,0 +1,8 @@ +# Tomcat 深入学习 + + +参考: + +* [Embed Tomcat8简单示例](https://blog.csdn.net/mn960mn/article/details/52596359) +* []() +* []() \ No newline at end of file diff --git a/language-feature/src/main/java/org/laidu/learn/language/feature/net/SocketServerDemo.java b/language-feature/src/main/java/org/laidu/learn/language/feature/net/SocketServerDemo.java index 8a2dc24d6..0c4bc078e 100644 --- a/language-feature/src/main/java/org/laidu/learn/language/feature/net/SocketServerDemo.java +++ b/language-feature/src/main/java/org/laidu/learn/language/feature/net/SocketServerDemo.java @@ -2,7 +2,9 @@ import lombok.extern.slf4j.Slf4j; -import java.io.*; +import java.io.BufferedReader; +import java.io.IOException; +import java.io.InputStreamReader; import java.net.ServerSocket; import java.net.Socket; @@ -17,28 +19,23 @@ public class SocketServerDemo { public static void main(String[] args) throws IOException { - ServerSocket server = new ServerSocket(8080); + ServerSocket server = new ServerSocket(8081); while (true){ Socket accept = server.accept(); BufferedReader reader = new BufferedReader(new InputStreamReader(accept.getInputStream())); + + String request = reader.readLine(); + + log.info(" request :\n{}",request); + + String content = "{\"nihao\":123}"; + String message = "HTTP/1.1 200 OK\n" + - "Date: Mon, 05 Nov 2018 11:50:21 GMT\n" + - "Server: Apache\n" + - "Last-Modified: Tue, 12 Jan 2010 13:48:00 GMT\n" + - "ETag: \"51-47cf7e6ee8400\"\n" + - "Accept-Ranges: bytes\n" + - "Content-Length: 81\n" + - "Cache-Control: max-age=86400\n" + - "Expires: Tue, 06 Nov 2018 11:50:21 GMT\n" + - "Connection: Keep-Alive\n" + - "Content-Type: application/html\n" + - "{\"nihao\":123}"; - - - FileInputStream fileInputStream = new FileInputStream(new File("/home/laidu/Documents/e-book/高性能mysql第三版.pdf")); + "content-type: application/json; charset=UTF-8\n\n" + + content+"\n"; accept.getOutputStream().write(message.getBytes()); diff --git a/language-feature/src/main/java/org/laidu/learn/language/feature/net/http/HttpServerDemo.java b/language-feature/src/main/java/org/laidu/learn/language/feature/net/http/HttpServerDemo.java index 48258985e..213c08934 100644 --- a/language-feature/src/main/java/org/laidu/learn/language/feature/net/http/HttpServerDemo.java +++ b/language-feature/src/main/java/org/laidu/learn/language/feature/net/http/HttpServerDemo.java @@ -29,7 +29,7 @@ public static class DemoServlet extends GenericServlet{ @Override public void service(ServletRequest req, ServletResponse res) throws ServletException, IOException { - res.getWriter().write("helle"); + res.getWriter().write("hello world"); } } } \ No newline at end of file From b6335088c7d8222b9f0101f3299c8066ff038507 Mon Sep 17 00:00:00 2001 From: zangtiancai Date: Mon, 18 Feb 2019 16:53:02 +0800 Subject: [PATCH 244/417] fix tomcat embed 9.0.16 can not start port listen --- .../spring/mvc/controller/CorsController.java | 36 +++++++++++++++++++ framework/web/tomcat/pom.xml | 30 ++++++++++++++++ .../org/laidu/learn/tomcat/TomcatApp.java | 31 +++++++++++----- .../src/main/resources/template/index.html | 10 ++++++ 4 files changed, 99 insertions(+), 8 deletions(-) create mode 100644 framework/spring/spring-web/spring-mvc/src/main/java/org/laidu/learn/spring/mvc/controller/CorsController.java create mode 100644 framework/web/tomcat/src/main/resources/template/index.html diff --git a/framework/spring/spring-web/spring-mvc/src/main/java/org/laidu/learn/spring/mvc/controller/CorsController.java b/framework/spring/spring-web/spring-mvc/src/main/java/org/laidu/learn/spring/mvc/controller/CorsController.java new file mode 100644 index 000000000..e109234a3 --- /dev/null +++ b/framework/spring/spring-web/spring-mvc/src/main/java/org/laidu/learn/spring/mvc/controller/CorsController.java @@ -0,0 +1,36 @@ +package org.laidu.learn.spring.mvc.controller; + +import lombok.extern.slf4j.Slf4j; +import org.springframework.http.*; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +/** + * 跨域支持配置 + * + * @author zangtiancai + * @date 2019-02-18 14:01. + */ +@Slf4j +@RestController +@RequestMapping("/cors") +public class CorsController { + + @GetMapping("/serviceA") + public ResponseEntity serviceA(){ + + HttpCookie cookie = ResponseCookie.from("_sid", "123456") + .httpOnly(true) + .maxAge(10000) + .secure(true) + .path("/cors/serviceA") + .build(); + + return ResponseEntity.status(HttpStatus.OK) + .header(HttpHeaders.SET_COOKIE, cookie.toString()) + .body("serviceA"); + } + + +} diff --git a/framework/web/tomcat/pom.xml b/framework/web/tomcat/pom.xml index 7d167533a..733d9f067 100644 --- a/framework/web/tomcat/pom.xml +++ b/framework/web/tomcat/pom.xml @@ -12,6 +12,9 @@ tomcat + UTF-8 + 1.8 + 1.8 9.0.16 @@ -25,5 +28,32 @@ + + + + org.codehaus.mojo + appassembler-maven-plugin + 1.1.1 + + target + + + org.laidu.learn.tomcat.TomcatApp + webapp + + + + + + package + + assemble + + + + + + + \ No newline at end of file diff --git a/framework/web/tomcat/src/main/java/org/laidu/learn/tomcat/TomcatApp.java b/framework/web/tomcat/src/main/java/org/laidu/learn/tomcat/TomcatApp.java index 77e3556a6..4f95d4a83 100644 --- a/framework/web/tomcat/src/main/java/org/laidu/learn/tomcat/TomcatApp.java +++ b/framework/web/tomcat/src/main/java/org/laidu/learn/tomcat/TomcatApp.java @@ -1,19 +1,20 @@ package org.laidu.learn.tomcat; import lombok.extern.slf4j.Slf4j; +import org.apache.catalina.Context; import org.apache.catalina.LifecycleException; import org.apache.catalina.startup.Tomcat; -import javax.servlet.GenericServlet; -import javax.servlet.ServletException; import javax.servlet.ServletRequest; import javax.servlet.ServletResponse; +import javax.servlet.http.HttpServlet; +import java.io.File; import java.io.IOException; +import java.io.PrintWriter; /** * tomcat embed app * - * * @author zangtiancai * @date 2019-02-15 14:34. */ @@ -22,22 +23,36 @@ public class TomcatApp { public static void main(String[] args) throws LifecycleException { - // TODO: 完成hello搭建. create by zangtiancai on 2019-02-15 19:39. Tomcat tomcat = new Tomcat(); tomcat.setPort(8080); - tomcat.addServlet("","",new HelloServlet()); + String contentPath = "/hello"; + + Context ctx = tomcat.addContext(contentPath, new File(".").getAbsolutePath()); + + tomcat.addServlet(contentPath, "helloServlet", new HelloServlet()); + ctx.addServletMappingDecoded("/*", "helloServlet"); + + // tomcat embed 9.0.x 以后的版本如需使用默认connector需要显示调用该方法, + // 或者设置自定义connector + // 参考https://bz.apache.org/bugzilla/show_bug.cgi?id=60297 + tomcat.getConnector(); tomcat.start(); tomcat.getServer().await(); } - public static class HelloServlet extends GenericServlet{ + public static class HelloServlet extends HttpServlet { @Override - public void service(ServletRequest req, ServletResponse res) throws ServletException, IOException { - log.info(" local name {}",req.getLocalName()); + public void service(ServletRequest req, ServletResponse res) throws IOException { + PrintWriter writer = res.getWriter(); + writer.println("Welcome"); + writer.println("

                    Have a Great Day!

                    "); + writer.println(""); + writer.flush(); + writer.close(); } } } diff --git a/framework/web/tomcat/src/main/resources/template/index.html b/framework/web/tomcat/src/main/resources/template/index.html new file mode 100644 index 000000000..566549bdf --- /dev/null +++ b/framework/web/tomcat/src/main/resources/template/index.html @@ -0,0 +1,10 @@ + + + + + Title + + + + + \ No newline at end of file From 012f0cb75519a9e64c3b85ea78bb011229549f45 Mon Sep 17 00:00:00 2001 From: ztc Date: Thu, 21 Feb 2019 00:11:31 +0800 Subject: [PATCH 245/417] add spring retry learna --- framework/spring/pom.xml | 1 + framework/spring/spring-retry/pom.xml | 42 ++++++++++ .../laidu/learn/spring/retry/RetryApp.java | 26 +++++++ .../retry/controller/GithubController.java | 31 ++++++++ .../spring/retry/model/GithubUserInfo.java | 78 +++++++++++++++++++ .../spring/retry/service/GithubService.java | 19 +++++ .../retry/service/impl/GithubServiceImpl.java | 44 +++++++++++ .../spring-mvc/src/site/markdown/index.md | 2 + 8 files changed, 243 insertions(+) create mode 100644 framework/spring/spring-retry/pom.xml create mode 100644 framework/spring/spring-retry/src/main/java/org/laidu/learn/spring/retry/RetryApp.java create mode 100644 framework/spring/spring-retry/src/main/java/org/laidu/learn/spring/retry/controller/GithubController.java create mode 100644 framework/spring/spring-retry/src/main/java/org/laidu/learn/spring/retry/model/GithubUserInfo.java create mode 100644 framework/spring/spring-retry/src/main/java/org/laidu/learn/spring/retry/service/GithubService.java create mode 100644 framework/spring/spring-retry/src/main/java/org/laidu/learn/spring/retry/service/impl/GithubServiceImpl.java diff --git a/framework/spring/pom.xml b/framework/spring/pom.xml index bffab652b..7d52be4a0 100644 --- a/framework/spring/pom.xml +++ b/framework/spring/pom.xml @@ -24,6 +24,7 @@ spring-aop spring-spel spring-core + spring-retry diff --git a/framework/spring/spring-retry/pom.xml b/framework/spring/spring-retry/pom.xml new file mode 100644 index 000000000..a1593fc9e --- /dev/null +++ b/framework/spring/spring-retry/pom.xml @@ -0,0 +1,42 @@ + + + + spring + org.laidu.learn + 1.0-SNAPSHOT + + 4.0.0 + + spring-retry + + + + org.springframework.retry + spring-retry + + + + org.springframework.boot + spring-boot-starter-web-services + + + org.springframework.boot + spring-boot-starter-tomcat + + + org.springframework.boot + spring-boot-starter-json + + + + + org.springframework.boot + spring-boot-starter-jetty + + + + + + \ No newline at end of file diff --git a/framework/spring/spring-retry/src/main/java/org/laidu/learn/spring/retry/RetryApp.java b/framework/spring/spring-retry/src/main/java/org/laidu/learn/spring/retry/RetryApp.java new file mode 100644 index 000000000..dbd277297 --- /dev/null +++ b/framework/spring/spring-retry/src/main/java/org/laidu/learn/spring/retry/RetryApp.java @@ -0,0 +1,26 @@ +package org.laidu.learn.spring.retry; + +import lombok.extern.slf4j.Slf4j; +import org.springframework.boot.Banner; +import org.springframework.boot.autoconfigure.SpringBootApplication; +import org.springframework.boot.builder.SpringApplicationBuilder; +import org.springframework.retry.annotation.EnableRetry; + +/** + * retry app + *

                    + * Created by tiancai.zang + * on 2019-02-20 23:26. + */ +@Slf4j +@SpringBootApplication +@EnableRetry +public class RetryApp { + + public static void main(String[] args) { + new SpringApplicationBuilder(RetryApp.class) + .bannerMode(Banner.Mode.OFF) + .logStartupInfo(false) + .run(args); + } +} \ No newline at end of file diff --git a/framework/spring/spring-retry/src/main/java/org/laidu/learn/spring/retry/controller/GithubController.java b/framework/spring/spring-retry/src/main/java/org/laidu/learn/spring/retry/controller/GithubController.java new file mode 100644 index 000000000..f5f4d17af --- /dev/null +++ b/framework/spring/spring-retry/src/main/java/org/laidu/learn/spring/retry/controller/GithubController.java @@ -0,0 +1,31 @@ +package org.laidu.learn.spring.retry.controller; + +import lombok.extern.slf4j.Slf4j; +import org.laidu.learn.spring.retry.model.GithubUserInfo; +import org.laidu.learn.spring.retry.service.GithubService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PathVariable; +import org.springframework.web.bind.annotation.RestController; +import org.springframework.web.bind.annotation.RequestMapping; + +/** + * github api + *

                    + * Created by tiancai.zang + * on 2019-02-20 23:50. + */ +@Slf4j +@RestController +@RequestMapping("/github") +public class GithubController { + + @Autowired + private GithubService githubService; + + @GetMapping("/user/{user}") + public GithubUserInfo queryUserinfo(@PathVariable(name = "user") String user){ + + return githubService.queryUserInfo(user); + } +} \ No newline at end of file diff --git a/framework/spring/spring-retry/src/main/java/org/laidu/learn/spring/retry/model/GithubUserInfo.java b/framework/spring/spring-retry/src/main/java/org/laidu/learn/spring/retry/model/GithubUserInfo.java new file mode 100644 index 000000000..deb960888 --- /dev/null +++ b/framework/spring/spring-retry/src/main/java/org/laidu/learn/spring/retry/model/GithubUserInfo.java @@ -0,0 +1,78 @@ + +package org.laidu.learn.spring.retry.model; + +import com.google.gson.annotations.Expose; +import com.google.gson.annotations.SerializedName; +import lombok.Data; + +import javax.annotation.Generated; + +@Generated("net.hexar.json2pojo") +@SuppressWarnings("unused") +@Data +public class GithubUserInfo { + + @SerializedName("avatar_url") + private String avatarUrl; + @Expose + private Object bio; + @Expose + private String blog; + @Expose + private Object company; + @SerializedName("created_at") + private String createdAt; + @Expose + private Object email; + @SerializedName("events_url") + private String eventsUrl; + @Expose + private Long followers; + @SerializedName("followers_url") + private String followersUrl; + @Expose + private Long following; + @SerializedName("following_url") + private String followingUrl; + @SerializedName("gists_url") + private String gistsUrl; + @SerializedName("gravatar_id") + private String gravatarId; + @Expose + private Object hireable; + @SerializedName("html_url") + private String htmlUrl; + @Expose + private Long id; + @Expose + private String location; + @Expose + private String login; + @Expose + private String name; + @SerializedName("node_id") + private String nodeId; + @SerializedName("organizations_url") + private String organizationsUrl; + @SerializedName("public_gists") + private Long publicGists; + @SerializedName("public_repos") + private Long publicRepos; + @SerializedName("received_events_url") + private String receivedEventsUrl; + @SerializedName("repos_url") + private String reposUrl; + @SerializedName("site_admin") + private Boolean siteAdmin; + @SerializedName("starred_url") + private String starredUrl; + @SerializedName("subscriptions_url") + private String subscriptionsUrl; + @Expose + private String type; + @SerializedName("updated_at") + private String updatedAt; + @Expose + private String url; + +} diff --git a/framework/spring/spring-retry/src/main/java/org/laidu/learn/spring/retry/service/GithubService.java b/framework/spring/spring-retry/src/main/java/org/laidu/learn/spring/retry/service/GithubService.java new file mode 100644 index 000000000..d5a7f9eb5 --- /dev/null +++ b/framework/spring/spring-retry/src/main/java/org/laidu/learn/spring/retry/service/GithubService.java @@ -0,0 +1,19 @@ +package org.laidu.learn.spring.retry.service; + +import org.laidu.learn.spring.retry.model.GithubUserInfo; + +/** + * github service + *

                    + * Created by tiancai.zang + * on 2019-02-20 23:28. + */ +public interface GithubService { + + /** + * 获取github 用户公开信息 + * @param user + * @return + */ + GithubUserInfo queryUserInfo(String user); +} diff --git a/framework/spring/spring-retry/src/main/java/org/laidu/learn/spring/retry/service/impl/GithubServiceImpl.java b/framework/spring/spring-retry/src/main/java/org/laidu/learn/spring/retry/service/impl/GithubServiceImpl.java new file mode 100644 index 000000000..b8064bfa5 --- /dev/null +++ b/framework/spring/spring-retry/src/main/java/org/laidu/learn/spring/retry/service/impl/GithubServiceImpl.java @@ -0,0 +1,44 @@ +package org.laidu.learn.spring.retry.service.impl; + +import lombok.extern.slf4j.Slf4j; +import org.laidu.learn.spring.retry.model.GithubUserInfo; +import org.laidu.learn.spring.retry.service.GithubService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.boot.web.client.RestTemplateBuilder; +import org.springframework.context.annotation.Bean; +import org.springframework.retry.annotation.Retryable; +import org.springframework.stereotype.Service; +import org.springframework.web.client.RestTemplate; + +/** + * Created by tiancai.zang + * on 2019-02-20 23:45. + */ +@Slf4j +@Service +public class GithubServiceImpl implements GithubService { + + + @Autowired + private RestTemplate githubRestApi; + + @Value("${github.user.api:https://api.github.com/users/}") + private String usersUrl; + + + @Override + @Retryable + public GithubUserInfo queryUserInfo(String user) { + log.info(" query user {}",user); + return githubRestApi.getForEntity(usersUrl.concat(user),GithubUserInfo.class) + .getBody(); + } + + @Bean(name = "githubRestApi") + private RestTemplate githubRestApi(){ + return new RestTemplateBuilder() + .setReadTimeout(500) + .build(); + } +} \ No newline at end of file diff --git a/framework/spring/spring-web/spring-mvc/src/site/markdown/index.md b/framework/spring/spring-web/spring-mvc/src/site/markdown/index.md index 33e93ca7a..502a37f72 100644 --- a/framework/spring/spring-web/spring-mvc/src/site/markdown/index.md +++ b/framework/spring/spring-web/spring-mvc/src/site/markdown/index.md @@ -1,4 +1,6 @@ # spring mvc 学习 + + * [深入servlet]() * [常见的servlet容器]() * [深入spring mvc]() From 4ddb0bcbe690b65d29685aa8db014e4916d50acd Mon Sep 17 00:00:00 2001 From: zangtiancai Date: Thu, 28 Feb 2019 16:42:11 +0800 Subject: [PATCH 246/417] add Retry support --- .../learn/spring/retry/conf/RetryConfig.java | 29 +++++++++++++++++++ .../retry/service/impl/GithubServiceImpl.java | 25 ++++++++++++---- .../org/laidu/learn/tomcat/TomcatApp.java | 4 +++ 3 files changed, 52 insertions(+), 6 deletions(-) create mode 100644 framework/spring/spring-retry/src/main/java/org/laidu/learn/spring/retry/conf/RetryConfig.java diff --git a/framework/spring/spring-retry/src/main/java/org/laidu/learn/spring/retry/conf/RetryConfig.java b/framework/spring/spring-retry/src/main/java/org/laidu/learn/spring/retry/conf/RetryConfig.java new file mode 100644 index 000000000..b8b30e939 --- /dev/null +++ b/framework/spring/spring-retry/src/main/java/org/laidu/learn/spring/retry/conf/RetryConfig.java @@ -0,0 +1,29 @@ +package org.laidu.learn.spring.retry.conf; + +import lombok.extern.slf4j.Slf4j; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; +import org.springframework.retry.policy.SimpleRetryPolicy; +import org.springframework.retry.support.RetryTemplate; + +/** + * retry config + * + * @author zangtiancai + * @date 2019-02-21 11:26. + */ +@Slf4j +@Configuration +public class RetryConfig { + + @Bean + public RetryTemplate retryTemplate() { + RetryTemplate template = new RetryTemplate(); + + SimpleRetryPolicy retryPolicy = new SimpleRetryPolicy(); + retryPolicy.setMaxAttempts(3); + template.setRetryPolicy(retryPolicy); + + return template; + } +} diff --git a/framework/spring/spring-retry/src/main/java/org/laidu/learn/spring/retry/service/impl/GithubServiceImpl.java b/framework/spring/spring-retry/src/main/java/org/laidu/learn/spring/retry/service/impl/GithubServiceImpl.java index b8064bfa5..9884bef4a 100644 --- a/framework/spring/spring-retry/src/main/java/org/laidu/learn/spring/retry/service/impl/GithubServiceImpl.java +++ b/framework/spring/spring-retry/src/main/java/org/laidu/learn/spring/retry/service/impl/GithubServiceImpl.java @@ -7,7 +7,8 @@ import org.springframework.beans.factory.annotation.Value; import org.springframework.boot.web.client.RestTemplateBuilder; import org.springframework.context.annotation.Bean; -import org.springframework.retry.annotation.Retryable; +import org.springframework.retry.RetryCallback; +import org.springframework.retry.support.RetryTemplate; import org.springframework.stereotype.Service; import org.springframework.web.client.RestTemplate; @@ -23,22 +24,34 @@ public class GithubServiceImpl implements GithubService { @Autowired private RestTemplate githubRestApi; + @Autowired + private RetryTemplate retryTemplate; + @Value("${github.user.api:https://api.github.com/users/}") private String usersUrl; @Override - @Retryable public GithubUserInfo queryUserInfo(String user) { - log.info(" query user {}",user); - return githubRestApi.getForEntity(usersUrl.concat(user),GithubUserInfo.class) - .getBody(); + + + try { + return retryTemplate.execute((RetryCallback) retryContext ->{ + log.info(" query user {}",user); + GithubUserInfo body = githubRestApi.getForEntity(usersUrl.concat(user), GithubUserInfo.class) + .getBody(); + return body; + }); + } catch (Exception e) { + log.error(" query user error: {}",user); + } + return new GithubUserInfo(); } @Bean(name = "githubRestApi") private RestTemplate githubRestApi(){ return new RestTemplateBuilder() - .setReadTimeout(500) + .setReadTimeout(800) .build(); } } \ No newline at end of file diff --git a/framework/web/tomcat/src/main/java/org/laidu/learn/tomcat/TomcatApp.java b/framework/web/tomcat/src/main/java/org/laidu/learn/tomcat/TomcatApp.java index 4f95d4a83..925368af7 100644 --- a/framework/web/tomcat/src/main/java/org/laidu/learn/tomcat/TomcatApp.java +++ b/framework/web/tomcat/src/main/java/org/laidu/learn/tomcat/TomcatApp.java @@ -7,6 +7,7 @@ import javax.servlet.ServletRequest; import javax.servlet.ServletResponse; +import javax.servlet.annotation.WebServlet; import javax.servlet.http.HttpServlet; import java.io.File; import java.io.IOException; @@ -24,6 +25,7 @@ public class TomcatApp { public static void main(String[] args) throws LifecycleException { Tomcat tomcat = new Tomcat(); + tomcat.setPort(8080); String contentPath = "/hello"; @@ -43,6 +45,7 @@ public static void main(String[] args) throws LifecycleException { } + @WebServlet(asyncSupported = true) public static class HelloServlet extends HttpServlet { @Override @@ -55,4 +58,5 @@ public void service(ServletRequest req, ServletResponse res) throws IOException writer.close(); } } + } From 9d6bdb9850e06de98fba579d5678d89f61715646 Mon Sep 17 00:00:00 2001 From: zangtiancai Date: Fri, 1 Mar 2019 14:49:58 +0800 Subject: [PATCH 247/417] downgrade global jdk version to 8 & reserve language-feature jdk 11 --- .../retrofit/usage/local/LocalServiceApp.java | 8 ++-- framework/spring/spring-cloud/pom.xml | 1 - language-advance/bytecode/pom.xml | 25 +++++----- language-advance/pom.xml | 2 +- language-feature/pom.xml | 47 ++++++++++++++++++- pom.xml | 42 ++++++++--------- 6 files changed, 84 insertions(+), 41 deletions(-) diff --git a/framework/network/retrofit/src/main/java/org/laidu/learn/network/retrofit/usage/local/LocalServiceApp.java b/framework/network/retrofit/src/main/java/org/laidu/learn/network/retrofit/usage/local/LocalServiceApp.java index 4a7e947da..c6ebc7d64 100644 --- a/framework/network/retrofit/src/main/java/org/laidu/learn/network/retrofit/usage/local/LocalServiceApp.java +++ b/framework/network/retrofit/src/main/java/org/laidu/learn/network/retrofit/usage/local/LocalServiceApp.java @@ -90,13 +90,13 @@ public static void fileDownload(ResourceService service) { String filename = "20180928172521278582030156351166.xls"; service.download(filename) - .enqueue(new Callback<>() { + .enqueue(new Callback() { @Override - public void onResponse(Call call, Response response) { + public void onResponse(Call call, Response response) { if (response.isSuccessful()) { log.debug("server contacted and has file"); - boolean writtenToDisk = writeResponseBodyToDisk(filename,response.body()); + boolean writtenToDisk = writeResponseBodyToDisk(filename, (ResponseBody) response.body()); log.debug("file download was a success? " + writtenToDisk); } else { @@ -105,7 +105,7 @@ public void onResponse(Call call, Response response) } @Override - public void onFailure(Call call, Throwable t) { + public void onFailure(Call call, Throwable t) { log.error("文件下载失败"); } }); diff --git a/framework/spring/spring-cloud/pom.xml b/framework/spring/spring-cloud/pom.xml index 1d2be289f..137b911de 100644 --- a/framework/spring/spring-cloud/pom.xml +++ b/framework/spring/spring-cloud/pom.xml @@ -26,7 +26,6 @@ UTF-8 UTF-8 - 11 2.0.3 diff --git a/language-advance/bytecode/pom.xml b/language-advance/bytecode/pom.xml index cf0952cc9..4ea246f70 100644 --- a/language-advance/bytecode/pom.xml +++ b/language-advance/bytecode/pom.xml @@ -41,7 +41,6 @@ - process-sources compile @@ -49,18 +48,18 @@ - - - org.aspectj - aspectjrt - ${aspectj.version} - - - org.aspectj - aspectjtools - ${aspectj.version} - - + + + + + + + + + + + + diff --git a/language-advance/pom.xml b/language-advance/pom.xml index 15dd72668..3328b49b8 100644 --- a/language-advance/pom.xml +++ b/language-advance/pom.xml @@ -26,7 +26,7 @@ - 1.9.1 + 1.9.2 3.2.9 1.60 diff --git a/language-feature/pom.xml b/language-feature/pom.xml index d84805382..d4dee08fe 100644 --- a/language-feature/pom.xml +++ b/language-feature/pom.xml @@ -17,7 +17,7 @@ 3.1.0 - + 11 @@ -35,4 +35,49 @@ + + + + + org.apache.maven.plugins + maven-compiler-plugin + ${maven-compiler-plugin.version} + + ${jdk.version} + ${jdk.version} + + + + org.projectlombok + lombok + ${lombok.version} + + + + + + + + org.apache.maven.plugins + maven-toolchains-plugin + 1.1 + + + + 11 + oracle + + + + + + + toolchain + + + + + + + \ No newline at end of file diff --git a/pom.xml b/pom.xml index a2b6eda59..a77c45533 100644 --- a/pom.xml +++ b/pom.xml @@ -64,7 +64,7 @@ - 11 + 1.8 ${java.version} ${java.version} 3.8.0 @@ -203,26 +203,26 @@ - - org.apache.maven.plugins - maven-toolchains-plugin - 1.1 - - - - 11 - oracle - - - - - - - toolchain - - - - + + + + + + + + + + + + + + + + + + + + org.apache.maven.plugins From 4e7f93a1c319508680230f5e0faa1243b097a4e6 Mon Sep 17 00:00:00 2001 From: zangtiancai Date: Thu, 14 Feb 2019 13:56:59 +0800 Subject: [PATCH 248/417] remove useless todo --- .../src/java/org/laidu/learn/code/practice/package-info.java | 1 - .../java/org/laidu/learn/code/practice/sort/package-info.java | 1 - .../s3/src/main/java/org/laidu/learn/aws/s3/package-info.java | 1 - .../src/main/resources/template/PageProcessorTemplate.java | 2 -- 4 files changed, 5 deletions(-) diff --git a/code-practice/src/java/org/laidu/learn/code/practice/package-info.java b/code-practice/src/java/org/laidu/learn/code/practice/package-info.java index ae2b4a0e5..70406927b 100644 --- a/code-practice/src/java/org/laidu/learn/code/practice/package-info.java +++ b/code-practice/src/java/org/laidu/learn/code/practice/package-info.java @@ -6,5 +6,4 @@ * * @author laidu */ -// TODO: 2018-11-12 11:33 代码练习 package org.laidu.learn.code.practice; \ No newline at end of file diff --git a/code-practice/src/java/org/laidu/learn/code/practice/sort/package-info.java b/code-practice/src/java/org/laidu/learn/code/practice/sort/package-info.java index 869645df0..6fd10aa1d 100644 --- a/code-practice/src/java/org/laidu/learn/code/practice/sort/package-info.java +++ b/code-practice/src/java/org/laidu/learn/code/practice/sort/package-info.java @@ -6,5 +6,4 @@ * * @author laidu */ -// TODO: 2018-11-15 17:01 排序练习 package org.laidu.learn.code.practice.sort; \ No newline at end of file diff --git a/framework/aws/s3/src/main/java/org/laidu/learn/aws/s3/package-info.java b/framework/aws/s3/src/main/java/org/laidu/learn/aws/s3/package-info.java index 7c30b2c8b..0d138d0f9 100644 --- a/framework/aws/s3/src/main/java/org/laidu/learn/aws/s3/package-info.java +++ b/framework/aws/s3/src/main/java/org/laidu/learn/aws/s3/package-info.java @@ -6,4 +6,3 @@ * * @author laidu */ -// TODO: 2018-08-15 18:05 aws s3 使用 diff --git a/production-component/crawler-helper/src/main/resources/template/PageProcessorTemplate.java b/production-component/crawler-helper/src/main/resources/template/PageProcessorTemplate.java index 5d73bfec4..b6f4f2159 100644 --- a/production-component/crawler-helper/src/main/resources/template/PageProcessorTemplate.java +++ b/production-component/crawler-helper/src/main/resources/template/PageProcessorTemplate.java @@ -17,8 +17,6 @@ */ @Slf4j //@Component -//@CrawlerProxyType(type = CrawlerProxyTypeEnum.ONCE_WITHOUT_PROXY) -// TODO: __DATE__ 取消注解 __CLASS_CN_NAME__ public class __CLASS_NAME__PageProcessor extends AbstractRegPageProcessor { public __CLASS_NAME__PageProcessor() { From 3e90afbf049960a9738a43ed6488312137c66c3d Mon Sep 17 00:00:00 2001 From: zangtiancai Date: Thu, 14 Feb 2019 19:44:50 +0800 Subject: [PATCH 249/417] add mybatis annotation insert batch --- .../spring/spring-data/spring-mybatis/pom.xml | 17 +- .../controller/UserInfoController.java | 5 +- .../laidu/learn/mybatis/entity/AppUser.java | 47 -- .../learn/mybatis/mapper/AppUserMapper.java | 116 +--- .../mybatis/mapper/AppUserSqlProvider.java | 227 ------- .../learn/mybatis/model/package-info.java | 10 - .../learn/mybatis/model/var/VarAppUser.java | 27 - .../src/main/resources/application.properties | 16 +- .../main/resources/config/generatorConfig.xml | 2 +- .../config/mappers/AppUserMapper.xml | 594 ------------------ .../src/main/resources/db/data.sql | 1 + .../src/main/resources/db/schema.sql | 6 + .../mybatis/mapper/AppUserMapperTest.java | 17 +- .../src/test/resources/application.properties | 54 -- .../src/test/resources/generatorConfig.xml | 67 -- 15 files changed, 63 insertions(+), 1143 deletions(-) delete mode 100644 framework/spring/spring-data/spring-mybatis/src/main/java/org/laidu/learn/mybatis/mapper/AppUserSqlProvider.java delete mode 100644 framework/spring/spring-data/spring-mybatis/src/main/java/org/laidu/learn/mybatis/model/package-info.java delete mode 100644 framework/spring/spring-data/spring-mybatis/src/main/java/org/laidu/learn/mybatis/model/var/VarAppUser.java delete mode 100644 framework/spring/spring-data/spring-mybatis/src/main/resources/config/mappers/AppUserMapper.xml create mode 100644 framework/spring/spring-data/spring-mybatis/src/main/resources/db/data.sql create mode 100644 framework/spring/spring-data/spring-mybatis/src/main/resources/db/schema.sql delete mode 100644 framework/spring/spring-data/spring-mybatis/src/test/resources/application.properties delete mode 100644 framework/spring/spring-data/spring-mybatis/src/test/resources/generatorConfig.xml diff --git a/framework/spring/spring-data/spring-mybatis/pom.xml b/framework/spring/spring-data/spring-mybatis/pom.xml index cdb1ac970..902b64813 100644 --- a/framework/spring/spring-data/spring-mybatis/pom.xml +++ b/framework/spring/spring-data/spring-mybatis/pom.xml @@ -27,6 +27,11 @@ org.mybatis.spring.boot mybatis-spring-boot-starter + + com.h2database + h2 + runtime + org.mybatis.spring.boot mybatis-spring-boot-starter-test @@ -85,11 +90,17 @@ + + + + + - mysql - mysql-connector-java - ${mysql-connect.version} + com.h2database + h2 + 1.4.197 + com.softwareloop mybatis-generator-lombok-plugin diff --git a/framework/spring/spring-data/spring-mybatis/src/main/java/org/laidu/learn/mybatis/controller/UserInfoController.java b/framework/spring/spring-data/spring-mybatis/src/main/java/org/laidu/learn/mybatis/controller/UserInfoController.java index a52b4450d..79659e6b6 100644 --- a/framework/spring/spring-data/spring-mybatis/src/main/java/org/laidu/learn/mybatis/controller/UserInfoController.java +++ b/framework/spring/spring-data/spring-mybatis/src/main/java/org/laidu/learn/mybatis/controller/UserInfoController.java @@ -11,6 +11,7 @@ import org.springframework.web.bind.annotation.RestController; import java.util.List; +import java.util.Optional; /** @@ -37,9 +38,7 @@ public AppUser queryById(@PathVariable("id") Long id){ AppUser user = userMapper.selectByPrimaryKey(id); - System.out.println(user.getId()); - - user = userMapper.selectByPrimaryKey(id); + System.out.println(Optional.ofNullable(user).orElse(AppUser.builder().build()).getUsername()); return user; } diff --git a/framework/spring/spring-data/spring-mybatis/src/main/java/org/laidu/learn/mybatis/entity/AppUser.java b/framework/spring/spring-data/spring-mybatis/src/main/java/org/laidu/learn/mybatis/entity/AppUser.java index 2221a879c..3917caf6d 100644 --- a/framework/spring/spring-data/spring-mybatis/src/main/java/org/laidu/learn/mybatis/entity/AppUser.java +++ b/framework/spring/spring-data/spring-mybatis/src/main/java/org/laidu/learn/mybatis/entity/AppUser.java @@ -6,7 +6,6 @@ import lombok.NoArgsConstructor; import java.io.Serializable; -import java.util.Date; @Data @Builder @@ -15,55 +14,9 @@ public class AppUser implements Serializable { private Long id; - private String openId; - - private Long registerChannel; - private String username; private String idCard; - private String name; - - private String idCardDetailAddress; - - private Boolean isVerifyIdCard; - - private String idCardCoverup; - - private String idCardCoverdown; - - private String idCardHold; - - private Boolean isOtherPictureAuth; - - private Boolean isBankcardAuth; - - private String signaturePic; - - private Boolean isAdditionalAuth; - - private Boolean isEmergencyAuth; - - private String phone; - - private String email; - - private String address; - - private Integer userStatus; - - private Date createTime; - - private Date updateTime; - - private String remark; - - private Integer blackStatus; - - private Date auditTime; - - private String idCardPolice; - private static final long serialVersionUID = 1L; } \ No newline at end of file diff --git a/framework/spring/spring-data/spring-mybatis/src/main/java/org/laidu/learn/mybatis/mapper/AppUserMapper.java b/framework/spring/spring-data/spring-mybatis/src/main/java/org/laidu/learn/mybatis/mapper/AppUserMapper.java index 71ae02092..c308be122 100644 --- a/framework/spring/spring-data/spring-mybatis/src/main/java/org/laidu/learn/mybatis/mapper/AppUserMapper.java +++ b/framework/spring/spring-data/spring-mybatis/src/main/java/org/laidu/learn/mybatis/mapper/AppUserMapper.java @@ -3,120 +3,28 @@ import org.apache.ibatis.annotations.*; import org.laidu.learn.mybatis.entity.AppUser; +import java.util.List; + @Mapper public interface AppUserMapper { @Delete({ - "delete from ca_app_user", + "delete from app_user", "where id = #{id}" }) int deleteByPrimaryKey(Long id); - @Insert({ - "insert into ca_app_user (id, open_id, ", - "register_channel, username, ", - "id_card, name, id_card_detail_address, ", - "is_verify_id_card, id_card_coverup, ", - "id_card_coverdown, id_card_hold, ", - "is_other_picture_auth, is_bankcard_auth, ", - "signature_pic, is_additional_auth, ", - "is_emergency_auth, phone, ", - "email, address, ", - "user_status, create_time, ", - "update_time, remark, ", - "black_status, audit_time, ", - "id_card_police)", - "values (#{id}, #{openId}, ", - "#{registerChannel}, #{username}, ", - "#{idCard}, #{name}, #{idCardDetailAddress}, ", - "#{isVerifyIdCard}, #{idCardCoverup}, ", - "#{idCardCoverdown}, #{idCardHold}, ", - "#{isOtherPictureAuth}, #{isBankcardAuth}, ", - "#{signaturePic}, #{isAdditionalAuth}, ", - "#{isEmergencyAuth}, #{phone}, ", - "#{email}, #{address}, ", - "#{userStatus}, #{createTime}, ", - "#{updateTime}, #{remark}, ", - "#{blackStatus}, #{auditTime}, ", - "#{idCardPolice})" - }) - int insert(AppUser record); - - @InsertProvider(type=AppUserSqlProvider.class, method="insertSelective") - int insertSelective(AppUser record); - @Select({ - "select", - "id, open_id, register_channel, username, id_card, name, id_card_detail_address, ", - "is_verify_id_card, id_card_coverup, id_card_coverdown, id_card_hold, is_other_picture_auth, ", - "is_bankcard_auth, signature_pic, is_additional_auth, is_emergency_auth, phone, ", - "email, address, user_status, create_time, update_time, remark, black_status, ", - "audit_time, id_card_police", - "from ca_app_user", - "where id = #{id}" + "select id, username, id_card from app_user ", + "where 1=1 and id = #{id}" }) AppUser selectByPrimaryKey(Long id); - @UpdateProvider(type=AppUserSqlProvider.class, method="updateByPrimaryKeySelective") - int updateByPrimaryKeySelective(AppUser record); + @Insert("") + void insertBatch(@Param("appUsers") List appUsers); - @Update({ - "update ca_app_user", - "set open_id = #{openId},", - "register_channel = #{registerChannel},", - "username = #{username},", - "id_card = #{idCard},", - "name = #{name},", - "id_card_detail_address = #{idCardDetailAddress},", - "is_verify_id_card = #{isVerifyIdCard},", - "id_card_coverup = #{idCardCoverup},", - "id_card_coverdown = #{idCardCoverdown},", - "id_card_hold = #{idCardHold},", - "is_other_picture_auth = #{isOtherPictureAuth},", - "is_bankcard_auth = #{isBankcardAuth},", - "signature_pic = #{signaturePic},", - "is_additional_auth = #{isAdditionalAuth},", - "is_emergency_auth = #{isEmergencyAuth},", - "phone = #{phone},", - "email = #{email},", - "address = #{address},", - "user_status = #{userStatus},", - "create_time = #{createTime},", - "update_time = #{updateTime},", - "remark = #{remark},", - "black_status = #{blackStatus},", - "audit_time = #{auditTime},", - "id_card_police = #{idCardPolice}", - "where id = #{id}" - }) - int updateByPrimaryKeyWithBLOBs(AppUser record); - - @Update({ - "update ca_app_user", - "set open_id = #{openId},", - "register_channel = #{registerChannel},", - "username = #{username},", - "id_card = #{idCard},", - "name = #{name},", - "id_card_detail_address = #{idCardDetailAddress},", - "is_verify_id_card = #{isVerifyIdCard},", - "id_card_coverup = #{idCardCoverup},", - "id_card_coverdown = #{idCardCoverdown},", - "id_card_hold = #{idCardHold},", - "is_other_picture_auth = #{isOtherPictureAuth},", - "is_bankcard_auth = #{isBankcardAuth},", - "signature_pic = #{signaturePic},", - "is_additional_auth = #{isAdditionalAuth},", - "is_emergency_auth = #{isEmergencyAuth},", - "phone = #{phone},", - "email = #{email},", - "address = #{address},", - "user_status = #{userStatus},", - "create_time = #{createTime},", - "update_time = #{updateTime},", - "remark = #{remark},", - "black_status = #{blackStatus},", - "audit_time = #{auditTime}", - "where id = #{id}" - }) - int updateByPrimaryKey(AppUser record); } \ No newline at end of file diff --git a/framework/spring/spring-data/spring-mybatis/src/main/java/org/laidu/learn/mybatis/mapper/AppUserSqlProvider.java b/framework/spring/spring-data/spring-mybatis/src/main/java/org/laidu/learn/mybatis/mapper/AppUserSqlProvider.java deleted file mode 100644 index c21255074..000000000 --- a/framework/spring/spring-data/spring-mybatis/src/main/java/org/laidu/learn/mybatis/mapper/AppUserSqlProvider.java +++ /dev/null @@ -1,227 +0,0 @@ -package org.laidu.learn.mybatis.mapper; - -import org.apache.ibatis.jdbc.SQL; -import org.laidu.learn.mybatis.entity.AppUser; - -public class AppUserSqlProvider { - - public String insertSelective(AppUser record) { - SQL sql = new SQL(); - sql.INSERT_INTO("ca_app_user"); - - if (record.getId() != null) { - sql.VALUES("id", "#{id,jdbcType=BIGINT}"); - } - - if (record.getOpenId() != null) { - sql.VALUES("open_id", "#{openId,jdbcType=VARCHAR}"); - } - - if (record.getRegisterChannel() != null) { - sql.VALUES("register_channel", "#{registerChannel,jdbcType=BIGINT}"); - } - - if (record.getUsername() != null) { - sql.VALUES("username", "#{username,jdbcType=VARCHAR}"); - } - - if (record.getIdCard() != null) { - sql.VALUES("id_card", "#{idCard,jdbcType=VARCHAR}"); - } - - if (record.getName() != null) { - sql.VALUES("name", "#{name,jdbcType=VARCHAR}"); - } - - if (record.getIdCardDetailAddress() != null) { - sql.VALUES("id_card_detail_address", "#{idCardDetailAddress,jdbcType=VARCHAR}"); - } - - if (record.getIsVerifyIdCard() != null) { - sql.VALUES("is_verify_id_card", "#{isVerifyIdCard,jdbcType=BIT}"); - } - - if (record.getIdCardCoverup() != null) { - sql.VALUES("id_card_coverup", "#{idCardCoverup,jdbcType=VARCHAR}"); - } - - if (record.getIdCardCoverdown() != null) { - sql.VALUES("id_card_coverdown", "#{idCardCoverdown,jdbcType=VARCHAR}"); - } - - if (record.getIdCardHold() != null) { - sql.VALUES("id_card_hold", "#{idCardHold,jdbcType=VARCHAR}"); - } - - if (record.getIsOtherPictureAuth() != null) { - sql.VALUES("is_other_picture_auth", "#{isOtherPictureAuth,jdbcType=BIT}"); - } - - if (record.getIsBankcardAuth() != null) { - sql.VALUES("is_bankcard_auth", "#{isBankcardAuth,jdbcType=BIT}"); - } - - if (record.getSignaturePic() != null) { - sql.VALUES("signature_pic", "#{signaturePic,jdbcType=VARCHAR}"); - } - - if (record.getIsAdditionalAuth() != null) { - sql.VALUES("is_additional_auth", "#{isAdditionalAuth,jdbcType=BIT}"); - } - - if (record.getIsEmergencyAuth() != null) { - sql.VALUES("is_emergency_auth", "#{isEmergencyAuth,jdbcType=BIT}"); - } - - if (record.getPhone() != null) { - sql.VALUES("phone", "#{phone,jdbcType=VARCHAR}"); - } - - if (record.getEmail() != null) { - sql.VALUES("email", "#{email,jdbcType=VARCHAR}"); - } - - if (record.getAddress() != null) { - sql.VALUES("address", "#{address,jdbcType=VARCHAR}"); - } - - if (record.getUserStatus() != null) { - sql.VALUES("user_status", "#{userStatus,jdbcType=INTEGER}"); - } - - if (record.getCreateTime() != null) { - sql.VALUES("create_time", "#{createTime,jdbcType=TIMESTAMP}"); - } - - if (record.getUpdateTime() != null) { - sql.VALUES("update_time", "#{updateTime,jdbcType=TIMESTAMP}"); - } - - if (record.getRemark() != null) { - sql.VALUES("remark", "#{remark,jdbcType=VARCHAR}"); - } - - if (record.getBlackStatus() != null) { - sql.VALUES("black_status", "#{blackStatus,jdbcType=INTEGER}"); - } - - if (record.getAuditTime() != null) { - sql.VALUES("audit_time", "#{auditTime,jdbcType=TIMESTAMP}"); - } - - if (record.getIdCardPolice() != null) { - sql.VALUES("id_card_police", "#{idCardPolice,jdbcType=LONGVARCHAR}"); - } - - return sql.toString(); - } - - public String updateByPrimaryKeySelective(AppUser record) { - SQL sql = new SQL(); - sql.UPDATE("ca_app_user"); - - if (record.getOpenId() != null) { - sql.SET("open_id = #{openId,jdbcType=VARCHAR}"); - } - - if (record.getRegisterChannel() != null) { - sql.SET("register_channel = #{registerChannel,jdbcType=BIGINT}"); - } - - if (record.getUsername() != null) { - sql.SET("username = #{username,jdbcType=VARCHAR}"); - } - - if (record.getIdCard() != null) { - sql.SET("id_card = #{idCard,jdbcType=VARCHAR}"); - } - - if (record.getName() != null) { - sql.SET("name = #{name,jdbcType=VARCHAR}"); - } - - if (record.getIdCardDetailAddress() != null) { - sql.SET("id_card_detail_address = #{idCardDetailAddress,jdbcType=VARCHAR}"); - } - - if (record.getIsVerifyIdCard() != null) { - sql.SET("is_verify_id_card = #{isVerifyIdCard,jdbcType=BIT}"); - } - - if (record.getIdCardCoverup() != null) { - sql.SET("id_card_coverup = #{idCardCoverup,jdbcType=VARCHAR}"); - } - - if (record.getIdCardCoverdown() != null) { - sql.SET("id_card_coverdown = #{idCardCoverdown,jdbcType=VARCHAR}"); - } - - if (record.getIdCardHold() != null) { - sql.SET("id_card_hold = #{idCardHold,jdbcType=VARCHAR}"); - } - - if (record.getIsOtherPictureAuth() != null) { - sql.SET("is_other_picture_auth = #{isOtherPictureAuth,jdbcType=BIT}"); - } - - if (record.getIsBankcardAuth() != null) { - sql.SET("is_bankcard_auth = #{isBankcardAuth,jdbcType=BIT}"); - } - - if (record.getSignaturePic() != null) { - sql.SET("signature_pic = #{signaturePic,jdbcType=VARCHAR}"); - } - - if (record.getIsAdditionalAuth() != null) { - sql.SET("is_additional_auth = #{isAdditionalAuth,jdbcType=BIT}"); - } - - if (record.getIsEmergencyAuth() != null) { - sql.SET("is_emergency_auth = #{isEmergencyAuth,jdbcType=BIT}"); - } - - if (record.getPhone() != null) { - sql.SET("phone = #{phone,jdbcType=VARCHAR}"); - } - - if (record.getEmail() != null) { - sql.SET("email = #{email,jdbcType=VARCHAR}"); - } - - if (record.getAddress() != null) { - sql.SET("address = #{address,jdbcType=VARCHAR}"); - } - - if (record.getUserStatus() != null) { - sql.SET("user_status = #{userStatus,jdbcType=INTEGER}"); - } - - if (record.getCreateTime() != null) { - sql.SET("create_time = #{createTime,jdbcType=TIMESTAMP}"); - } - - if (record.getUpdateTime() != null) { - sql.SET("update_time = #{updateTime,jdbcType=TIMESTAMP}"); - } - - if (record.getRemark() != null) { - sql.SET("remark = #{remark,jdbcType=VARCHAR}"); - } - - if (record.getBlackStatus() != null) { - sql.SET("black_status = #{blackStatus,jdbcType=INTEGER}"); - } - - if (record.getAuditTime() != null) { - sql.SET("audit_time = #{auditTime,jdbcType=TIMESTAMP}"); - } - - if (record.getIdCardPolice() != null) { - sql.SET("id_card_police = #{idCardPolice,jdbcType=LONGVARCHAR}"); - } - - sql.WHERE("id = #{id,jdbcType=BIGINT}"); - - return sql.toString(); - } -} \ No newline at end of file diff --git a/framework/spring/spring-data/spring-mybatis/src/main/java/org/laidu/learn/mybatis/model/package-info.java b/framework/spring/spring-data/spring-mybatis/src/main/java/org/laidu/learn/mybatis/model/package-info.java deleted file mode 100644 index 8b91cf5d0..000000000 --- a/framework/spring/spring-data/spring-mybatis/src/main/java/org/laidu/learn/mybatis/model/package-info.java +++ /dev/null @@ -1,10 +0,0 @@ -/** - * model - *

                    - * Created by laidu - * on 2018-10-08 18:53. - * - * @author laidu - */ -// TODO: 2018-10-08 18:53 model -package org.laidu.learn.mybatis.model; \ No newline at end of file diff --git a/framework/spring/spring-data/spring-mybatis/src/main/java/org/laidu/learn/mybatis/model/var/VarAppUser.java b/framework/spring/spring-data/spring-mybatis/src/main/java/org/laidu/learn/mybatis/model/var/VarAppUser.java deleted file mode 100644 index 13f15dd71..000000000 --- a/framework/spring/spring-data/spring-mybatis/src/main/java/org/laidu/learn/mybatis/model/var/VarAppUser.java +++ /dev/null @@ -1,27 +0,0 @@ -package org.laidu.learn.mybatis.model.var; - -import lombok.AllArgsConstructor; -import lombok.Builder; -import lombok.Data; -import lombok.NoArgsConstructor; -import org.laidu.learn.mybatis.annotation.Query; - -/** - * 用户变量 - * - * @author tiancai.zang - * on 2018-10-08 18:54. - */ -@Data -@Builder -@AllArgsConstructor -@NoArgsConstructor -public class VarAppUser { - - /** - * 已注册用户数量 - */ - @Query("SELECT COUNT(*) FROM ca_app_user") - private Integer userCount; - -} \ No newline at end of file diff --git a/framework/spring/spring-data/spring-mybatis/src/main/resources/application.properties b/framework/spring/spring-data/spring-mybatis/src/main/resources/application.properties index c8d311146..8a7f8fb3b 100644 --- a/framework/spring/spring-data/spring-mybatis/src/main/resources/application.properties +++ b/framework/spring/spring-data/spring-mybatis/src/main/resources/application.properties @@ -2,11 +2,19 @@ spring.jackson.property-naming-strategy=SNAKE_CASE +spring.datasource.schema=classpath:db/schema.sql +spring.datasource.data=classpath:db/data.sql + +spring.h2.console.settings.web-allow-others=true +spring.h2.console.path=/h2-console +spring.h2.console.enabled=true +spring.h2.console.settings.trace=true + +spring.datasource.url=jdbc:h2:mem:default +spring.datasource.driver-class-name=org.h2.Driver +spring.datasource.username=sa +spring.datasource.password= spring.datasource.type=com.alibaba.druid.pool.DruidDataSource -spring.datasource.url= jdbc:mysql://local-dev:3306/o2o-dev?useSSL=false -spring.datasource.username=root -spring.datasource.password=root -spring.datasource.driver-class-name=com.mysql.jdbc.Driver # 初始化大小,最小,最大 spring.datasource.druid.initialSize=5 diff --git a/framework/spring/spring-data/spring-mybatis/src/main/resources/config/generatorConfig.xml b/framework/spring/spring-data/spring-mybatis/src/main/resources/config/generatorConfig.xml index fd2365fb2..3b6bc6c65 100644 --- a/framework/spring/spring-data/spring-mybatis/src/main/resources/config/generatorConfig.xml +++ b/framework/spring/spring-data/spring-mybatis/src/main/resources/config/generatorConfig.xml @@ -90,7 +90,7 @@ - diff --git a/framework/spring/spring-data/spring-mybatis/src/main/resources/config/mappers/AppUserMapper.xml b/framework/spring/spring-data/spring-mybatis/src/main/resources/config/mappers/AppUserMapper.xml deleted file mode 100644 index 9be87a7e6..000000000 --- a/framework/spring/spring-data/spring-mybatis/src/main/resources/config/mappers/AppUserMapper.xml +++ /dev/null @@ -1,594 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - and ${criterion.condition} - - - and ${criterion.condition} #{criterion.value} - - - and ${criterion.condition} #{criterion.value} and #{criterion.secondValue} - - - and ${criterion.condition} - - #{listItem} - - - - - - - - - - - id, open_id, register_channel, username, id_card, name, id_card_detail_address, is_verify_id_card, - id_card_coverup, id_card_coverdown, id_card_hold, is_other_picture_auth, is_bankcard_auth, - signature_pic, is_additional_auth, is_emergency_auth, phone, email, address, user_status, - create_time, update_time, remark, black_status, audit_time, cash_black_status, cash_quota, - frozen_cash_quota, credit_quota, frozen_credit_quota, audit_status - - - id_card_police - - - - - - delete from ca_app_user - where id = #{id,jdbcType=BIGINT} - - - insert into ca_app_user (id, open_id, register_channel, - username, id_card, name, - id_card_detail_address, is_verify_id_card, id_card_coverup, - id_card_coverdown, id_card_hold, is_other_picture_auth, - is_bankcard_auth, signature_pic, is_additional_auth, - is_emergency_auth, phone, email, - address, user_status, create_time, - update_time, remark, black_status, - audit_time, cash_black_status, cash_quota, - frozen_cash_quota, credit_quota, frozen_credit_quota, - audit_status, id_card_police) - values (#{id,jdbcType=BIGINT}, #{openId,jdbcType=VARCHAR}, #{registerChannel,jdbcType=BIGINT}, - #{username,jdbcType=VARCHAR}, #{idCard,jdbcType=VARCHAR}, #{name,jdbcType=VARCHAR}, - #{idCardDetailAddress,jdbcType=VARCHAR}, #{isVerifyIdCard,jdbcType=BIT}, #{idCardCoverup,jdbcType=VARCHAR}, - #{idCardCoverdown,jdbcType=VARCHAR}, #{idCardHold,jdbcType=VARCHAR}, #{isOtherPictureAuth,jdbcType=BIT}, - #{isBankcardAuth,jdbcType=BIT}, #{signaturePic,jdbcType=VARCHAR}, #{isAdditionalAuth,jdbcType=BIT}, - #{isEmergencyAuth,jdbcType=BIT}, #{phone,jdbcType=VARCHAR}, #{email,jdbcType=VARCHAR}, - #{address,jdbcType=VARCHAR}, #{userStatus,jdbcType=INTEGER}, #{createTime,jdbcType=TIMESTAMP}, - #{updateTime,jdbcType=TIMESTAMP}, #{remark,jdbcType=VARCHAR}, #{blackStatus,jdbcType=INTEGER}, - #{auditTime,jdbcType=TIMESTAMP}, #{cashBlackStatus,jdbcType=INTEGER}, #{cashQuota,jdbcType=DECIMAL}, - #{frozenCashQuota,jdbcType=DECIMAL}, #{creditQuota,jdbcType=DECIMAL}, #{frozenCreditQuota,jdbcType=DECIMAL}, - #{auditStatus,jdbcType=INTEGER}, #{idCardPolice,jdbcType=LONGVARCHAR}) - - - insert into ca_app_user - - - id, - - - open_id, - - - register_channel, - - - username, - - - id_card, - - - name, - - - id_card_detail_address, - - - is_verify_id_card, - - - id_card_coverup, - - - id_card_coverdown, - - - id_card_hold, - - - is_other_picture_auth, - - - is_bankcard_auth, - - - signature_pic, - - - is_additional_auth, - - - is_emergency_auth, - - - phone, - - - email, - - - address, - - - user_status, - - - create_time, - - - update_time, - - - remark, - - - black_status, - - - audit_time, - - - cash_black_status, - - - cash_quota, - - - frozen_cash_quota, - - - credit_quota, - - - frozen_credit_quota, - - - audit_status, - - - id_card_police, - - - - - #{id,jdbcType=BIGINT}, - - - #{openId,jdbcType=VARCHAR}, - - - #{registerChannel,jdbcType=BIGINT}, - - - #{username,jdbcType=VARCHAR}, - - - #{idCard,jdbcType=VARCHAR}, - - - #{name,jdbcType=VARCHAR}, - - - #{idCardDetailAddress,jdbcType=VARCHAR}, - - - #{isVerifyIdCard,jdbcType=BIT}, - - - #{idCardCoverup,jdbcType=VARCHAR}, - - - #{idCardCoverdown,jdbcType=VARCHAR}, - - - #{idCardHold,jdbcType=VARCHAR}, - - - #{isOtherPictureAuth,jdbcType=BIT}, - - - #{isBankcardAuth,jdbcType=BIT}, - - - #{signaturePic,jdbcType=VARCHAR}, - - - #{isAdditionalAuth,jdbcType=BIT}, - - - #{isEmergencyAuth,jdbcType=BIT}, - - - #{phone,jdbcType=VARCHAR}, - - - #{email,jdbcType=VARCHAR}, - - - #{address,jdbcType=VARCHAR}, - - - #{userStatus,jdbcType=INTEGER}, - - - #{createTime,jdbcType=TIMESTAMP}, - - - #{updateTime,jdbcType=TIMESTAMP}, - - - #{remark,jdbcType=VARCHAR}, - - - #{blackStatus,jdbcType=INTEGER}, - - - #{auditTime,jdbcType=TIMESTAMP}, - - - #{cashBlackStatus,jdbcType=INTEGER}, - - - #{cashQuota,jdbcType=DECIMAL}, - - - #{frozenCashQuota,jdbcType=DECIMAL}, - - - #{creditQuota,jdbcType=DECIMAL}, - - - #{frozenCreditQuota,jdbcType=DECIMAL}, - - - #{auditStatus,jdbcType=INTEGER}, - - - #{idCardPolice,jdbcType=LONGVARCHAR}, - - - - - update ca_app_user - - - open_id = #{openId,jdbcType=VARCHAR}, - - - register_channel = #{registerChannel,jdbcType=BIGINT}, - - - username = #{username,jdbcType=VARCHAR}, - - - id_card = #{idCard,jdbcType=VARCHAR}, - - - name = #{name,jdbcType=VARCHAR}, - - - id_card_detail_address = #{idCardDetailAddress,jdbcType=VARCHAR}, - - - is_verify_id_card = #{isVerifyIdCard,jdbcType=BIT}, - - - id_card_coverup = #{idCardCoverup,jdbcType=VARCHAR}, - - - id_card_coverdown = #{idCardCoverdown,jdbcType=VARCHAR}, - - - id_card_hold = #{idCardHold,jdbcType=VARCHAR}, - - - is_other_picture_auth = #{isOtherPictureAuth,jdbcType=BIT}, - - - is_bankcard_auth = #{isBankcardAuth,jdbcType=BIT}, - - - signature_pic = #{signaturePic,jdbcType=VARCHAR}, - - - is_additional_auth = #{isAdditionalAuth,jdbcType=BIT}, - - - is_emergency_auth = #{isEmergencyAuth,jdbcType=BIT}, - - - phone = #{phone,jdbcType=VARCHAR}, - - - email = #{email,jdbcType=VARCHAR}, - - - address = #{address,jdbcType=VARCHAR}, - - - user_status = #{userStatus,jdbcType=INTEGER}, - - - create_time = #{createTime,jdbcType=TIMESTAMP}, - - - update_time = #{updateTime,jdbcType=TIMESTAMP}, - - - remark = #{remark,jdbcType=VARCHAR}, - - - black_status = #{blackStatus,jdbcType=INTEGER}, - - - audit_time = #{auditTime,jdbcType=TIMESTAMP}, - - - cash_black_status = #{cashBlackStatus,jdbcType=INTEGER}, - - - cash_quota = #{cashQuota,jdbcType=DECIMAL}, - - - frozen_cash_quota = #{frozenCashQuota,jdbcType=DECIMAL}, - - - credit_quota = #{creditQuota,jdbcType=DECIMAL}, - - - frozen_credit_quota = #{frozenCreditQuota,jdbcType=DECIMAL}, - - - audit_status = #{auditStatus,jdbcType=INTEGER}, - - - id_card_police = #{idCardPolice,jdbcType=LONGVARCHAR}, - - - where id = #{id,jdbcType=BIGINT} - - - update ca_app_user - set open_id = #{openId,jdbcType=VARCHAR}, - register_channel = #{registerChannel,jdbcType=BIGINT}, - username = #{username,jdbcType=VARCHAR}, - id_card = #{idCard,jdbcType=VARCHAR}, - name = #{name,jdbcType=VARCHAR}, - id_card_detail_address = #{idCardDetailAddress,jdbcType=VARCHAR}, - is_verify_id_card = #{isVerifyIdCard,jdbcType=BIT}, - id_card_coverup = #{idCardCoverup,jdbcType=VARCHAR}, - id_card_coverdown = #{idCardCoverdown,jdbcType=VARCHAR}, - id_card_hold = #{idCardHold,jdbcType=VARCHAR}, - is_other_picture_auth = #{isOtherPictureAuth,jdbcType=BIT}, - is_bankcard_auth = #{isBankcardAuth,jdbcType=BIT}, - signature_pic = #{signaturePic,jdbcType=VARCHAR}, - is_additional_auth = #{isAdditionalAuth,jdbcType=BIT}, - is_emergency_auth = #{isEmergencyAuth,jdbcType=BIT}, - phone = #{phone,jdbcType=VARCHAR}, - email = #{email,jdbcType=VARCHAR}, - address = #{address,jdbcType=VARCHAR}, - user_status = #{userStatus,jdbcType=INTEGER}, - create_time = #{createTime,jdbcType=TIMESTAMP}, - update_time = #{updateTime,jdbcType=TIMESTAMP}, - remark = #{remark,jdbcType=VARCHAR}, - black_status = #{blackStatus,jdbcType=INTEGER}, - audit_time = #{auditTime,jdbcType=TIMESTAMP}, - cash_black_status = #{cashBlackStatus,jdbcType=INTEGER}, - cash_quota = #{cashQuota,jdbcType=DECIMAL}, - frozen_cash_quota = #{frozenCashQuota,jdbcType=DECIMAL}, - credit_quota = #{creditQuota,jdbcType=DECIMAL}, - frozen_credit_quota = #{frozenCreditQuota,jdbcType=DECIMAL}, - audit_status = #{auditStatus,jdbcType=INTEGER}, - id_card_police = #{idCardPolice,jdbcType=LONGVARCHAR} - where id = #{id,jdbcType=BIGINT} - - - update ca_app_user - set open_id = #{openId,jdbcType=VARCHAR}, - register_channel = #{registerChannel,jdbcType=BIGINT}, - username = #{username,jdbcType=VARCHAR}, - id_card = #{idCard,jdbcType=VARCHAR}, - name = #{name,jdbcType=VARCHAR}, - id_card_detail_address = #{idCardDetailAddress,jdbcType=VARCHAR}, - is_verify_id_card = #{isVerifyIdCard,jdbcType=BIT}, - id_card_coverup = #{idCardCoverup,jdbcType=VARCHAR}, - id_card_coverdown = #{idCardCoverdown,jdbcType=VARCHAR}, - id_card_hold = #{idCardHold,jdbcType=VARCHAR}, - is_other_picture_auth = #{isOtherPictureAuth,jdbcType=BIT}, - is_bankcard_auth = #{isBankcardAuth,jdbcType=BIT}, - signature_pic = #{signaturePic,jdbcType=VARCHAR}, - is_additional_auth = #{isAdditionalAuth,jdbcType=BIT}, - is_emergency_auth = #{isEmergencyAuth,jdbcType=BIT}, - phone = #{phone,jdbcType=VARCHAR}, - email = #{email,jdbcType=VARCHAR}, - address = #{address,jdbcType=VARCHAR}, - user_status = #{userStatus,jdbcType=INTEGER}, - create_time = #{createTime,jdbcType=TIMESTAMP}, - update_time = #{updateTime,jdbcType=TIMESTAMP}, - remark = #{remark,jdbcType=VARCHAR}, - black_status = #{blackStatus,jdbcType=INTEGER}, - audit_time = #{auditTime,jdbcType=TIMESTAMP}, - cash_black_status = #{cashBlackStatus,jdbcType=INTEGER}, - cash_quota = #{cashQuota,jdbcType=DECIMAL}, - frozen_cash_quota = #{frozenCashQuota,jdbcType=DECIMAL}, - credit_quota = #{creditQuota,jdbcType=DECIMAL}, - frozen_credit_quota = #{frozenCreditQuota,jdbcType=DECIMAL}, - audit_status = #{auditStatus,jdbcType=INTEGER} - where id = #{id,jdbcType=BIGINT} - - - - - - \ No newline at end of file diff --git a/framework/spring/spring-data/spring-mybatis/src/main/resources/db/data.sql b/framework/spring/spring-data/spring-mybatis/src/main/resources/db/data.sql new file mode 100644 index 000000000..3a9cabafc --- /dev/null +++ b/framework/spring/spring-data/spring-mybatis/src/main/resources/db/data.sql @@ -0,0 +1 @@ +insert into app_user (username, id_card) values ('John', '411122100012319876'); \ No newline at end of file diff --git a/framework/spring/spring-data/spring-mybatis/src/main/resources/db/schema.sql b/framework/spring/spring-data/spring-mybatis/src/main/resources/db/schema.sql new file mode 100644 index 000000000..e49ab1bff --- /dev/null +++ b/framework/spring/spring-data/spring-mybatis/src/main/resources/db/schema.sql @@ -0,0 +1,6 @@ + +create table app_user ( + id bigint auto_increment, + username varchar(80) null, + id_card varchar(80) null +); \ No newline at end of file diff --git a/framework/spring/spring-data/spring-mybatis/src/test/java/org/laidu/learn/mybatis/mapper/AppUserMapperTest.java b/framework/spring/spring-data/spring-mybatis/src/test/java/org/laidu/learn/mybatis/mapper/AppUserMapperTest.java index d5770a017..d8a6d732a 100644 --- a/framework/spring/spring-data/spring-mybatis/src/test/java/org/laidu/learn/mybatis/mapper/AppUserMapperTest.java +++ b/framework/spring/spring-data/spring-mybatis/src/test/java/org/laidu/learn/mybatis/mapper/AppUserMapperTest.java @@ -4,6 +4,7 @@ import org.junit.jupiter.api.Test; import org.junit.jupiter.api.extension.ExtendWith; import org.junit.runner.RunWith; +import org.laidu.learn.mybatis.entity.AppUser; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.jdbc.EmbeddedDatabaseConnection; import org.springframework.boot.test.autoconfigure.jdbc.AutoConfigureTestDatabase; @@ -11,6 +12,9 @@ import org.springframework.test.context.junit.jupiter.SpringExtension; import org.springframework.test.context.junit4.SpringRunner; +import java.util.Arrays; +import java.util.List; + @RunWith(SpringRunner.class) @SpringBootTest @@ -24,7 +28,16 @@ class AppUserMapperTest { @Test void selectAppUserList() { -// appUserMapper.selectAppUserList(1,2).forEach(System.out::println); - Assert.assertEquals(1,1); + AppUser appUser = appUserMapper.selectByPrimaryKey(1L); + Assert.assertNotNull(appUser.getId()); + + List appUserList = Arrays.asList(appUser,appUser,appUser,appUser); + + appUserMapper.insertBatch(appUserList); + + AppUser appUser1 = appUserMapper.selectByPrimaryKey(3L); + Assert.assertNotNull(appUser1); + + } } \ No newline at end of file diff --git a/framework/spring/spring-data/spring-mybatis/src/test/resources/application.properties b/framework/spring/spring-data/spring-mybatis/src/test/resources/application.properties deleted file mode 100644 index ee2b0a2c9..000000000 --- a/framework/spring/spring-data/spring-mybatis/src/test/resources/application.properties +++ /dev/null @@ -1,54 +0,0 @@ -#spring date source config - -spring.datasource.type=com.alibaba.druid.pool.DruidDataSource -spring.datasource.url= jdbc:mysql://local-dev:3306/o2o?useSSL=false -spring.datasource.username=root -spring.datasource.password=root -spring.datasource.driver-class-name=com.mysql.jdbc.Driver - -# 初始化大小,最小,最大 -spring.datasource.druid.initialSize=5 -spring.datasource.druid.minIdle=5 -spring.datasource.druid.maxActive=20 -# 配置获取连接等待超时的时间 -spring.datasource.druid.maxWait=60000 -# 配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位是毫秒 -spring.datasource.druid.timeBetweenEvictionRunsMillis=60000 -# 配置一个连接在池中最小生存的时间,单位是毫秒 -spring.datasource.druid.minEvictableIdleTimeMillis=300000 -spring.datasource.druid.validationQuery=SELECT 1 FROM DUAL -spring.datasource.druid.testWhileIdle=true -spring.datasource.druid.testOnBorrow=false -spring.datasource.druid.testOnReturn=false -# 打开PSCache,并且指定每个连接上PSCache的大小 -spring.datasource.druid.poolPreparedStatements=true -spring.datasource.druid.maxPoolPreparedStatementPerConnectionSize=20 -# 配置监控统计拦截的filters,去掉后监控界面sql无法统计,'wall'用于防火墙 -spring.datasource.druid.filters=stat,wall,slf4j -# 通过connectProperties属性来打开mergeSql功能;慢SQL记录 -spring.datasource.druid.connectionProperties=druid.stat.mergeSql=true;druid.stat.slowSqlMillis=5000 -spring.datasource.druid.useGlobalDataSourceStat=true - -spring.datasource.druid.filter.stat.db-type=mysql -spring.datasource.druid.filter.stat.log-slow-sql=true -spring.datasource.druid.filter.stat.slow-sql-millis=2000 -spring.datasource.druid.filter.stat.merge-sql=true - -spring.datasource.druid.filter.slf4j.enabled=true -spring.datasource.druid.filter.slf4j.statement-log-enabled=true - -spring.datasource.druid.filter.slf4j.statement-execute-after-log-enabled=false -spring.datasource.druid.filter.slf4j.statement-parameter-set-log-enabled=true -spring.datasource.druid.filter.slf4j.statement-execute-batch-after-log-enabled=false -spring.datasource.druid.filter.slf4j.statement-execute-query-after-log-enabled=false -spring.datasource.druid.filter.slf4j.statement-prepare-call-after-log-enabled=false -spring.datasource.druid.filter.slf4j.statement-parameter-clear-log-enable=false -spring.datasource.druid.filter.slf4j.statement-executable-sql-log-enable=false -spring.datasource.druid.filter.slf4j.statement-prepare-after-log-enabled=false -spring.datasource.druid.filter.slf4j.result-set-log-enabled=false -spring.datasource.druid.filter.slf4j.connection-log-enabled=false - - -pagehelper.reasonable= true -pagehelper.dialect=mysql -pagehelper.support-methods-arguments=true diff --git a/framework/spring/spring-data/spring-mybatis/src/test/resources/generatorConfig.xml b/framework/spring/spring-data/spring-mybatis/src/test/resources/generatorConfig.xml deleted file mode 100644 index c7489ebf0..000000000 --- a/framework/spring/spring-data/spring-mybatis/src/test/resources/generatorConfig.xml +++ /dev/null @@ -1,67 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
                    -
                    - - \ No newline at end of file From 4880a3ba7e631c5b111710c114fdc886a4200ff6 Mon Sep 17 00:00:00 2001 From: zangtiancai Date: Fri, 15 Feb 2019 10:16:02 +0800 Subject: [PATCH 250/417] convert properties 2 yml --- .../src/main/resources/application.properties | 91 ------------------- .../src/main/resources/application.yml | 70 ++++++++++++++ 2 files changed, 70 insertions(+), 91 deletions(-) delete mode 100644 framework/spring/spring-data/spring-mybatis/src/main/resources/application.properties create mode 100644 framework/spring/spring-data/spring-mybatis/src/main/resources/application.yml diff --git a/framework/spring/spring-data/spring-mybatis/src/main/resources/application.properties b/framework/spring/spring-data/spring-mybatis/src/main/resources/application.properties deleted file mode 100644 index 8a7f8fb3b..000000000 --- a/framework/spring/spring-data/spring-mybatis/src/main/resources/application.properties +++ /dev/null @@ -1,91 +0,0 @@ -#spring date source config - -spring.jackson.property-naming-strategy=SNAKE_CASE - -spring.datasource.schema=classpath:db/schema.sql -spring.datasource.data=classpath:db/data.sql - -spring.h2.console.settings.web-allow-others=true -spring.h2.console.path=/h2-console -spring.h2.console.enabled=true -spring.h2.console.settings.trace=true - -spring.datasource.url=jdbc:h2:mem:default -spring.datasource.driver-class-name=org.h2.Driver -spring.datasource.username=sa -spring.datasource.password= -spring.datasource.type=com.alibaba.druid.pool.DruidDataSource - -# 初始化大小,最小,最大 -spring.datasource.druid.initialSize=5 -spring.datasource.druid.minIdle=5 -spring.datasource.druid.maxActive=20 -# 配置获取连接等待超时的时间 -spring.datasource.druid.maxWait=60000 -# 配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位是毫秒 -spring.datasource.druid.timeBetweenEvictionRunsMillis=60000 -# 配置一个连接在池中最小生存的时间,单位是毫秒 -spring.datasource.druid.minEvictableIdleTimeMillis=300000 -spring.datasource.druid.validationQuery=SELECT 1 FROM DUAL -spring.datasource.druid.testWhileIdle=true -spring.datasource.druid.testOnBorrow=false -spring.datasource.druid.testOnReturn=false -# 打开PSCache,并且指定每个连接上PSCache的大小 -spring.datasource.druid.poolPreparedStatements=true -spring.datasource.druid.maxPoolPreparedStatementPerConnectionSize=20 -# 配置监控统计拦截的filters,去掉后监控界面sql无法统计,'wall'用于防火墙 -spring.datasource.druid.filters=stat,wall,slf4j -# 通过connectProperties属性来打开mergeSql功能;慢SQL记录 -spring.datasource.druid.connectionProperties=druid.stat.mergeSql=true;druid.stat.slowSqlMillis=5000 -spring.datasource.druid.useGlobalDataSourceStat=true - -spring.datasource.druid.filter.stat.db-type=mysql -spring.datasource.druid.filter.stat.log-slow-sql=true -spring.datasource.druid.filter.stat.slow-sql-millis=2000 -spring.datasource.druid.filter.stat.merge-sql=true - -spring.datasource.druid.log-different-thread=true - -spring.datasource.druid.filter.slf4j.enabled=true -spring.datasource.druid.filter.slf4j.statement-log-enabled=true -spring.datasource.druid.filter.slf4j.statement-execute-after-log-enabled=false -spring.datasource.druid.filter.slf4j.statement-parameter-set-log-enabled=true -spring.datasource.druid.filter.slf4j.statement-execute-batch-after-log-enabled=false -spring.datasource.druid.filter.slf4j.statement-execute-query-after-log-enabled=false -spring.datasource.druid.filter.slf4j.statement-prepare-call-after-log-enabled=false -spring.datasource.druid.filter.slf4j.statement-parameter-clear-log-enable=false -spring.datasource.druid.filter.slf4j.statement-executable-sql-log-enable=false -spring.datasource.druid.filter.slf4j.statement-prepare-after-log-enabled=false -spring.datasource.druid.filter.slf4j.result-set-log-enabled=false -spring.datasource.druid.filter.slf4j.connection-log-enabled=false - - -pagehelper.reasonable= true -pagehelper.support-methods-arguments=true - - -logging.level.org.laidu.learn.mybatis.mapper=debug -logging.config=classpath:config/logback-spring.xml - -#mybatis 配置 -#mybatis.generator.configurationFile=config/generatorConfig.xml -mybatis.configuration.use-generated-keys=true -mybatis.configuration.local-cache-scope=session -mybatis.configuration.map-underscore-to-camel-case=true - -#redis config -#spring.redis.database=0 -#spring.redis.host=localhost -#spring.redis.password= -#spring.redis.port=6379 -#spring.redis.jedis.pool.max-active=8 -#spring.redis.jedis.pool.max-idle=8 -#spring.redis.jedis.pool.max-wait=-1ms -#spring.redis.jedis.pool.min-idle=0 -#spring.redis.lettuce.pool.max-active=8 -#spring.redis.lettuce.pool.max-idle=8 -#spring.redis.lettuce.pool.max-wait=-1ms -#spring.redis.lettuce.pool.min-idle=0 -#spring.redis.lettuce.shutdown-timeout=100ms -#spring.redis.ssl=false -#spring.redis.timeout= \ No newline at end of file diff --git a/framework/spring/spring-data/spring-mybatis/src/main/resources/application.yml b/framework/spring/spring-data/spring-mybatis/src/main/resources/application.yml new file mode 100644 index 000000000..af96a6aee --- /dev/null +++ b/framework/spring/spring-data/spring-mybatis/src/main/resources/application.yml @@ -0,0 +1,70 @@ +logging: + config: classpath:config/logback-spring.xml + + +mybatis: + configuration: + local-cache-scope: session + map-underscore-to-camel-case: true + use-generated-keys: true + + +pagehelper: + reasonable: true + support-methods-arguments: true + + +spring: + datasource: + data: classpath:db/data.sql + driver-class-name: org.h2.Driver + druid: + connectionProperties: druid.stat.mergeSql=true;druid.stat.slowSqlMillis=5000 + filter: + slf4j: + connection-log-enabled: false + enabled: true + result-set-log-enabled: true +# statement-executable-sql-log-enable: true + statement-execute-after-log-enabled: true +# statement-execute-batch-after-log-enabled: false +# statement-execute-query-after-log-enabled: false +# statement-log-enabled: true +# statement-parameter-clear-log-enable: false +# statement-parameter-set-log-enabled: true +# statement-prepare-after-log-enabled: false +# statement-prepare-call-after-log-enabled: false + stat: + db-type: mysql + log-slow-sql: true + merge-sql: true + slow-sql-millis: 2000 + filters: stat,wall,slf4j + initialSize: 5 + log-different-thread: true + maxActive: 20 + maxPoolPreparedStatementPerConnectionSize: 20 + maxWait: 60000 + minEvictableIdleTimeMillis: 300000 + minIdle: 5 + poolPreparedStatements: true + testOnBorrow: false + testOnReturn: false + testWhileIdle: true + timeBetweenEvictionRunsMillis: 60000 + useGlobalDataSourceStat: true + validationQuery: SELECT 1 FROM DUAL + password: '' + schema: classpath:db/schema.sql + type: com.alibaba.druid.pool.DruidDataSource + url: jdbc:h2:mem:default + username: sa + h2: + console: + enabled: true + path: /h2-console + settings: + trace: true + web-allow-others: true + jackson: + property-naming-strategy: SNAKE_CASE From 92e0c248b43101e2492a48edb1e1aa09ae1a0d06 Mon Sep 17 00:00:00 2001 From: zangtiancai Date: Fri, 15 Feb 2019 10:43:56 +0800 Subject: [PATCH 251/417] remove durid ad --- .../laidu/learn/mybatis/annotation/Query.java | 29 --- .../mybatis/annotation/package-info.java | 10 - .../annotation/processor/QueryProcessor.java | 45 ---- .../mybatis/config/DruidWebMonitorConfig.java | 54 ++++- .../learn/mybatis/mapper/AppUserMapper.java | 3 + .../src/main/resources/application.yml | 13 +- .../src/main/resources/db/data.sql | 6 +- .../src/main/resources/js/common.js | 201 ++++++++++++++++++ 8 files changed, 264 insertions(+), 97 deletions(-) delete mode 100644 framework/spring/spring-data/spring-mybatis/src/main/java/org/laidu/learn/mybatis/annotation/Query.java delete mode 100644 framework/spring/spring-data/spring-mybatis/src/main/java/org/laidu/learn/mybatis/annotation/package-info.java delete mode 100644 framework/spring/spring-data/spring-mybatis/src/main/java/org/laidu/learn/mybatis/annotation/processor/QueryProcessor.java create mode 100644 framework/spring/spring-data/spring-mybatis/src/main/resources/js/common.js diff --git a/framework/spring/spring-data/spring-mybatis/src/main/java/org/laidu/learn/mybatis/annotation/Query.java b/framework/spring/spring-data/spring-mybatis/src/main/java/org/laidu/learn/mybatis/annotation/Query.java deleted file mode 100644 index 37aff4b24..000000000 --- a/framework/spring/spring-data/spring-mybatis/src/main/java/org/laidu/learn/mybatis/annotation/Query.java +++ /dev/null @@ -1,29 +0,0 @@ -package org.laidu.learn.mybatis.annotation; - -import org.springframework.core.annotation.AliasFor; - -import java.lang.annotation.*; - -/** - * 查询sql - *

                    - * Created by laidu - * on 2018-10-08 18:57. - * - * @author laidu - */ -@Target(ElementType.FIELD) -@Documented -@Retention(RetentionPolicy.RUNTIME) -public @interface Query { - - /** - * @return 执行的sql语句 - */ - @AliasFor("value") - String sql() default ""; - - @AliasFor("sql") - String value(); - -} diff --git a/framework/spring/spring-data/spring-mybatis/src/main/java/org/laidu/learn/mybatis/annotation/package-info.java b/framework/spring/spring-data/spring-mybatis/src/main/java/org/laidu/learn/mybatis/annotation/package-info.java deleted file mode 100644 index dab900454..000000000 --- a/framework/spring/spring-data/spring-mybatis/src/main/java/org/laidu/learn/mybatis/annotation/package-info.java +++ /dev/null @@ -1,10 +0,0 @@ -/** - * 自定义注解 - *

                    - * Created by laidu - * on 2018-10-08 18:56. - * - * @author laidu - */ -// TODO: 2018-10-08 18:56 自定义注解 -package org.laidu.learn.mybatis.annotation; \ No newline at end of file diff --git a/framework/spring/spring-data/spring-mybatis/src/main/java/org/laidu/learn/mybatis/annotation/processor/QueryProcessor.java b/framework/spring/spring-data/spring-mybatis/src/main/java/org/laidu/learn/mybatis/annotation/processor/QueryProcessor.java deleted file mode 100644 index b93f0d4eb..000000000 --- a/framework/spring/spring-data/spring-mybatis/src/main/java/org/laidu/learn/mybatis/annotation/processor/QueryProcessor.java +++ /dev/null @@ -1,45 +0,0 @@ -package org.laidu.learn.mybatis.annotation.processor; - -import com.alibaba.druid.sql.parser.SQLExprParser; -import com.alibaba.druid.sql.parser.SQLParserUtils; -import com.alibaba.druid.util.JdbcUtils; -import lombok.extern.slf4j.Slf4j; -import org.aspectj.lang.ProceedingJoinPoint; -import org.aspectj.lang.annotation.Around; -import org.aspectj.lang.annotation.Aspect; -import org.aspectj.lang.annotation.Pointcut; -import org.laidu.learn.mybatis.annotation.Query; -import org.springframework.stereotype.Component; - -/** - * query 注解处理器 - * - * @author tiancai.zang - * on 2018-10-08 19:03. - */ -@Slf4j -@Aspect -@Component -public class QueryProcessor{ - - - @Pointcut("@annotation(org.laidu.learn.mybatis.annotation.Query)") - private void pointcut() { - } - - @Around("pointcut() && @annotation(query)") - public Object processor(ProceedingJoinPoint joinPoint, Query query) throws Throwable { - - Object result = null; - - String sql = query.sql(); - - SQLExprParser sqlParser = SQLParserUtils.createExprParser(sql, JdbcUtils.MYSQL); - - - result = joinPoint.proceed(); - - return result; - - } -} \ No newline at end of file diff --git a/framework/spring/spring-data/spring-mybatis/src/main/java/org/laidu/learn/mybatis/config/DruidWebMonitorConfig.java b/framework/spring/spring-data/spring-mybatis/src/main/java/org/laidu/learn/mybatis/config/DruidWebMonitorConfig.java index 276221fbe..4d9c63cf7 100644 --- a/framework/spring/spring-data/spring-mybatis/src/main/java/org/laidu/learn/mybatis/config/DruidWebMonitorConfig.java +++ b/framework/spring/spring-data/spring-mybatis/src/main/java/org/laidu/learn/mybatis/config/DruidWebMonitorConfig.java @@ -1,14 +1,22 @@ package org.laidu.learn.mybatis.config; +import com.alibaba.druid.spring.boot.autoconfigure.DruidDataSourceAutoConfigure; +import com.alibaba.druid.spring.boot.autoconfigure.properties.DruidStatProperties; import com.alibaba.druid.support.http.StatViewServlet; import com.alibaba.druid.support.http.WebStatFilter; +import com.alibaba.druid.util.Utils; import com.google.common.collect.Maps; import lombok.extern.slf4j.Slf4j; +import org.springframework.boot.autoconfigure.AutoConfigureAfter; +import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty; +import org.springframework.boot.autoconfigure.condition.ConditionalOnWebApplication; import org.springframework.boot.web.servlet.FilterRegistrationBean; import org.springframework.boot.web.servlet.ServletRegistrationBean; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; +import javax.servlet.*; +import java.io.IOException; import java.util.Map; /** @@ -20,6 +28,9 @@ */ @Slf4j @Configuration +@ConditionalOnWebApplication +@AutoConfigureAfter(DruidDataSourceAutoConfigure.class) +@ConditionalOnProperty(name = "spring.datasource.druid.stat-view-servlet.enabled", havingValue = "true", matchIfMissing = true) public class DruidWebMonitorConfig { @Bean @@ -29,8 +40,8 @@ public ServletRegistrationBean druidServlet() { servletRegistrationBean.setServlet(new StatViewServlet()); servletRegistrationBean.addUrlMappings("/druid/*"); Map initParameters = Maps.newHashMap(); -// initParameters.put("loginUsername", "admin"); -// initParameters.put("loginPassword", "admin"); + initParameters.put("loginUsername", "admin"); + initParameters.put("loginPassword", "admin"); // 禁用HTML页面上的“Reset All”功能 initParameters.put("resetEnable", "false"); // IP白名单 (没有配置或者为空,则允许所有访问) @@ -49,4 +60,43 @@ public FilterRegistrationBean filterRegistrationBean() { return filterRegistrationBean; } + + @Bean + public FilterRegistrationBean fuckDruidAdFilterRegistrationBean(DruidStatProperties properties) { + // 获取web监控页面的参数 + DruidStatProperties.StatViewServlet config = properties.getStatViewServlet(); + // 提取common.js的配置路径 + String pattern = config.getUrlPattern() != null ? config.getUrlPattern() : "/druid/*"; + String commonJsPattern = pattern.replaceAll("\\*", "js/common.js"); + + final String filePath = "js/common.js"; + + Filter filter = new Filter() { + @Override + public void init(FilterConfig filterConfig) throws ServletException { + } + + @Override + public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException { + chain.doFilter(request, response); + // 重置缓冲区,响应头不会被重置 + response.resetBuffer(); + // 获取common.js + String text = Utils.readFromResource(filePath); + // 正则替换banner + text = text.replaceAll("
                    ", ""); + response.getWriter().write(text); + } + + @Override + public void destroy() { + } + }; + + FilterRegistrationBean registrationBean = new FilterRegistrationBean(); + registrationBean.setFilter(filter); + registrationBean.addUrlPatterns(commonJsPattern); + return registrationBean; + } + } \ No newline at end of file diff --git a/framework/spring/spring-data/spring-mybatis/src/main/java/org/laidu/learn/mybatis/mapper/AppUserMapper.java b/framework/spring/spring-data/spring-mybatis/src/main/java/org/laidu/learn/mybatis/mapper/AppUserMapper.java index c308be122..0e1ea62e0 100644 --- a/framework/spring/spring-data/spring-mybatis/src/main/java/org/laidu/learn/mybatis/mapper/AppUserMapper.java +++ b/framework/spring/spring-data/spring-mybatis/src/main/java/org/laidu/learn/mybatis/mapper/AppUserMapper.java @@ -5,6 +5,9 @@ import java.util.List; +/** + * @author zangtiancai + */ @Mapper public interface AppUserMapper { @Delete({ diff --git a/framework/spring/spring-data/spring-mybatis/src/main/resources/application.yml b/framework/spring/spring-data/spring-mybatis/src/main/resources/application.yml index af96a6aee..c95c63507 100644 --- a/framework/spring/spring-data/spring-mybatis/src/main/resources/application.yml +++ b/framework/spring/spring-data/spring-mybatis/src/main/resources/application.yml @@ -24,21 +24,14 @@ spring: slf4j: connection-log-enabled: false enabled: true - result-set-log-enabled: true -# statement-executable-sql-log-enable: true - statement-execute-after-log-enabled: true -# statement-execute-batch-after-log-enabled: false -# statement-execute-query-after-log-enabled: false -# statement-log-enabled: true -# statement-parameter-clear-log-enable: false -# statement-parameter-set-log-enabled: true -# statement-prepare-after-log-enabled: false -# statement-prepare-call-after-log-enabled: false + statement-executable-sql-log-enable: true + stat: db-type: mysql log-slow-sql: true merge-sql: true slow-sql-millis: 2000 + filters: stat,wall,slf4j initialSize: 5 log-different-thread: true diff --git a/framework/spring/spring-data/spring-mybatis/src/main/resources/db/data.sql b/framework/spring/spring-data/spring-mybatis/src/main/resources/db/data.sql index 3a9cabafc..9ba54343a 100644 --- a/framework/spring/spring-data/spring-mybatis/src/main/resources/db/data.sql +++ b/framework/spring/spring-data/spring-mybatis/src/main/resources/db/data.sql @@ -1 +1,5 @@ -insert into app_user (username, id_card) values ('John', '411122100012319876'); \ No newline at end of file +insert into app_user (username, id_card) values ('John', '411122100012319876'); +insert into app_user (username, id_card) values ('小明', '411122100012319872'); +insert into app_user (username, id_card) values ('王尼玛', '411122100012319876'); +insert into app_user (username, id_card) values ('皮特朱', '411122100012319976'); +insert into app_user (username, id_card) values ('Jack', '41112210012319876X'); \ No newline at end of file diff --git a/framework/spring/spring-data/spring-mybatis/src/main/resources/js/common.js b/framework/spring/spring-data/spring-mybatis/src/main/resources/js/common.js new file mode 100644 index 000000000..929712bab --- /dev/null +++ b/framework/spring/spring-data/spring-mybatis/src/main/resources/js/common.js @@ -0,0 +1,201 @@ +$.namespace("druid.common"); + +druid.common = function () { + var statViewOrderBy = ''; + var statViewOrderBy_old = ''; + var statViewOrderType = 'asc'; + var isOrderRequest = false; + + // only one page for now + var sqlViewPage = 1; + var sqlViewPerPageCount = 1000000; + + return { + init : function() { + this.buildFooter(); + druid.lang.init(); + }, + + buildHead : function(index) { + $.get('header.html',function(html) { + $(document.body).prepend(html); + druid.lang.trigger(); + $(".navbar .nav li").eq(index).addClass("active"); + },"html"); + + }, + + buildFooter : function() { + var html = '

                    '; + $(document.body).append(html); + }, + + ajaxRequestForReset : function() { + if(!confirm("Are you sure to reset all stat? It'll clear all stat data !")){ + return; + } + + $.ajax({ + type: 'POST', + url: "reset-all.json", + success: function(data) { + if (data.ResultCode == 1) { + alert("already reset all stat"); + } + }, + dataType: "json" + }); + }, + + ajaxRequestForLogAndReset : function() { + if(!confirm("Are you sure to reset data source stat? It'll clear and log all stat data !")){ + return; + } + + $.ajax({ + type: 'POST', + url: "log-and-reset.json", + success: function(data) { + if (data.ResultCode == 1) { + alert("already reset all stat"); + } + }, + dataType: "json" + }); + }, + + getAjaxUrl : function(uri) { + var result = uri; + + if (statViewOrderBy != undefined) + result += 'orderBy=' + statViewOrderBy + '&'; + + if (statViewOrderType != undefined) + result += 'orderType=' + statViewOrderType + '&'; + + if (sqlViewPage != undefined) + result += 'page=' + sqlViewPage + '&'; + + if (sqlViewPerPageCount != undefined) + result += 'perPageCount=' + sqlViewPerPageCount + '&'; + + return result; + }, + + resetSortMark : function() { + var divObj = document.getElementById('th-' + statViewOrderBy); + var old_divObj = document.getElementById('th-' + statViewOrderBy_old); + var replaceToStr = ''; + if (old_divObj) { + var html = old_divObj.innerHTML; + if (statViewOrderBy_old.indexOf('[') > 0) + replaceToStr = '-'; + html = html.replace('▲', replaceToStr); + html = html.replace('▼', replaceToStr); + old_divObj.innerHTML = html + } + if (divObj) { + var html = divObj.innerHTML; + if (statViewOrderBy.indexOf('[') > 0) + html = ''; + + if (statViewOrderType == 'asc') { + html += '▲'; + } else if (statViewOrderType == 'desc') { + html += '▼'; + } + divObj.innerHTML = html; + } + isOrderRequest = true; + + this.ajaxRequestForBasicInfo(); + return false; + }, + + setOrderBy : function(orderBy) { + if (statViewOrderBy != orderBy) { + statViewOrderBy_old = statViewOrderBy; + statViewOrderBy = orderBy; + statViewOrderType = 'desc'; + druid.common.resetSortMark(); + return; + } + + statViewOrderBy_old = statViewOrderBy; + + if (statViewOrderType == 'asc') + statViewOrderType = 'desc' + else + statViewOrderType = 'asc'; + + druid.common.resetSortMark(); + }, + + ajaxuri : "", + handleCallback:null, + handleAjaxResult : function(data) { + druid.common.handleCallback(data); + if (!isOrderRequest) { + druid.lang.trigger(); + } + },//ajax 处理函数 + ajaxRequestForBasicInfo : function() { + $.ajax({ + type: 'POST', + url: druid.common.getAjaxUrl(druid.common.ajaxuri), + success: function(data) { + druid.common.handleAjaxResult(data); + }, + dataType: "json" + }); + }, + + subSqlString : function(sql, len) { + if (sql == undefined || sql == null) { + return ''; + } + + if (sql.length <= len) + return sql; + return sql.substr(0, len) + '...'; + }, + + stripes : function() { + $("#dataTable tbody tr").each(function () { + $(this).removeClass("striped"); + }); + $("#dataTable tbody tr:even").each(function () { + $(this).addClass("striped"); + }); + }, + + getUrlVar : function(name) { + var vars = {}; + var parts = window.location.href.replace(/[?&]+([^=&]+)=([^&]*)/gi, function(m,key,value) { + vars[key] = value; + }); + return vars[name]; + } + } +}(); + +$(document).ready(function() { + druid.common.init(); +}); + +function replace (data) { + if((!data)||data === undefined){ + return ''; + }else{ + return format(data); + } +} + +function format(s) { + var str=s+=''; + return str.replace(/(\d)(?=(\d{3})+(?!\d))/g, "$1,"); +} From 903669aaef8cf4fe663e3ff67c9421c24539700f Mon Sep 17 00:00:00 2001 From: zangtiancai Date: Fri, 15 Feb 2019 19:40:46 +0800 Subject: [PATCH 252/417] add tomcat learn module --- framework/web/pom.xml | 1 + framework/web/tomcat/pom.xml | 29 +++++++++++++ .../org/laidu/learn/tomcat/TomcatApp.java | 43 +++++++++++++++++++ .../org/laidu/learn/tomcat/package-info.java | 7 +++ .../web/tomcat/src/site/markdown/index.md | 8 ++++ .../feature/net/SocketServerDemo.java | 29 ++++++------- .../feature/net/http/HttpServerDemo.java | 2 +- 7 files changed, 102 insertions(+), 17 deletions(-) create mode 100644 framework/web/tomcat/pom.xml create mode 100644 framework/web/tomcat/src/main/java/org/laidu/learn/tomcat/TomcatApp.java create mode 100644 framework/web/tomcat/src/main/java/org/laidu/learn/tomcat/package-info.java create mode 100644 framework/web/tomcat/src/site/markdown/index.md diff --git a/framework/web/pom.xml b/framework/web/pom.xml index d18e1263a..cb6683a6f 100644 --- a/framework/web/pom.xml +++ b/framework/web/pom.xml @@ -15,6 +15,7 @@ play + tomcat diff --git a/framework/web/tomcat/pom.xml b/framework/web/tomcat/pom.xml new file mode 100644 index 000000000..7d167533a --- /dev/null +++ b/framework/web/tomcat/pom.xml @@ -0,0 +1,29 @@ + + + + web + org.laidu.learn + 1.0-SNAPSHOT + + 4.0.0 + + tomcat + + + 9.0.16 + + + + + + org.apache.tomcat.embed + tomcat-embed-core + ${tomcat.version} + + + + + + \ No newline at end of file diff --git a/framework/web/tomcat/src/main/java/org/laidu/learn/tomcat/TomcatApp.java b/framework/web/tomcat/src/main/java/org/laidu/learn/tomcat/TomcatApp.java new file mode 100644 index 000000000..77e3556a6 --- /dev/null +++ b/framework/web/tomcat/src/main/java/org/laidu/learn/tomcat/TomcatApp.java @@ -0,0 +1,43 @@ +package org.laidu.learn.tomcat; + +import lombok.extern.slf4j.Slf4j; +import org.apache.catalina.LifecycleException; +import org.apache.catalina.startup.Tomcat; + +import javax.servlet.GenericServlet; +import javax.servlet.ServletException; +import javax.servlet.ServletRequest; +import javax.servlet.ServletResponse; +import java.io.IOException; + +/** + * tomcat embed app + * + * + * @author zangtiancai + * @date 2019-02-15 14:34. + */ +@Slf4j +public class TomcatApp { + + public static void main(String[] args) throws LifecycleException { + + // TODO: 完成hello搭建. create by zangtiancai on 2019-02-15 19:39. + Tomcat tomcat = new Tomcat(); + tomcat.setPort(8080); + + tomcat.addServlet("","",new HelloServlet()); + + tomcat.start(); + tomcat.getServer().await(); + + } + + public static class HelloServlet extends GenericServlet{ + + @Override + public void service(ServletRequest req, ServletResponse res) throws ServletException, IOException { + log.info(" local name {}",req.getLocalName()); + } + } +} diff --git a/framework/web/tomcat/src/main/java/org/laidu/learn/tomcat/package-info.java b/framework/web/tomcat/src/main/java/org/laidu/learn/tomcat/package-info.java new file mode 100644 index 000000000..6d07af1e5 --- /dev/null +++ b/framework/web/tomcat/src/main/java/org/laidu/learn/tomcat/package-info.java @@ -0,0 +1,7 @@ +/** + * tomcat 学习 + * + * @author zangtiancai + * @date 2019-02-15 14:35. + */ +package org.laidu.learn.tomcat; \ No newline at end of file diff --git a/framework/web/tomcat/src/site/markdown/index.md b/framework/web/tomcat/src/site/markdown/index.md new file mode 100644 index 000000000..9c8f15386 --- /dev/null +++ b/framework/web/tomcat/src/site/markdown/index.md @@ -0,0 +1,8 @@ +# Tomcat 深入学习 + + +参考: + +* [Embed Tomcat8简单示例](https://blog.csdn.net/mn960mn/article/details/52596359) +* []() +* []() \ No newline at end of file diff --git a/language-feature/src/main/java/org/laidu/learn/language/feature/net/SocketServerDemo.java b/language-feature/src/main/java/org/laidu/learn/language/feature/net/SocketServerDemo.java index 8a2dc24d6..0c4bc078e 100644 --- a/language-feature/src/main/java/org/laidu/learn/language/feature/net/SocketServerDemo.java +++ b/language-feature/src/main/java/org/laidu/learn/language/feature/net/SocketServerDemo.java @@ -2,7 +2,9 @@ import lombok.extern.slf4j.Slf4j; -import java.io.*; +import java.io.BufferedReader; +import java.io.IOException; +import java.io.InputStreamReader; import java.net.ServerSocket; import java.net.Socket; @@ -17,28 +19,23 @@ public class SocketServerDemo { public static void main(String[] args) throws IOException { - ServerSocket server = new ServerSocket(8080); + ServerSocket server = new ServerSocket(8081); while (true){ Socket accept = server.accept(); BufferedReader reader = new BufferedReader(new InputStreamReader(accept.getInputStream())); + + String request = reader.readLine(); + + log.info(" request :\n{}",request); + + String content = "{\"nihao\":123}"; + String message = "HTTP/1.1 200 OK\n" + - "Date: Mon, 05 Nov 2018 11:50:21 GMT\n" + - "Server: Apache\n" + - "Last-Modified: Tue, 12 Jan 2010 13:48:00 GMT\n" + - "ETag: \"51-47cf7e6ee8400\"\n" + - "Accept-Ranges: bytes\n" + - "Content-Length: 81\n" + - "Cache-Control: max-age=86400\n" + - "Expires: Tue, 06 Nov 2018 11:50:21 GMT\n" + - "Connection: Keep-Alive\n" + - "Content-Type: application/html\n" + - "{\"nihao\":123}"; - - - FileInputStream fileInputStream = new FileInputStream(new File("/home/laidu/Documents/e-book/高性能mysql第三版.pdf")); + "content-type: application/json; charset=UTF-8\n\n" + + content+"\n"; accept.getOutputStream().write(message.getBytes()); diff --git a/language-feature/src/main/java/org/laidu/learn/language/feature/net/http/HttpServerDemo.java b/language-feature/src/main/java/org/laidu/learn/language/feature/net/http/HttpServerDemo.java index 48258985e..213c08934 100644 --- a/language-feature/src/main/java/org/laidu/learn/language/feature/net/http/HttpServerDemo.java +++ b/language-feature/src/main/java/org/laidu/learn/language/feature/net/http/HttpServerDemo.java @@ -29,7 +29,7 @@ public static class DemoServlet extends GenericServlet{ @Override public void service(ServletRequest req, ServletResponse res) throws ServletException, IOException { - res.getWriter().write("helle"); + res.getWriter().write("hello world"); } } } \ No newline at end of file From c3dbd0d86864dea29fe3d8f3ceb64f86956f989b Mon Sep 17 00:00:00 2001 From: zangtiancai Date: Mon, 18 Feb 2019 16:53:02 +0800 Subject: [PATCH 253/417] fix tomcat embed 9.0.16 can not start port listen --- .../spring/mvc/controller/CorsController.java | 36 +++++++++++++++++++ framework/web/tomcat/pom.xml | 30 ++++++++++++++++ .../org/laidu/learn/tomcat/TomcatApp.java | 31 +++++++++++----- .../src/main/resources/template/index.html | 10 ++++++ 4 files changed, 99 insertions(+), 8 deletions(-) create mode 100644 framework/spring/spring-web/spring-mvc/src/main/java/org/laidu/learn/spring/mvc/controller/CorsController.java create mode 100644 framework/web/tomcat/src/main/resources/template/index.html diff --git a/framework/spring/spring-web/spring-mvc/src/main/java/org/laidu/learn/spring/mvc/controller/CorsController.java b/framework/spring/spring-web/spring-mvc/src/main/java/org/laidu/learn/spring/mvc/controller/CorsController.java new file mode 100644 index 000000000..e109234a3 --- /dev/null +++ b/framework/spring/spring-web/spring-mvc/src/main/java/org/laidu/learn/spring/mvc/controller/CorsController.java @@ -0,0 +1,36 @@ +package org.laidu.learn.spring.mvc.controller; + +import lombok.extern.slf4j.Slf4j; +import org.springframework.http.*; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +/** + * 跨域支持配置 + * + * @author zangtiancai + * @date 2019-02-18 14:01. + */ +@Slf4j +@RestController +@RequestMapping("/cors") +public class CorsController { + + @GetMapping("/serviceA") + public ResponseEntity serviceA(){ + + HttpCookie cookie = ResponseCookie.from("_sid", "123456") + .httpOnly(true) + .maxAge(10000) + .secure(true) + .path("/cors/serviceA") + .build(); + + return ResponseEntity.status(HttpStatus.OK) + .header(HttpHeaders.SET_COOKIE, cookie.toString()) + .body("serviceA"); + } + + +} diff --git a/framework/web/tomcat/pom.xml b/framework/web/tomcat/pom.xml index 7d167533a..733d9f067 100644 --- a/framework/web/tomcat/pom.xml +++ b/framework/web/tomcat/pom.xml @@ -12,6 +12,9 @@ tomcat + UTF-8 + 1.8 + 1.8 9.0.16 @@ -25,5 +28,32 @@ + + + + org.codehaus.mojo + appassembler-maven-plugin + 1.1.1 + + target + + + org.laidu.learn.tomcat.TomcatApp + webapp + + + + + + package + + assemble + + + + + + + \ No newline at end of file diff --git a/framework/web/tomcat/src/main/java/org/laidu/learn/tomcat/TomcatApp.java b/framework/web/tomcat/src/main/java/org/laidu/learn/tomcat/TomcatApp.java index 77e3556a6..4f95d4a83 100644 --- a/framework/web/tomcat/src/main/java/org/laidu/learn/tomcat/TomcatApp.java +++ b/framework/web/tomcat/src/main/java/org/laidu/learn/tomcat/TomcatApp.java @@ -1,19 +1,20 @@ package org.laidu.learn.tomcat; import lombok.extern.slf4j.Slf4j; +import org.apache.catalina.Context; import org.apache.catalina.LifecycleException; import org.apache.catalina.startup.Tomcat; -import javax.servlet.GenericServlet; -import javax.servlet.ServletException; import javax.servlet.ServletRequest; import javax.servlet.ServletResponse; +import javax.servlet.http.HttpServlet; +import java.io.File; import java.io.IOException; +import java.io.PrintWriter; /** * tomcat embed app * - * * @author zangtiancai * @date 2019-02-15 14:34. */ @@ -22,22 +23,36 @@ public class TomcatApp { public static void main(String[] args) throws LifecycleException { - // TODO: 完成hello搭建. create by zangtiancai on 2019-02-15 19:39. Tomcat tomcat = new Tomcat(); tomcat.setPort(8080); - tomcat.addServlet("","",new HelloServlet()); + String contentPath = "/hello"; + + Context ctx = tomcat.addContext(contentPath, new File(".").getAbsolutePath()); + + tomcat.addServlet(contentPath, "helloServlet", new HelloServlet()); + ctx.addServletMappingDecoded("/*", "helloServlet"); + + // tomcat embed 9.0.x 以后的版本如需使用默认connector需要显示调用该方法, + // 或者设置自定义connector + // 参考https://bz.apache.org/bugzilla/show_bug.cgi?id=60297 + tomcat.getConnector(); tomcat.start(); tomcat.getServer().await(); } - public static class HelloServlet extends GenericServlet{ + public static class HelloServlet extends HttpServlet { @Override - public void service(ServletRequest req, ServletResponse res) throws ServletException, IOException { - log.info(" local name {}",req.getLocalName()); + public void service(ServletRequest req, ServletResponse res) throws IOException { + PrintWriter writer = res.getWriter(); + writer.println("Welcome"); + writer.println("

                    Have a Great Day!

                    "); + writer.println(""); + writer.flush(); + writer.close(); } } } diff --git a/framework/web/tomcat/src/main/resources/template/index.html b/framework/web/tomcat/src/main/resources/template/index.html new file mode 100644 index 000000000..566549bdf --- /dev/null +++ b/framework/web/tomcat/src/main/resources/template/index.html @@ -0,0 +1,10 @@ + + + + + Title + + + + + \ No newline at end of file From 3db6dad3c8377b08ff46f07fdb5380084800ecdd Mon Sep 17 00:00:00 2001 From: ztc Date: Thu, 21 Feb 2019 00:11:31 +0800 Subject: [PATCH 254/417] add spring retry learna --- framework/spring/pom.xml | 1 + framework/spring/spring-retry/pom.xml | 42 ++++++++++ .../laidu/learn/spring/retry/RetryApp.java | 26 +++++++ .../retry/controller/GithubController.java | 31 ++++++++ .../spring/retry/model/GithubUserInfo.java | 78 +++++++++++++++++++ .../spring/retry/service/GithubService.java | 19 +++++ .../retry/service/impl/GithubServiceImpl.java | 44 +++++++++++ .../spring-mvc/src/site/markdown/index.md | 2 + 8 files changed, 243 insertions(+) create mode 100644 framework/spring/spring-retry/pom.xml create mode 100644 framework/spring/spring-retry/src/main/java/org/laidu/learn/spring/retry/RetryApp.java create mode 100644 framework/spring/spring-retry/src/main/java/org/laidu/learn/spring/retry/controller/GithubController.java create mode 100644 framework/spring/spring-retry/src/main/java/org/laidu/learn/spring/retry/model/GithubUserInfo.java create mode 100644 framework/spring/spring-retry/src/main/java/org/laidu/learn/spring/retry/service/GithubService.java create mode 100644 framework/spring/spring-retry/src/main/java/org/laidu/learn/spring/retry/service/impl/GithubServiceImpl.java diff --git a/framework/spring/pom.xml b/framework/spring/pom.xml index bffab652b..7d52be4a0 100644 --- a/framework/spring/pom.xml +++ b/framework/spring/pom.xml @@ -24,6 +24,7 @@ spring-aop spring-spel spring-core + spring-retry diff --git a/framework/spring/spring-retry/pom.xml b/framework/spring/spring-retry/pom.xml new file mode 100644 index 000000000..a1593fc9e --- /dev/null +++ b/framework/spring/spring-retry/pom.xml @@ -0,0 +1,42 @@ + + + + spring + org.laidu.learn + 1.0-SNAPSHOT + + 4.0.0 + + spring-retry + + + + org.springframework.retry + spring-retry + + + + org.springframework.boot + spring-boot-starter-web-services + + + org.springframework.boot + spring-boot-starter-tomcat + + + org.springframework.boot + spring-boot-starter-json + + + + + org.springframework.boot + spring-boot-starter-jetty + + + + + + \ No newline at end of file diff --git a/framework/spring/spring-retry/src/main/java/org/laidu/learn/spring/retry/RetryApp.java b/framework/spring/spring-retry/src/main/java/org/laidu/learn/spring/retry/RetryApp.java new file mode 100644 index 000000000..dbd277297 --- /dev/null +++ b/framework/spring/spring-retry/src/main/java/org/laidu/learn/spring/retry/RetryApp.java @@ -0,0 +1,26 @@ +package org.laidu.learn.spring.retry; + +import lombok.extern.slf4j.Slf4j; +import org.springframework.boot.Banner; +import org.springframework.boot.autoconfigure.SpringBootApplication; +import org.springframework.boot.builder.SpringApplicationBuilder; +import org.springframework.retry.annotation.EnableRetry; + +/** + * retry app + *

                    + * Created by tiancai.zang + * on 2019-02-20 23:26. + */ +@Slf4j +@SpringBootApplication +@EnableRetry +public class RetryApp { + + public static void main(String[] args) { + new SpringApplicationBuilder(RetryApp.class) + .bannerMode(Banner.Mode.OFF) + .logStartupInfo(false) + .run(args); + } +} \ No newline at end of file diff --git a/framework/spring/spring-retry/src/main/java/org/laidu/learn/spring/retry/controller/GithubController.java b/framework/spring/spring-retry/src/main/java/org/laidu/learn/spring/retry/controller/GithubController.java new file mode 100644 index 000000000..f5f4d17af --- /dev/null +++ b/framework/spring/spring-retry/src/main/java/org/laidu/learn/spring/retry/controller/GithubController.java @@ -0,0 +1,31 @@ +package org.laidu.learn.spring.retry.controller; + +import lombok.extern.slf4j.Slf4j; +import org.laidu.learn.spring.retry.model.GithubUserInfo; +import org.laidu.learn.spring.retry.service.GithubService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PathVariable; +import org.springframework.web.bind.annotation.RestController; +import org.springframework.web.bind.annotation.RequestMapping; + +/** + * github api + *

                    + * Created by tiancai.zang + * on 2019-02-20 23:50. + */ +@Slf4j +@RestController +@RequestMapping("/github") +public class GithubController { + + @Autowired + private GithubService githubService; + + @GetMapping("/user/{user}") + public GithubUserInfo queryUserinfo(@PathVariable(name = "user") String user){ + + return githubService.queryUserInfo(user); + } +} \ No newline at end of file diff --git a/framework/spring/spring-retry/src/main/java/org/laidu/learn/spring/retry/model/GithubUserInfo.java b/framework/spring/spring-retry/src/main/java/org/laidu/learn/spring/retry/model/GithubUserInfo.java new file mode 100644 index 000000000..deb960888 --- /dev/null +++ b/framework/spring/spring-retry/src/main/java/org/laidu/learn/spring/retry/model/GithubUserInfo.java @@ -0,0 +1,78 @@ + +package org.laidu.learn.spring.retry.model; + +import com.google.gson.annotations.Expose; +import com.google.gson.annotations.SerializedName; +import lombok.Data; + +import javax.annotation.Generated; + +@Generated("net.hexar.json2pojo") +@SuppressWarnings("unused") +@Data +public class GithubUserInfo { + + @SerializedName("avatar_url") + private String avatarUrl; + @Expose + private Object bio; + @Expose + private String blog; + @Expose + private Object company; + @SerializedName("created_at") + private String createdAt; + @Expose + private Object email; + @SerializedName("events_url") + private String eventsUrl; + @Expose + private Long followers; + @SerializedName("followers_url") + private String followersUrl; + @Expose + private Long following; + @SerializedName("following_url") + private String followingUrl; + @SerializedName("gists_url") + private String gistsUrl; + @SerializedName("gravatar_id") + private String gravatarId; + @Expose + private Object hireable; + @SerializedName("html_url") + private String htmlUrl; + @Expose + private Long id; + @Expose + private String location; + @Expose + private String login; + @Expose + private String name; + @SerializedName("node_id") + private String nodeId; + @SerializedName("organizations_url") + private String organizationsUrl; + @SerializedName("public_gists") + private Long publicGists; + @SerializedName("public_repos") + private Long publicRepos; + @SerializedName("received_events_url") + private String receivedEventsUrl; + @SerializedName("repos_url") + private String reposUrl; + @SerializedName("site_admin") + private Boolean siteAdmin; + @SerializedName("starred_url") + private String starredUrl; + @SerializedName("subscriptions_url") + private String subscriptionsUrl; + @Expose + private String type; + @SerializedName("updated_at") + private String updatedAt; + @Expose + private String url; + +} diff --git a/framework/spring/spring-retry/src/main/java/org/laidu/learn/spring/retry/service/GithubService.java b/framework/spring/spring-retry/src/main/java/org/laidu/learn/spring/retry/service/GithubService.java new file mode 100644 index 000000000..d5a7f9eb5 --- /dev/null +++ b/framework/spring/spring-retry/src/main/java/org/laidu/learn/spring/retry/service/GithubService.java @@ -0,0 +1,19 @@ +package org.laidu.learn.spring.retry.service; + +import org.laidu.learn.spring.retry.model.GithubUserInfo; + +/** + * github service + *

                    + * Created by tiancai.zang + * on 2019-02-20 23:28. + */ +public interface GithubService { + + /** + * 获取github 用户公开信息 + * @param user + * @return + */ + GithubUserInfo queryUserInfo(String user); +} diff --git a/framework/spring/spring-retry/src/main/java/org/laidu/learn/spring/retry/service/impl/GithubServiceImpl.java b/framework/spring/spring-retry/src/main/java/org/laidu/learn/spring/retry/service/impl/GithubServiceImpl.java new file mode 100644 index 000000000..b8064bfa5 --- /dev/null +++ b/framework/spring/spring-retry/src/main/java/org/laidu/learn/spring/retry/service/impl/GithubServiceImpl.java @@ -0,0 +1,44 @@ +package org.laidu.learn.spring.retry.service.impl; + +import lombok.extern.slf4j.Slf4j; +import org.laidu.learn.spring.retry.model.GithubUserInfo; +import org.laidu.learn.spring.retry.service.GithubService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.boot.web.client.RestTemplateBuilder; +import org.springframework.context.annotation.Bean; +import org.springframework.retry.annotation.Retryable; +import org.springframework.stereotype.Service; +import org.springframework.web.client.RestTemplate; + +/** + * Created by tiancai.zang + * on 2019-02-20 23:45. + */ +@Slf4j +@Service +public class GithubServiceImpl implements GithubService { + + + @Autowired + private RestTemplate githubRestApi; + + @Value("${github.user.api:https://api.github.com/users/}") + private String usersUrl; + + + @Override + @Retryable + public GithubUserInfo queryUserInfo(String user) { + log.info(" query user {}",user); + return githubRestApi.getForEntity(usersUrl.concat(user),GithubUserInfo.class) + .getBody(); + } + + @Bean(name = "githubRestApi") + private RestTemplate githubRestApi(){ + return new RestTemplateBuilder() + .setReadTimeout(500) + .build(); + } +} \ No newline at end of file diff --git a/framework/spring/spring-web/spring-mvc/src/site/markdown/index.md b/framework/spring/spring-web/spring-mvc/src/site/markdown/index.md index 33e93ca7a..502a37f72 100644 --- a/framework/spring/spring-web/spring-mvc/src/site/markdown/index.md +++ b/framework/spring/spring-web/spring-mvc/src/site/markdown/index.md @@ -1,4 +1,6 @@ # spring mvc 学习 + + * [深入servlet]() * [常见的servlet容器]() * [深入spring mvc]() From 46046cd554debbabf876ae3f64128e65d9935d33 Mon Sep 17 00:00:00 2001 From: ztc Date: Sun, 3 Mar 2019 22:38:58 +0800 Subject: [PATCH 255/417] fixed mvn test error --- pom.xml | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/pom.xml b/pom.xml index a77c45533..68201e53c 100644 --- a/pom.xml +++ b/pom.xml @@ -303,6 +303,12 @@ + + org.apache.maven.plugins + maven-surefire-plugin + 2.22.1 + + From 6447dbdc5c215a8ba52abf22bf5ea291869118db Mon Sep 17 00:00:00 2001 From: ztc Date: Sun, 3 Mar 2019 23:04:18 +0800 Subject: [PATCH 256/417] add ignore .temp --- .gitignore | 1 + 1 file changed, 1 insertion(+) diff --git a/.gitignore b/.gitignore index 2ea096e8e..9d1c12bac 100644 --- a/.gitignore +++ b/.gitignore @@ -1,6 +1,7 @@ # Created by .ignore support plugin (hsz.mobi) .idea/ +.temp/ .DS_Store From 466985312e5393adb82c439640007057c457fec2 Mon Sep 17 00:00:00 2001 From: zangtiancai Date: Mon, 4 Mar 2019 19:21:07 +0800 Subject: [PATCH 257/417] HttpUrl --- .../usage/github/GithubServiceApp.java | 30 ++++++++++++++----- .../language/feature/string/StringTest.java | 7 ++++- 2 files changed, 29 insertions(+), 8 deletions(-) diff --git a/framework/network/retrofit/src/main/java/org/laidu/learn/network/retrofit/usage/github/GithubServiceApp.java b/framework/network/retrofit/src/main/java/org/laidu/learn/network/retrofit/usage/github/GithubServiceApp.java index 81d257f90..d7647b2b3 100644 --- a/framework/network/retrofit/src/main/java/org/laidu/learn/network/retrofit/usage/github/GithubServiceApp.java +++ b/framework/network/retrofit/src/main/java/org/laidu/learn/network/retrofit/usage/github/GithubServiceApp.java @@ -1,14 +1,17 @@ package org.laidu.learn.network.retrofit.usage.github; import lombok.extern.slf4j.Slf4j; +import okhttp3.EventListener; +import okhttp3.HttpUrl; +import okhttp3.OkHttpClient; import org.laidu.learn.network.retrofit.usage.github.api.GitHubService; -import org.laidu.learn.network.retrofit.usage.github.dto.ApiSummaryRes; import org.laidu.learn.network.retrofit.usage.github.dto.UserBasicInfo; import retrofit2.Response; import retrofit2.Retrofit; import xyz.xpcoder.common.retrofit.converter.fastjson.FastjsonConverterFactory; import java.io.IOException; +import java.util.concurrent.TimeUnit; /** * github api app @@ -22,22 +25,35 @@ public class GithubServiceApp { public static void main(String[] args) throws IOException { + String baseUrl = "http://"; + + OkHttpClient client = new OkHttpClient.Builder() + .retryOnConnectionFailure(true) + .connectTimeout(500, TimeUnit.MILLISECONDS) + .eventListener(new EventListener() { + + }) + .build(); + + HttpUrl httpUrl = new HttpUrl.Builder() + .scheme("http") + .host("api.github.com") + .port(80) + .build(); + Retrofit retrofit = new Retrofit.Builder() - .baseUrl("https://api.github.com/") + .client(client) + .baseUrl(httpUrl) .addConverterFactory(FastjsonConverterFactory.create()) .build(); GitHubService gitHubService = retrofit.create(GitHubService.class); - Response response = gitHubService.apiSummary() - .execute(); - - String username = "laidu"; Response userBasicInfo = gitHubService.getUserBasicInfo(username) .execute(); - log.info(": {}", userBasicInfo.body()); + log.info("username : {}", userBasicInfo.body().getLogin()); } diff --git a/language-feature/src/test/java/org/laidu/learn/language/feature/string/StringTest.java b/language-feature/src/test/java/org/laidu/learn/language/feature/string/StringTest.java index 663f254b7..cf1b87bc4 100644 --- a/language-feature/src/test/java/org/laidu/learn/language/feature/string/StringTest.java +++ b/language-feature/src/test/java/org/laidu/learn/language/feature/string/StringTest.java @@ -1,6 +1,7 @@ package org.laidu.learn.language.feature.string; import lombok.extern.slf4j.Slf4j; +import org.junit.Assert; import org.junit.jupiter.api.DisplayName; import org.junit.jupiter.api.Test; @@ -266,8 +267,12 @@ void replace1() { } @Test - @DisplayName("") + @DisplayName("空字符串切割") void split() { + + String[] strings = "".split(","); + + Assert.assertArrayEquals(strings, new String[]{""}); } @Test From d42ff6883be9fc072978f4eee58a7d6b7f982666 Mon Sep 17 00:00:00 2001 From: ztc Date: Mon, 11 Mar 2019 23:31:04 +0800 Subject: [PATCH 258/417] sync . --- framework/network/pom.xml | 12 ++++++-- framework/network/web-client/pom.xml | 5 ++++ .../framework/webclient/usage/Usage.java | 30 +++++++------------ .../org/laidu/learn/tomcat/TomcatApp.java | 17 +++++++---- 4 files changed, 38 insertions(+), 26 deletions(-) diff --git a/framework/network/pom.xml b/framework/network/pom.xml index 4b9c7bf98..0683e26b0 100644 --- a/framework/network/pom.xml +++ b/framework/network/pom.xml @@ -25,8 +25,8 @@ 2.5.0 2.1.0-alpha24 - 5.0.8.RELEASE - 0.7.8.RELEASE + 5.1.5.RELEASE + 0.7.14.RELEASE @@ -70,6 +70,14 @@ true + + io.netty + netty-transport-native-epoll + 4.1.34.Final + linux-x86_64 + + + \ No newline at end of file diff --git a/framework/network/web-client/pom.xml b/framework/network/web-client/pom.xml index b0f79cd92..158ddd760 100644 --- a/framework/network/web-client/pom.xml +++ b/framework/network/web-client/pom.xml @@ -27,6 +27,11 @@ spring-webflux true + + io.netty + netty-transport-native-epoll + linux-x86_64 + \ No newline at end of file diff --git a/framework/network/web-client/src/main/java/org/laidu/learn/framework/webclient/usage/Usage.java b/framework/network/web-client/src/main/java/org/laidu/learn/framework/webclient/usage/Usage.java index ca9c71ba5..8b3604196 100644 --- a/framework/network/web-client/src/main/java/org/laidu/learn/framework/webclient/usage/Usage.java +++ b/framework/network/web-client/src/main/java/org/laidu/learn/framework/webclient/usage/Usage.java @@ -3,8 +3,6 @@ import lombok.extern.slf4j.Slf4j; import org.springframework.web.reactive.function.client.WebClient; -import java.util.stream.IntStream; - /** * 使用 *

                    @@ -18,25 +16,19 @@ public class Usage { - public static void main(String[] args) { + public static void main(String[] args) throws InterruptedException { - IntStream.range(0,1000).parallel() - .forEach(index->{ - log.info("index : {}", index); - WebClient.create() - .get() - .uri(uriBuilder -> uriBuilder - .scheme("http") - .host("www.baidu.com") - .path("/s") - .queryParam("wd", "北京天气") - .queryParam("other", "test") - .build()) - .retrieve() - .bodyToMono(String.class) - .subscribe(resp -> log.info(": {}", resp)); - }); + WebClient.create() + .get() + .uri(uriBuilder -> uriBuilder + .scheme("https") + .host("api.github.com") + .path("/users/laidu") + .build()) + .retrieve() + .bodyToMono(String.class) + .subscribe(resp -> log.info(": {}", resp)); } diff --git a/framework/web/tomcat/src/main/java/org/laidu/learn/tomcat/TomcatApp.java b/framework/web/tomcat/src/main/java/org/laidu/learn/tomcat/TomcatApp.java index 28ed84085..191996db6 100644 --- a/framework/web/tomcat/src/main/java/org/laidu/learn/tomcat/TomcatApp.java +++ b/framework/web/tomcat/src/main/java/org/laidu/learn/tomcat/TomcatApp.java @@ -1,5 +1,6 @@ package org.laidu.learn.tomcat; +import com.alibaba.fastjson.JSONObject; import lombok.extern.slf4j.Slf4j; import org.apache.catalina.Context; import org.apache.catalina.LifecycleException; @@ -7,7 +8,6 @@ import javax.servlet.ServletRequest; import javax.servlet.ServletResponse; - import javax.servlet.annotation.WebServlet; import javax.servlet.http.HttpServlet; import java.io.File; @@ -27,8 +27,8 @@ public static void main(String[] args) throws LifecycleException { Tomcat tomcat = new Tomcat(); - tomcat.setPort(8080); + tomcat.setBaseDir(".temp/"); String contentPath = "/hello"; @@ -53,9 +53,16 @@ public static class HelloServlet extends HttpServlet { @Override public void service(ServletRequest req, ServletResponse res) throws IOException { PrintWriter writer = res.getWriter(); - writer.println("Welcome"); - writer.println("

                    Have a Great Day!

                    "); - writer.println(""); + + res.setContentType("application/json;charset=utf-8"); + res.setCharacterEncoding("utf-8"); + + JSONObject response = new JSONObject(); + response.put("code",200); + response.put("message","hello world"); + response.put("timestamp", System.currentTimeMillis()); + + writer.write(response.toJSONString()); writer.flush(); writer.close(); } From def9f88b7b249ba4726fc5ddad1d207644dc71c0 Mon Sep 17 00:00:00 2001 From: ztc Date: Tue, 12 Mar 2019 00:00:56 +0800 Subject: [PATCH 259/417] fix language jdk 11 --- language-advance/pom.xml | 46 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 46 insertions(+) diff --git a/language-advance/pom.xml b/language-advance/pom.xml index 3328b49b8..05531461f 100644 --- a/language-advance/pom.xml +++ b/language-advance/pom.xml @@ -29,6 +29,7 @@ 1.9.2 3.2.9 1.60 + 11
                    @@ -71,4 +72,49 @@ + + + + + org.apache.maven.plugins + maven-compiler-plugin + ${maven-compiler-plugin.version} + + ${jdk.version} + ${jdk.version} + + + + org.projectlombok + lombok + ${lombok.version} + + + + + + + + org.apache.maven.plugins + maven-toolchains-plugin + 1.1 + + + + 11 + oracle + + + + + + + toolchain + + + + + + + \ No newline at end of file From e7b6582ff8d340e17b13d6e941deb9fab4bd0b96 Mon Sep 17 00:00:00 2001 From: ztc Date: Tue, 12 Mar 2019 23:40:47 +0800 Subject: [PATCH 260/417] add path classloader load from class file --- .../jvm/classloader/ClassLoaderDemo.java | 57 +++++++++++++++++-- .../learn/jvm/classloader/HelloService.java | 12 ++++ .../jvm/classloader/PathClassLoader.java | 57 +++++++++++++++++++ .../src/main/resources/class/HelloHeiHei.java | 38 +++++++++++++ .../src/main/resources/class/HelloWorld.java | 13 +++++ 5 files changed, 171 insertions(+), 6 deletions(-) create mode 100644 language-advance/jvm/src/main/java/org/laidu/learn/jvm/classloader/HelloService.java create mode 100644 language-advance/jvm/src/main/java/org/laidu/learn/jvm/classloader/PathClassLoader.java create mode 100644 language-advance/jvm/src/main/resources/class/HelloHeiHei.java create mode 100644 language-advance/jvm/src/main/resources/class/HelloWorld.java diff --git a/language-advance/jvm/src/main/java/org/laidu/learn/jvm/classloader/ClassLoaderDemo.java b/language-advance/jvm/src/main/java/org/laidu/learn/jvm/classloader/ClassLoaderDemo.java index e468d6d5d..9a11b4eb7 100644 --- a/language-advance/jvm/src/main/java/org/laidu/learn/jvm/classloader/ClassLoaderDemo.java +++ b/language-advance/jvm/src/main/java/org/laidu/learn/jvm/classloader/ClassLoaderDemo.java @@ -1,6 +1,11 @@ package org.laidu.learn.jvm.classloader; -import lombok.Data; +import java.io.File; +import java.util.Map; +import java.util.concurrent.ConcurrentHashMap; +import java.util.concurrent.ScheduledThreadPoolExecutor; +import java.util.concurrent.TimeUnit; + import lombok.extern.slf4j.Slf4j; /** @@ -12,14 +17,54 @@ @Slf4j public class ClassLoaderDemo { - public static void main(String[] args) throws ClassNotFoundException, IllegalAccessException, InstantiationException { + private static PathClassLoader classLoader; + private static String classPath; + + private final static Map serviceMap; + + static { + String rootDir = System.getProperty("user.dir"); + String projectPath = "/language-advance/jvm/src/main/resources/class/"; + classPath = rootDir+projectPath; + serviceMap = new ConcurrentHashMap<>(); + + classLoader = new PathClassLoader(classPath); + } + + public static void main(String[] args) throws Exception { + refresh(); + new ScheduledThreadPoolExecutor(1) + .scheduleAtFixedRate(() -> { + try { + log.info(""); + refresh(); + } catch (Exception e) { + log.error("refresh error : {}",e); + } + }, 0,3, TimeUnit.SECONDS); } - @Data - public static class Person { - private String name; - private int grander; + private static void refresh() throws ClassNotFoundException, InstantiationException, IllegalAccessException { + // 已知classPath为目录名 + File classDir = new File(classPath); + for (File file : classDir.listFiles(pathname -> pathname.getName().endsWith(".class"))) { + loadClass(file.getName().replace(".class","")); + } + + serviceMap.values() + .forEach(HelloService::sayHello); + } + + private static void loadClass(String className) + throws ClassNotFoundException, InstantiationException, IllegalAccessException { + + Class clazz = classLoader.loadClass(className); + Object o = clazz.newInstance(); + + if (o instanceof HelloService) { + serviceMap.put(className,(HelloService)o); + } } } \ No newline at end of file diff --git a/language-advance/jvm/src/main/java/org/laidu/learn/jvm/classloader/HelloService.java b/language-advance/jvm/src/main/java/org/laidu/learn/jvm/classloader/HelloService.java new file mode 100644 index 000000000..7e8a55646 --- /dev/null +++ b/language-advance/jvm/src/main/java/org/laidu/learn/jvm/classloader/HelloService.java @@ -0,0 +1,12 @@ +package org.laidu.learn.jvm.classloader; + +/** + * hello service 接口定义 + *

                    + * Created by tiancai.zang + * on 2019-03-12 22:13. + */ +public interface HelloService { + + void sayHello(); +} diff --git a/language-advance/jvm/src/main/java/org/laidu/learn/jvm/classloader/PathClassLoader.java b/language-advance/jvm/src/main/java/org/laidu/learn/jvm/classloader/PathClassLoader.java new file mode 100644 index 000000000..7e7b07e2a --- /dev/null +++ b/language-advance/jvm/src/main/java/org/laidu/learn/jvm/classloader/PathClassLoader.java @@ -0,0 +1,57 @@ +package org.laidu.learn.jvm.classloader; + +import java.io.File; +import java.io.FileInputStream; + +import org.apache.commons.io.IOUtils; + +import lombok.AllArgsConstructor; +import lombok.extern.slf4j.Slf4j; + +/** + * 根据路径加载class文件 + *

                    + * Created by tiancai.zang + * on 2019-03-12 22:33. + */ +@Slf4j +@AllArgsConstructor +public class PathClassLoader extends ClassLoader{ + + private String classPath; + + @Override + protected Class findClass(String name) throws ClassNotFoundException { + + byte[] data = getData(name); + + if (data == null) { + throw new ClassNotFoundException(name); + } + + return super.defineClass( + name, + data, 0, data.length, + this.getClass().getProtectionDomain() + ); + + } + + + public byte[] getData(String name) { + + String suffix = name.endsWith(".class") ? "" : ".class"; + + String path = classPath + name.replace(".", File.pathSeparator) + suffix; + + byte[] bytes = null; + + try(FileInputStream inputStream = new FileInputStream(new File(path))) { + bytes = IOUtils.toByteArray(inputStream); + } catch (Exception e) { + log.error("file not found! : {}",path); + } + + return bytes; + } +} \ No newline at end of file diff --git a/language-advance/jvm/src/main/resources/class/HelloHeiHei.java b/language-advance/jvm/src/main/resources/class/HelloHeiHei.java new file mode 100644 index 000000000..d932fa44c --- /dev/null +++ b/language-advance/jvm/src/main/resources/class/HelloHeiHei.java @@ -0,0 +1,38 @@ +import org.laidu.learn.jvm.classloader.HelloService; + +public class HelloHeiHei implements HelloService { + + @Override + public void sayHello(){ + System.out.println("hello heihei"); + } + + public static void main(String[] args) { + new HelloWorld().sayHello(); + } + + public static class HelloHaHa implements HelloService { + + @Override + public void sayHello(){ + System.out.println("hello haha"); + } + + public static void main(String[] args) { + new HelloWorld().sayHello(); + } + } + + public static class HelloGaGa implements HelloService { + + @Override + public void sayHello(){ + System.out.println("hello gaga"); + } + + public static void main(String[] args) { + new HelloWorld().sayHello(); + } + } +} + diff --git a/language-advance/jvm/src/main/resources/class/HelloWorld.java b/language-advance/jvm/src/main/resources/class/HelloWorld.java new file mode 100644 index 000000000..6a864c275 --- /dev/null +++ b/language-advance/jvm/src/main/resources/class/HelloWorld.java @@ -0,0 +1,13 @@ +import org.laidu.learn.jvm.classloader.HelloService; + +public class HelloWorld implements HelloService { + + @Override + public void sayHello(){ + System.out.println("hello world"); + } + + public static void main(String[] args) { + new HelloWorld().sayHello(); + } +} \ No newline at end of file From 46702c50ed87592f6e814ecfa8d0ccee736bda80 Mon Sep 17 00:00:00 2001 From: laidu Date: Thu, 14 Mar 2019 21:19:31 +0800 Subject: [PATCH 261/417] sync --- .../learn/spring/data/redis/RedisApp.java | 11 ++- .../spring/data/redis/config/RedisConfig.java | 4 +- .../src/main/resources/application.yml | 2 +- .../service/impl/UserServiceImplTest.java | 72 ++++++++++++++++++- .../language/feature/object/ObjectDemo.java | 1 - .../feature/string/StringDemoTest.java | 22 ++++++ 6 files changed, 104 insertions(+), 8 deletions(-) create mode 100644 language-feature/src/test/java/org/laidu/learn/language/feature/string/StringDemoTest.java diff --git a/framework/spring/spring-data/spring-redis/src/main/java/org/laidu/learn/spring/data/redis/RedisApp.java b/framework/spring/spring-data/spring-redis/src/main/java/org/laidu/learn/spring/data/redis/RedisApp.java index 89efd0692..dcf99ee52 100644 --- a/framework/spring/spring-data/spring-redis/src/main/java/org/laidu/learn/spring/data/redis/RedisApp.java +++ b/framework/spring/spring-data/spring-redis/src/main/java/org/laidu/learn/spring/data/redis/RedisApp.java @@ -1,10 +1,12 @@ package org.laidu.learn.spring.data.redis; -import lombok.extern.slf4j.Slf4j; -import org.springframework.boot.SpringApplication; +import org.springframework.boot.Banner; import org.springframework.boot.autoconfigure.SpringBootApplication; +import org.springframework.boot.builder.SpringApplicationBuilder; import org.springframework.cache.annotation.EnableCaching; +import lombok.extern.slf4j.Slf4j; + /** * redis *

                    @@ -18,6 +20,9 @@ public class RedisApp { public static void main(String[] args) { - SpringApplication.run(RedisApp.class,args); + new SpringApplicationBuilder(RedisApp.class) + .bannerMode(Banner.Mode.OFF) + .logStartupInfo(false) + .run(args); } } \ No newline at end of file diff --git a/framework/spring/spring-data/spring-redis/src/main/java/org/laidu/learn/spring/data/redis/config/RedisConfig.java b/framework/spring/spring-data/spring-redis/src/main/java/org/laidu/learn/spring/data/redis/config/RedisConfig.java index da4109f65..483b478fb 100644 --- a/framework/spring/spring-data/spring-redis/src/main/java/org/laidu/learn/spring/data/redis/config/RedisConfig.java +++ b/framework/spring/spring-data/spring-redis/src/main/java/org/laidu/learn/spring/data/redis/config/RedisConfig.java @@ -1,6 +1,5 @@ package org.laidu.learn.spring.data.redis.config; -import lombok.extern.slf4j.Slf4j; import org.laidu.learn.spring.data.redis.model.UserInfo; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; @@ -8,6 +7,8 @@ import org.springframework.data.redis.core.RedisTemplate; import org.springframework.data.redis.serializer.StringRedisSerializer; +import lombok.extern.slf4j.Slf4j; + /** * redis config *

                    @@ -26,4 +27,5 @@ public RedisTemplate redisTemplate(RedisConnectionFactory fact return template; } + } \ No newline at end of file diff --git a/framework/spring/spring-data/spring-redis/src/main/resources/application.yml b/framework/spring/spring-data/spring-redis/src/main/resources/application.yml index a5fd51081..7eebef87d 100644 --- a/framework/spring/spring-data/spring-redis/src/main/resources/application.yml +++ b/framework/spring/spring-data/spring-redis/src/main/resources/application.yml @@ -2,7 +2,7 @@ # redis configuration spring: redis: - host: local-dev + host: localhost port: 6379 database: 0 jedis: diff --git a/framework/spring/spring-data/spring-redis/src/test/java/org/laidu/learn/spring/data/redis/service/impl/UserServiceImplTest.java b/framework/spring/spring-data/spring-redis/src/test/java/org/laidu/learn/spring/data/redis/service/impl/UserServiceImplTest.java index c43cdd160..95c471bb6 100644 --- a/framework/spring/spring-data/spring-redis/src/test/java/org/laidu/learn/spring/data/redis/service/impl/UserServiceImplTest.java +++ b/framework/spring/spring-data/spring-redis/src/test/java/org/laidu/learn/spring/data/redis/service/impl/UserServiceImplTest.java @@ -1,6 +1,12 @@ package org.laidu.learn.spring.data.redis.service.impl; -import lombok.extern.slf4j.Slf4j; +import java.time.Instant; +import java.time.temporal.ChronoUnit; +import java.util.Date; +import java.util.UUID; +import java.util.concurrent.TimeUnit; + +import org.junit.Assert; import org.junit.jupiter.api.Test; import org.junit.runner.RunWith; import org.laidu.learn.spring.data.redis.model.UserInfo; @@ -9,10 +15,12 @@ import org.springframework.boot.test.context.SpringBootTest; import org.springframework.context.ApplicationContext; import org.springframework.data.redis.core.RedisTemplate; +import org.springframework.data.redis.core.StringRedisTemplate; import org.springframework.test.context.junit.jupiter.SpringJUnitConfig; import org.springframework.test.context.junit4.SpringRunner; -import java.util.UUID; +import jodd.util.ThreadUtil; +import lombok.extern.slf4j.Slf4j; @Slf4j @SpringBootTest @@ -29,8 +37,43 @@ class UserServiceImplTest { @Autowired private RedisTemplate redisTemplate; + @Autowired + private StringRedisTemplate redisTemplate1; + String cacheKey = "demo"; + + @Test + void expireTest(){ + + String key = "haha"; + + Long aLong = 0L; + + if (redisTemplate1.opsForValue().setIfAbsent(key,"0")) { + + Date expireDate = Date.from(Instant.ofEpochMilli(System.currentTimeMillis()) + .plus(500, convert(TimeUnit.MILLISECONDS))); + redisTemplate1.expireAt(key, expireDate); + } + + if (redisTemplate1.hasKey(key)) { + aLong = redisTemplate1.opsForValue().increment(key, 1); + + Date expireDate = Date.from(Instant.ofEpochMilli(System.currentTimeMillis()) + .plus(500, convert(TimeUnit.MILLISECONDS))); + } + + ThreadUtil.sleep(250); + Assert.assertTrue(redisTemplate.hasKey(key)); + ThreadUtil.sleep(261); + Assert.assertFalse(redisTemplate.hasKey(key)); + + + log.info("result : {}",aLong); + + } + @Test void serializeTest(){ @@ -66,4 +109,29 @@ void addUser() { log.info("user info: {}", userInfo); } + + public static ChronoUnit convert(TimeUnit tu) { + if (tu == null) { + return null; + } + switch (tu) { + case DAYS: + return ChronoUnit.DAYS; + case HOURS: + return ChronoUnit.HOURS; + case MINUTES: + return ChronoUnit.MINUTES; + case SECONDS: + return ChronoUnit.SECONDS; + case MICROSECONDS: + return ChronoUnit.MICROS; + case MILLISECONDS: + return ChronoUnit.MILLIS; + case NANOSECONDS: + return ChronoUnit.NANOS; + default: + assert false : "there are no other TimeUnit ordinal values"; + return null; + } + } } \ No newline at end of file diff --git a/language-feature/src/main/java/org/laidu/learn/language/feature/object/ObjectDemo.java b/language-feature/src/main/java/org/laidu/learn/language/feature/object/ObjectDemo.java index b6c2275a3..7d6c74a2a 100644 --- a/language-feature/src/main/java/org/laidu/learn/language/feature/object/ObjectDemo.java +++ b/language-feature/src/main/java/org/laidu/learn/language/feature/object/ObjectDemo.java @@ -46,7 +46,6 @@ public static void main(String[] args) throws InterruptedException, CloneNotSupp System.out.println(o1.hashCode()); System.out.println(o2.hashCode()); - } diff --git a/language-feature/src/test/java/org/laidu/learn/language/feature/string/StringDemoTest.java b/language-feature/src/test/java/org/laidu/learn/language/feature/string/StringDemoTest.java new file mode 100644 index 000000000..0ad3fc93c --- /dev/null +++ b/language-feature/src/test/java/org/laidu/learn/language/feature/string/StringDemoTest.java @@ -0,0 +1,22 @@ +package org.laidu.learn.language.feature.string; + +import org.junit.jupiter.api.Test; + +import lombok.extern.slf4j.Slf4j; + +@Slf4j +class StringDemoTest { + + @Test + void createString() { + String hexString = "f09f9880"; + byte[] val = new byte[hexString.length() / 2]; + for (int i = 0; i < val.length; i++) { + int index = i * 2; + int j = Integer.parseInt(hexString.substring(index, index + 2), 16); + val[i] = (byte) j; + } + log.info("hexString 2 String : {}",new String(val)); + + } +} \ No newline at end of file From 8a7f2f7401647f512dc11c0cafa0f16205a79b2c Mon Sep 17 00:00:00 2001 From: ztc Date: Fri, 15 Mar 2019 00:08:14 +0800 Subject: [PATCH 262/417] add redission lock --- framework/spring/spring-data/pom.xml | 3 ++ .../spring/spring-data/spring-redis/pom.xml | 6 +++ .../data/redis/service/UserService.java | 6 +++ .../redis/service/impl/UserServiceImpl.java | 41 ++++++++++++++++++- .../src/main/resources/redisson.yaml | 0 .../service/impl/UserServiceImplTest.java | 10 +++++ 6 files changed, 64 insertions(+), 2 deletions(-) create mode 100644 framework/spring/spring-data/spring-redis/src/main/resources/redisson.yaml diff --git a/framework/spring/spring-data/pom.xml b/framework/spring/spring-data/pom.xml index 9836a3aa2..a0723add9 100644 --- a/framework/spring/spring-data/pom.xml +++ b/framework/spring/spring-data/pom.xml @@ -21,6 +21,7 @@ 1.3.2 1.2.5 5.1.46 + 3.10.4 @@ -56,6 +57,8 @@ ${pagehelper.version} + + diff --git a/framework/spring/spring-data/spring-redis/pom.xml b/framework/spring/spring-data/spring-redis/pom.xml index 32a269f51..035564ba5 100644 --- a/framework/spring/spring-data/spring-redis/pom.xml +++ b/framework/spring/spring-data/spring-redis/pom.xml @@ -22,6 +22,12 @@ spring-boot-starter-cache + + org.redisson + redisson-spring-boot-starter + 3.10.4 + + diff --git a/framework/spring/spring-data/spring-redis/src/main/java/org/laidu/learn/spring/data/redis/service/UserService.java b/framework/spring/spring-data/spring-redis/src/main/java/org/laidu/learn/spring/data/redis/service/UserService.java index cf5064232..71c0a887d 100644 --- a/framework/spring/spring-data/spring-redis/src/main/java/org/laidu/learn/spring/data/redis/service/UserService.java +++ b/framework/spring/spring-data/spring-redis/src/main/java/org/laidu/learn/spring/data/redis/service/UserService.java @@ -25,4 +25,10 @@ public interface UserService { * @return */ UserInfo addUser(String username, String password); + + /** + * modify username. + * + */ + UserInfo updateUsername(String id, String username); } diff --git a/framework/spring/spring-data/spring-redis/src/main/java/org/laidu/learn/spring/data/redis/service/impl/UserServiceImpl.java b/framework/spring/spring-data/spring-redis/src/main/java/org/laidu/learn/spring/data/redis/service/impl/UserServiceImpl.java index 65f9935a7..028f9c92a 100644 --- a/framework/spring/spring-data/spring-redis/src/main/java/org/laidu/learn/spring/data/redis/service/impl/UserServiceImpl.java +++ b/framework/spring/spring-data/spring-redis/src/main/java/org/laidu/learn/spring/data/redis/service/impl/UserServiceImpl.java @@ -1,14 +1,18 @@ package org.laidu.learn.spring.data.redis.service.impl; -import lombok.extern.slf4j.Slf4j; +import java.util.UUID; +import java.util.concurrent.TimeUnit; + import org.laidu.learn.spring.data.redis.model.UserInfo; import org.laidu.learn.spring.data.redis.service.UserService; +import org.redisson.Redisson; +import org.redisson.api.RLock; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.cache.annotation.Cacheable; import org.springframework.data.redis.core.RedisTemplate; import org.springframework.stereotype.Service; -import java.util.UUID; +import lombok.extern.slf4j.Slf4j; /** * Created by tiancai.zang @@ -21,6 +25,9 @@ public class UserServiceImpl implements UserService { private final RedisTemplate redisTemplate; + @Autowired + private Redisson redission; + @Autowired public UserServiceImpl(RedisTemplate redisTemplate) { this.redisTemplate = redisTemplate; @@ -49,4 +56,34 @@ public UserInfo addUser(String username, String password) { // .password(password) .build(); } + + @Override + public UserInfo updateUsername(String id, String username) { + + + boolean res = false; + + UserInfo info = null; + + RLock lock = redission.getLock("lock_"+id); + + try { + + lock.lock(10, TimeUnit.SECONDS); + + System.out.println("got lock"); + + }catch (Exception e){ + log.warn("获取redis锁失败! {}",id); + } finally { + try{ + lock.unlock(); + }finally { + System.out.println("unlock"); + } + } + + + return info; + } } \ No newline at end of file diff --git a/framework/spring/spring-data/spring-redis/src/main/resources/redisson.yaml b/framework/spring/spring-data/spring-redis/src/main/resources/redisson.yaml new file mode 100644 index 000000000..e69de29bb diff --git a/framework/spring/spring-data/spring-redis/src/test/java/org/laidu/learn/spring/data/redis/service/impl/UserServiceImplTest.java b/framework/spring/spring-data/spring-redis/src/test/java/org/laidu/learn/spring/data/redis/service/impl/UserServiceImplTest.java index 95c471bb6..216c28c0b 100644 --- a/framework/spring/spring-data/spring-redis/src/test/java/org/laidu/learn/spring/data/redis/service/impl/UserServiceImplTest.java +++ b/framework/spring/spring-data/spring-redis/src/test/java/org/laidu/learn/spring/data/redis/service/impl/UserServiceImplTest.java @@ -5,6 +5,7 @@ import java.util.Date; import java.util.UUID; import java.util.concurrent.TimeUnit; +import java.util.stream.IntStream; import org.junit.Assert; import org.junit.jupiter.api.Test; @@ -134,4 +135,13 @@ public static ChronoUnit convert(TimeUnit tu) { return null; } } + + @Test + void updateUsername() { + + IntStream.range(0,1000).parallel() + .forEach( i -> { + userService.updateUsername("123","xiaoming"+i); + }); + } } \ No newline at end of file From 861fc5c043119c94740cd1055bce49c44c768dd4 Mon Sep 17 00:00:00 2001 From: laidu Date: Mon, 18 Mar 2019 21:14:19 +0800 Subject: [PATCH 263/417] add InstrumentationAgent --- .../language/feature/exception/Demo.java | 10 ++-- .../feature/object/InstrumentationAgent.java | 26 ++++++++++ .../feature/object/ObjectSizeDemo.java | 51 +++++++++++++++++++ .../src/main/resources/agent/MANIFEST.MF | 1 + 4 files changed, 83 insertions(+), 5 deletions(-) create mode 100644 language-feature/src/main/java/org/laidu/learn/language/feature/object/InstrumentationAgent.java create mode 100644 language-feature/src/main/java/org/laidu/learn/language/feature/object/ObjectSizeDemo.java create mode 100644 language-feature/src/main/resources/agent/MANIFEST.MF diff --git a/language-feature/src/main/java/org/laidu/learn/language/feature/exception/Demo.java b/language-feature/src/main/java/org/laidu/learn/language/feature/exception/Demo.java index dbcb54256..e04634c30 100644 --- a/language-feature/src/main/java/org/laidu/learn/language/feature/exception/Demo.java +++ b/language-feature/src/main/java/org/laidu/learn/language/feature/exception/Demo.java @@ -2,8 +2,6 @@ import lombok.extern.slf4j.Slf4j; -import java.util.List; - /** * demo * @@ -16,9 +14,11 @@ public class Demo { public static void main(String[] args) { - List list = null; - - list.size(); + try { + throw new NullPointerException(); + }catch (Exception e){ + log.info("over"); + } } diff --git a/language-feature/src/main/java/org/laidu/learn/language/feature/object/InstrumentationAgent.java b/language-feature/src/main/java/org/laidu/learn/language/feature/object/InstrumentationAgent.java new file mode 100644 index 000000000..daded60ba --- /dev/null +++ b/language-feature/src/main/java/org/laidu/learn/language/feature/object/InstrumentationAgent.java @@ -0,0 +1,26 @@ +package org.laidu.learn.language.feature.object; + +import java.lang.instrument.Instrumentation; + + +/** + * InstrumentationAgent + * + * @author zangtiancai + * @date 2019-03-18 19:18. + */ +public class InstrumentationAgent { + + private static volatile Instrumentation globalInstrumentation; + + public static void premain(final String agentArgs, final Instrumentation inst) { + globalInstrumentation = inst; + } + + public static long getObjectSize(final Object object) { + if (globalInstrumentation == null) { + throw new IllegalStateException("Agent not initialized."); + } + return globalInstrumentation.getObjectSize(object); + } +} diff --git a/language-feature/src/main/java/org/laidu/learn/language/feature/object/ObjectSizeDemo.java b/language-feature/src/main/java/org/laidu/learn/language/feature/object/ObjectSizeDemo.java new file mode 100644 index 000000000..1863e1e7e --- /dev/null +++ b/language-feature/src/main/java/org/laidu/learn/language/feature/object/ObjectSizeDemo.java @@ -0,0 +1,51 @@ +package org.laidu.learn.language.feature.object; + +import java.io.IOException; +import java.util.ArrayList; +import java.util.List; + +import lombok.extern.slf4j.Slf4j; + +/** + * 对象在内存中的大小 + * + * @author zangtiancai + * @date 2019-03-18 18:58. + */ +@Slf4j +public class ObjectSizeDemo { + + public static void main(String[] args) throws IOException, InterruptedException { + + log.info("new Object() size: {}",InstrumentationAgent.getObjectSize(new Object())); + log.info("new Integer.MAX_VALUE size: {}",InstrumentationAgent.getObjectSize(Integer.MAX_VALUE)); + log.info("1 size: {}",InstrumentationAgent.getObjectSize(1)); + log.info("1L size: {}",InstrumentationAgent.getObjectSize(1L)); + log.info("'1' size: {}",InstrumentationAgent.getObjectSize('1')); + + log.info("new String() size: {}",InstrumentationAgent.getObjectSize(new String())); + log.info("hello size: {}",InstrumentationAgent.getObjectSize("hello")); + log.info("hello world size: {}",InstrumentationAgent.getObjectSize("hello world,hahhahahh")); + log.info("new String() size: {}",InstrumentationAgent.getObjectSize(new String())); + + int[] a = new int[]{0,1,2,3,4,5,6,7}; + log.info("new int[] size: {}",InstrumentationAgent.getObjectSize(a)); + + List list = new ArrayList<>(1024); + log.info("new ArrayList<>() size: {}",InstrumentationAgent.getObjectSize(list)); + + list.add(0); + log.info("new ArrayList<>() size: {}",InstrumentationAgent.getObjectSize(list)); + + list.add(1); + list.add(2); + list.add(3); + list.add(4); + for (int i = 0; i < 1000; i++) { + list.add(i); + } + log.info("new ArrayList<>() size: {}",InstrumentationAgent.getObjectSize(list)); + + } + +} diff --git a/language-feature/src/main/resources/agent/MANIFEST.MF b/language-feature/src/main/resources/agent/MANIFEST.MF new file mode 100644 index 000000000..c3f8bcf30 --- /dev/null +++ b/language-feature/src/main/resources/agent/MANIFEST.MF @@ -0,0 +1 @@ +Premain-class: org.laidu.learn.language.feature.object.InstrumentationAgent From 44dceae0c44222353721ee0b98d5e5f964907783 Mon Sep 17 00:00:00 2001 From: laidu Date: Thu, 21 Mar 2019 21:17:49 +0800 Subject: [PATCH 264/417] add global exception handler --- .../org/laidu/learn/spring/mvc/MvcApp.java | 20 +++---- .../mvc/controller/ExceptionController.java | 60 +++++++++++++++++++ .../mvc/controller/GoodsController.java | 22 ++++--- .../spring/mvc/controller/HomeController.java | 7 ++- .../mvc/controller/ResourceController.java | 24 +++++--- .../mvc/exception/GlobalExceptionHandler.java | 51 ++++++++++++++++ .../mvc/model/{Result.java => Response.java} | 6 +- .../spring/mvc/service/ExceptionService.java | 22 +++++++ .../service/impl/ExceptionServiceImpl.java | 29 +++++++++ .../spring-mvc/src/site/markdown/exception.md | 12 ++++ .../spring-mvc/src/site/markdown/index.md | 9 ++- 11 files changed, 227 insertions(+), 35 deletions(-) create mode 100644 framework/spring/spring-web/spring-mvc/src/main/java/org/laidu/learn/spring/mvc/controller/ExceptionController.java create mode 100644 framework/spring/spring-web/spring-mvc/src/main/java/org/laidu/learn/spring/mvc/exception/GlobalExceptionHandler.java rename framework/spring/spring-web/spring-mvc/src/main/java/org/laidu/learn/spring/mvc/model/{Result.java => Response.java} (84%) create mode 100644 framework/spring/spring-web/spring-mvc/src/main/java/org/laidu/learn/spring/mvc/service/ExceptionService.java create mode 100644 framework/spring/spring-web/spring-mvc/src/main/java/org/laidu/learn/spring/mvc/service/impl/ExceptionServiceImpl.java create mode 100644 framework/spring/spring-web/spring-mvc/src/site/markdown/exception.md diff --git a/framework/spring/spring-web/spring-mvc/src/main/java/org/laidu/learn/spring/mvc/MvcApp.java b/framework/spring/spring-web/spring-mvc/src/main/java/org/laidu/learn/spring/mvc/MvcApp.java index 7a0c43de7..aaa669e7e 100644 --- a/framework/spring/spring-web/spring-mvc/src/main/java/org/laidu/learn/spring/mvc/MvcApp.java +++ b/framework/spring/spring-web/spring-mvc/src/main/java/org/laidu/learn/spring/mvc/MvcApp.java @@ -1,16 +1,14 @@ package org.laidu.learn.spring.mvc; -import lombok.extern.slf4j.Slf4j; import org.laidu.learn.spring.mvc.conf.StorageProperties; -import org.laidu.learn.spring.mvc.service.StorageService; import org.laidu.learn.swagger.demo.config.SwaggerConfig; import org.springframework.boot.Banner; -import org.springframework.boot.CommandLineRunner; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.boot.builder.SpringApplicationBuilder; import org.springframework.boot.context.properties.EnableConfigurationProperties; -import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Import; + +import lombok.extern.slf4j.Slf4j; import springfox.documentation.swagger2.annotations.EnableSwagger2; /** @@ -26,13 +24,13 @@ @EnableConfigurationProperties(StorageProperties.class) public class MvcApp { - @Bean - CommandLineRunner init(StorageService storageService) { - return (args) -> { - storageService.deleteAll(); - storageService.init(); - }; - } +// @Bean +// CommandLineRunner init(StorageService storageService) { +// return (args) -> { +// storageService.deleteAll(); +// storageService.init(); +// }; +// } public static void main(String[] args) { diff --git a/framework/spring/spring-web/spring-mvc/src/main/java/org/laidu/learn/spring/mvc/controller/ExceptionController.java b/framework/spring/spring-web/spring-mvc/src/main/java/org/laidu/learn/spring/mvc/controller/ExceptionController.java new file mode 100644 index 000000000..32272c826 --- /dev/null +++ b/framework/spring/spring-web/spring-mvc/src/main/java/org/laidu/learn/spring/mvc/controller/ExceptionController.java @@ -0,0 +1,60 @@ +package org.laidu.learn.spring.mvc.controller; + +import org.laidu.learn.spring.mvc.model.Response; +import org.laidu.learn.spring.mvc.service.ExceptionService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import lombok.extern.slf4j.Slf4j; + +/** + * 抛出异常controller + * + * @author zangtiancai + * @date 2019-03-21 20:09. + */ +@Slf4j +@RestController +@RequestMapping("/exception") +public class ExceptionController { + + @Autowired + private ExceptionService exceptionService; + + + @GetMapping("/default") + public Response exception(){ + + String var = null; + + log.info("var's length: {}",var.length()); + + return Response.ok("exception"); + } + + @GetMapping("/null") + public Response nullException(){ + + String var = null; + + log.info("var's length: {}",var.length()); + + return Response.ok("exception"); + } + + @GetMapping("/callThis") + public Response callThisException(){ + + return nullException(); + } + + @GetMapping("/service") + public Response serviceException(){ + + return Response.ok(exceptionService.exception()); + } + + +} diff --git a/framework/spring/spring-web/spring-mvc/src/main/java/org/laidu/learn/spring/mvc/controller/GoodsController.java b/framework/spring/spring-web/spring-mvc/src/main/java/org/laidu/learn/spring/mvc/controller/GoodsController.java index 977caffcf..1e812749d 100644 --- a/framework/spring/spring-web/spring-mvc/src/main/java/org/laidu/learn/spring/mvc/controller/GoodsController.java +++ b/framework/spring/spring-web/spring-mvc/src/main/java/org/laidu/learn/spring/mvc/controller/GoodsController.java @@ -1,15 +1,21 @@ package org.laidu.learn.spring.mvc.controller; -import io.swagger.annotations.ApiOperation; -import lombok.extern.slf4j.Slf4j; import org.laidu.learn.spring.mvc.dto.AddGoodsReqDTO; import org.laidu.learn.spring.mvc.dto.GetGoodsResDTO; import org.laidu.learn.spring.mvc.enums.GoodsTypeEnum; import org.laidu.learn.spring.mvc.model.Goods; -import org.laidu.learn.spring.mvc.model.Result; +import org.laidu.learn.spring.mvc.model.Response; import org.laidu.learn.spring.mvc.service.GoodsService; import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.web.bind.annotation.*; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PathVariable; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import io.swagger.annotations.ApiOperation; +import lombok.extern.slf4j.Slf4j; /** * 商品接口 @@ -31,9 +37,9 @@ public GoodsController(GoodsService goodsService) { @PostMapping("/add") @ApiOperation("添加商品") - public Result add(@RequestBody AddGoodsReqDTO reqDTO){ + public Response add(@RequestBody AddGoodsReqDTO reqDTO){ - return Result.ok(goodsService.addGoods(Goods.builder() + return Response.ok(goodsService.addGoods(Goods.builder() .goodsName(reqDTO.getGoodsName()) .goodsId(reqDTO.getGoodsId()) .goodsType(reqDTO.getGoodsType()) @@ -42,9 +48,9 @@ public Result add(@RequestBody AddGoodsReqDTO reqDTO){ @GetMapping("/query/{goodId}") @ApiOperation("查询商品") - public Result query(@PathVariable("goodId") Long goodId){ + public Response query(@PathVariable("goodId") Long goodId){ - return Result.ok(GetGoodsResDTO.builder() + return Response.ok(GetGoodsResDTO.builder() .goodsName("name") .goodsId(goodId) .goodsType(GoodsTypeEnum.BOOK_0) diff --git a/framework/spring/spring-web/spring-mvc/src/main/java/org/laidu/learn/spring/mvc/controller/HomeController.java b/framework/spring/spring-web/spring-mvc/src/main/java/org/laidu/learn/spring/mvc/controller/HomeController.java index ba83a46f0..d5271ade8 100644 --- a/framework/spring/spring-web/spring-mvc/src/main/java/org/laidu/learn/spring/mvc/controller/HomeController.java +++ b/framework/spring/spring-web/spring-mvc/src/main/java/org/laidu/learn/spring/mvc/controller/HomeController.java @@ -1,7 +1,8 @@ package org.laidu.learn.spring.mvc.controller; import lombok.extern.slf4j.Slf4j; -import org.laidu.learn.spring.mvc.model.Result; + +import org.laidu.learn.spring.mvc.model.Response; import org.laidu.learn.spring.mvc.service.HelloService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.GetMapping; @@ -28,11 +29,11 @@ public class HomeController { HelloService helloService; @GetMapping("/hello") - public Result hello() throws InterruptedException { + public Response hello() throws InterruptedException { log.info("active Thread count: {}", Thread.activeCount()); - return Result.ok(helloService.sayHello()); + return Response.ok(helloService.sayHello()); } @GetMapping("/sleep") diff --git a/framework/spring/spring-web/spring-mvc/src/main/java/org/laidu/learn/spring/mvc/controller/ResourceController.java b/framework/spring/spring-web/spring-mvc/src/main/java/org/laidu/learn/spring/mvc/controller/ResourceController.java index ea5861f99..48d9bbab2 100644 --- a/framework/spring/spring-web/spring-mvc/src/main/java/org/laidu/learn/spring/mvc/controller/ResourceController.java +++ b/framework/spring/spring-web/spring-mvc/src/main/java/org/laidu/learn/spring/mvc/controller/ResourceController.java @@ -1,19 +1,25 @@ package org.laidu.learn.spring.mvc.controller; -import lombok.extern.slf4j.Slf4j; -import org.laidu.learn.spring.mvc.model.Result; +import java.io.IOException; +import java.io.UnsupportedEncodingException; +import java.net.URLEncoder; +import java.nio.charset.StandardCharsets; + +import org.laidu.learn.spring.mvc.model.Response; import org.laidu.learn.spring.mvc.service.StorageService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.core.io.Resource; import org.springframework.http.HttpHeaders; import org.springframework.http.ResponseEntity; -import org.springframework.web.bind.annotation.*; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PathVariable; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestParam; +import org.springframework.web.bind.annotation.RestController; import org.springframework.web.multipart.MultipartFile; -import java.io.IOException; -import java.io.UnsupportedEncodingException; -import java.net.URLEncoder; -import java.nio.charset.StandardCharsets; +import lombok.extern.slf4j.Slf4j; /** * 资源服务 @@ -31,11 +37,11 @@ public class ResourceController { @PostMapping("/upload") - public Result upload(@RequestParam("file") MultipartFile file) throws IOException { + public Response upload(@RequestParam("file") MultipartFile file) throws IOException { String resourceId = storageService.store(file); - return Result.ok(resourceId); + return Response.ok(resourceId); } @GetMapping("/files/{filename:.+}") diff --git a/framework/spring/spring-web/spring-mvc/src/main/java/org/laidu/learn/spring/mvc/exception/GlobalExceptionHandler.java b/framework/spring/spring-web/spring-mvc/src/main/java/org/laidu/learn/spring/mvc/exception/GlobalExceptionHandler.java new file mode 100644 index 000000000..d2f4ee0e3 --- /dev/null +++ b/framework/spring/spring-web/spring-mvc/src/main/java/org/laidu/learn/spring/mvc/exception/GlobalExceptionHandler.java @@ -0,0 +1,51 @@ +package org.laidu.learn.spring.mvc.exception; + +import javax.servlet.http.HttpServletRequest; + +import org.laidu.learn.spring.mvc.model.Response; +import org.springframework.web.bind.annotation.ControllerAdvice; +import org.springframework.web.bind.annotation.ExceptionHandler; +import org.springframework.web.bind.annotation.ResponseBody; +import org.springframework.web.bind.annotation.RestController; + +import lombok.extern.slf4j.Slf4j; + +/** + * 全局异常拦截器 + * + * @author zangtiancai + * @date 2019-03-21 19:58. + */ +@Slf4j +@ControllerAdvice(annotations = RestController.class) +public class GlobalExceptionHandler { + + + @ExceptionHandler(Exception.class) + @ResponseBody + public Response exceptionDefault(HttpServletRequest request, Exception e){ + + return Response.builder() + .code("E500000") + .message("系统内部错误") + .build(); + } + + /** + * 最匹配原则 + * @param request + * @param e + * @return + */ + @ExceptionHandler(NullPointerException.class) + @ResponseBody + public Response exceptionNull(HttpServletRequest request, Exception e){ + + log.error("{}",e); + + return Response.builder() + .code("E500001") + .message("空指针异常") + .build(); + } +} diff --git a/framework/spring/spring-web/spring-mvc/src/main/java/org/laidu/learn/spring/mvc/model/Result.java b/framework/spring/spring-web/spring-mvc/src/main/java/org/laidu/learn/spring/mvc/model/Response.java similarity index 84% rename from framework/spring/spring-web/spring-mvc/src/main/java/org/laidu/learn/spring/mvc/model/Result.java rename to framework/spring/spring-web/spring-mvc/src/main/java/org/laidu/learn/spring/mvc/model/Response.java index bb6463554..78ce6c4cb 100644 --- a/framework/spring/spring-web/spring-mvc/src/main/java/org/laidu/learn/spring/mvc/model/Result.java +++ b/framework/spring/spring-web/spring-mvc/src/main/java/org/laidu/learn/spring/mvc/model/Response.java @@ -20,7 +20,7 @@ @AllArgsConstructor @NoArgsConstructor @ApiModel(description ="响应封装") -public class Result { +public class Response { private String code; @@ -28,9 +28,9 @@ public class Result { private T data; - public static Result ok(T data){ + public static Response ok(T data){ - return Result.builder() + return Response.builder() .code("E000000") .message("success") .data(data) diff --git a/framework/spring/spring-web/spring-mvc/src/main/java/org/laidu/learn/spring/mvc/service/ExceptionService.java b/framework/spring/spring-web/spring-mvc/src/main/java/org/laidu/learn/spring/mvc/service/ExceptionService.java new file mode 100644 index 000000000..32caab289 --- /dev/null +++ b/framework/spring/spring-web/spring-mvc/src/main/java/org/laidu/learn/spring/mvc/service/ExceptionService.java @@ -0,0 +1,22 @@ +package org.laidu.learn.spring.mvc.service; + +/** + * 模拟service异常 + * + * @author zangtiancai + * @date 2019-03-21 21:04. + */ +public interface ExceptionService { + + /** + * 模拟exception + * @return + */ + String exception(); + + /** + * 模拟null exception + * @return + */ + String nullException(); +} diff --git a/framework/spring/spring-web/spring-mvc/src/main/java/org/laidu/learn/spring/mvc/service/impl/ExceptionServiceImpl.java b/framework/spring/spring-web/spring-mvc/src/main/java/org/laidu/learn/spring/mvc/service/impl/ExceptionServiceImpl.java new file mode 100644 index 000000000..6197c9970 --- /dev/null +++ b/framework/spring/spring-web/spring-mvc/src/main/java/org/laidu/learn/spring/mvc/service/impl/ExceptionServiceImpl.java @@ -0,0 +1,29 @@ +package org.laidu.learn.spring.mvc.service.impl; + +import org.laidu.learn.spring.mvc.service.ExceptionService; +import org.springframework.stereotype.Service; + +import lombok.extern.slf4j.Slf4j; + +/** + * @author zangtiancai + * @date 2019-03-21 21:06. + */ +@Slf4j +@Service +public class ExceptionServiceImpl implements ExceptionService { + @Override + public String exception() { + + String var = null; + + log.info("{}",var.length()); + + return null; + } + + @Override + public String nullException() { + return null; + } +} diff --git a/framework/spring/spring-web/spring-mvc/src/site/markdown/exception.md b/framework/spring/spring-web/spring-mvc/src/site/markdown/exception.md new file mode 100644 index 000000000..98018e649 --- /dev/null +++ b/framework/spring/spring-web/spring-mvc/src/site/markdown/exception.md @@ -0,0 +1,12 @@ +# Spring MVC 异常处理 + + +注意: +使用 @ControllerAdvice 处理异常也有一定的 局限性。只有进入 Controller 层的错误,才会由 @ControllerAdvice 处理。拦截器 抛出的错误,以及 访问错误地址 的情况 @ControllerAdvice 处理不了,由 Spring Boot 默认的 异常处理机制 处理。 + +参考: + +[]() +[]() +[Spring Boot中Web应用的统一异常处理](http://blog.didispace.com/springbootexception/) +[]() \ No newline at end of file diff --git a/framework/spring/spring-web/spring-mvc/src/site/markdown/index.md b/framework/spring/spring-web/spring-mvc/src/site/markdown/index.md index 502a37f72..eff714aa9 100644 --- a/framework/spring/spring-web/spring-mvc/src/site/markdown/index.md +++ b/framework/spring/spring-web/spring-mvc/src/site/markdown/index.md @@ -4,5 +4,12 @@ * [深入servlet]() * [常见的servlet容器]() * [深入spring mvc]() +* [全局异常拦截器]() * []() -* []() \ No newline at end of file + + +参考: +[]() +[]() +[]() +[]() \ No newline at end of file From 30c62bd9d2fe6c05ba699156f9a455a309a9245f Mon Sep 17 00:00:00 2001 From: laidu Date: Mon, 25 Mar 2019 17:38:20 +0800 Subject: [PATCH 265/417] add global exception handler --- .../mvc/controller/ExceptionController.java | 7 +++++++ .../mvc/exception/GlobalExceptionHandler.java | 20 ++++++++++++++++++- 2 files changed, 26 insertions(+), 1 deletion(-) diff --git a/framework/spring/spring-web/spring-mvc/src/main/java/org/laidu/learn/spring/mvc/controller/ExceptionController.java b/framework/spring/spring-web/spring-mvc/src/main/java/org/laidu/learn/spring/mvc/controller/ExceptionController.java index 32272c826..f45552248 100644 --- a/framework/spring/spring-web/spring-mvc/src/main/java/org/laidu/learn/spring/mvc/controller/ExceptionController.java +++ b/framework/spring/spring-web/spring-mvc/src/main/java/org/laidu/learn/spring/mvc/controller/ExceptionController.java @@ -1,5 +1,6 @@ package org.laidu.learn.spring.mvc.controller; +import org.laidu.learn.spring.mvc.exception.StorageException; import org.laidu.learn.spring.mvc.model.Response; import org.laidu.learn.spring.mvc.service.ExceptionService; import org.springframework.beans.factory.annotation.Autowired; @@ -56,5 +57,11 @@ public Response serviceException(){ return Response.ok(exceptionService.exception()); } + @GetMapping("/storage") + public Response storageException(){ + + throw new StorageException("storage exception"); + } + } diff --git a/framework/spring/spring-web/spring-mvc/src/main/java/org/laidu/learn/spring/mvc/exception/GlobalExceptionHandler.java b/framework/spring/spring-web/spring-mvc/src/main/java/org/laidu/learn/spring/mvc/exception/GlobalExceptionHandler.java index d2f4ee0e3..8c0ff84cc 100644 --- a/framework/spring/spring-web/spring-mvc/src/main/java/org/laidu/learn/spring/mvc/exception/GlobalExceptionHandler.java +++ b/framework/spring/spring-web/spring-mvc/src/main/java/org/laidu/learn/spring/mvc/exception/GlobalExceptionHandler.java @@ -39,7 +39,7 @@ public Response exceptionDefault(HttpServletRequest request, Exception e){ */ @ExceptionHandler(NullPointerException.class) @ResponseBody - public Response exceptionNull(HttpServletRequest request, Exception e){ + public Response exceptionNull(HttpServletRequest request, NullPointerException e){ log.error("{}",e); @@ -48,4 +48,22 @@ public Response exceptionNull(HttpServletRequest request, Exception e){ .message("空指针异常") .build(); } + + /** + * 异常类型自动转换 + * @param request + * @param e + * @return + */ + @ExceptionHandler(StorageException.class) + @ResponseBody + public Response exceptionStorage(HttpServletRequest request, StorageException e){ + + log.error("{}",e); + + return Response.builder() + .code("E500002") + .message("存储异常") + .build(); + } } From 35f053da96f16e7974b8eebb34f7355d649ee216 Mon Sep 17 00:00:00 2001 From: laidu Date: Tue, 26 Mar 2019 20:55:44 +0800 Subject: [PATCH 266/417] add global exception handler --- .../learn/spring/mvc/controller/ExceptionController.java | 2 +- .../laidu/learn/spring/mvc/exception/StorageException.java | 7 +++++++ 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/framework/spring/spring-web/spring-mvc/src/main/java/org/laidu/learn/spring/mvc/controller/ExceptionController.java b/framework/spring/spring-web/spring-mvc/src/main/java/org/laidu/learn/spring/mvc/controller/ExceptionController.java index f45552248..f41c2ea40 100644 --- a/framework/spring/spring-web/spring-mvc/src/main/java/org/laidu/learn/spring/mvc/controller/ExceptionController.java +++ b/framework/spring/spring-web/spring-mvc/src/main/java/org/laidu/learn/spring/mvc/controller/ExceptionController.java @@ -60,7 +60,7 @@ public Response serviceException(){ @GetMapping("/storage") public Response storageException(){ - throw new StorageException("storage exception"); + throw new StorageException(500,"storage exception"); } diff --git a/framework/spring/spring-web/spring-mvc/src/main/java/org/laidu/learn/spring/mvc/exception/StorageException.java b/framework/spring/spring-web/spring-mvc/src/main/java/org/laidu/learn/spring/mvc/exception/StorageException.java index 93a508484..6c345f908 100644 --- a/framework/spring/spring-web/spring-mvc/src/main/java/org/laidu/learn/spring/mvc/exception/StorageException.java +++ b/framework/spring/spring-web/spring-mvc/src/main/java/org/laidu/learn/spring/mvc/exception/StorageException.java @@ -11,10 +11,17 @@ @Slf4j public class StorageException extends RuntimeException { + private int code; + public StorageException(String message) { super(message); } + public StorageException(int code, String message) { + super(message); + this.code = code; + } + public StorageException(String message, Throwable cause) { super(message, cause); } From fb68beb83f7a7c10bf364be1e8abfbff352379d0 Mon Sep 17 00:00:00 2001 From: laidu Date: Tue, 9 Apr 2019 20:08:18 +0800 Subject: [PATCH 267/417] only print sql executable --- .../mybatis/config/DruidWebMonitorConfig.java | 31 ++++++++----- .../controller/UserInfoController.java | 18 ++++++-- .../learn/mybatis/mapper/AppUserMapper.java | 15 +++++-- .../src/main/resources/application.yml | 22 ++++++++-- .../main/resources/config/logback-spring.xml | 2 +- .../concurrent/problem/DateFormatDemo.java | 35 +++++++++++++++ .../learn/jvm/exception/NPExceptionDemo.java | 43 +++++++++++++++++++ 7 files changed, 145 insertions(+), 21 deletions(-) create mode 100644 language-advance/concurrent/src/main/java/org/laidu/learn/concurrent/problem/DateFormatDemo.java create mode 100644 language-advance/jvm/src/main/java/org/laidu/learn/jvm/exception/NPExceptionDemo.java diff --git a/framework/spring/spring-data/spring-mybatis/src/main/java/org/laidu/learn/mybatis/config/DruidWebMonitorConfig.java b/framework/spring/spring-data/spring-mybatis/src/main/java/org/laidu/learn/mybatis/config/DruidWebMonitorConfig.java index 4d9c63cf7..523eeafb9 100644 --- a/framework/spring/spring-data/spring-mybatis/src/main/java/org/laidu/learn/mybatis/config/DruidWebMonitorConfig.java +++ b/framework/spring/spring-data/spring-mybatis/src/main/java/org/laidu/learn/mybatis/config/DruidWebMonitorConfig.java @@ -1,12 +1,15 @@ package org.laidu.learn.mybatis.config; -import com.alibaba.druid.spring.boot.autoconfigure.DruidDataSourceAutoConfigure; -import com.alibaba.druid.spring.boot.autoconfigure.properties.DruidStatProperties; -import com.alibaba.druid.support.http.StatViewServlet; -import com.alibaba.druid.support.http.WebStatFilter; -import com.alibaba.druid.util.Utils; -import com.google.common.collect.Maps; -import lombok.extern.slf4j.Slf4j; +import java.io.IOException; +import java.util.Map; + +import javax.servlet.Filter; +import javax.servlet.FilterChain; +import javax.servlet.FilterConfig; +import javax.servlet.ServletException; +import javax.servlet.ServletRequest; +import javax.servlet.ServletResponse; + import org.springframework.boot.autoconfigure.AutoConfigureAfter; import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty; import org.springframework.boot.autoconfigure.condition.ConditionalOnWebApplication; @@ -15,9 +18,14 @@ import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; -import javax.servlet.*; -import java.io.IOException; -import java.util.Map; +import com.alibaba.druid.spring.boot.autoconfigure.DruidDataSourceAutoConfigure; +import com.alibaba.druid.spring.boot.autoconfigure.properties.DruidStatProperties; +import com.alibaba.druid.support.http.StatViewServlet; +import com.alibaba.druid.support.http.WebStatFilter; +import com.alibaba.druid.util.Utils; +import com.google.common.collect.Maps; + +import lombok.extern.slf4j.Slf4j; /** * durid config @@ -30,7 +38,8 @@ @Configuration @ConditionalOnWebApplication @AutoConfigureAfter(DruidDataSourceAutoConfigure.class) -@ConditionalOnProperty(name = "spring.datasource.druid.stat-view-servlet.enabled", havingValue = "true", matchIfMissing = true) +@ConditionalOnProperty(name = "spring.datasource.druid.stat-view-servlet.enabled", havingValue = "true", + matchIfMissing = false) public class DruidWebMonitorConfig { @Bean diff --git a/framework/spring/spring-data/spring-mybatis/src/main/java/org/laidu/learn/mybatis/controller/UserInfoController.java b/framework/spring/spring-data/spring-mybatis/src/main/java/org/laidu/learn/mybatis/controller/UserInfoController.java index 79659e6b6..5aded4d78 100644 --- a/framework/spring/spring-data/spring-mybatis/src/main/java/org/laidu/learn/mybatis/controller/UserInfoController.java +++ b/framework/spring/spring-data/spring-mybatis/src/main/java/org/laidu/learn/mybatis/controller/UserInfoController.java @@ -1,17 +1,20 @@ package org.laidu.learn.mybatis.controller; -import lombok.extern.slf4j.Slf4j; +import java.util.List; +import java.util.Optional; + import org.laidu.learn.mybatis.entity.AppUser; import org.laidu.learn.mybatis.mapper.AppUserMapper; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.transaction.annotation.Transactional; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.PathVariable; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; -import java.util.List; -import java.util.Optional; +import lombok.extern.slf4j.Slf4j; /** @@ -43,6 +46,15 @@ public AppUser queryById(@PathVariable("id") Long id){ return user; } + @PostMapping("/add") + @Transactional(rollbackFor = Exception.class) + public AppUser add(@RequestBody AppUser user){ + + userMapper.insert(user); + + return user; + } + @GetMapping("/query/{index}/{size}") public List queryById(@PathVariable("index") int index, @PathVariable("size") int size){ diff --git a/framework/spring/spring-data/spring-mybatis/src/main/java/org/laidu/learn/mybatis/mapper/AppUserMapper.java b/framework/spring/spring-data/spring-mybatis/src/main/java/org/laidu/learn/mybatis/mapper/AppUserMapper.java index 0e1ea62e0..581cb7df7 100644 --- a/framework/spring/spring-data/spring-mybatis/src/main/java/org/laidu/learn/mybatis/mapper/AppUserMapper.java +++ b/framework/spring/spring-data/spring-mybatis/src/main/java/org/laidu/learn/mybatis/mapper/AppUserMapper.java @@ -1,10 +1,14 @@ package org.laidu.learn.mybatis.mapper; -import org.apache.ibatis.annotations.*; -import org.laidu.learn.mybatis.entity.AppUser; - import java.util.List; +import org.apache.ibatis.annotations.Delete; +import org.apache.ibatis.annotations.Insert; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; +import org.laidu.learn.mybatis.entity.AppUser; + /** * @author zangtiancai */ @@ -30,4 +34,9 @@ public interface AppUserMapper { "") void insertBatch(@Param("appUsers") List appUsers); + @Insert({ + "insert into app_user (username, id_card) " , + "values (#{appUser.username}, #{appUser.idCard})" + }) + int insert(@Param("appUser") AppUser appUser); } \ No newline at end of file diff --git a/framework/spring/spring-data/spring-mybatis/src/main/resources/application.yml b/framework/spring/spring-data/spring-mybatis/src/main/resources/application.yml index c95c63507..1596c0c1e 100644 --- a/framework/spring/spring-data/spring-mybatis/src/main/resources/application.yml +++ b/framework/spring/spring-data/spring-mybatis/src/main/resources/application.yml @@ -22,9 +22,25 @@ spring: connectionProperties: druid.stat.mergeSql=true;druid.stat.slowSqlMillis=5000 filter: slf4j: - connection-log-enabled: false enabled: true + connection-log-enabled: false + statement-log-error-enabled: true statement-executable-sql-log-enable: true + statement-execute-after-log-enabled: true + statement-execute-batch-after-log-enabled: true + statement-execute-query-after-log-enabled: true + statement-execute-update-after-log-enabled: true + statement-create-after-log-enabled: false + statement-parameter-set-log-enabled: false + statement-prepare-after-log-enabled: false + statement-prepare-call-after-log-enabled: false + statement-sql-pretty-format: false + statement-parameter-clear-log-enable: false + statement-sql-format-option: + parameterized: false + prettyFormat: false + uppCase: true + stat: db-type: mysql @@ -32,7 +48,7 @@ spring: merge-sql: true slow-sql-millis: 2000 - filters: stat,wall,slf4j + filters: stat,mergeStat,wall,slf4j initialSize: 5 log-different-thread: true maxActive: 20 @@ -46,7 +62,7 @@ spring: testWhileIdle: true timeBetweenEvictionRunsMillis: 60000 useGlobalDataSourceStat: true - validationQuery: SELECT 1 FROM DUAL + validationQuery: SELECT 1 password: '' schema: classpath:db/schema.sql type: com.alibaba.druid.pool.DruidDataSource diff --git a/framework/spring/spring-data/spring-mybatis/src/main/resources/config/logback-spring.xml b/framework/spring/spring-data/spring-mybatis/src/main/resources/config/logback-spring.xml index 3ea011c2b..e4f8911dd 100644 --- a/framework/spring/spring-data/spring-mybatis/src/main/resources/config/logback-spring.xml +++ b/framework/spring/spring-data/spring-mybatis/src/main/resources/config/logback-spring.xml @@ -127,7 +127,7 @@ See here for more details: http://gordondickens.com/wordpress/2013/03/27/sawing- - + diff --git a/language-advance/concurrent/src/main/java/org/laidu/learn/concurrent/problem/DateFormatDemo.java b/language-advance/concurrent/src/main/java/org/laidu/learn/concurrent/problem/DateFormatDemo.java new file mode 100644 index 000000000..955ced4ea --- /dev/null +++ b/language-advance/concurrent/src/main/java/org/laidu/learn/concurrent/problem/DateFormatDemo.java @@ -0,0 +1,35 @@ +package org.laidu.learn.concurrent.problem; + +import java.text.ParseException; +import java.text.SimpleDateFormat; +import java.util.stream.IntStream; + +import lombok.extern.slf4j.Slf4j; + +/** + * DateFormat 线程不安全 + * + * @author zangtiancai. + * @date 2019-04-09 10:21. + */ +@Slf4j +public class DateFormatDemo { + + private static SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss"); + + public static void main(String[] args) throws ParseException { + + System.out.println(dateFormat.parse("2017-12-13 15:17:27")); + + IntStream.range(0,100) + .parallel() + .forEach(i -> { + try { + System.out.println(dateFormat.format(dateFormat.parse("2017-12-13 15:17:27"))); + } catch (ParseException e) { + e.printStackTrace(); + } + }); + + } +} diff --git a/language-advance/jvm/src/main/java/org/laidu/learn/jvm/exception/NPExceptionDemo.java b/language-advance/jvm/src/main/java/org/laidu/learn/jvm/exception/NPExceptionDemo.java new file mode 100644 index 000000000..0e66c9884 --- /dev/null +++ b/language-advance/jvm/src/main/java/org/laidu/learn/jvm/exception/NPExceptionDemo.java @@ -0,0 +1,43 @@ +package org.laidu.learn.jvm.exception; + +import java.util.stream.IntStream; + +import lombok.extern.slf4j.Slf4j; + +/** + * 空指针异常堆栈忽略demo + * 禁用优化:-XX:-OmitStackTraceInFastThrow + * + * @author zangtiancai. + * @date 2019-04-04 16:06. + */ +@Slf4j +public class NPExceptionDemo { + + private static Exception e = new BusinessException(); + + public static void main(String[] args) { + + + IntStream.range(0, Integer.MAX_VALUE).forEach(i -> { + try { + work(i); + } catch (Exception e1) { + log.error("i's value : {}", i, e1); + } + + }); + + } + + private static void work(int i) throws Exception { + // String a = null; + // a.length(); + throw e; + + } + + public static class BusinessException extends RuntimeException { + + } +} From c6cfbb029d5c05b90f4415dfaf4f5096138f38ff Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=9D=90=E7=AC=83=E5=A4=A7=E5=A4=A7?= Date: Tue, 9 Apr 2019 20:10:49 +0800 Subject: [PATCH 268/417] Create CODE_OF_CONDUCT.md --- CODE_OF_CONDUCT.md | 76 ++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 76 insertions(+) create mode 100644 CODE_OF_CONDUCT.md diff --git a/CODE_OF_CONDUCT.md b/CODE_OF_CONDUCT.md new file mode 100644 index 000000000..09827eb16 --- /dev/null +++ b/CODE_OF_CONDUCT.md @@ -0,0 +1,76 @@ +# Contributor Covenant Code of Conduct + +## Our Pledge + +In the interest of fostering an open and welcoming environment, we as +contributors and maintainers pledge to making participation in our project and +our community a harassment-free experience for everyone, regardless of age, body +size, disability, ethnicity, sex characteristics, gender identity and expression, +level of experience, education, socio-economic status, nationality, personal +appearance, race, religion, or sexual identity and orientation. + +## Our Standards + +Examples of behavior that contributes to creating a positive environment +include: + +* Using welcoming and inclusive language +* Being respectful of differing viewpoints and experiences +* Gracefully accepting constructive criticism +* Focusing on what is best for the community +* Showing empathy towards other community members + +Examples of unacceptable behavior by participants include: + +* The use of sexualized language or imagery and unwelcome sexual attention or + advances +* Trolling, insulting/derogatory comments, and personal or political attacks +* Public or private harassment +* Publishing others' private information, such as a physical or electronic + address, without explicit permission +* Other conduct which could reasonably be considered inappropriate in a + professional setting + +## Our Responsibilities + +Project maintainers are responsible for clarifying the standards of acceptable +behavior and are expected to take appropriate and fair corrective action in +response to any instances of unacceptable behavior. + +Project maintainers have the right and responsibility to remove, edit, or +reject comments, commits, code, wiki edits, issues, and other contributions +that are not aligned to this Code of Conduct, or to ban temporarily or +permanently any contributor for other behaviors that they deem inappropriate, +threatening, offensive, or harmful. + +## Scope + +This Code of Conduct applies both within project spaces and in public spaces +when an individual is representing the project or its community. Examples of +representing a project or community include using an official project e-mail +address, posting via an official social media account, or acting as an appointed +representative at an online or offline event. Representation of a project may be +further defined and clarified by project maintainers. + +## Enforcement + +Instances of abusive, harassing, or otherwise unacceptable behavior may be +reported by contacting the project team at . All +complaints will be reviewed and investigated and will result in a response that +is deemed necessary and appropriate to the circumstances. The project team is +obligated to maintain confidentiality with regard to the reporter of an incident. +Further details of specific enforcement policies may be posted separately. + +Project maintainers who do not follow or enforce the Code of Conduct in good +faith may face temporary or permanent repercussions as determined by other +members of the project's leadership. + +## Attribution + +This Code of Conduct is adapted from the [Contributor Covenant][homepage], version 1.4, +available at https://www.contributor-covenant.org/version/1/4/code-of-conduct.html + +[homepage]: https://www.contributor-covenant.org + +For answers to common questions about this code of conduct, see +https://www.contributor-covenant.org/faq From 22bf7bf4d63cbe48786a1d18b3080f8f2d7efeac Mon Sep 17 00:00:00 2001 From: ztc Date: Mon, 15 Apr 2019 23:11:38 +0800 Subject: [PATCH 269/417] update spring-boot 2.1.4 & add custom path prefix --- framework/spring/pom.xml | 4 ++-- framework/spring/spring-web/pom.xml | 1 - .../spring/spring-web/spring-mvc/pom.xml | 1 + .../org/laidu/learn/spring/mvc/MvcApp.java | 17 ++++++++++------- .../spring/mvc/conf/MvcAtuoConfiguration.java | 17 +++++++++++++++++ .../spring/mvc/controller/BaseController.java | 19 +++++++++++++++++++ .../spring/mvc/controller/HomeController.java | 6 +++--- .../{ => exception}/ExceptionController.java | 5 +++-- framework/thirdparty/pom.xml | 2 +- .../concurrent/problem/DeadLockDemo.java | 5 +++-- production-component/pom.xml | 2 +- 11 files changed, 60 insertions(+), 19 deletions(-) create mode 100644 framework/spring/spring-web/spring-mvc/src/main/java/org/laidu/learn/spring/mvc/controller/BaseController.java rename framework/spring/spring-web/spring-mvc/src/main/java/org/laidu/learn/spring/mvc/controller/{ => exception}/ExceptionController.java (89%) diff --git a/framework/spring/pom.xml b/framework/spring/pom.xml index 7d52be4a0..7b3997f57 100644 --- a/framework/spring/pom.xml +++ b/framework/spring/pom.xml @@ -34,8 +34,8 @@ 5.5.0 - 5.0.6.RELEASE - 2.0.5.RELEASE + 5.1.6.RELEASE + 2.1.4.RELEASE Finchley.SR1 1.4.0 diff --git a/framework/spring/spring-web/pom.xml b/framework/spring/spring-web/pom.xml index 54c4a4d6c..f6213c590 100644 --- a/framework/spring/spring-web/pom.xml +++ b/framework/spring/spring-web/pom.xml @@ -25,7 +25,6 @@ - diff --git a/framework/spring/spring-web/spring-mvc/pom.xml b/framework/spring/spring-web/spring-mvc/pom.xml index 5cf415f4d..b7eca1a3a 100644 --- a/framework/spring/spring-web/spring-mvc/pom.xml +++ b/framework/spring/spring-web/spring-mvc/pom.xml @@ -49,6 +49,7 @@ spring-boot-starter-jetty + \ No newline at end of file diff --git a/framework/spring/spring-web/spring-mvc/src/main/java/org/laidu/learn/spring/mvc/MvcApp.java b/framework/spring/spring-web/spring-mvc/src/main/java/org/laidu/learn/spring/mvc/MvcApp.java index aaa669e7e..58f6cc55b 100644 --- a/framework/spring/spring-web/spring-mvc/src/main/java/org/laidu/learn/spring/mvc/MvcApp.java +++ b/framework/spring/spring-web/spring-mvc/src/main/java/org/laidu/learn/spring/mvc/MvcApp.java @@ -1,11 +1,14 @@ package org.laidu.learn.spring.mvc; import org.laidu.learn.spring.mvc.conf.StorageProperties; +import org.laidu.learn.spring.mvc.service.StorageService; import org.laidu.learn.swagger.demo.config.SwaggerConfig; import org.springframework.boot.Banner; +import org.springframework.boot.CommandLineRunner; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.boot.builder.SpringApplicationBuilder; import org.springframework.boot.context.properties.EnableConfigurationProperties; +import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Import; import lombok.extern.slf4j.Slf4j; @@ -24,13 +27,13 @@ @EnableConfigurationProperties(StorageProperties.class) public class MvcApp { -// @Bean -// CommandLineRunner init(StorageService storageService) { -// return (args) -> { -// storageService.deleteAll(); -// storageService.init(); -// }; -// } + @Bean + CommandLineRunner init(StorageService storageService) { + return (args) -> { + storageService.deleteAll(); + storageService.init(); + }; + } public static void main(String[] args) { diff --git a/framework/spring/spring-web/spring-mvc/src/main/java/org/laidu/learn/spring/mvc/conf/MvcAtuoConfiguration.java b/framework/spring/spring-web/spring-mvc/src/main/java/org/laidu/learn/spring/mvc/conf/MvcAtuoConfiguration.java index 91b1c83a4..4aedf3907 100644 --- a/framework/spring/spring-web/spring-mvc/src/main/java/org/laidu/learn/spring/mvc/conf/MvcAtuoConfiguration.java +++ b/framework/spring/spring-web/spring-mvc/src/main/java/org/laidu/learn/spring/mvc/conf/MvcAtuoConfiguration.java @@ -9,7 +9,11 @@ import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.format.FormatterRegistry; +import org.springframework.web.bind.annotation.RestController; +import org.springframework.web.method.HandlerTypePredicate; +import org.springframework.web.servlet.config.annotation.DefaultServletHandlerConfigurer; import org.springframework.web.servlet.config.annotation.InterceptorRegistry; +import org.springframework.web.servlet.config.annotation.PathMatchConfigurer; import org.springframework.web.servlet.config.annotation.WebMvcConfigurer; /** @@ -49,5 +53,18 @@ public void addFormatters(FormatterRegistry registry) { registry.addConverterFactory(new UniversalEnumConverterFactory()); } + @Override + public void configureDefaultServletHandling(DefaultServletHandlerConfigurer configurer) { + configurer.enable("defaultDispatcherServlet"); + } + + @Override + public void configurePathMatch(PathMatchConfigurer configurer) { + configurer.setUseSuffixPatternMatch(true) + .setUseTrailingSlashMatch(false) + .setUseRegisteredSuffixPatternMatch(true) + .addPathPrefix("/rest/api", + HandlerTypePredicate.forAnnotation(RestController.class)); + } } \ No newline at end of file diff --git a/framework/spring/spring-web/spring-mvc/src/main/java/org/laidu/learn/spring/mvc/controller/BaseController.java b/framework/spring/spring-web/spring-mvc/src/main/java/org/laidu/learn/spring/mvc/controller/BaseController.java new file mode 100644 index 000000000..0ef9bdd87 --- /dev/null +++ b/framework/spring/spring-web/spring-mvc/src/main/java/org/laidu/learn/spring/mvc/controller/BaseController.java @@ -0,0 +1,19 @@ +package org.laidu.learn.spring.mvc.controller; + +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import lombok.extern.slf4j.Slf4j; + +/** + * bash + * + * @author tiancai.zang + * @date 2019-04-15 22:53. + */ +@Slf4j +@RestController +@RequestMapping("/rest/api") +public class BaseController { + +} \ No newline at end of file diff --git a/framework/spring/spring-web/spring-mvc/src/main/java/org/laidu/learn/spring/mvc/controller/HomeController.java b/framework/spring/spring-web/spring-mvc/src/main/java/org/laidu/learn/spring/mvc/controller/HomeController.java index d5271ade8..55db1244a 100644 --- a/framework/spring/spring-web/spring-mvc/src/main/java/org/laidu/learn/spring/mvc/controller/HomeController.java +++ b/framework/spring/spring-web/spring-mvc/src/main/java/org/laidu/learn/spring/mvc/controller/HomeController.java @@ -1,6 +1,6 @@ package org.laidu.learn.spring.mvc.controller; -import lombok.extern.slf4j.Slf4j; +import java.util.Random; import org.laidu.learn.spring.mvc.model.Response; import org.laidu.learn.spring.mvc.service.HelloService; @@ -10,7 +10,7 @@ import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.RestController; -import java.util.Random; +import lombok.extern.slf4j.Slf4j; /** * home @@ -23,7 +23,7 @@ @Slf4j @RestController @RequestMapping("/") -public class HomeController { +public class HomeController extends BaseController{ @Autowired HelloService helloService; diff --git a/framework/spring/spring-web/spring-mvc/src/main/java/org/laidu/learn/spring/mvc/controller/ExceptionController.java b/framework/spring/spring-web/spring-mvc/src/main/java/org/laidu/learn/spring/mvc/controller/exception/ExceptionController.java similarity index 89% rename from framework/spring/spring-web/spring-mvc/src/main/java/org/laidu/learn/spring/mvc/controller/ExceptionController.java rename to framework/spring/spring-web/spring-mvc/src/main/java/org/laidu/learn/spring/mvc/controller/exception/ExceptionController.java index f41c2ea40..f8a2c4487 100644 --- a/framework/spring/spring-web/spring-mvc/src/main/java/org/laidu/learn/spring/mvc/controller/ExceptionController.java +++ b/framework/spring/spring-web/spring-mvc/src/main/java/org/laidu/learn/spring/mvc/controller/exception/ExceptionController.java @@ -1,5 +1,6 @@ -package org.laidu.learn.spring.mvc.controller; +package org.laidu.learn.spring.mvc.controller.exception; +import org.laidu.learn.spring.mvc.controller.BaseController; import org.laidu.learn.spring.mvc.exception.StorageException; import org.laidu.learn.spring.mvc.model.Response; import org.laidu.learn.spring.mvc.service.ExceptionService; @@ -19,7 +20,7 @@ @Slf4j @RestController @RequestMapping("/exception") -public class ExceptionController { +public class ExceptionController extends BaseController { @Autowired private ExceptionService exceptionService; diff --git a/framework/thirdparty/pom.xml b/framework/thirdparty/pom.xml index 08b980474..6656784c5 100644 --- a/framework/thirdparty/pom.xml +++ b/framework/thirdparty/pom.xml @@ -17,7 +17,7 @@ 3.1.0 - 2.0.5.RELEASE + 2.1.4.RELEASE diff --git a/language-advance/concurrent/src/main/java/org/laidu/learn/concurrent/problem/DeadLockDemo.java b/language-advance/concurrent/src/main/java/org/laidu/learn/concurrent/problem/DeadLockDemo.java index d520f83d3..d35fb28d6 100644 --- a/language-advance/concurrent/src/main/java/org/laidu/learn/concurrent/problem/DeadLockDemo.java +++ b/language-advance/concurrent/src/main/java/org/laidu/learn/concurrent/problem/DeadLockDemo.java @@ -1,10 +1,10 @@ package org.laidu.learn.concurrent.problem; +import java.util.concurrent.locks.ReentrantLock; + import jodd.util.ThreadUtil; import lombok.AllArgsConstructor; -import java.util.concurrent.locks.ReentrantLock; - /** * java 实现死锁的方式 * @@ -59,6 +59,7 @@ public void run() { lock.lock(); ThreadUtil.sleep(300); System.out.println(Thread.currentThread().getName() + "已获取 lock 锁"); +// lock.unlock(); } } diff --git a/production-component/pom.xml b/production-component/pom.xml index f16be782f..2f4dd7abd 100644 --- a/production-component/pom.xml +++ b/production-component/pom.xml @@ -20,7 +20,7 @@ - 2.0.5.RELEASE + 2.1.4.RELEASE 3.1.1 \ No newline at end of file From 3bd3ac87cbb1de1b821b82ad6000d9716aa7401a Mon Sep 17 00:00:00 2001 From: ztc Date: Tue, 23 Apr 2019 23:10:45 +0800 Subject: [PATCH 270/417] . --- .../src/main/resources/application.yml | 14 +++++++------- .../src/main/resources/db/schema.sql | 15 +++++++++------ 2 files changed, 16 insertions(+), 13 deletions(-) diff --git a/framework/spring/spring-data/spring-mybatis/src/main/resources/application.yml b/framework/spring/spring-data/spring-mybatis/src/main/resources/application.yml index 1596c0c1e..3af5b11d6 100644 --- a/framework/spring/spring-data/spring-mybatis/src/main/resources/application.yml +++ b/framework/spring/spring-data/spring-mybatis/src/main/resources/application.yml @@ -17,9 +17,14 @@ pagehelper: spring: datasource: data: classpath:db/data.sql - driver-class-name: org.h2.Driver + schema: classpath:db/schema.sql + type: com.alibaba.druid.pool.DruidDataSource +# driver-class-name: org.h2.Driver druid: + url: jdbc:mysql://local-dev:3306/druid_demo?useUnicode=true&characterEncoding=utf8 connectionProperties: druid.stat.mergeSql=true;druid.stat.slowSqlMillis=5000 + username: root + password: root filter: slf4j: enabled: true @@ -41,7 +46,6 @@ spring: prettyFormat: false uppCase: true - stat: db-type: mysql log-slow-sql: true @@ -63,11 +67,7 @@ spring: timeBetweenEvictionRunsMillis: 60000 useGlobalDataSourceStat: true validationQuery: SELECT 1 - password: '' - schema: classpath:db/schema.sql - type: com.alibaba.druid.pool.DruidDataSource - url: jdbc:h2:mem:default - username: sa + h2: console: enabled: true diff --git a/framework/spring/spring-data/spring-mybatis/src/main/resources/db/schema.sql b/framework/spring/spring-data/spring-mybatis/src/main/resources/db/schema.sql index e49ab1bff..6289cc4c6 100644 --- a/framework/spring/spring-data/spring-mybatis/src/main/resources/db/schema.sql +++ b/framework/spring/spring-data/spring-mybatis/src/main/resources/db/schema.sql @@ -1,6 +1,9 @@ - -create table app_user ( - id bigint auto_increment, - username varchar(80) null, - id_card varchar(80) null -); \ No newline at end of file +CREATE TABLE druid_demo.app_user ( + id BIGINT NOT NULL AUTO_INCREMENT, + username varchar(100) NULL, + id_card varchar(100) NULL, + CONSTRAINT app_user_PK PRIMARY KEY (id) +) +ENGINE=InnoDB +DEFAULT CHARSET=utf8mb4 +COLLATE=utf8mb4_general_ci; From a8c4dd7009ba74f567eb821b41c2532ab962bec6 Mon Sep 17 00:00:00 2001 From: ztc Date: Mon, 13 May 2019 23:31:19 +0800 Subject: [PATCH 271/417] remove druid cp --- .../spring-boot/spring-boot-sso/pom.xml | 1 + .../spring/spring-data/spring-mybatis/pom.xml | 20 +- .../mybatis/config/DruidWebMonitorConfig.java | 222 +++++++++--------- .../src/main/resources/application.yml | 63 +---- .../main/resources/config/logback-spring.xml | 2 +- .../src/main/resources/db/schema.sql | 3 +- 6 files changed, 139 insertions(+), 172 deletions(-) diff --git a/framework/spring/spring-boot/spring-boot-sso/pom.xml b/framework/spring/spring-boot/spring-boot-sso/pom.xml index 5d00500ab..513e01d69 100644 --- a/framework/spring/spring-boot/spring-boot-sso/pom.xml +++ b/framework/spring/spring-boot/spring-boot-sso/pom.xml @@ -29,6 +29,7 @@ org.thymeleaf.extras thymeleaf-extras-springsecurity4 + 3.0.4.RELEASE org.springframework.boot diff --git a/framework/spring/spring-data/spring-mybatis/pom.xml b/framework/spring/spring-data/spring-mybatis/pom.xml index 902b64813..746a2a2d8 100644 --- a/framework/spring/spring-data/spring-mybatis/pom.xml +++ b/framework/spring/spring-data/spring-mybatis/pom.xml @@ -19,10 +19,12 @@ mysql-connector-java runtime - - com.alibaba - druid-spring-boot-starter - + + + + + + org.mybatis.spring.boot mybatis-spring-boot-starter @@ -62,11 +64,11 @@ spring-boot-starter-web-services - - com.h2database - h2 - runtime - + + + + + diff --git a/framework/spring/spring-data/spring-mybatis/src/main/java/org/laidu/learn/mybatis/config/DruidWebMonitorConfig.java b/framework/spring/spring-data/spring-mybatis/src/main/java/org/laidu/learn/mybatis/config/DruidWebMonitorConfig.java index 523eeafb9..08e5ffb47 100644 --- a/framework/spring/spring-data/spring-mybatis/src/main/java/org/laidu/learn/mybatis/config/DruidWebMonitorConfig.java +++ b/framework/spring/spring-data/spring-mybatis/src/main/java/org/laidu/learn/mybatis/config/DruidWebMonitorConfig.java @@ -1,111 +1,111 @@ -package org.laidu.learn.mybatis.config; - -import java.io.IOException; -import java.util.Map; - -import javax.servlet.Filter; -import javax.servlet.FilterChain; -import javax.servlet.FilterConfig; -import javax.servlet.ServletException; -import javax.servlet.ServletRequest; -import javax.servlet.ServletResponse; - -import org.springframework.boot.autoconfigure.AutoConfigureAfter; -import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty; -import org.springframework.boot.autoconfigure.condition.ConditionalOnWebApplication; -import org.springframework.boot.web.servlet.FilterRegistrationBean; -import org.springframework.boot.web.servlet.ServletRegistrationBean; -import org.springframework.context.annotation.Bean; -import org.springframework.context.annotation.Configuration; - -import com.alibaba.druid.spring.boot.autoconfigure.DruidDataSourceAutoConfigure; -import com.alibaba.druid.spring.boot.autoconfigure.properties.DruidStatProperties; -import com.alibaba.druid.support.http.StatViewServlet; -import com.alibaba.druid.support.http.WebStatFilter; -import com.alibaba.druid.util.Utils; -import com.google.common.collect.Maps; - -import lombok.extern.slf4j.Slf4j; - -/** - * durid config - *

                    - * Created by tiancai.zang - * on 2018-04-22 16:22. - * @author laidu - */ -@Slf4j -@Configuration -@ConditionalOnWebApplication -@AutoConfigureAfter(DruidDataSourceAutoConfigure.class) -@ConditionalOnProperty(name = "spring.datasource.druid.stat-view-servlet.enabled", havingValue = "true", - matchIfMissing = false) -public class DruidWebMonitorConfig { - - @Bean - public ServletRegistrationBean druidServlet() { - log.info("init Druid Servlet Configuration "); - ServletRegistrationBean servletRegistrationBean = new ServletRegistrationBean(); - servletRegistrationBean.setServlet(new StatViewServlet()); - servletRegistrationBean.addUrlMappings("/druid/*"); - Map initParameters = Maps.newHashMap(); - initParameters.put("loginUsername", "admin"); - initParameters.put("loginPassword", "admin"); - // 禁用HTML页面上的“Reset All”功能 - initParameters.put("resetEnable", "false"); - // IP白名单 (没有配置或者为空,则允许所有访问) - initParameters.put("allow", ""); - //initParameters.put("deny", "192.168.20.38");// IP黑名单 (存在共同时,deny优先于allow) - servletRegistrationBean.setInitParameters(initParameters); - return servletRegistrationBean; - } - - @Bean - public FilterRegistrationBean filterRegistrationBean() { - FilterRegistrationBean filterRegistrationBean = new FilterRegistrationBean(); - filterRegistrationBean.setFilter(new WebStatFilter()); - filterRegistrationBean.addUrlPatterns("/*"); - filterRegistrationBean.addInitParameter("exclusions", "*.js,*.gif,*.jpg,*.png,*.css,*.ico,/druid/*"); - return filterRegistrationBean; - } - - - @Bean - public FilterRegistrationBean fuckDruidAdFilterRegistrationBean(DruidStatProperties properties) { - // 获取web监控页面的参数 - DruidStatProperties.StatViewServlet config = properties.getStatViewServlet(); - // 提取common.js的配置路径 - String pattern = config.getUrlPattern() != null ? config.getUrlPattern() : "/druid/*"; - String commonJsPattern = pattern.replaceAll("\\*", "js/common.js"); - - final String filePath = "js/common.js"; - - Filter filter = new Filter() { - @Override - public void init(FilterConfig filterConfig) throws ServletException { - } - - @Override - public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException { - chain.doFilter(request, response); - // 重置缓冲区,响应头不会被重置 - response.resetBuffer(); - // 获取common.js - String text = Utils.readFromResource(filePath); - // 正则替换banner - text = text.replaceAll("
                    ", ""); - response.getWriter().write(text); - } - - @Override - public void destroy() { - } - }; - - FilterRegistrationBean registrationBean = new FilterRegistrationBean(); - registrationBean.setFilter(filter); - registrationBean.addUrlPatterns(commonJsPattern); - return registrationBean; - } - -} \ No newline at end of file +//package org.laidu.learn.mybatis.config; +// +//import java.io.IOException; +//import java.util.Map; +// +//import javax.servlet.Filter; +//import javax.servlet.FilterChain; +//import javax.servlet.FilterConfig; +//import javax.servlet.ServletException; +//import javax.servlet.ServletRequest; +//import javax.servlet.ServletResponse; +// +//import org.springframework.boot.autoconfigure.AutoConfigureAfter; +//import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty; +//import org.springframework.boot.autoconfigure.condition.ConditionalOnWebApplication; +//import org.springframework.boot.web.servlet.FilterRegistrationBean; +//import org.springframework.boot.web.servlet.ServletRegistrationBean; +//import org.springframework.context.annotation.Bean; +//import org.springframework.context.annotation.Configuration; +// +//import com.alibaba.druid.spring.boot.autoconfigure.DruidDataSourceAutoConfigure; +//import com.alibaba.druid.spring.boot.autoconfigure.properties.DruidStatProperties; +//import com.alibaba.druid.support.http.StatViewServlet; +//import com.alibaba.druid.support.http.WebStatFilter; +//import com.alibaba.druid.util.Utils; +//import com.google.common.collect.Maps; +// +//import lombok.extern.slf4j.Slf4j; +// +///** +// * durid config +// *

                    +// * Created by tiancai.zang +// * on 2018-04-22 16:22. +// * @author laidu +// */ +//@Slf4j +//@Configuration +//@ConditionalOnWebApplication +//@AutoConfigureAfter(DruidDataSourceAutoConfigure.class) +//@ConditionalOnProperty(name = "spring.datasource.druid.stat-view-servlet.enabled", havingValue = "true", +// matchIfMissing = false) +//public class DruidWebMonitorConfig { +// +// @Bean +// public ServletRegistrationBean druidServlet() { +// log.info("init Druid Servlet Configuration "); +// ServletRegistrationBean servletRegistrationBean = new ServletRegistrationBean(); +// servletRegistrationBean.setServlet(new StatViewServlet()); +// servletRegistrationBean.addUrlMappings("/druid/*"); +// Map initParameters = Maps.newHashMap(); +// initParameters.put("loginUsername", "admin"); +// initParameters.put("loginPassword", "admin"); +// // 禁用HTML页面上的“Reset All”功能 +// initParameters.put("resetEnable", "false"); +// // IP白名单 (没有配置或者为空,则允许所有访问) +// initParameters.put("allow", ""); +// //initParameters.put("deny", "192.168.20.38");// IP黑名单 (存在共同时,deny优先于allow) +// servletRegistrationBean.setInitParameters(initParameters); +// return servletRegistrationBean; +// } +// +// @Bean +// public FilterRegistrationBean filterRegistrationBean() { +// FilterRegistrationBean filterRegistrationBean = new FilterRegistrationBean(); +// filterRegistrationBean.setFilter(new WebStatFilter()); +// filterRegistrationBean.addUrlPatterns("/*"); +// filterRegistrationBean.addInitParameter("exclusions", "*.js,*.gif,*.jpg,*.png,*.css,*.ico,/druid/*"); +// return filterRegistrationBean; +// } +// +// +// @Bean +// public FilterRegistrationBean fuckDruidAdFilterRegistrationBean(DruidStatProperties properties) { +// // 获取web监控页面的参数 +// DruidStatProperties.StatViewServlet config = properties.getStatViewServlet(); +// // 提取common.js的配置路径 +// String pattern = config.getUrlPattern() != null ? config.getUrlPattern() : "/druid/*"; +// String commonJsPattern = pattern.replaceAll("\\*", "js/common.js"); +// +// final String filePath = "js/common.js"; +// +// Filter filter = new Filter() { +// @Override +// public void init(FilterConfig filterConfig) throws ServletException { +// } +// +// @Override +// public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException { +// chain.doFilter(request, response); +// // 重置缓冲区,响应头不会被重置 +// response.resetBuffer(); +// // 获取common.js +// String text = Utils.readFromResource(filePath); +// // 正则替换banner +// text = text.replaceAll("
                    ", ""); +// response.getWriter().write(text); +// } +// +// @Override +// public void destroy() { +// } +// }; +// +// FilterRegistrationBean registrationBean = new FilterRegistrationBean(); +// registrationBean.setFilter(filter); +// registrationBean.addUrlPatterns(commonJsPattern); +// return registrationBean; +// } +// +//} \ No newline at end of file diff --git a/framework/spring/spring-data/spring-mybatis/src/main/resources/application.yml b/framework/spring/spring-data/spring-mybatis/src/main/resources/application.yml index 3af5b11d6..70848c015 100644 --- a/framework/spring/spring-data/spring-mybatis/src/main/resources/application.yml +++ b/framework/spring/spring-data/spring-mybatis/src/main/resources/application.yml @@ -18,56 +18,19 @@ spring: datasource: data: classpath:db/data.sql schema: classpath:db/schema.sql - type: com.alibaba.druid.pool.DruidDataSource -# driver-class-name: org.h2.Driver - druid: - url: jdbc:mysql://local-dev:3306/druid_demo?useUnicode=true&characterEncoding=utf8 - connectionProperties: druid.stat.mergeSql=true;druid.stat.slowSqlMillis=5000 - username: root - password: root - filter: - slf4j: - enabled: true - connection-log-enabled: false - statement-log-error-enabled: true - statement-executable-sql-log-enable: true - statement-execute-after-log-enabled: true - statement-execute-batch-after-log-enabled: true - statement-execute-query-after-log-enabled: true - statement-execute-update-after-log-enabled: true - statement-create-after-log-enabled: false - statement-parameter-set-log-enabled: false - statement-prepare-after-log-enabled: false - statement-prepare-call-after-log-enabled: false - statement-sql-pretty-format: false - statement-parameter-clear-log-enable: false - statement-sql-format-option: - parameterized: false - prettyFormat: false - uppCase: true - - stat: - db-type: mysql - log-slow-sql: true - merge-sql: true - slow-sql-millis: 2000 - - filters: stat,mergeStat,wall,slf4j - initialSize: 5 - log-different-thread: true - maxActive: 20 - maxPoolPreparedStatementPerConnectionSize: 20 - maxWait: 60000 - minEvictableIdleTimeMillis: 300000 - minIdle: 5 - poolPreparedStatements: true - testOnBorrow: false - testOnReturn: false - testWhileIdle: true - timeBetweenEvictionRunsMillis: 60000 - useGlobalDataSourceStat: true - validationQuery: SELECT 1 - + url: jdbc:mysql://local-dev:3306/druid_demo?useUnicode=true&characterEncoding=utf8&useSSL=false + username: root + password: root + driver-class-name: com.mysql.jdbc.Driver + hikari: + minimum-idle: 5 + maximum-pool-size: 15 + auto-commit: true + idle-timeout: 10000 + pool-name: HikariCP_Demo + max-lifetime: 30000 + connection-test-query: select 1 + connection-timeout: 1000 h2: console: enabled: true diff --git a/framework/spring/spring-data/spring-mybatis/src/main/resources/config/logback-spring.xml b/framework/spring/spring-data/spring-mybatis/src/main/resources/config/logback-spring.xml index e4f8911dd..e0d2a0dde 100644 --- a/framework/spring/spring-data/spring-mybatis/src/main/resources/config/logback-spring.xml +++ b/framework/spring/spring-data/spring-mybatis/src/main/resources/config/logback-spring.xml @@ -127,7 +127,7 @@ See here for more details: http://gordondickens.com/wordpress/2013/03/27/sawing- - + diff --git a/framework/spring/spring-data/spring-mybatis/src/main/resources/db/schema.sql b/framework/spring/spring-data/spring-mybatis/src/main/resources/db/schema.sql index 6289cc4c6..5f6992205 100644 --- a/framework/spring/spring-data/spring-mybatis/src/main/resources/db/schema.sql +++ b/framework/spring/spring-data/spring-mybatis/src/main/resources/db/schema.sql @@ -1,4 +1,5 @@ -CREATE TABLE druid_demo.app_user ( +DROP TABLE IF EXISTS app_user; +CREATE TABLE app_user ( id BIGINT NOT NULL AUTO_INCREMENT, username varchar(100) NULL, id_card varchar(100) NULL, From 9d3b0b83be31f5287f716e04879770460a7019b1 Mon Sep 17 00:00:00 2001 From: ztc Date: Mon, 13 May 2019 23:31:19 +0800 Subject: [PATCH 272/417] C remove druid cp --- .../spring-boot/spring-boot-sso/pom.xml | 1 + .../spring/spring-data/spring-mybatis/pom.xml | 20 +- .../mybatis/config/DruidWebMonitorConfig.java | 222 +++++++++--------- .../src/main/resources/application.yml | 63 +---- .../main/resources/config/logback-spring.xml | 2 +- .../src/main/resources/db/schema.sql | 3 +- 6 files changed, 139 insertions(+), 172 deletions(-) diff --git a/framework/spring/spring-boot/spring-boot-sso/pom.xml b/framework/spring/spring-boot/spring-boot-sso/pom.xml index 5d00500ab..513e01d69 100644 --- a/framework/spring/spring-boot/spring-boot-sso/pom.xml +++ b/framework/spring/spring-boot/spring-boot-sso/pom.xml @@ -29,6 +29,7 @@ org.thymeleaf.extras thymeleaf-extras-springsecurity4 + 3.0.4.RELEASE org.springframework.boot diff --git a/framework/spring/spring-data/spring-mybatis/pom.xml b/framework/spring/spring-data/spring-mybatis/pom.xml index 902b64813..746a2a2d8 100644 --- a/framework/spring/spring-data/spring-mybatis/pom.xml +++ b/framework/spring/spring-data/spring-mybatis/pom.xml @@ -19,10 +19,12 @@ mysql-connector-java runtime - - com.alibaba - druid-spring-boot-starter - + + + + + + org.mybatis.spring.boot mybatis-spring-boot-starter @@ -62,11 +64,11 @@ spring-boot-starter-web-services - - com.h2database - h2 - runtime - + + + + + diff --git a/framework/spring/spring-data/spring-mybatis/src/main/java/org/laidu/learn/mybatis/config/DruidWebMonitorConfig.java b/framework/spring/spring-data/spring-mybatis/src/main/java/org/laidu/learn/mybatis/config/DruidWebMonitorConfig.java index 523eeafb9..08e5ffb47 100644 --- a/framework/spring/spring-data/spring-mybatis/src/main/java/org/laidu/learn/mybatis/config/DruidWebMonitorConfig.java +++ b/framework/spring/spring-data/spring-mybatis/src/main/java/org/laidu/learn/mybatis/config/DruidWebMonitorConfig.java @@ -1,111 +1,111 @@ -package org.laidu.learn.mybatis.config; - -import java.io.IOException; -import java.util.Map; - -import javax.servlet.Filter; -import javax.servlet.FilterChain; -import javax.servlet.FilterConfig; -import javax.servlet.ServletException; -import javax.servlet.ServletRequest; -import javax.servlet.ServletResponse; - -import org.springframework.boot.autoconfigure.AutoConfigureAfter; -import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty; -import org.springframework.boot.autoconfigure.condition.ConditionalOnWebApplication; -import org.springframework.boot.web.servlet.FilterRegistrationBean; -import org.springframework.boot.web.servlet.ServletRegistrationBean; -import org.springframework.context.annotation.Bean; -import org.springframework.context.annotation.Configuration; - -import com.alibaba.druid.spring.boot.autoconfigure.DruidDataSourceAutoConfigure; -import com.alibaba.druid.spring.boot.autoconfigure.properties.DruidStatProperties; -import com.alibaba.druid.support.http.StatViewServlet; -import com.alibaba.druid.support.http.WebStatFilter; -import com.alibaba.druid.util.Utils; -import com.google.common.collect.Maps; - -import lombok.extern.slf4j.Slf4j; - -/** - * durid config - *

                    - * Created by tiancai.zang - * on 2018-04-22 16:22. - * @author laidu - */ -@Slf4j -@Configuration -@ConditionalOnWebApplication -@AutoConfigureAfter(DruidDataSourceAutoConfigure.class) -@ConditionalOnProperty(name = "spring.datasource.druid.stat-view-servlet.enabled", havingValue = "true", - matchIfMissing = false) -public class DruidWebMonitorConfig { - - @Bean - public ServletRegistrationBean druidServlet() { - log.info("init Druid Servlet Configuration "); - ServletRegistrationBean servletRegistrationBean = new ServletRegistrationBean(); - servletRegistrationBean.setServlet(new StatViewServlet()); - servletRegistrationBean.addUrlMappings("/druid/*"); - Map initParameters = Maps.newHashMap(); - initParameters.put("loginUsername", "admin"); - initParameters.put("loginPassword", "admin"); - // 禁用HTML页面上的“Reset All”功能 - initParameters.put("resetEnable", "false"); - // IP白名单 (没有配置或者为空,则允许所有访问) - initParameters.put("allow", ""); - //initParameters.put("deny", "192.168.20.38");// IP黑名单 (存在共同时,deny优先于allow) - servletRegistrationBean.setInitParameters(initParameters); - return servletRegistrationBean; - } - - @Bean - public FilterRegistrationBean filterRegistrationBean() { - FilterRegistrationBean filterRegistrationBean = new FilterRegistrationBean(); - filterRegistrationBean.setFilter(new WebStatFilter()); - filterRegistrationBean.addUrlPatterns("/*"); - filterRegistrationBean.addInitParameter("exclusions", "*.js,*.gif,*.jpg,*.png,*.css,*.ico,/druid/*"); - return filterRegistrationBean; - } - - - @Bean - public FilterRegistrationBean fuckDruidAdFilterRegistrationBean(DruidStatProperties properties) { - // 获取web监控页面的参数 - DruidStatProperties.StatViewServlet config = properties.getStatViewServlet(); - // 提取common.js的配置路径 - String pattern = config.getUrlPattern() != null ? config.getUrlPattern() : "/druid/*"; - String commonJsPattern = pattern.replaceAll("\\*", "js/common.js"); - - final String filePath = "js/common.js"; - - Filter filter = new Filter() { - @Override - public void init(FilterConfig filterConfig) throws ServletException { - } - - @Override - public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException { - chain.doFilter(request, response); - // 重置缓冲区,响应头不会被重置 - response.resetBuffer(); - // 获取common.js - String text = Utils.readFromResource(filePath); - // 正则替换banner - text = text.replaceAll("
                    ", ""); - response.getWriter().write(text); - } - - @Override - public void destroy() { - } - }; - - FilterRegistrationBean registrationBean = new FilterRegistrationBean(); - registrationBean.setFilter(filter); - registrationBean.addUrlPatterns(commonJsPattern); - return registrationBean; - } - -} \ No newline at end of file +//package org.laidu.learn.mybatis.config; +// +//import java.io.IOException; +//import java.util.Map; +// +//import javax.servlet.Filter; +//import javax.servlet.FilterChain; +//import javax.servlet.FilterConfig; +//import javax.servlet.ServletException; +//import javax.servlet.ServletRequest; +//import javax.servlet.ServletResponse; +// +//import org.springframework.boot.autoconfigure.AutoConfigureAfter; +//import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty; +//import org.springframework.boot.autoconfigure.condition.ConditionalOnWebApplication; +//import org.springframework.boot.web.servlet.FilterRegistrationBean; +//import org.springframework.boot.web.servlet.ServletRegistrationBean; +//import org.springframework.context.annotation.Bean; +//import org.springframework.context.annotation.Configuration; +// +//import com.alibaba.druid.spring.boot.autoconfigure.DruidDataSourceAutoConfigure; +//import com.alibaba.druid.spring.boot.autoconfigure.properties.DruidStatProperties; +//import com.alibaba.druid.support.http.StatViewServlet; +//import com.alibaba.druid.support.http.WebStatFilter; +//import com.alibaba.druid.util.Utils; +//import com.google.common.collect.Maps; +// +//import lombok.extern.slf4j.Slf4j; +// +///** +// * durid config +// *

                    +// * Created by tiancai.zang +// * on 2018-04-22 16:22. +// * @author laidu +// */ +//@Slf4j +//@Configuration +//@ConditionalOnWebApplication +//@AutoConfigureAfter(DruidDataSourceAutoConfigure.class) +//@ConditionalOnProperty(name = "spring.datasource.druid.stat-view-servlet.enabled", havingValue = "true", +// matchIfMissing = false) +//public class DruidWebMonitorConfig { +// +// @Bean +// public ServletRegistrationBean druidServlet() { +// log.info("init Druid Servlet Configuration "); +// ServletRegistrationBean servletRegistrationBean = new ServletRegistrationBean(); +// servletRegistrationBean.setServlet(new StatViewServlet()); +// servletRegistrationBean.addUrlMappings("/druid/*"); +// Map initParameters = Maps.newHashMap(); +// initParameters.put("loginUsername", "admin"); +// initParameters.put("loginPassword", "admin"); +// // 禁用HTML页面上的“Reset All”功能 +// initParameters.put("resetEnable", "false"); +// // IP白名单 (没有配置或者为空,则允许所有访问) +// initParameters.put("allow", ""); +// //initParameters.put("deny", "192.168.20.38");// IP黑名单 (存在共同时,deny优先于allow) +// servletRegistrationBean.setInitParameters(initParameters); +// return servletRegistrationBean; +// } +// +// @Bean +// public FilterRegistrationBean filterRegistrationBean() { +// FilterRegistrationBean filterRegistrationBean = new FilterRegistrationBean(); +// filterRegistrationBean.setFilter(new WebStatFilter()); +// filterRegistrationBean.addUrlPatterns("/*"); +// filterRegistrationBean.addInitParameter("exclusions", "*.js,*.gif,*.jpg,*.png,*.css,*.ico,/druid/*"); +// return filterRegistrationBean; +// } +// +// +// @Bean +// public FilterRegistrationBean fuckDruidAdFilterRegistrationBean(DruidStatProperties properties) { +// // 获取web监控页面的参数 +// DruidStatProperties.StatViewServlet config = properties.getStatViewServlet(); +// // 提取common.js的配置路径 +// String pattern = config.getUrlPattern() != null ? config.getUrlPattern() : "/druid/*"; +// String commonJsPattern = pattern.replaceAll("\\*", "js/common.js"); +// +// final String filePath = "js/common.js"; +// +// Filter filter = new Filter() { +// @Override +// public void init(FilterConfig filterConfig) throws ServletException { +// } +// +// @Override +// public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException { +// chain.doFilter(request, response); +// // 重置缓冲区,响应头不会被重置 +// response.resetBuffer(); +// // 获取common.js +// String text = Utils.readFromResource(filePath); +// // 正则替换banner +// text = text.replaceAll("
                    ", ""); +// response.getWriter().write(text); +// } +// +// @Override +// public void destroy() { +// } +// }; +// +// FilterRegistrationBean registrationBean = new FilterRegistrationBean(); +// registrationBean.setFilter(filter); +// registrationBean.addUrlPatterns(commonJsPattern); +// return registrationBean; +// } +// +//} \ No newline at end of file diff --git a/framework/spring/spring-data/spring-mybatis/src/main/resources/application.yml b/framework/spring/spring-data/spring-mybatis/src/main/resources/application.yml index 3af5b11d6..70848c015 100644 --- a/framework/spring/spring-data/spring-mybatis/src/main/resources/application.yml +++ b/framework/spring/spring-data/spring-mybatis/src/main/resources/application.yml @@ -18,56 +18,19 @@ spring: datasource: data: classpath:db/data.sql schema: classpath:db/schema.sql - type: com.alibaba.druid.pool.DruidDataSource -# driver-class-name: org.h2.Driver - druid: - url: jdbc:mysql://local-dev:3306/druid_demo?useUnicode=true&characterEncoding=utf8 - connectionProperties: druid.stat.mergeSql=true;druid.stat.slowSqlMillis=5000 - username: root - password: root - filter: - slf4j: - enabled: true - connection-log-enabled: false - statement-log-error-enabled: true - statement-executable-sql-log-enable: true - statement-execute-after-log-enabled: true - statement-execute-batch-after-log-enabled: true - statement-execute-query-after-log-enabled: true - statement-execute-update-after-log-enabled: true - statement-create-after-log-enabled: false - statement-parameter-set-log-enabled: false - statement-prepare-after-log-enabled: false - statement-prepare-call-after-log-enabled: false - statement-sql-pretty-format: false - statement-parameter-clear-log-enable: false - statement-sql-format-option: - parameterized: false - prettyFormat: false - uppCase: true - - stat: - db-type: mysql - log-slow-sql: true - merge-sql: true - slow-sql-millis: 2000 - - filters: stat,mergeStat,wall,slf4j - initialSize: 5 - log-different-thread: true - maxActive: 20 - maxPoolPreparedStatementPerConnectionSize: 20 - maxWait: 60000 - minEvictableIdleTimeMillis: 300000 - minIdle: 5 - poolPreparedStatements: true - testOnBorrow: false - testOnReturn: false - testWhileIdle: true - timeBetweenEvictionRunsMillis: 60000 - useGlobalDataSourceStat: true - validationQuery: SELECT 1 - + url: jdbc:mysql://local-dev:3306/druid_demo?useUnicode=true&characterEncoding=utf8&useSSL=false + username: root + password: root + driver-class-name: com.mysql.jdbc.Driver + hikari: + minimum-idle: 5 + maximum-pool-size: 15 + auto-commit: true + idle-timeout: 10000 + pool-name: HikariCP_Demo + max-lifetime: 30000 + connection-test-query: select 1 + connection-timeout: 1000 h2: console: enabled: true diff --git a/framework/spring/spring-data/spring-mybatis/src/main/resources/config/logback-spring.xml b/framework/spring/spring-data/spring-mybatis/src/main/resources/config/logback-spring.xml index e4f8911dd..e0d2a0dde 100644 --- a/framework/spring/spring-data/spring-mybatis/src/main/resources/config/logback-spring.xml +++ b/framework/spring/spring-data/spring-mybatis/src/main/resources/config/logback-spring.xml @@ -127,7 +127,7 @@ See here for more details: http://gordondickens.com/wordpress/2013/03/27/sawing- - + diff --git a/framework/spring/spring-data/spring-mybatis/src/main/resources/db/schema.sql b/framework/spring/spring-data/spring-mybatis/src/main/resources/db/schema.sql index 6289cc4c6..5f6992205 100644 --- a/framework/spring/spring-data/spring-mybatis/src/main/resources/db/schema.sql +++ b/framework/spring/spring-data/spring-mybatis/src/main/resources/db/schema.sql @@ -1,4 +1,5 @@ -CREATE TABLE druid_demo.app_user ( +DROP TABLE IF EXISTS app_user; +CREATE TABLE app_user ( id BIGINT NOT NULL AUTO_INCREMENT, username varchar(100) NULL, id_card varchar(100) NULL, From b9caab8f30608023591af8122a5d349379adc1c0 Mon Sep 17 00:00:00 2001 From: laidu Date: Thu, 23 May 2019 11:49:37 +0800 Subject: [PATCH 273/417] sync --- .../main/java/org/laidu/learn/mybatis/MybatisApp.java | 4 +++- .../learn/mybatis/controller/UserInfoController.java | 10 ++++++++++ .../spring-mybatis/src/main/resources/application.yml | 7 ++----- 3 files changed, 15 insertions(+), 6 deletions(-) diff --git a/framework/spring/spring-data/spring-mybatis/src/main/java/org/laidu/learn/mybatis/MybatisApp.java b/framework/spring/spring-data/spring-mybatis/src/main/java/org/laidu/learn/mybatis/MybatisApp.java index 98be69c1b..ee5dd3565 100644 --- a/framework/spring/spring-data/spring-mybatis/src/main/java/org/laidu/learn/mybatis/MybatisApp.java +++ b/framework/spring/spring-data/spring-mybatis/src/main/java/org/laidu/learn/mybatis/MybatisApp.java @@ -11,7 +11,9 @@ /** * org.laidu.learn.amqp.Application *

                    - * Created by tiancai.zang on 2017-11-28 16:35. + * + * @author tiancai.zang + * @date 2017-11-28 16:35 */ @MapperScan("org.laidu.learn.mybatis.mapper") @SpringBootApplication diff --git a/framework/spring/spring-data/spring-mybatis/src/main/java/org/laidu/learn/mybatis/controller/UserInfoController.java b/framework/spring/spring-data/spring-mybatis/src/main/java/org/laidu/learn/mybatis/controller/UserInfoController.java index 5aded4d78..88ca2b464 100644 --- a/framework/spring/spring-data/spring-mybatis/src/main/java/org/laidu/learn/mybatis/controller/UserInfoController.java +++ b/framework/spring/spring-data/spring-mybatis/src/main/java/org/laidu/learn/mybatis/controller/UserInfoController.java @@ -47,6 +47,7 @@ public AppUser queryById(@PathVariable("id") Long id){ } @PostMapping("/add") + @Deprecated @Transactional(rollbackFor = Exception.class) public AppUser add(@RequestBody AppUser user){ @@ -55,6 +56,15 @@ public AppUser add(@RequestBody AppUser user){ return user; } + @PostMapping("/add/v2") + @Transactional(rollbackFor = Exception.class) + public AppUser add2(@RequestBody AppUser user){ + + userMapper.insert(user); + + return user; + } + @GetMapping("/query/{index}/{size}") public List queryById(@PathVariable("index") int index, @PathVariable("size") int size){ diff --git a/framework/spring/spring-data/spring-mybatis/src/main/resources/application.yml b/framework/spring/spring-data/spring-mybatis/src/main/resources/application.yml index 1596c0c1e..552bc6da8 100644 --- a/framework/spring/spring-data/spring-mybatis/src/main/resources/application.yml +++ b/framework/spring/spring-data/spring-mybatis/src/main/resources/application.yml @@ -27,9 +27,7 @@ spring: statement-log-error-enabled: true statement-executable-sql-log-enable: true statement-execute-after-log-enabled: true - statement-execute-batch-after-log-enabled: true - statement-execute-query-after-log-enabled: true - statement-execute-update-after-log-enabled: true + statement-close-after-log-enabled: false statement-create-after-log-enabled: false statement-parameter-set-log-enabled: false statement-prepare-after-log-enabled: false @@ -41,7 +39,6 @@ spring: prettyFormat: false uppCase: true - stat: db-type: mysql log-slow-sql: true @@ -60,9 +57,9 @@ spring: testOnBorrow: false testOnReturn: false testWhileIdle: true + validationQuery: SELECT 1 timeBetweenEvictionRunsMillis: 60000 useGlobalDataSourceStat: true - validationQuery: SELECT 1 password: '' schema: classpath:db/schema.sql type: com.alibaba.druid.pool.DruidDataSource From e1cd0a4c850d58c3ab21c1e74871bc37c290b95e Mon Sep 17 00:00:00 2001 From: laidu Date: Fri, 24 May 2019 22:16:29 +0800 Subject: [PATCH 274/417] sync --- _config.yml | 1 - .../algorithm/bloom/BloomFilterDemo.java | 14 ++++--- algorithm/src/site/markdown/index.md | 3 ++ framework/web/pom.xml | 1 + framework/web/src/site/markdown/index.md | 18 +++++++++ .../org/laidu/learn/tomcat/TomcatApp.java | 26 ++++++------- framework/web/undertow/pom.xml | 38 +++++++++++++++++++ .../org/laidu/learn/undertow/UnderrowApp.java | 29 ++++++++++++++ .../web/undertow/src/site/mardown/index.md | 2 + 9 files changed, 112 insertions(+), 20 deletions(-) delete mode 100644 _config.yml create mode 100644 framework/web/src/site/markdown/index.md create mode 100644 framework/web/undertow/pom.xml create mode 100644 framework/web/undertow/src/main/java/org/laidu/learn/undertow/UnderrowApp.java create mode 100644 framework/web/undertow/src/site/mardown/index.md diff --git a/_config.yml b/_config.yml deleted file mode 100644 index c4192631f..000000000 --- a/_config.yml +++ /dev/null @@ -1 +0,0 @@ -theme: jekyll-theme-cayman \ No newline at end of file diff --git a/algorithm/src/main/java/org/laidu/learn/algorithm/bloom/BloomFilterDemo.java b/algorithm/src/main/java/org/laidu/learn/algorithm/bloom/BloomFilterDemo.java index 69190aff8..f24fc37ca 100644 --- a/algorithm/src/main/java/org/laidu/learn/algorithm/bloom/BloomFilterDemo.java +++ b/algorithm/src/main/java/org/laidu/learn/algorithm/bloom/BloomFilterDemo.java @@ -1,10 +1,12 @@ package org.laidu.learn.algorithm.bloom; -import jodd.io.FileUtil; +import java.io.IOException; +import java.nio.charset.Charset; + import org.laidu.commom.util.encryption.MD5Util; -import java.io.File; -import java.io.IOException; +import com.google.common.hash.BloomFilter; +import com.google.common.hash.Funnels; /** * bloom filter demo @@ -19,7 +21,7 @@ public class BloomFilterDemo { public static void main(String[] args) { int[] p = {3, 5, 7, 4, 8, 9}; -// BloomFilter filter = BloomFilter.create(Funnels.stringFunnel(Charset.forName("utf-8")), size + size / 5, 0.0000001d); + BloomFilter filter = BloomFilter.create(Funnels.stringFunnel(Charset.forName("utf-8")), size + size / 5, 0.0000001d); for (int var : p) { int num = var * 1000_000_000; @@ -34,8 +36,8 @@ private static void doWork(String phone) { String md5; md5 = MD5Util.getInstance().toMd5(phone).substring(8, 24); try { - FileUtil.appendString(new File(md5.substring(0,3)),phone+"-->"+md5+"\n"); - } catch (IOException e) { +// FileUtil.appendString(new File(md5.substring(0,3)),phone+"-->"+md5+"\n"); + } catch (Exception e) { e.printStackTrace(); } // if (filter.mightContain(md5)) { diff --git a/algorithm/src/site/markdown/index.md b/algorithm/src/site/markdown/index.md index 32bcfc80a..5f4708e56 100644 --- a/algorithm/src/site/markdown/index.md +++ b/algorithm/src/site/markdown/index.md @@ -1,3 +1,6 @@ # algorithm + +求N个数据中的中位数 + ## diff --git a/framework/web/pom.xml b/framework/web/pom.xml index cb6683a6f..5304e76c6 100644 --- a/framework/web/pom.xml +++ b/framework/web/pom.xml @@ -16,6 +16,7 @@ play tomcat + undertow diff --git a/framework/web/src/site/markdown/index.md b/framework/web/src/site/markdown/index.md new file mode 100644 index 000000000..f0f22bf1f --- /dev/null +++ b/framework/web/src/site/markdown/index.md @@ -0,0 +1,18 @@ +# JVM WEB 学习 + +## java servlet + + + +### 版本更新 + +## web框架 + +## web 容器 + + +* [java-servlet](https://www.oracle.com/technetwork/java/index-jsp-135475.html) +* [tomcat]() +* [jetty]() +* [undertow]() +* []() \ No newline at end of file diff --git a/framework/web/tomcat/src/main/java/org/laidu/learn/tomcat/TomcatApp.java b/framework/web/tomcat/src/main/java/org/laidu/learn/tomcat/TomcatApp.java index 191996db6..ac3cecc68 100644 --- a/framework/web/tomcat/src/main/java/org/laidu/learn/tomcat/TomcatApp.java +++ b/framework/web/tomcat/src/main/java/org/laidu/learn/tomcat/TomcatApp.java @@ -1,21 +1,23 @@ package org.laidu.learn.tomcat; -import com.alibaba.fastjson.JSONObject; -import lombok.extern.slf4j.Slf4j; -import org.apache.catalina.Context; -import org.apache.catalina.LifecycleException; -import org.apache.catalina.startup.Tomcat; +import java.io.File; +import java.io.IOException; +import java.io.PrintWriter; import javax.servlet.ServletRequest; import javax.servlet.ServletResponse; import javax.servlet.annotation.WebServlet; import javax.servlet.http.HttpServlet; -import java.io.File; -import java.io.IOException; -import java.io.PrintWriter; + +import org.apache.catalina.Context; +import org.apache.catalina.LifecycleException; +import org.apache.catalina.startup.Tomcat; + +import lombok.extern.slf4j.Slf4j; /** * tomcat embed app + * 嵌入式tomcat 示例 * * @author zangtiancai * @date 2019-02-15 14:34. @@ -57,12 +59,10 @@ public void service(ServletRequest req, ServletResponse res) throws IOException res.setContentType("application/json;charset=utf-8"); res.setCharacterEncoding("utf-8"); - JSONObject response = new JSONObject(); - response.put("code",200); - response.put("message","hello world"); - response.put("timestamp", System.currentTimeMillis()); + String jsonBody = String.format("{\"code\":200,\"message\":\"hello world\",\"timestamp\":%d}", + System.currentTimeMillis()); - writer.write(response.toJSONString()); + writer.write(jsonBody); writer.flush(); writer.close(); } diff --git a/framework/web/undertow/pom.xml b/framework/web/undertow/pom.xml new file mode 100644 index 000000000..f6ebb394b --- /dev/null +++ b/framework/web/undertow/pom.xml @@ -0,0 +1,38 @@ + + + + web + org.laidu.learn + 1.0-SNAPSHOT + + 4.0.0 + + undertow + + + 2.0.20.Final + + + + + io.undertow + undertow-core + ${undertow.version} + + + + io.undertow + undertow-servlet + ${undertow.version} + + + + io.undertow + undertow-websockets-jsr + ${undertow.version} + + + + \ No newline at end of file diff --git a/framework/web/undertow/src/main/java/org/laidu/learn/undertow/UnderrowApp.java b/framework/web/undertow/src/main/java/org/laidu/learn/undertow/UnderrowApp.java new file mode 100644 index 000000000..c8b63722e --- /dev/null +++ b/framework/web/undertow/src/main/java/org/laidu/learn/undertow/UnderrowApp.java @@ -0,0 +1,29 @@ +package org.laidu.learn.undertow; + +import io.undertow.Undertow; +import io.undertow.util.Headers; +import lombok.extern.slf4j.Slf4j; + +/** + * 嵌入式undertow 使用 + * + * @author zangtiancai. + * @date 2019-05-23 14:23. + */ +@Slf4j +public class UnderrowApp { + + public static void main(String[] args) { + + Undertow server = Undertow.builder() + .addHttpListener(8080, "0.0.0.0") + .setWorkerThreads(1) + .setIoThreads(1) + .setHandler(exchange -> { + exchange.getResponseHeaders().put(Headers.CONTENT_TYPE, "text/plain"); + exchange.getResponseSender().send("Hello World"); + Thread.sleep(1000000); + }).build(); + server.start(); + } +} diff --git a/framework/web/undertow/src/site/mardown/index.md b/framework/web/undertow/src/site/mardown/index.md new file mode 100644 index 000000000..248584df8 --- /dev/null +++ b/framework/web/undertow/src/site/mardown/index.md @@ -0,0 +1,2 @@ +# 深入学习undertow容器 + From bca7ca4bcab15f29ed72b28917d8276a8b57ce7d Mon Sep 17 00:00:00 2001 From: ztc Date: Mon, 27 May 2019 23:40:34 +0800 Subject: [PATCH 275/417] sync --- .../spring-mybatis/src/main/resources/config/logback-spring.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/framework/spring/spring-data/spring-mybatis/src/main/resources/config/logback-spring.xml b/framework/spring/spring-data/spring-mybatis/src/main/resources/config/logback-spring.xml index e0d2a0dde..3ea011c2b 100644 --- a/framework/spring/spring-data/spring-mybatis/src/main/resources/config/logback-spring.xml +++ b/framework/spring/spring-data/spring-mybatis/src/main/resources/config/logback-spring.xml @@ -127,7 +127,7 @@ See here for more details: http://gordondickens.com/wordpress/2013/03/27/sawing- - + From 1b375a36734e483917defe42f86fa322e82d5f30 Mon Sep 17 00:00:00 2001 From: laidu Date: Tue, 28 May 2019 21:21:45 +0800 Subject: [PATCH 276/417] synv --- .../laidu/learn/spring/core/SpringApp.java | 26 ++++++++++++++ .../laidu/learn/spring/core/bean/Child.java | 35 +++++++++++++++++++ .../laidu/learn/spring/core/bean/Father.java | 32 +++++++++++++++++ .../laidu/learn/spring/core/bean/Person.java | 32 +++++++++++++++++ .../laidu/learn/spring/core/bean/Student.java | 8 ----- .../spring/core/beanfactory/XmlCreateIOC.java | 6 ++-- .../learn/spring/core/config/JavaConfig.java | 25 +++++++++++++ .../commom/util/string/StringUtilTest.java | 21 ++++++++++- 8 files changed, 174 insertions(+), 11 deletions(-) create mode 100644 framework/spring/spring-core/src/main/java/org/laidu/learn/spring/core/SpringApp.java create mode 100644 framework/spring/spring-core/src/main/java/org/laidu/learn/spring/core/bean/Child.java create mode 100644 framework/spring/spring-core/src/main/java/org/laidu/learn/spring/core/bean/Father.java create mode 100644 framework/spring/spring-core/src/main/java/org/laidu/learn/spring/core/bean/Person.java create mode 100644 framework/spring/spring-core/src/main/java/org/laidu/learn/spring/core/config/JavaConfig.java diff --git a/framework/spring/spring-core/src/main/java/org/laidu/learn/spring/core/SpringApp.java b/framework/spring/spring-core/src/main/java/org/laidu/learn/spring/core/SpringApp.java new file mode 100644 index 000000000..5000f1910 --- /dev/null +++ b/framework/spring/spring-core/src/main/java/org/laidu/learn/spring/core/SpringApp.java @@ -0,0 +1,26 @@ +package org.laidu.learn.spring.core; + +import org.laidu.learn.spring.core.bean.Father; +import org.laidu.learn.spring.core.config.JavaConfig; +import org.springframework.context.ApplicationContext; +import org.springframework.context.annotation.AnnotationConfigApplicationContext; + +import lombok.extern.slf4j.Slf4j; + +/** + * spring + * + * @author zangtiancai. + * @date 2019-05-27 20:01. + */ +@Slf4j +public class SpringApp { + + public static void main(String[] args) { + + ApplicationContext ctx = new AnnotationConfigApplicationContext(JavaConfig.class); + Father father = ctx.getBean(Father.class); + + System.out.println(father.getChild().getName()); + } +} diff --git a/framework/spring/spring-core/src/main/java/org/laidu/learn/spring/core/bean/Child.java b/framework/spring/spring-core/src/main/java/org/laidu/learn/spring/core/bean/Child.java new file mode 100644 index 000000000..5de683e74 --- /dev/null +++ b/framework/spring/spring-core/src/main/java/org/laidu/learn/spring/core/bean/Child.java @@ -0,0 +1,35 @@ +package org.laidu.learn.spring.core.bean; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Component; + +/** + * 孩子 + * + * @author zangtiancai. + * @date 2019-05-27 19:54. + */ +@Component +public class Child extends Person{ + + @Autowired + private Father father; + + public Child() { + } + + public Child(String name) { + super(name); + } + + + public Father getFather() { + return father; + } + + public void setFather(Father father) { + + System.out.println("set father"); + this.father = father; + } +} diff --git a/framework/spring/spring-core/src/main/java/org/laidu/learn/spring/core/bean/Father.java b/framework/spring/spring-core/src/main/java/org/laidu/learn/spring/core/bean/Father.java new file mode 100644 index 000000000..fcacd4d40 --- /dev/null +++ b/framework/spring/spring-core/src/main/java/org/laidu/learn/spring/core/bean/Father.java @@ -0,0 +1,32 @@ +package org.laidu.learn.spring.core.bean; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Component; + +/** + * 父亲 + * + * @author zangtiancai. + * @date 2019-05-27 19:53. + */ +@Component +public class Father extends Person{ + + @Autowired + private Child child; + + public Father() { + } + + public Father(String name) { + super(name); + } + + public Child getChild() { + return child; + } + + public void setChild(Child child) { + this.child = child; + } +} diff --git a/framework/spring/spring-core/src/main/java/org/laidu/learn/spring/core/bean/Person.java b/framework/spring/spring-core/src/main/java/org/laidu/learn/spring/core/bean/Person.java new file mode 100644 index 000000000..3ab1d8084 --- /dev/null +++ b/framework/spring/spring-core/src/main/java/org/laidu/learn/spring/core/bean/Person.java @@ -0,0 +1,32 @@ +package org.laidu.learn.spring.core.bean; + +/** + * 人类 + * + * @author zangtiancai. + * @date 2019-05-27 19:55. + */ +public class Person { + + private String name; + + + + public Person() { + System.out.println(" 无参构造器实例化 :"+ this.getClass().getName()); + } + + public Person(String name) { + System.out.println(" 含参构造器实例化bean : "+ name); + this.name = name; + } + + public String getName() { + return name; + } + + public void setName(String name) { + System.out.println("set person name " + name); + this.name = name; + } +} diff --git a/framework/spring/spring-core/src/main/java/org/laidu/learn/spring/core/bean/Student.java b/framework/spring/spring-core/src/main/java/org/laidu/learn/spring/core/bean/Student.java index 1390e1885..ef6204742 100644 --- a/framework/spring/spring-core/src/main/java/org/laidu/learn/spring/core/bean/Student.java +++ b/framework/spring/spring-core/src/main/java/org/laidu/learn/spring/core/bean/Student.java @@ -19,19 +19,11 @@ public class Student { private String idCard; - public String getName() { - return name; - } - public void setName(String name) { log.info("===========setName===========: {}",name); this.name = name; } - public String getIdCard() { - return idCard; - } - public void setIdCard(String idCard) { log.info("===========setIdCard===========: {}",idCard); this.idCard = idCard; diff --git a/framework/spring/spring-core/src/main/java/org/laidu/learn/spring/core/beanfactory/XmlCreateIOC.java b/framework/spring/spring-core/src/main/java/org/laidu/learn/spring/core/beanfactory/XmlCreateIOC.java index 56870ff2a..f82eb2b15 100644 --- a/framework/spring/spring-core/src/main/java/org/laidu/learn/spring/core/beanfactory/XmlCreateIOC.java +++ b/framework/spring/spring-core/src/main/java/org/laidu/learn/spring/core/beanfactory/XmlCreateIOC.java @@ -1,10 +1,12 @@ package org.laidu.learn.spring.core.beanfactory; -import lombok.extern.slf4j.Slf4j; +import org.laidu.learn.spring.core.bean.Student; import org.springframework.beans.factory.BeanFactory; import org.springframework.beans.factory.xml.XmlBeanFactory; import org.springframework.core.io.ClassPathResource; +import lombok.extern.slf4j.Slf4j; + /** * 通过xml 初始化容器 *

                    @@ -18,7 +20,7 @@ public static void main(String[] args) throws InterruptedException { BeanFactory factory = new XmlBeanFactory(new ClassPathResource("xml/spring.xml")); -// Student student = factory.getBean(Student.class); + Student student = factory.getBean(Student.class); System.out.println(factory); diff --git a/framework/spring/spring-core/src/main/java/org/laidu/learn/spring/core/config/JavaConfig.java b/framework/spring/spring-core/src/main/java/org/laidu/learn/spring/core/config/JavaConfig.java new file mode 100644 index 000000000..f80e68248 --- /dev/null +++ b/framework/spring/spring-core/src/main/java/org/laidu/learn/spring/core/config/JavaConfig.java @@ -0,0 +1,25 @@ +package org.laidu.learn.spring.core.config; + +import org.springframework.context.annotation.ComponentScan; + +/** + * java 配置 + * + * @author zangtiancai. + * @date 2019-05-28 21:13. + */ +@ComponentScan(basePackages = { + "org.laidu.learn.spring.core.bean" +}) +public class JavaConfig { + +// @Bean +// public Father father(){ +// return new Father("father"); +// } +// +// @Bean +// public Child child(){ +// return new Child("child"); +// } +} diff --git a/production-component/common-util/src/test/java/org/laidu/commom/util/string/StringUtilTest.java b/production-component/common-util/src/test/java/org/laidu/commom/util/string/StringUtilTest.java index 92e9fcac5..387aecbed 100644 --- a/production-component/common-util/src/test/java/org/laidu/commom/util/string/StringUtilTest.java +++ b/production-component/common-util/src/test/java/org/laidu/commom/util/string/StringUtilTest.java @@ -1,8 +1,11 @@ package org.laidu.commom.util.string; -import lombok.extern.slf4j.Slf4j; +import org.apache.commons.lang3.math.NumberUtils; +import org.junit.Assert; import org.junit.jupiter.api.Test; +import lombok.extern.slf4j.Slf4j; + @Slf4j class StringUtilTest { @@ -19,4 +22,20 @@ void snakeCasetranslate() { log.info("result2: {}", result2); } + + @Test + void numberParse(){ + + String str1 = "1#01231231"; + Assert.assertEquals(0L, NumberUtils.toLong(str1)); + + str1 = "123123"; + Assert.assertEquals(123123L, NumberUtils.toLong(str1)); + + str1 = "0x1"; + Assert.assertEquals(0L, NumberUtils.toLong(str1)); + + str1 = "123122222222321L"; + Assert.assertEquals(0L, NumberUtils.toLong(str1)); + } } \ No newline at end of file From 0d9508ca67b428e38be6d9716cd9ed99e408e7ab Mon Sep 17 00:00:00 2001 From: laidu Date: Wed, 29 May 2019 21:15:43 +0800 Subject: [PATCH 277/417] add hellowork jvm demo --- .../java/org/laidu/learn/spring/core/SpringApp.java | 10 +++++++--- .../java/org/laidu/learn/spring/core/bean/Person.java | 1 - .../jvm/src/main/java/org/laidu/learn/jvm/Test.java | 9 ++++----- 3 files changed, 11 insertions(+), 9 deletions(-) diff --git a/framework/spring/spring-core/src/main/java/org/laidu/learn/spring/core/SpringApp.java b/framework/spring/spring-core/src/main/java/org/laidu/learn/spring/core/SpringApp.java index 5000f1910..54a7efda5 100644 --- a/framework/spring/spring-core/src/main/java/org/laidu/learn/spring/core/SpringApp.java +++ b/framework/spring/spring-core/src/main/java/org/laidu/learn/spring/core/SpringApp.java @@ -1,8 +1,6 @@ package org.laidu.learn.spring.core; import org.laidu.learn.spring.core.bean.Father; -import org.laidu.learn.spring.core.config.JavaConfig; -import org.springframework.context.ApplicationContext; import org.springframework.context.annotation.AnnotationConfigApplicationContext; import lombok.extern.slf4j.Slf4j; @@ -18,7 +16,13 @@ public class SpringApp { public static void main(String[] args) { - ApplicationContext ctx = new AnnotationConfigApplicationContext(JavaConfig.class); + AnnotationConfigApplicationContext ctx = + new AnnotationConfigApplicationContext(); + ctx.setBeanNameGenerator((definition, registry) -> "hehe_"+definition.getBeanClassName()); + + ctx.scan("org.laidu.learn.spring.core.bean"); + ctx.refresh(); + Father father = ctx.getBean(Father.class); System.out.println(father.getChild().getName()); diff --git a/framework/spring/spring-core/src/main/java/org/laidu/learn/spring/core/bean/Person.java b/framework/spring/spring-core/src/main/java/org/laidu/learn/spring/core/bean/Person.java index 3ab1d8084..21fe45d55 100644 --- a/framework/spring/spring-core/src/main/java/org/laidu/learn/spring/core/bean/Person.java +++ b/framework/spring/spring-core/src/main/java/org/laidu/learn/spring/core/bean/Person.java @@ -11,7 +11,6 @@ public class Person { private String name; - public Person() { System.out.println(" 无参构造器实例化 :"+ this.getClass().getName()); } diff --git a/language-advance/jvm/src/main/java/org/laidu/learn/jvm/Test.java b/language-advance/jvm/src/main/java/org/laidu/learn/jvm/Test.java index a52895865..ed5693fe6 100644 --- a/language-advance/jvm/src/main/java/org/laidu/learn/jvm/Test.java +++ b/language-advance/jvm/src/main/java/org/laidu/learn/jvm/Test.java @@ -1,8 +1,6 @@ package org.laidu.learn.jvm; -import java.io.FileNotFoundException; - /** * 测试 *

                    @@ -10,9 +8,10 @@ */ public class Test { - public static void main(String[] args) throws FileNotFoundException { -// System.out.println("Hello world"); - new java.io.PrintStream("Hello world").println(); + public static void main(String[] args) throws InterruptedException { + System.out.println("Hello world"); + + Thread.sleep(10000000L); } } From 2fbf07aa36f464d33f062e151c50b04063982f11 Mon Sep 17 00:00:00 2001 From: laidu Date: Thu, 30 May 2019 21:12:05 +0800 Subject: [PATCH 278/417] add jdbc coding --- language-advance/pom.xml | 1 + language-advance/sql/pom.xml | 23 +++++++ .../java/org/laidu/learn/advance/SqlApp.java | 60 +++++++++++++++++++ pom.xml | 2 +- 4 files changed, 85 insertions(+), 1 deletion(-) create mode 100644 language-advance/sql/pom.xml create mode 100644 language-advance/sql/src/main/java/org/laidu/learn/advance/SqlApp.java diff --git a/language-advance/pom.xml b/language-advance/pom.xml index 05531461f..362621c0e 100644 --- a/language-advance/pom.xml +++ b/language-advance/pom.xml @@ -23,6 +23,7 @@ bytecode jni security + sql diff --git a/language-advance/sql/pom.xml b/language-advance/sql/pom.xml new file mode 100644 index 000000000..afbc6e2d2 --- /dev/null +++ b/language-advance/sql/pom.xml @@ -0,0 +1,23 @@ + + + + language-advance + org.laidu.learn + 1.0-SNAPSHOT + + 4.0.0 + + sql + + + + com.h2database + h2 + 1.4.199 + + + + + \ No newline at end of file diff --git a/language-advance/sql/src/main/java/org/laidu/learn/advance/SqlApp.java b/language-advance/sql/src/main/java/org/laidu/learn/advance/SqlApp.java new file mode 100644 index 000000000..ca5d4466b --- /dev/null +++ b/language-advance/sql/src/main/java/org/laidu/learn/advance/SqlApp.java @@ -0,0 +1,60 @@ +package org.laidu.learn.advance; + +import java.sql.Connection; +import java.sql.DriverManager; +import java.sql.ResultSet; +import java.sql.SQLException; +import java.sql.Statement; + +import lombok.extern.slf4j.Slf4j; + +/** + * jdbc coding + * + * create table book + * ( + * id long auto_increment, + * name varchar(32) default '' + * ); + * + * create unique index book_id_uindex + * on book (id); + * + * alter table book + * add constraint book_pk + * primary key (id); + * + * @author zangtiancai. + * @date 2019-05-30 15:11. + */ +@Slf4j +public class SqlApp { + + public static String DRIVER = "org.h2.Driver"; + + public static String URL = "jdbc:h2:mem:default"; + public static String USER = ""; + public static String PASSWORD = ""; + + + public static void main(String[] args) throws ClassNotFoundException, SQLException { + + Class.forName(DRIVER); + + Connection connection = DriverManager.getConnection(URL); + + Statement statement = connection.createStatement(); + + ResultSet resultSet = statement.executeQuery("show databases"); + + while (resultSet.next()) { + System.out.println(resultSet.getString(1)); + } + + + statement.close(); + connection.close(); + + + } +} diff --git a/pom.xml b/pom.xml index 68201e53c..577dfc928 100644 --- a/pom.xml +++ b/pom.xml @@ -83,7 +83,7 @@ 2.1.0 - 1.18.2 + 1.18.8 1.2.3 From 334448159015820b2c8e392a5bf9ee82594702c2 Mon Sep 17 00:00:00 2001 From: laidu Date: Fri, 12 Jul 2019 20:24:48 +0800 Subject: [PATCH 279/417] add mybatis-plus --- .../org/laidu/learn/jodd/usage/HttpDemo.java | 3 +- .../laidu/learn/compress/pic/zip/Demo.java | 17 +++---- framework/spring/spring-data/pom.xml | 1 + .../spring-data/spring-mybatis-plus/pom.xml | 47 +++++++++++++++++++ .../learn/mybatis/plus/MybatisPlusApp.java | 25 ++++++++++ .../plus/config/MybatisPlusConfig.java | 31 ++++++++++++ .../laidu/learn/mybatis/plus/entity/User.java | 22 +++++++++ .../learn/mybatis/plus/mapper/UserMapper.java | 14 ++++++ .../mybatis/plus/service/UserService.java | 10 ++++ .../src/main/resources/application.yml | 16 +++++++ .../src/main/resources/db/data-h2.sql | 8 ++++ .../src/main/resources/db/schema-h2.sql | 10 ++++ .../mybatis/plus/service/UserServiceTest.java | 46 ++++++++++++++++++ .../learn/language/feature/boxed/Boxing.java | 1 + 14 files changed, 240 insertions(+), 11 deletions(-) create mode 100644 framework/spring/spring-data/spring-mybatis-plus/pom.xml create mode 100644 framework/spring/spring-data/spring-mybatis-plus/src/main/java/org/laidu/learn/mybatis/plus/MybatisPlusApp.java create mode 100644 framework/spring/spring-data/spring-mybatis-plus/src/main/java/org/laidu/learn/mybatis/plus/config/MybatisPlusConfig.java create mode 100644 framework/spring/spring-data/spring-mybatis-plus/src/main/java/org/laidu/learn/mybatis/plus/entity/User.java create mode 100644 framework/spring/spring-data/spring-mybatis-plus/src/main/java/org/laidu/learn/mybatis/plus/mapper/UserMapper.java create mode 100644 framework/spring/spring-data/spring-mybatis-plus/src/main/java/org/laidu/learn/mybatis/plus/service/UserService.java create mode 100644 framework/spring/spring-data/spring-mybatis-plus/src/main/resources/application.yml create mode 100644 framework/spring/spring-data/spring-mybatis-plus/src/main/resources/db/data-h2.sql create mode 100644 framework/spring/spring-data/spring-mybatis-plus/src/main/resources/db/schema-h2.sql create mode 100644 framework/spring/spring-data/spring-mybatis-plus/src/test/java/org/laidu/learn/mybatis/plus/service/UserServiceTest.java diff --git a/framework/common/jodd/src/main/java/org/laidu/learn/jodd/usage/HttpDemo.java b/framework/common/jodd/src/main/java/org/laidu/learn/jodd/usage/HttpDemo.java index 95d89e3dc..ccc6bba80 100644 --- a/framework/common/jodd/src/main/java/org/laidu/learn/jodd/usage/HttpDemo.java +++ b/framework/common/jodd/src/main/java/org/laidu/learn/jodd/usage/HttpDemo.java @@ -12,7 +12,6 @@ * @author tiancai.zang * on 2018-08-28 17:45. */ -// TODO: 2018-08-28 17:45 httpdemo @Slf4j public class HttpDemo { @@ -30,6 +29,8 @@ public static void main(String[] args) { .header("User-Agent", "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/68.0.3440.106 Safari/537.36") .header("Accept-Language", "zh-CN,zh;q=0.9").send(); + log.info("response's value : {}", response); + } diff --git a/framework/compress/thumbnailator-google/src/main/java/org/laidu/learn/compress/pic/zip/Demo.java b/framework/compress/thumbnailator-google/src/main/java/org/laidu/learn/compress/pic/zip/Demo.java index e8f3f5be8..68127ab63 100644 --- a/framework/compress/thumbnailator-google/src/main/java/org/laidu/learn/compress/pic/zip/Demo.java +++ b/framework/compress/thumbnailator-google/src/main/java/org/laidu/learn/compress/pic/zip/Demo.java @@ -1,15 +1,14 @@ package org.laidu.learn.compress.pic.zip; -import lombok.extern.slf4j.Slf4j; -import net.coobird.thumbnailator.Thumbnails; -import net.coobird.thumbnailator.filters.ImageFilter; - import java.awt.*; import java.awt.image.BufferedImage; import java.io.File; -import java.io.FileOutputStream; import java.io.IOException; +import lombok.extern.slf4j.Slf4j; +import net.coobird.thumbnailator.Thumbnails; +import net.coobird.thumbnailator.filters.ImageFilter; + /** * demo *

                    @@ -42,9 +41,10 @@ public BufferedImage apply(BufferedImage img) { public static void main(String[] args) throws IOException { + String workDir = System.getProperty("user.dir"); - File fromPic = new File("/Users/laidu/IdeaProjects/java-learn/framework/compress/thumbnailator-google/src/main/resources/test.png"); - File toPic = new File("/Users/laidu/IdeaProjects/java-learn/framework/compress/thumbnailator-google/src/main/resources/test112.jpg"); + File fromPic = new File(workDir+ "/framework/compress/thumbnailator-google/src/main/resources/test.png"); + File toPic = new File(workDir + "/framework/compress/thumbnailator-google/src/main/resources/test112.jpg"); Thumbnails.of(fromPic).addFilter(new ThumbnailsImgFilter()) .scale(1f) @@ -52,9 +52,6 @@ public static void main(String[] args) throws IOException { .outputQuality(0.01f) .toFile(toPic); - FileOutputStream outputStream = new FileOutputStream(new File("")); - Thumbnails.of(fromPic).scale(1f).toOutputStream(outputStream); - } } \ No newline at end of file diff --git a/framework/spring/spring-data/pom.xml b/framework/spring/spring-data/pom.xml index a0723add9..1236df128 100644 --- a/framework/spring/spring-data/pom.xml +++ b/framework/spring/spring-data/pom.xml @@ -14,6 +14,7 @@ spring-mybatis spring-redis + spring-mybatis-plus diff --git a/framework/spring/spring-data/spring-mybatis-plus/pom.xml b/framework/spring/spring-data/spring-mybatis-plus/pom.xml new file mode 100644 index 000000000..1bac02184 --- /dev/null +++ b/framework/spring/spring-data/spring-mybatis-plus/pom.xml @@ -0,0 +1,47 @@ + + + + spring-data + org.laidu.learn + 1.0-SNAPSHOT + + 4.0.0 + + spring-mybatis-plus + + 3.1.2 + + + + + mysql + mysql-connector-java + runtime + + + + com.baomidou + mybatis-plus-boot-starter + ${mybatis-plus.version} + + + com.baomidou + mybatis-plus-extension + ${mybatis-plus.version} + + + com.h2database + h2 + runtime + + + org.springframework.boot + spring-boot-starter-aop + + + + + + \ No newline at end of file diff --git a/framework/spring/spring-data/spring-mybatis-plus/src/main/java/org/laidu/learn/mybatis/plus/MybatisPlusApp.java b/framework/spring/spring-data/spring-mybatis-plus/src/main/java/org/laidu/learn/mybatis/plus/MybatisPlusApp.java new file mode 100644 index 000000000..c7ae1c115 --- /dev/null +++ b/framework/spring/spring-data/spring-mybatis-plus/src/main/java/org/laidu/learn/mybatis/plus/MybatisPlusApp.java @@ -0,0 +1,25 @@ +package org.laidu.learn.mybatis.plus; + +import org.springframework.boot.Banner; +import org.springframework.boot.autoconfigure.SpringBootApplication; +import org.springframework.boot.builder.SpringApplicationBuilder; + +import lombok.extern.slf4j.Slf4j; + +/** + * mybatis plus app + * + * @author zangtiancai. + * @date 2019-07-12 10:42. + */ +@Slf4j +@SpringBootApplication +public class MybatisPlusApp { + + public static void main(String[] args) { + new SpringApplicationBuilder(MybatisPlusApp.class) + .bannerMode(Banner.Mode.OFF) + .build() + .run(args); + } +} diff --git a/framework/spring/spring-data/spring-mybatis-plus/src/main/java/org/laidu/learn/mybatis/plus/config/MybatisPlusConfig.java b/framework/spring/spring-data/spring-mybatis-plus/src/main/java/org/laidu/learn/mybatis/plus/config/MybatisPlusConfig.java new file mode 100644 index 000000000..85c943b93 --- /dev/null +++ b/framework/spring/spring-data/spring-mybatis-plus/src/main/java/org/laidu/learn/mybatis/plus/config/MybatisPlusConfig.java @@ -0,0 +1,31 @@ +package org.laidu.learn.mybatis.plus.config; + +import org.mybatis.spring.annotation.MapperScan; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; +import org.springframework.transaction.annotation.EnableTransactionManagement; + +import com.baomidou.mybatisplus.extension.plugins.PaginationInterceptor; +import com.baomidou.mybatisplus.extension.plugins.pagination.optimize.JsqlParserCountOptimize; + +import lombok.extern.slf4j.Slf4j; + +/** + * @author zangtiancai. + * @date 2019-07-12 11:04. + */ +@Slf4j +@EnableTransactionManagement +@Configuration +@MapperScan("org.laidu.learn.mybatis.plus.mapper") +public class MybatisPlusConfig { + + /** + * 分页插件 + */ + @Bean + public PaginationInterceptor paginationInterceptor() { + // 开启 count 的 join 优化,只针对 left join !!! + return new PaginationInterceptor().setCountSqlParser(new JsqlParserCountOptimize(true)); + } +} diff --git a/framework/spring/spring-data/spring-mybatis-plus/src/main/java/org/laidu/learn/mybatis/plus/entity/User.java b/framework/spring/spring-data/spring-mybatis-plus/src/main/java/org/laidu/learn/mybatis/plus/entity/User.java new file mode 100644 index 000000000..191709adb --- /dev/null +++ b/framework/spring/spring-data/spring-mybatis-plus/src/main/java/org/laidu/learn/mybatis/plus/entity/User.java @@ -0,0 +1,22 @@ +package org.laidu.learn.mybatis.plus.entity; + +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +/** + * @author zangtiancai. + * @date 2019-07-12 10:45. + */ +@Data +@Builder +@AllArgsConstructor +@NoArgsConstructor +public class User { + + private Long id; + private String name; + private Integer age; + private String email; +} diff --git a/framework/spring/spring-data/spring-mybatis-plus/src/main/java/org/laidu/learn/mybatis/plus/mapper/UserMapper.java b/framework/spring/spring-data/spring-mybatis-plus/src/main/java/org/laidu/learn/mybatis/plus/mapper/UserMapper.java new file mode 100644 index 000000000..5461d2843 --- /dev/null +++ b/framework/spring/spring-data/spring-mybatis-plus/src/main/java/org/laidu/learn/mybatis/plus/mapper/UserMapper.java @@ -0,0 +1,14 @@ +package org.laidu.learn.mybatis.plus.mapper; + +import org.apache.ibatis.annotations.Mapper; +import org.laidu.learn.mybatis.plus.entity.User; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** + * @author zangtiancai. + * @date 2019-07-12 10:46. + */ +@Mapper +public interface UserMapper extends BaseMapper { +} \ No newline at end of file diff --git a/framework/spring/spring-data/spring-mybatis-plus/src/main/java/org/laidu/learn/mybatis/plus/service/UserService.java b/framework/spring/spring-data/spring-mybatis-plus/src/main/java/org/laidu/learn/mybatis/plus/service/UserService.java new file mode 100644 index 000000000..6ccfb3f14 --- /dev/null +++ b/framework/spring/spring-data/spring-mybatis-plus/src/main/java/org/laidu/learn/mybatis/plus/service/UserService.java @@ -0,0 +1,10 @@ +package org.laidu.learn.mybatis.plus.service; + +/** + * @author zangtiancai. + * @date 2019-07-12 10:47. + */ +public interface UserService { + + +} diff --git a/framework/spring/spring-data/spring-mybatis-plus/src/main/resources/application.yml b/framework/spring/spring-data/spring-mybatis-plus/src/main/resources/application.yml new file mode 100644 index 000000000..017fbf520 --- /dev/null +++ b/framework/spring/spring-data/spring-mybatis-plus/src/main/resources/application.yml @@ -0,0 +1,16 @@ + +# DataSource Config +spring: + datasource: + driver-class-name: org.h2.Driver + schema: classpath:db/schema-h2.sql + data: classpath:db/data-h2.sql + url: jdbc:h2:mem:test + username: root + password: test + + +# Logger Config +logging: + level: + com.baomidou.mybatisplus.samples.pagination: debug \ No newline at end of file diff --git a/framework/spring/spring-data/spring-mybatis-plus/src/main/resources/db/data-h2.sql b/framework/spring/spring-data/spring-mybatis-plus/src/main/resources/db/data-h2.sql new file mode 100644 index 000000000..a4bc3377a --- /dev/null +++ b/framework/spring/spring-data/spring-mybatis-plus/src/main/resources/db/data-h2.sql @@ -0,0 +1,8 @@ +DELETE FROM user; + +INSERT INTO user (id, name, age, email) VALUES +(1, 'Jone', 18, 'test1@baomidou.com'), +(2, 'Jack', 20, 'test2@baomidou.com'), +(3, 'Tom', 28, 'test3@baomidou.com'), +(4, 'Sandy', 21, 'test4@baomidou.com'), +(5, 'Billie', 24, 'test5@baomidou.com'); \ No newline at end of file diff --git a/framework/spring/spring-data/spring-mybatis-plus/src/main/resources/db/schema-h2.sql b/framework/spring/spring-data/spring-mybatis-plus/src/main/resources/db/schema-h2.sql new file mode 100644 index 000000000..64c0be19a --- /dev/null +++ b/framework/spring/spring-data/spring-mybatis-plus/src/main/resources/db/schema-h2.sql @@ -0,0 +1,10 @@ +DROP TABLE IF EXISTS user; + +CREATE TABLE user +( + id BIGINT(20) NOT NULL COMMENT '主键ID', + name VARCHAR(30) NULL DEFAULT NULL COMMENT '姓名', + age INT(11) NULL DEFAULT NULL COMMENT '年龄', + email VARCHAR(50) NULL DEFAULT NULL COMMENT '邮箱', + PRIMARY KEY (id) +); \ No newline at end of file diff --git a/framework/spring/spring-data/spring-mybatis-plus/src/test/java/org/laidu/learn/mybatis/plus/service/UserServiceTest.java b/framework/spring/spring-data/spring-mybatis-plus/src/test/java/org/laidu/learn/mybatis/plus/service/UserServiceTest.java new file mode 100644 index 000000000..febffeedd --- /dev/null +++ b/framework/spring/spring-data/spring-mybatis-plus/src/test/java/org/laidu/learn/mybatis/plus/service/UserServiceTest.java @@ -0,0 +1,46 @@ +package org.laidu.learn.mybatis.plus.service; + +import java.util.List; + +import org.junit.Assert; +import org.junit.jupiter.api.Test; +import org.junit.runner.RunWith; +import org.laidu.learn.mybatis.plus.entity.User; +import org.laidu.learn.mybatis.plus.mapper.UserMapper; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.test.context.SpringBootTest; +import org.springframework.test.context.junit4.SpringRunner; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; + +@RunWith(SpringRunner.class) +@SpringBootTest +class UserServiceTest { + + @Autowired + private UserMapper mapper; + + @Test + public void testSelect() { + System.out.println(("----- selectAll method test ------")); + List userList = mapper.selectList(null); + + IPage selectPage = mapper.selectPage(new Page<>(1, 1), null); + Assert.assertEquals(5, userList.size()); + userList.forEach(System.out::println); + } + + @Test + public void lambdaPagination() { + Page page = new Page<>(1, 3); + QueryWrapper wrapper = new QueryWrapper<>(); + wrapper.lambda().ge(User::getAge, 1); + IPage result = mapper.selectPage(page, wrapper); + System.out.println(result.getTotal()); + Assert.assertTrue(result.getTotal() > 3); + Assert.assertEquals(3, result.getRecords().size()); + } + +} \ No newline at end of file diff --git a/language-feature/src/main/java/org/laidu/learn/language/feature/boxed/Boxing.java b/language-feature/src/main/java/org/laidu/learn/language/feature/boxed/Boxing.java index 5164fee24..9ed89d6f3 100644 --- a/language-feature/src/main/java/org/laidu/learn/language/feature/boxed/Boxing.java +++ b/language-feature/src/main/java/org/laidu/learn/language/feature/boxed/Boxing.java @@ -21,5 +21,6 @@ public static void main(String[] args) { System.out.println("k == l : "+(k == l)); + } } From f8331c2663092c4750f9d8588bbe54abd5abd605 Mon Sep 17 00:00:00 2001 From: ztc Date: Mon, 15 Jul 2019 23:35:52 +0800 Subject: [PATCH 280/417] sync --- data-structure/src/site/markdown/index.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/data-structure/src/site/markdown/index.md b/data-structure/src/site/markdown/index.md index 8bfbf6480..f7302cc95 100644 --- a/data-structure/src/site/markdown/index.md +++ b/data-structure/src/site/markdown/index.md @@ -8,3 +8,5 @@ ## [队列]() ## [链表]() ## [DP]() + +## [稀疏数组]() From d263d936e82341e03f39c02fe0c58b5498388901 Mon Sep 17 00:00:00 2001 From: ztc Date: Tue, 16 Jul 2019 22:56:55 +0800 Subject: [PATCH 281/417] add mybatis-plus sites --- .../spring-mybatis-plus/src/site/markdown/index.md | 6 ++++++ 1 file changed, 6 insertions(+) create mode 100644 framework/spring/spring-data/spring-mybatis-plus/src/site/markdown/index.md diff --git a/framework/spring/spring-data/spring-mybatis-plus/src/site/markdown/index.md b/framework/spring/spring-data/spring-mybatis-plus/src/site/markdown/index.md new file mode 100644 index 000000000..12c6cc581 --- /dev/null +++ b/framework/spring/spring-data/spring-mybatis-plus/src/site/markdown/index.md @@ -0,0 +1,6 @@ +# mybatis-plus 学习 + +参考: + +* [MyBatis-Plus](https://mp.baomidou.com/) +* [baomidou/mybatis-plus](https://github.com/baomidou/mybatis-plus) \ No newline at end of file From 3a29a81e45c5cbac8f0d38fd2c1e337c01b40211 Mon Sep 17 00:00:00 2001 From: ztc Date: Wed, 14 Aug 2019 23:23:40 +0800 Subject: [PATCH 282/417] add spring cloud stream demo --- framework/spring/pom.xml | 2 +- framework/spring/spring-cloud/pom.xml | 3 +- framework/spring/spring-cloud/stream/pom.xml | 44 +++++++++++++++++++ .../learn/spring/cloud/stream/SendRunner.java | 21 +++++++++ .../laidu/learn/spring/cloud/stream/Sink.java | 11 +++++ .../learn/spring/cloud/stream/Source.java | 11 +++++ .../learn/spring/cloud/stream/StreamApp.java | 31 +++++++++++++ .../stream/src/main/resources/application.yml | 23 ++++++++++ .../stream/src/site/markdown/index.md | 1 + 9 files changed, 144 insertions(+), 3 deletions(-) create mode 100644 framework/spring/spring-cloud/stream/pom.xml create mode 100644 framework/spring/spring-cloud/stream/src/main/java/org/laidu/learn/spring/cloud/stream/SendRunner.java create mode 100644 framework/spring/spring-cloud/stream/src/main/java/org/laidu/learn/spring/cloud/stream/Sink.java create mode 100644 framework/spring/spring-cloud/stream/src/main/java/org/laidu/learn/spring/cloud/stream/Source.java create mode 100644 framework/spring/spring-cloud/stream/src/main/java/org/laidu/learn/spring/cloud/stream/StreamApp.java create mode 100644 framework/spring/spring-cloud/stream/src/main/resources/application.yml create mode 100644 framework/spring/spring-cloud/stream/src/site/markdown/index.md diff --git a/framework/spring/pom.xml b/framework/spring/pom.xml index 7b3997f57..5716537d7 100644 --- a/framework/spring/pom.xml +++ b/framework/spring/pom.xml @@ -36,7 +36,7 @@ 5.1.6.RELEASE 2.1.4.RELEASE - Finchley.SR1 + Greenwich.SR2 1.4.0 diff --git a/framework/spring/spring-cloud/pom.xml b/framework/spring/spring-cloud/pom.xml index 137b911de..2dd48c388 100644 --- a/framework/spring/spring-cloud/pom.xml +++ b/framework/spring/spring-cloud/pom.xml @@ -21,6 +21,7 @@ config-client api-gateway admin-dashboard + stream @@ -67,8 +68,6 @@ - - org.springframework.boot spring-boot-starter-actuator diff --git a/framework/spring/spring-cloud/stream/pom.xml b/framework/spring/spring-cloud/stream/pom.xml new file mode 100644 index 000000000..3b9616c39 --- /dev/null +++ b/framework/spring/spring-cloud/stream/pom.xml @@ -0,0 +1,44 @@ + + + + spring-cloud + org.laidu.learn + 1.0-SNAPSHOT + + 4.0.0 + + stream + + + + + org.springframework.cloud + spring-cloud-dependencies + ${spring-cloud.version} + pom + import + + + + + + + org.springframework.boot + spring-boot-starter-integration + + + org.springframework.cloud + spring-cloud-stream + + + org.springframework.cloud + spring-cloud-starter-stream-rabbit + + + org.springframework.cloud + spring-cloud-stream-binder-rabbit + + + \ No newline at end of file diff --git a/framework/spring/spring-cloud/stream/src/main/java/org/laidu/learn/spring/cloud/stream/SendRunner.java b/framework/spring/spring-cloud/stream/src/main/java/org/laidu/learn/spring/cloud/stream/SendRunner.java new file mode 100644 index 000000000..404a0f6c3 --- /dev/null +++ b/framework/spring/spring-cloud/stream/src/main/java/org/laidu/learn/spring/cloud/stream/SendRunner.java @@ -0,0 +1,21 @@ +package org.laidu.learn.spring.cloud.stream; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Qualifier; +import org.springframework.boot.CommandLineRunner; +import org.springframework.integration.support.MessageBuilder; +import org.springframework.messaging.MessageChannel; + +public class SendRunner implements CommandLineRunner { + + @Autowired + @Qualifier("output") + MessageChannel output; + + @Override + public void run(String... args) throws Exception { + // 字符串类型发送MQ + System.out.println("字符串信息发送"); + output.send(MessageBuilder.withPayload("大家好").build()); + } +} diff --git a/framework/spring/spring-cloud/stream/src/main/java/org/laidu/learn/spring/cloud/stream/Sink.java b/framework/spring/spring-cloud/stream/src/main/java/org/laidu/learn/spring/cloud/stream/Sink.java new file mode 100644 index 000000000..901ffc085 --- /dev/null +++ b/framework/spring/spring-cloud/stream/src/main/java/org/laidu/learn/spring/cloud/stream/Sink.java @@ -0,0 +1,11 @@ +package org.laidu.learn.spring.cloud.stream; + +import org.springframework.cloud.stream.annotation.Input; +import org.springframework.messaging.SubscribableChannel; + +public interface Sink { + String INPUT = "input"; + + @Input("input") + SubscribableChannel input(); +} \ No newline at end of file diff --git a/framework/spring/spring-cloud/stream/src/main/java/org/laidu/learn/spring/cloud/stream/Source.java b/framework/spring/spring-cloud/stream/src/main/java/org/laidu/learn/spring/cloud/stream/Source.java new file mode 100644 index 000000000..a0f123877 --- /dev/null +++ b/framework/spring/spring-cloud/stream/src/main/java/org/laidu/learn/spring/cloud/stream/Source.java @@ -0,0 +1,11 @@ +package org.laidu.learn.spring.cloud.stream; + +import org.springframework.cloud.stream.annotation.Output; +import org.springframework.messaging.MessageChannel; + +public interface Source { + String OUTPUT = "output"; + + @Output("output") + MessageChannel output(); +} \ No newline at end of file diff --git a/framework/spring/spring-cloud/stream/src/main/java/org/laidu/learn/spring/cloud/stream/StreamApp.java b/framework/spring/spring-cloud/stream/src/main/java/org/laidu/learn/spring/cloud/stream/StreamApp.java new file mode 100644 index 000000000..f08e77109 --- /dev/null +++ b/framework/spring/spring-cloud/stream/src/main/java/org/laidu/learn/spring/cloud/stream/StreamApp.java @@ -0,0 +1,31 @@ +package org.laidu.learn.spring.cloud.stream; + +import org.springframework.boot.Banner; +import org.springframework.boot.WebApplicationType; +import org.springframework.boot.autoconfigure.SpringBootApplication; +import org.springframework.boot.builder.SpringApplicationBuilder; +import org.springframework.cloud.stream.annotation.EnableBinding; +import org.springframework.cloud.stream.annotation.StreamListener; +import org.springframework.messaging.Message; + +/** + * spring cloud stream learn + */ + +@EnableBinding({Sink.class, Source.class}) +@SpringBootApplication +public class StreamApp { + + @StreamListener(Sink.INPUT) + public void input(Message message) { + System.out.println("一般监听收到:" + message.getPayload()); + } + + public static void main(String[] args) { + + new SpringApplicationBuilder(StreamApp.class) + .bannerMode(Banner.Mode.OFF) + .web(WebApplicationType.NONE) + .run(args); + } +} diff --git a/framework/spring/spring-cloud/stream/src/main/resources/application.yml b/framework/spring/spring-cloud/stream/src/main/resources/application.yml new file mode 100644 index 000000000..299a75d43 --- /dev/null +++ b/framework/spring/spring-cloud/stream/src/main/resources/application.yml @@ -0,0 +1,23 @@ +spring: + rabbitmq: + host: localhost + username: rabbitmq-dev + password: rabbitmq-dev + port: 5672 + virtual-host: / + cloud: + stream: + bindings: + input: + destination: mqTestDefault + output: + destination: mqTestDefault + contentType: text/plain + rabbit: + bindings: + inputProductAdd: + consumer: + bindingRoutingKey: addProduct.* # 用来绑定消费者的 routing key + outputProductAdd: + producer: + routing-key-expression: '''addProduct.*''' # 需要用这个来指定 RoutingKey diff --git a/framework/spring/spring-cloud/stream/src/site/markdown/index.md b/framework/spring/spring-cloud/stream/src/site/markdown/index.md new file mode 100644 index 000000000..2ede1eb7d --- /dev/null +++ b/framework/spring/spring-cloud/stream/src/site/markdown/index.md @@ -0,0 +1 @@ +# spring cloud stream学习 \ No newline at end of file From c481c67ddf338b8444365056467b099a88eeed3e Mon Sep 17 00:00:00 2001 From: ztc Date: Sun, 29 Sep 2019 00:53:43 +0800 Subject: [PATCH 283/417] add okhttp cookiejar demo --- framework/network/okhttp/pom.xml | 25 +++ .../learn/network/okhttp/OkHttpDemo.java | 151 ++++++++++++++++++ .../network/okhttp/src/site/markdown/index.md | 6 + framework/network/pom.xml | 12 ++ 4 files changed, 194 insertions(+) create mode 100644 framework/network/okhttp/pom.xml create mode 100644 framework/network/okhttp/src/main/java/org/laidu/learn/network/okhttp/OkHttpDemo.java create mode 100644 framework/network/okhttp/src/site/markdown/index.md diff --git a/framework/network/okhttp/pom.xml b/framework/network/okhttp/pom.xml new file mode 100644 index 000000000..6cfb5619d --- /dev/null +++ b/framework/network/okhttp/pom.xml @@ -0,0 +1,25 @@ + + + + network + org.laidu.learn + 1.0-SNAPSHOT + + 4.0.0 + + okhttp + + + + com.squareup.okhttp3 + okhttp + + + com.squareup.okhttp3 + okhttp-urlconnection + + + + \ No newline at end of file diff --git a/framework/network/okhttp/src/main/java/org/laidu/learn/network/okhttp/OkHttpDemo.java b/framework/network/okhttp/src/main/java/org/laidu/learn/network/okhttp/OkHttpDemo.java new file mode 100644 index 000000000..c9c13db69 --- /dev/null +++ b/framework/network/okhttp/src/main/java/org/laidu/learn/network/okhttp/OkHttpDemo.java @@ -0,0 +1,151 @@ +package org.laidu.learn.network.okhttp; + +import java.io.IOException; +import java.util.ArrayList; +import java.util.List; +import java.util.Map; +import java.util.concurrent.TimeUnit; +import java.util.stream.Collectors; + +import org.jetbrains.annotations.NotNull; + +import com.google.common.collect.Maps; + +import okhttp3.Cookie; +import okhttp3.CookieJar; +import okhttp3.HttpUrl; +import okhttp3.MediaType; +import okhttp3.OkHttpClient; +import okhttp3.Request; +import okhttp3.RequestBody; +import okhttp3.Response; + +/** + * ok http client learn + */ +public class OkHttpDemo { + + public static void main(String[] args) throws IOException { + + Map cookieStore = Maps.newConcurrentMap(); + String mobile = "15010246761"; + + CookieJar cookieJar = new CookieJar() { + //这里可以做cookie传递,保存等操作 + @Override + public void saveFromResponse(HttpUrl url, List cookies) {//可以做保存cookies操作 + System.out.println("cookies url: " + url.toString()); + cookieStore.putAll(cookies.stream() + .collect(Collectors.toMap(var -> + String.format("%s_%s_%s", var.domain(), var.name(), var.path()), var -> var))); + } + + @NotNull + @Override + public List loadForRequest(@NotNull HttpUrl url) { + //加载新的cookies + System.out.println("load cookies size : " + cookieStore.size()); + return new ArrayList<>(cookieStore.values()); + } + }; + + OkHttpClient client = new OkHttpClient.Builder() + .connectTimeout(60, TimeUnit.SECONDS) + .retryOnConnectionFailure(true) + .cookieJar(cookieJar) + .build(); + + Request request = new Request.Builder() + .url("https://login.10086.cn/needVerifyCode.htm?accountType=01&account=" + mobile + "×tamp="+System.currentTimeMillis()) + .method("GET", null) + .addHeader("Host", "login.10086.cn") + .addHeader("User-Agent", "Mozilla/5.0 (X11; Linux x86_64; rv:69.0) Gecko/20100101 Firefox/69.0") + .addHeader("Accept", "application/json, text/javascript, */*; q=0.01") + .addHeader("Accept-Language", "en-US,en;q=0.5") + .addHeader("Accept-Encoding", "gzip, deflate") + .addHeader("X-Requested-With", "XMLHttpRequest") + .addHeader("DNT", "1") + .addHeader("Connection", "close") + .addHeader("Referer", "https://login.10086.cn/") + .build(); + + Response execute = client.newCall(request).execute(); + + System.out.println(execute.body().string()); + + + MediaType mediaType = MediaType.parse("application/x-www-form-urlencoded"); + RequestBody body = RequestBody.create(mediaType, "userName=15010246761&loginMode=01&channelID=10000"); + Request request0 = new Request.Builder() + .url("https://login.10086.cn/chkNumberAction.action") + .method("POST", body) + .addHeader("Host", "login.10086.cn") + .addHeader("User-Agent", "Mozilla/5.0 (X11; Linux x86_64; rv:69.0) Gecko/20100101 Firefox/69.0") + .addHeader("Accept", "application/json, text/javascript, */*; q=0.01") + .addHeader("Accept-Language", "zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2") + .addHeader("Accept-Encoding", "gzip, deflate") + .addHeader("Content-Type", "application/x-www-form-urlencoded") + .addHeader("X-Requested-With", "XMLHttpRequest") + .addHeader("DNT", "1") + .addHeader("Connection", "close") + .addHeader("Referer", "https://login.10086.cn/") + .addHeader("Pragma", "no-cache") + .addHeader("Cache-Control", "no-cache") + .build(); + Response response = client.newCall(request0).execute(); + + + Request request1 = new Request.Builder() + .url("https://login.10086.cn/sendflag.htm?timestamp="+ (System.currentTimeMillis()/1000)) + .method("GET", null) + .addHeader("Host", "login.10086.cn") + .addHeader("User-Agent", "Mozilla/5.0 (X11; Linux x86_64; rv:69.0) Gecko/20100101 Firefox/69.0") + .addHeader("Accept", "image/webp,*/*") + .addHeader("Accept-Language", "zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2") + .addHeader("Accept-Encoding", "gzip, deflate") + .addHeader("DNT", "1") + .addHeader("Connection", "close") + .addHeader("Referer", "https://login.10086.cn/") + .build(); + Response response1 = client.newCall(request1).execute(); + + + Request request2 = new Request.Builder() + .url("https://login.10086.cn/sendflag.htm?timestamp=1569689017") + .method("GET", null) + .addHeader("Host", "login.10086.cn") + .addHeader("User-Agent", "Mozilla/5.0 (X11; Linux x86_64; rv:69.0) Gecko/20100101 Firefox/69.0") + .addHeader("Accept", "image/webp,*/*") + .addHeader("Accept-Language", "zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2") + .addHeader("Accept-Encoding", "gzip, deflate") + .addHeader("DNT", "1") + .addHeader("Connection", "close") + .addHeader("Referer", "https://login.10086.cn/") + .build(); + Response response2 = client.newCall(request2).execute(); + + MediaType mediaType3 = MediaType.parse("application/x-www-form-urlencoded"); + RequestBody body3 = RequestBody.create(mediaType, "userName=15010246761"); + Request request3 = new Request.Builder() + .url("https://login.10086.cn/loadToken.action") + .method("POST", body) + .addHeader("Host", "login.10086.cn") + .addHeader("User-Agent", "Mozilla/5.0 (X11; Linux x86_64; rv:69.0) Gecko/20100101 Firefox/69.0") + .addHeader("Accept", "application/json, text/javascript, */*; q=0.01") + .addHeader("Accept-Language", "zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2") + .addHeader("Accept-Encoding", "gzip, deflate") + .addHeader("Content-Type", "application/x-www-form-urlencoded") + .addHeader("X-Requested-With", "XMLHttpRequest") + .addHeader("Content-Length", "20") + .addHeader("DNT", "1") + .addHeader("Connection", "close") + .addHeader("Referer", "https://login.10086.cn/") + .addHeader("Pragma", "no-cache") + .addHeader("Cache-Control", "no-cache") + .build(); + Response response3 = client.newCall(request3).execute(); + + System.out.println(response3.body().string()); + + } +} diff --git a/framework/network/okhttp/src/site/markdown/index.md b/framework/network/okhttp/src/site/markdown/index.md new file mode 100644 index 000000000..81abe1fd2 --- /dev/null +++ b/framework/network/okhttp/src/site/markdown/index.md @@ -0,0 +1,6 @@ +# okhttp client lean + +参考: +* [okhttp](https://square.github.io/okhttp/) +* []() +* []() \ No newline at end of file diff --git a/framework/network/pom.xml b/framework/network/pom.xml index 0683e26b0..f26f9a9c5 100644 --- a/framework/network/pom.xml +++ b/framework/network/pom.xml @@ -18,6 +18,7 @@ httpclient web-client retrofit + okhttp @@ -27,6 +28,7 @@ 5.1.5.RELEASE 0.7.14.RELEASE + 4.2.0 @@ -77,6 +79,16 @@ linux-x86_64 + + com.squareup.okhttp3 + okhttp + ${okhttp.version} + + + com.squareup.okhttp3 + okhttp-urlconnection + ${okhttp.version} + From 9d4bab5b4ed8f8a087ab2f6c9242d0077ce7a753 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 13 Nov 2019 02:35:47 +0000 Subject: [PATCH 284/417] Bump jackson.version in /production-component/common-util Bumps `jackson.version` from 2.9.7 to 2.10.1. Updates `jackson-core` from 2.9.7 to 2.10.1 - [Release notes](https://github.com/FasterXML/jackson-core/releases) - [Commits](https://github.com/FasterXML/jackson-core/compare/jackson-core-2.9.7...jackson-core-2.10.1) Updates `jackson-databind` from 2.9.7 to 2.10.1 - [Release notes](https://github.com/FasterXML/jackson/releases) - [Commits](https://github.com/FasterXML/jackson/commits) Updates `jackson-annotations` from 2.9.7 to 2.10.1 - [Release notes](https://github.com/FasterXML/jackson/releases) - [Commits](https://github.com/FasterXML/jackson/commits) Signed-off-by: dependabot[bot] --- production-component/common-util/pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/production-component/common-util/pom.xml b/production-component/common-util/pom.xml index d2013cca3..47d7929e4 100644 --- a/production-component/common-util/pom.xml +++ b/production-component/common-util/pom.xml @@ -29,7 +29,7 @@ 5.0.4 1.2.47 - 2.9.7 + 2.10.1 2.1.1 From d5af89dad17e99d94bac181927e5a217fcaf5696 Mon Sep 17 00:00:00 2001 From: laidu Date: Thu, 5 Dec 2019 22:38:21 +0800 Subject: [PATCH 285/417] sync --- .../boot/app/httpclient/RestTemplateDemo.java | 15 +++++ .../spring/spring-data/spring-mybatis/pom.xml | 5 ++ .../src/main/resources/application.yml | 20 +++--- .../src/main/resources/spy.properties | 17 ++++++ .../main/java/org/laidu/learn/jvm/Test.java | 4 +- language-advance/src/site/markdown/thread.md | 2 + .../learn/language/feature/boxed/Boxing.java | 11 ++-- .../feature/stream/ListStreamDemo.java | 46 +++++++++++++- .../language/feature/switch_/SwitchDemo.java | 61 +++++++++++++++++++ 9 files changed, 161 insertions(+), 20 deletions(-) create mode 100644 framework/spring/spring-boot/spring-boot-app/src/main/java/org/laidu/learn/spring/boot/app/httpclient/RestTemplateDemo.java create mode 100644 framework/spring/spring-data/spring-mybatis/src/main/resources/spy.properties create mode 100644 language-advance/src/site/markdown/thread.md create mode 100644 language-feature/src/main/java/org/laidu/learn/language/feature/switch_/SwitchDemo.java diff --git a/framework/spring/spring-boot/spring-boot-app/src/main/java/org/laidu/learn/spring/boot/app/httpclient/RestTemplateDemo.java b/framework/spring/spring-boot/spring-boot-app/src/main/java/org/laidu/learn/spring/boot/app/httpclient/RestTemplateDemo.java new file mode 100644 index 000000000..dc2728f3f --- /dev/null +++ b/framework/spring/spring-boot/spring-boot-app/src/main/java/org/laidu/learn/spring/boot/app/httpclient/RestTemplateDemo.java @@ -0,0 +1,15 @@ +package org.laidu.learn.spring.boot.app.httpclient; + +import lombok.extern.slf4j.Slf4j; + +/** + * restTemplate 示例 + * + * @author zangtiancai. + * @date 2019/11/28 下午9:02. + */ +@Slf4j +public class RestTemplateDemo { + + +} diff --git a/framework/spring/spring-data/spring-mybatis/pom.xml b/framework/spring/spring-data/spring-mybatis/pom.xml index 746a2a2d8..a03c9cfc1 100644 --- a/framework/spring/spring-data/spring-mybatis/pom.xml +++ b/framework/spring/spring-data/spring-mybatis/pom.xml @@ -25,6 +25,11 @@ + + p6spy + p6spy + 3.8.6 + org.mybatis.spring.boot mybatis-spring-boot-starter diff --git a/framework/spring/spring-data/spring-mybatis/src/main/resources/application.yml b/framework/spring/spring-data/spring-mybatis/src/main/resources/application.yml index 70848c015..2c61f648c 100644 --- a/framework/spring/spring-data/spring-mybatis/src/main/resources/application.yml +++ b/framework/spring/spring-data/spring-mybatis/src/main/resources/application.yml @@ -18,10 +18,10 @@ spring: datasource: data: classpath:db/data.sql schema: classpath:db/schema.sql - url: jdbc:mysql://local-dev:3306/druid_demo?useUnicode=true&characterEncoding=utf8&useSSL=false + url: jdbc:p6spy:mysql://127.0.0.1:3306/demo?useUnicode=true&characterEncoding=utf8&useSSL=false username: root password: root - driver-class-name: com.mysql.jdbc.Driver + driver-class-name: com.p6spy.engine.spy.P6SpyDriver hikari: minimum-idle: 5 maximum-pool-size: 15 @@ -29,14 +29,14 @@ spring: idle-timeout: 10000 pool-name: HikariCP_Demo max-lifetime: 30000 - connection-test-query: select 1 +# connection-test-query: select 1 connection-timeout: 1000 - h2: - console: - enabled: true - path: /h2-console - settings: - trace: true - web-allow-others: true +# h2: +# console: +# enabled: true +# path: /h2-console +# settings: +# trace: true +# web-allow-others: true jackson: property-naming-strategy: SNAKE_CASE diff --git a/framework/spring/spring-data/spring-mybatis/src/main/resources/spy.properties b/framework/spring/spring-data/spring-mybatis/src/main/resources/spy.properties new file mode 100644 index 000000000..ab5b64902 --- /dev/null +++ b/framework/spring/spring-data/spring-mybatis/src/main/resources/spy.properties @@ -0,0 +1,17 @@ +module.log=com.p6spy.engine.logging.P6LogFactory,com.p6spy.engine.outage.P6OutageFactory +# 使用日志系统记录sql +appender=com.p6spy.engine.spy.appender.Slf4JLogger +logMessageFormat=com.p6spy.engine.spy.appender.CustomLineFormat +customLogMessageFormat=[connection:%(category)-%(connectionId)] [elapse:%(executionTime)] [statement:%(effectiveSqlSingleLine)] [sql:%(sqlSingleLine)] +## 配置记录Log例外 +excludecategories=info,debug,result,batc,resultset +# 设置使用p6spy driver来做代理 +deregisterdrivers=true +# 日期格式 +dateformat=yyyy-MM-dd HH:mm:ss +# 实际驱动 +driverlist=com.mysql.jdbc.Driver +# 是否开启慢SQL记录 +outagedetection=true +# 慢SQL记录标准 秒 +outagedetectioninterval=2 \ No newline at end of file diff --git a/language-advance/jvm/src/main/java/org/laidu/learn/jvm/Test.java b/language-advance/jvm/src/main/java/org/laidu/learn/jvm/Test.java index ed5693fe6..4431aeff0 100644 --- a/language-advance/jvm/src/main/java/org/laidu/learn/jvm/Test.java +++ b/language-advance/jvm/src/main/java/org/laidu/learn/jvm/Test.java @@ -4,7 +4,9 @@ /** * 测试 *

                    - * Created by 臧天才 on 2017-09-06 19:55. + * + * @author 臧天才 + * @date 2017-09-06 19:55 */ public class Test { diff --git a/language-advance/src/site/markdown/thread.md b/language-advance/src/site/markdown/thread.md new file mode 100644 index 000000000..b13e405af --- /dev/null +++ b/language-advance/src/site/markdown/thread.md @@ -0,0 +1,2 @@ +# java 线程 + diff --git a/language-feature/src/main/java/org/laidu/learn/language/feature/boxed/Boxing.java b/language-feature/src/main/java/org/laidu/learn/language/feature/boxed/Boxing.java index 9ed89d6f3..b75bf107a 100644 --- a/language-feature/src/main/java/org/laidu/learn/language/feature/boxed/Boxing.java +++ b/language-feature/src/main/java/org/laidu/learn/language/feature/boxed/Boxing.java @@ -11,16 +11,13 @@ public class Boxing { public static void main(String[] args) { // 装箱 - int i = 10; - Integer j = 10; + Integer i = Integer.valueOf(100); + int j = 100; - int k = 222; + Integer k = 222; Integer l = 222; - System.out.println("i == j :"+(i == j)); - - System.out.println("k == l : "+(k == l)); - + System.out.println("i == j :"+(i.equals(j))); } } diff --git a/language-feature/src/main/java/org/laidu/learn/language/feature/stream/ListStreamDemo.java b/language-feature/src/main/java/org/laidu/learn/language/feature/stream/ListStreamDemo.java index f2e417baa..85228cf59 100644 --- a/language-feature/src/main/java/org/laidu/learn/language/feature/stream/ListStreamDemo.java +++ b/language-feature/src/main/java/org/laidu/learn/language/feature/stream/ListStreamDemo.java @@ -1,10 +1,12 @@ package org.laidu.learn.language.feature.stream; -import lombok.extern.slf4j.Slf4j; - +import java.util.Collections; import java.util.List; import java.util.stream.Collectors; +import lombok.Data; +import lombok.extern.slf4j.Slf4j; + /** * list stream demo *

                    @@ -17,12 +19,52 @@ public class ListStreamDemo { + /** + * 流实现 list 转 String + * @param list + * @return + */ public static String list2String(List list){ return list.parallelStream().collect(Collectors.joining(",")); } + /** + * 使用 String.join 实现 List 转 String + * @param list + * @return + */ public static String list2String2(List list){ return String.join(",",list); } + + /** + * list 根据字段去重 + * @param students + * @return + */ + public static List distinctBy(List students) { + + if (students == null || students.isEmpty()) { + return Collections.EMPTY_LIST; + } + + return students.stream() + .distinct() + .collect(Collectors.toList()); + } + + + @Data + public static class Student { + + private Long num; + + private String name; + + private String grade; + + private Integer score; + } + } \ No newline at end of file diff --git a/language-feature/src/main/java/org/laidu/learn/language/feature/switch_/SwitchDemo.java b/language-feature/src/main/java/org/laidu/learn/language/feature/switch_/SwitchDemo.java new file mode 100644 index 000000000..35678b162 --- /dev/null +++ b/language-feature/src/main/java/org/laidu/learn/language/feature/switch_/SwitchDemo.java @@ -0,0 +1,61 @@ +package org.laidu.learn.language.feature.switch_; + +import lombok.extern.slf4j.Slf4j; + +/** + * switch demo + * + * @author zangtiancai. + * @date 2019/12/5 下午9:56. + */ +@Slf4j +public class SwitchDemo { + + static String switchWithInt(Integer i) { + + switch (i) { + case 1: + return "1"; + case 2: + return "2"; + default: + return "3"; + } + } + + static String switchWithChar(Character i) { + + switch (i) { + case 1: + return "1"; + case 2: + return "2"; + default: + return "3"; + } + } + + static String switchWithChar(String i) { + + switch (i) { + case "AA": + return "1"; + case "Aa": + return "2"; + default: + return "3"; + } + } + + public static void main(String[] args) { + + for (int i = 0; i < 30000; i++) { + +// String s = switchWithInt(i); +// String s = switchWithChar((char) i); + String s = switchWithChar( i % 2 == 0 ? "AA" : "Aa"); + + System.out.println(s); + } + } +} From e37fd1d6fe5a6aad2734df50f7e8a6568a29fb3c Mon Sep 17 00:00:00 2001 From: laidu Date: Wed, 11 Dec 2019 22:29:15 +0800 Subject: [PATCH 286/417] sync --- .../app/config/InterceptorConfiguration.java | 53 ++++++ .../spring/boot/app/config/LoggingFilter.java | 63 +++++++ .../boot/app/config/ThreadPoolConfig.java | 73 ++++++++ .../app/controller/LongTaskController.java | 169 ++++++++++++++++++ .../boot/app/service/LongTaskService.java | 29 +++ .../app/service/impl/LongTaskServiceImpl.java | 101 +++++++++++ .../src/main/resources/application.yml | 13 ++ 7 files changed, 501 insertions(+) create mode 100644 framework/spring/spring-boot/spring-boot-app/src/main/java/org/laidu/learn/spring/boot/app/config/InterceptorConfiguration.java create mode 100644 framework/spring/spring-boot/spring-boot-app/src/main/java/org/laidu/learn/spring/boot/app/config/LoggingFilter.java create mode 100644 framework/spring/spring-boot/spring-boot-app/src/main/java/org/laidu/learn/spring/boot/app/config/ThreadPoolConfig.java create mode 100644 framework/spring/spring-boot/spring-boot-app/src/main/java/org/laidu/learn/spring/boot/app/controller/LongTaskController.java create mode 100644 framework/spring/spring-boot/spring-boot-app/src/main/java/org/laidu/learn/spring/boot/app/service/LongTaskService.java create mode 100644 framework/spring/spring-boot/spring-boot-app/src/main/java/org/laidu/learn/spring/boot/app/service/impl/LongTaskServiceImpl.java diff --git a/framework/spring/spring-boot/spring-boot-app/src/main/java/org/laidu/learn/spring/boot/app/config/InterceptorConfiguration.java b/framework/spring/spring-boot/spring-boot-app/src/main/java/org/laidu/learn/spring/boot/app/config/InterceptorConfiguration.java new file mode 100644 index 000000000..b7b019481 --- /dev/null +++ b/framework/spring/spring-boot/spring-boot-app/src/main/java/org/laidu/learn/spring/boot/app/config/InterceptorConfiguration.java @@ -0,0 +1,53 @@ +package org.laidu.learn.spring.boot.app.config; + +import java.util.UUID; + +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; + +import org.slf4j.MDC; +import org.springframework.web.servlet.config.annotation.InterceptorRegistry; +import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter; +import org.springframework.web.servlet.handler.HandlerInterceptorAdapter; + +import lombok.extern.slf4j.Slf4j; + +/** + * 日志拦截器 + * + * @author zangtiancai. + * @date 2019/12/11 下午9:59. + */ +@Slf4j +//@Configuration +public class InterceptorConfiguration extends WebMvcConfigurerAdapter { + + @Override + public void addInterceptors(InterceptorRegistry registry) { + registry.addInterceptor(new LoggingInterceptor()); + } + + static class LoggingInterceptor extends HandlerInterceptorAdapter { + + @Override + public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception { + + String sessionId = UUID.randomUUID().toString(); + String spanId = sessionId; + MDC.put("X-B3-TraceId", sessionId); + MDC.put("X-B3-SpanId", spanId); + return super.preHandle(request, response, handler); + } + + @Override + public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception { + super.afterCompletion(request, response, handler, ex); + + try { + MDC.clear(); + } catch (Exception e) { + log.error("mdc clear 失败", e); + } + } + } +} diff --git a/framework/spring/spring-boot/spring-boot-app/src/main/java/org/laidu/learn/spring/boot/app/config/LoggingFilter.java b/framework/spring/spring-boot/spring-boot-app/src/main/java/org/laidu/learn/spring/boot/app/config/LoggingFilter.java new file mode 100644 index 000000000..9355a58db --- /dev/null +++ b/framework/spring/spring-boot/spring-boot-app/src/main/java/org/laidu/learn/spring/boot/app/config/LoggingFilter.java @@ -0,0 +1,63 @@ +package org.laidu.learn.spring.boot.app.config; + +import java.io.IOException; +import java.util.UUID; + +import javax.servlet.Filter; +import javax.servlet.FilterChain; +import javax.servlet.FilterConfig; +import javax.servlet.ServletException; +import javax.servlet.ServletRequest; +import javax.servlet.ServletResponse; + +import org.slf4j.MDC; +import org.springframework.core.annotation.Order; +import org.springframework.stereotype.Component; + +import lombok.extern.slf4j.Slf4j; + +/** + * 日志拦截器 + * + * @author zangtiancai. + * @date 2019/12/11 下午9:33. + */ +@Slf4j +@Order(1) +@Component +public class LoggingFilter implements Filter { + + + @Override + public void init(FilterConfig filterConfig) throws ServletException { + log.info("初始化日志filter"); + } + + @Override + public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException { + try { + String sessionId = UUID.randomUUID().toString(); + String spanId = sessionId; + MDC.put("X-B3-TraceId", sessionId); + MDC.put("X-B3-SpanId", spanId); + } catch (Exception e) { + log.error("设置 mdc error in filter", e); + } + + try { + filterChain.doFilter(servletRequest, servletResponse); + } finally { + try { + MDC.clear(); + } catch (Exception e) { + log.error("mdc clear 失败", e); + } + } + + } + + @Override + public void destroy() { + log.info("销毁日志filter"); + } +} diff --git a/framework/spring/spring-boot/spring-boot-app/src/main/java/org/laidu/learn/spring/boot/app/config/ThreadPoolConfig.java b/framework/spring/spring-boot/spring-boot-app/src/main/java/org/laidu/learn/spring/boot/app/config/ThreadPoolConfig.java new file mode 100644 index 000000000..63c71ff3f --- /dev/null +++ b/framework/spring/spring-boot/spring-boot-app/src/main/java/org/laidu/learn/spring/boot/app/config/ThreadPoolConfig.java @@ -0,0 +1,73 @@ +package org.laidu.learn.spring.boot.app.config; + +import java.util.Map; +import java.util.concurrent.Executor; +import java.util.concurrent.ThreadPoolExecutor; + +import org.slf4j.MDC; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; +import org.springframework.core.task.TaskDecorator; +import org.springframework.scheduling.annotation.EnableAsync; +import org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor; + +import lombok.extern.slf4j.Slf4j; + +/** + * 全局线程池配置 + * + * @author zangtiancai. + * @date 2019/12/11 下午2:47. + */ +@EnableAsync +@Configuration +public class ThreadPoolConfig { + + public static final String COMMON_FIX_POOL = "commonFixPool"; + + @Bean(COMMON_FIX_POOL) + public Executor commonFixPool() { + ThreadPoolTaskExecutor executor = new ThreadPoolTaskExecutor(); + executor.setCorePoolSize(10); + executor.setMaxPoolSize(10); + executor.setQueueCapacity(5); + executor.setKeepAliveSeconds(60); + executor.setThreadNamePrefix("common-fix-pool-"); + + executor.setTaskDecorator(new MdcTaskDecorator()); + + // 优雅的关闭线程池 + executor.setWaitForTasksToCompleteOnShutdown(true); + executor.setAwaitTerminationSeconds(60); + + executor.setRejectedExecutionHandler(new ThreadPoolExecutor.CallerRunsPolicy()); + return executor; + } + + @Slf4j + static class MdcTaskDecorator implements TaskDecorator { + + @Override + public Runnable decorate(Runnable runnable) { + + Map contextMap = MDC.getCopyOfContextMap(); + return () -> { + try { + try { + MDC.setContextMap(contextMap); + } catch (Exception e) { + log.error("设置 mdc error in pool", e); + } + runnable.run(); + } finally { + try { + MDC.clear(); + } catch (Exception e) { + log.error("mdc clear 失败", e); + } + } + }; + } + } + +} diff --git a/framework/spring/spring-boot/spring-boot-app/src/main/java/org/laidu/learn/spring/boot/app/controller/LongTaskController.java b/framework/spring/spring-boot/spring-boot-app/src/main/java/org/laidu/learn/spring/boot/app/controller/LongTaskController.java new file mode 100644 index 000000000..5eec9be03 --- /dev/null +++ b/framework/spring/spring-boot/spring-boot-app/src/main/java/org/laidu/learn/spring/boot/app/controller/LongTaskController.java @@ -0,0 +1,169 @@ +package org.laidu.learn.spring.boot.app.controller; + +import java.util.Arrays; +import java.util.concurrent.CompletableFuture; +import java.util.concurrent.Future; +import java.util.concurrent.TimeUnit; + +import org.laidu.learn.spring.boot.app.service.LongTaskService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import jodd.util.ThreadUtil; +import lombok.extern.slf4j.Slf4j; + +/** + * 耗时api + * + * @author zangtiancai. + * @date 2019/12/11 下午3:06. + */ +@Slf4j +@RestController +@RequestMapping("/task") +public class LongTaskController { + + private final LongTaskService taskService; + + @Autowired + public LongTaskController(LongTaskService taskService) { + this.taskService = taskService; + } + + @GetMapping("/doTask") + public String doTask() { + return taskService.doTask(null); + } + + @GetMapping("/doTaskFur") + public String doTaskFur() { + + long startTime = System.currentTimeMillis(); + long startTime0 = System.currentTimeMillis(); + + log.info("开始执行任务1, pre expire: {}", System.currentTimeMillis() - startTime); + startTime = System.currentTimeMillis(); + Future result1 = taskService.doTaskOneAsync(); + log.info("开始执行任务2, pre expire: {}", System.currentTimeMillis() - startTime); + startTime = System.currentTimeMillis(); + Future result2 = taskService.doTaskTwoAsync(); + log.info("开始执行任务3, pre expire: {}", System.currentTimeMillis() - startTime); + startTime = System.currentTimeMillis(); + Future result3 = taskService.doTaskThreeAsync(); + + // 等待线程结束 + + String result = null; + + try { + result = String.join(", ", Arrays.asList( +// result1.get(8, TimeUnit.SECONDS), + result2.get(4, TimeUnit.SECONDS), + result3.get(), + String.valueOf(System.currentTimeMillis() - startTime0))); + log.info("任务执行完成, pre expire: {}", System.currentTimeMillis() - startTime0); + } catch (Exception e) { + log.error("获取"); + } + + return result; + } + + @GetMapping("/doTaskAsyncCpl") + public String doTaskAsyncCpl() { + + long startTime = System.currentTimeMillis(); + + CompletableFuture future = taskService.doTaskAsyncCpl(() -> { + + log.info("异步任务开始 in supplier "); + ThreadUtil.sleep(3000L); + log.info("异步任务完成 in supplier "); + + return "result"; + }); + + CompletableFuture future2 = taskService.doTaskAsyncCpl(() -> { + + log.info("异步任务2开始 in supplier "); + ThreadUtil.sleep(4000L); + log.info("异步任务2完成 in supplier "); + + return "result"; + }); + + String result = null; + + // 等待线程结束 + try { + + future.thenCombine(future2, (var1, var2) -> { + log.info("聚合结果"); + return var1 + var2; + }); + + result = String.join(", ", Arrays.asList( + future.get(), + String.valueOf(System.currentTimeMillis() - startTime))); + log.info("任务执行完成, pre expire: {}", System.currentTimeMillis() - startTime); + } catch (Exception e) { + log.error("获取"); + } + + return result; + } + + @GetMapping("/doTaskAsyncPoolCpl") + public String doTaskAsyncPoolCpl() { + + long startTime = System.currentTimeMillis(); + + // 等待线程结束 + CompletableFuture future = taskService.doTaskAsyncPoolCpl(() -> { + + log.info("异步任务开始 in supplier "); + ThreadUtil.sleep(3000L); + log.info("异步任务完成 in supplier "); + + return "result"; + }); + + String result = null; + + try { + result = String.join(", ", Arrays.asList( + future.get(), + String.valueOf(System.currentTimeMillis() - startTime))); + log.info("任务执行完成, pre expire: {}", System.currentTimeMillis() - startTime); + } catch (Exception e) { + log.error("获取"); + } + + return result; + } + + @GetMapping("/doTaskCFur") + public String doTaskCFur() { + + long startTime = System.currentTimeMillis(); + + // 等待线程结束 + CompletableFuture future + = taskService.doTaskCpl(); + + String result = null; + + try { + result = String.join(", ", Arrays.asList( + future.get(), + String.valueOf(System.currentTimeMillis() - startTime))); + log.info("任务执行完成, pre expire: {}", System.currentTimeMillis() - startTime); + } catch (Exception e) { + log.error("获取"); + } + + return result; + } +} diff --git a/framework/spring/spring-boot/spring-boot-app/src/main/java/org/laidu/learn/spring/boot/app/service/LongTaskService.java b/framework/spring/spring-boot/spring-boot-app/src/main/java/org/laidu/learn/spring/boot/app/service/LongTaskService.java new file mode 100644 index 000000000..ae5161603 --- /dev/null +++ b/framework/spring/spring-boot/spring-boot-app/src/main/java/org/laidu/learn/spring/boot/app/service/LongTaskService.java @@ -0,0 +1,29 @@ +package org.laidu.learn.spring.boot.app.service; + +import java.util.concurrent.CompletableFuture; +import java.util.concurrent.Future; +import java.util.function.Supplier; + +/** + * 模拟耗时任务 + * + * @author zangtiancai. + * @date 2019/12/11 下午3:02. + */ +public interface LongTaskService { + + String doTask(Long sleepTime); + + Future doTaskOneAsync(); + + Future doTaskTwoAsync(); + + Future doTaskThreeAsync(); + + CompletableFuture doTaskCpl(); + + CompletableFuture doTaskAsyncCpl(Supplier supplier); + + CompletableFuture doTaskAsyncPoolCpl(Supplier supplier); + +} diff --git a/framework/spring/spring-boot/spring-boot-app/src/main/java/org/laidu/learn/spring/boot/app/service/impl/LongTaskServiceImpl.java b/framework/spring/spring-boot/spring-boot-app/src/main/java/org/laidu/learn/spring/boot/app/service/impl/LongTaskServiceImpl.java new file mode 100644 index 000000000..34b663312 --- /dev/null +++ b/framework/spring/spring-boot/spring-boot-app/src/main/java/org/laidu/learn/spring/boot/app/service/impl/LongTaskServiceImpl.java @@ -0,0 +1,101 @@ +package org.laidu.learn.spring.boot.app.service.impl; + +import java.util.Random; +import java.util.concurrent.CompletableFuture; +import java.util.concurrent.Executor; +import java.util.concurrent.Future; +import java.util.function.Supplier; + +import org.laidu.learn.spring.boot.app.config.ThreadPoolConfig; +import org.laidu.learn.spring.boot.app.service.LongTaskService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.scheduling.annotation.Async; +import org.springframework.scheduling.annotation.AsyncResult; +import org.springframework.stereotype.Service; + +import jodd.util.ThreadUtil; +import lombok.extern.slf4j.Slf4j; + +/** + * @author zangtiancai. + * @date 2019/12/11 下午3:02. + */ +@Slf4j +@Service +public class LongTaskServiceImpl implements LongTaskService { + + private static Random random = new Random(); + + @Autowired + private Executor commonFixPool; + + @Override + public String doTask(Long sleepTime) { + log.info("开始做任务"); + long start = System.currentTimeMillis(); + long ms = sleepTime != null ? sleepTime : random.nextInt(10000); + ThreadUtil.sleep(ms); + long end = System.currentTimeMillis(); + log.info("完成任务,耗时:" + (end - start) + "毫秒"); + return "task"; + } + + @Override + @Async(ThreadPoolConfig.COMMON_FIX_POOL) + public Future doTaskOneAsync() { + + log.info("开始做任务1"); + long start = System.currentTimeMillis(); + ThreadUtil.sleep(random.nextInt(10000)); + long end = System.currentTimeMillis(); + log.info("完成任务1,耗时:" + (end - start) + "毫秒"); + return new AsyncResult<>("task1"); + } + + @Override + @Async(ThreadPoolConfig.COMMON_FIX_POOL) + public Future doTaskTwoAsync() { + log.info("开始做任务二"); + long start = System.currentTimeMillis(); + ThreadUtil.sleep(3000); + long end = System.currentTimeMillis(); + log.info("完成任务二,耗时:" + (end - start) + "毫秒"); + return new AsyncResult<>("task2"); + } + + @Override + @Async(ThreadPoolConfig.COMMON_FIX_POOL) + public Future doTaskThreeAsync() { + log.info("开始做任务三"); + long start = System.currentTimeMillis(); + ThreadUtil.sleep(random.nextInt(10000)); + long end = System.currentTimeMillis(); + log.info("完成任务三,耗时:" + (end - start) + "毫秒"); + return new AsyncResult<>("task3"); + } + + @Override + public CompletableFuture doTaskCpl() { + return CompletableFuture.supplyAsync(() -> this.doTask(null)); + } + + + @Override + public CompletableFuture doTaskAsyncCpl(Supplier supplier) { + log.info("异步任务开始 in caller "); + CompletableFuture supplyAsync = + CompletableFuture.supplyAsync(supplier, commonFixPool); + log.info("异步任务开始 in caller"); + return supplyAsync; + } + + + @Override + @Async(ThreadPoolConfig.COMMON_FIX_POOL) + public CompletableFuture doTaskAsyncPoolCpl(Supplier supplier) { + log.info("异步任务开始 in commonFixPool "); + CompletableFuture supplyAsync = CompletableFuture.completedFuture(supplier.get()); + log.info("异步任务开始 in commonFixPool"); + return supplyAsync; + } +} diff --git a/framework/spring/spring-boot/spring-boot-app/src/main/resources/application.yml b/framework/spring/spring-boot/spring-boot-app/src/main/resources/application.yml index aa66cded5..806df9f06 100644 --- a/framework/spring/spring-boot/spring-boot-app/src/main/resources/application.yml +++ b/framework/spring/spring-boot/spring-boot-app/src/main/resources/application.yml @@ -38,3 +38,16 @@ management: binders: jvm: enabled: true + +# undertow web 容器配置 +server: + undertow: + io-threads: 1 + worker-threads: 8 + + +# 日志格式配置 +logging: + pattern: + console: "%d{yyyy-MM-dd HH:mm:ss.SSS} %5p [${spring.application.name:-},%X{X-B3-TraceId:-},%X{X-B3-SpanId:-},%X{X-Span-Export:-}] ${PID:- } --- [%t] %-40.40logger{39} : %m%n${LOG_EXCEPTION_CONVERSION_WORD:-%wEx}" + From 18724e6a2e113ec68071ff3adbb8047ccc681eba Mon Sep 17 00:00:00 2001 From: laidu Date: Mon, 23 Dec 2019 22:08:44 +0800 Subject: [PATCH 287/417] sync --- .../boot/app/config/CustomProperties.java | 31 +++++++++++++++++++ .../spring/boot/app/controller/CashedApi.java | 31 +++++++++++++++++++ .../boot/app/service/ThreadLocalService.java | 12 +++++++ .../service/impl/ThreadLocalServiceImpl.java | 29 +++++++++++++++++ .../src/main/resources/application.yml | 13 ++++++-- 5 files changed, 113 insertions(+), 3 deletions(-) create mode 100644 framework/spring/spring-boot/spring-boot-app/src/main/java/org/laidu/learn/spring/boot/app/config/CustomProperties.java create mode 100644 framework/spring/spring-boot/spring-boot-app/src/main/java/org/laidu/learn/spring/boot/app/controller/CashedApi.java create mode 100644 framework/spring/spring-boot/spring-boot-app/src/main/java/org/laidu/learn/spring/boot/app/service/ThreadLocalService.java create mode 100644 framework/spring/spring-boot/spring-boot-app/src/main/java/org/laidu/learn/spring/boot/app/service/impl/ThreadLocalServiceImpl.java diff --git a/framework/spring/spring-boot/spring-boot-app/src/main/java/org/laidu/learn/spring/boot/app/config/CustomProperties.java b/framework/spring/spring-boot/spring-boot-app/src/main/java/org/laidu/learn/spring/boot/app/config/CustomProperties.java new file mode 100644 index 000000000..76da7df0e --- /dev/null +++ b/framework/spring/spring-boot/spring-boot-app/src/main/java/org/laidu/learn/spring/boot/app/config/CustomProperties.java @@ -0,0 +1,31 @@ +package org.laidu.learn.spring.boot.app.config; + +import java.util.List; +import java.util.Map; + +import javax.annotation.PostConstruct; + +import org.springframework.boot.context.properties.ConfigurationProperties; +import org.springframework.context.annotation.Configuration; + +import lombok.Data; + +/** + * 配置demo + * 集合类型不能用@Value进行注入,必须要通过类对象进行构造 + * @author zangtiancai. + * @date 2019/12/20 下午12:20. + */ +@Data +@Configuration +@ConfigurationProperties("sbapp.config") +public class CustomProperties { + + private Map> mapConfig; + + @PostConstruct + public void init() { + + System.out.println(mapConfig); + } +} diff --git a/framework/spring/spring-boot/spring-boot-app/src/main/java/org/laidu/learn/spring/boot/app/controller/CashedApi.java b/framework/spring/spring-boot/spring-boot-app/src/main/java/org/laidu/learn/spring/boot/app/controller/CashedApi.java new file mode 100644 index 000000000..24ab2347d --- /dev/null +++ b/framework/spring/spring-boot/spring-boot-app/src/main/java/org/laidu/learn/spring/boot/app/controller/CashedApi.java @@ -0,0 +1,31 @@ +package org.laidu.learn.spring.boot.app.controller; + +import org.laidu.learn.spring.boot.app.service.ThreadLocalService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestParam; +import org.springframework.web.bind.annotation.RestController; + +import lombok.extern.slf4j.Slf4j; + +/** + * 模拟内存泄漏 + * + * @author zangtiancai. + * @date 2019/12/23 下午9:32. + */ +@Slf4j +@RestController +@RequestMapping("/cashed") +public class CashedApi { + + @Autowired + private ThreadLocalService threadLocalService; + + @GetMapping("/threadLocal") + public String threadLocal(@RequestParam("body") String body) { + + return threadLocalService.sayHello(body); + } +} diff --git a/framework/spring/spring-boot/spring-boot-app/src/main/java/org/laidu/learn/spring/boot/app/service/ThreadLocalService.java b/framework/spring/spring-boot/spring-boot-app/src/main/java/org/laidu/learn/spring/boot/app/service/ThreadLocalService.java new file mode 100644 index 000000000..84a138f4a --- /dev/null +++ b/framework/spring/spring-boot/spring-boot-app/src/main/java/org/laidu/learn/spring/boot/app/service/ThreadLocalService.java @@ -0,0 +1,12 @@ +package org.laidu.learn.spring.boot.app.service; + +/** + * 包含threadLocal对象,重现内存泄漏问题 + * + * @author zangtiancai. + * @date 2019/12/23 下午9:28. + */ +public interface ThreadLocalService { + + String sayHello(String reqBody); +} diff --git a/framework/spring/spring-boot/spring-boot-app/src/main/java/org/laidu/learn/spring/boot/app/service/impl/ThreadLocalServiceImpl.java b/framework/spring/spring-boot/spring-boot-app/src/main/java/org/laidu/learn/spring/boot/app/service/impl/ThreadLocalServiceImpl.java new file mode 100644 index 000000000..c50e8175d --- /dev/null +++ b/framework/spring/spring-boot/spring-boot-app/src/main/java/org/laidu/learn/spring/boot/app/service/impl/ThreadLocalServiceImpl.java @@ -0,0 +1,29 @@ +package org.laidu.learn.spring.boot.app.service.impl; + +import java.util.UUID; + +import org.laidu.learn.spring.boot.app.service.ThreadLocalService; +import org.springframework.stereotype.Service; + +import lombok.extern.slf4j.Slf4j; + +/** + * @author zangtiancai. + * @date 2019/12/23 下午9:30. + */ +@Slf4j +@Service +public class ThreadLocalServiceImpl implements ThreadLocalService { + + private static final ThreadLocal BODY_CACHED = new ThreadLocal<>(); + + @Override + public String sayHello(String reqBody) { + String body = reqBody; + for (int i = 0; i < 100; i++) { + body += body+UUID.randomUUID().toString(); + } + BODY_CACHED.set(reqBody+UUID.randomUUID().toString()+body); + return "hello"; + } +} diff --git a/framework/spring/spring-boot/spring-boot-app/src/main/resources/application.yml b/framework/spring/spring-boot/spring-boot-app/src/main/resources/application.yml index 806df9f06..233f022da 100644 --- a/framework/spring/spring-boot/spring-boot-app/src/main/resources/application.yml +++ b/framework/spring/spring-boot/spring-boot-app/src/main/resources/application.yml @@ -6,7 +6,7 @@ spring: # jackson: # property-naming-strategy: SNAKE_CASE application: - name: spring-boot-app-1 + name: sbApp admin: enabled: true @@ -42,8 +42,8 @@ management: # undertow web 容器配置 server: undertow: - io-threads: 1 - worker-threads: 8 + io-threads: 16 + worker-threads: 200 # 日志格式配置 @@ -51,3 +51,10 @@ logging: pattern: console: "%d{yyyy-MM-dd HH:mm:ss.SSS} %5p [${spring.application.name:-},%X{X-B3-TraceId:-},%X{X-B3-SpanId:-},%X{X-Span-Export:-}] ${PID:- } --- [%t] %-40.40logger{39} : %m%n${LOG_EXCEPTION_CONVERSION_WORD:-%wEx}" +sbapp: + config: + mapConfig: + aaa: + - aaa + bbb: + - bbb \ No newline at end of file From 7fca06971e15bb3be56311edb0d4c9f39c70df5d Mon Sep 17 00:00:00 2001 From: laidu Date: Fri, 27 Dec 2019 19:15:34 +0800 Subject: [PATCH 288/417] sync --- .../learn/concurrent/daemon/DaemonDemo.java | 19 ++++++++++++------- .../synchronizer/CyclicBarrierDemo.java | 15 +++++++++++---- 2 files changed, 23 insertions(+), 11 deletions(-) diff --git a/language-advance/concurrent/src/main/java/org/laidu/learn/concurrent/daemon/DaemonDemo.java b/language-advance/concurrent/src/main/java/org/laidu/learn/concurrent/daemon/DaemonDemo.java index 838b5febe..d260cae56 100644 --- a/language-advance/concurrent/src/main/java/org/laidu/learn/concurrent/daemon/DaemonDemo.java +++ b/language-advance/concurrent/src/main/java/org/laidu/learn/concurrent/daemon/DaemonDemo.java @@ -1,12 +1,17 @@ package org.laidu.learn.concurrent.daemon; -import jodd.util.ThreadUtil; -import lombok.extern.slf4j.Slf4j; -import org.apache.commons.lang3.RandomUtils; - import java.util.ArrayList; import java.util.List; -import java.util.concurrent.*; +import java.util.concurrent.ArrayBlockingQueue; +import java.util.concurrent.Callable; +import java.util.concurrent.ExecutorService; +import java.util.concurrent.ThreadPoolExecutor; +import java.util.concurrent.TimeUnit; + +import org.apache.commons.lang3.RandomUtils; + +import jodd.util.ThreadUtil; +import lombok.extern.slf4j.Slf4j; /** * 守护线程 @@ -36,8 +41,8 @@ public static void main(String[] args) throws InterruptedException { int coreSize = 5; int maxSize = 10; - ExecutorService daemonService = new ThreadPoolExecutor(coreSize,maxSize,0L, TimeUnit.MICROSECONDS,new ArrayBlockingQueue<>(1) - ,r -> { + ExecutorService daemonService = new ThreadPoolExecutor(coreSize, maxSize, 0L, TimeUnit.MICROSECONDS,new ArrayBlockingQueue<>(1) + , r -> { Thread thread = new Thread(r); thread.setDaemon(true); System.out.println("创建新的线程 : "+ thread.getName()); diff --git a/language-advance/concurrent/src/main/java/org/laidu/learn/concurrent/synchronizer/CyclicBarrierDemo.java b/language-advance/concurrent/src/main/java/org/laidu/learn/concurrent/synchronizer/CyclicBarrierDemo.java index 857c89fdf..c69ab95ce 100644 --- a/language-advance/concurrent/src/main/java/org/laidu/learn/concurrent/synchronizer/CyclicBarrierDemo.java +++ b/language-advance/concurrent/src/main/java/org/laidu/learn/concurrent/synchronizer/CyclicBarrierDemo.java @@ -1,11 +1,18 @@ package org.laidu.learn.concurrent.synchronizer; -import jodd.util.ThreadUtil; -import lombok.extern.slf4j.Slf4j; +import java.util.concurrent.ArrayBlockingQueue; +import java.util.concurrent.BrokenBarrierException; +import java.util.concurrent.CyclicBarrier; +import java.util.concurrent.ExecutorService; +import java.util.concurrent.ThreadPoolExecutor; +import java.util.concurrent.TimeUnit; +import java.util.concurrent.TimeoutException; + import org.laidu.learn.concurrent.common.Worker; -import java.util.concurrent.*; +import jodd.util.ThreadUtil; +import lombok.extern.slf4j.Slf4j; /** * cyclicBarrier worker @@ -54,7 +61,7 @@ public void run() { log.info("waiting count: {}", cyclicBarrier.getNumberWaiting()); cyclicBarrier.await(500,TimeUnit.MILLISECONDS); - }catch (BrokenBarrierException | TimeoutException e){ + } catch (BrokenBarrierException | TimeoutException e){ log.warn(" 超时 "); } catch (Exception e) { e.printStackTrace(); From 55545040fd8f0e5d3ce88b5997822091c36aff19 Mon Sep 17 00:00:00 2001 From: laidu Date: Tue, 31 Dec 2019 18:53:12 +0800 Subject: [PATCH 289/417] sync --- .../learn/concurrent/daemon/DaemonDemo.java | 49 ++++++++++++------- 1 file changed, 30 insertions(+), 19 deletions(-) diff --git a/language-advance/concurrent/src/main/java/org/laidu/learn/concurrent/daemon/DaemonDemo.java b/language-advance/concurrent/src/main/java/org/laidu/learn/concurrent/daemon/DaemonDemo.java index d260cae56..c1027dee2 100644 --- a/language-advance/concurrent/src/main/java/org/laidu/learn/concurrent/daemon/DaemonDemo.java +++ b/language-advance/concurrent/src/main/java/org/laidu/learn/concurrent/daemon/DaemonDemo.java @@ -38,6 +38,36 @@ public static String doWork(){ public static void main(String[] args) throws InterruptedException { + Thread main = Thread.currentThread(); + for (int i = 0; i < 100; i++) { + log.info("main thread state : {}", main.getState()); + } + log.info("main 线程结束"); + + } + + private static void threadState() { + log.info("创建线程t1"); + Thread t1 = new Thread(() -> { + + for (long i = 0; i < 300L; i++) { + } + + ThreadUtil.sleep(1); + }, "t1"); + + new Thread(() -> { + for (;t1.getState() != Thread.State.TERMINATED;) { + log.info("t1 线程state: {}", t1.getState()); + } + log.info("t1 线程state: {}", t1.getState()); + }, "t2").start(); + + t1.setDaemon(true); + t1.start(); + } + + private static void deamonPool() { int coreSize = 5; int maxSize = 10; @@ -57,24 +87,5 @@ public static void main(String[] args) throws InterruptedException { } tasks.forEach(daemonService::submit); - -// List> futures = daemonService.invokeAll(tasks); -// -// futures.forEach( future -> { -// try { -// System.out.println(future.get()); -// } catch (InterruptedException e) { -// e.printStackTrace(); -// } catch (ExecutionException e) { -// e.printStackTrace(); -// } -// }); - -// ThreadUtil.sleep(2500); -// daemonService.invokeAll(tasks); -// -// ThreadUtil.sleep(2500); -// daemonService.invokeAll(tasks); - } } \ No newline at end of file From 629db0a6e7c44b806da284eb53be76fbafb0a5bb Mon Sep 17 00:00:00 2001 From: snyk-bot Date: Thu, 9 Jan 2020 21:02:21 +0000 Subject: [PATCH 290/417] fix: upgrade org.projectlombok:lombok from 1.18.8 to 1.18.10 Snyk has created this PR to upgrade org.projectlombok:lombok from 1.18.8 to 1.18.10. See this package in NPM: https://www.npmjs.com/package/org.projectlombok:lombok See this project in Snyk: https://app.snyk.io/org/laidu/project/878b21f2-65dd-477c-96f7-ca8bf8b9afe9?utm_source=github&utm_medium=upgrade-pr --- pom.xml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pom.xml b/pom.xml index 577dfc928..2b2747dc2 100644 --- a/pom.xml +++ b/pom.xml @@ -21,7 +21,7 @@ Hudson - + @@ -83,7 +83,7 @@ 2.1.0 - 1.18.8 + 1.18.10 1.2.3 From 07a231eb20531b0f8020bd9d6ab121b617b31735 Mon Sep 17 00:00:00 2001 From: snyk-bot Date: Thu, 9 Jan 2020 21:02:27 +0000 Subject: [PATCH 291/417] fix: upgrade net.logstash.logback:logstash-logback-encoder from 5.2 to 5.3 Snyk has created this PR to upgrade net.logstash.logback:logstash-logback-encoder from 5.2 to 5.3. See this package in NPM: https://www.npmjs.com/package/net.logstash.logback:logstash-logback-encoder See this project in Snyk: https://app.snyk.io/org/laidu/project/878b21f2-65dd-477c-96f7-ca8bf8b9afe9?utm_source=github&utm_medium=upgrade-pr --- pom.xml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pom.xml b/pom.xml index 577dfc928..bf4d910f2 100644 --- a/pom.xml +++ b/pom.xml @@ -21,7 +21,7 @@ Hudson - + @@ -92,7 +92,7 @@ ${junit4.version}.0 1.0.2 - 5.2 + 5.3 From e73dc254f5c6bbfc5b6c1d7e5040f9ddbae98c48 Mon Sep 17 00:00:00 2001 From: snyk-bot Date: Thu, 9 Jan 2020 21:10:09 +0000 Subject: [PATCH 292/417] fix: upgrade com.sun.xml.bind:jaxb-impl from 2.3.0 to 2.3.2 Snyk has created this PR to upgrade com.sun.xml.bind:jaxb-impl from 2.3.0 to 2.3.2. See this package in NPM: https://www.npmjs.com/package/com.sun.xml.bind:jaxb-impl See this project in Snyk: https://app.snyk.io/org/laidu/project/6e071a1e-73b4-4fa1-b2cc-d4b736f8ed05?utm_source=github&utm_medium=upgrade-pr --- framework/spring/pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/framework/spring/pom.xml b/framework/spring/pom.xml index 5716537d7..ca712d174 100644 --- a/framework/spring/pom.xml +++ b/framework/spring/pom.xml @@ -131,7 +131,7 @@ com.sun.xml.bind jaxb-impl - 2.3.0 + 2.3.2 javax.activation From fe59d3ab07f22a4c7effd7afdf650e5d8e77c496 Mon Sep 17 00:00:00 2001 From: snyk-bot Date: Thu, 9 Jan 2020 21:10:13 +0000 Subject: [PATCH 293/417] fix: upgrade com.sun.xml.messaging.saaj:saaj-impl from 1.4.0 to 1.5.1 Snyk has created this PR to upgrade com.sun.xml.messaging.saaj:saaj-impl from 1.4.0 to 1.5.1. See this package in NPM: https://www.npmjs.com/package/com.sun.xml.messaging.saaj:saaj-impl See this project in Snyk: https://app.snyk.io/org/laidu/project/6e071a1e-73b4-4fa1-b2cc-d4b736f8ed05?utm_source=github&utm_medium=upgrade-pr --- framework/spring/pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/framework/spring/pom.xml b/framework/spring/pom.xml index 5716537d7..6aa467a95 100644 --- a/framework/spring/pom.xml +++ b/framework/spring/pom.xml @@ -141,7 +141,7 @@ com.sun.xml.messaging.saaj saaj-impl - 1.4.0 + 1.5.1 From 997effbaf3c6aabeda1f56cc2e51f82913b5d03d Mon Sep 17 00:00:00 2001 From: snyk-bot Date: Thu, 9 Jan 2020 21:56:40 +0000 Subject: [PATCH 294/417] fix: upgrade com.amazonaws:aws-java-sdk-s3 from 1.11.423 to 1.11.699 Snyk has created this PR to upgrade com.amazonaws:aws-java-sdk-s3 from 1.11.423 to 1.11.699. See this package in NPM: https://www.npmjs.com/package/com.amazonaws:aws-java-sdk-s3 See this project in Snyk: https://app.snyk.io/org/laidu/project/fc4bbe6d-272c-4f04-ba55-fb5077f11f03?utm_source=github&utm_medium=upgrade-pr --- framework/aws/pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/framework/aws/pom.xml b/framework/aws/pom.xml index 3b232d922..364f12fed 100644 --- a/framework/aws/pom.xml +++ b/framework/aws/pom.xml @@ -17,7 +17,7 @@ - 1.11.423 + 1.11.699 From 0ba962dde92d5892d937be012ba84005323950d6 Mon Sep 17 00:00:00 2001 From: snyk-bot Date: Fri, 10 Jan 2020 06:20:38 +0000 Subject: [PATCH 295/417] fix: upgrade com.squareup.okhttp3:okhttp from 4.2.0 to 4.2.2 Snyk has created this PR to upgrade com.squareup.okhttp3:okhttp from 4.2.0 to 4.2.2. See this package in NPM: https://www.npmjs.com/package/com.squareup.okhttp3:okhttp See this project in Snyk: https://app.snyk.io/org/laidu/project/283bfbf9-8f9a-47d2-9677-589053f6343a?utm_source=github&utm_medium=upgrade-pr --- framework/network/pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/framework/network/pom.xml b/framework/network/pom.xml index f26f9a9c5..afe6febe6 100644 --- a/framework/network/pom.xml +++ b/framework/network/pom.xml @@ -28,7 +28,7 @@ 5.1.5.RELEASE 0.7.14.RELEASE - 4.2.0 + 4.2.2 From dedd47064c0f02968fcfaaf13bba0166bd96d536 Mon Sep 17 00:00:00 2001 From: snyk-bot Date: Fri, 10 Jan 2020 06:23:15 +0000 Subject: [PATCH 296/417] fix: framework/spring/spring-cloud/admin-dashboard/pom.xml & framework/spring/spring-cloud/pom.xml to reduce vulnerabilities The following vulnerabilities are fixed with an upgrade: - https://snyk.io/vuln/SNYK-JAVA-COMFASTERXMLJACKSONCORE-72448 - https://snyk.io/vuln/SNYK-JAVA-COMFASTERXMLJACKSONCORE-72449 - https://snyk.io/vuln/SNYK-JAVA-COMFASTERXMLJACKSONCORE-72450 - https://snyk.io/vuln/SNYK-JAVA-COMFASTERXMLJACKSONCORE-72451 - https://snyk.io/vuln/SNYK-JAVA-COMFASTERXMLJACKSONCORE-72882 - https://snyk.io/vuln/SNYK-JAVA-COMFASTERXMLJACKSONCORE-72883 - https://snyk.io/vuln/SNYK-JAVA-COMFASTERXMLJACKSONCORE-72884 --- framework/spring/spring-cloud/admin-dashboard/pom.xml | 2 +- framework/spring/spring-cloud/pom.xml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/framework/spring/spring-cloud/admin-dashboard/pom.xml b/framework/spring/spring-cloud/admin-dashboard/pom.xml index 686fd14e4..14e6a63a0 100644 --- a/framework/spring/spring-cloud/admin-dashboard/pom.xml +++ b/framework/spring/spring-cloud/admin-dashboard/pom.xml @@ -27,7 +27,7 @@ de.codecentric spring-boot-admin-starter-client - 2.0.0 + 2.2.1 diff --git a/framework/spring/spring-cloud/pom.xml b/framework/spring/spring-cloud/pom.xml index 2dd48c388..47d95a43e 100644 --- a/framework/spring/spring-cloud/pom.xml +++ b/framework/spring/spring-cloud/pom.xml @@ -27,7 +27,7 @@ UTF-8 UTF-8 - 2.0.3 + 2.2.1 From 18799ed9966d32ed5c6cb177dec59c8e2b5b32fd Mon Sep 17 00:00:00 2001 From: snyk-bot Date: Fri, 10 Jan 2020 06:51:09 +0000 Subject: [PATCH 297/417] fix: upgrade cglib:cglib from 3.2.9 to 3.3.0 Snyk has created this PR to upgrade cglib:cglib from 3.2.9 to 3.3.0. See this package in NPM: https://www.npmjs.com/package/cglib:cglib See this project in Snyk: https://app.snyk.io/org/laidu/project/a48ad51d-5b02-4fe4-ae35-454f62100b64?utm_source=github&utm_medium=upgrade-pr --- language-advance/pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/language-advance/pom.xml b/language-advance/pom.xml index 362621c0e..bca5e2759 100644 --- a/language-advance/pom.xml +++ b/language-advance/pom.xml @@ -28,7 +28,7 @@ 1.9.2 - 3.2.9 + 3.3.0 1.60 11 From cb55fee4872e40b77397c5c2cd56be0691cb42dd Mon Sep 17 00:00:00 2001 From: snyk-bot Date: Fri, 10 Jan 2020 06:51:13 +0000 Subject: [PATCH 298/417] fix: upgrade org.aspectj:aspectjweaver from 1.9.2 to 1.9.5 Snyk has created this PR to upgrade org.aspectj:aspectjweaver from 1.9.2 to 1.9.5. See this package in NPM: https://www.npmjs.com/package/org.aspectj:aspectjweaver See this project in Snyk: https://app.snyk.io/org/laidu/project/a48ad51d-5b02-4fe4-ae35-454f62100b64?utm_source=github&utm_medium=upgrade-pr --- language-advance/pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/language-advance/pom.xml b/language-advance/pom.xml index 362621c0e..91f1c141c 100644 --- a/language-advance/pom.xml +++ b/language-advance/pom.xml @@ -27,7 +27,7 @@ - 1.9.2 + 1.9.5 3.2.9 1.60 11 From b3c97f2024385fd44e692199efb67e84468ffb5d Mon Sep 17 00:00:00 2001 From: snyk-bot Date: Fri, 10 Jan 2020 06:51:45 +0000 Subject: [PATCH 299/417] fix: upgrade javax.xml.bind:jaxb-api from 2.3.0 to 2.3.1 Snyk has created this PR to upgrade javax.xml.bind:jaxb-api from 2.3.0 to 2.3.1. See this package in NPM: https://www.npmjs.com/package/javax.xml.bind:jaxb-api See this project in Snyk: https://app.snyk.io/org/laidu/project/049cc3f2-e575-4e73-bb9c-0a614fd06f65?utm_source=github&utm_medium=upgrade-pr --- framework/spring/pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/framework/spring/pom.xml b/framework/spring/pom.xml index 9c9382782..d3b3baf1e 100644 --- a/framework/spring/pom.xml +++ b/framework/spring/pom.xml @@ -121,7 +121,7 @@ javax.xml.bind jaxb-api - 2.3.0 + 2.3.1 com.sun.xml.bind From ab08d0c58dd5cc21942679b916b9ca87d51ba065 Mon Sep 17 00:00:00 2001 From: snyk-bot Date: Fri, 10 Jan 2020 06:51:49 +0000 Subject: [PATCH 300/417] fix: upgrade com.sun.xml.bind:jaxb-core from 2.3.0 to 2.3.0.1 Snyk has created this PR to upgrade com.sun.xml.bind:jaxb-core from 2.3.0 to 2.3.0.1. See this package in NPM: https://www.npmjs.com/package/com.sun.xml.bind:jaxb-core See this project in Snyk: https://app.snyk.io/org/laidu/project/049cc3f2-e575-4e73-bb9c-0a614fd06f65?utm_source=github&utm_medium=upgrade-pr --- framework/spring/pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/framework/spring/pom.xml b/framework/spring/pom.xml index 9c9382782..63c58c00e 100644 --- a/framework/spring/pom.xml +++ b/framework/spring/pom.xml @@ -126,7 +126,7 @@ com.sun.xml.bind jaxb-core - 2.3.0 + 2.3.0.1 com.sun.xml.bind From 397fc50a82b5d0f54ef9f96397942d803975b92a Mon Sep 17 00:00:00 2001 From: snyk-bot Date: Sun, 12 Jan 2020 22:10:28 +0000 Subject: [PATCH 301/417] fix: upgrade org.eclipse.jetty:jetty-server from 9.4.12.v20180830 to 9.4.25.v20191220 Snyk has created this PR to upgrade org.eclipse.jetty:jetty-server from 9.4.12.v20180830 to 9.4.25.v20191220. See this package in NPM: https://www.npmjs.com/package/org.eclipse.jetty:jetty-server See this project in Snyk: https://app.snyk.io/org/laidu/project/5a6c3558-6eff-4371-8037-03e17e99b9eb?utm_source=github&utm_medium=upgrade-pr --- language-feature/pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/language-feature/pom.xml b/language-feature/pom.xml index d4dee08fe..e03f4765f 100644 --- a/language-feature/pom.xml +++ b/language-feature/pom.xml @@ -30,7 +30,7 @@ org.eclipse.jetty jetty-server - 9.4.12.v20180830 + 9.4.25.v20191220 From 5c6e9cc25eb157cdd14b3a7d9d709b8bbfb057f8 Mon Sep 17 00:00:00 2001 From: snyk-bot Date: Sun, 12 Jan 2020 22:44:02 +0000 Subject: [PATCH 302/417] fix: upgrade it.unimi.dsi:fastutil from 8.1.1 to 8.3.0 Snyk has created this PR to upgrade it.unimi.dsi:fastutil from 8.1.1 to 8.3.0. See this package in NPM: https://www.npmjs.com/package/it.unimi.dsi:fastutil See this project in Snyk: https://app.snyk.io/org/laidu/project/8379f9ec-2088-4888-aac6-8c4a903c4f04?utm_source=github&utm_medium=upgrade-pr --- convenient-util/fastutil/pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/convenient-util/fastutil/pom.xml b/convenient-util/fastutil/pom.xml index faf37e4f9..fa8673b80 100644 --- a/convenient-util/fastutil/pom.xml +++ b/convenient-util/fastutil/pom.xml @@ -15,7 +15,7 @@ it.unimi.dsi fastutil - 8.1.1 + 8.3.0 From bd0747e17942a582a975f8debec0cbf44a15c320 Mon Sep 17 00:00:00 2001 From: snyk-bot Date: Sun, 12 Jan 2020 23:13:24 +0000 Subject: [PATCH 303/417] fix: upgrade org.springframework:spring-webflux from 5.1.5.RELEASE to 5.2.2.RELEASE Snyk has created this PR to upgrade org.springframework:spring-webflux from 5.1.5.RELEASE to 5.2.2.RELEASE. See this package in NPM: https://www.npmjs.com/package/org.springframework:spring-webflux See this project in Snyk: https://app.snyk.io/org/laidu/project/1307fce4-5ce9-4eae-a659-04c40475f310?utm_source=github&utm_medium=upgrade-pr --- framework/network/pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/framework/network/pom.xml b/framework/network/pom.xml index afe6febe6..7d8fa4794 100644 --- a/framework/network/pom.xml +++ b/framework/network/pom.xml @@ -26,7 +26,7 @@ 2.5.0 2.1.0-alpha24 - 5.1.5.RELEASE + 5.2.2.RELEASE 0.7.14.RELEASE 4.2.2 From 31845b26a853c0d8bfffe8d5f2fb82280c4cfda3 Mon Sep 17 00:00:00 2001 From: snyk-bot Date: Sun, 12 Jan 2020 23:13:28 +0000 Subject: [PATCH 304/417] fix: upgrade io.netty:netty-transport-native-epoll from 4.1.34.Final to 4.1.44.Final Snyk has created this PR to upgrade io.netty:netty-transport-native-epoll from 4.1.34.Final to 4.1.44.Final. See this package in NPM: https://www.npmjs.com/package/io.netty:netty-transport-native-epoll See this project in Snyk: https://app.snyk.io/org/laidu/project/1307fce4-5ce9-4eae-a659-04c40475f310?utm_source=github&utm_medium=upgrade-pr --- framework/network/pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/framework/network/pom.xml b/framework/network/pom.xml index afe6febe6..8a39f68e1 100644 --- a/framework/network/pom.xml +++ b/framework/network/pom.xml @@ -75,7 +75,7 @@ io.netty netty-transport-native-epoll - 4.1.34.Final + 4.1.44.Final linux-x86_64 From 50dd5c5aa7e363efe2487270364fa8e6fd528b57 Mon Sep 17 00:00:00 2001 From: laidu Date: Fri, 17 Jan 2020 14:02:05 +0800 Subject: [PATCH 305/417] sync --- .../boot/app/controller/DemoController.java | 13 +++++-- .../src/main/resources/application.yml | 4 +- .../learn/language/feature/boxed/Boxing.java | 37 ++++++++++++++++++- 3 files changed, 47 insertions(+), 7 deletions(-) diff --git a/framework/spring/spring-boot/spring-boot-app/src/main/java/org/laidu/learn/spring/boot/app/controller/DemoController.java b/framework/spring/spring-boot/spring-boot-app/src/main/java/org/laidu/learn/spring/boot/app/controller/DemoController.java index 5f2aded8b..1673277ef 100644 --- a/framework/spring/spring-boot/spring-boot-app/src/main/java/org/laidu/learn/spring/boot/app/controller/DemoController.java +++ b/framework/spring/spring-boot/spring-boot-app/src/main/java/org/laidu/learn/spring/boot/app/controller/DemoController.java @@ -1,11 +1,16 @@ package org.laidu.learn.spring.boot.app.controller; -import io.micrometer.core.annotation.Timed; -import lombok.extern.slf4j.Slf4j; import org.laidu.learn.spring.boot.app.dto.DemoDTO; import org.laidu.learn.spring.boot.app.service.DemoService; import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.web.bind.annotation.*; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import io.micrometer.core.annotation.Timed; +import lombok.extern.slf4j.Slf4j; /** * demo @@ -33,7 +38,7 @@ public DemoDTO demo(@RequestBody DemoDTO demoDTO){ @Timed(extraTags = { "region", "us-east-1" }) @Timed(value = "all.people", longTask = true) public String hello(){ - demoServiceA.work(); +// demoServiceA.work(); return "hello"; } diff --git a/framework/spring/spring-boot/spring-boot-app/src/main/resources/application.yml b/framework/spring/spring-boot/spring-boot-app/src/main/resources/application.yml index 233f022da..cbc035011 100644 --- a/framework/spring/spring-boot/spring-boot-app/src/main/resources/application.yml +++ b/framework/spring/spring-boot/spring-boot-app/src/main/resources/application.yml @@ -42,8 +42,8 @@ management: # undertow web 容器配置 server: undertow: - io-threads: 16 - worker-threads: 200 + io-threads: 4 + worker-threads: 4 # 日志格式配置 diff --git a/language-feature/src/main/java/org/laidu/learn/language/feature/boxed/Boxing.java b/language-feature/src/main/java/org/laidu/learn/language/feature/boxed/Boxing.java index b75bf107a..22ab45033 100644 --- a/language-feature/src/main/java/org/laidu/learn/language/feature/boxed/Boxing.java +++ b/language-feature/src/main/java/org/laidu/learn/language/feature/boxed/Boxing.java @@ -1,5 +1,9 @@ package org.laidu.learn.language.feature.boxed; +import java.util.Random; + +import lombok.Data; + /** * 自动拆装箱例子 * User: zangtiancai @@ -10,6 +14,38 @@ public class Boxing { public static void main(String[] args) { + ifNull(); + + + } + + /** + * 三目运算符中触发自动拆箱 + */ + private static void ifNull() { + Demo1 demo1 = new Demo1(); + Demo2 demo2 = new Demo2(); + demo1.setDemo2(demo2); + + for (int i = 0; i < 100; i++) { + Long aa = new Random().nextInt() % 2 == 0 ? Long.valueOf(1) : demo1.getDemo2().getId(); + // 会触发自动拆箱,报null +// Long aa = new Random().nextInt() % 2 == 0 ? 1L : demo1.getDemo2().getId(); + System.out.println(aa); + } + } + + @Data + public static class Demo1 { + private Demo2 demo2; + } + + @Data + public static class Demo2 { + private Long id; + } + + private static void test1() { // 装箱 Integer i = Integer.valueOf(100); int j = 100; @@ -18,6 +54,5 @@ public static void main(String[] args) { Integer l = 222; System.out.println("i == j :"+(i.equals(j))); - } } From ff7c49092c466b6a77e3e1deb87fb4275a5a4810 Mon Sep 17 00:00:00 2001 From: ztc Date: Sat, 18 Jan 2020 01:19:12 +0800 Subject: [PATCH 306/417] =?UTF-8?q?=E5=8D=87=E7=BA=A7spring-boot=20?= =?UTF-8?q?=E7=89=88=E6=9C=AC=E5=88=B02.2.2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- framework/spring/pom.xml | 2 +- .../spring/retry/service/impl/GithubServiceImpl.java | 8 ++++++-- framework/thirdparty/pom.xml | 2 +- production-component/pom.xml | 2 +- 4 files changed, 9 insertions(+), 5 deletions(-) diff --git a/framework/spring/pom.xml b/framework/spring/pom.xml index 5716537d7..2329cc452 100644 --- a/framework/spring/pom.xml +++ b/framework/spring/pom.xml @@ -35,7 +35,7 @@ 5.5.0 5.1.6.RELEASE - 2.1.4.RELEASE + 2.2.2.RELEASE Greenwich.SR2 1.4.0 diff --git a/framework/spring/spring-retry/src/main/java/org/laidu/learn/spring/retry/service/impl/GithubServiceImpl.java b/framework/spring/spring-retry/src/main/java/org/laidu/learn/spring/retry/service/impl/GithubServiceImpl.java index f3a4df3b0..b04ad0bd3 100644 --- a/framework/spring/spring-retry/src/main/java/org/laidu/learn/spring/retry/service/impl/GithubServiceImpl.java +++ b/framework/spring/spring-retry/src/main/java/org/laidu/learn/spring/retry/service/impl/GithubServiceImpl.java @@ -1,6 +1,8 @@ package org.laidu.learn.spring.retry.service.impl; -import lombok.extern.slf4j.Slf4j; +import java.time.Duration; +import java.time.temporal.ChronoUnit; + import org.laidu.learn.spring.retry.model.GithubUserInfo; import org.laidu.learn.spring.retry.service.GithubService; import org.springframework.beans.factory.annotation.Autowired; @@ -13,6 +15,8 @@ import org.springframework.stereotype.Service; import org.springframework.web.client.RestTemplate; +import lombok.extern.slf4j.Slf4j; + /** * Created by tiancai.zang * on 2019-02-20 23:45. @@ -54,7 +58,7 @@ public GithubUserInfo queryUserInfo(String user) { @Bean(name = "githubRestApi") private RestTemplate githubRestApi(){ return new RestTemplateBuilder() - .setReadTimeout(800) + .setReadTimeout(Duration.of(800, ChronoUnit.valueOf("Millis"))) .build(); } } \ No newline at end of file diff --git a/framework/thirdparty/pom.xml b/framework/thirdparty/pom.xml index 6656784c5..9f4711301 100644 --- a/framework/thirdparty/pom.xml +++ b/framework/thirdparty/pom.xml @@ -17,7 +17,7 @@ 3.1.0 - 2.1.4.RELEASE + 2.2.2.RELEASE diff --git a/production-component/pom.xml b/production-component/pom.xml index 2f4dd7abd..1bb04d54d 100644 --- a/production-component/pom.xml +++ b/production-component/pom.xml @@ -20,7 +20,7 @@ - 2.1.4.RELEASE + 2.2.2.RELEASE 3.1.1 \ No newline at end of file From 3d140b72c1981b82c7e9786c1c9116ba6dde79bf Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=9D=90=E7=AC=83=E5=A4=A7=E5=A4=A7?= Date: Sat, 18 Jan 2020 01:21:41 +0800 Subject: [PATCH 307/417] Create maven.yml --- .github/workflows/maven.yml | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) create mode 100644 .github/workflows/maven.yml diff --git a/.github/workflows/maven.yml b/.github/workflows/maven.yml new file mode 100644 index 000000000..ac5ef973e --- /dev/null +++ b/.github/workflows/maven.yml @@ -0,0 +1,17 @@ +name: Java CI + +on: [push] + +jobs: + build: + + runs-on: ubuntu-latest + + steps: + - uses: actions/checkout@v1 + - name: Set up JDK 1.8 + uses: actions/setup-java@v1 + with: + java-version: 1.8 + - name: Build with Maven + run: mvn site From cf5b0afa0dd285ad6a15dd45cebe1838a570a36b Mon Sep 17 00:00:00 2001 From: ztc Date: Wed, 26 Feb 2020 22:33:56 +0800 Subject: [PATCH 308/417] sync --- .../learn/spring/retry/conf/RetryConfig.java | 15 +++++++++++- .../retry/controller/GithubController.java | 13 ++++++---- .../retry/service/impl/GithubServiceImpl.java | 24 ++++++------------- 3 files changed, 29 insertions(+), 23 deletions(-) diff --git a/framework/spring/spring-retry/src/main/java/org/laidu/learn/spring/retry/conf/RetryConfig.java b/framework/spring/spring-retry/src/main/java/org/laidu/learn/spring/retry/conf/RetryConfig.java index b8b30e939..62d021400 100644 --- a/framework/spring/spring-retry/src/main/java/org/laidu/learn/spring/retry/conf/RetryConfig.java +++ b/framework/spring/spring-retry/src/main/java/org/laidu/learn/spring/retry/conf/RetryConfig.java @@ -1,10 +1,16 @@ package org.laidu.learn.spring.retry.conf; -import lombok.extern.slf4j.Slf4j; +import java.time.Duration; +import java.time.temporal.ChronoUnit; + +import org.springframework.boot.web.client.RestTemplateBuilder; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.retry.policy.SimpleRetryPolicy; import org.springframework.retry.support.RetryTemplate; +import org.springframework.web.client.RestTemplate; + +import lombok.extern.slf4j.Slf4j; /** * retry config @@ -26,4 +32,11 @@ public RetryTemplate retryTemplate() { return template; } + + @Bean(name = "githubRestApi") + public RestTemplate githubRestApi(){ + return new RestTemplateBuilder() + .setReadTimeout(Duration.of(800, ChronoUnit.MICROS)) + .build(); + } } diff --git a/framework/spring/spring-retry/src/main/java/org/laidu/learn/spring/retry/controller/GithubController.java b/framework/spring/spring-retry/src/main/java/org/laidu/learn/spring/retry/controller/GithubController.java index f5f4d17af..07d8aefad 100644 --- a/framework/spring/spring-retry/src/main/java/org/laidu/learn/spring/retry/controller/GithubController.java +++ b/framework/spring/spring-retry/src/main/java/org/laidu/learn/spring/retry/controller/GithubController.java @@ -1,13 +1,13 @@ package org.laidu.learn.spring.retry.controller; -import lombok.extern.slf4j.Slf4j; import org.laidu.learn.spring.retry.model.GithubUserInfo; import org.laidu.learn.spring.retry.service.GithubService; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.PathVariable; -import org.springframework.web.bind.annotation.RestController; import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import lombok.extern.slf4j.Slf4j; /** * github api @@ -20,8 +20,11 @@ @RequestMapping("/github") public class GithubController { - @Autowired - private GithubService githubService; + private final GithubService githubService; + + public GithubController(GithubService githubService) { + this.githubService = githubService; + } @GetMapping("/user/{user}") public GithubUserInfo queryUserinfo(@PathVariable(name = "user") String user){ diff --git a/framework/spring/spring-retry/src/main/java/org/laidu/learn/spring/retry/service/impl/GithubServiceImpl.java b/framework/spring/spring-retry/src/main/java/org/laidu/learn/spring/retry/service/impl/GithubServiceImpl.java index b04ad0bd3..08e69ced9 100644 --- a/framework/spring/spring-retry/src/main/java/org/laidu/learn/spring/retry/service/impl/GithubServiceImpl.java +++ b/framework/spring/spring-retry/src/main/java/org/laidu/learn/spring/retry/service/impl/GithubServiceImpl.java @@ -1,14 +1,8 @@ package org.laidu.learn.spring.retry.service.impl; -import java.time.Duration; -import java.time.temporal.ChronoUnit; - import org.laidu.learn.spring.retry.model.GithubUserInfo; import org.laidu.learn.spring.retry.service.GithubService; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; -import org.springframework.boot.web.client.RestTemplateBuilder; -import org.springframework.context.annotation.Bean; import org.springframework.retry.RetryCallback; import org.springframework.retry.annotation.Retryable; import org.springframework.retry.support.RetryTemplate; @@ -26,16 +20,19 @@ public class GithubServiceImpl implements GithubService { - @Autowired - private RestTemplate githubRestApi; + private final RestTemplate githubRestApi; - @Autowired - private RetryTemplate retryTemplate; + private final RetryTemplate retryTemplate; @Value("${github.user.api:https://api.github.com/users/}") private String usersUrl; + public GithubServiceImpl(RestTemplate githubRestApi, RetryTemplate retryTemplate) { + this.githubRestApi = githubRestApi; + this.retryTemplate = retryTemplate; + } + @Override @Retryable @@ -54,11 +51,4 @@ public GithubUserInfo queryUserInfo(String user) { } return new GithubUserInfo(); } - - @Bean(name = "githubRestApi") - private RestTemplate githubRestApi(){ - return new RestTemplateBuilder() - .setReadTimeout(Duration.of(800, ChronoUnit.valueOf("Millis"))) - .build(); - } } \ No newline at end of file From e0e0edc3bcabdbe33462797908eab1548b8956e1 Mon Sep 17 00:00:00 2001 From: laidu823 Date: Sat, 14 Mar 2020 23:04:00 +0800 Subject: [PATCH 309/417] sync --- algorithm/src/main/resources/rebel-remote.xml | 4 ++++ algorithm/src/main/resources/rebel.xml | 14 ++++++++++++++ .../calcite/src/main/resources/rebel-remote.xml | 4 ++++ big-data/calcite/src/main/resources/rebel.xml | 14 ++++++++++++++ .../hadoop/src/main/resources/rebel-remote.xml | 4 ++++ big-data/hadoop/src/main/resources/rebel.xml | 14 ++++++++++++++ .../src/main/resources/rebel-remote.xml | 4 ++++ .../src/main/resources/rebel.xml | 14 ++++++++++++++ .../nowcoder/src/main/resources/rebel-remote.xml | 4 ++++ .../nowcoder/src/main/resources/rebel.xml | 14 ++++++++++++++ .../BTrace/src/main/resources/rebel-remote.xml | 4 ++++ .../BTrace/src/main/resources/rebel.xml | 14 ++++++++++++++ .../fastutil/src/main/resources/rebel-remote.xml | 4 ++++ .../fastutil/src/main/resources/rebel.xml | 14 ++++++++++++++ .../src/main/resources/rebel-remote.xml | 4 ++++ .../local-cache/src/main/resources/rebel.xml | 14 ++++++++++++++ .../src/main/resources/rebel-remote.xml | 4 ++++ .../spring-tool/src/main/resources/rebel.xml | 14 ++++++++++++++ data-structure/src/main/resources/rebel-remote.xml | 4 ++++ data-structure/src/main/resources/rebel.xml | 14 ++++++++++++++ .../src/main/resources/rebel-remote.xml | 4 ++++ .../src/main/resources/rebel.xml | 14 ++++++++++++++ .../dynamoDB/src/main/resources/rebel-remote.xml | 4 ++++ .../aws/dynamoDB/src/main/resources/rebel.xml | 14 ++++++++++++++ .../apache-poi/src/main/resources/rebel-remote.xml | 4 ++++ .../common/apache-poi/src/main/resources/rebel.xml | 14 ++++++++++++++ .../src/main/resources/rebel-remote.xml | 4 ++++ .../commons-cli/src/main/resources/rebel.xml | 14 ++++++++++++++ .../src/main/resources/rebel-remote.xml | 4 ++++ .../commons-lang3/src/main/resources/rebel.xml | 14 ++++++++++++++ .../src/main/resources/rebel-remote.xml | 4 ++++ .../commons-net/src/main/resources/rebel.xml | 14 ++++++++++++++ .../src/main/resources/rebel-remote.xml | 4 ++++ .../commons-text/src/main/resources/rebel.xml | 14 ++++++++++++++ .../jodd/src/main/resources/rebel-remote.xml | 4 ++++ framework/common/jodd/src/main/resources/rebel.xml | 14 ++++++++++++++ .../rxjava/src/main/resources/rebel-remote.xml | 4 ++++ .../common/rxjava/src/main/resources/rebel.xml | 14 ++++++++++++++ .../shiro/src/main/resources/rebel-remote.xml | 4 ++++ .../common/shiro/src/main/resources/rebel.xml | 14 ++++++++++++++ .../src/main/resources/rebel-remote.xml | 4 ++++ .../src/main/resources/rebel.xml | 14 ++++++++++++++ .../src/main/resources/rebel-remote.xml | 4 ++++ .../async-http-client/src/main/resources/rebel.xml | 14 ++++++++++++++ .../httpclient/src/main/resources/rebel-remote.xml | 4 ++++ .../httpclient/src/main/resources/rebel.xml | 14 ++++++++++++++ .../netty/src/main/resources/rebel-remote.xml | 4 ++++ .../network/netty/src/main/resources/rebel.xml | 14 ++++++++++++++ .../okhttp/src/main/resources/rebel-remote.xml | 4 ++++ .../network/okhttp/src/main/resources/rebel.xml | 14 ++++++++++++++ .../retrofit/src/main/resources/rebel-remote.xml | 4 ++++ .../network/retrofit/src/main/resources/rebel.xml | 14 ++++++++++++++ .../web-client/src/main/resources/rebel-remote.xml | 4 ++++ .../web-client/src/main/resources/rebel.xml | 14 ++++++++++++++ .../drools/src/main/resources/rebel-remote.xml | 4 ++++ .../drools/src/main/resources/rebel.xml | 14 ++++++++++++++ .../src/main/resources/rebel-remote.xml | 4 ++++ .../spring-amqp/src/main/resources/rebel.xml | 14 ++++++++++++++ .../spring-aop/src/main/resources/rebel-remote.xml | 4 ++++ .../spring/spring-aop/src/main/resources/rebel.xml | 14 ++++++++++++++ .../src/main/resources/rebel-remote.xml | 4 ++++ .../spring-boot-app/src/main/resources/rebel.xml | 14 ++++++++++++++ .../src/main/resources/rebel-remote.xml | 4 ++++ .../spring-boot-shiro/src/main/resources/rebel.xml | 14 ++++++++++++++ .../src/main/resources/rebel-remote.xml | 4 ++++ .../spring-boot-sso/src/main/resources/rebel.xml | 14 ++++++++++++++ .../src/main/resources/rebel-remote.xml | 4 ++++ .../admin-dashboard/src/main/resources/rebel.xml | 14 ++++++++++++++ .../src/main/resources/rebel-remote.xml | 4 ++++ .../api-gateway/src/main/resources/rebel.xml | 14 ++++++++++++++ .../src/main/resources/rebel-remote.xml | 4 ++++ .../config-client/src/main/resources/rebel.xml | 14 ++++++++++++++ .../src/main/resources/rebel-remote.xml | 4 ++++ .../config-server/src/main/resources/rebel.xml | 14 ++++++++++++++ .../src/main/resources/rebel-remote.xml | 4 ++++ .../consumer-hello/src/main/resources/rebel.xml | 14 ++++++++++++++ .../src/main/resources/rebel-remote.xml | 4 ++++ .../hystrix-dashboard/src/main/resources/rebel.xml | 14 ++++++++++++++ .../src/main/resources/rebel-remote.xml | 4 ++++ .../register-center/src/main/resources/rebel.xml | 14 ++++++++++++++ .../src/main/resources/rebel-remote.xml | 4 ++++ .../service-hello/src/main/resources/rebel.xml | 14 ++++++++++++++ .../stream/src/main/resources/rebel-remote.xml | 4 ++++ .../stream/src/main/resources/rebel.xml | 14 ++++++++++++++ .../src/main/resources/rebel-remote.xml | 4 ++++ .../spring-core/src/main/resources/rebel.xml | 14 ++++++++++++++ .../src/main/resources/rebel-remote.xml | 4 ++++ .../src/main/resources/rebel.xml | 14 ++++++++++++++ .../src/main/resources/rebel-remote.xml | 4 ++++ .../spring-mybatis/src/main/resources/rebel.xml | 14 ++++++++++++++ .../src/main/resources/rebel-remote.xml | 4 ++++ .../spring-redis/src/main/resources/rebel.xml | 14 ++++++++++++++ .../src/main/resources/rebel-remote.xml | 4 ++++ .../spring-hadoop/src/main/resources/rebel.xml | 14 ++++++++++++++ .../src/main/resources/rebel-remote.xml | 4 ++++ .../spring-retry/src/main/resources/rebel.xml | 14 ++++++++++++++ .../src/main/resources/rebel-remote.xml | 4 ++++ .../spring-spel/src/main/resources/rebel.xml | 14 ++++++++++++++ .../src/main/resources/rebel-remote.xml | 4 ++++ .../src/main/resources/rebel.xml | 14 ++++++++++++++ .../src/main/resources/rebel-remote.xml | 4 ++++ .../src/main/resources/rebel.xml | 14 ++++++++++++++ .../spring-mvc/src/main/resources/rebel-remote.xml | 4 ++++ .../spring-mvc/src/main/resources/rebel.xml | 14 ++++++++++++++ .../src/main/resources/rebel-remote.xml | 4 ++++ .../spring-webflux/src/main/resources/rebel.xml | 14 ++++++++++++++ .../swagger/src/main/resources/rebel-remote.xml | 4 ++++ .../spring/swagger/src/main/resources/rebel.xml | 14 ++++++++++++++ .../src/main/resources/rebel-remote.xml | 4 ++++ .../elastic-job/src/main/resources/rebel.xml | 14 ++++++++++++++ .../junit5/src/main/resources/rebel-remote.xml | 4 ++++ framework/test/junit5/src/main/resources/rebel.xml | 14 ++++++++++++++ .../mockito/src/main/resources/rebel-remote.xml | 4 ++++ .../test/mockito/src/main/resources/rebel.xml | 14 ++++++++++++++ .../src/main/resources/rebel-remote.xml | 4 ++++ .../wechat-common/src/main/resources/rebel.xml | 14 ++++++++++++++ .../wechat-mp/src/main/resources/rebel-remote.xml | 4 ++++ .../wechat/wechat-mp/src/main/resources/rebel.xml | 14 ++++++++++++++ .../src/main/resources/rebel-remote.xml | 4 ++++ .../wechat-robot/src/main/resources/rebel.xml | 14 ++++++++++++++ .../web/play/src/main/resources/rebel-remote.xml | 4 ++++ framework/web/play/src/main/resources/rebel.xml | 14 ++++++++++++++ .../web/tomcat/src/main/resources/rebel-remote.xml | 4 ++++ framework/web/tomcat/src/main/resources/rebel.xml | 14 ++++++++++++++ .../undertow/src/main/resources/rebel-remote.xml | 4 ++++ .../web/undertow/src/main/resources/rebel.xml | 14 ++++++++++++++ .../src/main/resources/rebel-remote.xml | 4 ++++ .../webmagic-learn/src/main/resources/rebel.xml | 14 ++++++++++++++ .../bytecode/src/main/resources/rebel-remote.xml | 4 ++++ .../bytecode/src/main/resources/rebel.xml | 14 ++++++++++++++ .../concurrent/src/main/resources/rebel-remote.xml | 4 ++++ .../concurrent/src/main/resources/rebel.xml | 14 ++++++++++++++ .../gui/src/main/resources/rebel-remote.xml | 4 ++++ language-advance/gui/src/main/resources/rebel.xml | 14 ++++++++++++++ .../io/src/main/resources/rebel-remote.xml | 4 ++++ language-advance/io/src/main/resources/rebel.xml | 14 ++++++++++++++ .../jni/src/main/resources/rebel-remote.xml | 4 ++++ language-advance/jni/src/main/resources/rebel.xml | 14 ++++++++++++++ .../jvm/src/main/resources/rebel-remote.xml | 4 ++++ language-advance/jvm/src/main/resources/rebel.xml | 14 ++++++++++++++ .../script/src/main/resources/rebel-remote.xml | 4 ++++ .../script/src/main/resources/rebel.xml | 14 ++++++++++++++ .../security/src/main/resources/rebel-remote.xml | 4 ++++ .../security/src/main/resources/rebel.xml | 14 ++++++++++++++ .../sql/src/main/resources/rebel-remote.xml | 4 ++++ language-advance/sql/src/main/resources/rebel.xml | 14 ++++++++++++++ .../xml/src/main/resources/rebel-remote.xml | 4 ++++ language-advance/xml/src/main/resources/rebel.xml | 14 ++++++++++++++ .../src/main/resources/rebel-remote.xml | 4 ++++ language-feature/src/main/resources/rebel.xml | 14 ++++++++++++++ .../src/main/resources/rebel-remote.xml | 4 ++++ .../common-util/src/main/resources/rebel.xml | 14 ++++++++++++++ .../src/main/resources/rebel-remote.xml | 4 ++++ .../crawler-helper/src/main/resources/rebel.xml | 14 ++++++++++++++ .../crawler/src/main/resources/rebel-remote.xml | 4 ++++ .../crawler/src/main/resources/rebel.xml | 14 ++++++++++++++ 156 files changed, 1404 insertions(+) create mode 100644 algorithm/src/main/resources/rebel-remote.xml create mode 100644 algorithm/src/main/resources/rebel.xml create mode 100644 big-data/calcite/src/main/resources/rebel-remote.xml create mode 100644 big-data/calcite/src/main/resources/rebel.xml create mode 100644 big-data/hadoop/src/main/resources/rebel-remote.xml create mode 100644 big-data/hadoop/src/main/resources/rebel.xml create mode 100644 code-practice/book-learn/dataStructureandAlgorithmAnalysis3th/src/main/resources/rebel-remote.xml create mode 100644 code-practice/book-learn/dataStructureandAlgorithmAnalysis3th/src/main/resources/rebel.xml create mode 100644 code-practice/nowcoder/src/main/resources/rebel-remote.xml create mode 100644 code-practice/nowcoder/src/main/resources/rebel.xml create mode 100644 convenient-util/BTrace/src/main/resources/rebel-remote.xml create mode 100644 convenient-util/BTrace/src/main/resources/rebel.xml create mode 100644 convenient-util/fastutil/src/main/resources/rebel-remote.xml create mode 100644 convenient-util/fastutil/src/main/resources/rebel.xml create mode 100644 convenient-util/local-cache/src/main/resources/rebel-remote.xml create mode 100644 convenient-util/local-cache/src/main/resources/rebel.xml create mode 100644 convenient-util/spring-tool/src/main/resources/rebel-remote.xml create mode 100644 convenient-util/spring-tool/src/main/resources/rebel.xml create mode 100644 data-structure/src/main/resources/rebel-remote.xml create mode 100644 data-structure/src/main/resources/rebel.xml create mode 100644 design-pattern/java-design-pattern-learn/src/main/resources/rebel-remote.xml create mode 100644 design-pattern/java-design-pattern-learn/src/main/resources/rebel.xml create mode 100644 framework/aws/dynamoDB/src/main/resources/rebel-remote.xml create mode 100644 framework/aws/dynamoDB/src/main/resources/rebel.xml create mode 100644 framework/common/apache-poi/src/main/resources/rebel-remote.xml create mode 100644 framework/common/apache-poi/src/main/resources/rebel.xml create mode 100644 framework/common/commons-cli/src/main/resources/rebel-remote.xml create mode 100644 framework/common/commons-cli/src/main/resources/rebel.xml create mode 100644 framework/common/commons-lang3/src/main/resources/rebel-remote.xml create mode 100644 framework/common/commons-lang3/src/main/resources/rebel.xml create mode 100644 framework/common/commons-net/src/main/resources/rebel-remote.xml create mode 100644 framework/common/commons-net/src/main/resources/rebel.xml create mode 100644 framework/common/commons-text/src/main/resources/rebel-remote.xml create mode 100644 framework/common/commons-text/src/main/resources/rebel.xml create mode 100644 framework/common/jodd/src/main/resources/rebel-remote.xml create mode 100644 framework/common/jodd/src/main/resources/rebel.xml create mode 100644 framework/common/rxjava/src/main/resources/rebel-remote.xml create mode 100644 framework/common/rxjava/src/main/resources/rebel.xml create mode 100644 framework/common/shiro/src/main/resources/rebel-remote.xml create mode 100644 framework/common/shiro/src/main/resources/rebel.xml create mode 100644 framework/compress/thumbnailator-google/src/main/resources/rebel-remote.xml create mode 100644 framework/compress/thumbnailator-google/src/main/resources/rebel.xml create mode 100644 framework/network/async-http-client/src/main/resources/rebel-remote.xml create mode 100644 framework/network/async-http-client/src/main/resources/rebel.xml create mode 100644 framework/network/httpclient/src/main/resources/rebel-remote.xml create mode 100644 framework/network/httpclient/src/main/resources/rebel.xml create mode 100644 framework/network/netty/src/main/resources/rebel-remote.xml create mode 100644 framework/network/netty/src/main/resources/rebel.xml create mode 100644 framework/network/okhttp/src/main/resources/rebel-remote.xml create mode 100644 framework/network/okhttp/src/main/resources/rebel.xml create mode 100644 framework/network/retrofit/src/main/resources/rebel-remote.xml create mode 100644 framework/network/retrofit/src/main/resources/rebel.xml create mode 100644 framework/network/web-client/src/main/resources/rebel-remote.xml create mode 100644 framework/network/web-client/src/main/resources/rebel.xml create mode 100644 framework/rules-engine/drools/src/main/resources/rebel-remote.xml create mode 100644 framework/rules-engine/drools/src/main/resources/rebel.xml create mode 100644 framework/spring/spring-amqp/src/main/resources/rebel-remote.xml create mode 100644 framework/spring/spring-amqp/src/main/resources/rebel.xml create mode 100644 framework/spring/spring-aop/src/main/resources/rebel-remote.xml create mode 100644 framework/spring/spring-aop/src/main/resources/rebel.xml create mode 100644 framework/spring/spring-boot/spring-boot-app/src/main/resources/rebel-remote.xml create mode 100644 framework/spring/spring-boot/spring-boot-app/src/main/resources/rebel.xml create mode 100644 framework/spring/spring-boot/spring-boot-shiro/src/main/resources/rebel-remote.xml create mode 100644 framework/spring/spring-boot/spring-boot-shiro/src/main/resources/rebel.xml create mode 100644 framework/spring/spring-boot/spring-boot-sso/src/main/resources/rebel-remote.xml create mode 100644 framework/spring/spring-boot/spring-boot-sso/src/main/resources/rebel.xml create mode 100644 framework/spring/spring-cloud/admin-dashboard/src/main/resources/rebel-remote.xml create mode 100644 framework/spring/spring-cloud/admin-dashboard/src/main/resources/rebel.xml create mode 100644 framework/spring/spring-cloud/api-gateway/src/main/resources/rebel-remote.xml create mode 100644 framework/spring/spring-cloud/api-gateway/src/main/resources/rebel.xml create mode 100644 framework/spring/spring-cloud/config-client/src/main/resources/rebel-remote.xml create mode 100644 framework/spring/spring-cloud/config-client/src/main/resources/rebel.xml create mode 100644 framework/spring/spring-cloud/config-server/src/main/resources/rebel-remote.xml create mode 100644 framework/spring/spring-cloud/config-server/src/main/resources/rebel.xml create mode 100644 framework/spring/spring-cloud/consumer-hello/src/main/resources/rebel-remote.xml create mode 100644 framework/spring/spring-cloud/consumer-hello/src/main/resources/rebel.xml create mode 100644 framework/spring/spring-cloud/hystrix-dashboard/src/main/resources/rebel-remote.xml create mode 100644 framework/spring/spring-cloud/hystrix-dashboard/src/main/resources/rebel.xml create mode 100644 framework/spring/spring-cloud/register-center/src/main/resources/rebel-remote.xml create mode 100644 framework/spring/spring-cloud/register-center/src/main/resources/rebel.xml create mode 100644 framework/spring/spring-cloud/service-hello/src/main/resources/rebel-remote.xml create mode 100644 framework/spring/spring-cloud/service-hello/src/main/resources/rebel.xml create mode 100644 framework/spring/spring-cloud/stream/src/main/resources/rebel-remote.xml create mode 100644 framework/spring/spring-cloud/stream/src/main/resources/rebel.xml create mode 100644 framework/spring/spring-core/src/main/resources/rebel-remote.xml create mode 100644 framework/spring/spring-core/src/main/resources/rebel.xml create mode 100644 framework/spring/spring-data/spring-mybatis-plus/src/main/resources/rebel-remote.xml create mode 100644 framework/spring/spring-data/spring-mybatis-plus/src/main/resources/rebel.xml create mode 100644 framework/spring/spring-data/spring-mybatis/src/main/resources/rebel-remote.xml create mode 100644 framework/spring/spring-data/spring-mybatis/src/main/resources/rebel.xml create mode 100644 framework/spring/spring-data/spring-redis/src/main/resources/rebel-remote.xml create mode 100644 framework/spring/spring-data/spring-redis/src/main/resources/rebel.xml create mode 100644 framework/spring/spring-hadoop/src/main/resources/rebel-remote.xml create mode 100644 framework/spring/spring-hadoop/src/main/resources/rebel.xml create mode 100644 framework/spring/spring-retry/src/main/resources/rebel-remote.xml create mode 100644 framework/spring/spring-retry/src/main/resources/rebel.xml create mode 100644 framework/spring/spring-spel/src/main/resources/rebel-remote.xml create mode 100644 framework/spring/spring-spel/src/main/resources/rebel.xml create mode 100644 framework/spring/spring-statemachine/src/main/resources/rebel-remote.xml create mode 100644 framework/spring/spring-statemachine/src/main/resources/rebel.xml create mode 100644 framework/spring/spring-transaction/src/main/resources/rebel-remote.xml create mode 100644 framework/spring/spring-transaction/src/main/resources/rebel.xml create mode 100644 framework/spring/spring-web/spring-mvc/src/main/resources/rebel-remote.xml create mode 100644 framework/spring/spring-web/spring-mvc/src/main/resources/rebel.xml create mode 100644 framework/spring/spring-web/spring-webflux/src/main/resources/rebel-remote.xml create mode 100644 framework/spring/spring-web/spring-webflux/src/main/resources/rebel.xml create mode 100644 framework/spring/swagger/src/main/resources/rebel-remote.xml create mode 100644 framework/spring/swagger/src/main/resources/rebel.xml create mode 100644 framework/task-scheduler/elastic-job/src/main/resources/rebel-remote.xml create mode 100644 framework/task-scheduler/elastic-job/src/main/resources/rebel.xml create mode 100644 framework/test/junit5/src/main/resources/rebel-remote.xml create mode 100644 framework/test/junit5/src/main/resources/rebel.xml create mode 100644 framework/test/mockito/src/main/resources/rebel-remote.xml create mode 100644 framework/test/mockito/src/main/resources/rebel.xml create mode 100644 framework/thirdparty/wechat/wechat-common/src/main/resources/rebel-remote.xml create mode 100644 framework/thirdparty/wechat/wechat-common/src/main/resources/rebel.xml create mode 100644 framework/thirdparty/wechat/wechat-mp/src/main/resources/rebel-remote.xml create mode 100644 framework/thirdparty/wechat/wechat-mp/src/main/resources/rebel.xml create mode 100644 framework/thirdparty/wechat/wechat-robot/src/main/resources/rebel-remote.xml create mode 100644 framework/thirdparty/wechat/wechat-robot/src/main/resources/rebel.xml create mode 100644 framework/web/play/src/main/resources/rebel-remote.xml create mode 100644 framework/web/play/src/main/resources/rebel.xml create mode 100644 framework/web/tomcat/src/main/resources/rebel-remote.xml create mode 100644 framework/web/tomcat/src/main/resources/rebel.xml create mode 100644 framework/web/undertow/src/main/resources/rebel-remote.xml create mode 100644 framework/web/undertow/src/main/resources/rebel.xml create mode 100644 framework/webmagic/webmagic-learn/src/main/resources/rebel-remote.xml create mode 100644 framework/webmagic/webmagic-learn/src/main/resources/rebel.xml create mode 100644 language-advance/bytecode/src/main/resources/rebel-remote.xml create mode 100644 language-advance/bytecode/src/main/resources/rebel.xml create mode 100644 language-advance/concurrent/src/main/resources/rebel-remote.xml create mode 100644 language-advance/concurrent/src/main/resources/rebel.xml create mode 100644 language-advance/gui/src/main/resources/rebel-remote.xml create mode 100644 language-advance/gui/src/main/resources/rebel.xml create mode 100644 language-advance/io/src/main/resources/rebel-remote.xml create mode 100644 language-advance/io/src/main/resources/rebel.xml create mode 100644 language-advance/jni/src/main/resources/rebel-remote.xml create mode 100644 language-advance/jni/src/main/resources/rebel.xml create mode 100644 language-advance/jvm/src/main/resources/rebel-remote.xml create mode 100644 language-advance/jvm/src/main/resources/rebel.xml create mode 100644 language-advance/script/src/main/resources/rebel-remote.xml create mode 100644 language-advance/script/src/main/resources/rebel.xml create mode 100644 language-advance/security/src/main/resources/rebel-remote.xml create mode 100644 language-advance/security/src/main/resources/rebel.xml create mode 100644 language-advance/sql/src/main/resources/rebel-remote.xml create mode 100644 language-advance/sql/src/main/resources/rebel.xml create mode 100644 language-advance/xml/src/main/resources/rebel-remote.xml create mode 100644 language-advance/xml/src/main/resources/rebel.xml create mode 100644 language-feature/src/main/resources/rebel-remote.xml create mode 100644 language-feature/src/main/resources/rebel.xml create mode 100644 production-component/common-util/src/main/resources/rebel-remote.xml create mode 100644 production-component/common-util/src/main/resources/rebel.xml create mode 100644 production-component/crawler-helper/src/main/resources/rebel-remote.xml create mode 100644 production-component/crawler-helper/src/main/resources/rebel.xml create mode 100644 production-component/crawler/src/main/resources/rebel-remote.xml create mode 100644 production-component/crawler/src/main/resources/rebel.xml diff --git a/algorithm/src/main/resources/rebel-remote.xml b/algorithm/src/main/resources/rebel-remote.xml new file mode 100644 index 000000000..0e500cb89 --- /dev/null +++ b/algorithm/src/main/resources/rebel-remote.xml @@ -0,0 +1,4 @@ + + + org.laidu.learn.algorithm + diff --git a/algorithm/src/main/resources/rebel.xml b/algorithm/src/main/resources/rebel.xml new file mode 100644 index 000000000..88537f72e --- /dev/null +++ b/algorithm/src/main/resources/rebel.xml @@ -0,0 +1,14 @@ + + + + + + +

                    + + + + diff --git a/big-data/calcite/src/main/resources/rebel-remote.xml b/big-data/calcite/src/main/resources/rebel-remote.xml new file mode 100644 index 000000000..312499adc --- /dev/null +++ b/big-data/calcite/src/main/resources/rebel-remote.xml @@ -0,0 +1,4 @@ + + + org.laidu.learn.calcite + diff --git a/big-data/calcite/src/main/resources/rebel.xml b/big-data/calcite/src/main/resources/rebel.xml new file mode 100644 index 000000000..0dd66817e --- /dev/null +++ b/big-data/calcite/src/main/resources/rebel.xml @@ -0,0 +1,14 @@ + + + + + + + + + + + diff --git a/big-data/hadoop/src/main/resources/rebel-remote.xml b/big-data/hadoop/src/main/resources/rebel-remote.xml new file mode 100644 index 000000000..68e469b4c --- /dev/null +++ b/big-data/hadoop/src/main/resources/rebel-remote.xml @@ -0,0 +1,4 @@ + + + org.laidu.learn.hadoop + diff --git a/big-data/hadoop/src/main/resources/rebel.xml b/big-data/hadoop/src/main/resources/rebel.xml new file mode 100644 index 000000000..c6da62df6 --- /dev/null +++ b/big-data/hadoop/src/main/resources/rebel.xml @@ -0,0 +1,14 @@ + + + + + + + + + + + diff --git a/code-practice/book-learn/dataStructureandAlgorithmAnalysis3th/src/main/resources/rebel-remote.xml b/code-practice/book-learn/dataStructureandAlgorithmAnalysis3th/src/main/resources/rebel-remote.xml new file mode 100644 index 000000000..f76042cf0 --- /dev/null +++ b/code-practice/book-learn/dataStructureandAlgorithmAnalysis3th/src/main/resources/rebel-remote.xml @@ -0,0 +1,4 @@ + + + org.laidu.learn.dataStructureandAlgorithmAnalysis3th + diff --git a/code-practice/book-learn/dataStructureandAlgorithmAnalysis3th/src/main/resources/rebel.xml b/code-practice/book-learn/dataStructureandAlgorithmAnalysis3th/src/main/resources/rebel.xml new file mode 100644 index 000000000..139c75aca --- /dev/null +++ b/code-practice/book-learn/dataStructureandAlgorithmAnalysis3th/src/main/resources/rebel.xml @@ -0,0 +1,14 @@ + + + + + + + + + + + diff --git a/code-practice/nowcoder/src/main/resources/rebel-remote.xml b/code-practice/nowcoder/src/main/resources/rebel-remote.xml new file mode 100644 index 000000000..d4d6fba1e --- /dev/null +++ b/code-practice/nowcoder/src/main/resources/rebel-remote.xml @@ -0,0 +1,4 @@ + + + org.laidu.learn.nowcoder + diff --git a/code-practice/nowcoder/src/main/resources/rebel.xml b/code-practice/nowcoder/src/main/resources/rebel.xml new file mode 100644 index 000000000..35dbb4cb9 --- /dev/null +++ b/code-practice/nowcoder/src/main/resources/rebel.xml @@ -0,0 +1,14 @@ + + + + + + + + + + + diff --git a/convenient-util/BTrace/src/main/resources/rebel-remote.xml b/convenient-util/BTrace/src/main/resources/rebel-remote.xml new file mode 100644 index 000000000..3d01f3416 --- /dev/null +++ b/convenient-util/BTrace/src/main/resources/rebel-remote.xml @@ -0,0 +1,4 @@ + + + org.laidu.learn.BTrace + diff --git a/convenient-util/BTrace/src/main/resources/rebel.xml b/convenient-util/BTrace/src/main/resources/rebel.xml new file mode 100644 index 000000000..391682088 --- /dev/null +++ b/convenient-util/BTrace/src/main/resources/rebel.xml @@ -0,0 +1,14 @@ + + + + + + + + + + + diff --git a/convenient-util/fastutil/src/main/resources/rebel-remote.xml b/convenient-util/fastutil/src/main/resources/rebel-remote.xml new file mode 100644 index 000000000..9a67ea1ba --- /dev/null +++ b/convenient-util/fastutil/src/main/resources/rebel-remote.xml @@ -0,0 +1,4 @@ + + + org.laidu.learn.fastutil + diff --git a/convenient-util/fastutil/src/main/resources/rebel.xml b/convenient-util/fastutil/src/main/resources/rebel.xml new file mode 100644 index 000000000..22f74869d --- /dev/null +++ b/convenient-util/fastutil/src/main/resources/rebel.xml @@ -0,0 +1,14 @@ + + + + + + + + + + + diff --git a/convenient-util/local-cache/src/main/resources/rebel-remote.xml b/convenient-util/local-cache/src/main/resources/rebel-remote.xml new file mode 100644 index 000000000..274c566fb --- /dev/null +++ b/convenient-util/local-cache/src/main/resources/rebel-remote.xml @@ -0,0 +1,4 @@ + + + org.laidu.learn.local-cache + diff --git a/convenient-util/local-cache/src/main/resources/rebel.xml b/convenient-util/local-cache/src/main/resources/rebel.xml new file mode 100644 index 000000000..60b0001ab --- /dev/null +++ b/convenient-util/local-cache/src/main/resources/rebel.xml @@ -0,0 +1,14 @@ + + + + + + + + + + + diff --git a/convenient-util/spring-tool/src/main/resources/rebel-remote.xml b/convenient-util/spring-tool/src/main/resources/rebel-remote.xml new file mode 100644 index 000000000..e5392d5d4 --- /dev/null +++ b/convenient-util/spring-tool/src/main/resources/rebel-remote.xml @@ -0,0 +1,4 @@ + + + org.laidu.learn.spring-tool + diff --git a/convenient-util/spring-tool/src/main/resources/rebel.xml b/convenient-util/spring-tool/src/main/resources/rebel.xml new file mode 100644 index 000000000..a906fc0e7 --- /dev/null +++ b/convenient-util/spring-tool/src/main/resources/rebel.xml @@ -0,0 +1,14 @@ + + + + + + + + + + + diff --git a/data-structure/src/main/resources/rebel-remote.xml b/data-structure/src/main/resources/rebel-remote.xml new file mode 100644 index 000000000..e9515851d --- /dev/null +++ b/data-structure/src/main/resources/rebel-remote.xml @@ -0,0 +1,4 @@ + + + org.laidu.learn.data-structure + diff --git a/data-structure/src/main/resources/rebel.xml b/data-structure/src/main/resources/rebel.xml new file mode 100644 index 000000000..1883e977c --- /dev/null +++ b/data-structure/src/main/resources/rebel.xml @@ -0,0 +1,14 @@ + + + + + + + + + + + diff --git a/design-pattern/java-design-pattern-learn/src/main/resources/rebel-remote.xml b/design-pattern/java-design-pattern-learn/src/main/resources/rebel-remote.xml new file mode 100644 index 000000000..efb6ba557 --- /dev/null +++ b/design-pattern/java-design-pattern-learn/src/main/resources/rebel-remote.xml @@ -0,0 +1,4 @@ + + + org.laidu.learn.java-design-pattern-learn + diff --git a/design-pattern/java-design-pattern-learn/src/main/resources/rebel.xml b/design-pattern/java-design-pattern-learn/src/main/resources/rebel.xml new file mode 100644 index 000000000..6413cce28 --- /dev/null +++ b/design-pattern/java-design-pattern-learn/src/main/resources/rebel.xml @@ -0,0 +1,14 @@ + + + + + + + + + + + diff --git a/framework/aws/dynamoDB/src/main/resources/rebel-remote.xml b/framework/aws/dynamoDB/src/main/resources/rebel-remote.xml new file mode 100644 index 000000000..e12b04fc9 --- /dev/null +++ b/framework/aws/dynamoDB/src/main/resources/rebel-remote.xml @@ -0,0 +1,4 @@ + + + org.laidu.learn.dynamoDB + diff --git a/framework/aws/dynamoDB/src/main/resources/rebel.xml b/framework/aws/dynamoDB/src/main/resources/rebel.xml new file mode 100644 index 000000000..f62de7bb0 --- /dev/null +++ b/framework/aws/dynamoDB/src/main/resources/rebel.xml @@ -0,0 +1,14 @@ + + + + + + + + + + + diff --git a/framework/common/apache-poi/src/main/resources/rebel-remote.xml b/framework/common/apache-poi/src/main/resources/rebel-remote.xml new file mode 100644 index 000000000..0b42bbf23 --- /dev/null +++ b/framework/common/apache-poi/src/main/resources/rebel-remote.xml @@ -0,0 +1,4 @@ + + + org.laidu.learn.apache-poi + diff --git a/framework/common/apache-poi/src/main/resources/rebel.xml b/framework/common/apache-poi/src/main/resources/rebel.xml new file mode 100644 index 000000000..7b965f1d5 --- /dev/null +++ b/framework/common/apache-poi/src/main/resources/rebel.xml @@ -0,0 +1,14 @@ + + + + + + + + + + + diff --git a/framework/common/commons-cli/src/main/resources/rebel-remote.xml b/framework/common/commons-cli/src/main/resources/rebel-remote.xml new file mode 100644 index 000000000..2610fc322 --- /dev/null +++ b/framework/common/commons-cli/src/main/resources/rebel-remote.xml @@ -0,0 +1,4 @@ + + + org.laidu.learn.commons-cli + diff --git a/framework/common/commons-cli/src/main/resources/rebel.xml b/framework/common/commons-cli/src/main/resources/rebel.xml new file mode 100644 index 000000000..ba39095ab --- /dev/null +++ b/framework/common/commons-cli/src/main/resources/rebel.xml @@ -0,0 +1,14 @@ + + + + + + + + + + + diff --git a/framework/common/commons-lang3/src/main/resources/rebel-remote.xml b/framework/common/commons-lang3/src/main/resources/rebel-remote.xml new file mode 100644 index 000000000..ea19a3819 --- /dev/null +++ b/framework/common/commons-lang3/src/main/resources/rebel-remote.xml @@ -0,0 +1,4 @@ + + + org.laidu.learn.commons-lang3 + diff --git a/framework/common/commons-lang3/src/main/resources/rebel.xml b/framework/common/commons-lang3/src/main/resources/rebel.xml new file mode 100644 index 000000000..fb2dc6f55 --- /dev/null +++ b/framework/common/commons-lang3/src/main/resources/rebel.xml @@ -0,0 +1,14 @@ + + + + + + + + + + + diff --git a/framework/common/commons-net/src/main/resources/rebel-remote.xml b/framework/common/commons-net/src/main/resources/rebel-remote.xml new file mode 100644 index 000000000..f3aec3820 --- /dev/null +++ b/framework/common/commons-net/src/main/resources/rebel-remote.xml @@ -0,0 +1,4 @@ + + + org.laidu.learn.commons-net + diff --git a/framework/common/commons-net/src/main/resources/rebel.xml b/framework/common/commons-net/src/main/resources/rebel.xml new file mode 100644 index 000000000..9cc23869c --- /dev/null +++ b/framework/common/commons-net/src/main/resources/rebel.xml @@ -0,0 +1,14 @@ + + + + + + + + + + + diff --git a/framework/common/commons-text/src/main/resources/rebel-remote.xml b/framework/common/commons-text/src/main/resources/rebel-remote.xml new file mode 100644 index 000000000..d13a0e0c0 --- /dev/null +++ b/framework/common/commons-text/src/main/resources/rebel-remote.xml @@ -0,0 +1,4 @@ + + + org.laidu.learn.commons-text + diff --git a/framework/common/commons-text/src/main/resources/rebel.xml b/framework/common/commons-text/src/main/resources/rebel.xml new file mode 100644 index 000000000..840a6ef74 --- /dev/null +++ b/framework/common/commons-text/src/main/resources/rebel.xml @@ -0,0 +1,14 @@ + + + + + + + + + + + diff --git a/framework/common/jodd/src/main/resources/rebel-remote.xml b/framework/common/jodd/src/main/resources/rebel-remote.xml new file mode 100644 index 000000000..39b0e5b23 --- /dev/null +++ b/framework/common/jodd/src/main/resources/rebel-remote.xml @@ -0,0 +1,4 @@ + + + org.laidu.learn.jodd + diff --git a/framework/common/jodd/src/main/resources/rebel.xml b/framework/common/jodd/src/main/resources/rebel.xml new file mode 100644 index 000000000..945e975b2 --- /dev/null +++ b/framework/common/jodd/src/main/resources/rebel.xml @@ -0,0 +1,14 @@ + + + + + + + + + + + diff --git a/framework/common/rxjava/src/main/resources/rebel-remote.xml b/framework/common/rxjava/src/main/resources/rebel-remote.xml new file mode 100644 index 000000000..889795f44 --- /dev/null +++ b/framework/common/rxjava/src/main/resources/rebel-remote.xml @@ -0,0 +1,4 @@ + + + org.laidu.learn.rxjava + diff --git a/framework/common/rxjava/src/main/resources/rebel.xml b/framework/common/rxjava/src/main/resources/rebel.xml new file mode 100644 index 000000000..54f1140e9 --- /dev/null +++ b/framework/common/rxjava/src/main/resources/rebel.xml @@ -0,0 +1,14 @@ + + + + + + + + + + + diff --git a/framework/common/shiro/src/main/resources/rebel-remote.xml b/framework/common/shiro/src/main/resources/rebel-remote.xml new file mode 100644 index 000000000..3553f8338 --- /dev/null +++ b/framework/common/shiro/src/main/resources/rebel-remote.xml @@ -0,0 +1,4 @@ + + + org.laidu.learn.shiro + diff --git a/framework/common/shiro/src/main/resources/rebel.xml b/framework/common/shiro/src/main/resources/rebel.xml new file mode 100644 index 000000000..9ae728d21 --- /dev/null +++ b/framework/common/shiro/src/main/resources/rebel.xml @@ -0,0 +1,14 @@ + + + + + + + + + + + diff --git a/framework/compress/thumbnailator-google/src/main/resources/rebel-remote.xml b/framework/compress/thumbnailator-google/src/main/resources/rebel-remote.xml new file mode 100644 index 000000000..fcb72ee15 --- /dev/null +++ b/framework/compress/thumbnailator-google/src/main/resources/rebel-remote.xml @@ -0,0 +1,4 @@ + + + org.laidu.learn.thumbnailator-google + diff --git a/framework/compress/thumbnailator-google/src/main/resources/rebel.xml b/framework/compress/thumbnailator-google/src/main/resources/rebel.xml new file mode 100644 index 000000000..a4aacded8 --- /dev/null +++ b/framework/compress/thumbnailator-google/src/main/resources/rebel.xml @@ -0,0 +1,14 @@ + + + + + + + + + + + diff --git a/framework/network/async-http-client/src/main/resources/rebel-remote.xml b/framework/network/async-http-client/src/main/resources/rebel-remote.xml new file mode 100644 index 000000000..f42a3ba3c --- /dev/null +++ b/framework/network/async-http-client/src/main/resources/rebel-remote.xml @@ -0,0 +1,4 @@ + + + org.laidu.learn.async-http-client + diff --git a/framework/network/async-http-client/src/main/resources/rebel.xml b/framework/network/async-http-client/src/main/resources/rebel.xml new file mode 100644 index 000000000..223a2a134 --- /dev/null +++ b/framework/network/async-http-client/src/main/resources/rebel.xml @@ -0,0 +1,14 @@ + + + + + + + + + + + diff --git a/framework/network/httpclient/src/main/resources/rebel-remote.xml b/framework/network/httpclient/src/main/resources/rebel-remote.xml new file mode 100644 index 000000000..87c180766 --- /dev/null +++ b/framework/network/httpclient/src/main/resources/rebel-remote.xml @@ -0,0 +1,4 @@ + + + org.laidu.learn.httpclient + diff --git a/framework/network/httpclient/src/main/resources/rebel.xml b/framework/network/httpclient/src/main/resources/rebel.xml new file mode 100644 index 000000000..d7418c2f3 --- /dev/null +++ b/framework/network/httpclient/src/main/resources/rebel.xml @@ -0,0 +1,14 @@ + + + + + + + + + + + diff --git a/framework/network/netty/src/main/resources/rebel-remote.xml b/framework/network/netty/src/main/resources/rebel-remote.xml new file mode 100644 index 000000000..2ac0edaa2 --- /dev/null +++ b/framework/network/netty/src/main/resources/rebel-remote.xml @@ -0,0 +1,4 @@ + + + org.laidu.learn.netty + diff --git a/framework/network/netty/src/main/resources/rebel.xml b/framework/network/netty/src/main/resources/rebel.xml new file mode 100644 index 000000000..91835aeeb --- /dev/null +++ b/framework/network/netty/src/main/resources/rebel.xml @@ -0,0 +1,14 @@ + + + + + + + + + + + diff --git a/framework/network/okhttp/src/main/resources/rebel-remote.xml b/framework/network/okhttp/src/main/resources/rebel-remote.xml new file mode 100644 index 000000000..50b92b72a --- /dev/null +++ b/framework/network/okhttp/src/main/resources/rebel-remote.xml @@ -0,0 +1,4 @@ + + + org.laidu.learn.okhttp + diff --git a/framework/network/okhttp/src/main/resources/rebel.xml b/framework/network/okhttp/src/main/resources/rebel.xml new file mode 100644 index 000000000..d3fc11f86 --- /dev/null +++ b/framework/network/okhttp/src/main/resources/rebel.xml @@ -0,0 +1,14 @@ + + + + + + + + + + + diff --git a/framework/network/retrofit/src/main/resources/rebel-remote.xml b/framework/network/retrofit/src/main/resources/rebel-remote.xml new file mode 100644 index 000000000..f1e13c5ca --- /dev/null +++ b/framework/network/retrofit/src/main/resources/rebel-remote.xml @@ -0,0 +1,4 @@ + + + org.laidu.learn.retrofit + diff --git a/framework/network/retrofit/src/main/resources/rebel.xml b/framework/network/retrofit/src/main/resources/rebel.xml new file mode 100644 index 000000000..beeb2a264 --- /dev/null +++ b/framework/network/retrofit/src/main/resources/rebel.xml @@ -0,0 +1,14 @@ + + + + + + + + + + + diff --git a/framework/network/web-client/src/main/resources/rebel-remote.xml b/framework/network/web-client/src/main/resources/rebel-remote.xml new file mode 100644 index 000000000..d69af7cbc --- /dev/null +++ b/framework/network/web-client/src/main/resources/rebel-remote.xml @@ -0,0 +1,4 @@ + + + org.laidu.learn.web-client + diff --git a/framework/network/web-client/src/main/resources/rebel.xml b/framework/network/web-client/src/main/resources/rebel.xml new file mode 100644 index 000000000..0ff418a44 --- /dev/null +++ b/framework/network/web-client/src/main/resources/rebel.xml @@ -0,0 +1,14 @@ + + + + + + + + + + + diff --git a/framework/rules-engine/drools/src/main/resources/rebel-remote.xml b/framework/rules-engine/drools/src/main/resources/rebel-remote.xml new file mode 100644 index 000000000..76a68e9b3 --- /dev/null +++ b/framework/rules-engine/drools/src/main/resources/rebel-remote.xml @@ -0,0 +1,4 @@ + + + org.laidu.learn.drools + diff --git a/framework/rules-engine/drools/src/main/resources/rebel.xml b/framework/rules-engine/drools/src/main/resources/rebel.xml new file mode 100644 index 000000000..635e50c94 --- /dev/null +++ b/framework/rules-engine/drools/src/main/resources/rebel.xml @@ -0,0 +1,14 @@ + + + + + + + + + + + diff --git a/framework/spring/spring-amqp/src/main/resources/rebel-remote.xml b/framework/spring/spring-amqp/src/main/resources/rebel-remote.xml new file mode 100644 index 000000000..84e694c5b --- /dev/null +++ b/framework/spring/spring-amqp/src/main/resources/rebel-remote.xml @@ -0,0 +1,4 @@ + + + org.laidu.learn.spring-amqp + diff --git a/framework/spring/spring-amqp/src/main/resources/rebel.xml b/framework/spring/spring-amqp/src/main/resources/rebel.xml new file mode 100644 index 000000000..45798f76e --- /dev/null +++ b/framework/spring/spring-amqp/src/main/resources/rebel.xml @@ -0,0 +1,14 @@ + + + + + + + + + + + diff --git a/framework/spring/spring-aop/src/main/resources/rebel-remote.xml b/framework/spring/spring-aop/src/main/resources/rebel-remote.xml new file mode 100644 index 000000000..40acf714a --- /dev/null +++ b/framework/spring/spring-aop/src/main/resources/rebel-remote.xml @@ -0,0 +1,4 @@ + + + org.laidu.learn.spring-aop + diff --git a/framework/spring/spring-aop/src/main/resources/rebel.xml b/framework/spring/spring-aop/src/main/resources/rebel.xml new file mode 100644 index 000000000..4a2e7b4e0 --- /dev/null +++ b/framework/spring/spring-aop/src/main/resources/rebel.xml @@ -0,0 +1,14 @@ + + + + + + + + + + + diff --git a/framework/spring/spring-boot/spring-boot-app/src/main/resources/rebel-remote.xml b/framework/spring/spring-boot/spring-boot-app/src/main/resources/rebel-remote.xml new file mode 100644 index 000000000..58ffbd121 --- /dev/null +++ b/framework/spring/spring-boot/spring-boot-app/src/main/resources/rebel-remote.xml @@ -0,0 +1,4 @@ + + + org.laidu.learn.spring-boot-app + diff --git a/framework/spring/spring-boot/spring-boot-app/src/main/resources/rebel.xml b/framework/spring/spring-boot/spring-boot-app/src/main/resources/rebel.xml new file mode 100644 index 000000000..3428aef28 --- /dev/null +++ b/framework/spring/spring-boot/spring-boot-app/src/main/resources/rebel.xml @@ -0,0 +1,14 @@ + + + + + + + + + + + diff --git a/framework/spring/spring-boot/spring-boot-shiro/src/main/resources/rebel-remote.xml b/framework/spring/spring-boot/spring-boot-shiro/src/main/resources/rebel-remote.xml new file mode 100644 index 000000000..293c4bd0d --- /dev/null +++ b/framework/spring/spring-boot/spring-boot-shiro/src/main/resources/rebel-remote.xml @@ -0,0 +1,4 @@ + + + org.laidu.learn.spring-boot-shiro + diff --git a/framework/spring/spring-boot/spring-boot-shiro/src/main/resources/rebel.xml b/framework/spring/spring-boot/spring-boot-shiro/src/main/resources/rebel.xml new file mode 100644 index 000000000..81098da86 --- /dev/null +++ b/framework/spring/spring-boot/spring-boot-shiro/src/main/resources/rebel.xml @@ -0,0 +1,14 @@ + + + + + + + + + + + diff --git a/framework/spring/spring-boot/spring-boot-sso/src/main/resources/rebel-remote.xml b/framework/spring/spring-boot/spring-boot-sso/src/main/resources/rebel-remote.xml new file mode 100644 index 000000000..e0a92003e --- /dev/null +++ b/framework/spring/spring-boot/spring-boot-sso/src/main/resources/rebel-remote.xml @@ -0,0 +1,4 @@ + + + org.laidu.learn.spring-boot-sso + diff --git a/framework/spring/spring-boot/spring-boot-sso/src/main/resources/rebel.xml b/framework/spring/spring-boot/spring-boot-sso/src/main/resources/rebel.xml new file mode 100644 index 000000000..682801c0e --- /dev/null +++ b/framework/spring/spring-boot/spring-boot-sso/src/main/resources/rebel.xml @@ -0,0 +1,14 @@ + + + + + + + + + + + diff --git a/framework/spring/spring-cloud/admin-dashboard/src/main/resources/rebel-remote.xml b/framework/spring/spring-cloud/admin-dashboard/src/main/resources/rebel-remote.xml new file mode 100644 index 000000000..427a1739a --- /dev/null +++ b/framework/spring/spring-cloud/admin-dashboard/src/main/resources/rebel-remote.xml @@ -0,0 +1,4 @@ + + + org.laidu.learn.admin-dashboard + diff --git a/framework/spring/spring-cloud/admin-dashboard/src/main/resources/rebel.xml b/framework/spring/spring-cloud/admin-dashboard/src/main/resources/rebel.xml new file mode 100644 index 000000000..865b87937 --- /dev/null +++ b/framework/spring/spring-cloud/admin-dashboard/src/main/resources/rebel.xml @@ -0,0 +1,14 @@ + + + + + + + + + + + diff --git a/framework/spring/spring-cloud/api-gateway/src/main/resources/rebel-remote.xml b/framework/spring/spring-cloud/api-gateway/src/main/resources/rebel-remote.xml new file mode 100644 index 000000000..8da969a06 --- /dev/null +++ b/framework/spring/spring-cloud/api-gateway/src/main/resources/rebel-remote.xml @@ -0,0 +1,4 @@ + + + org.laidu.learn.api-gateway + diff --git a/framework/spring/spring-cloud/api-gateway/src/main/resources/rebel.xml b/framework/spring/spring-cloud/api-gateway/src/main/resources/rebel.xml new file mode 100644 index 000000000..a6b4d2d83 --- /dev/null +++ b/framework/spring/spring-cloud/api-gateway/src/main/resources/rebel.xml @@ -0,0 +1,14 @@ + + + + + + + + + + + diff --git a/framework/spring/spring-cloud/config-client/src/main/resources/rebel-remote.xml b/framework/spring/spring-cloud/config-client/src/main/resources/rebel-remote.xml new file mode 100644 index 000000000..09cfbb590 --- /dev/null +++ b/framework/spring/spring-cloud/config-client/src/main/resources/rebel-remote.xml @@ -0,0 +1,4 @@ + + + org.laidu.learn.config-client + diff --git a/framework/spring/spring-cloud/config-client/src/main/resources/rebel.xml b/framework/spring/spring-cloud/config-client/src/main/resources/rebel.xml new file mode 100644 index 000000000..6762be097 --- /dev/null +++ b/framework/spring/spring-cloud/config-client/src/main/resources/rebel.xml @@ -0,0 +1,14 @@ + + + + + + + + + + + diff --git a/framework/spring/spring-cloud/config-server/src/main/resources/rebel-remote.xml b/framework/spring/spring-cloud/config-server/src/main/resources/rebel-remote.xml new file mode 100644 index 000000000..c63b9f00b --- /dev/null +++ b/framework/spring/spring-cloud/config-server/src/main/resources/rebel-remote.xml @@ -0,0 +1,4 @@ + + + org.laidu.learn.config-server + diff --git a/framework/spring/spring-cloud/config-server/src/main/resources/rebel.xml b/framework/spring/spring-cloud/config-server/src/main/resources/rebel.xml new file mode 100644 index 000000000..8209b2b59 --- /dev/null +++ b/framework/spring/spring-cloud/config-server/src/main/resources/rebel.xml @@ -0,0 +1,14 @@ + + + + + + + + + + + diff --git a/framework/spring/spring-cloud/consumer-hello/src/main/resources/rebel-remote.xml b/framework/spring/spring-cloud/consumer-hello/src/main/resources/rebel-remote.xml new file mode 100644 index 000000000..ff8371674 --- /dev/null +++ b/framework/spring/spring-cloud/consumer-hello/src/main/resources/rebel-remote.xml @@ -0,0 +1,4 @@ + + + org.laidu.learn.spring.cloud.consumer-hello + diff --git a/framework/spring/spring-cloud/consumer-hello/src/main/resources/rebel.xml b/framework/spring/spring-cloud/consumer-hello/src/main/resources/rebel.xml new file mode 100644 index 000000000..a4db944d5 --- /dev/null +++ b/framework/spring/spring-cloud/consumer-hello/src/main/resources/rebel.xml @@ -0,0 +1,14 @@ + + + + + + + + + + + diff --git a/framework/spring/spring-cloud/hystrix-dashboard/src/main/resources/rebel-remote.xml b/framework/spring/spring-cloud/hystrix-dashboard/src/main/resources/rebel-remote.xml new file mode 100644 index 000000000..90e44fe31 --- /dev/null +++ b/framework/spring/spring-cloud/hystrix-dashboard/src/main/resources/rebel-remote.xml @@ -0,0 +1,4 @@ + + + org.laidu.learn.hystrix-dashboard + diff --git a/framework/spring/spring-cloud/hystrix-dashboard/src/main/resources/rebel.xml b/framework/spring/spring-cloud/hystrix-dashboard/src/main/resources/rebel.xml new file mode 100644 index 000000000..103dc5ccb --- /dev/null +++ b/framework/spring/spring-cloud/hystrix-dashboard/src/main/resources/rebel.xml @@ -0,0 +1,14 @@ + + + + + + + + + + + diff --git a/framework/spring/spring-cloud/register-center/src/main/resources/rebel-remote.xml b/framework/spring/spring-cloud/register-center/src/main/resources/rebel-remote.xml new file mode 100644 index 000000000..405a5de88 --- /dev/null +++ b/framework/spring/spring-cloud/register-center/src/main/resources/rebel-remote.xml @@ -0,0 +1,4 @@ + + + org.laidu.learn.spring.cloud.register-center + diff --git a/framework/spring/spring-cloud/register-center/src/main/resources/rebel.xml b/framework/spring/spring-cloud/register-center/src/main/resources/rebel.xml new file mode 100644 index 000000000..09dc063cf --- /dev/null +++ b/framework/spring/spring-cloud/register-center/src/main/resources/rebel.xml @@ -0,0 +1,14 @@ + + + + + + + + + + + diff --git a/framework/spring/spring-cloud/service-hello/src/main/resources/rebel-remote.xml b/framework/spring/spring-cloud/service-hello/src/main/resources/rebel-remote.xml new file mode 100644 index 000000000..b5771dd01 --- /dev/null +++ b/framework/spring/spring-cloud/service-hello/src/main/resources/rebel-remote.xml @@ -0,0 +1,4 @@ + + + org.laidu.learn.spring.cloud.service-hello + diff --git a/framework/spring/spring-cloud/service-hello/src/main/resources/rebel.xml b/framework/spring/spring-cloud/service-hello/src/main/resources/rebel.xml new file mode 100644 index 000000000..27c3028f6 --- /dev/null +++ b/framework/spring/spring-cloud/service-hello/src/main/resources/rebel.xml @@ -0,0 +1,14 @@ + + + + + + + + + + + diff --git a/framework/spring/spring-cloud/stream/src/main/resources/rebel-remote.xml b/framework/spring/spring-cloud/stream/src/main/resources/rebel-remote.xml new file mode 100644 index 000000000..f8c90b616 --- /dev/null +++ b/framework/spring/spring-cloud/stream/src/main/resources/rebel-remote.xml @@ -0,0 +1,4 @@ + + + org.laidu.learn.stream + diff --git a/framework/spring/spring-cloud/stream/src/main/resources/rebel.xml b/framework/spring/spring-cloud/stream/src/main/resources/rebel.xml new file mode 100644 index 000000000..ded50d36a --- /dev/null +++ b/framework/spring/spring-cloud/stream/src/main/resources/rebel.xml @@ -0,0 +1,14 @@ + + + + + + + + + + + diff --git a/framework/spring/spring-core/src/main/resources/rebel-remote.xml b/framework/spring/spring-core/src/main/resources/rebel-remote.xml new file mode 100644 index 000000000..695ce9ddc --- /dev/null +++ b/framework/spring/spring-core/src/main/resources/rebel-remote.xml @@ -0,0 +1,4 @@ + + + org.laidu.learn.spring-core + diff --git a/framework/spring/spring-core/src/main/resources/rebel.xml b/framework/spring/spring-core/src/main/resources/rebel.xml new file mode 100644 index 000000000..281e323d5 --- /dev/null +++ b/framework/spring/spring-core/src/main/resources/rebel.xml @@ -0,0 +1,14 @@ + + + + + + + + + + + diff --git a/framework/spring/spring-data/spring-mybatis-plus/src/main/resources/rebel-remote.xml b/framework/spring/spring-data/spring-mybatis-plus/src/main/resources/rebel-remote.xml new file mode 100644 index 000000000..19c68e3cc --- /dev/null +++ b/framework/spring/spring-data/spring-mybatis-plus/src/main/resources/rebel-remote.xml @@ -0,0 +1,4 @@ + + + org.laidu.learn.spring-mybatis-plus + diff --git a/framework/spring/spring-data/spring-mybatis-plus/src/main/resources/rebel.xml b/framework/spring/spring-data/spring-mybatis-plus/src/main/resources/rebel.xml new file mode 100644 index 000000000..cd42816eb --- /dev/null +++ b/framework/spring/spring-data/spring-mybatis-plus/src/main/resources/rebel.xml @@ -0,0 +1,14 @@ + + + + + + + + + + + diff --git a/framework/spring/spring-data/spring-mybatis/src/main/resources/rebel-remote.xml b/framework/spring/spring-data/spring-mybatis/src/main/resources/rebel-remote.xml new file mode 100644 index 000000000..f76fec250 --- /dev/null +++ b/framework/spring/spring-data/spring-mybatis/src/main/resources/rebel-remote.xml @@ -0,0 +1,4 @@ + + + org.laidu.learn.spring-mybatis + diff --git a/framework/spring/spring-data/spring-mybatis/src/main/resources/rebel.xml b/framework/spring/spring-data/spring-mybatis/src/main/resources/rebel.xml new file mode 100644 index 000000000..65c8a34ca --- /dev/null +++ b/framework/spring/spring-data/spring-mybatis/src/main/resources/rebel.xml @@ -0,0 +1,14 @@ + + + + + + + + + + + diff --git a/framework/spring/spring-data/spring-redis/src/main/resources/rebel-remote.xml b/framework/spring/spring-data/spring-redis/src/main/resources/rebel-remote.xml new file mode 100644 index 000000000..ee9707e79 --- /dev/null +++ b/framework/spring/spring-data/spring-redis/src/main/resources/rebel-remote.xml @@ -0,0 +1,4 @@ + + + org.laidu.learn.spring-redis + diff --git a/framework/spring/spring-data/spring-redis/src/main/resources/rebel.xml b/framework/spring/spring-data/spring-redis/src/main/resources/rebel.xml new file mode 100644 index 000000000..98d099d5d --- /dev/null +++ b/framework/spring/spring-data/spring-redis/src/main/resources/rebel.xml @@ -0,0 +1,14 @@ + + + + + + + + + + + diff --git a/framework/spring/spring-hadoop/src/main/resources/rebel-remote.xml b/framework/spring/spring-hadoop/src/main/resources/rebel-remote.xml new file mode 100644 index 000000000..5ccc1d568 --- /dev/null +++ b/framework/spring/spring-hadoop/src/main/resources/rebel-remote.xml @@ -0,0 +1,4 @@ + + + org.laidu.learn.spring-hadoop + diff --git a/framework/spring/spring-hadoop/src/main/resources/rebel.xml b/framework/spring/spring-hadoop/src/main/resources/rebel.xml new file mode 100644 index 000000000..12b1625bf --- /dev/null +++ b/framework/spring/spring-hadoop/src/main/resources/rebel.xml @@ -0,0 +1,14 @@ + + + + + + + + + + + diff --git a/framework/spring/spring-retry/src/main/resources/rebel-remote.xml b/framework/spring/spring-retry/src/main/resources/rebel-remote.xml new file mode 100644 index 000000000..3e2f8894a --- /dev/null +++ b/framework/spring/spring-retry/src/main/resources/rebel-remote.xml @@ -0,0 +1,4 @@ + + + org.laidu.learn.spring-retry + diff --git a/framework/spring/spring-retry/src/main/resources/rebel.xml b/framework/spring/spring-retry/src/main/resources/rebel.xml new file mode 100644 index 000000000..f95b28394 --- /dev/null +++ b/framework/spring/spring-retry/src/main/resources/rebel.xml @@ -0,0 +1,14 @@ + + + + + + + + + + + diff --git a/framework/spring/spring-spel/src/main/resources/rebel-remote.xml b/framework/spring/spring-spel/src/main/resources/rebel-remote.xml new file mode 100644 index 000000000..f31b1306a --- /dev/null +++ b/framework/spring/spring-spel/src/main/resources/rebel-remote.xml @@ -0,0 +1,4 @@ + + + org.laidu.learn.spring-spel + diff --git a/framework/spring/spring-spel/src/main/resources/rebel.xml b/framework/spring/spring-spel/src/main/resources/rebel.xml new file mode 100644 index 000000000..983b1dff9 --- /dev/null +++ b/framework/spring/spring-spel/src/main/resources/rebel.xml @@ -0,0 +1,14 @@ + + + + + + + + + + + diff --git a/framework/spring/spring-statemachine/src/main/resources/rebel-remote.xml b/framework/spring/spring-statemachine/src/main/resources/rebel-remote.xml new file mode 100644 index 000000000..830bf7b53 --- /dev/null +++ b/framework/spring/spring-statemachine/src/main/resources/rebel-remote.xml @@ -0,0 +1,4 @@ + + + org.laidu.learn.spring-statemachine + diff --git a/framework/spring/spring-statemachine/src/main/resources/rebel.xml b/framework/spring/spring-statemachine/src/main/resources/rebel.xml new file mode 100644 index 000000000..fbb67ce96 --- /dev/null +++ b/framework/spring/spring-statemachine/src/main/resources/rebel.xml @@ -0,0 +1,14 @@ + + + + + + + + + + + diff --git a/framework/spring/spring-transaction/src/main/resources/rebel-remote.xml b/framework/spring/spring-transaction/src/main/resources/rebel-remote.xml new file mode 100644 index 000000000..aa72487b2 --- /dev/null +++ b/framework/spring/spring-transaction/src/main/resources/rebel-remote.xml @@ -0,0 +1,4 @@ + + + org.laidu.learn.spring-transaction + diff --git a/framework/spring/spring-transaction/src/main/resources/rebel.xml b/framework/spring/spring-transaction/src/main/resources/rebel.xml new file mode 100644 index 000000000..eb6e4ffa9 --- /dev/null +++ b/framework/spring/spring-transaction/src/main/resources/rebel.xml @@ -0,0 +1,14 @@ + + + + + + + + + + + diff --git a/framework/spring/spring-web/spring-mvc/src/main/resources/rebel-remote.xml b/framework/spring/spring-web/spring-mvc/src/main/resources/rebel-remote.xml new file mode 100644 index 000000000..09d948e8a --- /dev/null +++ b/framework/spring/spring-web/spring-mvc/src/main/resources/rebel-remote.xml @@ -0,0 +1,4 @@ + + + org.laidu.learn.spring-mvc + diff --git a/framework/spring/spring-web/spring-mvc/src/main/resources/rebel.xml b/framework/spring/spring-web/spring-mvc/src/main/resources/rebel.xml new file mode 100644 index 000000000..bf277ef94 --- /dev/null +++ b/framework/spring/spring-web/spring-mvc/src/main/resources/rebel.xml @@ -0,0 +1,14 @@ + + + + + + + + + + + diff --git a/framework/spring/spring-web/spring-webflux/src/main/resources/rebel-remote.xml b/framework/spring/spring-web/spring-webflux/src/main/resources/rebel-remote.xml new file mode 100644 index 000000000..c2a2e9e6b --- /dev/null +++ b/framework/spring/spring-web/spring-webflux/src/main/resources/rebel-remote.xml @@ -0,0 +1,4 @@ + + + org.laidu.learn.spring-webflux + diff --git a/framework/spring/spring-web/spring-webflux/src/main/resources/rebel.xml b/framework/spring/spring-web/spring-webflux/src/main/resources/rebel.xml new file mode 100644 index 000000000..b4d5b43c7 --- /dev/null +++ b/framework/spring/spring-web/spring-webflux/src/main/resources/rebel.xml @@ -0,0 +1,14 @@ + + + + + + + + + + + diff --git a/framework/spring/swagger/src/main/resources/rebel-remote.xml b/framework/spring/swagger/src/main/resources/rebel-remote.xml new file mode 100644 index 000000000..a9d960a19 --- /dev/null +++ b/framework/spring/swagger/src/main/resources/rebel-remote.xml @@ -0,0 +1,4 @@ + + + org.laidu.learn.swagger.swagger + diff --git a/framework/spring/swagger/src/main/resources/rebel.xml b/framework/spring/swagger/src/main/resources/rebel.xml new file mode 100644 index 000000000..a5ab99d0e --- /dev/null +++ b/framework/spring/swagger/src/main/resources/rebel.xml @@ -0,0 +1,14 @@ + + + + + + + + + + + diff --git a/framework/task-scheduler/elastic-job/src/main/resources/rebel-remote.xml b/framework/task-scheduler/elastic-job/src/main/resources/rebel-remote.xml new file mode 100644 index 000000000..e21339678 --- /dev/null +++ b/framework/task-scheduler/elastic-job/src/main/resources/rebel-remote.xml @@ -0,0 +1,4 @@ + + + org.laidu.learn.elastic-job + diff --git a/framework/task-scheduler/elastic-job/src/main/resources/rebel.xml b/framework/task-scheduler/elastic-job/src/main/resources/rebel.xml new file mode 100644 index 000000000..f1eebe947 --- /dev/null +++ b/framework/task-scheduler/elastic-job/src/main/resources/rebel.xml @@ -0,0 +1,14 @@ + + + + + + + + + + + diff --git a/framework/test/junit5/src/main/resources/rebel-remote.xml b/framework/test/junit5/src/main/resources/rebel-remote.xml new file mode 100644 index 000000000..24802bb7e --- /dev/null +++ b/framework/test/junit5/src/main/resources/rebel-remote.xml @@ -0,0 +1,4 @@ + + + org.laidu.learn.junit5 + diff --git a/framework/test/junit5/src/main/resources/rebel.xml b/framework/test/junit5/src/main/resources/rebel.xml new file mode 100644 index 000000000..0c1b40619 --- /dev/null +++ b/framework/test/junit5/src/main/resources/rebel.xml @@ -0,0 +1,14 @@ + + + + + + + + + + + diff --git a/framework/test/mockito/src/main/resources/rebel-remote.xml b/framework/test/mockito/src/main/resources/rebel-remote.xml new file mode 100644 index 000000000..ceef984d4 --- /dev/null +++ b/framework/test/mockito/src/main/resources/rebel-remote.xml @@ -0,0 +1,4 @@ + + + org.laidu.learn.mockito + diff --git a/framework/test/mockito/src/main/resources/rebel.xml b/framework/test/mockito/src/main/resources/rebel.xml new file mode 100644 index 000000000..9698568a7 --- /dev/null +++ b/framework/test/mockito/src/main/resources/rebel.xml @@ -0,0 +1,14 @@ + + + + + + + + + + + diff --git a/framework/thirdparty/wechat/wechat-common/src/main/resources/rebel-remote.xml b/framework/thirdparty/wechat/wechat-common/src/main/resources/rebel-remote.xml new file mode 100644 index 000000000..db5ed204a --- /dev/null +++ b/framework/thirdparty/wechat/wechat-common/src/main/resources/rebel-remote.xml @@ -0,0 +1,4 @@ + + + org.laidu.learn.wechat-common + diff --git a/framework/thirdparty/wechat/wechat-common/src/main/resources/rebel.xml b/framework/thirdparty/wechat/wechat-common/src/main/resources/rebel.xml new file mode 100644 index 000000000..b767a1b76 --- /dev/null +++ b/framework/thirdparty/wechat/wechat-common/src/main/resources/rebel.xml @@ -0,0 +1,14 @@ + + + + + + + + + + + diff --git a/framework/thirdparty/wechat/wechat-mp/src/main/resources/rebel-remote.xml b/framework/thirdparty/wechat/wechat-mp/src/main/resources/rebel-remote.xml new file mode 100644 index 000000000..0af0862a7 --- /dev/null +++ b/framework/thirdparty/wechat/wechat-mp/src/main/resources/rebel-remote.xml @@ -0,0 +1,4 @@ + + + org.laidu.learn.wechat-mp + diff --git a/framework/thirdparty/wechat/wechat-mp/src/main/resources/rebel.xml b/framework/thirdparty/wechat/wechat-mp/src/main/resources/rebel.xml new file mode 100644 index 000000000..a9c3ec5d9 --- /dev/null +++ b/framework/thirdparty/wechat/wechat-mp/src/main/resources/rebel.xml @@ -0,0 +1,14 @@ + + + + + + + + + + + diff --git a/framework/thirdparty/wechat/wechat-robot/src/main/resources/rebel-remote.xml b/framework/thirdparty/wechat/wechat-robot/src/main/resources/rebel-remote.xml new file mode 100644 index 000000000..a96c436fd --- /dev/null +++ b/framework/thirdparty/wechat/wechat-robot/src/main/resources/rebel-remote.xml @@ -0,0 +1,4 @@ + + + org.laidu.learn.wechat-robot + diff --git a/framework/thirdparty/wechat/wechat-robot/src/main/resources/rebel.xml b/framework/thirdparty/wechat/wechat-robot/src/main/resources/rebel.xml new file mode 100644 index 000000000..b5a722fc5 --- /dev/null +++ b/framework/thirdparty/wechat/wechat-robot/src/main/resources/rebel.xml @@ -0,0 +1,14 @@ + + + + + + + + + + + diff --git a/framework/web/play/src/main/resources/rebel-remote.xml b/framework/web/play/src/main/resources/rebel-remote.xml new file mode 100644 index 000000000..e53a59777 --- /dev/null +++ b/framework/web/play/src/main/resources/rebel-remote.xml @@ -0,0 +1,4 @@ + + + org.laidu.learn.play + diff --git a/framework/web/play/src/main/resources/rebel.xml b/framework/web/play/src/main/resources/rebel.xml new file mode 100644 index 000000000..4d818fce2 --- /dev/null +++ b/framework/web/play/src/main/resources/rebel.xml @@ -0,0 +1,14 @@ + + + + + + + + + + + diff --git a/framework/web/tomcat/src/main/resources/rebel-remote.xml b/framework/web/tomcat/src/main/resources/rebel-remote.xml new file mode 100644 index 000000000..0a2030bc0 --- /dev/null +++ b/framework/web/tomcat/src/main/resources/rebel-remote.xml @@ -0,0 +1,4 @@ + + + org.laidu.learn.tomcat + diff --git a/framework/web/tomcat/src/main/resources/rebel.xml b/framework/web/tomcat/src/main/resources/rebel.xml new file mode 100644 index 000000000..c954d445c --- /dev/null +++ b/framework/web/tomcat/src/main/resources/rebel.xml @@ -0,0 +1,14 @@ + + + + + + + + + + + diff --git a/framework/web/undertow/src/main/resources/rebel-remote.xml b/framework/web/undertow/src/main/resources/rebel-remote.xml new file mode 100644 index 000000000..91920ac21 --- /dev/null +++ b/framework/web/undertow/src/main/resources/rebel-remote.xml @@ -0,0 +1,4 @@ + + + org.laidu.learn.undertow + diff --git a/framework/web/undertow/src/main/resources/rebel.xml b/framework/web/undertow/src/main/resources/rebel.xml new file mode 100644 index 000000000..aaa5123b1 --- /dev/null +++ b/framework/web/undertow/src/main/resources/rebel.xml @@ -0,0 +1,14 @@ + + + + + + + + + + + diff --git a/framework/webmagic/webmagic-learn/src/main/resources/rebel-remote.xml b/framework/webmagic/webmagic-learn/src/main/resources/rebel-remote.xml new file mode 100644 index 000000000..b47640aba --- /dev/null +++ b/framework/webmagic/webmagic-learn/src/main/resources/rebel-remote.xml @@ -0,0 +1,4 @@ + + + org.laidu.learn.webmagic-learn + diff --git a/framework/webmagic/webmagic-learn/src/main/resources/rebel.xml b/framework/webmagic/webmagic-learn/src/main/resources/rebel.xml new file mode 100644 index 000000000..ea83368f3 --- /dev/null +++ b/framework/webmagic/webmagic-learn/src/main/resources/rebel.xml @@ -0,0 +1,14 @@ + + + + + + + + + + + diff --git a/language-advance/bytecode/src/main/resources/rebel-remote.xml b/language-advance/bytecode/src/main/resources/rebel-remote.xml new file mode 100644 index 000000000..d55f7f50a --- /dev/null +++ b/language-advance/bytecode/src/main/resources/rebel-remote.xml @@ -0,0 +1,4 @@ + + + org.laidu.learn.bytecode + diff --git a/language-advance/bytecode/src/main/resources/rebel.xml b/language-advance/bytecode/src/main/resources/rebel.xml new file mode 100644 index 000000000..c62118d04 --- /dev/null +++ b/language-advance/bytecode/src/main/resources/rebel.xml @@ -0,0 +1,14 @@ + + + + + + + + + + + diff --git a/language-advance/concurrent/src/main/resources/rebel-remote.xml b/language-advance/concurrent/src/main/resources/rebel-remote.xml new file mode 100644 index 000000000..f798576ba --- /dev/null +++ b/language-advance/concurrent/src/main/resources/rebel-remote.xml @@ -0,0 +1,4 @@ + + + org.laidu.learn.concurrent + diff --git a/language-advance/concurrent/src/main/resources/rebel.xml b/language-advance/concurrent/src/main/resources/rebel.xml new file mode 100644 index 000000000..6c6bfda8c --- /dev/null +++ b/language-advance/concurrent/src/main/resources/rebel.xml @@ -0,0 +1,14 @@ + + + + + + + + + + + diff --git a/language-advance/gui/src/main/resources/rebel-remote.xml b/language-advance/gui/src/main/resources/rebel-remote.xml new file mode 100644 index 000000000..81887f99f --- /dev/null +++ b/language-advance/gui/src/main/resources/rebel-remote.xml @@ -0,0 +1,4 @@ + + + org.laidu.learn.gui + diff --git a/language-advance/gui/src/main/resources/rebel.xml b/language-advance/gui/src/main/resources/rebel.xml new file mode 100644 index 000000000..7ade83a27 --- /dev/null +++ b/language-advance/gui/src/main/resources/rebel.xml @@ -0,0 +1,14 @@ + + + + + + + + + + + diff --git a/language-advance/io/src/main/resources/rebel-remote.xml b/language-advance/io/src/main/resources/rebel-remote.xml new file mode 100644 index 000000000..18e434897 --- /dev/null +++ b/language-advance/io/src/main/resources/rebel-remote.xml @@ -0,0 +1,4 @@ + + + org.laidu.learn.io + diff --git a/language-advance/io/src/main/resources/rebel.xml b/language-advance/io/src/main/resources/rebel.xml new file mode 100644 index 000000000..5e01b47cc --- /dev/null +++ b/language-advance/io/src/main/resources/rebel.xml @@ -0,0 +1,14 @@ + + + + + + + + + + + diff --git a/language-advance/jni/src/main/resources/rebel-remote.xml b/language-advance/jni/src/main/resources/rebel-remote.xml new file mode 100644 index 000000000..8adb3e262 --- /dev/null +++ b/language-advance/jni/src/main/resources/rebel-remote.xml @@ -0,0 +1,4 @@ + + + org.laidu.learn.jni + diff --git a/language-advance/jni/src/main/resources/rebel.xml b/language-advance/jni/src/main/resources/rebel.xml new file mode 100644 index 000000000..760681743 --- /dev/null +++ b/language-advance/jni/src/main/resources/rebel.xml @@ -0,0 +1,14 @@ + + + + + + + + + + + diff --git a/language-advance/jvm/src/main/resources/rebel-remote.xml b/language-advance/jvm/src/main/resources/rebel-remote.xml new file mode 100644 index 000000000..bb51b63e1 --- /dev/null +++ b/language-advance/jvm/src/main/resources/rebel-remote.xml @@ -0,0 +1,4 @@ + + + org.laidu.learn.jvm + diff --git a/language-advance/jvm/src/main/resources/rebel.xml b/language-advance/jvm/src/main/resources/rebel.xml new file mode 100644 index 000000000..04f949467 --- /dev/null +++ b/language-advance/jvm/src/main/resources/rebel.xml @@ -0,0 +1,14 @@ + + + + + + + + + + + diff --git a/language-advance/script/src/main/resources/rebel-remote.xml b/language-advance/script/src/main/resources/rebel-remote.xml new file mode 100644 index 000000000..8501b0ec9 --- /dev/null +++ b/language-advance/script/src/main/resources/rebel-remote.xml @@ -0,0 +1,4 @@ + + + org.laidu.learn.script + diff --git a/language-advance/script/src/main/resources/rebel.xml b/language-advance/script/src/main/resources/rebel.xml new file mode 100644 index 000000000..f18f5065f --- /dev/null +++ b/language-advance/script/src/main/resources/rebel.xml @@ -0,0 +1,14 @@ + + + + + + + + + + + diff --git a/language-advance/security/src/main/resources/rebel-remote.xml b/language-advance/security/src/main/resources/rebel-remote.xml new file mode 100644 index 000000000..6090d3eaa --- /dev/null +++ b/language-advance/security/src/main/resources/rebel-remote.xml @@ -0,0 +1,4 @@ + + + org.laidu.learn.security + diff --git a/language-advance/security/src/main/resources/rebel.xml b/language-advance/security/src/main/resources/rebel.xml new file mode 100644 index 000000000..3d5003d1b --- /dev/null +++ b/language-advance/security/src/main/resources/rebel.xml @@ -0,0 +1,14 @@ + + + + + + + + + + + diff --git a/language-advance/sql/src/main/resources/rebel-remote.xml b/language-advance/sql/src/main/resources/rebel-remote.xml new file mode 100644 index 000000000..b2e795a62 --- /dev/null +++ b/language-advance/sql/src/main/resources/rebel-remote.xml @@ -0,0 +1,4 @@ + + + org.laidu.learn.sql + diff --git a/language-advance/sql/src/main/resources/rebel.xml b/language-advance/sql/src/main/resources/rebel.xml new file mode 100644 index 000000000..143906df6 --- /dev/null +++ b/language-advance/sql/src/main/resources/rebel.xml @@ -0,0 +1,14 @@ + + + + + + + + + + + diff --git a/language-advance/xml/src/main/resources/rebel-remote.xml b/language-advance/xml/src/main/resources/rebel-remote.xml new file mode 100644 index 000000000..83c579404 --- /dev/null +++ b/language-advance/xml/src/main/resources/rebel-remote.xml @@ -0,0 +1,4 @@ + + + org.laidu.learn.xml + diff --git a/language-advance/xml/src/main/resources/rebel.xml b/language-advance/xml/src/main/resources/rebel.xml new file mode 100644 index 000000000..e7134ca79 --- /dev/null +++ b/language-advance/xml/src/main/resources/rebel.xml @@ -0,0 +1,14 @@ + + + + + + + + + + + diff --git a/language-feature/src/main/resources/rebel-remote.xml b/language-feature/src/main/resources/rebel-remote.xml new file mode 100644 index 000000000..298554b67 --- /dev/null +++ b/language-feature/src/main/resources/rebel-remote.xml @@ -0,0 +1,4 @@ + + + org.laidu.learn.language-feature + diff --git a/language-feature/src/main/resources/rebel.xml b/language-feature/src/main/resources/rebel.xml new file mode 100644 index 000000000..2bbc8c4e7 --- /dev/null +++ b/language-feature/src/main/resources/rebel.xml @@ -0,0 +1,14 @@ + + + + + + + + + + + diff --git a/production-component/common-util/src/main/resources/rebel-remote.xml b/production-component/common-util/src/main/resources/rebel-remote.xml new file mode 100644 index 000000000..76131ebbc --- /dev/null +++ b/production-component/common-util/src/main/resources/rebel-remote.xml @@ -0,0 +1,4 @@ + + + org.laidu.learn.common-util + diff --git a/production-component/common-util/src/main/resources/rebel.xml b/production-component/common-util/src/main/resources/rebel.xml new file mode 100644 index 000000000..b3f943733 --- /dev/null +++ b/production-component/common-util/src/main/resources/rebel.xml @@ -0,0 +1,14 @@ + + + + + + + + + + + diff --git a/production-component/crawler-helper/src/main/resources/rebel-remote.xml b/production-component/crawler-helper/src/main/resources/rebel-remote.xml new file mode 100644 index 000000000..b412e1d38 --- /dev/null +++ b/production-component/crawler-helper/src/main/resources/rebel-remote.xml @@ -0,0 +1,4 @@ + + + org.laidu.crawler.crawler-helper + diff --git a/production-component/crawler-helper/src/main/resources/rebel.xml b/production-component/crawler-helper/src/main/resources/rebel.xml new file mode 100644 index 000000000..9e565b123 --- /dev/null +++ b/production-component/crawler-helper/src/main/resources/rebel.xml @@ -0,0 +1,14 @@ + + + + + + + + + + + diff --git a/production-component/crawler/src/main/resources/rebel-remote.xml b/production-component/crawler/src/main/resources/rebel-remote.xml new file mode 100644 index 000000000..874e1f609 --- /dev/null +++ b/production-component/crawler/src/main/resources/rebel-remote.xml @@ -0,0 +1,4 @@ + + + org.laidu.learn.crawler + diff --git a/production-component/crawler/src/main/resources/rebel.xml b/production-component/crawler/src/main/resources/rebel.xml new file mode 100644 index 000000000..4b90373c7 --- /dev/null +++ b/production-component/crawler/src/main/resources/rebel.xml @@ -0,0 +1,14 @@ + + + + + + + + + + + From 5b2c824f41c130bb26696037509d045514f72a6d Mon Sep 17 00:00:00 2001 From: snyk-bot Date: Wed, 1 Apr 2020 00:05:14 +0000 Subject: [PATCH 310/417] fix: pom.xml to reduce vulnerabilities The following vulnerabilities are fixed with an upgrade: - https://snyk.io/vuln/SNYK-JAVA-COMFASTERXMLJACKSONCORE-560762 - https://snyk.io/vuln/SNYK-JAVA-COMFASTERXMLJACKSONCORE-560766 - https://snyk.io/vuln/SNYK-JAVA-COMFASTERXMLJACKSONCORE-561362 - https://snyk.io/vuln/SNYK-JAVA-COMFASTERXMLJACKSONCORE-561373 - https://snyk.io/vuln/SNYK-JAVA-COMFASTERXMLJACKSONCORE-561585 - https://snyk.io/vuln/SNYK-JAVA-COMFASTERXMLJACKSONCORE-561586 - https://snyk.io/vuln/SNYK-JAVA-COMFASTERXMLJACKSONCORE-561587 --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index 7601723ce..6b4695545 100644 --- a/pom.xml +++ b/pom.xml @@ -92,7 +92,7 @@ ${junit4.version}.0 1.0.2 - 5.3 + 6.3
                    From 9012b40a3c53427c503d4f069ca8b2d9d23ffe96 Mon Sep 17 00:00:00 2001 From: snyk-bot Date: Wed, 1 Apr 2020 02:27:08 +0000 Subject: [PATCH 311/417] fix: pom.xml & framework/spring/spring-amqp/pom.xml to reduce vulnerabilities The following vulnerabilities are fixed with an upgrade: - https://snyk.io/vuln/SNYK-JAVA-COMFASTERXMLJACKSONCORE-561585 - https://snyk.io/vuln/SNYK-JAVA-COMFASTERXMLJACKSONCORE-561586 - https://snyk.io/vuln/SNYK-JAVA-COMFASTERXMLJACKSONCORE-561587 --- framework/spring/spring-amqp/pom.xml | 2 +- pom.xml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/framework/spring/spring-amqp/pom.xml b/framework/spring/spring-amqp/pom.xml index 3bb634548..792465ed7 100644 --- a/framework/spring/spring-amqp/pom.xml +++ b/framework/spring/spring-amqp/pom.xml @@ -37,7 +37,7 @@ org.springframework.amqp spring-rabbit - 2.0.1.RELEASE + 2.1.0.RELEASE diff --git a/pom.xml b/pom.xml index 7601723ce..6b4695545 100644 --- a/pom.xml +++ b/pom.xml @@ -92,7 +92,7 @@ ${junit4.version}.0 1.0.2 - 5.3 + 6.3 From 3eacfdb2d400f54c79e049d4a14bc5b3511cb4bf Mon Sep 17 00:00:00 2001 From: snyk-bot Date: Wed, 1 Apr 2020 02:32:50 +0000 Subject: [PATCH 312/417] fix: pom.xml & framework/spring/spring-boot/spring-boot-sso/pom.xml to reduce vulnerabilities The following vulnerabilities are fixed with an upgrade: - https://snyk.io/vuln/SNYK-JAVA-COMFASTERXMLJACKSONCORE-561585 - https://snyk.io/vuln/SNYK-JAVA-COMFASTERXMLJACKSONCORE-561586 - https://snyk.io/vuln/SNYK-JAVA-COMFASTERXMLJACKSONCORE-561587 --- framework/spring/spring-boot/spring-boot-sso/pom.xml | 2 +- pom.xml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/framework/spring/spring-boot/spring-boot-sso/pom.xml b/framework/spring/spring-boot/spring-boot-sso/pom.xml index 513e01d69..2de97f721 100644 --- a/framework/spring/spring-boot/spring-boot-sso/pom.xml +++ b/framework/spring/spring-boot/spring-boot-sso/pom.xml @@ -20,7 +20,7 @@ org.springframework.security.oauth.boot spring-security-oauth2-autoconfigure - 2.0.1.RELEASE + 2.2.0.RELEASE org.springframework.boot diff --git a/pom.xml b/pom.xml index 7601723ce..6b4695545 100644 --- a/pom.xml +++ b/pom.xml @@ -92,7 +92,7 @@ ${junit4.version}.0 1.0.2 - 5.3 + 6.3 From e2351d47692adcc6defcb7f68da4775d5ce4d9cd Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Fri, 3 Apr 2020 15:54:59 +0000 Subject: [PATCH 313/417] Bump spring-webflux in /framework/network Bumps [spring-webflux](https://github.com/spring-projects/spring-framework) from 5.2.2.RELEASE to 5.2.4.RELEASE. - [Release notes](https://github.com/spring-projects/spring-framework/releases) - [Commits](https://github.com/spring-projects/spring-framework/compare/v5.2.2.RELEASE...v5.2.4.RELEASE) Signed-off-by: dependabot[bot] --- framework/network/pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/framework/network/pom.xml b/framework/network/pom.xml index 7d8fa4794..3c904c33b 100644 --- a/framework/network/pom.xml +++ b/framework/network/pom.xml @@ -26,7 +26,7 @@ 2.5.0 2.1.0-alpha24 - 5.2.2.RELEASE + 5.2.4.RELEASE 0.7.14.RELEASE 4.2.2 From 66acbb0a3472d673f66f1f8323f71fa63a9c5413 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Sat, 6 Jun 2020 05:27:56 +0000 Subject: [PATCH 314/417] Bump dom4j from 2.1.1 to 2.1.3 in /production-component/common-util Bumps [dom4j](https://github.com/dom4j/dom4j) from 2.1.1 to 2.1.3. - [Release notes](https://github.com/dom4j/dom4j/releases) - [Commits](https://github.com/dom4j/dom4j/compare/version-2.1.1...version-2.1.3) Signed-off-by: dependabot[bot] --- production-component/common-util/pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/production-component/common-util/pom.xml b/production-component/common-util/pom.xml index 47d7929e4..d08d09dc6 100644 --- a/production-component/common-util/pom.xml +++ b/production-component/common-util/pom.xml @@ -31,7 +31,7 @@ 1.2.47 2.10.1 - 2.1.1 + 2.1.3 4.4.8 4.5.3 From 4cdcf0ebdbdce77ca91fa4ef3ce61c0f25dff74c Mon Sep 17 00:00:00 2001 From: laidu Date: Fri, 12 Jun 2020 00:43:06 +0800 Subject: [PATCH 315/417] sync --- framework/spring/spring-boot/pom.xml | 2 +- .../spring-boot/spring-boot-app/pom.xml | 16 +++++- .../boot/app/SpringBootAppApplication.java | 8 +-- .../spring/boot/app/config/RedisConfig.java | 15 ++++++ .../spring/boot/app/controller/CacheApi.java | 31 +++++++++++ .../spring/boot/app/service/CacheService.java | 20 ++++++++ .../app/service/impl/CacheServiceImpl.java | 51 +++++++++++++++++++ .../spring-boot/spring-boot-cache/pom.xml | 21 ++++++++ .../learn/spring/boot/cache/CacheApp.java | 23 +++++++++ .../src/main/resources/application.yml | 0 10 files changed, 182 insertions(+), 5 deletions(-) create mode 100644 framework/spring/spring-boot/spring-boot-app/src/main/java/org/laidu/learn/spring/boot/app/config/RedisConfig.java create mode 100644 framework/spring/spring-boot/spring-boot-app/src/main/java/org/laidu/learn/spring/boot/app/controller/CacheApi.java create mode 100644 framework/spring/spring-boot/spring-boot-app/src/main/java/org/laidu/learn/spring/boot/app/service/CacheService.java create mode 100644 framework/spring/spring-boot/spring-boot-app/src/main/java/org/laidu/learn/spring/boot/app/service/impl/CacheServiceImpl.java create mode 100644 framework/spring/spring-boot/spring-boot-cache/pom.xml create mode 100644 framework/spring/spring-boot/spring-boot-cache/src/main/java/org/laidu/learn/spring/boot/cache/CacheApp.java create mode 100644 framework/spring/spring-boot/spring-boot-cache/src/main/resources/application.yml diff --git a/framework/spring/spring-boot/pom.xml b/framework/spring/spring-boot/pom.xml index c3b6b77a9..50cfbb9ba 100644 --- a/framework/spring/spring-boot/pom.xml +++ b/framework/spring/spring-boot/pom.xml @@ -17,6 +17,7 @@ spring-boot-app spring-boot-shiro spring-boot-sso + spring-boot-cache @@ -35,7 +36,6 @@ - org.springframework.boot spring-boot-starter diff --git a/framework/spring/spring-boot/spring-boot-app/pom.xml b/framework/spring/spring-boot/spring-boot-app/pom.xml index 104e1ece2..83f6cbbbb 100644 --- a/framework/spring/spring-boot/spring-boot-app/pom.xml +++ b/framework/spring/spring-boot/spring-boot-app/pom.xml @@ -26,6 +26,16 @@ org.springframework.boot spring-boot-starter-actuator + + org.springframework.boot + spring-boot-starter-data-redis + + + + org.springframework.boot + spring-boot-starter-cache + 1.4.2.RELEASE + org.springframework.boot @@ -67,7 +77,11 @@ spring-boot-starter-test test - + + org.springframework.data + spring-data-redis + + diff --git a/framework/spring/spring-boot/spring-boot-app/src/main/java/org/laidu/learn/spring/boot/app/SpringBootAppApplication.java b/framework/spring/spring-boot/spring-boot-app/src/main/java/org/laidu/learn/spring/boot/app/SpringBootAppApplication.java index 26eb8a2e9..f7406db47 100644 --- a/framework/spring/spring-boot/spring-boot-app/src/main/java/org/laidu/learn/spring/boot/app/SpringBootAppApplication.java +++ b/framework/spring/spring-boot/spring-boot-app/src/main/java/org/laidu/learn/spring/boot/app/SpringBootAppApplication.java @@ -1,15 +1,17 @@ package org.laidu.learn.spring.boot.app; -import lombok.extern.slf4j.Slf4j; import org.springframework.boot.Banner; -import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.boot.builder.SpringApplicationBuilder; +import org.springframework.cache.annotation.EnableCaching; + +import lombok.extern.slf4j.Slf4j; /** * @author laidu */ @Slf4j +@EnableCaching @SpringBootApplication public class SpringBootAppApplication { @@ -17,7 +19,7 @@ public class SpringBootAppApplication { public static void main(String[] args) { - SpringApplication.run(SpringBootAppApplication.class,args); +// SpringApplication.run(SpringBootAppApplication.class,args); new SpringApplicationBuilder() .sources(SpringBootAppApplication.class) diff --git a/framework/spring/spring-boot/spring-boot-app/src/main/java/org/laidu/learn/spring/boot/app/config/RedisConfig.java b/framework/spring/spring-boot/spring-boot-app/src/main/java/org/laidu/learn/spring/boot/app/config/RedisConfig.java new file mode 100644 index 000000000..4a1c0220d --- /dev/null +++ b/framework/spring/spring-boot/spring-boot-app/src/main/java/org/laidu/learn/spring/boot/app/config/RedisConfig.java @@ -0,0 +1,15 @@ +package org.laidu.learn.spring.boot.app.config; + +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; +import org.springframework.data.redis.cache.RedisCacheManager; +import org.springframework.data.redis.connection.RedisConnectionFactory; + +@Configuration +public class RedisConfig { + + @Bean + public RedisCacheManager cacheManager(RedisConnectionFactory redisConnectionFactory) { + return RedisCacheManager.create(redisConnectionFactory); + } +} diff --git a/framework/spring/spring-boot/spring-boot-app/src/main/java/org/laidu/learn/spring/boot/app/controller/CacheApi.java b/framework/spring/spring-boot/spring-boot-app/src/main/java/org/laidu/learn/spring/boot/app/controller/CacheApi.java new file mode 100644 index 000000000..9e6bd8e12 --- /dev/null +++ b/framework/spring/spring-boot/spring-boot-app/src/main/java/org/laidu/learn/spring/boot/app/controller/CacheApi.java @@ -0,0 +1,31 @@ +package org.laidu.learn.spring.boot.app.controller; + +import org.laidu.learn.spring.boot.app.service.CacheService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import lombok.extern.slf4j.Slf4j; + +@Slf4j +@RestController +@RequestMapping("/cache") +public class CacheApi { + + @Autowired + private CacheService cacheService; + + @GetMapping("/cacheAll") + public String cacheAll() { + cacheService.aaName(12L); + cacheService.aaName2(12L); + cacheService.bbName(12L); + return cacheService.bbName2(12L); + } + + @GetMapping("/clearAa") + public String clearAa() { + return cacheService.aaClear(12L); + } +} diff --git a/framework/spring/spring-boot/spring-boot-app/src/main/java/org/laidu/learn/spring/boot/app/service/CacheService.java b/framework/spring/spring-boot/spring-boot-app/src/main/java/org/laidu/learn/spring/boot/app/service/CacheService.java new file mode 100644 index 000000000..780f977d1 --- /dev/null +++ b/framework/spring/spring-boot/spring-boot-app/src/main/java/org/laidu/learn/spring/boot/app/service/CacheService.java @@ -0,0 +1,20 @@ +package org.laidu.learn.spring.boot.app.service; + +/** + * 缓存service + */ +public interface CacheService { + + String aaName(Long id); + + String aaName2(Long id); + + String aaClear(Long id); + + String bbName(Long id); + + String bbName2(Long id); + + String bbClear(Long id); + +} diff --git a/framework/spring/spring-boot/spring-boot-app/src/main/java/org/laidu/learn/spring/boot/app/service/impl/CacheServiceImpl.java b/framework/spring/spring-boot/spring-boot-app/src/main/java/org/laidu/learn/spring/boot/app/service/impl/CacheServiceImpl.java new file mode 100644 index 000000000..d4d8a893a --- /dev/null +++ b/framework/spring/spring-boot/spring-boot-app/src/main/java/org/laidu/learn/spring/boot/app/service/impl/CacheServiceImpl.java @@ -0,0 +1,51 @@ +package org.laidu.learn.spring.boot.app.service.impl; + +import org.laidu.learn.spring.boot.app.service.CacheService; +import org.springframework.cache.annotation.CacheEvict; +import org.springframework.cache.annotation.Cacheable; +import org.springframework.stereotype.Service; + +@Service +public class CacheServiceImpl implements CacheService { + + @Override + @Cacheable(cacheNames = {"aa"}, key = "'aa' + #id") + public String aaName(Long id) { + return "asdsa"; + } + + @Override + @Cacheable(cacheNames = {"aa"}, key = "'aa2' + #id") + public String aaName2(Long id) { + return "asdsa"; + } + + /** + * 只会清除相同cachenames下的缓存 + * @param id + * @return + */ + @Override + @CacheEvict(cacheNames = {"aa"}, allEntries = true) + public String aaClear(Long id) { + return null; + } + + @Override + @Cacheable(cacheNames = {"bb"}, key = "'bb' + #id") + public String bbName(Long id) { + return null; + } + + @Override + @Cacheable(cacheNames = {"bb"}, key = "'bb2' + #id") + public String bbName2(Long id) { + return null; + } + + @Override + @CacheEvict(cacheNames = {"bb"}, allEntries = true) + public String bbClear(Long id) { + return null; + } +} diff --git a/framework/spring/spring-boot/spring-boot-cache/pom.xml b/framework/spring/spring-boot/spring-boot-cache/pom.xml new file mode 100644 index 000000000..c0f956074 --- /dev/null +++ b/framework/spring/spring-boot/spring-boot-cache/pom.xml @@ -0,0 +1,21 @@ + + + + spring-boot + org.laidu.learn + 1.0-SNAPSHOT + + 4.0.0 + + spring-boot-cache + + + + org.springframework.boot + spring-boot-starter-cache + + + + \ No newline at end of file diff --git a/framework/spring/spring-boot/spring-boot-cache/src/main/java/org/laidu/learn/spring/boot/cache/CacheApp.java b/framework/spring/spring-boot/spring-boot-cache/src/main/java/org/laidu/learn/spring/boot/cache/CacheApp.java new file mode 100644 index 000000000..757dc355c --- /dev/null +++ b/framework/spring/spring-boot/spring-boot-cache/src/main/java/org/laidu/learn/spring/boot/cache/CacheApp.java @@ -0,0 +1,23 @@ +package org.laidu.learn.spring.boot.cache; + + +import org.springframework.boot.Banner; +import org.springframework.boot.autoconfigure.SpringBootApplication; +import org.springframework.boot.builder.SpringApplicationBuilder; + +import lombok.extern.slf4j.Slf4j; + +@Slf4j +@SpringBootApplication +public class CacheApp { + + public static void main(String[] args) { + + new SpringApplicationBuilder() + .main(CacheApp.class) + .bannerMode(Banner.Mode.OFF) + .logStartupInfo(false) + .run(args); + + } +} diff --git a/framework/spring/spring-boot/spring-boot-cache/src/main/resources/application.yml b/framework/spring/spring-boot/spring-boot-cache/src/main/resources/application.yml new file mode 100644 index 000000000..e69de29bb From 91655b21f4ec27c4d60f171080ed919b5b5ced52 Mon Sep 17 00:00:00 2001 From: laidu Date: Sun, 14 Jun 2020 11:00:16 +0800 Subject: [PATCH 316/417] =?UTF-8?q?=E8=BF=81=E7=A7=BBadopt=20jdk?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../org/laidu/learn/algorithm/bloom/BloomFilterDemo.java | 9 ++++++--- language-advance/pom.xml | 2 +- language-feature/pom.xml | 2 +- 3 files changed, 8 insertions(+), 5 deletions(-) diff --git a/algorithm/src/main/java/org/laidu/learn/algorithm/bloom/BloomFilterDemo.java b/algorithm/src/main/java/org/laidu/learn/algorithm/bloom/BloomFilterDemo.java index f24fc37ca..22d7480e7 100644 --- a/algorithm/src/main/java/org/laidu/learn/algorithm/bloom/BloomFilterDemo.java +++ b/algorithm/src/main/java/org/laidu/learn/algorithm/bloom/BloomFilterDemo.java @@ -1,6 +1,5 @@ package org.laidu.learn.algorithm.bloom; -import java.io.IOException; import java.nio.charset.Charset; import org.laidu.commom.util.encryption.MD5Util; @@ -16,12 +15,16 @@ */ public class BloomFilterDemo { - private static final long size = 1000_000_000; + private static final long size = 1000; + + BloomFilter filter = + BloomFilter.create(Funnels.stringFunnel(Charset.forName("utf-8")), size + size / 5, 0.0000001d); public static void main(String[] args) { int[] p = {3, 5, 7, 4, 8, 9}; - BloomFilter filter = BloomFilter.create(Funnels.stringFunnel(Charset.forName("utf-8")), size + size / 5, 0.0000001d); + +// filter.put() for (int var : p) { int num = var * 1000_000_000; diff --git a/language-advance/pom.xml b/language-advance/pom.xml index 362621c0e..a4c293b47 100644 --- a/language-advance/pom.xml +++ b/language-advance/pom.xml @@ -103,7 +103,7 @@ 11 - oracle + diff --git a/language-feature/pom.xml b/language-feature/pom.xml index d4dee08fe..2caa9ba20 100644 --- a/language-feature/pom.xml +++ b/language-feature/pom.xml @@ -65,7 +65,7 @@ 11 - oracle + From 251bbc3bbbb87b1e335bcfbd90c3c109f62f83b0 Mon Sep 17 00:00:00 2001 From: laidu Date: Mon, 15 Jun 2020 23:56:57 +0800 Subject: [PATCH 317/417] thread pool size monitor --- .../learn/concurrent/pool/ThreadPoolDemo.java | 73 ++++++++----------- language-advance/pom.xml | 1 - language-feature/pom.xml | 1 - 3 files changed, 31 insertions(+), 44 deletions(-) diff --git a/language-advance/concurrent/src/main/java/org/laidu/learn/concurrent/pool/ThreadPoolDemo.java b/language-advance/concurrent/src/main/java/org/laidu/learn/concurrent/pool/ThreadPoolDemo.java index 3429ba4f2..3d2e94976 100644 --- a/language-advance/concurrent/src/main/java/org/laidu/learn/concurrent/pool/ThreadPoolDemo.java +++ b/language-advance/concurrent/src/main/java/org/laidu/learn/concurrent/pool/ThreadPoolDemo.java @@ -1,12 +1,16 @@ package org.laidu.learn.concurrent.pool; +import java.util.UUID; +import java.util.concurrent.ArrayBlockingQueue; +import java.util.concurrent.Callable; +import java.util.concurrent.ScheduledThreadPoolExecutor; +import java.util.concurrent.ThreadPoolExecutor; +import java.util.concurrent.TimeUnit; + import com.alibaba.fastjson.JSONObject; -import org.apache.commons.lang3.RandomUtils; -import java.util.Arrays; -import java.util.List; -import java.util.UUID; -import java.util.concurrent.*; +import jodd.util.ThreadUtil; +import lombok.extern.slf4j.Slf4j; /** * 线程池 @@ -16,14 +20,34 @@ * * @author laidu */ +@Slf4j public class ThreadPoolDemo { + public static ThreadPoolExecutor executorService = new ThreadPoolExecutor(5, 10, 1, TimeUnit.SECONDS, + new ArrayBlockingQueue<>(4), Thread::new, new ThreadPoolExecutor.CallerRunsPolicy()); + + static { + ScheduledThreadPoolExecutor scheduledThreadPoolExecutor = new ScheduledThreadPoolExecutor(1, Thread::new, + new ThreadPoolExecutor.AbortPolicy()); + scheduledThreadPoolExecutor.scheduleAtFixedRate(() -> { + log.info("poolSize: {}, queue: {}", executorService.getPoolSize(), executorService.getQueue().size()); + }, 0,1, TimeUnit.SECONDS); + } + + public static void main(String[] args) throws Exception { + + for (int i = 0; i < 30; i++) { + ThreadUtil.sleep(1000); + log.info("add task"); + executorService.submit(new Task()); + } + } + public static class Task implements Callable{ @Override public JSONObject call() throws Exception { - Thread.sleep(RandomUtils.nextInt(1,10)*100); JSONObject result = new JSONObject(); @@ -33,45 +57,10 @@ public JSONObject call() throws Exception { result.put("133",UUID.randomUUID().toString()); result.put("143",UUID.randomUUID().toString()); result.put("153",UUID.randomUUID().toString()); - + ThreadUtil.sleep(10000); return result; } } - public static void call(List tasks) throws Exception { - - ExecutorService executorService = Executors.newCachedThreadPool(); - - List> futures = executorService.invokeAll(tasks); - - futures.stream().forEach(result -> { - try { - System.out.println(result.get()); - } catch (InterruptedException e) { - } catch (ExecutionException e) { - } - }); - -// executorService.shutdown(); - - } - - public static void main(String[] args) throws Exception { - - for (int i = 0; i < 100; i++) { - - call(Arrays.asList(new Task(), - new Task(), - new Task(), - new Task(), - new Task(), - new Task(), - new Task(), - new Task(), - new Task(), - new Task() - )); - } - } } \ No newline at end of file diff --git a/language-advance/pom.xml b/language-advance/pom.xml index a4c293b47..aa4ccffc3 100644 --- a/language-advance/pom.xml +++ b/language-advance/pom.xml @@ -103,7 +103,6 @@ 11 - diff --git a/language-feature/pom.xml b/language-feature/pom.xml index 2caa9ba20..1bf53d256 100644 --- a/language-feature/pom.xml +++ b/language-feature/pom.xml @@ -65,7 +65,6 @@ 11 - From b6e1e4307121be6ec97ebd3701897c294b42c7a4 Mon Sep 17 00:00:00 2001 From: laidu Date: Mon, 15 Jun 2020 23:58:59 +0800 Subject: [PATCH 318/417] upgrade shiro version 1.4.2 --- framework/spring/pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/framework/spring/pom.xml b/framework/spring/pom.xml index 2329cc452..709ce27db 100644 --- a/framework/spring/pom.xml +++ b/framework/spring/pom.xml @@ -38,7 +38,7 @@ 2.2.2.RELEASE Greenwich.SR2 - 1.4.0 + 1.4.2 2.0.1.RELEASE From 75b4cbca8f0c8cdb2f1b79bf5a0f24a38a7b541a Mon Sep 17 00:00:00 2001 From: laidu Date: Sat, 27 Jun 2020 23:32:39 +0800 Subject: [PATCH 319/417] leetcode 41 --- .../leetcode/FirstMissingPositive.java | 93 +++++++++++++++++++ .../leetcode/FirstMissingPositiveTest.java | 31 +++++++ 2 files changed, 124 insertions(+) create mode 100644 algorithm/src/main/java/org/laidu/learn/algorithm/leetcode/FirstMissingPositive.java create mode 100644 algorithm/src/test/java/org/laidu/learn/algorithm/leetcode/FirstMissingPositiveTest.java diff --git a/algorithm/src/main/java/org/laidu/learn/algorithm/leetcode/FirstMissingPositive.java b/algorithm/src/main/java/org/laidu/learn/algorithm/leetcode/FirstMissingPositive.java new file mode 100644 index 000000000..d32e96b47 --- /dev/null +++ b/algorithm/src/main/java/org/laidu/learn/algorithm/leetcode/FirstMissingPositive.java @@ -0,0 +1,93 @@ +package org.laidu.learn.algorithm.leetcode; + +/** + * 41. 缺失的第一个正数 + * 给你一个未排序的整数数组,请你找出其中没有出现的最小的正整数。 + *

                    + * 示例 1: + * 输入: [1,2,0] + * 输出: 3 + *

                    + * 示例 2: + * 输入: [3,4,-1,1] + * 输出: 2 + *

                    + * 示例 3: + * 输入: [7,8,9,11,12] + * 输出: 1 + */ +public class FirstMissingPositive { + + /** + * + * @param nums + * @return + */ + public int firstMissingPositive(int[] nums) { + int n = nums.length; + + if (n == 0) { + return 1; + } + if (n == 1) { + return nums[0] == 1 ? 2 : 1; + } + + for (int i = 0; i < n; i++) { + while (nums[i] > 0 && nums[i] < n && nums[i] != nums[nums[i]]) { + swap(nums, i, nums[i]); + } + } + + for (int i = 1; i < n; i++) { + if (nums[i] != i) { + return i; + } + + } + return nums[0] == n ? n + 1 : n; + } + + /** + * 查找不包含的最小整数 + * + * @param nums + * @return + */ + public int firstMissingPositive2(int[] nums) { + + if (nums.length == 0) { + return 1; + } + if (nums.length == 1) { + return nums[0] == 1 ? 2 : 1; + } + + // 1、查找最小整数 + int min = 1; + + // 2、查找比第一个元素大,却不在当前数组中的元素 + while (contain(nums, min) || min < 1) { + ++min; + } + + return min; + } + + private void swap(int[] nums, int i, int j) { + int temp = nums[i]; + nums[i] = nums[j]; + nums[j] = temp; + } + + private boolean contain(int[] nums, int min) { + + for (int i = 0; i < nums.length; i++) { + if (min == nums[i]) { + return true; + } + } + + return false; + } +} diff --git a/algorithm/src/test/java/org/laidu/learn/algorithm/leetcode/FirstMissingPositiveTest.java b/algorithm/src/test/java/org/laidu/learn/algorithm/leetcode/FirstMissingPositiveTest.java new file mode 100644 index 000000000..2e1118cde --- /dev/null +++ b/algorithm/src/test/java/org/laidu/learn/algorithm/leetcode/FirstMissingPositiveTest.java @@ -0,0 +1,31 @@ +package org.laidu.learn.algorithm.leetcode; + +import org.junit.Assert; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; + +class FirstMissingPositiveTest { + + private FirstMissingPositive firstMissingPositive; + + @BeforeEach + public void setUp() { + firstMissingPositive = new FirstMissingPositive(); + } + + @Test + void test1() { + Assert.assertEquals(3, firstMissingPositive.firstMissingPositive(new int[]{1,2,0})); + Assert.assertEquals(2, firstMissingPositive.firstMissingPositive(new int[]{3,4,-1,1})); + Assert.assertEquals(1, firstMissingPositive.firstMissingPositive(new int[]{7,8,9,11,12})); + + } + + @Test + void firstMissingPositive2() { + Assert.assertEquals(3, firstMissingPositive.firstMissingPositive2(new int[]{1,2,0})); + Assert.assertEquals(2, firstMissingPositive.firstMissingPositive2(new int[]{3,4,-1,1})); + Assert.assertEquals(1, firstMissingPositive.firstMissingPositive2(new int[]{7,8,9,11,12})); + + } +} \ No newline at end of file From b3daa39a654c17e88db74b8971648b4933eb6eec Mon Sep 17 00:00:00 2001 From: laidu Date: Sat, 27 Jun 2020 23:33:57 +0800 Subject: [PATCH 320/417] upgrade shiro 1.4.2 --- framework/common/pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/framework/common/pom.xml b/framework/common/pom.xml index dba6165f1..5acfc1efe 100644 --- a/framework/common/pom.xml +++ b/framework/common/pom.xml @@ -27,7 +27,7 @@ 3.6 1.1 3.17 - 1.3.2 + 1.4.2 2.1.17 5.0.4 From 6664e1b9ba170fcedeb36c8acf6fe2fea87b649d Mon Sep 17 00:00:00 2001 From: laidu Date: Wed, 15 Jul 2020 00:15:48 +0800 Subject: [PATCH 321/417] add commons-pool learn --- framework/common/commons-pool/pom.xml | 20 ++++++++ .../org/laidu/learn/commons/pool/PoolApp.java | 47 +++++++++++++++++++ .../commons/pool/openproxy/ProxyInfo.java | 26 ++++++++++ .../pool/openproxy/ProxyPooledFactory.java | 45 ++++++++++++++++++ .../commons/pool/openproxy/package-info.java | 7 +++ .../commons-pool/src/site/markdown/index.md | 1 + framework/common/pom.xml | 7 +++ 7 files changed, 153 insertions(+) create mode 100644 framework/common/commons-pool/pom.xml create mode 100644 framework/common/commons-pool/src/main/java/org/laidu/learn/commons/pool/PoolApp.java create mode 100644 framework/common/commons-pool/src/main/java/org/laidu/learn/commons/pool/openproxy/ProxyInfo.java create mode 100644 framework/common/commons-pool/src/main/java/org/laidu/learn/commons/pool/openproxy/ProxyPooledFactory.java create mode 100644 framework/common/commons-pool/src/main/java/org/laidu/learn/commons/pool/openproxy/package-info.java create mode 100644 framework/common/commons-pool/src/site/markdown/index.md diff --git a/framework/common/commons-pool/pom.xml b/framework/common/commons-pool/pom.xml new file mode 100644 index 000000000..375165098 --- /dev/null +++ b/framework/common/commons-pool/pom.xml @@ -0,0 +1,20 @@ + + + + common + org.laidu.learn + 1.0-SNAPSHOT + + 4.0.0 + + commons-pool + + + + org.apache.commons + commons-pool2 + + + \ No newline at end of file diff --git a/framework/common/commons-pool/src/main/java/org/laidu/learn/commons/pool/PoolApp.java b/framework/common/commons-pool/src/main/java/org/laidu/learn/commons/pool/PoolApp.java new file mode 100644 index 000000000..092ac223d --- /dev/null +++ b/framework/common/commons-pool/src/main/java/org/laidu/learn/commons/pool/PoolApp.java @@ -0,0 +1,47 @@ +package org.laidu.learn.commons.pool; + +import org.apache.commons.pool2.ObjectPool; +import org.apache.commons.pool2.impl.GenericObjectPool; +import org.apache.commons.pool2.impl.GenericObjectPoolConfig; +import org.laidu.learn.commons.pool.openproxy.ProxyInfo; +import org.laidu.learn.commons.pool.openproxy.ProxyPooledFactory; + +import lombok.extern.slf4j.Slf4j; + +/** + * pool demo + *

                    + * Created by tiancai.zang + * on 2020-07-14 23:25. + */ +@Slf4j +public class PoolApp { + + public static void main(String[] args) throws Exception { + ProxyPooledFactory factory = new ProxyPooledFactory(); + GenericObjectPoolConfig poolConfig = new GenericObjectPoolConfig<>(); + poolConfig.setMaxIdle(200); + poolConfig.setMaxTotal(1000); + poolConfig.setMinIdle(150); + poolConfig.setMaxWaitMillis(50); + poolConfig.setTestOnBorrow(true); + + poolConfig.setTestWhileIdle(true); + poolConfig.setTestOnCreate(false); + poolConfig.setMaxWaitMillis(100); + poolConfig.setTimeBetweenEvictionRunsMillis(10); + + ObjectPool pool = new GenericObjectPool<>(factory); + + while (true) { + ProxyInfo proxyInfo1 = pool.borrowObject(); + ProxyInfo proxyInfo = pool.borrowObject(); +// Thread.sleep(100); + pool.returnObject(proxyInfo); + System.out.println(pool.getNumActive()); + System.out.println(pool.getNumIdle()); + } + + + } +} \ No newline at end of file diff --git a/framework/common/commons-pool/src/main/java/org/laidu/learn/commons/pool/openproxy/ProxyInfo.java b/framework/common/commons-pool/src/main/java/org/laidu/learn/commons/pool/openproxy/ProxyInfo.java new file mode 100644 index 000000000..3d655311c --- /dev/null +++ b/framework/common/commons-pool/src/main/java/org/laidu/learn/commons/pool/openproxy/ProxyInfo.java @@ -0,0 +1,26 @@ +package org.laidu.learn.commons.pool.openproxy; + +import java.time.LocalDateTime; + +import lombok.Builder; +import lombok.Data; +import lombok.extern.slf4j.Slf4j; + +/** + * 代理信息 + *

                    + * Created by tiancai.zang + * on 2020-07-14 23:30. + */ +@Slf4j +@Data +@Builder +public class ProxyInfo { + + private String ip; + private Integer port; + private String schema; + private LocalDateTime addTime; + private LocalDateTime verifyTime; + +} \ No newline at end of file diff --git a/framework/common/commons-pool/src/main/java/org/laidu/learn/commons/pool/openproxy/ProxyPooledFactory.java b/framework/common/commons-pool/src/main/java/org/laidu/learn/commons/pool/openproxy/ProxyPooledFactory.java new file mode 100644 index 000000000..67bcc64c2 --- /dev/null +++ b/framework/common/commons-pool/src/main/java/org/laidu/learn/commons/pool/openproxy/ProxyPooledFactory.java @@ -0,0 +1,45 @@ +package org.laidu.learn.commons.pool.openproxy; + +import org.apache.commons.pool2.BasePooledObjectFactory; +import org.apache.commons.pool2.PooledObject; +import org.apache.commons.pool2.impl.DefaultPooledObject; + +import lombok.extern.slf4j.Slf4j; + +/** + * Created by tiancai.zang + * on 2020-07-14 23:36. + */ +@Slf4j +public class ProxyPooledFactory extends BasePooledObjectFactory { + + @Override + public void destroyObject(PooledObject p) throws Exception { + log.info("destroyObject"); + super.destroyObject(p); + } + + @Override + public boolean validateObject(PooledObject p) { + log.info("validateObject"); + return super.validateObject(p); + } + + @Override + public void passivateObject(PooledObject p) throws Exception { + log.info("passivateObject"); + super.passivateObject(p); + } + + @Override + public ProxyInfo create() throws Exception { + log.info("create"); + return ProxyInfo.builder().build(); + } + + @Override + public PooledObject wrap(ProxyInfo proxyInfo) { + log.info("wrap"); + return new DefaultPooledObject<>(proxyInfo); + } +} \ No newline at end of file diff --git a/framework/common/commons-pool/src/main/java/org/laidu/learn/commons/pool/openproxy/package-info.java b/framework/common/commons-pool/src/main/java/org/laidu/learn/commons/pool/openproxy/package-info.java new file mode 100644 index 000000000..0dcf11833 --- /dev/null +++ b/framework/common/commons-pool/src/main/java/org/laidu/learn/commons/pool/openproxy/package-info.java @@ -0,0 +1,7 @@ +/** + * 免费代理池 + *

                    + * Created by tiancai.zang + * on 2020-07-14 23:30. + */ +package org.laidu.learn.commons.pool.openproxy; \ No newline at end of file diff --git a/framework/common/commons-pool/src/site/markdown/index.md b/framework/common/commons-pool/src/site/markdown/index.md new file mode 100644 index 000000000..4eabe8e46 --- /dev/null +++ b/framework/common/commons-pool/src/site/markdown/index.md @@ -0,0 +1 @@ +# commons-pool 学习 \ No newline at end of file diff --git a/framework/common/pom.xml b/framework/common/pom.xml index 5acfc1efe..68513611a 100644 --- a/framework/common/pom.xml +++ b/framework/common/pom.xml @@ -21,11 +21,13 @@ shiro rxjava jodd + commons-pool 3.6 1.1 + 2.8.0 3.17 1.4.2 2.1.17 @@ -48,6 +50,11 @@ commons-lang3 ${apache-commons-lang3.version} + + org.apache.commons + commons-pool2 + ${apache-commons-pool.version} + org.apache.commons commons-text From 9668230fa6d7c1a8659ebac511daf58c4cdb6a1d Mon Sep 17 00:00:00 2001 From: laidu Date: Thu, 16 Jul 2020 00:01:36 +0800 Subject: [PATCH 322/417] add commons-pool learn --- .../java/org/laidu/learn/commons/pool/PoolApp.java | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) diff --git a/framework/common/commons-pool/src/main/java/org/laidu/learn/commons/pool/PoolApp.java b/framework/common/commons-pool/src/main/java/org/laidu/learn/commons/pool/PoolApp.java index 092ac223d..494a77298 100644 --- a/framework/common/commons-pool/src/main/java/org/laidu/learn/commons/pool/PoolApp.java +++ b/framework/common/commons-pool/src/main/java/org/laidu/learn/commons/pool/PoolApp.java @@ -20,8 +20,8 @@ public class PoolApp { public static void main(String[] args) throws Exception { ProxyPooledFactory factory = new ProxyPooledFactory(); GenericObjectPoolConfig poolConfig = new GenericObjectPoolConfig<>(); - poolConfig.setMaxIdle(200); - poolConfig.setMaxTotal(1000); + poolConfig.setMaxIdle(500); + poolConfig.setMaxTotal(20); poolConfig.setMinIdle(150); poolConfig.setMaxWaitMillis(50); poolConfig.setTestOnBorrow(true); @@ -29,14 +29,13 @@ public static void main(String[] args) throws Exception { poolConfig.setTestWhileIdle(true); poolConfig.setTestOnCreate(false); poolConfig.setMaxWaitMillis(100); - poolConfig.setTimeBetweenEvictionRunsMillis(10); + poolConfig.setTimeBetweenEvictionRunsMillis(1000); - ObjectPool pool = new GenericObjectPool<>(factory); + ObjectPool pool = new GenericObjectPool<>(factory, poolConfig); while (true) { - ProxyInfo proxyInfo1 = pool.borrowObject(); ProxyInfo proxyInfo = pool.borrowObject(); -// Thread.sleep(100); + Thread.sleep(1000000); pool.returnObject(proxyInfo); System.out.println(pool.getNumActive()); System.out.println(pool.getNumIdle()); From 02e46c1be2f13a7d088c2b75e432713fee69dc2a Mon Sep 17 00:00:00 2001 From: laidu Date: Thu, 16 Jul 2020 00:09:45 +0800 Subject: [PATCH 323/417] add commons-pool learn --- .../src/main/resources/template/PageProcessorTemplate.java | 4 ++-- production-component/pom.xml | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/production-component/crawler-helper/src/main/resources/template/PageProcessorTemplate.java b/production-component/crawler-helper/src/main/resources/template/PageProcessorTemplate.java index b6f4f2159..c02e64725 100644 --- a/production-component/crawler-helper/src/main/resources/template/PageProcessorTemplate.java +++ b/production-component/crawler-helper/src/main/resources/template/PageProcessorTemplate.java @@ -54,9 +54,9 @@ protected Site getSite(Request request) { public static void main(String[] args) throws InterruptedException { for (; ; ) { - new __CLASS_NAME__PageProcessor().getSpider().processWithResponse(new StringQueryRequest("17346519143")); + new __CLASS_NAME__PageProcessor().getSpider().processWithResponse(new StringQueryRequest("")); Thread.sleep(500); - new __CLASS_NAME__PageProcessor().getSpider().processWithResponse(new StringQueryRequest("17091003126")); + new __CLASS_NAME__PageProcessor().getSpider().processWithResponse(new StringQueryRequest("")); } } } \ No newline at end of file diff --git a/production-component/pom.xml b/production-component/pom.xml index 1bb04d54d..03304a929 100644 --- a/production-component/pom.xml +++ b/production-component/pom.xml @@ -15,8 +15,8 @@ common-util - crawler-helper - crawler + + From 2f977ce291cc5ea1bd0a813719b340c220bf4310 Mon Sep 17 00:00:00 2001 From: laidu Date: Mon, 17 Aug 2020 23:18:39 +0800 Subject: [PATCH 324/417] Object: wait\notify demo --- .../language/feature/object/JavaLock.java | 62 +++++++++++++++++++ .../language/feature/object/ObjectDemo.java | 18 ++++-- 2 files changed, 74 insertions(+), 6 deletions(-) create mode 100644 language-feature/src/main/java/org/laidu/learn/language/feature/object/JavaLock.java diff --git a/language-feature/src/main/java/org/laidu/learn/language/feature/object/JavaLock.java b/language-feature/src/main/java/org/laidu/learn/language/feature/object/JavaLock.java new file mode 100644 index 000000000..ab9706764 --- /dev/null +++ b/language-feature/src/main/java/org/laidu/learn/language/feature/object/JavaLock.java @@ -0,0 +1,62 @@ +package org.laidu.learn.language.feature.object; + +import java.util.concurrent.ArrayBlockingQueue; +import java.util.concurrent.ExecutorService; +import java.util.concurrent.ThreadPoolExecutor; +import java.util.concurrent.TimeUnit; + +import lombok.extern.slf4j.Slf4j; + +/** + * java lock demo + *

                    + * Created by tiancai.zang + * on 2020-08-17 22:50. + */ +@Slf4j +public class JavaLock { + + + public static void main(String[] args) throws InterruptedException { + + + JavaLock javaLock = new JavaLock(); + ExecutorService executorService = new ThreadPoolExecutor(5, 10, 1000, TimeUnit.MILLISECONDS, + new ArrayBlockingQueue<>(5)); + + executorService.submit(javaLock::work); + + + executorService.submit(() -> { + log.info("notifyAll"); + try { + Thread.sleep(2000); + } catch (InterruptedException e) { + e.printStackTrace(); + } + log.info("notifyAll"); + + synchronized (javaLock) { + javaLock.notifyAll(); + } + }); + + log.info("over"); + executorService.shutdown(); + + } + + public synchronized void work() { + + log.info("start do work"); + try { + // java 中只能通过sync实现monitor锁 + this.wait(); + } catch (InterruptedException e) { + log.error("wait error"); + } + + log.info("end do work"); + + } +} \ No newline at end of file diff --git a/language-feature/src/main/java/org/laidu/learn/language/feature/object/ObjectDemo.java b/language-feature/src/main/java/org/laidu/learn/language/feature/object/ObjectDemo.java index 7d6c74a2a..ea57c10d9 100644 --- a/language-feature/src/main/java/org/laidu/learn/language/feature/object/ObjectDemo.java +++ b/language-feature/src/main/java/org/laidu/learn/language/feature/object/ObjectDemo.java @@ -1,6 +1,12 @@ package org.laidu.learn.language.feature.object; -import java.io.*; +import java.io.File; +import java.io.FileInputStream; +import java.io.FileOutputStream; +import java.io.IOException; +import java.io.ObjectInputStream; +import java.io.ObjectOutputStream; +import java.io.Serializable; import java.lang.reflect.Constructor; import java.lang.reflect.InvocationTargetException; @@ -12,7 +18,8 @@ */ public class ObjectDemo { - public static void main(String[] args) throws InterruptedException, CloneNotSupportedException, IllegalAccessException, InstantiationException, InvocationTargetException, IOException { + public static void main(String[] args) throws InterruptedException, CloneNotSupportedException, + IllegalAccessException, InstantiationException, InvocationTargetException, IOException { // 通过new关键字创建新对象 RawObject o1 = new RawObject(); @@ -29,12 +36,12 @@ public static void main(String[] args) throws InterruptedException, CloneNotSupp } // 通过序列化创建新对象 - String fileName = System.getProperty("user.dir")+"/language-feature/src/main/resources/rawObject.bin"; + String fileName = System.getProperty("user.dir") + "/language-feature/src/main/resources/rawObject.bin"; try (ObjectOutputStream out = new ObjectOutputStream(new FileOutputStream(new File(fileName)))) { out.writeObject(o2); } RawObject o4 = null; - try(ObjectInputStream in = new ObjectInputStream(new FileInputStream(new File(fileName)))) { + try (ObjectInputStream in = new ObjectInputStream(new FileInputStream(new File(fileName)))) { o4 = (RawObject) in.readObject(); } catch (ClassNotFoundException e) { e.printStackTrace(); @@ -51,9 +58,8 @@ public static void main(String[] args) throws InterruptedException, CloneNotSupp /** * 当class未指定任何父类时,默认继承于Object - * */ - public static class RawObject implements Cloneable,Serializable{ + public static class RawObject implements Cloneable, Serializable { private static final long serialVersionUID = 1L; @Override From 305c637c649db98e1aaa1d359c26ae39181dad45 Mon Sep 17 00:00:00 2001 From: laidu Date: Tue, 1 Sep 2020 20:44:12 +0800 Subject: [PATCH 325/417] sync --- framework/spring/spring-data/pom.xml | 2 +- .../src/main/java/org/laidu/learn/mybatis/MybatisApp.java | 7 +++++++ .../laidu/learn/mybatis/controller/UserInfoController.java | 2 ++ .../spring-mybatis/src/main/resources/application.yml | 4 ++-- .../laidu/learn/language/feature/string/StringDemo.java | 3 +++ 5 files changed, 15 insertions(+), 3 deletions(-) diff --git a/framework/spring/spring-data/pom.xml b/framework/spring/spring-data/pom.xml index 1236df128..eaa07fff0 100644 --- a/framework/spring/spring-data/pom.xml +++ b/framework/spring/spring-data/pom.xml @@ -20,7 +20,7 @@ 1.1.9 1.3.2 - 1.2.5 + 1.2.8 5.1.46 3.10.4 diff --git a/framework/spring/spring-data/spring-mybatis/src/main/java/org/laidu/learn/mybatis/MybatisApp.java b/framework/spring/spring-data/spring-mybatis/src/main/java/org/laidu/learn/mybatis/MybatisApp.java index ee5dd3565..f71276adc 100644 --- a/framework/spring/spring-data/spring-mybatis/src/main/java/org/laidu/learn/mybatis/MybatisApp.java +++ b/framework/spring/spring-data/spring-mybatis/src/main/java/org/laidu/learn/mybatis/MybatisApp.java @@ -4,8 +4,12 @@ import org.mybatis.spring.annotation.MapperScan; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; +import org.springframework.boot.context.properties.EnableConfigurationProperties; +import org.springframework.cache.annotation.EnableCaching; import org.springframework.context.annotation.EnableAspectJAutoProxy; import org.springframework.context.annotation.Import; +import org.springframework.scheduling.annotation.EnableScheduling; + import springfox.documentation.swagger2.annotations.EnableSwagger2; /** @@ -17,6 +21,9 @@ */ @MapperScan("org.laidu.learn.mybatis.mapper") @SpringBootApplication +@EnableConfigurationProperties +@EnableScheduling +@EnableCaching @EnableSwagger2 @Import(SwaggerConfig.class) @EnableAspectJAutoProxy(proxyTargetClass = true) diff --git a/framework/spring/spring-data/spring-mybatis/src/main/java/org/laidu/learn/mybatis/controller/UserInfoController.java b/framework/spring/spring-data/spring-mybatis/src/main/java/org/laidu/learn/mybatis/controller/UserInfoController.java index 88ca2b464..ac2a41931 100644 --- a/framework/spring/spring-data/spring-mybatis/src/main/java/org/laidu/learn/mybatis/controller/UserInfoController.java +++ b/framework/spring/spring-data/spring-mybatis/src/main/java/org/laidu/learn/mybatis/controller/UserInfoController.java @@ -6,6 +6,7 @@ import org.laidu.learn.mybatis.entity.AppUser; import org.laidu.learn.mybatis.mapper.AppUserMapper; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.autoconfigure.EnableAutoConfiguration; import org.springframework.transaction.annotation.Transactional; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.PathVariable; @@ -26,6 +27,7 @@ @Slf4j @RestController @RequestMapping("/") +@EnableAutoConfiguration public class UserInfoController { private final AppUserMapper userMapper; diff --git a/framework/spring/spring-data/spring-mybatis/src/main/resources/application.yml b/framework/spring/spring-data/spring-mybatis/src/main/resources/application.yml index 2c61f648c..6d8af92d9 100644 --- a/framework/spring/spring-data/spring-mybatis/src/main/resources/application.yml +++ b/framework/spring/spring-data/spring-mybatis/src/main/resources/application.yml @@ -18,9 +18,9 @@ spring: datasource: data: classpath:db/data.sql schema: classpath:db/schema.sql - url: jdbc:p6spy:mysql://127.0.0.1:3306/demo?useUnicode=true&characterEncoding=utf8&useSSL=false + url: jdbc:p6spy:mysql://10.145.65.22:8306/demo?useUnicode=true&characterEncoding=utf8&useSSL=false username: root - password: root + password: 123456 driver-class-name: com.p6spy.engine.spy.P6SpyDriver hikari: minimum-idle: 5 diff --git a/language-feature/src/main/java/org/laidu/learn/language/feature/string/StringDemo.java b/language-feature/src/main/java/org/laidu/learn/language/feature/string/StringDemo.java index 187bea050..89eec99bc 100644 --- a/language-feature/src/main/java/org/laidu/learn/language/feature/string/StringDemo.java +++ b/language-feature/src/main/java/org/laidu/learn/language/feature/string/StringDemo.java @@ -21,6 +21,9 @@ public static void main(String[] args) { // aa.hashCode() == bb.hashCode() : true log.debug("aa.hashCode() == bb.hashCode() : {}", aa.hashCode() == bb.hashCode()); + + System.out.println("AA".getBytes().length); + System.out.println("中A".getBytes().length); } public static void createString() { From cf5f24ed7df1cfab165c9e9c0a1d8a5e0174ece2 Mon Sep 17 00:00:00 2001 From: laidu Date: Tue, 1 Sep 2020 20:45:17 +0800 Subject: [PATCH 326/417] sync --- .../spring-mybatis/src/main/resources/application.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/framework/spring/spring-data/spring-mybatis/src/main/resources/application.yml b/framework/spring/spring-data/spring-mybatis/src/main/resources/application.yml index 6d8af92d9..d849ea3a1 100644 --- a/framework/spring/spring-data/spring-mybatis/src/main/resources/application.yml +++ b/framework/spring/spring-data/spring-mybatis/src/main/resources/application.yml @@ -18,7 +18,7 @@ spring: datasource: data: classpath:db/data.sql schema: classpath:db/schema.sql - url: jdbc:p6spy:mysql://10.145.65.22:8306/demo?useUnicode=true&characterEncoding=utf8&useSSL=false + url: jdbc:p6spy:mysql://127.0.0.1:8306/demo?useUnicode=true&characterEncoding=utf8&useSSL=false username: root password: 123456 driver-class-name: com.p6spy.engine.spy.P6SpyDriver From a73a34768351bac514d4c8f73ef3610beaeab78d Mon Sep 17 00:00:00 2001 From: laidu Date: Sat, 26 Sep 2020 11:57:59 +0800 Subject: [PATCH 327/417] upgrade sb 2.3.4 --- framework/spring/pom.xml | 16 ++- framework/spring/swagger/pom.xml | 135 +++++++++--------- .../learn/swagger/demo/dto/ProductReqDTO.java | 23 +-- .../learn/swagger/demo/dto/ProductResDTO.java | 14 +- 4 files changed, 98 insertions(+), 90 deletions(-) diff --git a/framework/spring/pom.xml b/framework/spring/pom.xml index 709ce27db..0b82e8138 100644 --- a/framework/spring/pom.xml +++ b/framework/spring/pom.xml @@ -1,6 +1,6 @@ - framework @@ -34,11 +34,12 @@ 5.5.0 - 5.1.6.RELEASE - 2.2.2.RELEASE + 5.2.9.RELEASE + 2.3.4.RELEASE Greenwich.SR2 1.4.2 + 2.0.1.Final 2.0.1.RELEASE @@ -55,7 +56,6 @@ ${spring.version} - org.springframework.boot spring-boot-dependencies @@ -64,6 +64,12 @@ import + + javax.validation + validation-api + ${validation.version} + + com.rabbitmq amqp-client diff --git a/framework/spring/swagger/pom.xml b/framework/spring/swagger/pom.xml index ae6f2f144..22d28671d 100644 --- a/framework/spring/swagger/pom.xml +++ b/framework/spring/swagger/pom.xml @@ -1,82 +1,85 @@ - - 4.0.0 + + 4.0.0 - org.laidu.learn.swagger - swagger - 0.0.1-SNAPSHOT - jar + org.laidu.learn.swagger + swagger + 0.0.1-SNAPSHOT + jar - swagger - swagger project for Spring Boot + swagger + swagger project for Spring Boot - - spring - org.laidu.learn - 1.0-SNAPSHOT - + + spring + org.laidu.learn + 1.0-SNAPSHOT + - - springio - 2.9.2 - + + springio + 2.9.2 + - - - jitpack.io - https://jitpack.io - - + + + jitpack.io + https://jitpack.io + + - + - - org.laidu.learn - common-util - 1.0-SNAPSHOT - + + org.laidu.learn + common-util + 1.0-SNAPSHOT + - - io.springfox - springfox-swagger2 - ${springfox-swagger2.version} - - - io.springfox - springfox-swagger-ui - ${springfox-swagger2.version} - + + io.springfox + springfox-swagger2 + ${springfox-swagger2.version} + + + io.springfox + springfox-swagger-ui + ${springfox-swagger2.version} + - - io.springfox - springfox-bean-validators - ${springfox-swagger2.version} - + + io.springfox + springfox-bean-validators + ${springfox-swagger2.version} + + + javax.validation + validation-api + + + org.springframework.boot + spring-boot-starter-web-services + - - org.springframework.boot - spring-boot-starter-web-services - - - - org.springframework.boot - spring-boot-devtools - runtime - - - org.projectlombok - lombok - true - - - org.springframework.boot - spring-boot-starter-test - test - - + + org.springframework.boot + spring-boot-devtools + runtime + + + org.projectlombok + lombok + true + + + org.springframework.boot + spring-boot-starter-test + test + + diff --git a/framework/spring/swagger/src/main/java/org/laidu/learn/swagger/demo/dto/ProductReqDTO.java b/framework/spring/swagger/src/main/java/org/laidu/learn/swagger/demo/dto/ProductReqDTO.java index 31a97b4ce..77b99aaef 100644 --- a/framework/spring/swagger/src/main/java/org/laidu/learn/swagger/demo/dto/ProductReqDTO.java +++ b/framework/spring/swagger/src/main/java/org/laidu/learn/swagger/demo/dto/ProductReqDTO.java @@ -1,16 +1,17 @@ package org.laidu.learn.swagger.demo.dto; +import java.util.Date; + +import org.laidu.learn.swagger.demo.enums.ProductTypeIntEnum; + import com.fasterxml.jackson.annotation.JsonFormat; + import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.AllArgsConstructor; import lombok.Builder; import lombok.Data; import lombok.NoArgsConstructor; -import org.laidu.learn.swagger.demo.enums.ProductTypeIntEnum; - -import javax.validation.constraints.NotNull; -import java.util.Date; /** * product @@ -29,23 +30,23 @@ public class ProductReqDTO { /** * id */ - @ApiModelProperty(required = true,name = "产品ID") - private String id; + @ApiModelProperty(required = true, name = "产品ID") + private String id; - @NotNull - @ApiModelProperty(name = "产品类型",dataType = "ProductTypeIntEnum") + // @NotNull + @ApiModelProperty(name = "产品类型", dataType = "ProductTypeIntEnum") private ProductTypeIntEnum type; /** * product name */ - @ApiModelProperty(required = true,name = "产品ID") + @ApiModelProperty(required = true, name = "产品ID") private String name; /** * product date */ - @ApiModelProperty(required = true,example = "2016-01-01") - @JsonFormat(pattern = "yyyy-MM-dd hh:mm:ss",timezone = "GMT+8") + @ApiModelProperty(required = true, example = "2016-01-01") + @JsonFormat(pattern = "yyyy-MM-dd hh:mm:ss", timezone = "GMT+8") private Date productDate; } \ No newline at end of file diff --git a/framework/spring/swagger/src/main/java/org/laidu/learn/swagger/demo/dto/ProductResDTO.java b/framework/spring/swagger/src/main/java/org/laidu/learn/swagger/demo/dto/ProductResDTO.java index bcb9f1960..513ec7295 100644 --- a/framework/spring/swagger/src/main/java/org/laidu/learn/swagger/demo/dto/ProductResDTO.java +++ b/framework/spring/swagger/src/main/java/org/laidu/learn/swagger/demo/dto/ProductResDTO.java @@ -1,6 +1,9 @@ package org.laidu.learn.swagger.demo.dto; +import java.util.Date; + import com.fasterxml.jackson.annotation.JsonFormat; + import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.AllArgsConstructor; @@ -8,9 +11,6 @@ import lombok.Data; import lombok.NoArgsConstructor; -import javax.validation.constraints.NotNull; -import java.util.Date; - /** * product *

                    @@ -28,19 +28,17 @@ public class ProductResDTO { /** * id */ -// @ApiModelProperty(required = true,name = "产品ID") - private String id; + private String id; /** * product name */ - @NotNull(message = "产品名不能为空!") private String name; /** * product date */ - @ApiModelProperty(required = true,example = "2016-01-01 18:10:12") - @JsonFormat(pattern = "yyyy-MM-dd hh:mm:ss",timezone = "GMT+8") + @ApiModelProperty(required = true, example = "2016-01-01 18:10:12") + @JsonFormat(pattern = "yyyy-MM-dd hh:mm:ss", timezone = "GMT+8") private Date productDate; } \ No newline at end of file From 676977268b9181a61c3c7e669f95f264b8cb4680 Mon Sep 17 00:00:00 2001 From: snyk-bot Date: Tue, 22 Dec 2020 06:10:42 +0000 Subject: [PATCH 328/417] fix: framework/aws/pom.xml to reduce vulnerabilities The following vulnerabilities are fixed with an upgrade: - https://snyk.io/vuln/SNYK-JAVA-COMFASTERXMLJACKSONCORE-1048302 --- framework/aws/pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/framework/aws/pom.xml b/framework/aws/pom.xml index 364f12fed..1b9314201 100644 --- a/framework/aws/pom.xml +++ b/framework/aws/pom.xml @@ -17,7 +17,7 @@ - 1.11.699 + 1.11.924 From 3457d49a6f1e7e6b1b02fb79ab56da7c40df0b4f Mon Sep 17 00:00:00 2001 From: snyk-bot Date: Mon, 28 Dec 2020 00:54:15 +0000 Subject: [PATCH 329/417] fix: framework/thirdparty/wechat/pom.xml to reduce vulnerabilities The following vulnerabilities are fixed with an upgrade: - https://snyk.io/vuln/SNYK-JAVA-COMTHOUGHTWORKSXSTREAM-1051966 - https://snyk.io/vuln/SNYK-JAVA-COMTHOUGHTWORKSXSTREAM-1051967 --- framework/thirdparty/wechat/pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/framework/thirdparty/wechat/pom.xml b/framework/thirdparty/wechat/pom.xml index cbd956b35..01e37602b 100644 --- a/framework/thirdparty/wechat/pom.xml +++ b/framework/thirdparty/wechat/pom.xml @@ -19,7 +19,7 @@ - 3.1.0 + 4.0.2.B 1.0.6 From 00916fceba987ee0a01fe3d8f300d189083a2975 Mon Sep 17 00:00:00 2001 From: snyk-bot Date: Mon, 28 Dec 2020 02:56:42 +0000 Subject: [PATCH 330/417] fix: framework/network/pom.xml to reduce vulnerabilities The following vulnerabilities are fixed with an upgrade: - https://snyk.io/vuln/SNYK-JAVA-IONETTY-1020439 - https://snyk.io/vuln/SNYK-JAVA-IONETTY-564897 --- framework/network/pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/framework/network/pom.xml b/framework/network/pom.xml index 1db9bcc51..f55c05b5e 100644 --- a/framework/network/pom.xml +++ b/framework/network/pom.xml @@ -24,7 +24,7 @@ 2.5.0 - 2.1.0-alpha24 + 2.8.0 5.2.4.RELEASE 0.7.14.RELEASE From 48af9099e7e9694c73cb070738a42fa71aa1da92 Mon Sep 17 00:00:00 2001 From: snyk-bot Date: Fri, 1 Jan 2021 06:10:16 +0000 Subject: [PATCH 331/417] fix: framework/aws/pom.xml to reduce vulnerabilities The following vulnerabilities are fixed with an upgrade: - https://snyk.io/vuln/SNYK-JAVA-COMFASTERXMLJACKSONCORE-1048302 --- framework/aws/pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/framework/aws/pom.xml b/framework/aws/pom.xml index 364f12fed..a44da10ec 100644 --- a/framework/aws/pom.xml +++ b/framework/aws/pom.xml @@ -17,7 +17,7 @@ - 1.11.699 + 1.11.930 From f7696df9493ce04b2d4a3214c40f1a438cc6f572 Mon Sep 17 00:00:00 2001 From: snyk-bot Date: Sun, 3 Jan 2021 02:57:18 +0000 Subject: [PATCH 332/417] fix: framework/network/pom.xml to reduce vulnerabilities The following vulnerabilities are fixed with an upgrade: - https://snyk.io/vuln/SNYK-JAVA-IONETTY-1020439 --- framework/network/pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/framework/network/pom.xml b/framework/network/pom.xml index 1db9bcc51..fac0b149c 100644 --- a/framework/network/pom.xml +++ b/framework/network/pom.xml @@ -24,7 +24,7 @@ 2.5.0 - 2.1.0-alpha24 + 2.12.2 5.2.4.RELEASE 0.7.14.RELEASE From 173eb1a90dc8bead887b1e6c9c943137449510d9 Mon Sep 17 00:00:00 2001 From: snyk-bot Date: Tue, 5 Jan 2021 06:12:47 +0000 Subject: [PATCH 333/417] fix: framework/aws/pom.xml to reduce vulnerabilities The following vulnerabilities are fixed with an upgrade: - https://snyk.io/vuln/SNYK-JAVA-COMFASTERXMLJACKSONCORE-1048302 --- framework/aws/pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/framework/aws/pom.xml b/framework/aws/pom.xml index 364f12fed..4a211914b 100644 --- a/framework/aws/pom.xml +++ b/framework/aws/pom.xml @@ -17,7 +17,7 @@ - 1.11.699 + 1.11.931 From eea4a54ff9c0587e6d19506207670b9e99b1b418 Mon Sep 17 00:00:00 2001 From: snyk-bot Date: Sun, 10 Jan 2021 02:14:15 +0000 Subject: [PATCH 334/417] fix: big-data/pom.xml to reduce vulnerabilities The following vulnerabilities are fixed with an upgrade: - https://snyk.io/vuln/SNYK-JAVA-ORGAPACHEHTTPCOMPONENTS-1016906 - https://snyk.io/vuln/SNYK-JAVA-ORGAPACHEHTTPCOMPONENTS-1048058 --- big-data/pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/big-data/pom.xml b/big-data/pom.xml index d9d32db53..d1737ef89 100644 --- a/big-data/pom.xml +++ b/big-data/pom.xml @@ -19,7 +19,7 @@ - 2.8.1 + 3.2.2 2.8.1 2.8.1 1.17.0 From 2a0f814449c2a86284c483a01c1d10dc088f33b2 Mon Sep 17 00:00:00 2001 From: snyk-bot Date: Fri, 15 Jan 2021 02:02:43 +0000 Subject: [PATCH 335/417] fix: framework/common/pom.xml to reduce vulnerabilities The following vulnerabilities are fixed with an upgrade: - https://snyk.io/vuln/SNYK-JAVA-ORGAPACHEXMLBEANS-1060048 --- framework/common/pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/framework/common/pom.xml b/framework/common/pom.xml index 5acfc1efe..fb1f590b2 100644 --- a/framework/common/pom.xml +++ b/framework/common/pom.xml @@ -26,7 +26,7 @@ 3.6 1.1 - 3.17 + 4.0.0 1.4.2 2.1.17 5.0.4 From 314632422c7a995131c4d364d44214cb6c02e865 Mon Sep 17 00:00:00 2001 From: snyk-bot Date: Sat, 16 Jan 2021 01:52:55 +0000 Subject: [PATCH 336/417] fix: upgrade com.fasterxml.jackson.core:jackson-core from 2.10.1 to 2.12.0 Snyk has created this PR to upgrade com.fasterxml.jackson.core:jackson-core from 2.10.1 to 2.12.0. See this package in Maven Repository: https://mvnrepository.com/artifact/com.fasterxml.jackson.core/jackson-core/ See this project in Snyk: https://app.snyk.io/org/laidu/project/d1139961-28c7-4014-8b7b-7fe5ec618a37?utm_source=github&utm_medium=upgrade-pr --- production-component/common-util/pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/production-component/common-util/pom.xml b/production-component/common-util/pom.xml index d08d09dc6..47eaf7972 100644 --- a/production-component/common-util/pom.xml +++ b/production-component/common-util/pom.xml @@ -29,7 +29,7 @@ 5.0.4 1.2.47 - 2.10.1 + 2.12.0 2.1.3 From b128657c30d4dbc17b92526cddc2990319035e88 Mon Sep 17 00:00:00 2001 From: snyk-bot Date: Sat, 16 Jan 2021 01:52:58 +0000 Subject: [PATCH 337/417] fix: upgrade net.logstash.logback:logstash-logback-encoder from 6.3 to 6.5 Snyk has created this PR to upgrade net.logstash.logback:logstash-logback-encoder from 6.3 to 6.5. See this package in Maven Repository: https://mvnrepository.com/artifact/net.logstash.logback/logstash-logback-encoder/ See this project in Snyk: https://app.snyk.io/org/laidu/project/d1139961-28c7-4014-8b7b-7fe5ec618a37?utm_source=github&utm_medium=upgrade-pr --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index 6b4695545..0871698b1 100644 --- a/pom.xml +++ b/pom.xml @@ -92,7 +92,7 @@ ${junit4.version}.0 1.0.2 - 6.3 + 6.5 From 6cffd8166fc99fe8235ba99c1c152103c5cf92a0 Mon Sep 17 00:00:00 2001 From: snyk-bot Date: Sat, 16 Jan 2021 02:02:51 +0000 Subject: [PATCH 338/417] fix: upgrade org.apache.poi:poi from 4.0.0 to 4.1.2 Snyk has created this PR to upgrade org.apache.poi:poi from 4.0.0 to 4.1.2. See this package in Maven Repository: https://mvnrepository.com/artifact/org.apache.poi/poi/ See this project in Snyk: https://app.snyk.io/org/laidu/project/ddf9749c-8ede-4ff4-bdf8-5b2d9bf7b22d?utm_source=github&utm_medium=upgrade-pr --- framework/common/pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/framework/common/pom.xml b/framework/common/pom.xml index fb1f590b2..fad532bb8 100644 --- a/framework/common/pom.xml +++ b/framework/common/pom.xml @@ -26,7 +26,7 @@ 3.6 1.1 - 4.0.0 + 4.1.2 1.4.2 2.1.17 5.0.4 From 10c2147fe04ed640d4d46ad0b8be52321d9e80a1 Mon Sep 17 00:00:00 2001 From: Coder Xp Date: Sun, 17 Jan 2021 19:41:19 +0800 Subject: [PATCH 339/417] sync code --- .../boot/app/SpringBootAppApplication.java | 2 - language-advance/bytecode/pom.xml | 62 +++++++++---------- language-advance/pom.xml | 2 +- .../resources/rebel.xml => .rebel.xml.bak} | 0 rebel-remote.xml | 4 ++ rebel.xml | 11 ++++ 6 files changed, 47 insertions(+), 34 deletions(-) rename production-component/crawler/{src/main/resources/rebel.xml => .rebel.xml.bak} (100%) create mode 100644 rebel-remote.xml create mode 100644 rebel.xml diff --git a/framework/spring/spring-boot/spring-boot-app/src/main/java/org/laidu/learn/spring/boot/app/SpringBootAppApplication.java b/framework/spring/spring-boot/spring-boot-app/src/main/java/org/laidu/learn/spring/boot/app/SpringBootAppApplication.java index f7406db47..74140fd6f 100644 --- a/framework/spring/spring-boot/spring-boot-app/src/main/java/org/laidu/learn/spring/boot/app/SpringBootAppApplication.java +++ b/framework/spring/spring-boot/spring-boot-app/src/main/java/org/laidu/learn/spring/boot/app/SpringBootAppApplication.java @@ -19,8 +19,6 @@ public class SpringBootAppApplication { public static void main(String[] args) { -// SpringApplication.run(SpringBootAppApplication.class,args); - new SpringApplicationBuilder() .sources(SpringBootAppApplication.class) .registerShutdownHook(true) diff --git a/language-advance/bytecode/pom.xml b/language-advance/bytecode/pom.xml index 4ea246f70..dc0d7bc95 100644 --- a/language-advance/bytecode/pom.xml +++ b/language-advance/bytecode/pom.xml @@ -30,37 +30,37 @@ - - org.codehaus.mojo - aspectj-maven-plugin - 1.11 - - ${java.version} - ${java.version} - ${java.version} - - - - process-sources - - compile - test-compile - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/language-advance/pom.xml b/language-advance/pom.xml index aa4ccffc3..405d191dd 100644 --- a/language-advance/pom.xml +++ b/language-advance/pom.xml @@ -27,7 +27,7 @@ - 1.9.2 + 1.9.6 3.2.9 1.60 11 diff --git a/production-component/crawler/src/main/resources/rebel.xml b/production-component/crawler/.rebel.xml.bak similarity index 100% rename from production-component/crawler/src/main/resources/rebel.xml rename to production-component/crawler/.rebel.xml.bak diff --git a/rebel-remote.xml b/rebel-remote.xml new file mode 100644 index 000000000..408abf52d --- /dev/null +++ b/rebel-remote.xml @@ -0,0 +1,4 @@ + + + java-learn + diff --git a/rebel.xml b/rebel.xml new file mode 100644 index 000000000..ba5be6c5b --- /dev/null +++ b/rebel.xml @@ -0,0 +1,11 @@ + + + + + + java-learn + + From 13a8a1f872c31c407e5734567375fc4e389fd007 Mon Sep 17 00:00:00 2001 From: laidu823 Date: Tue, 2 Feb 2021 00:06:57 +0800 Subject: [PATCH 340/417] add akka --- framework/akka/pom.xml | 42 +++++++++++++ .../akka/ActorHierarchyExperiments.java | 62 +++++++++++++++++++ .../learn/framework/akka/package-info.java | 1 + framework/pom.xml | 1 + java-learn | 1 + pom.xml | 1 + 6 files changed, 108 insertions(+) create mode 100644 framework/akka/pom.xml create mode 100644 framework/akka/src/main/java/org/laidu/learn/framework/akka/ActorHierarchyExperiments.java create mode 100644 framework/akka/src/main/java/org/laidu/learn/framework/akka/package-info.java create mode 160000 java-learn diff --git a/framework/akka/pom.xml b/framework/akka/pom.xml new file mode 100644 index 000000000..1ebaef9dd --- /dev/null +++ b/framework/akka/pom.xml @@ -0,0 +1,42 @@ + + + + framework + org.laidu.learn + 1.0-SNAPSHOT + + 4.0.0 + + akka + + + 8 + 8 + 2.13 + + + + + + com.typesafe.akka + akka-bom_${scala.binary.version} + 2.6.12 + pom + import + + + + + + + + com.typesafe.akka + akka-actor-typed_${scala.binary.version} + + + + + + \ No newline at end of file diff --git a/framework/akka/src/main/java/org/laidu/learn/framework/akka/ActorHierarchyExperiments.java b/framework/akka/src/main/java/org/laidu/learn/framework/akka/ActorHierarchyExperiments.java new file mode 100644 index 000000000..43ba55a71 --- /dev/null +++ b/framework/akka/src/main/java/org/laidu/learn/framework/akka/ActorHierarchyExperiments.java @@ -0,0 +1,62 @@ +package org.laidu.learn.framework.akka; + +import akka.actor.typed.ActorRef; +import akka.actor.typed.ActorSystem; +import akka.actor.typed.Behavior; +import akka.actor.typed.javadsl.AbstractBehavior; +import akka.actor.typed.javadsl.ActorContext; +import akka.actor.typed.javadsl.Behaviors; +import akka.actor.typed.javadsl.Receive; + +class PrintMyActorRefActor extends AbstractBehavior { + + static Behavior create() { + return Behaviors.setup(PrintMyActorRefActor::new); + } + + private PrintMyActorRefActor(ActorContext context) { + super(context); + } + + @Override + public Receive createReceive() { + return newReceiveBuilder().onMessageEquals("printit", this::printIt).build(); + } + + private Behavior printIt() { + ActorRef secondRef = getContext().spawn(Behaviors.empty(), "second-actor"); + System.out.println("Second: " + secondRef); + return this; + } +} + +class Main extends AbstractBehavior { + + static Behavior create() { + return Behaviors.setup(Main::new); + } + + private Main(ActorContext context) { + super(context); + } + + @Override + public Receive createReceive() { + return newReceiveBuilder().onMessageEquals("start", this::start).build(); + } + + private Behavior start() { + ActorRef firstRef = getContext().spawn(PrintMyActorRefActor.create(), "first-actor"); + + System.out.println("First: " + firstRef); + firstRef.tell("printit"); + return Behaviors.same(); + } +} + +public class ActorHierarchyExperiments { + public static void main(String[] args) { + ActorRef testSystem = ActorSystem.create(Main.create(), "testSystem"); + testSystem.tell("start"); + } +} \ No newline at end of file diff --git a/framework/akka/src/main/java/org/laidu/learn/framework/akka/package-info.java b/framework/akka/src/main/java/org/laidu/learn/framework/akka/package-info.java new file mode 100644 index 000000000..5b05591c0 --- /dev/null +++ b/framework/akka/src/main/java/org/laidu/learn/framework/akka/package-info.java @@ -0,0 +1 @@ +package org.laidu.learn.framework.akka; \ No newline at end of file diff --git a/framework/pom.xml b/framework/pom.xml index 153c4fc9a..bc4bf8b66 100644 --- a/framework/pom.xml +++ b/framework/pom.xml @@ -14,6 +14,7 @@ java 常用框架学习 + akka spring webmagic common diff --git a/java-learn b/java-learn new file mode 160000 index 000000000..a73a34768 --- /dev/null +++ b/java-learn @@ -0,0 +1 @@ +Subproject commit a73a34768351bac514d4c8f73ef3610beaeab78d diff --git a/pom.xml b/pom.xml index 577dfc928..589e0e1d9 100644 --- a/pom.xml +++ b/pom.xml @@ -51,6 +51,7 @@ dev-ops big-data code-practice + framework/akka From 0ffda45b94e84c260ee20e177347ea0804c7d722 Mon Sep 17 00:00:00 2001 From: xpcoder Date: Fri, 12 Feb 2021 23:16:36 +0800 Subject: [PATCH 341/417] upgrade jdk 11 --- framework/spring/spring-boot/pom.xml | 2 +- framework/thirdparty/pom.xml | 3 +- framework/thirdparty/wechat/pom.xml | 3 +- .../config/WechatCommonConfiguration.java | 8 +- .../common/controller/CoreController.java | 17 ++-- .../controller/TemplateMessageController.java | 9 ++- .../common/handler/AbstractHandler.java | 6 +- .../common/handler/SubscribeHandler.java | 3 +- java-learn | 1 - language-advance/pom.xml | 44 ---------- language-feature/pom.xml | 80 +++++++++---------- pom.xml | 48 +++++++++-- 12 files changed, 115 insertions(+), 109 deletions(-) delete mode 160000 java-learn diff --git a/framework/spring/spring-boot/pom.xml b/framework/spring/spring-boot/pom.xml index 50cfbb9ba..85012f192 100644 --- a/framework/spring/spring-boot/pom.xml +++ b/framework/spring/spring-boot/pom.xml @@ -23,7 +23,7 @@ UTF-8 UTF-8 - 1.8 + 11 springio diff --git a/framework/thirdparty/pom.xml b/framework/thirdparty/pom.xml index 9f4711301..bdd239c64 100644 --- a/framework/thirdparty/pom.xml +++ b/framework/thirdparty/pom.xml @@ -16,7 +16,8 @@ - 3.1.0 + 1.8 + 4.0.0 2.2.2.RELEASE diff --git a/framework/thirdparty/wechat/pom.xml b/framework/thirdparty/wechat/pom.xml index 01e37602b..12abf4ed7 100644 --- a/framework/thirdparty/wechat/pom.xml +++ b/framework/thirdparty/wechat/pom.xml @@ -19,7 +19,8 @@ - 4.0.2.B + 1.8 + 4.0.0 1.0.6 diff --git a/framework/thirdparty/wechat/wechat-common/src/main/java/org/laidu/learn/wechat/common/config/WechatCommonConfiguration.java b/framework/thirdparty/wechat/wechat-common/src/main/java/org/laidu/learn/wechat/common/config/WechatCommonConfiguration.java index f56ed278f..8f06e3cc7 100644 --- a/framework/thirdparty/wechat/wechat-common/src/main/java/org/laidu/learn/wechat/common/config/WechatCommonConfiguration.java +++ b/framework/thirdparty/wechat/wechat-common/src/main/java/org/laidu/learn/wechat/common/config/WechatCommonConfiguration.java @@ -1,10 +1,11 @@ package org.laidu.learn.wechat.common.config; import lombok.extern.slf4j.Slf4j; -import me.chanjar.weixin.mp.api.WxMpConfigStorage; -import me.chanjar.weixin.mp.api.WxMpInMemoryConfigStorage; import me.chanjar.weixin.mp.api.WxMpService; import me.chanjar.weixin.mp.api.impl.WxMpServiceImpl; +import me.chanjar.weixin.mp.config.WxMpConfigStorage; +import me.chanjar.weixin.mp.config.impl.WxMpDefaultConfigImpl; + import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; @@ -29,12 +30,13 @@ public class WechatCommonConfiguration { @Bean public WxMpConfigStorage wxMpConfigStorage() { - WxMpInMemoryConfigStorage configStorage = new WxMpInMemoryConfigStorage(); + WxMpDefaultConfigImpl configStorage = new WxMpDefaultConfigImpl(); configStorage.setAppId(wechatProperties.getAppId()); configStorage.setSecret(wechatProperties.getAppSecret()); configStorage.setToken(wechatProperties.getToken()); configStorage.setAesKey(wechatProperties.getAesKey()); return configStorage; + } @Bean diff --git a/framework/thirdparty/wechat/wechat-common/src/main/java/org/laidu/learn/wechat/common/controller/CoreController.java b/framework/thirdparty/wechat/wechat-common/src/main/java/org/laidu/learn/wechat/common/controller/CoreController.java index 08e1bbb93..fd63131a0 100644 --- a/framework/thirdparty/wechat/wechat-common/src/main/java/org/laidu/learn/wechat/common/controller/CoreController.java +++ b/framework/thirdparty/wechat/wechat-common/src/main/java/org/laidu/learn/wechat/common/controller/CoreController.java @@ -2,14 +2,17 @@ import lombok.extern.slf4j.Slf4j; import me.chanjar.weixin.common.api.WxConsts; +import me.chanjar.weixin.common.bean.oauth2.WxOAuth2AccessToken; import me.chanjar.weixin.common.error.WxErrorException; -import me.chanjar.weixin.mp.AiLangType; -import me.chanjar.weixin.mp.api.WxMpConfigStorage; +//import me.chanjar.weixin.mp.AiLangType; +//import me.chanjar.weixin.mp.api.WxMpConfigStorage; import me.chanjar.weixin.mp.api.WxMpService; import me.chanjar.weixin.mp.bean.message.WxMpXmlMessage; import me.chanjar.weixin.mp.bean.message.WxMpXmlOutMessage; -import me.chanjar.weixin.mp.bean.result.WxMpOAuth2AccessToken; import me.chanjar.weixin.mp.bean.result.WxMpUser; +import me.chanjar.weixin.mp.config.WxMpConfigStorage; +import me.chanjar.weixin.mp.enums.AiLangType; + import org.apache.commons.lang3.StringUtils; import org.laidu.learn.wechat.common.service.CoreService; import org.laidu.learn.wechat.common.util.ReturnModel; @@ -164,10 +167,10 @@ public WxMpUser getUserInfo(HttpServletResponse response, @RequestParam(value = @RequestMapping(value = "/getOAuth2UserInfo") public void getOAuth2UserInfo(HttpServletResponse response, @RequestParam(value = "code") String code, @RequestParam(value = "lang") String lang) { ReturnModel returnModel = new ReturnModel(); - WxMpOAuth2AccessToken accessToken; + WxOAuth2AccessToken accessToken; WxMpUser wxMpUser; try { - accessToken = this.wxMpService.oauth2getAccessToken(code); + accessToken = this.wxMpService.getOAuth2Service().getAccessToken(code); wxMpUser = this.wxMpService.getUserService() .userInfo(accessToken.getOpenId(), lang); returnModel.setResult(true); @@ -190,9 +193,9 @@ public void getOAuth2UserInfo(HttpServletResponse response, @RequestParam(value @RequestMapping(value = "/getOpenid") public void getOpenid(HttpServletResponse response, @RequestParam(value = "code") String code) { ReturnModel returnModel = new ReturnModel(); - WxMpOAuth2AccessToken accessToken; + WxOAuth2AccessToken accessToken; try { - accessToken = this.wxMpService.oauth2getAccessToken(code); + accessToken = this.wxMpService.getOAuth2Service().getAccessToken(code); returnModel.setResult(true); returnModel.setDatum(accessToken.getOpenId()); renderString(response, returnModel); diff --git a/framework/thirdparty/wechat/wechat-common/src/main/java/org/laidu/learn/wechat/common/controller/TemplateMessageController.java b/framework/thirdparty/wechat/wechat-common/src/main/java/org/laidu/learn/wechat/common/controller/TemplateMessageController.java index 484ddc606..b3690cc0f 100644 --- a/framework/thirdparty/wechat/wechat-common/src/main/java/org/laidu/learn/wechat/common/controller/TemplateMessageController.java +++ b/framework/thirdparty/wechat/wechat-common/src/main/java/org/laidu/learn/wechat/common/controller/TemplateMessageController.java @@ -1,10 +1,12 @@ package org.laidu.learn.wechat.common.controller; +import lombok.extern.slf4j.Slf4j; import me.chanjar.weixin.common.error.WxErrorException; -import me.chanjar.weixin.mp.api.WxMpConfigStorage; import me.chanjar.weixin.mp.api.WxMpService; import me.chanjar.weixin.mp.bean.template.WxMpTemplateData; import me.chanjar.weixin.mp.bean.template.WxMpTemplateMessage; +import me.chanjar.weixin.mp.config.WxMpConfigStorage; + import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; @@ -18,6 +20,7 @@ * Created by FirenzesEagle on 2016/7/11 0011. * Email:liumingbo2008@gmail.com */ +@Slf4j @Controller @RequestMapping(value = "templateMessage") public class TemplateMessageController extends GenericController { @@ -48,7 +51,7 @@ public void notifyOrderPaySuccessTemplate(HttpServletResponse response, wxMpService.getTemplateMsgService() .sendTemplateMsg(orderPaySuccessTemplate); } catch (WxErrorException e) { - logger.error(e.getMessage()); + log.error(e.getMessage()); } } @@ -71,7 +74,7 @@ public void notifyOrderStatusUpdateTemplate(HttpServletResponse response, wxMpService.getTemplateMsgService() .sendTemplateMsg(orderPaySuccessTemplate); } catch (WxErrorException e) { - logger.error(e.getMessage()); + log.error(e.getMessage()); } } diff --git a/framework/thirdparty/wechat/wechat-common/src/main/java/org/laidu/learn/wechat/common/handler/AbstractHandler.java b/framework/thirdparty/wechat/wechat-common/src/main/java/org/laidu/learn/wechat/common/handler/AbstractHandler.java index afbb32fc0..01a8873cd 100644 --- a/framework/thirdparty/wechat/wechat-common/src/main/java/org/laidu/learn/wechat/common/handler/AbstractHandler.java +++ b/framework/thirdparty/wechat/wechat-common/src/main/java/org/laidu/learn/wechat/common/handler/AbstractHandler.java @@ -1,10 +1,12 @@ package org.laidu.learn.wechat.common.handler; -import com.google.gson.Gson; -import me.chanjar.weixin.mp.api.WxMpMessageHandler; import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import com.google.gson.Gson; + +import me.chanjar.weixin.mp.api.WxMpMessageHandler; + /** * 消息处理Handler的父类 * diff --git a/framework/thirdparty/wechat/wechat-common/src/main/java/org/laidu/learn/wechat/common/handler/SubscribeHandler.java b/framework/thirdparty/wechat/wechat-common/src/main/java/org/laidu/learn/wechat/common/handler/SubscribeHandler.java index 20f724a43..71bab884e 100644 --- a/framework/thirdparty/wechat/wechat-common/src/main/java/org/laidu/learn/wechat/common/handler/SubscribeHandler.java +++ b/framework/thirdparty/wechat/wechat-common/src/main/java/org/laidu/learn/wechat/common/handler/SubscribeHandler.java @@ -1,12 +1,13 @@ package org.laidu.learn.wechat.common.handler; import me.chanjar.weixin.common.session.WxSessionManager; -import me.chanjar.weixin.mp.api.WxMpConfigStorage; import me.chanjar.weixin.mp.api.WxMpService; import me.chanjar.weixin.mp.bean.message.WxMpXmlMessage; import me.chanjar.weixin.mp.bean.message.WxMpXmlOutMessage; import me.chanjar.weixin.mp.bean.message.WxMpXmlOutTextMessage; import me.chanjar.weixin.mp.bean.result.WxMpUser; +import me.chanjar.weixin.mp.config.WxMpConfigStorage; + import org.laidu.learn.wechat.common.service.CoreService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; diff --git a/java-learn b/java-learn deleted file mode 160000 index a73a34768..000000000 --- a/java-learn +++ /dev/null @@ -1 +0,0 @@ -Subproject commit a73a34768351bac514d4c8f73ef3610beaeab78d diff --git a/language-advance/pom.xml b/language-advance/pom.xml index 3ed2afc80..22d3be06c 100644 --- a/language-advance/pom.xml +++ b/language-advance/pom.xml @@ -30,7 +30,6 @@ 1.9.5 3.3.0 1.60 - 11 @@ -73,48 +72,5 @@ - - - - - org.apache.maven.plugins - maven-compiler-plugin - ${maven-compiler-plugin.version} - - ${jdk.version} - ${jdk.version} - - - - org.projectlombok - lombok - ${lombok.version} - - - - - - - - org.apache.maven.plugins - maven-toolchains-plugin - 1.1 - - - - 11 - - - - - - - toolchain - - - - - - \ No newline at end of file diff --git a/language-feature/pom.xml b/language-feature/pom.xml index b040a8081..d821d8efe 100644 --- a/language-feature/pom.xml +++ b/language-feature/pom.xml @@ -17,7 +17,7 @@ 3.1.0 - 11 + @@ -35,48 +35,48 @@ - - + + - - org.apache.maven.plugins - maven-compiler-plugin - ${maven-compiler-plugin.version} - - ${jdk.version} - ${jdk.version} + + + + + + + - - - org.projectlombok - lombok - ${lombok.version} - - - + + + + + + + + - + - - org.apache.maven.plugins - maven-toolchains-plugin - 1.1 - - - - 11 - - - - - - - toolchain - - - - - - + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/pom.xml b/pom.xml index fdf1db6f9..8a8e39510 100644 --- a/pom.xml +++ b/pom.xml @@ -51,7 +51,6 @@ dev-ops big-data code-practice - framework/akka @@ -65,10 +64,11 @@ - 1.8 + 11 + ${java.version} ${java.version} - 3.8.0 + 3.8.1 UTF-8 @@ -225,13 +225,32 @@ + + + + + + + + + + + + + + + + + + + org.apache.maven.plugins maven-compiler-plugin ${maven-compiler-plugin.version} - ${maven.compiler.source} - ${maven.compiler.target} + ${java.version} + ${java.version} @@ -243,6 +262,25 @@ + + org.apache.maven.plugins + maven-toolchains-plugin + 1.1 + + + + 11 + + + + + + + toolchain + + + + org.apache.maven.plugins From 1f00f4f0e3d54adf8419e09f4888d523b1a8c145 Mon Sep 17 00:00:00 2001 From: xpcoder Date: Fri, 12 Feb 2021 23:26:40 +0800 Subject: [PATCH 342/417] upgrade jdk 11 --- .travis.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.travis.yml b/.travis.yml index 44ae71f37..09d68cb33 100644 --- a/.travis.yml +++ b/.travis.yml @@ -1,6 +1,6 @@ language: java jdk: - - oraclejdk8 + - oraclejdk11 cache: directories: From c56fc2b6e0d4720b1bd5eaa81889d8fbf602484d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=9D=90=E7=AC=83=E5=A4=A7=E5=A4=A7?= Date: Fri, 12 Feb 2021 23:32:18 +0800 Subject: [PATCH 343/417] Update maven.yml --- .github/workflows/maven.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/maven.yml b/.github/workflows/maven.yml index ac5ef973e..18d1bc7a3 100644 --- a/.github/workflows/maven.yml +++ b/.github/workflows/maven.yml @@ -12,6 +12,6 @@ jobs: - name: Set up JDK 1.8 uses: actions/setup-java@v1 with: - java-version: 1.8 + java-version: 11 - name: Build with Maven run: mvn site From 7f13e4b1170ac41e6f3828de2f11ea8e7c8e25f6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=9D=90=E7=AC=83=E5=A4=A7=E5=A4=A7?= Date: Fri, 12 Feb 2021 23:32:44 +0800 Subject: [PATCH 344/417] Update maven.yml --- .github/workflows/maven.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/maven.yml b/.github/workflows/maven.yml index 18d1bc7a3..0e0a310d4 100644 --- a/.github/workflows/maven.yml +++ b/.github/workflows/maven.yml @@ -9,7 +9,7 @@ jobs: steps: - uses: actions/checkout@v1 - - name: Set up JDK 1.8 + - name: Set up JDK 11 uses: actions/setup-java@v1 with: java-version: 11 From aa9230fa2dcf42732817ce08578daddfc5d46636 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=9D=90=E7=AC=83=E5=A4=A7=E5=A4=A7?= Date: Fri, 12 Feb 2021 23:41:41 +0800 Subject: [PATCH 345/417] Update maven.yml --- .github/workflows/maven.yml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.github/workflows/maven.yml b/.github/workflows/maven.yml index 0e0a310d4..d77a26493 100644 --- a/.github/workflows/maven.yml +++ b/.github/workflows/maven.yml @@ -13,5 +13,7 @@ jobs: uses: actions/setup-java@v1 with: java-version: 11 + - name: maven install + run: mvn install -DskipTests - name: Build with Maven run: mvn site From 9f9b6cde0da448cd7e8339bca14220107f0afcfa Mon Sep 17 00:00:00 2001 From: xpcoder Date: Fri, 12 Feb 2021 23:44:58 +0800 Subject: [PATCH 346/417] upgrade jdk 11 --- framework/pom.xml | 1 - pom.xml | 79 ++++++------------------ production-component/common-util/pom.xml | 1 + 3 files changed, 20 insertions(+), 61 deletions(-) diff --git a/framework/pom.xml b/framework/pom.xml index bc4bf8b66..caeae6288 100644 --- a/framework/pom.xml +++ b/framework/pom.xml @@ -47,7 +47,6 @@ - com.typesafe.play play_2.11 diff --git a/pom.xml b/pom.xml index af9e7ab14..eabea9d68 100644 --- a/pom.xml +++ b/pom.xml @@ -65,7 +65,6 @@ 11 - ${java.version} ${java.version} 3.8.1 @@ -204,46 +203,6 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - org.apache.maven.plugins maven-compiler-plugin @@ -262,25 +221,25 @@ - - org.apache.maven.plugins - maven-toolchains-plugin - 1.1 - - - - 11 - - - - - - - toolchain - - - - + + + + + + + + + + + + + + + + + + + org.apache.maven.plugins diff --git a/production-component/common-util/pom.xml b/production-component/common-util/pom.xml index 47eaf7972..af08b8b7e 100644 --- a/production-component/common-util/pom.xml +++ b/production-component/common-util/pom.xml @@ -14,6 +14,7 @@ jar 通用工具集 + 1.0-SNAPSHOT From 94eff9b9c155c78759956e2440246116a8995d1e Mon Sep 17 00:00:00 2001 From: xpcoder Date: Sat, 13 Feb 2021 00:33:56 +0800 Subject: [PATCH 347/417] upgrade springboot 2.4.2 --- convenient-util/pom.xml | 2 +- framework/spring/pom.xml | 6 ++--- framework/thirdparty/pom.xml | 2 +- language-advance/bytecode/pom.xml | 38 ------------------------------- production-component/pom.xml | 2 +- 5 files changed, 6 insertions(+), 44 deletions(-) diff --git a/convenient-util/pom.xml b/convenient-util/pom.xml index 6f029cdfd..48e20bcc2 100644 --- a/convenient-util/pom.xml +++ b/convenient-util/pom.xml @@ -24,7 +24,7 @@ 3.4.0 1.1.0 - 5.1.2.RELEASE + 5.3.3 diff --git a/framework/spring/pom.xml b/framework/spring/pom.xml index 4e9e05ad6..b5d5195d2 100644 --- a/framework/spring/pom.xml +++ b/framework/spring/pom.xml @@ -34,9 +34,9 @@ 5.5.0 - 5.2.9.RELEASE - 2.3.4.RELEASE - Greenwich.SR2 + 5.3.3 + 2.4.2 + 2020.0.1 1.4.2 2.0.1.Final diff --git a/framework/thirdparty/pom.xml b/framework/thirdparty/pom.xml index bdd239c64..aaf03658c 100644 --- a/framework/thirdparty/pom.xml +++ b/framework/thirdparty/pom.xml @@ -18,7 +18,7 @@ 1.8 4.0.0 - 2.2.2.RELEASE + 2.4.2 diff --git a/language-advance/bytecode/pom.xml b/language-advance/bytecode/pom.xml index dc0d7bc95..c46c1580c 100644 --- a/language-advance/bytecode/pom.xml +++ b/language-advance/bytecode/pom.xml @@ -12,7 +12,6 @@ bytecode - 1.8 @@ -27,41 +26,4 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/production-component/pom.xml b/production-component/pom.xml index 03304a929..0a37c3d44 100644 --- a/production-component/pom.xml +++ b/production-component/pom.xml @@ -20,7 +20,7 @@ - 2.2.2.RELEASE + 2.4.2 3.1.1 \ No newline at end of file From 30fd3af82c19b45a8ebc3b238990fb06d5e38962 Mon Sep 17 00:00:00 2001 From: xpcoder Date: Sat, 13 Feb 2021 00:56:03 +0800 Subject: [PATCH 348/417] fix spring cloud netflx compile error --- .../spring/spring-cloud/api-gateway/pom.xml | 17 +++++++++ .../spring-cloud/consumer-hello/pom.xml | 16 ++++++++ .../spring-cloud/hystrix-dashboard/pom.xml | 38 +++++++++++++++++-- .../spring/cloud/hystrix/HystrixDashApp.java | 3 +- 4 files changed, 69 insertions(+), 5 deletions(-) diff --git a/framework/spring/spring-cloud/api-gateway/pom.xml b/framework/spring/spring-cloud/api-gateway/pom.xml index b5b86de89..18b03f1a7 100644 --- a/framework/spring/spring-cloud/api-gateway/pom.xml +++ b/framework/spring/spring-cloud/api-gateway/pom.xml @@ -12,6 +12,23 @@ api-gateway + + 11 + Hoxton.SR9 + + + + + + org.springframework.cloud + spring-cloud-dependencies + ${spring-cloud.version} + pom + import + + + + diff --git a/framework/spring/spring-cloud/consumer-hello/pom.xml b/framework/spring/spring-cloud/consumer-hello/pom.xml index 93692d7e4..89f430ad5 100644 --- a/framework/spring/spring-cloud/consumer-hello/pom.xml +++ b/framework/spring/spring-cloud/consumer-hello/pom.xml @@ -17,6 +17,22 @@ 1.0-SNAPSHOT + + 11 + Hoxton.SR9 + + + + + + org.springframework.cloud + spring-cloud-dependencies + ${spring-cloud.version} + pom + import + + + diff --git a/framework/spring/spring-cloud/hystrix-dashboard/pom.xml b/framework/spring/spring-cloud/hystrix-dashboard/pom.xml index bbaa72b04..e6b47c34c 100644 --- a/framework/spring/spring-cloud/hystrix-dashboard/pom.xml +++ b/framework/spring/spring-cloud/hystrix-dashboard/pom.xml @@ -11,17 +11,47 @@ hystrix-dashboard - + + 11 + Hoxton.SR9 + + + + + + org.springframework.cloud + spring-cloud-dependencies + ${spring-cloud.version} + pom + import + + + + org.springframework.cloud - spring-cloud-starter-netflix-hystrix + spring-cloud-starter-netflix-hystrix-dashboard org.springframework.cloud - spring-cloud-netflix-hystrix-dashboard + spring-cloud-starter-netflix-hystrix + + + org.springframework.boot + spring-boot-starter-actuator + + + org.springframework.boot + spring-boot-starter-test + test + + + org.junit.vintage + junit-vintage-engine + + - diff --git a/framework/spring/spring-cloud/hystrix-dashboard/src/main/java/org/laidu/learn/spring/cloud/hystrix/HystrixDashApp.java b/framework/spring/spring-cloud/hystrix-dashboard/src/main/java/org/laidu/learn/spring/cloud/hystrix/HystrixDashApp.java index 39d07092b..2d7e91575 100644 --- a/framework/spring/spring-cloud/hystrix-dashboard/src/main/java/org/laidu/learn/spring/cloud/hystrix/HystrixDashApp.java +++ b/framework/spring/spring-cloud/hystrix-dashboard/src/main/java/org/laidu/learn/spring/cloud/hystrix/HystrixDashApp.java @@ -1,11 +1,12 @@ package org.laidu.learn.spring.cloud.hystrix; -import lombok.extern.slf4j.Slf4j; import org.springframework.boot.Banner; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.boot.builder.SpringApplicationBuilder; import org.springframework.cloud.netflix.hystrix.dashboard.EnableHystrixDashboard; +import lombok.extern.slf4j.Slf4j; + /** * hystrix-dashboard *

                    From cba71df04bc6f26d072df3c1aeb39d8a8cfc741a Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 10 Mar 2021 23:29:14 +0000 Subject: [PATCH 349/417] build(deps): bump jetty-server in /language-feature Bumps [jetty-server](https://github.com/eclipse/jetty.project) from 9.4.25.v20191220 to 9.4.38.v20210224. - [Release notes](https://github.com/eclipse/jetty.project/releases) - [Commits](https://github.com/eclipse/jetty.project/compare/jetty-9.4.25.v20191220...jetty-9.4.38.v20210224) Signed-off-by: dependabot[bot] --- language-feature/pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/language-feature/pom.xml b/language-feature/pom.xml index d821d8efe..6dcb84062 100644 --- a/language-feature/pom.xml +++ b/language-feature/pom.xml @@ -30,7 +30,7 @@ org.eclipse.jetty jetty-server - 9.4.25.v20191220 + 9.4.38.v20210224 From d61e88ece000a235f639c1b419e107cc13d01594 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 18 Mar 2021 19:33:25 +0000 Subject: [PATCH 350/417] build(deps): bump elasticsearch from 6.2.2 to 6.8.13 in /dev-ops/x-pack Bumps [elasticsearch](https://github.com/elastic/elasticsearch) from 6.2.2 to 6.8.13. - [Release notes](https://github.com/elastic/elasticsearch/releases) - [Commits](https://github.com/elastic/elasticsearch/compare/v6.2.2...v6.8.13) Signed-off-by: dependabot[bot] --- dev-ops/x-pack/pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/dev-ops/x-pack/pom.xml b/dev-ops/x-pack/pom.xml index 6f7a2f4e4..8ff53dae9 100644 --- a/dev-ops/x-pack/pom.xml +++ b/dev-ops/x-pack/pom.xml @@ -18,7 +18,7 @@ org.elasticsearch elasticsearch - 6.2.2 + 6.8.13 From f4e75281ad27386440420b4335699a165736683a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=9D=90=E7=AC=83=E5=A4=A7=E5=A4=A7?= Date: Mon, 29 Mar 2021 10:33:06 +0800 Subject: [PATCH 351/417] =?UTF-8?q?=E6=9B=B4=E6=96=B0junit4=E7=89=88?= =?UTF-8?q?=E6=9C=AC=E8=87=B34.13.1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pom.xml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pom.xml b/pom.xml index eabea9d68..d5202bae5 100644 --- a/pom.xml +++ b/pom.xml @@ -87,7 +87,7 @@ 1.2.3 - 4.12 + 4.13.1 5.0.0 ${junit4.version}.0 1.0.2 @@ -331,4 +331,4 @@ - \ No newline at end of file + From 33a6ff1d48b9d424b2c35a55535d0b676fc7b5eb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=9D=90=E7=AC=83=E5=A4=A7=E5=A4=A7?= Date: Mon, 29 Mar 2021 10:40:12 +0800 Subject: [PATCH 352/417] =?UTF-8?q?=E8=BF=81=E7=A7=BBjunit=205.7.1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pom.xml | 70 ++++++++++++++++++++++++--------------------------------- 1 file changed, 29 insertions(+), 41 deletions(-) diff --git a/pom.xml b/pom.xml index d5202bae5..bd6c45d90 100644 --- a/pom.xml +++ b/pom.xml @@ -87,16 +87,20 @@ 1.2.3 - 4.13.1 - 5.0.0 - ${junit4.version}.0 - 1.0.2 + 4.13.2 6.5 + + org.junit + junit-bom + 5.7.1 + pom + import + net.logstash.logback @@ -140,43 +144,27 @@ - - junit - junit - ${junit4.version} - test - - - org.junit.jupiter - junit-jupiter-api - ${junit.version} - test - - - org.junit.jupiter - junit-jupiter-engine - ${junit.version} - test - - - org.junit.platform - junit-platform-engine - ${junit.platform.version} - test - - - org.junit.platform - junit-platform-launcher - ${junit.platform.version} - test - - - org.junit.vintage - junit-vintage-engine - ${junit.vintage.version} - test - - + + org.junit.jupiter + junit-jupiter-api + test + + + junit + junit + ${junit.version} + test + + + org.junit.jupiter + junit-jupiter-engine + test + + + org.junit.vintage + junit-vintage-engine + test + From 8d289b31e44916af5037f645c7cb3b3ca052ea88 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 31 Mar 2021 19:20:41 +0000 Subject: [PATCH 353/417] build(deps): bump guava in /production-component/common-util Bumps [guava](https://github.com/google/guava) from 25.0-jre to 29.0-jre. - [Release notes](https://github.com/google/guava/releases) - [Commits](https://github.com/google/guava/commits) Signed-off-by: dependabot[bot] --- production-component/common-util/pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/production-component/common-util/pom.xml b/production-component/common-util/pom.xml index af08b8b7e..ede4a565b 100644 --- a/production-component/common-util/pom.xml +++ b/production-component/common-util/pom.xml @@ -24,7 +24,7 @@ 3.6 - 25.0-jre + 29.0-jre 1.11.2 5.0.4 From f75fdef337ffb90f3c542b2c213619dcd772842e Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 22 Apr 2021 16:16:23 +0000 Subject: [PATCH 354/417] build(deps): bump calcite-core from 1.17.0 to 1.26.0 in /big-data Bumps [calcite-core](https://github.com/apache/calcite) from 1.17.0 to 1.26.0. - [Release notes](https://github.com/apache/calcite/releases) - [Commits](https://github.com/apache/calcite/compare/calcite-1.17.0...calcite-1.26.0) Signed-off-by: dependabot[bot] --- big-data/pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/big-data/pom.xml b/big-data/pom.xml index d1737ef89..c0547d751 100644 --- a/big-data/pom.xml +++ b/big-data/pom.xml @@ -22,7 +22,7 @@ 3.2.2 2.8.1 2.8.1 - 1.17.0 + 1.26.0 From 21066a09c0395978af4be55c9f60c55f811683bf Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 26 Apr 2021 16:41:54 +0000 Subject: [PATCH 355/417] build(deps): bump commons-io in /production-component/common-util Bumps commons-io from 2.5 to 2.7. Signed-off-by: dependabot[bot] --- production-component/common-util/pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/production-component/common-util/pom.xml b/production-component/common-util/pom.xml index af08b8b7e..19d0824bd 100644 --- a/production-component/common-util/pom.xml +++ b/production-component/common-util/pom.xml @@ -19,7 +19,7 @@ - 2.5 + 2.7 1.4 3.6 From 41fe54c37308bbc18cd0f962e55d9d5d1b62d756 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Sat, 8 May 2021 16:55:47 +0000 Subject: [PATCH 356/417] build(deps): bump shiro-core from 1.4.2 to 1.6.0 in /framework/common Bumps [shiro-core](https://github.com/apache/shiro) from 1.4.2 to 1.6.0. - [Release notes](https://github.com/apache/shiro/releases) - [Changelog](https://github.com/apache/shiro/blob/main/RELEASE-NOTES) - [Commits](https://github.com/apache/shiro/compare/shiro-root-1.4.2...shiro-root-1.6.0) Signed-off-by: dependabot[bot] --- framework/common/pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/framework/common/pom.xml b/framework/common/pom.xml index fad532bb8..61a1552a5 100644 --- a/framework/common/pom.xml +++ b/framework/common/pom.xml @@ -27,7 +27,7 @@ 3.6 1.1 4.1.2 - 1.4.2 + 1.6.0 2.1.17 5.0.4 From d237bf13c2817f26490d3b65f320176d03c327c9 Mon Sep 17 00:00:00 2001 From: xpcoder Date: Mon, 24 May 2021 23:51:35 +0800 Subject: [PATCH 357/417] upgrade sb 2.4.3 & spring cloud 2020.2 --- framework/{akka => akka-java}/pom.xml | 0 .../akka/ActorHierarchyExperiments.java | 0 .../learn/framework/akka/package-info.java | 0 framework/pom.xml | 2 +- framework/spring/pom.xml | 14 +++++++------- .../spring-cloud/hystrix-dashboard/pom.xml | 2 ++ framework/spring/spring-cloud/pom.xml | 17 +++++++++++++++++ java-learn | 1 - pom.xml | 1 - production-component/common-util/pom.xml | 7 +------ 10 files changed, 28 insertions(+), 16 deletions(-) rename framework/{akka => akka-java}/pom.xml (100%) rename framework/{akka => akka-java}/src/main/java/org/laidu/learn/framework/akka/ActorHierarchyExperiments.java (100%) rename framework/{akka => akka-java}/src/main/java/org/laidu/learn/framework/akka/package-info.java (100%) delete mode 160000 java-learn diff --git a/framework/akka/pom.xml b/framework/akka-java/pom.xml similarity index 100% rename from framework/akka/pom.xml rename to framework/akka-java/pom.xml diff --git a/framework/akka/src/main/java/org/laidu/learn/framework/akka/ActorHierarchyExperiments.java b/framework/akka-java/src/main/java/org/laidu/learn/framework/akka/ActorHierarchyExperiments.java similarity index 100% rename from framework/akka/src/main/java/org/laidu/learn/framework/akka/ActorHierarchyExperiments.java rename to framework/akka-java/src/main/java/org/laidu/learn/framework/akka/ActorHierarchyExperiments.java diff --git a/framework/akka/src/main/java/org/laidu/learn/framework/akka/package-info.java b/framework/akka-java/src/main/java/org/laidu/learn/framework/akka/package-info.java similarity index 100% rename from framework/akka/src/main/java/org/laidu/learn/framework/akka/package-info.java rename to framework/akka-java/src/main/java/org/laidu/learn/framework/akka/package-info.java diff --git a/framework/pom.xml b/framework/pom.xml index bc4bf8b66..a3ff557a6 100644 --- a/framework/pom.xml +++ b/framework/pom.xml @@ -14,7 +14,7 @@ java 常用框架学习 - akka + akka-java spring webmagic common diff --git a/framework/spring/pom.xml b/framework/spring/pom.xml index 0b82e8138..b082800d4 100644 --- a/framework/spring/pom.xml +++ b/framework/spring/pom.xml @@ -35,8 +35,8 @@ 5.5.0 5.2.9.RELEASE - 2.3.4.RELEASE - Greenwich.SR2 + 2.4.3 + 2020.0.2 1.4.2 2.0.1.Final @@ -76,11 +76,11 @@ ${amqp-client.version} - - org.springframework.data - spring-data-hadoop - ${spring-data-hadoop.version} - + + + + + org.apache.shiro diff --git a/framework/spring/spring-cloud/hystrix-dashboard/pom.xml b/framework/spring/spring-cloud/hystrix-dashboard/pom.xml index bbaa72b04..b8e62e579 100644 --- a/framework/spring/spring-cloud/hystrix-dashboard/pom.xml +++ b/framework/spring/spring-cloud/hystrix-dashboard/pom.xml @@ -16,10 +16,12 @@ org.springframework.cloud spring-cloud-starter-netflix-hystrix + 2.2.8.RELEASE org.springframework.cloud spring-cloud-netflix-hystrix-dashboard + 2.2.8.RELEASE diff --git a/framework/spring/spring-cloud/pom.xml b/framework/spring/spring-cloud/pom.xml index 2dd48c388..87711b4af 100644 --- a/framework/spring/spring-cloud/pom.xml +++ b/framework/spring/spring-cloud/pom.xml @@ -28,6 +28,7 @@ UTF-8 UTF-8 2.0.3 + 2.2.8.RELEASE @@ -63,6 +64,22 @@ ${spring-boot-admin.version} + + org.springframework.cloud + spring-cloud-starter-netflix-hystrix + ${hystrix.version} + + + org.springframework.cloud + spring-cloud-netflix-hystrix-dashboard + ${hystrix.version} + + + org.springframework.cloud + spring-cloud-starter-netflix-zuul + ${hystrix.version} + + diff --git a/java-learn b/java-learn deleted file mode 160000 index a73a34768..000000000 --- a/java-learn +++ /dev/null @@ -1 +0,0 @@ -Subproject commit a73a34768351bac514d4c8f73ef3610beaeab78d diff --git a/pom.xml b/pom.xml index 589e0e1d9..577dfc928 100644 --- a/pom.xml +++ b/pom.xml @@ -51,7 +51,6 @@ dev-ops big-data code-practice - framework/akka diff --git a/production-component/common-util/pom.xml b/production-component/common-util/pom.xml index d2013cca3..487308bff 100644 --- a/production-component/common-util/pom.xml +++ b/production-component/common-util/pom.xml @@ -179,12 +179,7 @@ com.google.code.gson gson - RELEASE - - - com.fasterxml.jackson.core - jackson-annotations - ${jackson.version} + 2.8.6 From 44d51bfcc5736f4fadebce1594f44ccccd9ad0f1 Mon Sep 17 00:00:00 2001 From: xpcoder Date: Tue, 25 May 2021 00:53:01 +0800 Subject: [PATCH 358/417] =?UTF-8?q?=E5=A4=8D=E7=8E=B0aviator=20gc=E6=80=A7?= =?UTF-8?q?=E8=83=BD=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- framework/aviator/pom.xml | 30 +++++++ .../laidu/learn/framework/AviatorDemo.java | 89 +++++++++++++++++++ framework/pom.xml | 1 + pom.xml | 1 + 4 files changed, 121 insertions(+) create mode 100644 framework/aviator/pom.xml create mode 100644 framework/aviator/src/main/java/org/laidu/learn/framework/AviatorDemo.java diff --git a/framework/aviator/pom.xml b/framework/aviator/pom.xml new file mode 100644 index 000000000..0554bb275 --- /dev/null +++ b/framework/aviator/pom.xml @@ -0,0 +1,30 @@ + + + + java-learn + org.laidu.learn + 1.0-SNAPSHOT + ../../pom.xml + + 4.0.0 + + aviator + + + 8 + 8 + + + + + com.googlecode.aviator + aviator + 5.2.5 + + + + + + \ No newline at end of file diff --git a/framework/aviator/src/main/java/org/laidu/learn/framework/AviatorDemo.java b/framework/aviator/src/main/java/org/laidu/learn/framework/AviatorDemo.java new file mode 100644 index 000000000..3ea2f72db --- /dev/null +++ b/framework/aviator/src/main/java/org/laidu/learn/framework/AviatorDemo.java @@ -0,0 +1,89 @@ +package org.laidu.learn.framework; + +import java.util.HashMap; +import java.util.Map; +import java.util.concurrent.ExecutorService; +import java.util.concurrent.Executors; + +import com.googlecode.aviator.AviatorEvaluator; +import com.googlecode.aviator.AviatorEvaluatorInstance; +import com.googlecode.aviator.Expression; + +public class AviatorDemo { + + + private static final AviatorEvaluatorInstance instance; + + private static final Expression expression; + + static { + instance = AviatorEvaluator.newInstance(); + try { + instance.importFunctions(YxhService.class); + } catch (Exception e) { + e.printStackTrace(); + } + expression = instance.compile("a = YxhService.print(YxhService,demo.uid)", true); + } + + + public static void main(String[] args) throws Exception { + + YxhService yxhService = new YxhService(); + + ExecutorService executorService = Executors.newFixedThreadPool(16); + + for (int i = 0; i < 15; i++) { + executorService.submit(() -> { + for (int j = 0; j < 10000000_0000L; j++) { + Map env = new HashMap<>(); + YxhDemo demo = new YxhDemo(); + demo.setUid("123"); + env.put("demo", demo); + env.put("YxhService", yxhService); + String a = (String) expression.execute(env); +// System.out.println(a); + } + }); + } + + executorService.submit(() -> { + while (true) { + Thread.sleep(100); + System.gc(); + } + }); + + executorService.shutdown(); + + } + + + + public static class YxhDemo { + + public String getUid() { + return uid; + } + + public void setUid(String uid) { + this.uid = uid; + } + + private String uid; + + public String print(String str){ + return str; + } + } + + public static class YxhService { + + public String print(String str){ + return str; + } + } + + + +} diff --git a/framework/pom.xml b/framework/pom.xml index a3ff557a6..22a969962 100644 --- a/framework/pom.xml +++ b/framework/pom.xml @@ -42,6 +42,7 @@ 2.6.6 3.1.1 + 3.1.1 diff --git a/pom.xml b/pom.xml index 577dfc928..5f7a40aca 100644 --- a/pom.xml +++ b/pom.xml @@ -51,6 +51,7 @@ dev-ops big-data code-practice + framework/aviator From f343f3928a8174d681b6639b6eb6d10ed3af3c16 Mon Sep 17 00:00:00 2001 From: xpcoder Date: Tue, 1 Jun 2021 22:45:59 +0800 Subject: [PATCH 359/417] sync --- framework/{akka-java => akka}/pom.xml | 0 .../framework/akka/ActorHierarchyExperiments.java | 0 .../org/laidu/learn/framework/akka/package-info.java | 0 .../java/org/laidu/learn/framework/AviatorDemo.java | 12 ++++++------ .../commom/util/encryption/BasicEncryptionUtil.java | 9 +++++---- 5 files changed, 11 insertions(+), 10 deletions(-) rename framework/{akka-java => akka}/pom.xml (100%) rename framework/{akka-java => akka}/src/main/java/org/laidu/learn/framework/akka/ActorHierarchyExperiments.java (100%) rename framework/{akka-java => akka}/src/main/java/org/laidu/learn/framework/akka/package-info.java (100%) diff --git a/framework/akka-java/pom.xml b/framework/akka/pom.xml similarity index 100% rename from framework/akka-java/pom.xml rename to framework/akka/pom.xml diff --git a/framework/akka-java/src/main/java/org/laidu/learn/framework/akka/ActorHierarchyExperiments.java b/framework/akka/src/main/java/org/laidu/learn/framework/akka/ActorHierarchyExperiments.java similarity index 100% rename from framework/akka-java/src/main/java/org/laidu/learn/framework/akka/ActorHierarchyExperiments.java rename to framework/akka/src/main/java/org/laidu/learn/framework/akka/ActorHierarchyExperiments.java diff --git a/framework/akka-java/src/main/java/org/laidu/learn/framework/akka/package-info.java b/framework/akka/src/main/java/org/laidu/learn/framework/akka/package-info.java similarity index 100% rename from framework/akka-java/src/main/java/org/laidu/learn/framework/akka/package-info.java rename to framework/akka/src/main/java/org/laidu/learn/framework/akka/package-info.java diff --git a/framework/aviator/src/main/java/org/laidu/learn/framework/AviatorDemo.java b/framework/aviator/src/main/java/org/laidu/learn/framework/AviatorDemo.java index 3ea2f72db..8bab3d709 100644 --- a/framework/aviator/src/main/java/org/laidu/learn/framework/AviatorDemo.java +++ b/framework/aviator/src/main/java/org/laidu/learn/framework/AviatorDemo.java @@ -47,12 +47,12 @@ public static void main(String[] args) throws Exception { }); } - executorService.submit(() -> { - while (true) { - Thread.sleep(100); - System.gc(); - } - }); +// executorService.submit(() -> { +// while (true) { +// Thread.sleep(100); +// System.gc(); +// } +// }); executorService.shutdown(); diff --git a/production-component/common-util/src/main/java/org/laidu/commom/util/encryption/BasicEncryptionUtil.java b/production-component/common-util/src/main/java/org/laidu/commom/util/encryption/BasicEncryptionUtil.java index 149d0502a..afbe3a360 100644 --- a/production-component/common-util/src/main/java/org/laidu/commom/util/encryption/BasicEncryptionUtil.java +++ b/production-component/common-util/src/main/java/org/laidu/commom/util/encryption/BasicEncryptionUtil.java @@ -12,7 +12,9 @@ /** * java basic encryption util *

                    - * Created by tiancai.zang on 2017-12-05 18:33. + * + * @author tiancai.zang + * @date 2017-12-05 18:33 */ @Slf4j public final class BasicEncryptionUtil { @@ -34,8 +36,7 @@ public static BasicEncryptionUtil getInstance() { * Provides the lazy-loaded Singleton instance. */ private static class HelperHolder { - private static final BasicEncryptionUtil INSTANCE = - new BasicEncryptionUtil(); + private static final BasicEncryptionUtil INSTANCE = new BasicEncryptionUtil(); } /** @@ -48,7 +49,7 @@ private static class HelperHolder { * @return * @throws Exception */ - public byte[] encrypt(String algorithm,String algorithmKey, byte[] key, byte[] ivp, byte[] data){ + public byte[] encrypt(String algorithm,String algorithmKey, byte[] key, byte[] ivp, byte[] data){ SecretKey secretKey = new SecretKeySpec(key, algorithm); byte[] encrypt = null; From 783fb7e1306a094ca5d1511a5b07b48be9c93bcf Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Fri, 4 Jun 2021 00:29:50 +0000 Subject: [PATCH 360/417] build(deps): bump httpclient in /production-component/common-util Bumps httpclient from 4.5.3 to 4.5.13. --- updated-dependencies: - dependency-name: org.apache.httpcomponents:httpclient dependency-type: direct:production ... Signed-off-by: dependabot[bot] --- production-component/common-util/pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/production-component/common-util/pom.xml b/production-component/common-util/pom.xml index 7a18df7ee..8da896a36 100644 --- a/production-component/common-util/pom.xml +++ b/production-component/common-util/pom.xml @@ -35,7 +35,7 @@ 2.1.3 4.4.8 - 4.5.3 + 4.5.13 1.1.8 1.0.0 From 1033054915b192eae06f3f7913ee48d7623ba48c Mon Sep 17 00:00:00 2001 From: xpcoder Date: Sun, 13 Jun 2021 13:07:32 +0800 Subject: [PATCH 361/417] fix akka build error --- framework/pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/framework/pom.xml b/framework/pom.xml index 1659c609e..92a3f3019 100644 --- a/framework/pom.xml +++ b/framework/pom.xml @@ -14,7 +14,7 @@ java 常用框架学习 - akka-java + akka spring webmagic common From 0b49c1d40db1205902612a626d0e7fe7dbd7216f Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 23 Jun 2021 21:03:23 +0000 Subject: [PATCH 362/417] build(deps): bump jetty-server in /language-feature Bumps [jetty-server](https://github.com/eclipse/jetty.project) from 9.4.38.v20210224 to 9.4.41.v20210516. - [Release notes](https://github.com/eclipse/jetty.project/releases) - [Commits](https://github.com/eclipse/jetty.project/compare/jetty-9.4.38.v20210224...jetty-9.4.41.v20210516) --- updated-dependencies: - dependency-name: org.eclipse.jetty:jetty-server dependency-type: direct:production ... Signed-off-by: dependabot[bot] --- language-feature/pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/language-feature/pom.xml b/language-feature/pom.xml index 6dcb84062..6889aa33b 100644 --- a/language-feature/pom.xml +++ b/language-feature/pom.xml @@ -30,7 +30,7 @@ org.eclipse.jetty jetty-server - 9.4.38.v20210224 + 9.4.41.v20210516 From 0b0f41876283b1f099d92dd77fed952ca84635a2 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Fri, 2 Jul 2021 18:40:34 +0000 Subject: [PATCH 363/417] build(deps): bump elasticsearch from 6.8.13 to 6.8.15 in /dev-ops/x-pack Bumps [elasticsearch](https://github.com/elastic/elasticsearch) from 6.8.13 to 6.8.15. - [Release notes](https://github.com/elastic/elasticsearch/releases) - [Commits](https://github.com/elastic/elasticsearch/compare/v6.8.13...v6.8.15) --- updated-dependencies: - dependency-name: org.elasticsearch:elasticsearch dependency-type: direct:production ... Signed-off-by: dependabot[bot] --- dev-ops/x-pack/pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/dev-ops/x-pack/pom.xml b/dev-ops/x-pack/pom.xml index 8ff53dae9..2a93b89ff 100644 --- a/dev-ops/x-pack/pom.xml +++ b/dev-ops/x-pack/pom.xml @@ -18,7 +18,7 @@ org.elasticsearch elasticsearch - 6.8.13 + 6.8.15 From c521009ea618fb1b1fb7e1396e63f5af4fe23975 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 9 Aug 2021 20:48:12 +0000 Subject: [PATCH 364/417] build(deps): bump elasticsearch from 6.8.15 to 6.8.17 in /dev-ops/x-pack Bumps [elasticsearch](https://github.com/elastic/elasticsearch) from 6.8.15 to 6.8.17. - [Release notes](https://github.com/elastic/elasticsearch/releases) - [Commits](https://github.com/elastic/elasticsearch/compare/v6.8.15...v6.8.17) --- updated-dependencies: - dependency-name: org.elasticsearch:elasticsearch dependency-type: direct:production ... Signed-off-by: dependabot[bot] --- dev-ops/x-pack/pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/dev-ops/x-pack/pom.xml b/dev-ops/x-pack/pom.xml index 2a93b89ff..955a4fe54 100644 --- a/dev-ops/x-pack/pom.xml +++ b/dev-ops/x-pack/pom.xml @@ -18,7 +18,7 @@ org.elasticsearch elasticsearch - 6.8.15 + 6.8.17 From 301b0b52096681ba4d9bbcbc0e24f979a27245ee Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Fri, 13 Aug 2021 15:37:59 +0000 Subject: [PATCH 365/417] build(deps): bump bcprov-jdk15on from 1.60 to 1.67 in /language-advance Bumps [bcprov-jdk15on](https://github.com/bcgit/bc-java) from 1.60 to 1.67. - [Release notes](https://github.com/bcgit/bc-java/releases) - [Changelog](https://github.com/bcgit/bc-java/blob/master/docs/releasenotes.html) - [Commits](https://github.com/bcgit/bc-java/commits) --- updated-dependencies: - dependency-name: org.bouncycastle:bcprov-jdk15on dependency-type: direct:production ... Signed-off-by: dependabot[bot] --- language-advance/pom.xml | 2 +- language-advance/security/pom.xml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/language-advance/pom.xml b/language-advance/pom.xml index 22d3be06c..832250db7 100644 --- a/language-advance/pom.xml +++ b/language-advance/pom.xml @@ -29,7 +29,7 @@ 1.9.5 3.3.0 - 1.60 + 1.67 diff --git a/language-advance/security/pom.xml b/language-advance/security/pom.xml index 229d15b35..f818965aa 100644 --- a/language-advance/security/pom.xml +++ b/language-advance/security/pom.xml @@ -15,7 +15,7 @@ org.bouncycastle bcprov-jdk15on - 1.60 + 1.67 From 3ed11d81632cda65ca980d4b128a561758026c2b Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 23 Aug 2021 20:34:36 +0000 Subject: [PATCH 366/417] build(deps): bump jsoup in /production-component/common-util Bumps [jsoup](https://github.com/jhy/jsoup) from 1.11.2 to 1.14.2. - [Release notes](https://github.com/jhy/jsoup/releases) - [Changelog](https://github.com/jhy/jsoup/blob/master/CHANGES) - [Commits](https://github.com/jhy/jsoup/compare/jsoup-1.11.2...jsoup-1.14.2) --- updated-dependencies: - dependency-name: org.jsoup:jsoup dependency-type: direct:production ... Signed-off-by: dependabot[bot] --- production-component/common-util/pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/production-component/common-util/pom.xml b/production-component/common-util/pom.xml index 8da896a36..9658bbe6d 100644 --- a/production-component/common-util/pom.xml +++ b/production-component/common-util/pom.xml @@ -25,7 +25,7 @@ 3.6 29.0-jre - 1.11.2 + 1.14.2 5.0.4 From 9c8f08ba29131c9727ee29f5b028d890b45e2ff8 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 20 Sep 2021 20:32:03 +0000 Subject: [PATCH 367/417] build(deps): bump shiro-core from 1.6.0 to 1.8.0 in /framework/common Bumps [shiro-core](https://github.com/apache/shiro) from 1.6.0 to 1.8.0. - [Release notes](https://github.com/apache/shiro/releases) - [Changelog](https://github.com/apache/shiro/blob/main/RELEASE-NOTES) - [Commits](https://github.com/apache/shiro/compare/shiro-root-1.6.0...shiro-root-1.8.0) --- updated-dependencies: - dependency-name: org.apache.shiro:shiro-core dependency-type: direct:production ... Signed-off-by: dependabot[bot] --- framework/common/pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/framework/common/pom.xml b/framework/common/pom.xml index 61a1552a5..f82097756 100644 --- a/framework/common/pom.xml +++ b/framework/common/pom.xml @@ -27,7 +27,7 @@ 3.6 1.1 4.1.2 - 1.6.0 + 1.8.0 2.1.17 5.0.4 From ba07834558762ac11f870ee31c3ee71e8681e565 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 12 Jan 2022 23:28:51 +0000 Subject: [PATCH 368/417] build(deps): bump spring-core from 5.3.3 to 5.3.14 in /convenient-util Bumps [spring-core](https://github.com/spring-projects/spring-framework) from 5.3.3 to 5.3.14. - [Release notes](https://github.com/spring-projects/spring-framework/releases) - [Commits](https://github.com/spring-projects/spring-framework/compare/v5.3.3...v5.3.14) --- updated-dependencies: - dependency-name: org.springframework:spring-core dependency-type: direct:production ... Signed-off-by: dependabot[bot] --- convenient-util/pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/convenient-util/pom.xml b/convenient-util/pom.xml index 48e20bcc2..747987218 100644 --- a/convenient-util/pom.xml +++ b/convenient-util/pom.xml @@ -24,7 +24,7 @@ 3.4.0 1.1.0 - 5.3.3 + 5.3.14 From 2e3433ba2600e95a8ca58ecdd024167d30428356 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 27 Jan 2022 15:36:41 +0000 Subject: [PATCH 369/417] build(deps): bump undertow-core in /framework/web/undertow Bumps [undertow-core](https://github.com/undertow-io/undertow) from 2.0.20.Final to 2.1.6.Final. - [Release notes](https://github.com/undertow-io/undertow/releases) - [Commits](https://github.com/undertow-io/undertow/compare/2.0.20.Final...2.1.6.Final) --- updated-dependencies: - dependency-name: io.undertow:undertow-core dependency-type: direct:production ... Signed-off-by: dependabot[bot] --- framework/web/undertow/pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/framework/web/undertow/pom.xml b/framework/web/undertow/pom.xml index f6ebb394b..8368e5e95 100644 --- a/framework/web/undertow/pom.xml +++ b/framework/web/undertow/pom.xml @@ -12,7 +12,7 @@ undertow - 2.0.20.Final + 2.1.6.Final From 8a2e14db18a50bfcd089218eb542d79fa13b2ebf Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 27 Jan 2022 15:36:43 +0000 Subject: [PATCH 370/417] build(deps): bump h2 in /framework/spring/spring-data/spring-mybatis Bumps [h2](https://github.com/h2database/h2database) from 1.4.197 to 2.1.210. - [Release notes](https://github.com/h2database/h2database/releases) - [Commits](https://github.com/h2database/h2database/compare/version-1.4.197...version-2.1.210) --- updated-dependencies: - dependency-name: com.h2database:h2 dependency-type: direct:production ... Signed-off-by: dependabot[bot] --- framework/spring/spring-data/spring-mybatis/pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/framework/spring/spring-data/spring-mybatis/pom.xml b/framework/spring/spring-data/spring-mybatis/pom.xml index a03c9cfc1..bb6dea107 100644 --- a/framework/spring/spring-data/spring-mybatis/pom.xml +++ b/framework/spring/spring-data/spring-mybatis/pom.xml @@ -105,7 +105,7 @@ com.h2database h2 - 1.4.197 + 2.1.210 From 0e06f62137d9b9f37291efa7689e9ffde4a4ba0a Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 27 Jan 2022 15:41:49 +0000 Subject: [PATCH 371/417] build(deps): bump tomcat-embed-core in /framework/web/tomcat Bumps tomcat-embed-core from 9.0.16 to 9.0.43. --- updated-dependencies: - dependency-name: org.apache.tomcat.embed:tomcat-embed-core dependency-type: direct:production ... Signed-off-by: dependabot[bot] --- framework/web/tomcat/pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/framework/web/tomcat/pom.xml b/framework/web/tomcat/pom.xml index 733d9f067..604dce941 100644 --- a/framework/web/tomcat/pom.xml +++ b/framework/web/tomcat/pom.xml @@ -15,7 +15,7 @@ UTF-8 1.8 1.8 - 9.0.16 + 9.0.43 From d3f21fc76597f2ca7655fa992ddc2ada978a1f4b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=9D=90=E7=AC=83=E5=A4=A7=E5=A4=A7?= Date: Tue, 1 Feb 2022 22:32:04 +0800 Subject: [PATCH 372/417] Delete LICENSE --- LICENSE | 674 -------------------------------------------------------- 1 file changed, 674 deletions(-) delete mode 100644 LICENSE diff --git a/LICENSE b/LICENSE deleted file mode 100644 index ba250b264..000000000 --- a/LICENSE +++ /dev/null @@ -1,674 +0,0 @@ - GNU GENERAL PUBLIC LICENSE - Version 3, 29 June 2007 - - Copyright (C) 2007 Free Software Foundation, Inc. - Everyone is permitted to copy and distribute verbatim copies - of this license document, but changing it is not allowed. - - Preamble - - The GNU General Public License is a free, copyleft license for -software and other kinds of works. - - The licenses for most software and other practical works are designed -to take away your freedom to share and change the works. By contrast, -the GNU General Public License is intended to guarantee your freedom to -share and change all versions of a program--to make sure it remains free -software for all its users. We, the Free Software Foundation, use the -GNU General Public License for most of our software; it applies also to -any other work released this way by its authors. You can apply it to -your programs, too. - - When we speak of free software, we are referring to freedom, not -price. Our General Public Licenses are designed to make sure that you -have the freedom to distribute copies of free software (and charge for -them if you wish), that you receive source code or can get it if you -want it, that you can change the software or use pieces of it in new -free programs, and that you know you can do these things. - - To protect your rights, we need to prevent others from denying you -these rights or asking you to surrender the rights. Therefore, you have -certain responsibilities if you distribute copies of the software, or if -you modify it: responsibilities to respect the freedom of others. - - For example, if you distribute copies of such a program, whether -gratis or for a fee, you must pass on to the recipients the same -freedoms that you received. You must make sure that they, too, receive -or can get the source code. And you must show them these terms so they -know their rights. - - Developers that use the GNU GPL protect your rights with two steps: -(1) assert copyright on the software, and (2) offer you this License -giving you legal permission to copy, distribute and/or modify it. - - For the developers' and authors' protection, the GPL clearly explains -that there is no warranty for this free software. For both users' and -authors' sake, the GPL requires that modified versions be marked as -changed, so that their problems will not be attributed erroneously to -authors of previous versions. - - Some devices are designed to deny users access to install or run -modified versions of the software inside them, although the manufacturer -can do so. This is fundamentally incompatible with the aim of -protecting users' freedom to change the software. The systematic -pattern of such abuse occurs in the area of products for individuals to -use, which is precisely where it is most unacceptable. Therefore, we -have designed this version of the GPL to prohibit the practice for those -products. If such problems arise substantially in other domains, we -stand ready to extend this provision to those domains in future versions -of the GPL, as needed to protect the freedom of users. - - Finally, every program is threatened constantly by software patents. -States should not allow patents to restrict development and use of -software on general-purpose computers, but in those that do, we wish to -avoid the special danger that patents applied to a free program could -make it effectively proprietary. To prevent this, the GPL assures that -patents cannot be used to render the program non-free. - - The precise terms and conditions for copying, distribution and -modification follow. - - TERMS AND CONDITIONS - - 0. Definitions. - - "This License" refers to version 3 of the GNU General Public License. - - "Copyright" also means copyright-like laws that apply to other kinds of -works, such as semiconductor masks. - - "The Program" refers to any copyrightable work licensed under this -License. Each licensee is addressed as "you". "Licensees" and -"recipients" may be individuals or organizations. - - To "modify" a work means to copy from or adapt all or part of the work -in a fashion requiring copyright permission, other than the making of an -exact copy. The resulting work is called a "modified version" of the -earlier work or a work "based on" the earlier work. - - A "covered work" means either the unmodified Program or a work based -on the Program. - - To "propagate" a work means to do anything with it that, without -permission, would make you directly or secondarily liable for -infringement under applicable copyright law, except executing it on a -computer or modifying a private copy. Propagation includes copying, -distribution (with or without modification), making available to the -public, and in some countries other activities as well. - - To "convey" a work means any kind of propagation that enables other -parties to make or receive copies. Mere interaction with a user through -a computer network, with no transfer of a copy, is not conveying. - - An interactive user interface displays "Appropriate Legal Notices" -to the extent that it includes a convenient and prominently visible -feature that (1) displays an appropriate copyright notice, and (2) -tells the user that there is no warranty for the work (except to the -extent that warranties are provided), that licensees may convey the -work under this License, and how to view a copy of this License. If -the interface presents a list of user commands or options, such as a -menu, a prominent item in the list meets this criterion. - - 1. Source Code. - - The "source code" for a work means the preferred form of the work -for making modifications to it. "Object code" means any non-source -form of a work. - - A "Standard Interface" means an interface that either is an official -standard defined by a recognized standards body, or, in the case of -interfaces specified for a particular programming language, one that -is widely used among developers working in that language. - - The "System Libraries" of an executable work include anything, other -than the work as a whole, that (a) is included in the normal form of -packaging a Major Component, but which is not part of that Major -Component, and (b) serves only to enable use of the work with that -Major Component, or to implement a Standard Interface for which an -implementation is available to the public in source code form. A -"Major Component", in this context, means a major essential component -(kernel, window system, and so on) of the specific operating system -(if any) on which the executable work runs, or a compiler used to -produce the work, or an object code interpreter used to run it. - - The "Corresponding Source" for a work in object code form means all -the source code needed to generate, install, and (for an executable -work) run the object code and to modify the work, including scripts to -control those activities. However, it does not include the work's -System Libraries, or general-purpose tools or generally available free -programs which are used unmodified in performing those activities but -which are not part of the work. For example, Corresponding Source -includes interface definition files associated with source files for -the work, and the source code for shared libraries and dynamically -linked subprograms that the work is specifically designed to require, -such as by intimate data communication or control flow between those -subprograms and other parts of the work. - - The Corresponding Source need not include anything that users -can regenerate automatically from other parts of the Corresponding -Source. - - The Corresponding Source for a work in source code form is that -same work. - - 2. Basic Permissions. - - All rights granted under this License are granted for the term of -copyright on the Program, and are irrevocable provided the stated -conditions are met. This License explicitly affirms your unlimited -permission to run the unmodified Program. The output from running a -covered work is covered by this License only if the output, given its -content, constitutes a covered work. This License acknowledges your -rights of fair use or other equivalent, as provided by copyright law. - - You may make, run and propagate covered works that you do not -convey, without conditions so long as your license otherwise remains -in force. You may convey covered works to others for the sole purpose -of having them make modifications exclusively for you, or provide you -with facilities for running those works, provided that you comply with -the terms of this License in conveying all material for which you do -not control copyright. Those thus making or running the covered works -for you must do so exclusively on your behalf, under your direction -and control, on terms that prohibit them from making any copies of -your copyrighted material outside their relationship with you. - - Conveying under any other circumstances is permitted solely under -the conditions stated below. Sublicensing is not allowed; section 10 -makes it unnecessary. - - 3. Protecting Users' Legal Rights From Anti-Circumvention Law. - - No covered work shall be deemed part of an effective technological -measure under any applicable law fulfilling obligations under article -11 of the WIPO copyright treaty adopted on 20 December 1996, or -similar laws prohibiting or restricting circumvention of such -measures. - - When you convey a covered work, you waive any legal power to forbid -circumvention of technological measures to the extent such circumvention -is effected by exercising rights under this License with respect to -the covered work, and you disclaim any intention to limit operation or -modification of the work as a means of enforcing, against the work's -users, your or third parties' legal rights to forbid circumvention of -technological measures. - - 4. Conveying Verbatim Copies. - - You may convey verbatim copies of the Program's source code as you -receive it, in any medium, provided that you conspicuously and -appropriately publish on each copy an appropriate copyright notice; -keep intact all notices stating that this License and any -non-permissive terms added in accord with section 7 apply to the code; -keep intact all notices of the absence of any warranty; and give all -recipients a copy of this License along with the Program. - - You may charge any price or no price for each copy that you convey, -and you may offer support or warranty protection for a fee. - - 5. Conveying Modified Source Versions. - - You may convey a work based on the Program, or the modifications to -produce it from the Program, in the form of source code under the -terms of section 4, provided that you also meet all of these conditions: - - a) The work must carry prominent notices stating that you modified - it, and giving a relevant date. - - b) The work must carry prominent notices stating that it is - released under this License and any conditions added under section - 7. This requirement modifies the requirement in section 4 to - "keep intact all notices". - - c) You must license the entire work, as a whole, under this - License to anyone who comes into possession of a copy. This - License will therefore apply, along with any applicable section 7 - additional terms, to the whole of the work, and all its parts, - regardless of how they are packaged. This License gives no - permission to license the work in any other way, but it does not - invalidate such permission if you have separately received it. - - d) If the work has interactive user interfaces, each must display - Appropriate Legal Notices; however, if the Program has interactive - interfaces that do not display Appropriate Legal Notices, your - work need not make them do so. - - A compilation of a covered work with other separate and independent -works, which are not by their nature extensions of the covered work, -and which are not combined with it such as to form a larger program, -in or on a volume of a storage or distribution medium, is called an -"aggregate" if the compilation and its resulting copyright are not -used to limit the access or legal rights of the compilation's users -beyond what the individual works permit. Inclusion of a covered work -in an aggregate does not cause this License to apply to the other -parts of the aggregate. - - 6. Conveying Non-Source Forms. - - You may convey a covered work in object code form under the terms -of sections 4 and 5, provided that you also convey the -machine-readable Corresponding Source under the terms of this License, -in one of these ways: - - a) Convey the object code in, or embodied in, a physical product - (including a physical distribution medium), accompanied by the - Corresponding Source fixed on a durable physical medium - customarily used for software interchange. - - b) Convey the object code in, or embodied in, a physical product - (including a physical distribution medium), accompanied by a - written offer, valid for at least three years and valid for as - long as you offer spare parts or customer support for that product - model, to give anyone who possesses the object code either (1) a - copy of the Corresponding Source for all the software in the - product that is covered by this License, on a durable physical - medium customarily used for software interchange, for a price no - more than your reasonable cost of physically performing this - conveying of source, or (2) access to copy the - Corresponding Source from a network server at no charge. - - c) Convey individual copies of the object code with a copy of the - written offer to provide the Corresponding Source. This - alternative is allowed only occasionally and noncommercially, and - only if you received the object code with such an offer, in accord - with subsection 6b. - - d) Convey the object code by offering access from a designated - place (gratis or for a charge), and offer equivalent access to the - Corresponding Source in the same way through the same place at no - further charge. You need not require recipients to copy the - Corresponding Source along with the object code. If the place to - copy the object code is a network server, the Corresponding Source - may be on a different server (operated by you or a third party) - that supports equivalent copying facilities, provided you maintain - clear directions next to the object code saying where to find the - Corresponding Source. Regardless of what server hosts the - Corresponding Source, you remain obligated to ensure that it is - available for as long as needed to satisfy these requirements. - - e) Convey the object code using peer-to-peer transmission, provided - you inform other peers where the object code and Corresponding - Source of the work are being offered to the general public at no - charge under subsection 6d. - - A separable portion of the object code, whose source code is excluded -from the Corresponding Source as a System Library, need not be -included in conveying the object code work. - - A "User Product" is either (1) a "consumer product", which means any -tangible personal property which is normally used for personal, family, -or household purposes, or (2) anything designed or sold for incorporation -into a dwelling. In determining whether a product is a consumer product, -doubtful cases shall be resolved in favor of coverage. For a particular -product received by a particular user, "normally used" refers to a -typical or common use of that class of product, regardless of the status -of the particular user or of the way in which the particular user -actually uses, or expects or is expected to use, the product. A product -is a consumer product regardless of whether the product has substantial -commercial, industrial or non-consumer uses, unless such uses represent -the only significant mode of use of the product. - - "Installation Information" for a User Product means any methods, -procedures, authorization keys, or other information required to install -and execute modified versions of a covered work in that User Product from -a modified version of its Corresponding Source. The information must -suffice to ensure that the continued functioning of the modified object -code is in no case prevented or interfered with solely because -modification has been made. - - If you convey an object code work under this section in, or with, or -specifically for use in, a User Product, and the conveying occurs as -part of a transaction in which the right of possession and use of the -User Product is transferred to the recipient in perpetuity or for a -fixed term (regardless of how the transaction is characterized), the -Corresponding Source conveyed under this section must be accompanied -by the Installation Information. But this requirement does not apply -if neither you nor any third party retains the ability to install -modified object code on the User Product (for example, the work has -been installed in ROM). - - The requirement to provide Installation Information does not include a -requirement to continue to provide support service, warranty, or updates -for a work that has been modified or installed by the recipient, or for -the User Product in which it has been modified or installed. Access to a -network may be denied when the modification itself materially and -adversely affects the operation of the network or violates the rules and -protocols for communication across the network. - - Corresponding Source conveyed, and Installation Information provided, -in accord with this section must be in a format that is publicly -documented (and with an implementation available to the public in -source code form), and must require no special password or key for -unpacking, reading or copying. - - 7. Additional Terms. - - "Additional permissions" are terms that supplement the terms of this -License by making exceptions from one or more of its conditions. -Additional permissions that are applicable to the entire Program shall -be treated as though they were included in this License, to the extent -that they are valid under applicable law. If additional permissions -apply only to part of the Program, that part may be used separately -under those permissions, but the entire Program remains governed by -this License without regard to the additional permissions. - - When you convey a copy of a covered work, you may at your option -remove any additional permissions from that copy, or from any part of -it. (Additional permissions may be written to require their own -removal in certain cases when you modify the work.) You may place -additional permissions on material, added by you to a covered work, -for which you have or can give appropriate copyright permission. - - Notwithstanding any other provision of this License, for material you -add to a covered work, you may (if authorized by the copyright holders of -that material) supplement the terms of this License with terms: - - a) Disclaiming warranty or limiting liability differently from the - terms of sections 15 and 16 of this License; or - - b) Requiring preservation of specified reasonable legal notices or - author attributions in that material or in the Appropriate Legal - Notices displayed by works containing it; or - - c) Prohibiting misrepresentation of the origin of that material, or - requiring that modified versions of such material be marked in - reasonable ways as different from the original version; or - - d) Limiting the use for publicity purposes of names of licensors or - authors of the material; or - - e) Declining to grant rights under trademark law for use of some - trade names, trademarks, or service marks; or - - f) Requiring indemnification of licensors and authors of that - material by anyone who conveys the material (or modified versions of - it) with contractual assumptions of liability to the recipient, for - any liability that these contractual assumptions directly impose on - those licensors and authors. - - All other non-permissive additional terms are considered "further -restrictions" within the meaning of section 10. If the Program as you -received it, or any part of it, contains a notice stating that it is -governed by this License along with a term that is a further -restriction, you may remove that term. If a license document contains -a further restriction but permits relicensing or conveying under this -License, you may add to a covered work material governed by the terms -of that license document, provided that the further restriction does -not survive such relicensing or conveying. - - If you add terms to a covered work in accord with this section, you -must place, in the relevant source files, a statement of the -additional terms that apply to those files, or a notice indicating -where to find the applicable terms. - - Additional terms, permissive or non-permissive, may be stated in the -form of a separately written license, or stated as exceptions; -the above requirements apply either way. - - 8. Termination. - - You may not propagate or modify a covered work except as expressly -provided under this License. Any attempt otherwise to propagate or -modify it is void, and will automatically terminate your rights under -this License (including any patent licenses granted under the third -paragraph of section 11). - - However, if you cease all violation of this License, then your -license from a particular copyright holder is reinstated (a) -provisionally, unless and until the copyright holder explicitly and -finally terminates your license, and (b) permanently, if the copyright -holder fails to notify you of the violation by some reasonable means -prior to 60 days after the cessation. - - Moreover, your license from a particular copyright holder is -reinstated permanently if the copyright holder notifies you of the -violation by some reasonable means, this is the first time you have -received notice of violation of this License (for any work) from that -copyright holder, and you cure the violation prior to 30 days after -your receipt of the notice. - - Termination of your rights under this section does not terminate the -licenses of parties who have received copies or rights from you under -this License. If your rights have been terminated and not permanently -reinstated, you do not qualify to receive new licenses for the same -material under section 10. - - 9. Acceptance Not Required for Having Copies. - - You are not required to accept this License in order to receive or -run a copy of the Program. Ancillary propagation of a covered work -occurring solely as a consequence of using peer-to-peer transmission -to receive a copy likewise does not require acceptance. However, -nothing other than this License grants you permission to propagate or -modify any covered work. These actions infringe copyright if you do -not accept this License. Therefore, by modifying or propagating a -covered work, you indicate your acceptance of this License to do so. - - 10. Automatic Licensing of Downstream Recipients. - - Each time you convey a covered work, the recipient automatically -receives a license from the original licensors, to run, modify and -propagate that work, subject to this License. You are not responsible -for enforcing compliance by third parties with this License. - - An "entity transaction" is a transaction transferring control of an -organization, or substantially all assets of one, or subdividing an -organization, or merging organizations. If propagation of a covered -work tasks from an entity transaction, each party to that -transaction who receives a copy of the work also receives whatever -licenses to the work the party's predecessor in interest had or could -give under the previous paragraph, plus a right to possession of the -Corresponding Source of the work from the predecessor in interest, if -the predecessor has it or can get it with reasonable efforts. - - You may not impose any further restrictions on the exercise of the -rights granted or affirmed under this License. For example, you may -not impose a license fee, royalty, or other charge for exercise of -rights granted under this License, and you may not initiate litigation -(including a cross-claim or counterclaim in a lawsuit) alleging that -any patent claim is infringed by making, using, selling, offering for -sale, or importing the Program or any portion of it. - - 11. Patents. - - A "contributor" is a copyright holder who authorizes use under this -License of the Program or a work on which the Program is based. The -work thus licensed is called the contributor's "contributor version". - - A contributor's "essential patent claims" are all patent claims -owned or controlled by the contributor, whether already acquired or -hereafter acquired, that would be infringed by some manner, permitted -by this License, of making, using, or selling its contributor version, -but do not include claims that would be infringed only as a -consequence of further modification of the contributor version. For -purposes of this definition, "control" includes the right to grant -patent sublicenses in a manner consistent with the requirements of -this License. - - Each contributor grants you a non-exclusive, worldwide, royalty-free -patent license under the contributor's essential patent claims, to -make, use, sell, offer for sale, import and otherwise run, modify and -propagate the contents of its contributor version. - - In the following three paragraphs, a "patent license" is any express -agreement or commitment, however denominated, not to enforce a patent -(such as an express permission to practice a patent or covenant not to -sue for patent infringement). To "grant" such a patent license to a -party means to make such an agreement or commitment not to enforce a -patent against the party. - - If you convey a covered work, knowingly relying on a patent license, -and the Corresponding Source of the work is not available for anyone -to copy, free of charge and under the terms of this License, through a -publicly available network server or other readily accessible means, -then you must either (1) cause the Corresponding Source to be so -available, or (2) arrange to deprive yourself of the benefit of the -patent license for this particular work, or (3) arrange, in a manner -consistent with the requirements of this License, to extend the patent -license to downstream recipients. "Knowingly relying" means you have -actual knowledge that, but for the patent license, your conveying the -covered work in a country, or your recipient's use of the covered work -in a country, would infringe one or more identifiable patents in that -country that you have reason to believe are valid. - - If, pursuant to or in connection with a single transaction or -arrangement, you convey, or propagate by procuring conveyance of, a -covered work, and grant a patent license to some of the parties -receiving the covered work authorizing them to use, propagate, modify -or convey a specific copy of the covered work, then the patent license -you grant is automatically extended to all recipients of the covered -work and works based on it. - - A patent license is "discriminatory" if it does not include within -the scope of its coverage, prohibits the exercise of, or is -conditioned on the non-exercise of one or more of the rights that are -specifically granted under this License. You may not convey a covered -work if you are a party to an arrangement with a third party that is -in the business of distributing software, under which you make payment -to the third party based on the extent of your activity of conveying -the work, and under which the third party grants, to any of the -parties who would receive the covered work from you, a discriminatory -patent license (a) in connection with copies of the covered work -conveyed by you (or copies made from those copies), or (b) primarily -for and in connection with specific products or compilations that -contain the covered work, unless you entered into that arrangement, -or that patent license was granted, prior to 28 March 2007. - - Nothing in this License shall be construed as excluding or limiting -any implied license or other defenses to infringement that may -otherwise be available to you under applicable patent law. - - 12. No Surrender of Others' Freedom. - - If conditions are imposed on you (whether by court order, agreement or -otherwise) that contradict the conditions of this License, they do not -excuse you from the conditions of this License. If you cannot convey a -covered work so as to satisfy simultaneously your obligations under this -License and any other pertinent obligations, then as a consequence you may -not convey it at all. For example, if you agree to terms that obligate you -to collect a royalty for further conveying from those to whom you convey -the Program, the only way you could satisfy both those terms and this -License would be to refrain entirely from conveying the Program. - - 13. Use with the GNU Affero General Public License. - - Notwithstanding any other provision of this License, you have -permission to link or combine any covered work with a work licensed -under version 3 of the GNU Affero General Public License into a single -combined work, and to convey the resulting work. The terms of this -License will continue to apply to the part which is the covered work, -but the special requirements of the GNU Affero General Public License, -section 13, concerning interaction through a network will apply to the -combination as such. - - 14. Revised Versions of this License. - - The Free Software Foundation may publish revised and/or new versions of -the GNU General Public License from time to time. Such new versions will -be similar in spirit to the present version, but may differ in detail to -address new problems or concerns. - - Each version is given a distinguishing version number. If the -Program specifies that a certain numbered version of the GNU General -Public License "or any later version" applies to it, you have the -option of following the terms and conditions either of that numbered -version or of any later version published by the Free Software -Foundation. If the Program does not specify a version number of the -GNU General Public License, you may choose any version ever published -by the Free Software Foundation. - - If the Program specifies that a proxy can decide which future -versions of the GNU General Public License can be used, that proxy's -public statement of acceptance of a version permanently authorizes you -to choose that version for the Program. - - Later license versions may give you additional or different -permissions. However, no additional obligations are imposed on any -author or copyright holder as a result of your choosing to follow a -later version. - - 15. Disclaimer of Warranty. - - THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY -APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT -HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY -OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, -THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR -PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM -IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF -ALL NECESSARY SERVICING, REPAIR OR CORRECTION. - - 16. Limitation of Liability. - - IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING -WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS -THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY -GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE -USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF -DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD -PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), -EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF -SUCH DAMAGES. - - 17. Interpretation of Sections 15 and 16. - - If the disclaimer of warranty and limitation of liability provided -above cannot be given local legal effect according to their terms, -reviewing courts shall apply local law that most closely approximates -an absolute waiver of all civil liability in connection with the -Program, unless a warranty or assumption of liability accompanies a -copy of the Program in return for a fee. - - END OF TERMS AND CONDITIONS - - How to Apply These Terms to Your New Programs - - If you develop a new program, and you want it to be of the greatest -possible use to the public, the best way to achieve this is to make it -free software which everyone can redistribute and change under these terms. - - To do so, attach the following notices to the program. It is safest -to attach them to the start of each source file to most effectively -state the exclusion of warranty; and each file should have at least -the "copyright" line and a pointer to where the full notice is found. - - - Copyright (C) - - 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 . - -Also add information on how to contact you by electronic and paper mail. - - If the program does terminal interaction, make it output a short -notice like this when it starts in an interactive mode: - - Copyright (C) - This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'. - This is free software, and you are welcome to redistribute it - under certain conditions; type `show c' for details. - -The hypothetical commands `show w' and `show c' should show the appropriate -parts of the General Public License. Of course, your program's commands -might be different; for a GUI interface, you would use an "about box". - - You should also get your employer (if you work as a programmer) or school, -if any, to sign a "copyright disclaimer" for the program, if necessary. -For more information on this, and how to apply and follow the GNU GPL, see -. - - The GNU General Public License does not permit incorporating your program -into proprietary programs. If your program is a subroutine library, you -may consider it more useful to permit linking proprietary applications with -the library. If this is what you want to do, use the GNU Lesser General -Public License instead of this License. But first, please read -. From 22208bd823d4d8b8ef7933d9643a2358d5b0e3f3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=9D=90=E7=AC=83=E5=A4=A7=E5=A4=A7?= Date: Tue, 1 Feb 2022 22:32:46 +0800 Subject: [PATCH 373/417] Create LICENSE --- LICENSE | 201 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 201 insertions(+) create mode 100644 LICENSE diff --git a/LICENSE b/LICENSE new file mode 100644 index 000000000..261eeb9e9 --- /dev/null +++ b/LICENSE @@ -0,0 +1,201 @@ + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright [yyyy] [name of copyright owner] + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. From 6bccd415917a247865ff3fd84e7581bd82f8c199 Mon Sep 17 00:00:00 2001 From: xpcoder Date: Tue, 29 Jun 2021 00:14:33 +0800 Subject: [PATCH 374/417] move to springdoc --- framework/spring/pom.xml | 2 +- .../org/laidu/learn/mybatis/MybatisApp.java | 3 - .../org/laidu/learn/spring/mvc/MvcApp.java | 2 - .../mvc/controller/GoodsController.java | 7 +- .../learn/spring/mvc/dto/AddGoodsReqDTO.java | 11 +-- .../learn/spring/mvc/dto/GetGoodsResDTO.java | 11 +-- .../learn/spring/mvc/model/Response.java | 4 +- framework/spring/swagger/pom.xml | 48 +++++++---- .../swagger/demo/SwaggerApplication.java | 2 - .../learn/swagger/demo/config/MvcConfig.java | 8 ++ .../swagger/demo/config/SwaggerConfig.java | 86 ++++++++----------- .../demo/controller/HomeController.java | 11 ++- .../learn/swagger/demo/dto/ProductReqDTO.java | 17 ++-- .../learn/swagger/demo/dto/ProductResDTO.java | 10 ++- .../demo/enums/ProductTypeIntEnum.java | 3 + .../resources/application-prod.properties | 5 -- .../src/main/resources/application-prod.yml | 9 ++ .../src/main/resources/application.properties | 7 -- .../src/main/resources/application.yml | 18 ++++ .../src/main/resources/swagger-config.yaml | 4 + 20 files changed, 146 insertions(+), 122 deletions(-) delete mode 100644 framework/spring/swagger/src/main/resources/application-prod.properties create mode 100644 framework/spring/swagger/src/main/resources/application-prod.yml delete mode 100644 framework/spring/swagger/src/main/resources/application.properties create mode 100644 framework/spring/swagger/src/main/resources/application.yml create mode 100644 framework/spring/swagger/src/main/resources/swagger-config.yaml diff --git a/framework/spring/pom.xml b/framework/spring/pom.xml index 50e7dcc8d..01363da9e 100644 --- a/framework/spring/pom.xml +++ b/framework/spring/pom.xml @@ -35,7 +35,7 @@ 5.5.0 5.2.9.RELEASE - 2.4.3 + 2.5.1 2020.0.2 diff --git a/framework/spring/spring-data/spring-mybatis/src/main/java/org/laidu/learn/mybatis/MybatisApp.java b/framework/spring/spring-data/spring-mybatis/src/main/java/org/laidu/learn/mybatis/MybatisApp.java index f71276adc..ef7446067 100644 --- a/framework/spring/spring-data/spring-mybatis/src/main/java/org/laidu/learn/mybatis/MybatisApp.java +++ b/framework/spring/spring-data/spring-mybatis/src/main/java/org/laidu/learn/mybatis/MybatisApp.java @@ -10,8 +10,6 @@ import org.springframework.context.annotation.Import; import org.springframework.scheduling.annotation.EnableScheduling; -import springfox.documentation.swagger2.annotations.EnableSwagger2; - /** * org.laidu.learn.amqp.Application *

                    @@ -24,7 +22,6 @@ @EnableConfigurationProperties @EnableScheduling @EnableCaching -@EnableSwagger2 @Import(SwaggerConfig.class) @EnableAspectJAutoProxy(proxyTargetClass = true) public class MybatisApp { diff --git a/framework/spring/spring-web/spring-mvc/src/main/java/org/laidu/learn/spring/mvc/MvcApp.java b/framework/spring/spring-web/spring-mvc/src/main/java/org/laidu/learn/spring/mvc/MvcApp.java index 58f6cc55b..630add749 100644 --- a/framework/spring/spring-web/spring-mvc/src/main/java/org/laidu/learn/spring/mvc/MvcApp.java +++ b/framework/spring/spring-web/spring-mvc/src/main/java/org/laidu/learn/spring/mvc/MvcApp.java @@ -12,7 +12,6 @@ import org.springframework.context.annotation.Import; import lombok.extern.slf4j.Slf4j; -import springfox.documentation.swagger2.annotations.EnableSwagger2; /** * spring mvc app @@ -21,7 +20,6 @@ * on 2018-05-30 11:29. */ @Slf4j -@EnableSwagger2 @Import(SwaggerConfig.class) @SpringBootApplication @EnableConfigurationProperties(StorageProperties.class) diff --git a/framework/spring/spring-web/spring-mvc/src/main/java/org/laidu/learn/spring/mvc/controller/GoodsController.java b/framework/spring/spring-web/spring-mvc/src/main/java/org/laidu/learn/spring/mvc/controller/GoodsController.java index 1e812749d..54372038a 100644 --- a/framework/spring/spring-web/spring-mvc/src/main/java/org/laidu/learn/spring/mvc/controller/GoodsController.java +++ b/framework/spring/spring-web/spring-mvc/src/main/java/org/laidu/learn/spring/mvc/controller/GoodsController.java @@ -1,5 +1,6 @@ package org.laidu.learn.spring.mvc.controller; +import org.apiguardian.api.API; import org.laidu.learn.spring.mvc.dto.AddGoodsReqDTO; import org.laidu.learn.spring.mvc.dto.GetGoodsResDTO; import org.laidu.learn.spring.mvc.enums.GoodsTypeEnum; @@ -14,7 +15,7 @@ import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; -import io.swagger.annotations.ApiOperation; +import io.swagger.v3.oas.annotations.Operation; import lombok.extern.slf4j.Slf4j; /** @@ -36,7 +37,7 @@ public GoodsController(GoodsService goodsService) { } @PostMapping("/add") - @ApiOperation("添加商品") + @Operation(method = "添加商品") public Response add(@RequestBody AddGoodsReqDTO reqDTO){ return Response.ok(goodsService.addGoods(Goods.builder() @@ -47,7 +48,7 @@ public Response add(@RequestBody AddGoodsReqDTO reqDTO){ } @GetMapping("/query/{goodId}") - @ApiOperation("查询商品") + @Operation(method = "查询商品") public Response query(@PathVariable("goodId") Long goodId){ return Response.ok(GetGoodsResDTO.builder() diff --git a/framework/spring/spring-web/spring-mvc/src/main/java/org/laidu/learn/spring/mvc/dto/AddGoodsReqDTO.java b/framework/spring/spring-web/spring-mvc/src/main/java/org/laidu/learn/spring/mvc/dto/AddGoodsReqDTO.java index a724cdf7c..366d5ab90 100644 --- a/framework/spring/spring-web/spring-mvc/src/main/java/org/laidu/learn/spring/mvc/dto/AddGoodsReqDTO.java +++ b/framework/spring/spring-web/spring-mvc/src/main/java/org/laidu/learn/spring/mvc/dto/AddGoodsReqDTO.java @@ -1,11 +1,12 @@ package org.laidu.learn.spring.mvc.dto; -import io.swagger.annotations.ApiModelProperty; +import org.laidu.learn.spring.mvc.enums.GoodsTypeEnum; + +import io.swagger.v3.oas.annotations.Parameter; import lombok.AllArgsConstructor; import lombok.Builder; import lombok.Data; import lombok.NoArgsConstructor; -import org.laidu.learn.spring.mvc.enums.GoodsTypeEnum; /** * 添加商品DTO @@ -19,13 +20,13 @@ @NoArgsConstructor public class AddGoodsReqDTO { - @ApiModelProperty("商品ID") + @Parameter(name = "商品ID") private Long goodsId; - @ApiModelProperty("商品名称") + @Parameter(name = "商品名称") private String goodsName; - @ApiModelProperty("商品类型") + @Parameter(name = "商品类型") private GoodsTypeEnum goodsType; } \ No newline at end of file diff --git a/framework/spring/spring-web/spring-mvc/src/main/java/org/laidu/learn/spring/mvc/dto/GetGoodsResDTO.java b/framework/spring/spring-web/spring-mvc/src/main/java/org/laidu/learn/spring/mvc/dto/GetGoodsResDTO.java index 13908ecc9..67246e98a 100644 --- a/framework/spring/spring-web/spring-mvc/src/main/java/org/laidu/learn/spring/mvc/dto/GetGoodsResDTO.java +++ b/framework/spring/spring-web/spring-mvc/src/main/java/org/laidu/learn/spring/mvc/dto/GetGoodsResDTO.java @@ -1,11 +1,12 @@ package org.laidu.learn.spring.mvc.dto; -import io.swagger.annotations.ApiModelProperty; +import org.laidu.learn.spring.mvc.enums.GoodsTypeEnum; + +import io.swagger.v3.oas.annotations.Parameter; import lombok.AllArgsConstructor; import lombok.Builder; import lombok.Data; import lombok.NoArgsConstructor; -import org.laidu.learn.spring.mvc.enums.GoodsTypeEnum; /** * 添加商品DTO @@ -19,12 +20,12 @@ @NoArgsConstructor public class GetGoodsResDTO { - @ApiModelProperty("商品ID") + @Parameter(name = "商品ID") private Long goodsId; - @ApiModelProperty("商品名称") + @Parameter(name = "商品名称") private String goodsName; - @ApiModelProperty("商品类型") + @Parameter(name = "商品类型") private GoodsTypeEnum goodsType; } \ No newline at end of file diff --git a/framework/spring/spring-web/spring-mvc/src/main/java/org/laidu/learn/spring/mvc/model/Response.java b/framework/spring/spring-web/spring-mvc/src/main/java/org/laidu/learn/spring/mvc/model/Response.java index 78ce6c4cb..4ed90482a 100644 --- a/framework/spring/spring-web/spring-mvc/src/main/java/org/laidu/learn/spring/mvc/model/Response.java +++ b/framework/spring/spring-web/spring-mvc/src/main/java/org/laidu/learn/spring/mvc/model/Response.java @@ -1,6 +1,5 @@ package org.laidu.learn.spring.mvc.model; -import io.swagger.annotations.ApiModel; import lombok.AllArgsConstructor; import lombok.Builder; import lombok.Data; @@ -19,7 +18,6 @@ @Builder @AllArgsConstructor @NoArgsConstructor -@ApiModel(description ="响应封装") public class Response { private String code; @@ -28,7 +26,7 @@ public class Response { private T data; - public static Response ok(T data){ + public static Response ok(T data) { return Response.builder() .code("E000000") diff --git a/framework/spring/swagger/pom.xml b/framework/spring/swagger/pom.xml index 22d28671d..bfa79a24a 100644 --- a/framework/spring/swagger/pom.xml +++ b/framework/spring/swagger/pom.xml @@ -19,17 +19,11 @@ springio - 2.9.2 + + 1.5.9 - - - jitpack.io - https://jitpack.io - - - @@ -37,24 +31,42 @@ common-util 1.0-SNAPSHOT - - io.springfox - springfox-swagger2 - ${springfox-swagger2.version} + org.springdoc + springdoc-openapi-webmvc-core + 1.5.9 - io.springfox - springfox-swagger-ui - ${springfox-swagger2.version} + org.springdoc + springdoc-openapi-ui + 1.5.9 - io.springfox - springfox-bean-validators - ${springfox-swagger2.version} + com.github.xiaoymin + knife4j-springdoc-ui + 3.0.2 + + + + + + + + + + + + + + + + + + + javax.validation validation-api diff --git a/framework/spring/swagger/src/main/java/org/laidu/learn/swagger/demo/SwaggerApplication.java b/framework/spring/swagger/src/main/java/org/laidu/learn/swagger/demo/SwaggerApplication.java index 8e93fa75a..9c1f3d2ed 100644 --- a/framework/spring/swagger/src/main/java/org/laidu/learn/swagger/demo/SwaggerApplication.java +++ b/framework/spring/swagger/src/main/java/org/laidu/learn/swagger/demo/SwaggerApplication.java @@ -3,12 +3,10 @@ import org.springframework.boot.Banner; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.boot.builder.SpringApplicationBuilder; -import springfox.documentation.swagger2.annotations.EnableSwagger2; /** * @author laidu */ -@EnableSwagger2 @SpringBootApplication public class SwaggerApplication { public static void main(String[] args) { diff --git a/framework/spring/swagger/src/main/java/org/laidu/learn/swagger/demo/config/MvcConfig.java b/framework/spring/swagger/src/main/java/org/laidu/learn/swagger/demo/config/MvcConfig.java index 53056cd3b..ba49ef7f1 100644 --- a/framework/spring/swagger/src/main/java/org/laidu/learn/swagger/demo/config/MvcConfig.java +++ b/framework/spring/swagger/src/main/java/org/laidu/learn/swagger/demo/config/MvcConfig.java @@ -5,6 +5,7 @@ import org.springframework.context.annotation.Configuration; import org.springframework.format.Formatter; import org.springframework.format.FormatterRegistry; +import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry; import org.springframework.web.servlet.config.annotation.WebMvcConfigurer; import java.text.ParseException; @@ -20,6 +21,13 @@ @Configuration public class MvcConfig implements WebMvcConfigurer { + + @Override + public void addResourceHandlers(ResourceHandlerRegistry registry) { + registry.addResourceHandler("doc.html").addResourceLocations("classpath:/META-INF/resources/"); + registry.addResourceHandler("/webjars/**").addResourceLocations("classpath:/META-INF/resources/webjars/"); + } + @Override public void addFormatters(FormatterRegistry registry) { registry.addFormatter(new Formatter() { diff --git a/framework/spring/swagger/src/main/java/org/laidu/learn/swagger/demo/config/SwaggerConfig.java b/framework/spring/swagger/src/main/java/org/laidu/learn/swagger/demo/config/SwaggerConfig.java index c658b024b..7ed81f0ae 100644 --- a/framework/spring/swagger/src/main/java/org/laidu/learn/swagger/demo/config/SwaggerConfig.java +++ b/framework/spring/swagger/src/main/java/org/laidu/learn/swagger/demo/config/SwaggerConfig.java @@ -1,20 +1,6 @@ package org.laidu.learn.swagger.demo.config; -import com.google.common.base.Predicates; -import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; -import org.springframework.context.annotation.Import; -import org.springframework.context.annotation.Profile; -import springfox.documentation.builders.ParameterBuilder; -import springfox.documentation.builders.PathSelectors; -import springfox.documentation.builders.RequestHandlerSelectors; -import springfox.documentation.schema.ModelRef; -import springfox.documentation.service.Parameter; -import springfox.documentation.spi.DocumentationType; -import springfox.documentation.spring.web.plugins.Docket; - -import java.util.ArrayList; -import java.util.List; /** * SwaggerConfig @@ -24,45 +10,45 @@ * @date 2017-12-10 21:55 */ @Configuration -@Import(springfox.bean.validators.configuration.BeanValidatorPluginsConfiguration.class) +//@Import(springfox.bean.validators.configuration.BeanValidatorPluginsConfiguration.class) public class SwaggerConfig { - @Bean - @Profile("prod") - public Docket apiProd() { - return new Docket(DocumentationType.SWAGGER_2) - // 生产环境禁用swagger - .enable(false) - .select() - .apis(RequestHandlerSelectors.any()) - .paths(PathSelectors.any()) - .build(); - } - - - @Bean - @Profile({"default", "dev", "test"}) - public Docket apiDev() { - - ParameterBuilder ticketPar = new ParameterBuilder(); - List pars = new ArrayList<>(); - ticketPar.name("_sid").description("_sid") - .parameterType("query") - .modelRef(new ModelRef("string")) - .required(false).build(); - pars.add(ticketPar.build()); - - - - return new Docket(DocumentationType.SWAGGER_2) - .forCodeGeneration(true) - .select() - .apis(RequestHandlerSelectors.basePackage("org.laidu.learn")) - .paths(Predicates.not(PathSelectors.regex("/error.*"))) - .build() - .globalOperationParameters(pars); - } +// @Bean +// @Profile("prod") +// public Docket apiProd() { +// return new Docket(DocumentationType.SWAGGER_2) +// // 生产环境禁用swagger +// .enable(false) +// .select() +// .apis(RequestHandlerSelectors.any()) +// .paths(PathSelectors.any()) +// .build(); +// } +// +// +// @Bean +// @Profile({"default", "dev", "test"}) +// public Docket apiDev() { +// +// ParameterBuilder ticketPar = new ParameterBuilder(); +// List pars = new ArrayList<>(); +// ticketPar.name("_sid").description("_sid") +// .parameterType("query") +// .modelRef(new ModelRef("string")) +// .required(false).build(); +// pars.add(ticketPar.build()); +// +// +// +// return new Docket(DocumentationType.SWAGGER_2) +// .forCodeGeneration(true) +// .select() +// .apis(RequestHandlerSelectors.basePackage("org.laidu.learn")) +// .paths(Predicates.not(PathSelectors.regex("/error.*"))) +// .build() +// .globalOperationParameters(pars); +// } } \ No newline at end of file diff --git a/framework/spring/swagger/src/main/java/org/laidu/learn/swagger/demo/controller/HomeController.java b/framework/spring/swagger/src/main/java/org/laidu/learn/swagger/demo/controller/HomeController.java index d11fda6ff..1f00138be 100644 --- a/framework/spring/swagger/src/main/java/org/laidu/learn/swagger/demo/controller/HomeController.java +++ b/framework/spring/swagger/src/main/java/org/laidu/learn/swagger/demo/controller/HomeController.java @@ -1,8 +1,9 @@ package org.laidu.learn.swagger.demo.controller; -import io.swagger.annotations.ApiOperation; -import io.swagger.annotations.ApiParam; -import io.swagger.annotations.ApiResponse; +import io.swagger.v3.oas.annotations.Operation; +import io.swagger.v3.oas.annotations.Parameter; +import io.swagger.v3.oas.annotations.responses.ApiResponse; +import io.swagger.v3.oas.annotations.tags.Tag; import lombok.extern.slf4j.Slf4j; import org.laidu.learn.swagger.demo.dto.ProductReqDTO; import org.laidu.learn.swagger.demo.dto.ProductResDTO; @@ -19,6 +20,7 @@ */ @Slf4j @RestController +@Tag(name = "") @RequestMapping("/") public class HomeController { @@ -28,9 +30,6 @@ public String home(){ } @GetMapping("/query/{id}") - @ApiOperation("query product by id") - @ApiParam(value = "id") - @ApiResponse(code = 100, message = "123321" , response = ProductResDTO.class) public ProductResDTO query(@PathVariable String id){ return ProductResDTO.builder() .id(id) diff --git a/framework/spring/swagger/src/main/java/org/laidu/learn/swagger/demo/dto/ProductReqDTO.java b/framework/spring/swagger/src/main/java/org/laidu/learn/swagger/demo/dto/ProductReqDTO.java index 77b99aaef..e881b59cc 100644 --- a/framework/spring/swagger/src/main/java/org/laidu/learn/swagger/demo/dto/ProductReqDTO.java +++ b/framework/spring/swagger/src/main/java/org/laidu/learn/swagger/demo/dto/ProductReqDTO.java @@ -2,12 +2,13 @@ import java.util.Date; +import javax.validation.constraints.NotNull; + import org.laidu.learn.swagger.demo.enums.ProductTypeIntEnum; import com.fasterxml.jackson.annotation.JsonFormat; -import io.swagger.annotations.ApiModel; -import io.swagger.annotations.ApiModelProperty; +import io.swagger.v3.oas.annotations.media.Schema; import lombok.AllArgsConstructor; import lombok.Builder; import lombok.Data; @@ -24,29 +25,29 @@ @Builder @AllArgsConstructor @NoArgsConstructor -@ApiModel +@Schema public class ProductReqDTO { /** * id */ - @ApiModelProperty(required = true, name = "产品ID") + @Schema private String id; - // @NotNull - @ApiModelProperty(name = "产品类型", dataType = "ProductTypeIntEnum") + @NotNull + @Schema private ProductTypeIntEnum type; /** * product name */ - @ApiModelProperty(required = true, name = "产品ID") + @Schema private String name; /** * product date */ - @ApiModelProperty(required = true, example = "2016-01-01") + @Schema(example = "2016-01-01") @JsonFormat(pattern = "yyyy-MM-dd hh:mm:ss", timezone = "GMT+8") private Date productDate; } \ No newline at end of file diff --git a/framework/spring/swagger/src/main/java/org/laidu/learn/swagger/demo/dto/ProductResDTO.java b/framework/spring/swagger/src/main/java/org/laidu/learn/swagger/demo/dto/ProductResDTO.java index 513ec7295..f1aaf2a90 100644 --- a/framework/spring/swagger/src/main/java/org/laidu/learn/swagger/demo/dto/ProductResDTO.java +++ b/framework/spring/swagger/src/main/java/org/laidu/learn/swagger/demo/dto/ProductResDTO.java @@ -2,10 +2,11 @@ import java.util.Date; +import javax.validation.constraints.NotNull; + import com.fasterxml.jackson.annotation.JsonFormat; -import io.swagger.annotations.ApiModel; -import io.swagger.annotations.ApiModelProperty; +import io.swagger.v3.oas.annotations.media.Schema; import lombok.AllArgsConstructor; import lombok.Builder; import lombok.Data; @@ -22,7 +23,7 @@ @Builder @AllArgsConstructor @NoArgsConstructor -@ApiModel +@Schema public class ProductResDTO { /** @@ -38,7 +39,8 @@ public class ProductResDTO { /** * product date */ - @ApiModelProperty(required = true, example = "2016-01-01 18:10:12") + @NotNull + @Schema( example = "2016-01-01 18:10:12") @JsonFormat(pattern = "yyyy-MM-dd hh:mm:ss", timezone = "GMT+8") private Date productDate; } \ No newline at end of file diff --git a/framework/spring/swagger/src/main/java/org/laidu/learn/swagger/demo/enums/ProductTypeIntEnum.java b/framework/spring/swagger/src/main/java/org/laidu/learn/swagger/demo/enums/ProductTypeIntEnum.java index e6a24cd6a..9ca1d9aeb 100644 --- a/framework/spring/swagger/src/main/java/org/laidu/learn/swagger/demo/enums/ProductTypeIntEnum.java +++ b/framework/spring/swagger/src/main/java/org/laidu/learn/swagger/demo/enums/ProductTypeIntEnum.java @@ -1,5 +1,7 @@ package org.laidu.learn.swagger.demo.enums; +import com.fasterxml.jackson.annotation.JsonValue; + import lombok.AllArgsConstructor; import lombok.Getter; import lombok.extern.slf4j.Slf4j; @@ -27,6 +29,7 @@ public enum ProductTypeIntEnum implements BasicIntEnum { ; + @JsonValue private int value; private String name; diff --git a/framework/spring/swagger/src/main/resources/application-prod.properties b/framework/spring/swagger/src/main/resources/application-prod.properties deleted file mode 100644 index 7467cc18f..000000000 --- a/framework/spring/swagger/src/main/resources/application-prod.properties +++ /dev/null @@ -1,5 +0,0 @@ -spring.jackson.property-naming-strategy=CAMEL_CASE_TO_LOWER_CASE_WITH_UNDERSCORES -server.address=0.0.0.0 - -spring.application.name=swagger-demo -spring.application.admin.enabled=true \ No newline at end of file diff --git a/framework/spring/swagger/src/main/resources/application-prod.yml b/framework/spring/swagger/src/main/resources/application-prod.yml new file mode 100644 index 000000000..e6ca00c1b --- /dev/null +++ b/framework/spring/swagger/src/main/resources/application-prod.yml @@ -0,0 +1,9 @@ +server: + address: 0.0.0.0 +spring: + application: + admin: + enabled: true + name: swagger-demo + jackson: + property-naming-strategy: CAMEL_CASE_TO_LOWER_CASE_WITH_UNDERSCORES diff --git a/framework/spring/swagger/src/main/resources/application.properties b/framework/spring/swagger/src/main/resources/application.properties deleted file mode 100644 index fabb5cfe4..000000000 --- a/framework/spring/swagger/src/main/resources/application.properties +++ /dev/null @@ -1,7 +0,0 @@ -spring.jackson.property-naming-strategy=CAMEL_CASE_TO_LOWER_CASE_WITH_UNDERSCORES -server.address=0.0.0.0 - -spring.application.name=swagger-demo -spring.application.admin.enabled=true - -spring.devtools.restart.enabled=true \ No newline at end of file diff --git a/framework/spring/swagger/src/main/resources/application.yml b/framework/spring/swagger/src/main/resources/application.yml new file mode 100644 index 000000000..8e06bedc5 --- /dev/null +++ b/framework/spring/swagger/src/main/resources/application.yml @@ -0,0 +1,18 @@ +server: + address: 0.0.0.0 +spring: + application: + admin: + enabled: true + name: swagger-demo + devtools: + restart: + enabled: true + +springdoc: + api-docs: + path: /v3/api-docs + swagger-ui: + enabled: true + path: /swagger-ui.html + diff --git a/framework/spring/swagger/src/main/resources/swagger-config.yaml b/framework/spring/swagger/src/main/resources/swagger-config.yaml new file mode 100644 index 000000000..d5a52dff2 --- /dev/null +++ b/framework/spring/swagger/src/main/resources/swagger-config.yaml @@ -0,0 +1,4 @@ +url: "https://petstore.swagger.io/v2/swagger.json" +dom_id: "#swagger-ui" +validatorUrl: "https://online.swagger.io/validator" +oauth2RedirectUrl: "http://localhost:3200/oauth2-redirect.html" \ No newline at end of file From de3e7855a4c120b8e86e05e9da6d4dbda1d9fe89 Mon Sep 17 00:00:00 2001 From: xpcoder Date: Tue, 1 Feb 2022 22:38:56 +0800 Subject: [PATCH 375/417] upgrade jdk 17 --- framework/common/pom.xml | 6 ++++++ language-advance/pom.xml | 2 ++ language-feature/pom.xml | 4 +++- 3 files changed, 11 insertions(+), 1 deletion(-) diff --git a/framework/common/pom.xml b/framework/common/pom.xml index 61a1552a5..366a3cc43 100644 --- a/framework/common/pom.xml +++ b/framework/common/pom.xml @@ -26,6 +26,7 @@ 3.6 1.1 + 2.11.1 4.1.2 1.6.0 2.1.17 @@ -90,6 +91,11 @@ ${jodd.version} + + org.apache.commons + commons-pool2 + ${apache-commons-pool.version} + diff --git a/language-advance/pom.xml b/language-advance/pom.xml index 22d3be06c..7f59fede0 100644 --- a/language-advance/pom.xml +++ b/language-advance/pom.xml @@ -30,6 +30,8 @@ 1.9.5 3.3.0 1.60 + 17 + 17 diff --git a/language-feature/pom.xml b/language-feature/pom.xml index 6889aa33b..f5a249ab8 100644 --- a/language-feature/pom.xml +++ b/language-feature/pom.xml @@ -17,7 +17,9 @@ 3.1.0 - + 17 + 17 + From cd56001262351edb9e633bda80ae24e9e6cff236 Mon Sep 17 00:00:00 2001 From: xpcoder Date: Tue, 1 Feb 2022 22:49:17 +0800 Subject: [PATCH 376/417] upgrade jdk 17 --- framework/web/undertow/pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/framework/web/undertow/pom.xml b/framework/web/undertow/pom.xml index f6ebb394b..8368e5e95 100644 --- a/framework/web/undertow/pom.xml +++ b/framework/web/undertow/pom.xml @@ -12,7 +12,7 @@ undertow - 2.0.20.Final + 2.1.6.Final From 8ec73d13988088a4907d92836f6801951bf049dc Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 1 Feb 2022 14:50:58 +0000 Subject: [PATCH 377/417] build(deps): bump h2 from 1.4.199 to 2.1.210 in /language-advance/sql Bumps [h2](https://github.com/h2database/h2database) from 1.4.199 to 2.1.210. - [Release notes](https://github.com/h2database/h2database/releases) - [Commits](https://github.com/h2database/h2database/compare/version-1.4.199...version-2.1.210) --- updated-dependencies: - dependency-name: com.h2database:h2 dependency-type: direct:production ... Signed-off-by: dependabot[bot] --- language-advance/sql/pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/language-advance/sql/pom.xml b/language-advance/sql/pom.xml index afbc6e2d2..52669082d 100644 --- a/language-advance/sql/pom.xml +++ b/language-advance/sql/pom.xml @@ -15,7 +15,7 @@ com.h2database h2 - 1.4.199 + 2.1.210 From 289facdc3eba7743a9d3ab968e126168897f6b8f Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 1 Feb 2022 14:50:59 +0000 Subject: [PATCH 378/417] build(deps): bump spring-cloud-netflix-hystrix-dashboard Bumps [spring-cloud-netflix-hystrix-dashboard](https://github.com/spring-cloud/spring-cloud-netflix) from 2.2.8.RELEASE to 2.2.10.RELEASE. - [Release notes](https://github.com/spring-cloud/spring-cloud-netflix/releases) - [Commits](https://github.com/spring-cloud/spring-cloud-netflix/compare/v2.2.8.RELEASE...v2.2.10.RELEASE) --- updated-dependencies: - dependency-name: org.springframework.cloud:spring-cloud-netflix-hystrix-dashboard dependency-type: direct:production ... Signed-off-by: dependabot[bot] --- framework/spring/spring-cloud/pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/framework/spring/spring-cloud/pom.xml b/framework/spring/spring-cloud/pom.xml index 21ed5690d..26778fe64 100644 --- a/framework/spring/spring-cloud/pom.xml +++ b/framework/spring/spring-cloud/pom.xml @@ -28,7 +28,7 @@ UTF-8 UTF-8 - 2.2.8.RELEASE + 2.2.10.RELEASE 2.2.1 From 5335dbca9f08354934463463adf66c9512632e69 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 1 Feb 2022 14:50:59 +0000 Subject: [PATCH 379/417] build(deps): bump spring-amqp in /framework/spring/spring-amqp Bumps [spring-amqp](https://github.com/spring-projects/spring-amqp) from 2.0.1.RELEASE to 2.0.7.RELEASE. - [Release notes](https://github.com/spring-projects/spring-amqp/releases) - [Commits](https://github.com/spring-projects/spring-amqp/compare/v2.0.1.RELEASE...v2.0.7.RELEASE) --- updated-dependencies: - dependency-name: org.springframework.amqp:spring-amqp dependency-type: direct:production ... Signed-off-by: dependabot[bot] --- framework/spring/spring-amqp/pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/framework/spring/spring-amqp/pom.xml b/framework/spring/spring-amqp/pom.xml index 792465ed7..f4425b059 100644 --- a/framework/spring/spring-amqp/pom.xml +++ b/framework/spring/spring-amqp/pom.xml @@ -32,7 +32,7 @@ org.springframework.amqp spring-amqp - 2.0.1.RELEASE + 2.0.7.RELEASE org.springframework.amqp From 172ab9aee5e337390b2a615f4752a695010d1143 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 1 Feb 2022 14:57:43 +0000 Subject: [PATCH 380/417] build(deps): bump bcprov-jdk15on from 1.60 to 1.67 in /language-advance Bumps [bcprov-jdk15on](https://github.com/bcgit/bc-java) from 1.60 to 1.67. - [Release notes](https://github.com/bcgit/bc-java/releases) - [Changelog](https://github.com/bcgit/bc-java/blob/master/docs/releasenotes.html) - [Commits](https://github.com/bcgit/bc-java/commits) --- updated-dependencies: - dependency-name: org.bouncycastle:bcprov-jdk15on dependency-type: direct:production ... Signed-off-by: dependabot[bot] --- language-advance/pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/language-advance/pom.xml b/language-advance/pom.xml index 9e858dab3..3f7a9b1d2 100644 --- a/language-advance/pom.xml +++ b/language-advance/pom.xml @@ -29,7 +29,7 @@ 1.9.5 3.3.0 - 1.60 + 1.67 17 17 From 9fa32df402fc9f3483ac2c075435f46aeaa0bc98 Mon Sep 17 00:00:00 2001 From: xpcoder Date: Tue, 1 Feb 2022 23:07:12 +0800 Subject: [PATCH 381/417] set common-pool version --- framework/common/pom.xml | 1 + 1 file changed, 1 insertion(+) diff --git a/framework/common/pom.xml b/framework/common/pom.xml index a553d9169..c828fa5d0 100644 --- a/framework/common/pom.xml +++ b/framework/common/pom.xml @@ -28,6 +28,7 @@ 1.1 2.11.1 4.1.2 + 1.8.0 2.1.17 5.0.4 From bbdaf711411aff8751fb4f131319c434abbd0674 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 9 Feb 2022 22:05:34 +0000 Subject: [PATCH 382/417] build(deps): bump shiro-spring-boot-starter in /framework/spring Bumps shiro-spring-boot-starter from 1.4.2 to 1.7.1. --- updated-dependencies: - dependency-name: org.apache.shiro:shiro-spring-boot-starter dependency-type: direct:production ... Signed-off-by: dependabot[bot] --- framework/spring/pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/framework/spring/pom.xml b/framework/spring/pom.xml index 01363da9e..d6e97da04 100644 --- a/framework/spring/pom.xml +++ b/framework/spring/pom.xml @@ -39,7 +39,7 @@ 2020.0.2 - 1.4.2 + 1.7.1 2.0.1.Final 2.0.1.RELEASE From 7a66c2957a8dcd200a66f931139305817412c849 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 31 Mar 2022 18:31:42 +0000 Subject: [PATCH 383/417] build(deps): bump spring-webflux in /framework/network Bumps [spring-webflux](https://github.com/spring-projects/spring-framework) from 5.2.4.RELEASE to 5.3.18. - [Release notes](https://github.com/spring-projects/spring-framework/releases) - [Commits](https://github.com/spring-projects/spring-framework/compare/v5.2.4.RELEASE...v5.3.18) --- updated-dependencies: - dependency-name: org.springframework:spring-webflux dependency-type: direct:production ... Signed-off-by: dependabot[bot] --- framework/network/pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/framework/network/pom.xml b/framework/network/pom.xml index fac0b149c..67e56c404 100644 --- a/framework/network/pom.xml +++ b/framework/network/pom.xml @@ -26,7 +26,7 @@ 2.5.0 2.12.2 - 5.2.4.RELEASE + 5.3.18 0.7.14.RELEASE 4.2.2 From cf83cfe3b75fbadd9930cac491b8f9f92e690066 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 31 Mar 2022 20:04:02 +0000 Subject: [PATCH 384/417] build(deps): bump spring-core from 5.3.14 to 5.3.18 in /convenient-util Bumps [spring-core](https://github.com/spring-projects/spring-framework) from 5.3.14 to 5.3.18. - [Release notes](https://github.com/spring-projects/spring-framework/releases) - [Commits](https://github.com/spring-projects/spring-framework/compare/v5.3.14...v5.3.18) --- updated-dependencies: - dependency-name: org.springframework:spring-core dependency-type: direct:production ... Signed-off-by: dependabot[bot] --- convenient-util/pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/convenient-util/pom.xml b/convenient-util/pom.xml index 747987218..46a438907 100644 --- a/convenient-util/pom.xml +++ b/convenient-util/pom.xml @@ -24,7 +24,7 @@ 3.4.0 1.1.0 - 5.3.14 + 5.3.18 From eb2992625d5a415a0b24f8a886bf404825223294 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 4 Apr 2022 17:23:59 +0000 Subject: [PATCH 385/417] build(deps): bump jackson-databind in /production-component/common-util Bumps [jackson-databind](https://github.com/FasterXML/jackson) from 2.12.0 to 2.12.6.1. - [Release notes](https://github.com/FasterXML/jackson/releases) - [Commits](https://github.com/FasterXML/jackson/commits) --- updated-dependencies: - dependency-name: com.fasterxml.jackson.core:jackson-databind dependency-type: direct:production ... Signed-off-by: dependabot[bot] --- production-component/common-util/pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/production-component/common-util/pom.xml b/production-component/common-util/pom.xml index 9658bbe6d..d793a375e 100644 --- a/production-component/common-util/pom.xml +++ b/production-component/common-util/pom.xml @@ -30,7 +30,7 @@ 5.0.4 1.2.47 - 2.12.0 + 2.12.6.1 2.1.3 From c8d8eb30cd2c7683f5c03fe52477d1c7598f44c2 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 4 Apr 2022 17:24:15 +0000 Subject: [PATCH 386/417] build(deps): bump logback-core from 1.2.3 to 1.2.9 Bumps logback-core from 1.2.3 to 1.2.9. --- updated-dependencies: - dependency-name: ch.qos.logback:logback-core dependency-type: direct:production ... Signed-off-by: dependabot[bot] --- pom.xml | 2 +- production-component/common-util/pom.xml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/pom.xml b/pom.xml index a2acb1534..24e3ad109 100644 --- a/pom.xml +++ b/pom.xml @@ -85,7 +85,7 @@ 1.18.10 - 1.2.3 + 1.2.9 4.13.2 diff --git a/production-component/common-util/pom.xml b/production-component/common-util/pom.xml index 9658bbe6d..00fa61179 100644 --- a/production-component/common-util/pom.xml +++ b/production-component/common-util/pom.xml @@ -40,7 +40,7 @@ 1.1.8 1.0.0 - 1.2.3 + 1.2.9 2.57 From ea9f9d741fb46028c357dd724a9b6c04d2d30631 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 4 Apr 2022 17:24:18 +0000 Subject: [PATCH 387/417] build(deps): bump logback-core in /production-component/common-util Bumps logback-core from 1.2.3 to 1.2.9. --- updated-dependencies: - dependency-name: ch.qos.logback:logback-core dependency-type: direct:production ... Signed-off-by: dependabot[bot] --- production-component/common-util/pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/production-component/common-util/pom.xml b/production-component/common-util/pom.xml index 9658bbe6d..00fa61179 100644 --- a/production-component/common-util/pom.xml +++ b/production-component/common-util/pom.xml @@ -40,7 +40,7 @@ 1.1.8 1.0.0 - 1.2.3 + 1.2.9 2.57 From de3d3724b80107d1a97e6b6339c467e55e9b4648 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 12 Apr 2022 21:54:12 +0000 Subject: [PATCH 388/417] build(deps): bump hadoop-common from 3.2.2 to 3.2.3 in /big-data Bumps hadoop-common from 3.2.2 to 3.2.3. --- updated-dependencies: - dependency-name: org.apache.hadoop:hadoop-common dependency-type: direct:production ... Signed-off-by: dependabot[bot] --- big-data/pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/big-data/pom.xml b/big-data/pom.xml index c0547d751..f8de99e6f 100644 --- a/big-data/pom.xml +++ b/big-data/pom.xml @@ -19,7 +19,7 @@ - 3.2.2 + 3.2.3 2.8.1 2.8.1 1.26.0 From 28986996110f2270d785c02a95e605738a43c9eb Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Fri, 20 May 2022 20:47:21 +0000 Subject: [PATCH 389/417] build(deps): bump gson in /production-component/common-util Bumps [gson](https://github.com/google/gson) from 2.8.6 to 2.8.9. - [Release notes](https://github.com/google/gson/releases) - [Changelog](https://github.com/google/gson/blob/master/CHANGELOG.md) - [Commits](https://github.com/google/gson/compare/gson-parent-2.8.6...gson-parent-2.8.9) --- updated-dependencies: - dependency-name: com.google.code.gson:gson dependency-type: direct:production ... Signed-off-by: dependabot[bot] --- production-component/common-util/pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/production-component/common-util/pom.xml b/production-component/common-util/pom.xml index 9658bbe6d..a28f3caff 100644 --- a/production-component/common-util/pom.xml +++ b/production-component/common-util/pom.xml @@ -180,7 +180,7 @@ com.google.code.gson gson - 2.8.6 + 2.8.9 From 1508e0487dd62dd60c4d3cfaef0ae60b797b5256 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 25 May 2022 05:27:38 +0000 Subject: [PATCH 390/417] build(deps): bump spring-core from 5.3.18 to 5.3.20 in /convenient-util Bumps [spring-core](https://github.com/spring-projects/spring-framework) from 5.3.18 to 5.3.20. - [Release notes](https://github.com/spring-projects/spring-framework/releases) - [Commits](https://github.com/spring-projects/spring-framework/compare/v5.3.18...v5.3.20) --- updated-dependencies: - dependency-name: org.springframework:spring-core dependency-type: direct:production ... Signed-off-by: dependabot[bot] --- convenient-util/pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/convenient-util/pom.xml b/convenient-util/pom.xml index 46a438907..b389d046a 100644 --- a/convenient-util/pom.xml +++ b/convenient-util/pom.xml @@ -24,7 +24,7 @@ 3.4.0 1.1.0 - 5.3.18 + 5.3.20 From 6d7962941cd0df518325cb3108c9571b12d2fc06 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 26 May 2022 02:15:16 +0000 Subject: [PATCH 391/417] build(deps): bump undertow-core in /framework/web/undertow Bumps [undertow-core](https://github.com/undertow-io/undertow) from 2.1.6.Final to 2.2.11.Final. - [Release notes](https://github.com/undertow-io/undertow/releases) - [Commits](https://github.com/undertow-io/undertow/compare/2.1.6.Final...2.2.11.Final) --- updated-dependencies: - dependency-name: io.undertow:undertow-core dependency-type: direct:production ... Signed-off-by: dependabot[bot] --- framework/web/undertow/pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/framework/web/undertow/pom.xml b/framework/web/undertow/pom.xml index 8368e5e95..47711813d 100644 --- a/framework/web/undertow/pom.xml +++ b/framework/web/undertow/pom.xml @@ -12,7 +12,7 @@ undertow - 2.1.6.Final + 2.2.11.Final From bd310b64b4f079387e8a18c98c509965fcdcf097 Mon Sep 17 00:00:00 2001 From: xpcoder Date: Sat, 28 May 2022 01:00:19 +0800 Subject: [PATCH 392/417] sync --- framework/aviator/pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/framework/aviator/pom.xml b/framework/aviator/pom.xml index 0554bb275..610fdefa5 100644 --- a/framework/aviator/pom.xml +++ b/framework/aviator/pom.xml @@ -21,7 +21,7 @@ com.googlecode.aviator aviator - 5.2.5 + 5.3.1 From 756bbfbfc7d57df6a1957a02180b9234ff5c758e Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 7 Jun 2022 21:14:48 +0000 Subject: [PATCH 393/417] build(deps): bump jodd-http from 5.0.4 to 6.2.1 in /framework/common Bumps [jodd-http](https://github.com/oblac/jodd-http) from 5.0.4 to 6.2.1. - [Release notes](https://github.com/oblac/jodd-http/releases) - [Commits](https://github.com/oblac/jodd-http/commits/v6.2.1) --- updated-dependencies: - dependency-name: org.jodd:jodd-http dependency-type: direct:production ... Signed-off-by: dependabot[bot] --- framework/common/pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/framework/common/pom.xml b/framework/common/pom.xml index a553d9169..02ba8d2b3 100644 --- a/framework/common/pom.xml +++ b/framework/common/pom.xml @@ -30,7 +30,7 @@ 4.1.2 1.8.0 2.1.17 - 5.0.4 + 6.2.1 From 2624b17a1090b2e47f047acc8e153d0be5597da3 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Fri, 17 Jun 2022 01:45:37 +0000 Subject: [PATCH 394/417] build(deps): bump fastjson in /production-component/common-util Bumps [fastjson](https://github.com/alibaba/fastjson) from 1.2.47 to 1.2.83. - [Release notes](https://github.com/alibaba/fastjson/releases) - [Commits](https://github.com/alibaba/fastjson/compare/1.2.47...1.2.83) --- updated-dependencies: - dependency-name: com.alibaba:fastjson dependency-type: direct:production ... Signed-off-by: dependabot[bot] --- production-component/common-util/pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/production-component/common-util/pom.xml b/production-component/common-util/pom.xml index 7a41be6b9..0101a7c48 100644 --- a/production-component/common-util/pom.xml +++ b/production-component/common-util/pom.xml @@ -29,7 +29,7 @@ 5.0.4 - 1.2.47 + 1.2.83 2.12.6.1 2.1.3 From 093730912b23f2d355cc3802f10ad83737a7c352 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 20 Jun 2022 23:56:07 +0000 Subject: [PATCH 395/417] build(deps): bump mysql-connector-java in /framework/task-scheduler Bumps [mysql-connector-java](https://github.com/mysql/mysql-connector-j) from 5.1.46 to 8.0.28. - [Release notes](https://github.com/mysql/mysql-connector-j/releases) - [Changelog](https://github.com/mysql/mysql-connector-j/blob/release/8.0/CHANGES) - [Commits](https://github.com/mysql/mysql-connector-j/compare/5.1.46...8.0.28) --- updated-dependencies: - dependency-name: mysql:mysql-connector-java dependency-type: direct:production ... Signed-off-by: dependabot[bot] --- framework/task-scheduler/pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/framework/task-scheduler/pom.xml b/framework/task-scheduler/pom.xml index 175959441..824bfb3d4 100644 --- a/framework/task-scheduler/pom.xml +++ b/framework/task-scheduler/pom.xml @@ -22,7 +22,7 @@ 1.8 1.1.9 1.3.2 - 5.1.46 + 8.0.28 2.1.5 From 8d7e31411b43c99fb86d8c967d4edac1969934d3 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 21 Jun 2022 00:01:16 +0000 Subject: [PATCH 396/417] build(deps): bump mysql-connector-java in /framework/spring/spring-data Bumps [mysql-connector-java](https://github.com/mysql/mysql-connector-j) from 5.1.46 to 8.0.28. - [Release notes](https://github.com/mysql/mysql-connector-j/releases) - [Changelog](https://github.com/mysql/mysql-connector-j/blob/release/8.0/CHANGES) - [Commits](https://github.com/mysql/mysql-connector-j/compare/5.1.46...8.0.28) --- updated-dependencies: - dependency-name: mysql:mysql-connector-java dependency-type: direct:production ... Signed-off-by: dependabot[bot] --- framework/spring/spring-data/pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/framework/spring/spring-data/pom.xml b/framework/spring/spring-data/pom.xml index eaa07fff0..5e7d09fd8 100644 --- a/framework/spring/spring-data/pom.xml +++ b/framework/spring/spring-data/pom.xml @@ -21,7 +21,7 @@ 1.1.9 1.3.2 1.2.8 - 5.1.46 + 8.0.28 3.10.4 From b6bc68c026351c4024557fbe4ebfde3834f3040e Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 30 Jun 2022 21:58:42 +0000 Subject: [PATCH 397/417] build(deps): bump spring-amqp in /framework/spring/spring-amqp Bumps [spring-amqp](https://github.com/spring-projects/spring-amqp) from 2.0.7.RELEASE to 2.3.11. - [Release notes](https://github.com/spring-projects/spring-amqp/releases) - [Commits](https://github.com/spring-projects/spring-amqp/compare/v2.0.7.RELEASE...v2.3.11) --- updated-dependencies: - dependency-name: org.springframework.amqp:spring-amqp dependency-type: direct:production ... Signed-off-by: dependabot[bot] --- framework/spring/spring-amqp/pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/framework/spring/spring-amqp/pom.xml b/framework/spring/spring-amqp/pom.xml index f4425b059..c23e300c2 100644 --- a/framework/spring/spring-amqp/pom.xml +++ b/framework/spring/spring-amqp/pom.xml @@ -32,7 +32,7 @@ org.springframework.amqp spring-amqp - 2.0.7.RELEASE + 2.3.11 org.springframework.amqp From a593168488ff3f402d732513e83fc6dedd762cbb Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 6 Jul 2022 20:08:21 +0000 Subject: [PATCH 398/417] build(deps): bump shiro-core from 1.8.0 to 1.9.1 in /framework/common Bumps [shiro-core](https://github.com/apache/shiro) from 1.8.0 to 1.9.1. - [Release notes](https://github.com/apache/shiro/releases) - [Changelog](https://github.com/apache/shiro/blob/main/RELEASE-NOTES) - [Commits](https://github.com/apache/shiro/compare/shiro-root-1.8.0...shiro-root-1.9.1) --- updated-dependencies: - dependency-name: org.apache.shiro:shiro-core dependency-type: direct:production ... Signed-off-by: dependabot[bot] --- framework/common/pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/framework/common/pom.xml b/framework/common/pom.xml index a553d9169..55931361e 100644 --- a/framework/common/pom.xml +++ b/framework/common/pom.xml @@ -28,7 +28,7 @@ 1.1 2.11.1 4.1.2 - 1.8.0 + 1.9.1 2.1.17 5.0.4 From e7b5b1a76e15d60555de4dfa6ecbdbe6dd037b6e Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 7 Jul 2022 19:47:54 +0000 Subject: [PATCH 399/417] build(deps): bump spring-expression in /framework/spring Bumps [spring-expression](https://github.com/spring-projects/spring-framework) from 5.2.9.RELEASE to 5.2.21.RELEASE. - [Release notes](https://github.com/spring-projects/spring-framework/releases) - [Commits](https://github.com/spring-projects/spring-framework/compare/v5.2.9.RELEASE...v5.2.21.RELEASE) --- updated-dependencies: - dependency-name: org.springframework:spring-expression dependency-type: direct:production ... Signed-off-by: dependabot[bot] --- framework/spring/pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/framework/spring/pom.xml b/framework/spring/pom.xml index d6e97da04..da23f6ff7 100644 --- a/framework/spring/pom.xml +++ b/framework/spring/pom.xml @@ -34,7 +34,7 @@ 5.5.0 - 5.2.9.RELEASE + 5.2.21.RELEASE 2.5.1 2020.0.2 From 83263400d5d4124b6f334f4038f776bb50915f64 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 7 Jul 2022 22:15:02 +0000 Subject: [PATCH 400/417] build(deps): bump jetty-server in /language-feature Bumps [jetty-server](https://github.com/eclipse/jetty.project) from 9.4.41.v20210516 to 10.0.10. - [Release notes](https://github.com/eclipse/jetty.project/releases) - [Commits](https://github.com/eclipse/jetty.project/compare/jetty-9.4.41.v20210516...jetty-10.0.10) --- updated-dependencies: - dependency-name: org.eclipse.jetty:jetty-server dependency-type: direct:production ... Signed-off-by: dependabot[bot] --- language-feature/pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/language-feature/pom.xml b/language-feature/pom.xml index 59c3b8d2b..32098ed75 100644 --- a/language-feature/pom.xml +++ b/language-feature/pom.xml @@ -31,7 +31,7 @@ org.eclipse.jetty jetty-server - 9.4.41.v20210516 + 10.0.10 From 0d55a2847aa5228937ac266e836a42eb8b1c9bb5 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Fri, 15 Jul 2022 21:06:22 +0000 Subject: [PATCH 401/417] build(deps): bump aws-java-sdk-s3 in /framework/aws Bumps [aws-java-sdk-s3](https://github.com/aws/aws-sdk-java) from 1.11.931 to 1.12.261. - [Release notes](https://github.com/aws/aws-sdk-java/releases) - [Changelog](https://github.com/aws/aws-sdk-java/blob/master/CHANGELOG.md) - [Commits](https://github.com/aws/aws-sdk-java/compare/1.11.931...1.12.261) --- updated-dependencies: - dependency-name: com.amazonaws:aws-java-sdk-s3 dependency-type: direct:production ... Signed-off-by: dependabot[bot] --- framework/aws/pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/framework/aws/pom.xml b/framework/aws/pom.xml index 4a211914b..b88667264 100644 --- a/framework/aws/pom.xml +++ b/framework/aws/pom.xml @@ -17,7 +17,7 @@ - 1.11.931 + 1.12.261 From 05aa9c8ef15cbb01a1ea2dc38f3495c0f8d181cb Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 11 Aug 2022 21:19:39 +0000 Subject: [PATCH 402/417] build(deps): bump hadoop-common from 3.2.3 to 3.2.4 in /big-data Bumps hadoop-common from 3.2.3 to 3.2.4. --- updated-dependencies: - dependency-name: org.apache.hadoop:hadoop-common dependency-type: direct:production ... Signed-off-by: dependabot[bot] --- big-data/pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/big-data/pom.xml b/big-data/pom.xml index f8de99e6f..7479e6c1e 100644 --- a/big-data/pom.xml +++ b/big-data/pom.xml @@ -19,7 +19,7 @@ - 3.2.3 + 3.2.4 2.8.1 2.8.1 1.26.0 From 8889bdc04a58af9c52875d35d2379251bdd5a4d6 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 18 Aug 2022 19:08:45 +0000 Subject: [PATCH 403/417] build(deps): bump undertow-core in /framework/web/undertow Bumps [undertow-core](https://github.com/undertow-io/undertow) from 2.2.11.Final to 2.2.19.Final. - [Release notes](https://github.com/undertow-io/undertow/releases) - [Commits](https://github.com/undertow-io/undertow/compare/2.2.11.Final...2.2.19.Final) --- updated-dependencies: - dependency-name: io.undertow:undertow-core dependency-type: direct:production ... Signed-off-by: dependabot[bot] --- framework/web/undertow/pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/framework/web/undertow/pom.xml b/framework/web/undertow/pom.xml index 47711813d..1a707e48b 100644 --- a/framework/web/undertow/pom.xml +++ b/framework/web/undertow/pom.xml @@ -12,7 +12,7 @@ undertow - 2.2.11.Final + 2.2.19.Final From 3319dd64795366b7aa2182091398b9f9f94832b8 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 1 Sep 2022 22:25:15 +0000 Subject: [PATCH 404/417] build(deps): bump jsoup in /production-component/common-util Bumps [jsoup](https://github.com/jhy/jsoup) from 1.14.2 to 1.15.3. - [Release notes](https://github.com/jhy/jsoup/releases) - [Changelog](https://github.com/jhy/jsoup/blob/master/CHANGES) - [Commits](https://github.com/jhy/jsoup/compare/jsoup-1.14.2...jsoup-1.15.3) --- updated-dependencies: - dependency-name: org.jsoup:jsoup dependency-type: direct:production ... Signed-off-by: dependabot[bot] --- production-component/common-util/pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/production-component/common-util/pom.xml b/production-component/common-util/pom.xml index 0101a7c48..2f5c4fa7c 100644 --- a/production-component/common-util/pom.xml +++ b/production-component/common-util/pom.xml @@ -25,7 +25,7 @@ 3.6 29.0-jre - 1.14.2 + 1.15.3 5.0.4 From 921e38e21b8f1f851ef183bebbadb91282d5b124 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Sat, 17 Sep 2022 00:00:11 +0000 Subject: [PATCH 405/417] build(deps): bump calcite-core from 1.26.0 to 1.32.0 in /big-data Bumps [calcite-core](https://github.com/apache/calcite) from 1.26.0 to 1.32.0. - [Release notes](https://github.com/apache/calcite/releases) - [Commits](https://github.com/apache/calcite/compare/calcite-1.26.0...calcite-1.32.0) --- updated-dependencies: - dependency-name: org.apache.calcite:calcite-core dependency-type: direct:production ... Signed-off-by: dependabot[bot] --- big-data/pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/big-data/pom.xml b/big-data/pom.xml index f8de99e6f..43c08377e 100644 --- a/big-data/pom.xml +++ b/big-data/pom.xml @@ -22,7 +22,7 @@ 3.2.3 2.8.1 2.8.1 - 1.26.0 + 1.32.0 From dd5af295c9ff8d0e9971464cee4161f7558f5f31 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 12 Oct 2022 20:49:07 +0000 Subject: [PATCH 406/417] build(deps): bump shiro-core from 1.9.1 to 1.10.0 in /framework/common Bumps [shiro-core](https://github.com/apache/shiro) from 1.9.1 to 1.10.0. - [Release notes](https://github.com/apache/shiro/releases) - [Changelog](https://github.com/apache/shiro/blob/main/RELEASE-NOTES) - [Commits](https://github.com/apache/shiro/compare/shiro-root-1.9.1...shiro-root-1.10.0) --- updated-dependencies: - dependency-name: org.apache.shiro:shiro-core dependency-type: direct:production ... Signed-off-by: dependabot[bot] --- framework/common/pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/framework/common/pom.xml b/framework/common/pom.xml index f50362879..e1ef8ec97 100644 --- a/framework/common/pom.xml +++ b/framework/common/pom.xml @@ -28,7 +28,7 @@ 1.1 2.11.1 4.1.2 - 1.9.1 + 1.10.0 2.1.17 6.2.1 From 971043f6fdb68c50cfd7f71fe1c34aef4c1d59c1 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 16 Nov 2022 03:15:38 +0000 Subject: [PATCH 407/417] build(deps): bump jackson-databind in /production-component/common-util Bumps [jackson-databind](https://github.com/FasterXML/jackson) from 2.12.6.1 to 2.12.7.1. - [Release notes](https://github.com/FasterXML/jackson/releases) - [Commits](https://github.com/FasterXML/jackson/commits) --- updated-dependencies: - dependency-name: com.fasterxml.jackson.core:jackson-databind dependency-type: direct:production ... Signed-off-by: dependabot[bot] --- production-component/common-util/pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/production-component/common-util/pom.xml b/production-component/common-util/pom.xml index 0101a7c48..26eb03477 100644 --- a/production-component/common-util/pom.xml +++ b/production-component/common-util/pom.xml @@ -30,7 +30,7 @@ 5.0.4 1.2.83 - 2.12.6.1 + 2.12.7.1 2.1.3 From bee74124e6a0fd105c19bfd347354108446ecc8e Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 6 Dec 2022 00:41:24 +0000 Subject: [PATCH 408/417] build(deps): bump commons-net in /framework/common/commons-net Bumps commons-net from 3.6 to 3.9.0. --- updated-dependencies: - dependency-name: commons-net:commons-net dependency-type: direct:production ... Signed-off-by: dependabot[bot] --- framework/common/commons-net/pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/framework/common/commons-net/pom.xml b/framework/common/commons-net/pom.xml index 664de8786..8efb851e6 100644 --- a/framework/common/commons-net/pom.xml +++ b/framework/common/commons-net/pom.xml @@ -15,7 +15,7 @@ commons-net commons-net - 3.6 + 3.9.0 From 7455b95a2297cf2dca3d8ab5c28d85b4cb812630 Mon Sep 17 00:00:00 2001 From: xpcoder Date: Sun, 5 Feb 2023 13:18:03 +0800 Subject: [PATCH 409/417] init --- .../org/laidu/learn/algorithm/basic/linear/package-info.java | 4 ++++ .../java/org/laidu/learn/algorithm/basic/package-info.java | 4 ++++ 2 files changed, 8 insertions(+) create mode 100644 algorithm/src/main/java/org/laidu/learn/algorithm/basic/linear/package-info.java create mode 100644 algorithm/src/main/java/org/laidu/learn/algorithm/basic/package-info.java diff --git a/algorithm/src/main/java/org/laidu/learn/algorithm/basic/linear/package-info.java b/algorithm/src/main/java/org/laidu/learn/algorithm/basic/linear/package-info.java new file mode 100644 index 000000000..093685de9 --- /dev/null +++ b/algorithm/src/main/java/org/laidu/learn/algorithm/basic/linear/package-info.java @@ -0,0 +1,4 @@ +/** + * 线性结构 + */ +package org.laidu.learn.algorithm.basic.linear; \ No newline at end of file diff --git a/algorithm/src/main/java/org/laidu/learn/algorithm/basic/package-info.java b/algorithm/src/main/java/org/laidu/learn/algorithm/basic/package-info.java new file mode 100644 index 000000000..9d82511f2 --- /dev/null +++ b/algorithm/src/main/java/org/laidu/learn/algorithm/basic/package-info.java @@ -0,0 +1,4 @@ +/** + * 基础算法学习 + */ +package org.laidu.learn.algorithm.basic; \ No newline at end of file From 41964108c1cfa506a10f8cb1a0dc8ec7e4ee179c Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 17 Apr 2023 17:42:10 +0000 Subject: [PATCH 410/417] build(deps): bump spring-core from 5.3.20 to 5.3.27 in /convenient-util Bumps [spring-core](https://github.com/spring-projects/spring-framework) from 5.3.20 to 5.3.27. - [Release notes](https://github.com/spring-projects/spring-framework/releases) - [Commits](https://github.com/spring-projects/spring-framework/compare/v5.3.20...v5.3.27) --- updated-dependencies: - dependency-name: org.springframework:spring-core dependency-type: direct:production ... Signed-off-by: dependabot[bot] --- convenient-util/pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/convenient-util/pom.xml b/convenient-util/pom.xml index b389d046a..439f71b9c 100644 --- a/convenient-util/pom.xml +++ b/convenient-util/pom.xml @@ -24,7 +24,7 @@ 3.4.0 1.1.0 - 5.3.20 + 5.3.27 From 59d04d48b1e1e10ba63ad24a0e48933a72ddef9d Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 18 Apr 2023 22:20:53 +0000 Subject: [PATCH 411/417] build(deps): bump jetty-server in /language-feature Bumps [jetty-server](https://github.com/eclipse/jetty.project) from 10.0.10 to 10.0.14. - [Release notes](https://github.com/eclipse/jetty.project/releases) - [Commits](https://github.com/eclipse/jetty.project/compare/jetty-10.0.10...jetty-10.0.14) --- updated-dependencies: - dependency-name: org.eclipse.jetty:jetty-server dependency-type: direct:production ... Signed-off-by: dependabot[bot] --- language-feature/pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/language-feature/pom.xml b/language-feature/pom.xml index 32098ed75..0bbe09a9a 100644 --- a/language-feature/pom.xml +++ b/language-feature/pom.xml @@ -31,7 +31,7 @@ org.eclipse.jetty jetty-server - 10.0.10 + 10.0.14 From 47daa5ea99a8d87fa1659f41545c47803f17a82e Mon Sep 17 00:00:00 2001 From: laidu823 Date: Fri, 19 May 2023 00:30:05 +0800 Subject: [PATCH 412/417] =?UTF-8?q?=E5=8D=87=E7=BA=A7jdk17=20=E7=A7=BB?= =?UTF-8?q?=E9=99=A4=E9=83=A8=E5=88=86=E6=A8=A1=E5=9D=97?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../common/jodd/src/main/resources/rebel.xml | 14 --- framework/common/pom.xml | 11 +-- pom.xml | 93 +++++++++---------- production-component/common-util/pom.xml | 11 +-- 4 files changed, 56 insertions(+), 73 deletions(-) delete mode 100644 framework/common/jodd/src/main/resources/rebel.xml diff --git a/framework/common/jodd/src/main/resources/rebel.xml b/framework/common/jodd/src/main/resources/rebel.xml deleted file mode 100644 index 945e975b2..000000000 --- a/framework/common/jodd/src/main/resources/rebel.xml +++ /dev/null @@ -1,14 +0,0 @@ - - - - - - -

                    - - - - diff --git a/framework/common/pom.xml b/framework/common/pom.xml index e1ef8ec97..cc25ea07c 100644 --- a/framework/common/pom.xml +++ b/framework/common/pom.xml @@ -1,6 +1,6 @@ - framework @@ -20,7 +20,6 @@ apache-poi shiro rxjava - jodd @@ -76,19 +75,19 @@ org.jodd jodd-core - ${jodd.version} + 5.3.0 org.jodd jodd-bean - ${jodd.version} + 5.1.6 org.jodd jodd-http - ${jodd.version} + 6.3.0 diff --git a/pom.xml b/pom.xml index 24e3ad109..c8e00d1b9 100644 --- a/pom.xml +++ b/pom.xml @@ -1,6 +1,6 @@ - 4.0.0 @@ -74,7 +74,8 @@ github - ${env.GITHUB_OAUTH_TOKEN} + ${env.GITHUB_OAUTH_TOKEN} + ${project.artifactId} 0.12 1.7 @@ -84,7 +85,7 @@ 2.1.0 - 1.18.10 + 1.18.20 1.2.9 @@ -95,7 +96,7 @@ - + org.junit junit-bom 5.7.1 @@ -145,27 +146,27 @@ - - org.junit.jupiter - junit-jupiter-api - test - - - junit - junit - ${junit.version} - test - - - org.junit.jupiter - junit-jupiter-engine - test - - - org.junit.vintage - junit-vintage-engine - test - + + org.junit.jupiter + junit-jupiter-api + test + + + junit + junit + ${junit.version} + test + + + org.junit.jupiter + junit-jupiter-engine + test + + + org.junit.vintage + junit-vintage-engine + test + @@ -210,25 +211,25 @@ - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + org.apache.maven.plugins @@ -318,6 +319,4 @@ - - diff --git a/production-component/common-util/pom.xml b/production-component/common-util/pom.xml index 2904fbf20..cc9bd051d 100644 --- a/production-component/common-util/pom.xml +++ b/production-component/common-util/pom.xml @@ -1,6 +1,6 @@ - production-component @@ -27,10 +27,10 @@ 29.0-jre 1.15.3 - 5.0.4 + 5.3.0 1.2.83 - 2.12.7.1 + 2.14.2 2.1.3 @@ -151,11 +151,10 @@ org.jodd jodd-bean - ${jodd.version} + 5.1.6 - com.alibaba From 38a2a28079e72d500207f6a76b218ae8e508cec9 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 14 Jun 2023 22:29:16 +0000 Subject: [PATCH 413/417] build(deps): bump guava in /production-component/common-util Bumps [guava](https://github.com/google/guava) from 29.0-jre to 32.0.0-jre. - [Release notes](https://github.com/google/guava/releases) - [Commits](https://github.com/google/guava/commits) --- updated-dependencies: - dependency-name: com.google.guava:guava dependency-type: direct:production ... Signed-off-by: dependabot[bot] --- production-component/common-util/pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/production-component/common-util/pom.xml b/production-component/common-util/pom.xml index cc9bd051d..f5ea7aebb 100644 --- a/production-component/common-util/pom.xml +++ b/production-component/common-util/pom.xml @@ -24,7 +24,7 @@ 3.6 - 29.0-jre + 32.0.0-jre 1.15.3 5.3.0 From 066560eff31f671d3e9f140bac4de4702688b484 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Fri, 7 Jul 2023 22:07:20 +0000 Subject: [PATCH 414/417] build(deps): bump h2 from 2.1.210 to 2.2.220 in /language-advance/sql Bumps [h2](https://github.com/h2database/h2database) from 2.1.210 to 2.2.220. - [Release notes](https://github.com/h2database/h2database/releases) - [Commits](https://github.com/h2database/h2database/compare/version-2.1.210...version-2.2.220) --- updated-dependencies: - dependency-name: com.h2database:h2 dependency-type: direct:production ... Signed-off-by: dependabot[bot] --- language-advance/sql/pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/language-advance/sql/pom.xml b/language-advance/sql/pom.xml index 52669082d..f0368150a 100644 --- a/language-advance/sql/pom.xml +++ b/language-advance/sql/pom.xml @@ -15,7 +15,7 @@ com.h2database h2 - 2.1.210 + 2.2.220 From 7f70b1a63e29c40413f8740ed7e14cc0e05092cc Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Fri, 7 Jul 2023 22:07:26 +0000 Subject: [PATCH 415/417] build(deps): bump h2 in /framework/spring/spring-data/spring-mybatis Bumps [h2](https://github.com/h2database/h2database) from 2.1.210 to 2.2.220. - [Release notes](https://github.com/h2database/h2database/releases) - [Commits](https://github.com/h2database/h2database/compare/version-2.1.210...version-2.2.220) --- updated-dependencies: - dependency-name: com.h2database:h2 dependency-type: direct:production ... Signed-off-by: dependabot[bot] --- framework/spring/spring-data/spring-mybatis/pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/framework/spring/spring-data/spring-mybatis/pom.xml b/framework/spring/spring-data/spring-mybatis/pom.xml index bb6dea107..1cc9ab7ca 100644 --- a/framework/spring/spring-data/spring-mybatis/pom.xml +++ b/framework/spring/spring-data/spring-mybatis/pom.xml @@ -105,7 +105,7 @@ com.h2database h2 - 2.1.210 + 2.2.220 From aa9d58a551f58a9881afbdb52b9e1e315017908f Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 19 Sep 2023 20:56:50 +0000 Subject: [PATCH 416/417] build(deps): bump io.undertow:undertow-core in /framework/web/undertow Bumps [io.undertow:undertow-core](https://github.com/undertow-io/undertow) from 2.2.19.Final to 2.2.25.Final. - [Commits](https://github.com/undertow-io/undertow/compare/2.2.19.Final...2.2.25.Final) --- updated-dependencies: - dependency-name: io.undertow:undertow-core dependency-type: direct:production ... Signed-off-by: dependabot[bot] --- framework/web/undertow/pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/framework/web/undertow/pom.xml b/framework/web/undertow/pom.xml index 1a707e48b..236434be4 100644 --- a/framework/web/undertow/pom.xml +++ b/framework/web/undertow/pom.xml @@ -12,7 +12,7 @@ undertow - 2.2.19.Final + 2.2.25.Final From 97739681eeb6b4fec841adabbb912d04971af7e9 Mon Sep 17 00:00:00 2001 From: laidu823 Date: Thu, 21 Sep 2023 00:20:37 +0800 Subject: [PATCH 417/417] =?UTF-8?q?=E7=A7=BB=E9=99=A4=E6=97=A0=E7=94=A8?= =?UTF-8?q?=E6=A8=A1=E5=9D=97?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../common-util/src/main/resources/rebel.xml | 14 -------------- .../crawler-helper/src/main/resources/rebel.xml | 14 -------------- 2 files changed, 28 deletions(-) delete mode 100644 production-component/common-util/src/main/resources/rebel.xml delete mode 100644 production-component/crawler-helper/src/main/resources/rebel.xml diff --git a/production-component/common-util/src/main/resources/rebel.xml b/production-component/common-util/src/main/resources/rebel.xml deleted file mode 100644 index b3f943733..000000000 --- a/production-component/common-util/src/main/resources/rebel.xml +++ /dev/null @@ -1,14 +0,0 @@ - - - - - - - - - - - diff --git a/production-component/crawler-helper/src/main/resources/rebel.xml b/production-component/crawler-helper/src/main/resources/rebel.xml deleted file mode 100644 index 9e565b123..000000000 --- a/production-component/crawler-helper/src/main/resources/rebel.xml +++ /dev/null @@ -1,14 +0,0 @@ - - - - - - - - - - -