国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

微服務(wù)——RestClient查詢文檔

這篇具有很好參考價(jià)值的文章主要介紹了微服務(wù)——RestClient查詢文檔。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問(wèn)。

快速入門

微服務(wù)——RestClient查詢文檔,微服務(wù),微服務(wù),架構(gòu),云原生

返回結(jié)果直接把json風(fēng)格的結(jié)果封裝為SearchReponse對(duì)象返回

public class HotelSearchTest {
    private RestHighLevelClient client;

    @Test
    void testMatchAll() throws IOException {
        //1.準(zhǔn)備request
        SearchRequest request = new SearchRequest("hotel");
        //2.準(zhǔn)備DSl
        request.source().query(QueryBuilders.matchAllQuery());
        //3.發(fā)送請(qǐng)求
        SearchResponse response = client.search(request, RequestOptions.DEFAULT);

        System.out.println(response);
    }
    

    //執(zhí)行前初始化
    @BeforeEach
    void setUp(){
        this.client=new RestHighLevelClient(RestClient.builder(
                HttpHost.create("http://xxx.xxx.xxx.xxx:9200")
              //HttpHost.create("http://xxx.xxx.xxx.xxx:9200") 集群時(shí)添加更多的地址
        ));
    }

    //銷毀
    @AfterEach
    void tearDown() throws IOException {
        this.client.close();
    }
}

?文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-631068.html

?響應(yīng)結(jié)果解析?

微服務(wù)——RestClient查詢文檔,微服務(wù),微服務(wù),架構(gòu),云原生

    @Test
    void testMatchAll() throws IOException {
        //1.準(zhǔn)備request
        SearchRequest request = new SearchRequest("hotel");
        //2.準(zhǔn)備DSl
        request.source().query(QueryBuilders.matchAllQuery());
        //3.發(fā)送請(qǐng)求
        SearchResponse response = client.search(request, RequestOptions.DEFAULT);

        //4.解析響應(yīng)
        SearchHits searchHits = response.getHits();
        //4.1獲取總條數(shù)
        long total = searchHits.getTotalHits().value;
        System.out.println("共搜索到"+total+"條數(shù)據(jù)");
        //4.2文檔數(shù)組
        SearchHit[] hits = searchHits.getHits();
        //4.3遍歷
        for (SearchHit hit : hits) {
            //獲取文檔source
            String json = hit.getSourceAsString();
            //反序列化
            HotelDoc hotelDoc = JSON.parseObject(json, HotelDoc.class);
            System.out.println("hotelDoc="+hotelDoc);
        }
    }

?默認(rèn)只返回前10條數(shù)據(jù)?微服務(wù)——RestClient查詢文檔,微服務(wù),微服務(wù),架構(gòu),云原生

?微服務(wù)——RestClient查詢文檔,微服務(wù),微服務(wù),架構(gòu),云原生

?

?在.source()中query,排序,分頁(yè),高亮等功能

QueryBuildes中準(zhǔn)備了所有查詢,match,match_all,boolean等

微服務(wù)——RestClient查詢文檔,微服務(wù),微服務(wù),架構(gòu),云原生

match、term、range、bool查詢

全文檢索查詢

微服務(wù)——RestClient查詢文檔,微服務(wù),微服務(wù),架構(gòu),云原生

?

    @Test
    void testMatch() throws IOException {
        //1.準(zhǔn)備request
        SearchRequest request = new SearchRequest("hotel");
        //2.準(zhǔn)備DSl
        request.source().query(QueryBuilders.matchQuery("all","如家"));
        //3.發(fā)送請(qǐng)求
        SearchResponse response = client.search(request, RequestOptions.DEFAULT);

        //4.解析響應(yīng)
        SearchHits searchHits = response.getHits();
        //4.1獲取總條數(shù)
        long total = searchHits.getTotalHits().value;
        System.out.println("共搜索到"+total+"條數(shù)據(jù)");
        //4.2文檔數(shù)組
        SearchHit[] hits = searchHits.getHits();
        //4.3遍歷
        for (SearchHit hit : hits) {
            //獲取文檔source
            String json = hit.getSourceAsString();
            //反序列化
            HotelDoc hotelDoc = JSON.parseObject(json, HotelDoc.class);
            System.out.println("hotelDoc="+hotelDoc);
        }
    }

