原创 Arrays.sort(arr)底層實現原理-Timsort

在JDK集合框架中描述過,JDK存儲一組Object的集合框架是Collection。而針對Collection框架的一組操作集合體是Collections,裏面包含了多種針對Collection的操作,例如:排序、查找、交換、反轉、

原创 Spring Boot @ControllerAdvice 攔截異常並統一處理

在spring 3.2中,新增了@ControllerAdvice 註解,可以用於定義@ExceptionHandler、@InitBinder、@ModelAttribute,並應用到所有@RequestMapping中。參考:@C

原创 SpringBoot項目中使用AOP

1.概述 將通用的邏輯用AOP技術實現可以極大的簡化程序的編寫,例如驗籤、鑑權等。Spring的聲明式事務也是通過AOP技術實現的。 Spring的AOP技術主要有4個核心概念: Pointcut: 切點,用於定義哪個方法會被攔截,例

原创 Java opencsv 生成、讀取、下載、刪除CSV文件

利用opencsv包中的CSVWriter類,生成csv文件 import java.io.File; import java.io.FileOutputStream; import java.io.OutputStreamWri

原创 opencsv方式讀取,導出csv文件

1.opencsv官網:http://opencsv.sourceforge.net/ jar包:opencsv-2.3.jar 下載地址:http://sourceforge.net/projects/opencsv/files/l

原创 微信支付--小程序支付(JAVA)

已上傳至github庫 https://github.com/gaoruiqiang2017/weixinpay.git 步驟 /** 登錄+支付 code 流程大概分爲幾步: 1)登錄,獲取code(一個code只能用一次) 2)

原创 微信支付-公衆號支付

@RestController @RequestMapping("/weixinGZHpay") public class WeixinGZHpay { @Value("${appid}") private St

原创 微信支付---商戶二維碼支付

先創建Springboot項目 pom文件添加依賴 <!--微信支付SDK--> <dependency> <groupId>com.github.wxpay</groupId

原创 微信支付---H5支付

1、用戶在商戶側完成下單,使用微信支付進行支付 2、由商戶後臺向微信支付發起下單請求(調用統一下單接口)注:交易類型trade_type=MWEB 3、統一下單接口返回支付相關參數給商戶後臺,如支付跳轉url(參數名“mweb_ur

原创 Java多線程

Java多線程1、多線程有什麼用?2、創建線程的方式3、start()方法和run()方法的區別4、Runnable接口和Callable接口的區別5、CyclicBarrier和CountDownLatch的區別6、volatile

原创 Java線程的6種狀態及切換(透徹講解)

Java中線程的狀態分爲6種。 初始(NEW):新創建了一個線程對象,但還沒有調用start()方法。 運行(RUNNABLE):Java線程中將就緒(ready)和運行中(running)兩種狀態籠統的稱爲“運行”。 線程對象創建

原创 spring boot防止表單重複提交添加攔截器驗證token

#1:先寫token生成和銷燬方法 #token.java package com.smartt.api.interceptor; import java.lang.annotation.*; @Target(ElementT

原创 JAVA自定義註解 annotation(@Retention@Target)詳解

一、註解:深入理解JAVA註解   要深入學習註解,我們就必須能定義自己的註解,並使用註解,在定義自己的註解之前,我們就必須要了解Java爲我們提供的元註解和相關定義註解的語法。 1、元註解(meta-annotation):   元

原创 java大牛博客鏈接合集

https://www.cnblogs.com/gmq-sh/tag/Java/ https://blog.csdn.net/pengyang_fly/article/details/59109718

原创 SpringMvc+POI 導入Excel的操作

導入Excel工具類 package com.baidu.gongyi.auction.util; import java.io.IOException; import java.io.InputStream; import j