原创 Spring RestTemplate中幾種常見的請求方式(^_^)

首先Java遠程調用接口的方法webservice協議有以下三種方法: 1,基於原生Java的UrlConnection 2,使用httpclient(這個用的也比較多) 3,使用restTemplate(Spring提供的)(推薦) 

原创 java 面試題積累

1、ngix的負載均衡機制 (1)輪詢(默認)逐一訪問後端服務器,每一個請求按順序逐一分配到不同的後端服務器,如果後端服務器down掉了,則能自動剔除 (2)ip_hash 請求按訪問IP的hash結果分配,這樣來自同一個IP的訪客固定訪

原创 java併發編程原子性類Atomic

1. 原子操作類介紹   atomic的實現原理:CAS+volatile CAS是compare and swap的縮寫,即比較後(比較內存中的舊值與預期值)交換(將舊值替換成預期值)。它是sun.misc包下Unsafe類提供的功能,

原创 java基礎細節彙總(^_^)

1 HashMap裏的hashcode方法和equal方法什麼時候需要重寫?爲什麼需要重寫? java 比較二個對象是否相等的時候,1 首先判斷二個對象的hashcode值是否相等,2 如果相等則比較equal值是否相等,當hashcod

原创 mybatis中對於多條件if test傳遞參數爲0

今天工作中發現一個Long類型的參數沒有傳到sql中去,在sql xml配置文件中是使用if test標籤判斷:  <if test="version != null and version != ''">and version = #{

原创 Java 對象動態設置屬性值

Maven引用:        <!-- https://mvnrepository.com/artifact/cglib/cglib -->         <dependency>             <groupId>cglib

原创 ThreadLocal 內存泄漏問題

ThreadLocal 的作用是提供線程內的局部變量,這種變量在線程的生命週期內起作用,減少同一個線程內多個函數或者組件之間一些公共變量的傳遞的複雜度。但是如果濫用ThreadLocal,就可能會導致內存泄漏。下面,我們將圍繞三個方面來分

原创 線程的生命週期(主要爲了記憶)

這個也是面試題 1.線程創建 通過二種方式:1、繼承Thread類2、實現Runnable接口,實現run方法,並調用start()方法 2.就緒狀態 創建完線程後處於就緒狀態,有執行資格,沒有執行權 3.運行狀態 獲取cpu的執行權,執

原创 JDK1.5中的Callable接口和Futrue接口

我們在創建線程的方式有二種:1.繼承Thread類;2.實現Runnable接口,但是在創建線程後,我們無法獲取線程執行後的結果,就必須通過共享變量或者使用線程通信的方式來達到效果,比較繁瑣,所以JDK1.5就添加了Callable和Fu

原创 java多線程向RabbitMQ推送消息

首先我們使用Executor框架來實現多線程。 1.向IOC容器中註冊一個ThreadPoolTaskExecutor實例 @Bean public ThreadPoolTaskExecutor DoneThreadPool(

原创 中文不同的編碼佔用的字節長度不同

String s = "中國"; 佔多少字節? (1)GBK 編碼(ide默認)時,每一個漢字佔用 2 個字節,那麼中國佔 4 個字節。 (2)UTF-8 編碼時,每一個漢字佔用 3 個字節,那麼中國佔用 6 個字節。 String s

原创 基於redis分佈式鎖框架redisson(^_^)

什麼是Redisson Redisson是一個在Redis的基礎上實現的Java駐內存數據網格(In-Memory Data Grid)。它不僅提供了一系列的分佈式的Java常用對象,還提供了許多分佈式服務。其中包括(BitSet, Se

原创 分佈式/分佈式鎖/分佈式鎖常用方案(^_^^_^^_^)

### 什麼是鎖? 在單進程的系統中,當存在多個線程可以同時改變某個變量(可變共享變量)時,就需要對變量或代碼塊做同步,使其在修改這種變量時能夠線性執行消除併發修改變量。 而同步的本質是通過鎖來實現的。爲了實現多個線程在一個時刻同一個代碼

原创 mybatis 使用FIND_IN_SET

判斷傳入的值,是否在數據庫字段中存在,比較類似於like,結合實例來看下吧  <select id="getBasicdataReviewStage" resultMap="BaseResultMap" parameterType="c