微服務(wù)——RestClient查詢文檔,微服務(wù),微服務(wù),架構(gòu),云原生

對(duì)比match和match_all,不同的地方只有一點(diǎn)點(diǎn),這里直接抽取4往后的公共部分,使用ctrl+alt+m抽取

?

public class HotelSearchTest {
    private RestHighLevelClient client;

    @Test
    void testMatchAll() throws IOException {
        //1.準(zhǔn)備request
        SearchRequest request = new SearchRequest("hotel");
        //2.準(zhǔn)備DSl
        request.source().query(QueryBuilders.matchAllQuery());
        //3.發(fā)送請(qǐng)求
        SearchResponse response = client.search(request, RequestOptions.DEFAULT);

        handleResponse(response);
    }

    @Test
    void testMatch() throws IOException {
        //1.準(zhǔn)備request
        SearchRequest request = new SearchRequest("hotel");
        //2.準(zhǔn)備DSl
        request.source().query(QueryBuilders.matchQuery("all","如家"));
        //3.發(fā)送請(qǐng)求
        SearchResponse response = client.search(request, RequestOptions.DEFAULT);

        handleResponse(response);
    }

    private static void handleResponse(SearchResponse response) {
        //4.解析響應(yīng)
        SearchHits searchHits = response.getHits();
        //4.1獲取總條數(shù)
        long total = searchHits.getTotalHits().value;
        System.out.println("共搜索到"+total+"條數(shù)據(jù)");
        //4.2文檔數(shù)組
        SearchHit[] hits = searchHits.getHits();
        //4.3遍歷
        for (SearchHit hit : hits) {
            //獲取文檔source
            String json = hit.getSourceAsString();
            //反序列化
            HotelDoc hotelDoc = JSON.parseObject(json, HotelDoc.class);
            System.out.println("hotelDoc="+hotelDoc);
        }
    }


    //執(zhí)行前初始化
    @BeforeEach
    void setUp(){
        this.client=new RestHighLevelClient(RestClient.builder(
                HttpHost.create("http://xxx.xxx.xxx.xxx:9200")
              //HttpHost.create("http://xxx.xxx.xxx.xxx:9200") 集群時(shí)添加更多的地址
        ));
    }

    //銷毀
    @AfterEach
    void tearDown() throws IOException {
        this.client.close();
    }
}

?精確查詢

微服務(wù)——RestClient查詢文檔,微服務(wù),微服務(wù),架構(gòu),云原生

微服務(wù)——RestClient查詢文檔,微服務(wù),微服務(wù),架構(gòu),云原生?

一個(gè)boolean查詢里面包含了term查詢和?range查詢

@Test
    void testBool() throws IOException {
        //1.準(zhǔn)備request
        SearchRequest request = new SearchRequest("hotel");
        //2.準(zhǔn)備DSl
        //2.1準(zhǔn)備BooleanQuery
        BoolQueryBuilder boolQuery = QueryBuilders.boolQuery();
        //2.2添加term
        boolQuery.must(QueryBuilders.termQuery("city","上海"));
        //2.3添加range
        boolQuery.filter(QueryBuilders.rangeQuery("price").lte(250));

        request.source().query(boolQuery);
        //3.發(fā)送請(qǐng)求
        SearchResponse response = client.search(request, RequestOptions.DEFAULT);

        handleResponse(response);
    }

?微服務(wù)——RestClient查詢文檔,微服務(wù),微服務(wù),架構(gòu),云原生

?排序和分頁(yè)

微服務(wù)——RestClient查詢文檔,微服務(wù),微服務(wù),架構(gòu),云原生

    @Test
    void testPageAndSort() throws IOException {
        //前端傳來(lái)頁(yè)碼,每頁(yè)大小
        int page=1,size=5;
        //1.準(zhǔn)備request
        SearchRequest request = new SearchRequest("hotel");
        //2.準(zhǔn)備DSl
        //2.1準(zhǔn)備query
        request.source().query(QueryBuilders.matchAllQuery());
        //2.2排序 sort
        request.source().sort("price", SortOrder.ASC);
        //2.3分頁(yè) from,size
        request.source().from((page-1)*size).size(5);
        //3.發(fā)送請(qǐng)求
        SearchResponse response = client.search(request, RequestOptions.DEFAULT);

        handleResponse(response);
    }

