原创 centos7 yum 源替換成阿里源nginx反代理的方式

說明:本次記錄的情況如下1.a 服務器是內網 2.b 服務器是外網 3.a能連接b服務器。因爲a沒有網絡所以安裝很多東西不方便,就想了個辦法把a服務器上的yum源的請求地址替換成b的ip地址,再讓b服務器轉發代理出去。 我這裏準備的是阿里

原创 java8的Collector.toMap值爲空的異常

概述   雖然JDK9.0已經出來了,不過我們系統最近纔開始全面引入JDK1.8,JDK1.8也已經出來了好久了,各方面都挺穩定的。最近在使用lambda表達式的Collectors.toMap方法時就遇到了一個問題。 大致源碼如下:

原创 java 使用freemarker 模板生成html 和字符串

生成字符串: StringWriter stringWriter = new StringWriter(); //讀取模板的位置在resources 下的templates下contractAgreement.ftl FileTempl

原创 解決切面aop中獲取不到註解的問題

getAnnotation爲null的坑 在寫一個基於SpringAOP的權限控制的。 自己定義了一個註解,然後邏輯代碼需要通過獲取自定義註解的一個屬性來進行權限控制。   下面簡單上一下關鍵代碼: 自定義註解: @Documented

原创 記一次inner join sql優化

由於線上出現慢sql的警告,於是進行優化 每一個inner join on 後面的條件都建有索引 原句: select p.eval_id  FROM        p_evaluation p     INNER JOIN crm_co

原创 nginx 出現403 問題,提示沒有權限訪問該URL

問題需求:我需要反代理下載阿里源的東西。 在nginx的server 配置如下: server {            listen          80;            server_name     自己的服務器的ip地址

原创 記錄一個 foreach 和迭代器中的list remove放法問題

先看一下正面例子: 然後再看一下反面的例子: 但是我們換一下判斷條件 原因如下(自己看源碼的理解):ArrayList源碼中remove和add方法 有一個modCount字段用來記錄集合改變的次數,ArrayList中remove

原创 rabbitmq 報錯:無隊列 springboot rabbitmq 三種創建隊列的方式

因爲報錯 #method<channel.close>(reply-code=404, reply-text=NOT_FOUND - no queue 'helloTest' in vhost '/', class-id=50, meth

原创 @Autowired 註解會把所有實現了 接口做成一個集合

例如 A、B、C 都implments D 如果使用@Autowired 註解D  @Autowired private List<D> selectors = new ArrayList<>(); 所有實現類都會集中到一個集合中

原创 記錄下 java版本的雪花算法

/** * Twitter的SnowFlake算法,使用SnowFlake算法生成一個整數,然後轉化爲62進制變成一個短地址URL * * https://github.com/beyondfengyu/SnowFlake */

原创 記錄分佈式唯一id生成普遍的方法 基於數據庫的號段模式

這種模式就是需要把這個號段的都緩存起來使用,這裏需要注意如果緩存失效後需要怎麼樣處理,一般都是再次申請。 號段模式是當下分佈式ID生成器的主流實現方式之一,號段模式可以理解爲從數據庫批量的獲取自增ID,每次從數據庫取出一個號段範圍,例如

原创 spring 參數驗證 的工具類 結合註解@NotNull

主要的工具類代碼如下 public class ValidatorUtils { private ValidatorUtils() { } /** * 獲取默認的Validator *

原创 java8 的stream map 排序 記錄下

Map<Integer, Integer> keywordTimes = new HashMap<>(); keywordTimes.put(1,2); keywordTimes.put(2,3); keywordTimes.put(4

原创 springBoot 配置文件值 使用靜態方式賦值

記錄下方法: package com.zbj.cs.chance.reformChanceBiz.util; import com.zbj.cs.chance.reformChanceBiz.impl.NewChanceConfigB

原创 一個例子解釋 java種CAS 的ABA問題

  線程I使用CAS修改初始值爲A的變量X,那麼線程I會首先去獲取當前變量X的值(爲A〕,然後使用CAS操作嘗試修改X的值爲B,如果使用CAS操作成功了,那麼程序運行一定是正確的嗎?其實未必,這是因爲有可能在線程I獲取變量X的值後,在執行