前言
当初年少懵懂,那年夏天填志愿选专业,父母听其他长辈说选择计算机专业好。从那以后,我的身上就有了计院深深的烙印。从寝室到机房,从机房到图书馆,C、C++、Java、只要是想写点自己感兴趣的东西,一坐就是几个小时,但那时年轻,起身,收拾,一路小跑会女神,轻轻松松。
现在工作了,毫无意外的做着开发的工作,长时间久坐。写代码一忙起来就忘了起来活动一下,也不怎么喝水。经常等到忙完了就感觉腰和腿不舒服。直到今年的体检报告一下来,才幡然醒悟:没有一个好身体,就不能好好打工,让老板过上他自己想要的生活了.
试过用手机提醒自己,但是没用。小米手环的久坐提醒功能也开着,有时候写代码正入神的,时间到了也就点一下就关了,还是没什么作用。所以我想究竟是我太赖了,还是用Idea写代码容易沉迷,总之不可能是改需求有意思。
所以元旦节打算为自己开发一款小小的Idea防沉迷插件,我叫她【StopCoding】。她应该可以设置每隔多少分钟,就弹出一个提醒对话框,一旦对话框弹出来,idea的代码编辑框就自动失去了焦点,什么都不能操作,到这还不算完,关键是这个对话框得关不了,并且还显示着休息倒计时,还有即使我修改了系统时间,这个倒计时也依然有效,除非我打开任务管理器,关闭Idea的进程,然后再重新启动Idea。但是想一下想,idea都都关了,还是休息一下吧。
下面就介绍一下她简单的使用教程和开发教程
安装使用教程
安装
1.在idea中直接搜索安装StopCoding插件(官方已经审核通过)
image-202203071921148002.内网开发的小伙伴 可以下载之后进行本地安装
https://github.com/jogeen/StopCoding/releases/tag/20210104-V1.0
本地安装
image-20220307192136528使用
Step1. 然后在菜单栏中tools->StopCoding
image-20220307192219098Step2. 设置适合你的参数然后保存。
image-20220307192228493Step3. 然后快乐的Coding吧,再不用担心自己会沉迷了。工作时间结束,她会弹出下框进行提醒,当然,这个框是关不掉的.只有你休息了足够的时间它才会自动关闭。
image-20220307192236747开发教程
这个插件非常的简约,界面操作也很简单。所使用的技术基本上都是java的基础编程知识。所以小伙伴感兴趣的话,一起看看吧。
技术范围
-
插件工程的基本结构
-
Swing 主要负责两个对话框的交互
-
Timer 作为最基本的定时器选择
插件工程结构
image-20220307192258955plugin.xml
这是插件工程的核心配置文件,里面每一项的解释,可以参考第一篇的介绍:
https://juejin.cn/post/6844904127990857742
data包
SettingData,配置信息对应model
DataCenter,作为运行时的数据中心,都是些静态的全局变量
service
TimerService 这个定时计算的核心代码
task
RestTask 休息时的定时任务
WorkTask 工作时的定时任务
ui
SettingDialog 设置信息的对话框
TipsDialog 休息时提醒的对话框
StopCodingSettingAction 启动入口的action
Swing
其实在idea中开发Swing项目的界面非常简单。因为idea提供了一系列可视化的操作,以及控件布局的拖拽。接下来就简单的介绍一下对话框的创建过程和添加事件。
创建对话框
Step1
image-20220307192320398Step2
image-20220307192353914Step3
image-20220307192403200注:这里并没有详细的展开Swing的讲解,因为界面的这个东西,需要大家多去自己实践。这里就不做手册式的赘述了。
添加事件
其实,刚才创建的这个对话框里的两个按钮都是默认已经创建好了点击事件的。
image-20220307192416076当然我们也可以其它任何控件去创建不同的事件监听器。这里可以通过界面操作创建很多种监听器,只要你需要,就可以使用。
step1
image-20220307192426263step2
image-20220307192436017Timer定时器
在这个插件里面,需要用到定时的功能,同时去计算公国和休息的时间。所以使用JDK自带的Timer,非常的方便。下面我Timer的常用的api放在这里,就清楚它的使用了。
构造方法
image-20220307192454672成员防范
image-20220307192507050主要是schedule去添加一个定时任务,和使用cancel去取消任务停止定时器。
最后
相信有了这些基本介绍,感谢兴趣的小伙伴想去看看源码和尝试自己写一个小插件就没什么大问题了。不说了,我得休息了。希望这个插件能帮到作为程序员得你,和这篇文章对你有一点点启发。当然麻烦小伙伴点个赞,鼓励一下打工人。
金三银四程序员面试开始了,很多人怕卷不过别人,但苦于没有系统的提升学习方法,这里免费分享一份GitHub 上标星 120k的Java中高级基础-进阶知识全面解析。主要包括 Java 基础、Java 容器、Java 并发、Java 虚拟机和 Java IO。另外还附带网络、linux、数据结构与算法、数据库、系统设计、必会工具、面试指南等内容,非常全面。
(一). 基础
1、Java 基本功
-
Java 入门(基础概念与常识)
-
Java 语法
-
基本数据类型
-
方法(函数)
2、Java 面向对象
-
类和对象
-
面向对象三大特征
-
修饰符
-
接口和抽象类
-
其它重要知识点
3、Java 核心技术
-
集合
-
异常
-
多线程
-
文件与 I\O 流
(二). 并发
1、并发容器
-
JDK 提供的并发容器总结
-
ConcurrentHashMap
-
CopyOnWriteArrayList
-
ConcurrentLinkedQueue
-
BlockingQueue
-
ConcurrentSkipListMap
2、线程池
-
使用线程池的好处
-
Executor 框架
-
(重要)ThreadPoolExecutor 类简单介绍
-
(重要)ThreadPoolExecutor 使用示例
-
几种常见的线程池详解
-
ScheduledThreadPoolExecutor 详解
-
线程池大小确定
3、乐观锁与悲观锁
-
何谓悲观锁与乐观锁
-
乐观锁常见的两种实现方式
-
乐观锁的缺点
-
CAS与synchronized的使用情景
(三). JVM
1、Java内存区域
-
概述
-
运行时数据区域
-
HotSpot 虚拟机对象探秘
-
重点补充内容
2、JVM垃圾回收
-
揭开 JVM 内存分配与回收的神秘面纱
-
对象已经死亡?
-
垃圾收集算法
-
垃圾收集器
3、JDK 监控和故障处理工具
-
JDK 命令行工具
-
JDK 可视化分析工具
(四)网络、linux、数据结构与算法、数据库、系统设计、必会工具、面试指南
img因为篇幅有限,其他内容就不一一展示了,这本进阶笔记总共有512页。对于想要进阶的小伙伴来说应该会很有帮助,希望也能帮助到你。
网友评论