?微服務(wù)——RestClient查詢文檔,微服務(wù),微服務(wù),架構(gòu),云原生

高亮

構(gòu)建

微服務(wù)——RestClient查詢文檔,微服務(wù),微服務(wù),架構(gòu),云原生

    @Test
    void testHighlight() throws IOException {
        //1.準(zhǔn)備request
        SearchRequest request = new SearchRequest("hotel");
        //2.準(zhǔn)備DSl
        //2.1準(zhǔn)備query
        request.source().query(QueryBuilders.matchQuery("all","如家"));
        //2.2高亮
        request.source().highlighter(new HighlightBuilder().field("name").requireFieldMatch(false));
        //3.發(fā)送請(qǐng)求
        SearchResponse response = client.search(request, RequestOptions.DEFAULT);
        //4.解析響應(yīng)
        handleResponse(response);
    }

?微服務(wù)——RestClient查詢文檔,微服務(wù),微服務(wù),架構(gòu),云原生

?

?解析

微服務(wù)——RestClient查詢文檔,微服務(wù),微服務(wù),架構(gòu),云原生?逐層解析json結(jié)果

    @Test
    void testHighlight() throws IOException {
        //1.準(zhǔn)備request
        SearchRequest request = new SearchRequest("hotel");
        //2.準(zhǔn)備DSl
        //2.1準(zhǔn)備query
        request.source().query(QueryBuilders.matchQuery("all","如家"));
        //2.2高亮
        request.source().highlighter(new HighlightBuilder().field("name").requireFieldMatch(false));
        //3.發(fā)送請(qǐng)求
        SearchResponse response = client.search(request, RequestOptions.DEFAULT);
        //4.解析響應(yīng)
        handleResponse(response);
    }

    private static void handleResponse(SearchResponse response) {
        //4.解析響應(yīng)
        SearchHits searchHits = response.getHits();
        //4.1獲取總條數(shù)
        long total = searchHits.getTotalHits().value;
        System.out.println("共搜索到"+total+"條數(shù)據(jù)");
        //4.2文檔數(shù)組
        SearchHit[] hits = searchHits.getHits();
        //4.3遍歷
        for (SearchHit hit : hits) {
            //獲取文檔source
            String json = hit.getSourceAsString();
            //反序列化
            HotelDoc hotelDoc = JSON.parseObject(json, HotelDoc.class);

            //獲取高亮結(jié)果
            Map<String, HighlightField> highlightFields = hit.getHighlightFields();
            if(!CollectionUtils.isEmpty(highlightFields)) //判斷map是否為空的工具類
            {
                //根據(jù)名字獲取高亮結(jié)果
                HighlightField highlightField = highlightFields.get("name");
                if(highlightField!=null){
                    //獲取高亮值
                    String name = highlightField.getFragments()[0].string();
                    //覆蓋非高亮結(jié)果
                    hotelDoc.setName(name);
                }
            }
            System.out.println("hotelDoc="+hotelDoc);
        }
    }

?微服務(wù)——RestClient查詢文檔,微服務(wù),微服務(wù),架構(gòu),云原生

?黑馬旅游案例——酒店搜索和分頁(yè)

微服務(wù)——RestClient查詢文檔,微服務(wù),微服務(wù),架構(gòu),云原生

?定義實(shí)體類

用于接收前端傳來(lái)的參數(shù)

@Data
public class RequestParams {
    private String key;
    private Integer page;
    private Integer size;
    private String sortBy;
}

Controller層中

微服務(wù)——RestClient查詢文檔,微服務(wù),微服務(wù),架構(gòu),云原生

?返回值定義

@Data
public class PageResult {
    private Long total;
    private List<HotelDoc> hotels;

    public PageResult() {
    }

    public PageResult(Long total, List<HotelDoc> hotels) {
        this.total = total;
        this.hotels = hotels;
    }
}

在啟動(dòng)類中定義一個(gè)Bean

@MapperScan("cn.itcast.hotel.mapper")
@SpringBootApplication
public class HotelDemoApplication {

