原创 java 網絡編程發展過程以及nio的特點

背景: 省分短信發送每天都差不多要1000W條上下,遇到特殊節假日和政府通告時量會更大!boss系統中存放的是短信發送內容,而真正完成發送短信指令動作是的華爲方做的短廳,這麼大的通信量選擇了netty來完成數據傳輸並自定義了一套基於net

原创 Tomcat,servlet以及netty之間的簡單區別

Tomcat(這裏以tomcat代表web服務器)和Servlet對比: Tomcat可以理解成用於http平臺的服務器,能接受http的請求並分析。 Servlet是java內部的一種規範,準確的說,他可以對參數進行分析,創建對象然後返

原创 java日誌分級概要

記錄一下,用於以後的規範化      

原创 記錄一次項目中代碼大致優化方向

簡單來說就是優化後臺文件下載的,主要因爲文件類型多,有的文件需要動態寫入值(報表),有的不需要,有的能下載有的只能在線打開,可採用策略+工廠方法優化一下代碼 結構:   @Data @Slf4j public class ExcelF

原创 ajax異步下載文件並判斷狀態

今日需要對公司的代碼進行更新,發現之前有的文件丟失導致下載不到直接跳轉到一個空的頁面,第一反應是應該沒有用異步請求,直接用a標籤或者表單之類的處理下載文件請求了。 但是ajax似乎是不支持下載文件的,會把流信息當初文本類處理。。。自然不能

原创 ajax請求實用的封裝方法

個人身爲一個java後端開發,對js的閉包簡單理解爲跨方法訪問變量值,放到java裏就是方法A能使用方法B中的變量。 今天寫代碼時看到公司之前同事寫的ajax到處都是,沒有任何封裝,需要優化一下。   項目中的ajax到處都是這類代碼:

原创 Java Futrue模式簡單例子和使用場景

之前看視頻上別人講解java的Futrue功能可以提高系統運行效率,之後有一點疑惑,通過一個簡單的例子瞭解Futrue到底好處在哪。 例子很簡單,通過一個線程池來讓子線程去執行任務,主線程打印一句話後調用futrue的get()方法。

原创 不同數據量下主鍵類型的選擇

背景 之前面試的時候,有幾家公司都問了UUID,自增ID的優點以及缺點,個人當時只考慮到了索引方面(增刪查改的效率),沒有考慮到分佈式情況下的問題。 如果未來可能對數據進行合併、轉移,自增ID勢必會發生主鍵重複問題。 跨步自增可以解決分佈

原创 Docker 快速安裝教程

Docker爲一個輕量級容器,和Linux相比更加方便(安裝軟件簡單無需各種前置軟件,但配置軟件參數跟Linux一樣) 結構圖 Client可以理解爲mysql、redis的管控臺,類似於windows下的cmd窗口,是用來和用戶互交、輸

原创 Mybatis查詢時數據丟失的問題

公司裏的實體類和mapper文件均由mybatis逆向工程生成 之前使用myabtis查詢時直接使用註解@select(......)時遇到了一個問題。 結果顯示數據庫查詢沒有問題,但是有的數據缺沒有插入到指定的字段中,如下圖中ID成功存

原创 Restful無狀態請求和網關

疑問:爲何java集羣服務中,網關的存在很有必要?我在後臺系統中使用權限等不也可以實現效果嗎? 可以這樣做,但是這樣做非常不推薦!   1.違反RestFul 無狀態的特點 簡單的來說,無狀態是指服務器不需要保存任何數據,所有相關數據均交

原创 Mybatis通過原生sql查詢Map結果集註意事項

背景: 開發中有時會遇到各種事,比如項目組有Utils類方法,解析腳本後得到一個較長的sql語句,通過原生jdbc的原生ps方法查詢時查不到數據的情況。 首先個人肯定是不建議在Utils裏解析腳本後拼接sql的,存在sql注入的危險。 那

原创 Java 後臺sendHttp時出現java.net.UnknownHostException

工作時java後臺需要用Httpclient調用其他平臺來獲取數據,出現了UnknownHostException錯誤,該錯誤說明服務器無法識別該域名,但是本地卻能識別。 於是登陸線上服務器 cd /etc/ vi hosts 輸入: 2

原创 mysql日常工作中批量插入效率問題

個人總結: 循環單條數據插入基本上不會用,日常工作中更多的是十幾條、幾百條數據量的批量插入問題。  就場景來看,在後臺批量將前臺選中的多條數據批量插入這種情況比較多,一般直接在mybatis中通過foreach拼成sql後插入。 或者是E

原创 redis info信息註解

可以看到,info的輸出結果是分幾塊的,有Servers、Clients、Memory等等,通過info後面接這些參數,可以指定輸出某一塊數據。 我剛開始在Gentoo上裝的默認版本2.4.10,並沒有分塊輸出,都是擠到一堆,而且也無法按