java8 常用code

文章目錄

  • 前言
  • 一、lambda
    • 1. 排序
      • 1.1 按照對象屬性排序:
      • 1.2 字符串List排序:
      • 1.3 數據庫排序jpa
    • 2. 聚合
      • 2.1 基本聚合(返回對象list)
      • 2.2 多字段組合聚合(直接返回對象list數量)
  • 二、基礎語法
    • 2.1 List
      • 2.1.1 數組初始化賦值
      • 2.1.2. 逗號分割字符串、list互轉
      • 2.1.3 去重
    • 2.2. Json解析
      • 2.2.1 Gson
      • 2.2.2 Fastjson
    • 2.3. LocalDateTime
      • 2.3.1 String->LocalDateTime
      • 2.3.2 Date->LocalDateTime
    • 2.4. Optional
      • 2.4.1 map/flatMap
      • 2.4.2 ifPresent
      • 2.4.3 filter
    • 2.5. EsayExcel
      • 2.5.1 導出示例
      • 2.5.2 相關注解
  • 三、 Linux命令
    • 3.1 磁盤爆滿占用情況
    • 3.2 nacos單機啟動命令
    • 3.3 防火墻狀態查詢及操作
    • 3.4 清理緩存(buff/cache)


前言

常用語法匯總

一、lambda

1. 排序

1.1 按照對象屬性排序:

List<AccidentEduSLResp> respList =list.stream().sorted(Comparator.comparing(AccidentEduSLResp::getOrgUnit)).collect(Collectors.toList());
district.sort(Comparator.comparing(AccidentEduSLResp::getOrgUnit));  //性能優

1.2 字符串List排序:

List<String> sortedDistrict = district.stream().sorted().collect(Collectors.toList());

1.3 數據庫排序jpa

dao.findAll(spec, Sort.by(Sort.Order.desc(ExpertConstants.UPDATE_TIME), Sort.Order.asc(ExpertConstants.EXAMINE_STATUS)));

2. 聚合

2.1 基本聚合(返回對象list)

Map<String, List<AccidentSupervisePO>> collect = cityList.stream().collect(Collectors.groupingBy(s -> s.getDistrictCode()));

2.2 多字段組合聚合(直接返回對象list數量)

Map<String, Long> collect = list.stream().collect(Collectors.groupingBy(o -> o.getDistrictCode() + "_" + o.getOrgUnit(), Collectors.counting()));

二、基礎語法

2.1 List

2.1.1 數組初始化賦值

Arrays.asList 不允許add remove操作 UnsupportedOperationException

public static final List CITY_ARR = Arrays.asList("230100","230200","230300","230400","230500","230600");

需要add等操作需要以下寫法支持

List<String> list = new ArrayList<>(Arrays.asList(arr));

2.1.2. 逗號分割字符串、list互轉

List 轉字符串:

Joiner.on(",").join(list)

字符串轉List:

//-> 引入guava-28.2-jre.jar//-> CommonConstants常量類定義
public static final Splitter SPLITTER_COMMA = Splitter.on(",").omitEmptyStrings().trimResults();
//需要判斷字符串是否為空
List<String> list = CommonConstants.SPLITTER_COMMA.splitToList(a.getDistrictCode());

2.1.3 去重

用hashset去重list 性能優

List<String> testListDistinctResult = new ArrayList<>(new HashSet(testList));

2.2. Json解析

2.2.1 Gson

Book b = new Book("書名1","簡介1");
//使用gson將對象轉為json字符串
String json = new Gson().toJson(b);
System.out.println(json);//使用gson將json字符轉轉為對象(第一個參數為json字符串,第二個參數為要轉為的類)
Book b2 = new Gson().fromJson("{\\"name\\":\\"書名1\\",\\"info\\":\\"簡介1\\"}",Book.class);

2.2.2 Fastjson

Book b = new Book("書名2","簡介2");
//使用fastjson將對象轉為json字符串
String json= JSON.toJSONString(b);
System.out.println(json);//使用fastjson將json字符轉轉為對象(第一個參數為json字符串,第二個參數為要轉為的類)
Book b2 = JSON.parseObject("{\\"name\\":\\"書名1\\",\\"info\\":\\"簡介1\\"}", Book.class);

2.3. LocalDateTime