    public static void main(String[] args) {
        SpringApplication.run(HotelDemoApplication.class, args);
    }
    @Bean
    public RestHighLevelClient client(){
        return new RestHighLevelClient(RestClient.builder(
                HttpHost.create("http://xxx.xxx.xxx.xxx:9200")
                //HttpHost.create("http://xxx.xxx.xxx.xxx:9200") 集群時(shí)添加更多的地址
        ));
    }
}
@RestController
@RequestMapping("hotel")
public class HotelController {

    @Autowired
    private IHotelService hotelService;

    /**
     * 搜索和分頁(yè)
     * @param requestParams
     * @return
     */
    @PostMapping("/list")
    public PageResult search(@RequestBody RequestParams requestParams){
        return hotelService.search(requestParams);
    }
}

?

Service層中

public interface IHotelService extends IService<Hotel> {
    PageResult search(RequestParams requestParams);
}
@Service
public class HotelService extends ServiceImpl<HotelMapper, Hotel> implements IHotelService {
    @Autowired
    private RestHighLevelClient client;
    @Override
    public PageResult search(RequestParams requestParams) {

        try {
        //1.準(zhǔn)備request
        SearchRequest request = new SearchRequest("hotel");
        //2.準(zhǔn)備DSl
        //2.1query
        String key= requestParams.getKey();
        if(key==null||"".equals(key)){  //沒(méi)有查詢內(nèi)容時(shí)直接查詢?nèi)?            request.source().query(QueryBuilders.matchAllQuery());
        }else {
            request.source().query(QueryBuilders.matchQuery("all", key));
        }
        //2.2分頁(yè)
        int page=requestParams.getPage();
        int size=requestParams.getSize();
        request.source().from((page-1)*size).size(size);
        //3.發(fā)送請(qǐng)求
        SearchResponse response= client.search(request, RequestOptions.DEFAULT);
            //4.解析響應(yīng)
            handleResponse(response);
            return null;
        } catch (IOException e) {
            throw new RuntimeException(e);
        }
    }

    private PageResult handleResponse(SearchResponse response) {
        //4.解析響應(yīng)
        SearchHits searchHits = response.getHits();
        //4.1獲取總條數(shù)
        long total = searchHits.getTotalHits().value;
        System.out.println("共搜索到"+total+"條數(shù)據(jù)");
        //4.2文檔數(shù)組
        SearchHit[] hits = searchHits.getHits();
        //4.3遍歷
        List<HotelDoc> hotels=new ArrayList<>();
        for (SearchHit hit : hits) {
            //獲取文檔source
            String json = hit.getSourceAsString();
            //反序列化
            HotelDoc hotelDoc = JSON.parseObject(json, HotelDoc.class);
            hotels.add(hotelDoc);
        }

        return new PageResult(total,hotels);
    }
}

微服務(wù)——RestClient查詢文檔,微服務(wù),微服務(wù),架構(gòu),云原生

?微服務(wù)——RestClient查詢文檔,微服務(wù),微服務(wù),架構(gòu),云原生

成功搜索

?

?黑馬旅游案例——條件過(guò)濾

微服務(wù)——RestClient查詢文檔,微服務(wù),微服務(wù),架構(gòu),云原生

修改DTO

微服務(wù)——RestClient查詢文檔,微服務(wù),微服務(wù),架構(gòu),云原生

@Data
public class RequestParams {
    private String key;
    private Integer page;
    private Integer size;
    private String sortBy;
    private String brand;
    private String starName;
    private String city;
    private Integer minPrice;
    private Integer maxPrice;
}

?微服務(wù)——RestClient查詢文檔,微服務(wù),微服務(wù),架構(gòu),云原生

Service層中

