IntelliJ IDEA

IDEA自动部署WEB工程至远程服务器(学习笔记)

天大地大妈咪最大 提交于 2020-04-30 02:19:43
一、部署Web工程的几种方式 ①本地打war,上传至远程服务器tomcat容器即可   优点:简单粗暴   缺点:浪费时间 ②IDEA自动部署至远程服务器   优点:节省大量时间   缺点:配置稍多(第一次) 二、IDEA自动部署至远程服务器 ①搭建服务器的tomcat环境 ②本地IDEA关联远程服务器   打开IDEA,按如下图配置:      进入配置界面      继续配置      上传本地工程包: 这样,我们在本地修改某个java文件,直接提交该class即可,无需打war上传等繁琐的过程。    ③tomcat配置文件:server.xml   Tomcat部署Web项目的3种方式 来源: oschina 链接: https://my.oschina.net/u/4288583/blog/3414162

【MySQL8.0.18】IDEA 连接数据库无法显示数据表

妖精的绣舞 提交于 2020-04-30 02:10:15
先说结论,目前 IDEA 默认提供的最高的 MySQL 驱动是 v8.0.15,驱动版本过低。 贴一张问题图。很明显可以看出数据库中什么也没有。而数据库可以正常访问且查询数据。 由于使用的数据库是MySQL8.0.18,所以最有可能出现问题的地方,就是驱动程序。 右键数据库,选择 Properties --> Drivers -->MySQL ,可以看到我们的驱动包版本是 ver.8.0.15,而数据库是 8.0.18 版本的。 点击图中的 ver.8.0.15,进行切换版本,但是并没有对应的8.0.18的版本。 访问 Maven公共库: https://mvnrepository.com/tags/maven ,在搜索框键入 “MySQL”搜索,选择 MySQL Connector/J。可以看到,驱动已经更新到8.0.19了。选择8.0.18。直接点击 jar(2.2M)进行下载jar包。 在IDEA的配置目录下,默认在 C:\Users\电脑用户名\.IntelliJIdea2019.3\config\jdbc-drivers\MySQL Connector\J 8 ,创建一个名为 8.0.18的文件夹,将 jar包复制进去。 回到IDEA,点击 "+",选择 "Custom JRAs",浏览目录选择jar包。点击"-",把旧版本的驱动移除,然后应用OK。此时显示以下情况

详解 Java 的八大基本类型,写得非常好!

六眼飞鱼酱① 提交于 2020-04-29 17:09:30
自从Java发布以来,基本数据类型就是Java语言中重要的一部分,本文就来详细介绍下每种基本类型的具体使用方法和限制。 几年前,我开始编写了一系列有关Java入门的文章,我觉得有必要将其中一些非常细节的内容单独拿出来写成文章。这样,那些入门内容就更容易理解了。首先,我来介绍一下有关Java 8中的基本类型。 如题所述,Java语言本身有8种基本类型。在下面几节中,就让我们一起来看看这8种基本类型。我将针对每种基本类型,介绍具体的使用方法和限制。 int基本类型 首先,Java的整数是32位有符号(即包括正值和负值)整数,由int关键字表示: int someNumber = 10; 当然,像所有基本类型一样,整型有自己的限制。由于它只有32位,所以其取值范围为-2147483648到2147483647。这数字很大嘛!当然,我们可以在DrJava的交互面板中用下述技巧来确认: Integer.MAX_VALUE // Prints 2,147,483,647 Integer.MIN_VALUE // Prints -2,147,483,648 自然地,对于简单的计算而言,int是最常用的整数类型。如果你需要更大的数字范围,请参照下面的long。 double基本类型 与int不同,Java的双精度类型是64位浮点数,由double关键字表示: double someNumber =

IntelliJ IDEA 高级调试技巧,用得非常爽!

浪子不回头ぞ 提交于 2020-04-29 17:07:13
作者:十光年 https://www.cnblogs.com/jun1019/p/9741224.html 一、条件断点 循环中经常用到这个技巧,比如:遍历1个大List的过程中,想让断点停在某个特定值。 参考上图,在断点的位置,右击断点旁边的小红点,会出来一个界面,在Condition这里填入断点条件即可,这样调试时,就会自动停在i=10的位置 二、回到"上一步" 该技巧最适合特别复杂的方法套方法的场景,好不容易跑起来,一不小心手一抖,断点过去了,想回过头看看刚才的变量值,如果不知道该技巧,只能再跑一遍。 参考上图,method1方法调用method2,当前断点的位置j=100,点击上图红色箭头位置的Drop Frame图标后,时间穿越了 回到了method1刚开始调用的时候,变量i变成了99,没毛病吧,老铁们,是不是很6 😃 注:好奇心是人类进步的阶梯,如果想知道为啥这个功能叫Drop Frame,而不是类似Back To Previous 之类的,可以去翻翻JVM的书,JVM内部以栈帧为单位保存线程的运行状态,drop frame即扔掉当前运行的栈帧,这样当前“指针”的位置,就自然到了上一帧的位置。 三、多线程调试 多线程同时运行时,谁先执行,谁后执行,完全是看CPU心情的,无法控制先后,运行时可能没什么问题,但是调试时就比较麻烦了,最明显的就是断点乱跳,一会儿停这个线程

详解 Java 的八大基本类型,写得非常好!

