IntelliJ IDEA

Netty 如何实现心跳机制与断线重连?

筅森魡賤 提交于 2020-05-08 16:02:11
作者:sprinkle_liz www.jianshu.com/p/1a28e48edd92 心跳机制 何为心跳 所谓心跳, 即在 TCP 长连接中, 客户端和服务器之间定期发送的一种特殊的数据包, 通知对方自己还在线, 以确保 TCP 连接的有效性. 注:心跳包还有另一个作用,经常被忽略,即: 一个连接如果长时间不用,防火墙或者路由器就会断开该连接。 如何实现 核心Handler —— IdleStateHandler 在 Netty 中, 实现心跳机制的关键是 IdleStateHandler, 那么这个 Handler 如何使用呢? 先看下它的构造器: public IdleStateHandler(int readerIdleTimeSeconds, int writerIdleTimeSeconds, int allIdleTimeSeconds) { this((long)readerIdleTimeSeconds, (long)writerIdleTimeSeconds, (long)allIdleTimeSeconds, TimeUnit.SECONDS); } 这里解释下三个参数的含义: readerIdleTimeSeconds: 读超时. 即当在指定的时间间隔内没有从 Channel 读取到数据时, 会触发一个 READER_IDLE 的

Intellij IDEA中分屏显示方法

天涯浪子 提交于 2020-05-08 15:28:27
今天才发现IDEA中还有split view的功能,上网查的时候查到了很多莫名其妙的东西。 实际上对想分屏显示的文件 右键->Split Virtically/Split Horizontally 就可以啦。 非常适合用来参考代码的场合。 来源: oschina 链接: https://my.oschina.net/u/4307541/blog/4270315

LinkedHashMap 源码分析,底层竟这么简单!