修改如下,加了多條件過(guò)濾,并抽取出去

    @Override
    public PageResult search(RequestParams requestParams) {
        try {
             //1.準(zhǔn)備request
             SearchRequest request = new SearchRequest("hotel");
             //2.準(zhǔn)備DSl
            //2.1query
            buildBasicQuery(requestParams, request);

            //2.2分頁(yè)
             int page=requestParams.getPage();
             int size=requestParams.getSize();
             request.source().from((page-1)*size).size(size);
             //3.發(fā)送請(qǐng)求
             SearchResponse response= client.search(request, RequestOptions.DEFAULT);
                 //4.解析響應(yīng)
                return handleResponse(response);
        } catch (IOException e) {
            throw new RuntimeException(e);
        }
    }

    private static void buildBasicQuery(RequestParams requestParams, SearchRequest request) {
        //構(gòu)建BooleanQuery
        BoolQueryBuilder boolQuery = QueryBuilders.boolQuery();
        //關(guān)鍵字搜索
        String key= requestParams.getKey();
        if(key==null||"".equals(key)){  //沒(méi)有查詢內(nèi)容時(shí)直接查詢?nèi)?            boolQuery.must(QueryBuilders.matchAllQuery());
        }else {
            boolQuery.must(QueryBuilders.matchQuery("all", key));
        }
        //城市條件
        if(requestParams.getCity()!=null&&!requestParams.getCity().equals("")){
            boolQuery.filter(QueryBuilders.termQuery("city", requestParams.getCity()));
        }
        //品牌條件
        if(requestParams.getBrand()!=null&&!requestParams.getBrand().equals("")){
            boolQuery.filter(QueryBuilders.termQuery("brand", requestParams.getBrand()));
        }
        //星級(jí)條件
        if(requestParams.getStarName()!=null&&!requestParams.getStarName().equals("")){
            boolQuery.filter(QueryBuilders.termQuery("starName", requestParams.getStarName()));
        }
        //價(jià)格條件
        if(requestParams.getMinPrice()!=null&& requestParams.getMaxPrice()!=null){
            boolQuery.filter(QueryBuilders.rangeQuery("price")
                    .gte(requestParams.getMinPrice())
                    .lte(requestParams.getMaxPrice()));
        }
        request.source().query(boolQuery);
    }

微服務(wù)——RestClient查詢文檔,微服務(wù),微服務(wù),架構(gòu),云原生

?

?黑馬旅游案例——我附近的酒店

微服務(wù)——RestClient查詢文檔,微服務(wù),微服務(wù),架構(gòu),云原生

距離排序?

微服務(wù)——RestClient查詢文檔,微服務(wù),微服務(wù),架構(gòu),云原生

DTO修改

@Data
public class RequestParams {
    private String key;
    private Integer page;
    private Integer size;
    private String sortBy;
    private String brand;
    private String starName;
    private String city;
    private Integer minPrice;
    private Integer maxPrice;
    private String location;
}

Service中?

?修改如下

新增2.3部分

    @Override
    public PageResult search(RequestParams requestParams) {
        try {
             //1.準(zhǔn)備request
             SearchRequest request = new SearchRequest("hotel");
             //2.準(zhǔn)備DSl
            //2.1query
            buildBasicQuery(requestParams, request);

            //2.2分頁(yè)
             int page=requestParams.getPage();
             int size=requestParams.getSize();
             request.source().from((page-1)*size).size(size);

             //2.3排序
            String location = requestParams.getLocation();
            if(location!=null&&!location.equals("")){
                request.source().sort(SortBuilders
                        .geoDistanceSort("location",new GeoPoint(location))
                        .order(SortOrder.ASC)
                        .unit(DistanceUnit.KILOMETERS)
                );
            }
            //3.發(fā)送請(qǐng)求
             SearchResponse response= client.search(request, RequestOptions.DEFAULT);
                 //4.解析響應(yīng)
                return handleResponse(response);
        } catch (IOException e) {
            throw new RuntimeException(e);
        }
    }

微服務(wù)——RestClient查詢文檔,微服務(wù),微服務(wù),架構(gòu),云原生

DTO修改

@Data
@NoArgsConstructor
public class HotelDoc {
    private Long id;
    private String name;
    private String address;
    private Integer price;
    private Integer score;
    private String brand;
    private String city;
    private String starName;
    private String business;
    private String location;
    private String pic;
    private Object distance;

    public HotelDoc(Hotel hotel) {
        this.id = hotel.getId();
        this.name = hotel.getName();
        this.address = hotel.getAddress();
        this.price = hotel.getPrice();
        this.score = hotel.getScore();
        this.brand = hotel.getBrand();
        this.city = hotel.getCity();
        this.starName = hotel.getStarName();
        this.business = hotel.getBusiness();
        this.location = hotel.getLatitude() + ", " + hotel.getLongitude();
        this.pic = hotel.getPic();
    }
}

