1. 程式人生 > >Java開發遇到的那些坑

Java開發遇到的那些坑

  1. 對靜態成員變數使用@Autowired修飾符,導致呼叫變數時報錯NullPointerException
  2. 介面返回物件,則物件的靜態成員返回的資料為null,故需要在物件中呼叫的成員不能定義未靜態成員
  3. 對redis進行hMGet(byte[] key, byte[]... fields)操作,如果key對應資料不存在,則會返回一個不為空的List,List的各欄位值為null,需要對這種情況做校驗
  4. 類中非靜態成員變數,如果不在建構函式中初始化,在成員函式中呼叫報錯NullPointerException
  5. 使用Executors.newFixedThreadPool(nThreads)構造執行緒池處理訊息,結果由於訊息量很大,造成記憶體消耗過快,頻繁FULL GC。解決方案是構造一個阻塞的容量5000的任務佇列,且在佇列滿的時候執行CalllerRunsPolicy的拒絕策略
    new ThreadPoolExecutor(nThreads, nThreads,
                    30, TimeUnit.MILLISECONDS,
                    new ArrayBlockingQueue<Runnable>(5000),
                    new ThreadPoolExecutor.CallerRunsPolicy());
  6. 使用 kafka預設分割槽策略生產,只發送資料到部分分割槽:kafka預設分割槽策略對key試用murmur2演算法雜湊,然後對分割槽數取餘得到目標分割槽。例如分割槽數是10,如果將key範圍設定在0-9,並不能按期望將資料均勻寫到所有分割槽,而只能寫到部分分割槽。想要均勻寫到所有分割槽,需要讓key=null,或正將key取值範圍設定的足夠大(0-long.max)。
  7. 消費kafka服務跑一段時間後開始頻繁rebalance:查詢一段時間問題發現是因為服務頻繁full gc導致coordinator檢測服務超時(由max.timeout.ms引數決定)。jstat -gc 【pid】檢視gc情況 , jmap -histo 【pid】檢視發現有600W+的LinkedBlockingQueue$Node,也就是說LinkedBlockingQueue快取了太多資料,由下圖可知LinkedBlockingQueue的無參建構函式是一個無界佇列,所以要試用有參建構函式限制節點數量。

相關推薦

msui開發那些

最近公司公眾號二次開發,前段用到了msui(比較小眾的ui),總結一下里面的坑。 官方api連結 (淘寶前團隊) 不在維護    1,$   這個採用的是zepto輕量級的庫,而不是jquery,大家遇到$報錯,或者調取不了一些jquer

iOS開發那些

原文連結:http://www.jianshu.com/p/da80c4b7190e 最近重新拿起了iOS的開發,使用OC和Swift混編,碰到了一些比較棘手的問題,在這裡記錄下來,方便自己以後或他人不再入坑。這篇文章的內容包含: UITableViewCe

java中的那些(一)

下面的坑有些來自別人的技術部落格,有些事以前自己遇到的坑,持續補充。。。 坑1:三目運算子 首先我們看一下這道題:char x = 'x';System.out.println(true?120:x); 我們的第一反應結果不就是120嗎,但是我們實際執行一下,結果是x。是

談一談Java開發中的(一) -- log4j2在SaaS專案中的應用

背景介紹: 做server端開發有些年頭了,特別是開始做SaaS型別的專案時,深知log的重要性,特別是半夜三更使用者(大都是美國那邊的)遇到問題的電話打過來,這個時候沒有一個強大log,那只有抓瞎的份了。以前都是走的微軟系的開發工具,log的框架也是別人早就寫好的,所以

Java開發遇到的那些

對靜態成員變數使用@Autowired修飾符,導致呼叫變數時報錯NullPointerException 介面返回物件,則物件的靜態成員返回的資料為null,故需要在物件中呼叫的成員不能定義未靜態成員 對redis進行hMGet(byte[] key, byte[]... fields)操作,如果key對

微信公眾平臺開發那些走過的

內置瀏覽器 點滴 播放 中一 ffmpeg 時間 想要 文件 設計 最近接手了一個微信公眾平臺的項目,歷時兩個月,基本完工,終於有時間可以總結一下這過程當中遇到的點點滴滴。 1、關於微信的內置瀏覽器 開始以為,微信內置瀏覽器是一個瀏覽器,對於安卓機和蘋果機都是一樣的,後來發

Java開發,需要掌握那些技能呢?

Java開發 Java學習 Java編程 Java 被稱為軟件開發行業開發語言常青樹,穩居開發語言排行榜首位。2017 年Java 人才缺口45 萬,IDC 統計數據顯示,在所有的人才開發需求中,java 工程師的需求達到全部需求的60%-70%。應用面廣、就業面廣的特性也是Java 開發語言經久

