最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

java8 filter方法、Predicate接口的使用方式

 更新時間:2024年07月15日 10:13:27   作者:chushiyunen  
這篇文章主要介紹了java8 filter方法、Predicate接口的使用方式,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教

java8 filter方法、Predicate接口使用

filter方法在stream中起到過濾的作用,可以鏈式操作,不是terminal操作。

Predicate是一個接口,接口方法是test(),返回boolean值.

Predicate常和stream的filter配合使用,實現(xiàn)過濾。

可以多條件組合過濾,如代碼:

public static void main(String[] args) {
    List<String> names = Arrays.asList("張三豐", "張翠山", "張無忌","金毛獅王","趙敏");

    // 張開頭的
    Predicate<String> zhang=(n)->n.startsWith("張"); //
    // 含三豐的
    Predicate<String> sanfeng=(n)->n.contains("三豐");
    // 王結(jié)尾的
    Predicate<String> wang=(n)->n.endsWith("王");
    sanfeng.equals("金毛");

    //Predicate常和stream的filter配合使用,實現(xiàn)過濾
    //和filter結(jié)合用 默認調(diào)用的是test()方法 姓張的
    names.stream().filter(zhang).forEach(n-> System.out.println(n));

    //and()  姓張的,含三豐的
    names.stream().filter(zhang.and(sanfeng)).forEach(n-> System.out.println(n));

    //or()  張開頭的,或者 王結(jié)尾的
    names.stream().filter(zhang.or(wang)).forEach(n-> System.out.println(n));

    //negate() 不是張開頭的,但是王結(jié)尾的
    names.stream().filter(zhang.negate().and(wang)).forEach(n-> System.out.println(n));

    // equals() 方法還沒懂什么意思
}

斷言Predicate和過濾器(Filter)

Predicate斷言又稱謂詞,用于條件判斷,只有斷言結(jié)果都為真,才會真正的執(zhí)行路由。斷言本質(zhì)是定義路由轉(zhuǎn)發(fā)的條件。

時間判斷有三種:

  • 1) AfterRoutePredicateFactory:判斷請求日期是否晚于指定日期
  • 2) BeforeRoutePredicateFactory:判斷請求日期是否早于指定日期
  • 3) BetweenRoutePredicateFactory:判斷請求日期是否在指定時間段內(nèi)

例:-After=2020-12-31T23:59:59.789+08:00[Asia/Shanghai]---表示在2020.12.31.之后可以進行訪問

Method:表示請求方式,如果跟寫的請求方式不同,那么就會判斷false,從而不能訪問成功。

過濾器(Filter)

過濾器(filter)就是在請求傳遞過程中,對請求和響應做一個處理,Gateway的Filter從作用范圍可分為兩種:GatewayFilter與GlobalFilter。

  • (1)、GatewayFilter:應用在單個路由或者一個分組的路由上
  • (2)、GlobalFilter:應用到所有的路由上。

配置的話寫在配置文件中。在spring-cloud-gatewa下面。

限流設計

網(wǎng)關(guān)是所有外部請求的公共入口,所以可以在網(wǎng)關(guān)進行限流,而且限流方式有很多,我們采用sentinel組件來實現(xiàn)網(wǎng)關(guān)的限流。

進行限流設計:

1、添加依賴:

添加spring-cloud-starter-gateway spring-cloud-starter-alibaba-sentinel
spring-cloud-alibaba-sentinel-gateway

2、添加sentinel和路由規(guī)則。

  • 路由配置