?Service修改

    private PageResult handleResponse(SearchResponse response) {
        //4.解析響應(yīng)
        SearchHits searchHits = response.getHits();
        //4.1獲取總條數(shù)
        long total = searchHits.getTotalHits().value;
        System.out.println("共搜索到"+total+"條數(shù)據(jù)");
        //4.2文檔數(shù)組
        SearchHit[] hits = searchHits.getHits();
        //4.3遍歷
        List<HotelDoc> hotels=new ArrayList<>();
        for (SearchHit hit : hits) {
            //獲取文檔source
            String json = hit.getSourceAsString();
            //反序列化
            HotelDoc hotelDoc = JSON.parseObject(json, HotelDoc.class);
            //獲取排序值
            Object[] sortValues = hit.getSortValues();
            if(sortValues.length>0){
                Object sortValue = sortValues[0];
                hotelDoc.setDistance(sortValue);
            }
            hotels.add(hotelDoc);
        }
        return new PageResult(total,hotels);
    }

這里應(yīng)該成功顯示距離附近酒店以及距離了,但是我的電腦獲取不到位置。?

微服務(wù)——RestClient查詢文檔,微服務(wù),微服務(wù),架構(gòu),云原生

??黑馬旅游案例——廣告置頂

微服務(wù)——RestClient查詢文檔,微服務(wù),微服務(wù),架構(gòu),云原生

?DTO修改

在HotelDoc中添加一個(gè)新字段

private Boolean isAD;

ES數(shù)據(jù)修改

?Service層修改

微服務(wù)——RestClient查詢文檔,微服務(wù),微服務(wù),架構(gòu),云原生

?

    private static void buildBasicQuery(RequestParams requestParams, SearchRequest request) {
        //1.構(gòu)建BooleanQuery
        BoolQueryBuilder boolQuery = QueryBuilders.boolQuery();
        //關(guān)鍵字搜索
        String key= requestParams.getKey();
        if(key==null||"".equals(key)){  //沒(méi)有查詢內(nèi)容時(shí)直接查詢?nèi)?            boolQuery.must(QueryBuilders.matchAllQuery());
        }else {
            boolQuery.must(QueryBuilders.matchQuery("all", key));
        }
        //城市條件
        if(requestParams.getCity()!=null&&!requestParams.getCity().equals("")){
            boolQuery.filter(QueryBuilders.termQuery("city", requestParams.getCity()));
        }
        //品牌條件
        if(requestParams.getBrand()!=null&&!requestParams.getBrand().equals("")){
            boolQuery.filter(QueryBuilders.termQuery("brand", requestParams.getBrand()));
        }
        //星級(jí)條件
        if(requestParams.getStarName()!=null&&!requestParams.getStarName().equals("")){
            boolQuery.filter(QueryBuilders.termQuery("starName", requestParams.getStarName()));
        }
        //價(jià)格條件
        if(requestParams.getMinPrice()!=null&& requestParams.getMaxPrice()!=null){
            boolQuery.filter(QueryBuilders.rangeQuery("price")
                    .gte(requestParams.getMinPrice())
                    .lte(requestParams.getMaxPrice()));
        }

        //2.算分控制
        FunctionScoreQueryBuilder functionScoreQueryBuilder =
                QueryBuilders.functionScoreQuery(
                        //原始查詢,相關(guān)性算分的查詢
                        boolQuery,
                        //function score的數(shù)組
                        new FunctionScoreQueryBuilder.FilterFunctionBuilder[]{
                                //其中的一個(gè)function score 元素
                                new FunctionScoreQueryBuilder.FilterFunctionBuilder(
                                        //過(guò)濾條件
                                        QueryBuilders.termQuery("isAD",true),
                                        //算分函數(shù)
                                        ScoreFunctionBuilders.weightFactorFunction(10)
                                )
                        });
        request.source().query(functionScoreQueryBuilder);
    }

最終查詢時(shí)就可以看見置頂?shù)膹V告了

微服務(wù)——RestClient查詢文檔,微服務(wù),微服務(wù),架構(gòu),云原生

?

到了這里,關(guān)于微服務(wù)——RestClient查詢文檔的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來(lái)自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

覺(jué)得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包