2.3.1 String->LocalDateTime

//1.具有轉換功能的對象
DateTimeFormatter df = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
//2.要轉換的對象	
LocalDateTime time = LocalDateTime.now();//3.發動功能
String localTime = df.format(time);
System.out.println("LocalDateTime轉成String類型的時間:"+localTime);//3.LocalDate發動,將字符串轉換成  df格式的LocalDateTime對象,的功能
LocalDateTime LocalTime = LocalDateTime.parse(strLocalTime,df)
System.out.println("String類型的時間轉成LocalDateTime:"+LocalTime);

2.3.2 Date->LocalDateTime

//Date轉LocalDateTime 
Date date = new Date();
Instant instant = date.toInstant();
ZoneId zoneId = ZoneId.systemDefault();
LocalDateTime localDateTime = instant.atZone(zoneId).toLocalDateTime();
System.out.println("Date = " + date);
System.out.println("LocalDateTime = " + localDateTime);//LocalDateTime轉Date 
ZoneId zoneId = ZoneId.systemDefault();
LocalDateTime localDateTime = LocalDateTime.now();
ZonedDateTime zdt = localDateTime.atZone(zoneId);
Date date = Date.from(zdt.toInstant());
System.out.println("LocalDateTime = " + localDateTime);
System.out.println("Date = " + date);

2.4. Optional

2.4.1 map/flatMap

● map適用于基礎數據類型
● flatMap適用于對象類型
user不為空的時候取address address為空取city city為空異常

Optional.ofNullable(user).map(u-> u.getAddress()).map(a->a.getCity()).orElseThrow(()->new Exception("錯誤"));

2.4.2 ifPresent

user不為空時dosomething

Optional.ofNullable(user)
.ifPresent(u->{dosomething(u);
});

2.4.3 filter

如果user的name的是zhangsan的,則返回當前對象。否則返回構造的user對象。

Optional.ofNullable(user)
.filter(u->"zhangsan".equals(u.getName()))
.orElseGet(()-> {User user1 = new User();user1.setName("zhangsan");return user1;
});

2.5. EsayExcel

2.5.1 導出示例

response.setContentType("application/octet-stream");
response.setCharacterEncoding("utf-8");
// 這里URLEncoder.encode可以防止中文亂碼 當然和easyExcel沒有關系
String fileName = URLEncoder.encode("專家報銷匯總" + DateUtil.localDateToString(LocalDate.now()), "UTF-8");
response.setHeader("Content-Disposition", "attachment; filename=" + fileName + ".xlsx");
// 前端需要FileName頭否則會會有問題
response.setHeader("FileName", fileName + ".xlsx");
response.setHeader("Access-Control-Expose-Headers", "FileName");
WriteCellStyle contentWriteCellStyle = new WriteCellStyle();
contentWriteCellStyle.setHorizontalAlignment(HorizontalAlignment.CENTER);
WriteCellStyle headWriteCellStyle = new WriteCellStyle();
HorizontalCellStyleStrategy horizontalCellStyleStrategy =
new HorizontalCellStyleStrategy(headWriteCellStyle, contentWriteCellStyle);
EasyExcel//將數據映射到DownloadDTO實體類并響應到瀏覽器
.write(response.getOutputStream(), ExpertAndCostInfoOutDTO.class)
//07的excel版本,節省內存
.excelType(ExcelTypeEnum.XLSX)
//是否自動關閉輸入流
.autoCloseStream(Boolean.TRUE)
.registerWriteHandler(horizontalCellStyleStrategy)
.sheet("專家報銷匯總").doWrite(findExpertAndCostGatherList(dto).getExpertList());

2.5.2 相關注解

//不映射excel
@ExcelIgnore    //列寬 class上控制全部字段  屬性上控制該屬性字段
@ColumnWidth(40)  //2.1.4 表頭名稱及排序   
//@ExcelProperty(order = 2)  2.2.7 排序寫法 index被兼容
@ExcelProperty(value = "任務內容", index = 1)

三、 Linux命令

3.1 磁盤爆滿占用情況

df -h
du -h --max-depth=1

3.2 nacos單機啟動命令

sh startup.sh -m standalone

3.3 防火墻狀態查詢及操作

systemctl stop firewalld
systemctl status firewalld
systemctl disable firewalld