routes:
- id: route01
uri: lb://sca-provider
predicates: ###匹配規(guī)則
- Path=/provider/echo/**
  • sentinel配置
sentinel:
transport:
dashboard: localhost:8180 #Sentinel 控制臺地址
eager: true #取消Sentinel控制臺懶加載,即項目啟動即連接

3、啟動網(wǎng)關(guān)項目,檢測sentinel控制臺的網(wǎng)關(guān)菜單。

啟動時,添加sentinel的jvm參數(shù),通過此菜單可以讓網(wǎng)關(guān)服務在sentinel控制臺顯示不一樣的菜單,代碼如下:

-Dcsp.sentinel.app.type=1

sentinel控制臺啟動后,界面是

4、在sentinel面板中設置限流策略。

前端排錯:使用debugger是設置斷點

練習/總結(jié):

微服務架構(gòu)下Ajax請求響應實踐。

流程圖如下:

首先是在一個網(wǎng)頁里設置一個點擊按鈕,點擊后發(fā)送Ajax訪問請求,轉(zhuǎn)給網(wǎng)關(guān)服務,然后再由網(wǎng)關(guān)轉(zhuǎn)給服務類。服務類獲取到參數(shù),再轉(zhuǎn)給網(wǎng)關(guān),網(wǎng)關(guān)再傳給網(wǎng)頁,并將數(shù)據(jù)顯示在網(wǎng)頁中。

  • 1、創(chuàng)建ui網(wǎng)頁工程----先導入依賴spring-boot-stater-web依賴。
  • 2、創(chuàng)建啟動類
  • 3、在resource文件夾下的創(chuàng)建一個HTML文件,使用Ajax請求,需要導入js文件。

js文件要在static目錄下添加。如圖

兩種添加方式

cdn:---直接使用網(wǎng)上的js文件--網(wǎng)速好的話。

<script src="https://unpkg.com/axios/dist/axios.min.js"></script>

第二種:下載下來放到js文件夾下

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<div>
<h2>The Index Page</h2>
<button οnclick="doBuy()">Buy</button>
<span id="result"></span>
</div>
<!--
<script src="https://unpkg.com/axios/dist/axios.min.js"></script>
-->
<script src="/js/axios.min.js"></script>
<script>
//前端如何排錯(日志,debugger,排除)
function doBuy(){
console.log("==doBuy==");
//1.基于axios框架發(fā)送異步ajax請求
let url="http://localhost:9000/nacos/provider/echo/1"
let span=document.getElementById("result");
axios.get(url)

.then(function (response) {//請求ok,執(zhí)行then
console.log(response.data);
//2.將響應結(jié)果更新到頁面上
span.innerHTML = response.data
})
.catch(function (error) {
debugger //設置斷點
//console.log(error);
if(error.response.status==429){
span.innerHTML = error.response.statusText;
}
});

}
</script>
</body>
</html>
  • 4、 在sca-gateway的配置文件中添加跨域設置
spring:
cloud:
gateway:
globalcors: #跨域配置
cors-configurations:
'[/**]':
allowedOrigins: "*"
allowedMethods: "*"
  • 5、啟動服務進行測試。

總結(jié)

以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • Spring Boot使用Value注解給靜態(tài)變量賦值的方法

    Spring Boot使用Value注解給靜態(tài)變量賦值的方法

    這篇文章主要介紹了Spring Boot使用Value注解給靜態(tài)變量賦值的方法,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-07-07
  • JAVA JSP頁面技術(shù)之EL表達式整理歸納總結(jié)

    JAVA JSP頁面技術(shù)之EL表達式整理歸納總結(jié)

    這篇文章主要介紹了java中JSP頁面技術(shù)之EL表達式概念作用以及語法等的使用,需要的朋友可以參考
    2017-04-04
  • Java Servlet請求重定向的方法

    Java Servlet請求重定向的方法

    這篇文章主要介紹了使用Java Servlet請求重定向的方法,幫助大家更好的理解和學習Java Servlet的相關(guān)知識,感興趣的朋友可以了解下
    2020-11-11
  • SpringDoc基本使用的方法示例

    SpringDoc基本使用的方法示例

    SpringDoc是基于Spring Boot的現(xiàn)代化API文檔生成工具,下面就來介紹一下SpringDoc基本使用,具有一定的參考價值,感興趣的可以了解一下
    2025-07-07
  • SpringBoot到底該不該用統(tǒng)一包裝類詳解

    SpringBoot到底該不該用統(tǒng)一包裝類詳解

    在微服務和前后端分離的場景里,統(tǒng)一的返回包裝類成為提高API可預測性、降低前端與服務端溝通成本的重要手段,這篇文章主要介紹了SpringBoot到底該不該用統(tǒng)一包裝類的相關(guān)資料,需要的朋友可以參考下
    2026-03-03
  • Linux系統(tǒng)下安裝和卸載JDK8的方式

    Linux系統(tǒng)下安裝和卸載JDK8的方式

    這篇文章主要介紹了Linux安裝和卸載JDK8,第一種是使用yum命令一鍵安裝,默認安裝目錄在/usr/lib/jvm第二種是手動安裝,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-09-09
  • Java包裝類的概述與應用

    Java包裝類的概述與應用

    包裝類使用起來非常方便,但是沒有對應的方法來操作這些基本數(shù)據(jù)類型,可以使用一個類,把基本類型的數(shù)據(jù)裝起來,在類中定義一些方法,我們可以使用類中的方法來操作這些基本類型的數(shù)據(jù),這篇文章主要給大家介紹了關(guān)于Java包裝類的相關(guān)資料,需要的朋友可以參考下
    2022-04-04
  • 淺談為什么重寫equals()就要重寫hashCode()

    淺談為什么重寫equals()就要重寫hashCode()

    困擾我很久的問題,一直不明白為什么重寫equals()方法的時候要重寫hashCode()方法,這次總算弄明白了,作此分享,感興趣的可以了解一下
    2021-10-10
  • 23種設計模式(1) java單例模式

    23種設計模式(1) java單例模式

    這篇文章主要為大家詳細介紹了23種設計模式之java單例模式,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-11-11
  • SpringCloud+SpringBoot項目搭建結(jié)構(gòu)層次的實例

    SpringCloud+SpringBoot項目搭建結(jié)構(gòu)層次的實例

    這篇文章詳細介紹了SpringCloud項目的架構(gòu)層次及其搭建經(jīng)驗,包括Controller層、Service層、Repository層、Entity層、DTO層、Exception層等,通過文字和圖片的形式,幫助讀者理解如何組織和實現(xiàn)一個SpringBoot項目的不同層次
    2025-01-01

最新評論

银川市| 隆德县| 广元市| 威海市| 石楼县| 文安县| 遂平县| 水富县| 安丘市| 南和县| 铜山县| 临沂市| 修水县| 吐鲁番市| 密山市| 嘉鱼县| 龙南县| 正安县| 鱼台县| 星子县| 临沭县| 四子王旗| 彩票| 游戏| 基隆市| 三河市| 武胜县| 铜陵市| 东乌珠穆沁旗| 容城县| 旅游| 东山县| 鄂托克旗| 石景山区| 新化县| 丰镇市| 鱼台县| 彭山县| 西宁市| 新建县| 广丰县|