守給你的承諾、 提交于 2020-04-29 16:51:26
自从Java发布以来,基本数据类型就是Java语言中重要的一部分,本文就来详细介绍下每种基本类型的具体使用方法和限制。 几年前,我开始编写了一系列有关Java入门的文章,我觉得有必要将其中一些非常细节的内容单独拿出来写成文章。这样,那些入门内容就更容易理解了。首先,我来介绍一下有关Java 8中的基本类型。 如题所述,Java语言本身有8种基本类型。在下面几节中,就让我们一起来看看这8种基本类型。我将针对每种基本类型,介绍具体的使用方法和限制。 int基本类型 首先,Java的整数是32位有符号(即包括正值和负值)整数,由int关键字表示: int someNumber = 10; 当然,像所有基本类型一样,整型有自己的限制。由于它只有32位,所以其取值范围为-2147483648到2147483647。这数字很大嘛!当然,我们可以在DrJava的交互面板中用下述技巧来确认: Integer.MAX_VALUE // Prints 2,147,483,647 Integer.MIN_VALUE // Prints -2,147,483,648 自然地,对于简单的计算而言,int是最常用的整数类型。如果你需要更大的数字范围,请参照下面的long。 double基本类型 与int不同,Java的双精度类型是64位浮点数,由double关键字表示: double someNumber =

如何通过 IntelliJ IDEA 来提升 Java8 Stream 的编码效率

十年热恋 提交于 2020-04-29 16:26:29
本文翻译整理自: https://winterbe.com/posts/2015/03/05/fixing-java-8-stream-gotchas-with-intellij-idea 作者:@Winterbe 欢迎关注个人微信公众号: 小哈学Java , 文末 分享阿里 P8 资深架构师吐血总结的 《Java 核心知识整理&面试.pdf》资源链接 !! 个人网站: https://exception.site/java8/java8-improve-stream-byidea-tips 小哈再次推荐一篇 @Winterbe 的译文,主要是讲如何通过 IntelliJ IDEA 来提升 Stream 的编码效率,算是一个小技巧,经常使用 Java8 Stream 流的小伙伴们,可以试下,能够提升工作效率哦! PS: 在阅读本文前,建议您先阅读一下小哈的另一篇译文: 《Java8 新特性 Stream 流教程》 目录 一、Java8 Stream API 的不友好性 二、借助 IntelliJ IDEA 来优化一下 2.1 新建 Stream Live Templates 2.2 顺手把其他常用的模板设置一下 三、结语 一、Java8 Stream API 的不友好性 Java8 自 2014 年 3 月发布以来,已经过去很多个年头了。在我们公司内部

Java 8 Optional的正确姿势(转)

旧时模样 提交于 2020-04-29 15:35:09
Optional是Java8提供的为了解决null安全问题的一个API。善用Optional可以使我们代码中很多繁琐、丑陋的设计变得十分优雅。 当我们还在以如下几种方式使用 Optional 时, 就得开始检视自己了 调用 isPresent() 方法时 调用 get() 方法时 Optional 类型作为类/实例属性时 Optional 类型作为方法参数时 isPresent() 与 obj != null 无任何区别, 我们的生活依然在步步惊心. 而没有 isPresent() 作铺垫的 get() 调用在 IntelliJ IDEA 中会收到告警。调用 Optional.get() 前不事先用 isPresent() 检查值是否可用. 假如 Optional 不包含一个值, get() 将会抛出一个异常! 把 Optional 类型用作属性或是方法参数在 IntelliJ IDEA 中更是强力不推荐的! 使用任何像 Optional 的类型作为字段或方法参数都是不可取的. Optional 只设计为类库方法的, 可明确表示可能无值情况下的返回类型. Optional 类型不可被序列化, 用作字段类型会出问题的!!! 正确的应该是: 尽量避免使用的地方: 1、避免使用Optional.isPresent()来检查实例是否存在,因为这种方式和null != obj没有区别

Java码农必须掌握的循环删除List元素的正确方法!

半腔热情 提交于 2020-04-29 14:32:00
首先看下下面的各种删除list元素的例子 public static void main(String\[\] args) { List<String> list = new ArrayList<>(Arrays.asList("a1", "ab2", "a3", "ab4", "a5", "ab6", "a7", "ab8", "a9")); /** * 报错 * java.util.ConcurrentModificationException */ for (String str : list) { if (str.contains("b")) { list.remove(str); } } /** * 报错:下标越界 * java.lang.IndexOutOfBoundsException */ int size = list.size(); for (int i = 0; i < size; i++) { String str = list.get(i); if (str.contains("b")) { list.remove(i); } } /** * 正常删除,每次调用size方法,损耗性能,不推荐 */ for (int i = 0; i < list.size(); i++) { String str = list.get(i); if (str

StackOverflow 上面最流行的 7 个 Java 问题!

为君一笑 提交于 2020-04-29 13:10:20
StackOverflow发展到目前,已经成为了全球开发者的金矿。它能够帮助我们找到在各个领域遇到的问题的最有用的解决方案,同时我们也会从中学习到很多新的东西。 这篇文章是在我们审阅了StackOverflow上最流行的 Java 问题以及答案后从中挑出来的。即使你是一个有丰富经验的开发者,也能从中学到不少东西。 一、分支预测 问题链接: https://stackoverflow.com/questions/11227809/why-is-it-faster-to-process-a-sorted-array-than-an-unsorted-array StackOverflow上最多投票的一个Java问题是: 为什么处理一个排序数组要比非排序数组快的多 。 为了回答这个问题,你需要使用分支预测(branch prediction)。分支预测是一种架构,旨在通过在真实的路径发生前猜测某一分支的下一步来提升处理过程。 分支在这里即一个if语句。这样的话,如果是一个排序数组,那么分支预测将会进行,否则不会进行。 StackOverflow上的一个回答者,链接: http://stackoverflow.com/questions/11227809/why-is-it-faster-to-process-a-sorted-array-than-an-unsorted-array