3.4 清理緩存(buff/cache)

清除前后使用 free -h 查看效果

free -h
sysctl -w vm.drop_caches=3
free -h

在這里插入圖片描述

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/209364.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/209364.shtml
英文地址,請注明出處:http://en.pswp.cn/news/209364.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Holynix

信息收集階段 存活主機探測&#xff1a;arp-scan -l 當然了&#xff0c;正常來說我們不應該使用arp進行探測&#xff0c;arp探測的是arp的緩存表&#xff0c;我們應該利用nmap進行探測&#xff01; nmap -sT --min-rate 10000 192.168.182.0/24 端口探測 nmap -sT --min-rat…

Navicat 技術指引 | 適用于 GaussDB 分布式的調試器

Navicat Premium&#xff08;16.3.3 Windows 版或以上&#xff09;正式支持 GaussDB 分布式數據庫。GaussDB 分布式模式更適合對系統可用性和數據處理能力要求較高的場景。Navicat 工具不僅提供可視化數據查看和編輯功能&#xff0c;還提供強大的高階功能&#xff08;如模型、結…

golang學習筆記——數據結構進階

文章目錄 數據結構進階mapmap示例sliceinterfaceembedded 數據結構進階 map map 讀取某個值時 - 返回結果可以為 value,bool 或者 value。注意后者&#xff0c;在key不存在時&#xff0c;會返回value對應類型的默認值map 的 range 方法需要注意 - key,value 或者 key。注意后…

【數據結構】單調棧與單調隊列算法總結

單調棧 知識概覽 單調棧最常見的應用是找到每一個數離它最近的且比它小的數。單調棧考慮的方式和雙指針類似&#xff0c;都是先想一下暴力做法是什么&#xff0c;然后再挖掘一些性質如單調性&#xff0c;最終可以把目光集中在比較少的狀態中&#xff0c;從而達到降低時間復雜…

業務設計原則

《億級流量網站架構核心技術》讀書筆記 一、防重設計 防重是通過在盡可能前端的位置阻擋請求重復執行&#xff0c;從而防止影響業務。它主要運用于“重復發生會造成業務影響”的場景。 請求本身可以發生多次&#xff0c;需要定義何為同一條業務數據。 分成業務本身允許多次和…

JS中call()、apply()、bind()改變this指向的原理

大家如果想了解改變this指向的方法&#xff0c;大家可以閱讀本人的這篇改變this指向的六種方法 大家有沒有想過這三種方法是如何改變this指向的&#xff1f;我們可以自己寫嗎&#xff1f; 答案是&#xff1a;可以自己寫的 讓我為大家介紹一下吧&#xff01; 1.call()方法的原理…

Python 語言在 Web 開發上有哪些應用框架?

Python 是一門多用途的編程語言&#xff0c;其簡潔、易讀且強大的特性使其成為Web開發領域的一種熱門選擇。Python Web開發框架提供了豐富的工具和功能&#xff0c;使得開發者能夠更高效地構建各種規模和類型的Web應用。以下是一些在Python Web開發中常用的框架&#xff0c;每個…

[mysql]linux安裝mysql5.7

之前安裝的時候遇到了很多問題&#xff0c;浪費了一些時間。整理出這份教程&#xff0c;照著做基本一遍過。 這是安裝包: 鏈接&#xff1a;https://pan.baidu.com/s/1gBuQBjA4R5qRYZKPKN3uXw?pwd1nuz 1.下載安裝包&#xff0c;上傳到linux。我這里就放到downloads目錄下面…

WaitGroup原理分析

背景 在實際業務開發中&#xff0c;我們會遇到以下場景&#xff1a;請求數據庫&#xff0c;批量獲取1000條數據記錄后&#xff0c;處理數據 為了減少因一次批量獲取的數據太多&#xff0c;導致的數據庫延時增加&#xff0c;我們可以把一次請求拆分成多次請求&#xff0c;并發去…

C#-快速剖析文件和流,并使用

目錄 一、概述 二、文件系統 1、檢查驅動器信息 2、Path 3、文件和文件夾 三、流 1、FileStream 2、StreamWriter與StreamReader 3、BinaryWriter與BinaryReader 一、概述 文件&#xff0c;具有永久存儲及特定順序的字節組成的一個有序、具有名稱的集合&#xff1b; …

