前言
當(dāng)初年少懵懂陡厘,那年夏天填志愿選專業(yè),父母聽其他長輩說選擇計算機專業(yè)好特占。從那以后糙置,我的身上就有了計院深深的烙印。從寢室到機房摩钙,從機房到圖書館罢低,C、C++胖笛、Java网持、只要是想寫點自己感興趣的東西,一坐就是幾個小時长踊,但那時年輕功舀,起身,收拾身弊,一路小跑會女神辟汰,輕輕松松。
現(xiàn)在工作了阱佛,毫無意外的做著開發(fā)的工作帖汞,長時間久坐。寫代碼一忙起來就忘了起來活動一下凑术,也不怎么喝水翩蘸。經(jīng)常等到忙完了就感覺腰和腿不舒服。直到今年的體檢報告一下來,才幡然醒悟:沒有一個好身體,就不能好好打工,讓老板過上他自己想要的生活了.
試過用手機提醒自己淮逊,但是沒用催首。小米手環(huán)的久坐提醒功能也開著扶踊,有時候?qū)懘a正入神的,時間到了也就點一下就關(guān)了郎任,還是沒什么作用秧耗。所以我想究竟是我太賴了,還是用Idea寫代碼容易沉迷舶治,總之不可能是改需求有意思分井。
所以元旦節(jié)打算為自己開發(fā)一款小小的Idea防沉迷插件,我叫她【StopCoding】歼疮。她應(yīng)該可以設(shè)置每隔多少分鐘杂抽,就彈出一個提醒對話框,一旦對話框彈出來韩脏,idea的代碼編輯框就自動失去了焦點缩麸,什么都不能操作,到這還不算完赡矢,關(guān)鍵是這個對話框得關(guān)不了杭朱,并且還顯示著休息倒計時,還有即使我修改了系統(tǒng)時間吹散,這個倒計時也依然有效弧械,除非我打開任務(wù)管理器,關(guān)閉Idea的進(jìn)程空民,然后再重新啟動Idea刃唐。但是想一下想,idea都都關(guān)了界轩,還是休息一下吧画饥。
下面就介紹一下她簡單的使用教程和開發(fā)教程
安裝使用教程
安裝
1.在idea中直接搜索安裝StopCoding插件(官方已經(jīng)審核通過)
2.內(nèi)網(wǎng)開發(fā)的小伙伴 可以下載之后進(jìn)行本地安裝
https://github.com/jogeen/StopCoding/releases/tag/20210104-V1.0
本地安裝
使用
Step1. 然后在菜單欄中tools->StopCoding
Step2. 設(shè)置適合你的參數(shù)然后保存。
Step3. 然后快樂的Coding吧浊猾,再不用擔(dān)心自己會沉迷了抖甘。工作時間結(jié)束,她會彈出下框進(jìn)行提醒,當(dāng)然,這個框是關(guān)不掉的.只有你休息了足夠的時間它才會自動關(guān)閉。
開發(fā)教程
這個插件非常的簡約,界面操作也很簡單葫慎。所使用的技術(shù)基本上都是java的基礎(chǔ)編程知識衔彻。所以小伙伴感興趣的話,一起看看吧偷办。
技術(shù)范圍
插件工程的基本結(jié)構(gòu)
Swing 主要負(fù)責(zé)兩個對話框的交互
Timer 作為最基本的定時器選擇
插件工程結(jié)構(gòu)
plugin.xml
這是插件工程的核心配置文件艰额,里面每一項的解釋,可以參考第一篇的介紹:
https://juejin.cn/post/6844904127990857742
data包
SettingData,配置信息對應(yīng)model
DataCenter,作為運行時的數(shù)據(jù)中心椒涯,都是些靜態(tài)的全局變量
service
TimerService 這個定時計算的核心代碼
task
RestTask 休息時的定時任務(wù)
WorkTask 工作時的定時任務(wù)
ui
SettingDialog 設(shè)置信息的對話框
TipsDialog 休息時提醒的對話框
StopCodingSettingAction 啟動入口的action
Swing
其實在idea中開發(fā)Swing項目的界面非常簡單悴晰。因為idea提供了一系列可視化的操作,以及控件布局的拖拽逐工。接下來就簡單的介紹一下對話框的創(chuàng)建過程和添加事件铡溪。
創(chuàng)建對話框
Step1
Step2
Step3
注:這里并沒有詳細(xì)的展開Swing的講解,因為界面的這個東西泪喊,需要大家多去自己實踐棕硫。這里就不做手冊式的贅述了。
添加事件
其實袒啼,剛才創(chuàng)建的這個對話框里的兩個按鈕都是默認(rèn)已經(jīng)創(chuàng)建好了點擊事件的哈扮。
當(dāng)然我們也可以其它任何控件去創(chuàng)建不同的事件監(jiān)聽器。這里可以通過界面操作創(chuàng)建很多種監(jiān)聽器蚓再,只要你需要滑肉,就可以使用。
step1
step2
Timer定時器
在這個插件里面摘仅,需要用到定時的功能靶庙,同時去計算公國和休息的時間。所以使用JDK自帶的Timer娃属,非常的方便六荒。下面我Timer的常用的api放在這里,就清楚它的使用了矾端。
構(gòu)造方法
成員防范
主要是schedule去添加一個定時任務(wù)掏击,和使用cancel去取消任務(wù)停止定時器。
最后
相信有了這些基本介紹秩铆,感謝興趣的小伙伴想去看看源碼和嘗試自己寫一個小插件就沒什么大問題了砚亭。不說了,我得休息了殴玛。希望這個插件能幫到作為程序員得你捅膘,和這篇文章對你有一點點啟發(fā)。當(dāng)然麻煩小伙伴點個贊族阅,鼓勵一下打工人篓跛。
金三銀四程序員面試開始了,很多人怕卷不過別人坦刀,但苦于沒有系統(tǒng)的提升學(xué)習(xí)方法愧沟,這里免費分享一份GitHub 上標(biāo)星 120k的Java中高級基礎(chǔ)-進(jìn)階知識全面解析。主要包括 Java 基礎(chǔ)鲤遥、Java 容器沐寺、Java 并發(fā)、Java 虛擬機和 Java IO盖奈。另外還附帶網(wǎng)絡(luò)混坞、linux、數(shù)據(jù)結(jié)構(gòu)與算法、數(shù)據(jù)庫究孕、系統(tǒng)設(shè)計啥酱、必會工具、面試指南等內(nèi)容厨诸,非常全面镶殷。
(一). 基礎(chǔ)
1颗管、Java 基本功
Java 入門(基礎(chǔ)概念與常識)
Java 語法
基本數(shù)據(jù)類型
方法(函數(shù))
2陷遮、Java 面向?qū)ο?/p>
類和對象
面向?qū)ο笕筇卣?/p>
修飾符
接口和抽象類
其它重要知識點
3、Java 核心技術(shù)
集合
異常
多線程
文件與 I\O 流
(二). 并發(fā)
1垦江、并發(fā)容器
JDK 提供的并發(fā)容器總結(jié)
ConcurrentHashMap
CopyOnWriteArrayList
ConcurrentLinkedQueue
BlockingQueue
ConcurrentSkipListMap
2帽馋、線程池
使用線程池的好處
Executor 框架
(重要)ThreadPoolExecutor 類簡單介紹
(重要)ThreadPoolExecutor 使用示例
幾種常見的線程池詳解
ScheduledThreadPoolExecutor 詳解
線程池大小確定
3、樂觀鎖與悲觀鎖
何謂悲觀鎖與樂觀鎖
樂觀鎖常見的兩種實現(xiàn)方式
樂觀鎖的缺點
CAS與synchronized的使用情景
(三). JVM
1疫粥、Java內(nèi)存區(qū)域
概述
運行時數(shù)據(jù)區(qū)域
HotSpot 虛擬機對象探秘
重點補充內(nèi)容
2茬斧、JVM垃圾回收
揭開 JVM 內(nèi)存分配與回收的神秘面紗
對象已經(jīng)死亡?
垃圾收集算法
垃圾收集器
3、JDK 監(jiān)控和故障處理工具
JDK 命令行工具
JDK 可視化分析工具
(四)網(wǎng)絡(luò)梗逮、linux项秉、數(shù)據(jù)結(jié)構(gòu)與算法、數(shù)據(jù)庫慷彤、系統(tǒng)設(shè)計娄蔼、必會工具、面試指南
因為篇幅有限底哗,其他內(nèi)容就不一一展示了岁诉,這本進(jìn)階筆記總共有512頁。對于想要進(jìn)階的小伙伴來說應(yīng)該會很有幫助跋选,希望也能幫助到你涕癣。