☆樱花仙子☆ 提交于 2020-05-08 14:30:00
作者:Pz cnblogs.com/panzi/p/10845079.html LinkedHashMap 是一个键有序的 HashMap, 可以将 LinkedHashMap 理解为 LinkList + HashMap。 所以研究 LinkedHashMap 之前要先看 HashMap 代码,这里不再赘述。 其实 LinkedHashMap 无非就是通过链表结构将存储在 HashMap 中的数据通过 beofre,after 连接起来。 作为一个链表结构 head , tail 必不可少 /** * The head (eldest) of the doubly linked list. */ transient LinkedHashMap.Entry<K,V> head; /** * The tail (youngest) of the doubly linked list. */ transient LinkedHashMap.Entry<K,V> tail; 还要有一个存储 前节点和后节点的数据结构 /** * HashMap.Node subclass for normal LinkedHashMap entries. */ static class Entry<K,V> extends HashMap.Node<K,V> { Entry<K,V> before,

Java趣味分享:try & finally

会有一股神秘感。 提交于 2020-05-08 14:29:15
考虑以下四个测试方法,它们会输出什么? public class Test { public static void main(String\[\] args) { System.out.println(test1()); System.out.println(test2()); System.out.println(test3()); System.out.println(test4()); } private static int test1() { int i = 1; try { return i; } catch (Exception e) { e.printStackTrace(); } finally { i = 0; } return i; } private static int test2() { int i = 1; try { return i; } catch (Exception e) { e.printStackTrace(); } finally { i = 0; return i; } } private static User test3() { User user = new User("u1"); try { return user; } catch (Exception e) { e.printStackTrace(); } finally

学习java多线程,这必须搞懂的这几个概念,很重要。

走远了吗. 提交于 2020-05-08 14:09:15
同步和异步 同步,Synchronous,即调用方法开始,一旦调用就必须等待方法执行完返回才能继续下面的操作。 举个例子,你去银行ATM取钱,你必须等到ATM吐完钱你拿到钱取完卡你才能离开。 异步,Asynchronous,即不关心方法执行的过程,触发要调用的方法就继续执行下面的操作,不会像同步那样阻塞直要到方法完成才继续。 举个例子,你这次要取钱,数量较大,你直接电话或者APP预约银行说你要取多少万现金,这段时间银行会为你准备钱,而这与你都没什么关系,然后你只要按预定的时候去取就行了,对你于而言,你们是触发了一个异步动作而已。 并发和并行 并发,Concurrency,即一段时间内多个任务在执行,但不一定是同时在执行,它们可能是交替在运行,也有可能是串行运行的。 并行,Parallelism,这个就是多个任务在同时执行,可以理解为并发里面有一部分任务在并行执行。 单核CPU不会有并行操作,应为一个CPU一次只能执行一条指令,并行操作只存在于多核CPU中。 阻塞和非阻塞 阻塞,Blocking,如果一个线程占用了一个公共资源而没有释放对它的锁,另外别的一些线程想要继续执行就只能等它释放锁,这时候就造成阻塞了。 非阻塞,Non-Blocking,就是没有阻塞,线程可以自由运行,没有锁定公共资源,不相互阻塞运行。 推荐去我的博客阅读更多: 1. Java JVM、集合、多线程

学习java多线程,这必须搞懂的这几个概念,很重要。

谁说我不能喝 提交于 2020-05-08 13:12:36
同步和异步 同步,Synchronous,即调用方法开始,一旦调用就必须等待方法执行完返回才能继续下面的操作。 举个例子,你去银行ATM取钱,你必须等到ATM吐完钱你拿到钱取完卡你才能离开。 异步,Asynchronous,即不关心方法执行的过程,触发要调用的方法就继续执行下面的操作,不会像同步那样阻塞直要到方法完成才继续。 举个例子,你这次要取钱,数量较大,你直接电话或者APP预约银行说你要取多少万现金,这段时间银行会为你准备钱,而这与你都没什么关系,然后你只要按预定的时候去取就行了,对你于而言,你们是触发了一个异步动作而已。 并发和并行 并发,Concurrency,即一段时间内多个任务在执行,但不一定是同时在执行,它们可能是交替在运行,也有可能是串行运行的。 并行,Parallelism,这个就是多个任务在同时执行,可以理解为并发里面有一部分任务在并行执行。 单核CPU不会有并行操作,应为一个CPU一次只能执行一条指令,并行操作只存在于多核CPU中。 阻塞和非阻塞 阻塞,Blocking,如果一个线程占用了一个公共资源而没有释放对它的锁,另外别的一些线程想要继续执行就只能等它释放锁,这时候就造成阻塞了。 非阻塞,Non-Blocking,就是没有阻塞,线程可以自由运行,没有锁定公共资源,不相互阻塞运行。 推荐去我的博客阅读更多: 1. Java JVM、集合、多线程

LinkedHashMap 源码分析,底层竟这么简单!

亡梦爱人 提交于 2020-05-08 12:32:02
作者:Pz cnblogs.com/panzi/p/10845079.html LinkedHashMap 是一个键有序的 HashMap, 可以将 LinkedHashMap 理解为 LinkList + HashMap。 所以研究 LinkedHashMap 之前要先看 HashMap 代码,这里不再赘述。 其实 LinkedHashMap 无非就是通过链表结构将存储在 HashMap 中的数据通过 beofre,after 连接起来。 作为一个链表结构 head , tail 必不可少 /** * The head (eldest) of the doubly linked list. */ transient LinkedHashMap.Entry<K,V> head; /** * The tail (youngest) of the doubly linked list. */ transient LinkedHashMap.Entry<K,V> tail; 还要有一个存储 前节点和后节点的数据结构 /** * HashMap.Node subclass for normal LinkedHashMap entries. */ static class Entry<K,V> extends HashMap.Node<K,V> { Entry<K,V> before,

Spring Boot (3) 热部署devtools

别说谁变了你拦得住时间么 提交于 2020-05-08 10:57:14
热部署:当发现程序修改时自动启动应用程序。 spring boot为开发者提供了一个名为spring-boot-devtools的模块来使sring boot应用支持热部署,提高开发者的开发效率,无需手动重启spring boot应用程序。 devtools的原理   深层原理是使用了两个ClassLoader,一个ClassLoader加载那些不会改变的类(第三方jar包),另一个ClassLoader加载会更改的类,称为restart ClassLoader,这样在有代码更改的时候,原来的restart ClassLoader会被丢弃,重新创建一个restart ClassLoader,由于需要加载的类比较少,所以实现了较快的重启时间。 在pom.xml中添加依赖: <!-- 热部署 --> < dependency > < groupId > org.springframework.boot </ groupId > < artifactId > spring-boot-devtools </ artifactId > < optional > true </ optional > </ dependency > 编译节点添加: < build > < plugins > < plugin > < groupId > org.springframework.boot </

Maven+JSP+SSM+Mysql实现的汽车租赁管理系统

若如初见. 提交于 2020-05-08 09:48:53
项目简介 项目来源于: https://gitee.com/huang_xiao_feng/carrentalsystem 本系统基于 Maven+JSP+SSM+Mysql 实现的汽车租赁管理系统。简单实现了基础管理、系统管理,业务管理和统计分析。 难度等级:中等 技术栈 编辑器 IntelliJ IDEA 2019.1.1 (Ultimate Edition) 前端技术 基础:html+css+JavaScript 框架: JQuery + Layui 后端技术 Spring+SpringMVC+Mybatis 模板引擎:JSP 数据库连接池:Druid 数据库:mysql 5.7.27(个人测试使用) jdk版本:1.8.0_181(个人测试使用) tomcat版本:8.5.34(个人测试使用) 本地运行 若有疑惑可查看 视频版本 。 1.下载zip直接解压或安装git后执行克隆命令 git clone https://gitee.com/huang_xiao_feng/carrentalsystem.git 2.使用idea打开项目,配置maven、jdk即可。 3.打开Navicat For Mysql,创建 carrentalsystem 数据库,并运行 sql/carrentalsystem.sql 。 4.修改 resources\dataconnection

idea注册码永久激活(激活到2100年)

佐手、 提交于 2020-05-08 08:35:29
亲测可用,有图有真相 第一步 ,获取文件 链接:https://pan.baidu.com/s/1QYN5vBthHc20j2iEfosjIg 提取码:j81v 第二步 :将bin目录下的三个文件拷贝到IDEA安装之后的bin目录下,替换原来的文件。 第三步 :编辑idea.exe.vmoptions和idea64.exe.vmoptions文件,这两个文件的修改方式完全相同,都是修改文件的最后一行:"-javaagent:"。确保"-javaagent:将jar文件的全路径拷贝到这里" 例如:-javaagent:D:\Program Files\ideaIU-2018.3.5\IntelliJ IDEA 2018.3.5\bin\JetbrainsIdesCrack-4.2-release-sha1-3323d5d0b82e716609808090d3dc7cb3198b8c4b.jar 第四步 :打开IDEA工具:Help-->Register...-->选择Activation code,将以下激活码粘贴进去,重启IDEA ThisCrackLicenseId- { "licenseId":"ThisCrackLicenseId" , "licenseeName":"idea" , "assigneeName":"" , "assigneeEmail":"idea@163