個推 Spark實踐教你繞過開發那些

個推 spark Spark作為一個開源數據處理框架,它在數據計算過程中把中間數據直接緩存到內存裏,能大大地提高處理速度,特別是復雜的叠代計算。Spark主要包括SparkSQL,SparkStreaming,Spark MLLib以及圖計算。Spark核心概念簡介 1、RDD即彈性分布式數據集,通過

iOS開發 關於整合ijkplayer的framework中的那些,重新打framework出現的錯

整合教程: http://www.jianshu.com/p/1f06b27b3ac0 已經很詳細了,照這個步驟走就行了。 不過照找個步驟還是發現了一些坑,下面是我自己遇到的問題,菜鳥一個,大神勿噴。 坑一:  直接盜圖了,Show in Finder, 你可能打不開

零基礎個人建站——混合模式開發之專案上線那些 、終結

最後說一下反向代理和域名解析。           首先說一下神魔叫反向反向代理,,你可以理解為系統的自我保護機制吧~~對外只開放一個埠,,然後電腦上的服務通過對映給代理伺服器在通過外網訪問。。是不是很拗口。 其實也很好理解 就說現

零基礎個人建站——混合模式開發之專案上線那些 、四

關於vue 打包 在開發完vue 專案後  實際上線的時候我們需要生產環境而不是開發環境  (這是句廢話 ) 這個時候  我們需要在專案下  執行 npm run build 會在專案下生成dist資料夾    然

零基礎個人建站——混合模式開發之專案上線那些 、三

關於連線mongodb資料庫 首先 安裝肯定少不了吧~~~ MongoDB 提供了 linux 各發行版本 64 位的安裝包,你可以在官網下載安裝包。 下載地址:https://www.mongodb.com/download-center#community 下載完安裝包,並

零基礎個人建站——混合模式開發之專案上線那些 、二

用nodejs 開啟我們的服務   (這裡採用KOA框架   和mongodb 資料庫)關於裡面的詳細程式碼我就不說了,,沒有基礎的同學要去努力學習~~~~ 一 、 全域性安裝koa-腳手架 1、新建專案目錄,準備在哪裡建立專案和寫程式碼,就在哪裡建立

零基礎個人建站——混合模式開發之專案上線那些

作為一個勤勞的碼農。你肯定不甘心每天在自己的電腦上自娛自樂,如何跟別人分享一下自己做過的案例呢? 今天我們就說一說關於專案上線的那些坑—————— 一、如果你實在很沒聽過下邊的這幾個概念,那今天就先來了解一下吧~~因為下邊會經常用到。  1、公網    &nbs

Java實現FTP上傳檔案到Linux伺服器的那些

一、Linux安裝FTP服務         首先Linux伺服器需要安裝FTP服務,步驟如下: 1、執行如下ftp服務安裝命令: yum install vsftpd 可能會出現如下錯誤: "Couldn't open file /m

Java / Android 面試中所遇到的那些

某度,去了以後才發現是做基於各類SDK的開發,用於行業國際化,後期拓展到整個產品線上的;能力方面:是想找一個架構能力非常強,或者原始碼分析能力非常強,或者coding能力非常強的一個工程師,第二家公司是想找一個資深架構師或者是專案leader;第三家,朋友所在的公司,同樣也是想找個資深程式設

微信小程式開發之路上遇到的那些

微信野心越來越大,如今已經從開始簡單的聊天工具發展成了一個網際網路生態系統,網羅了目前各大網際網路平臺所具備的功能,最近iOS端微信上線的“搜一搜”和“看一看”更加證實了這一點,直接看下面這張圖吧: 好了,今天繼續給大家分享這個牛逼的“削蘋果”的小程式的相

浮點數的那些Java中的金額處理方案

Java中的浮點數由於精度問題經常出現意料之外的結果,而我們又不得不和RMB打交道的 有任何問題,歡迎Email to: [email protected] 1.舉個栗子: public static void main(String[] args) {Syst

Apple Watch應用開發經驗談:我遇到的那些

本文作者張忠良是滴答清單Apple Watch版應用的開發工程師,他用了一週的時間使用純Objective-C語言完成了Apple Watch版滴答清單應用的開發工作。在這裡,他從開發角度闡述了個人對於Apple Watch的理解,以及Apple Watch應用開發過程的經驗心

Java 開發,如何掙得高薪,都有那些技術需要學習

第二你需要有全面的網際網路技術相關知識。從底層說起,你起碼得深入瞭解 mysql,redis,nginx,tomcat,rpc,jms 等方面的知識。你要問需要了解到什麼程度,我可以給你說個大慨。首先對於 MySQL,你要知道常見的引數設定,儲存引擎怎麼去選擇,還需要了解常見的索引引擎,知道怎麼去選擇。知道怎