原创 JAVA-刪除html標籤

import java.io.*; public class Html2TextWithRegExp { private Html2TextWithRegExp() {} public static void ma

原创 SpringMVC-請求參數注入-對象類型參數注入源碼探討

接着上一篇請求參數解析,本篇分析講請求參數解析爲對象屬性的源碼。 demo基於springboot 與上一篇稍微不同,這裏的spring版本爲5.1.5。 controller @RestController @RequestMa

原创 JAVA-關於線程stop方法過期

stop方法是不安全的。 停止線程會使它解鎖它已鎖定的所有監視器。 建議的結束線程的兩種方式: 1.通過標識控制線程是否運行; public class ThreadSafe extends Thread { public

原创 JAVA-SimpleDateFormat線程安全問題

SimpleDateFormat是用來格式化日期的類,在單線程下使用沒問題,但是在多線程場景下,如果多個線程使用的是同個實例,則可能出現時間出錯,線程掛死問題。 原因是format中使用了父類中的的calendar變量,其是一個共

原创 選擇題型題目表設計

選擇型題目表設計。 場景:用戶參與答題活動,可以多次回答,每次選擇隨機題目,題目都是單項選擇題,表設計如下。 題目表 CREATE TABLE `question` ( `id` bigint(20) NOT NULL AUT

原创 Redis-多字段排序-排名設計

Redis的sorted set集合提供了一種有序的集合,集合中的每個元素都會關聯一個double類型的分數。redis正是通過分數來爲集合中的成員進行從小到大的排序。 使用場景通常是作爲排名。 在上一篇說了選擇題型題目表設計,接

原创 Apache-POI-設置單元格背景色

Apache-POI-設置單元格背景色 版本:3.14 XSSFCell mobileCell = row.getCell(0); XSSFCellStyle cellStyle = wb.createCellStyle(); c

原创 Linux too many open files問題調查

轉載自https://hunfan.top/2018/06/05/Linux%20too%20many%20open%20files/ 問題 今天發現某netty服務總是報too many open files,因爲是新上的服務,設備

原创 StringUtils-leftPad、rightPad、center填充方法

package com.qh.health.service; import org.apache.commons.lang3.StringUtils; /** * @author wzx * @since 2019-04-29

原创 JAVA-簡單樹形結構

package com.qh.health.service; import com.alibaba.fastjson.JSON; import com.google.common.collect.Lists; import com.

原创 Spring-bean循環依賴

循環依賴指的是兩個或以上bean相互存在引用。 Spring中循環依賴的幾種情況: 1.構造器參數循環依賴;無法解決,只能避免 2.setter方式,單例; 3.setter方法,prototype原型;無法解決,只能避免 在bean

原创 Spring-@Transactional源碼分析

在spring配置文件添加<tx:annotation-driven />啓用註解式事務管理,接着在需要事務管理的類或方法上添加@Transactional註解,就能實現事務管理。 本篇內容分析該實現背後源碼。 上面兩個註解在spri

原创 Spring-AOP源碼探討-創建bean代理對象&代理方法執行流程

在上一篇中梳理了匹配bean通知(Advisor)的流程。 這篇延續上篇,梳理創建bean代理對象源碼。 先回顧下AbstractAutoProxyCreator類的wrapIfNecessary方法: /** * Wrap the

原创 Spring-AOP源碼探討-匹配bean通知

說明使用<aop:aspectj-autoproxy />聲明式註解風格配置切面,其自動爲spirng容器中符合條件的bean創建代理對象匹配通知(Advisor)內部流程。 配置: <aop:aspectj-autoproxy />

原创 Spingboot-使用AOP實現動態自動切換Mybatis數據源+分頁

目標:使用AOP實現動態自動切換Mybatis數據源,分頁插件使用PageHelper。 項目使用Springboot搭建。 application.yml配置文件 server: port: 8086 db1: data