大模型的全方位評估

摘要&#xff1a; 評估通過提供一種跟蹤進度、理解模型以及記錄其能力和偏差的方法&#xff0c;為基礎大模型提供了背景。基礎大模型挑戰了機器學習中標準評估范式實現這些目標的能力&#xff0c;因為它們距離特定任務只有一步之遙。為了設想適合基礎模型的評估新范式&#xff…

枚舉 LeetCode2048. 下一個更大的數值平衡數

如果整數 x 滿足&#xff1a;對于每個數位 d &#xff0c;這個數位 恰好 在 x 中出現 d 次。那么整數 x 就是一個 數值平衡數 。 給你一個整數 n &#xff0c;請你返回 嚴格大于 n 的 最小數值平衡數 。 如果n的位數是k&#xff0c;n它的下一個大的平衡數一定不會超過 k1個k1…

圖論——最小生成樹

圖論——最小生成樹 A wise man changes his mind, a fool never will 生成樹 一個連通圖的生成樹是一個極小的連通子圖&#xff0c;它包含圖中全部的n個頂點&#xff0c;但只有構成一棵樹的n-1條邊。 最小生成樹 在這些邊中選擇N-1條出來&#xff0c;連接所有的N個點。這N-1…

Java后端的登錄、注冊接口是怎么實現的

目錄 Java后端的登錄、注冊接口是怎么實現的 Java后端的登錄接口是怎么實現的 Java后端的注冊接口怎么實現&#xff1f; 如何防止SQL注入攻擊&#xff1f; Java后端的登錄、注冊接口是怎么實現的 Java后端的登錄接口是怎么實現的 Java后端的登錄接口的實現方式有很多種&a…

使用git出現的問題

保證 首先保證自己的git已經下載 其次保證自己的gitee賬號已經安裝并且已經生成ssh公鑰 保證自己要push的代碼在要上傳的文件夾內并且配置文件等都在父文件夾&#xff08;也就是文件沒有套著文件&#xff09; 問題 1 $ git push origin master gitgitee.com: Permission de…

近似同態加密的 IND/SIM-CPA+ 安全性:對于 CKKS 實際有效的攻擊

參考文獻&#xff1a; [LM21] Li B, Micciancio D. On the security of homomorphic encryption on approximate numbers[C]//Advances in Cryptology–EUROCRYPT 2021: 40th Annual International Conference on the Theory and Applications of Cryptographic Techniques, Z…

【Linux】命令expect使用詳解

&#x1f984; 個人主頁——&#x1f390;個人主頁 &#x1f390;?&#x1f341; &#x1fa81;&#x1f341;&#x1fa81;&#x1f341;&#x1fa81;&#x1f341;&#x1fa81;&#x1f341; 感謝點贊和關注 &#xff0c;每天進步一點點&#xff01;加油&#xff01;&…

【上海大學數字邏輯實驗報告】五、記憶元件測試

一、實驗目的 掌握R-S觸發器、D觸發器和JK觸發器的工作原理及其相互轉換。學會用74LS00芯片構成鐘控RS觸發器。學會用74LS112實現D觸發器學會在Quartus II上用D觸發器實現JK觸發器。 二、實驗原理 基本R-S觸發器是直接復位-置位的觸發器&#xff0c;它是構成各種功能的觸發器…

AI文檔助手,當下熱門的AI文檔助手【2024】

在當今信息爆炸的時代&#xff0c;文檔創作的需求愈發龐大。為了滿足用戶對高效、準確、原創性文檔的需求&#xff0c;人工智能技術的應用日益廣泛。本文將專心分享AI文檔助手領域的熱門推薦。 AI文檔助手的背景與應用 AI文檔助手作為人工智能技術在文檔創作領域的一大應用&am…

nginx配置自建SSL證書

文章目錄 前言配置SSL證書SSL證書放在 Nginx 而不放在應用服務器上的好處Nginx只能轉發http協議嗎Nginx轉發TCP協議會收到端口限制嗎Nginx本身能將Websocket數據轉化成TCP數據嗎總結 前言 之前的一篇文章《自建CA并生成自簽名SSL證書》中講到為什么要自建CA和自簽名SSL證書&am…