IntelliJ IDEA

新来个技术总监,禁止我们使用Lombok!

旧时模样 提交于 2020-11-25 18:47:36
我有个学弟,在一家小型互联网公司做Java后端开发,最近他们公司新来了一个技术总监,这位技术总监对技术细节很看重,一来公司之后就推出了很多"政策",比如定义了很多开发规范、日志规范、甚至是要求大家统一使用某一款IDE。 但是这些都不是我这个学弟和我吐槽的点,他真正和我吐槽的是,他很不能理解,这位新来的技术总监竟然禁止公司内部所有开发使用Lombok。但是又没给出十分明确的,可以让人信服的理由。 于是他来找我聊天,问我这个要求到底是否合理。关于这个事情,我认为这位技术总监的出发点是好的,但是做法未免有些极端。 之所以说出发点是好的,是因为使用Lombok确实会带来很多问题,而且我个人在工作中也基本不主动使用。 之所以说不主动使用,那是因为有些同事的代码还是使用了的,所以我也被迫的要安装Lombok的插件。 既然聊到这个话题,就简单说说我的一些看法。 Lombok有什么好处? Lombok是一款非常实用Java工具,可用来帮助开发人员消除Java的冗长代码,尤其是对于简单的Java对象(POJO)。它通过注释实现这一目的。 如果大家对于Lombok比较了解的话,可以先跳过这一段,直接往后看,如果不是很熟悉的话,可以简单了解一下。 想在项目中使用Lombok,需要三个步骤: 一、IDE中安装Lombok插件 目前Lombok支持多种IDE,其中包括主流的Eclips、Intellji

IntelliJ IDEA 构建maven多模块工程项目

梦想的初衷 提交于 2020-11-25 14:41:05
来源:blog.csdn.net/sinat_34344123 食用前须知 创建步骤 (详细多图) 1. 创建一个空项目 2.创建第一个模块 3.创建第二个模块 总结 1 食用前需知 本文以a b c 三个模块为例来搭建项目,以达到通俗易懂的初衷 模块a —– 基模块,就是人们常说的parent 模块b —– 其他模块都需要使用的一些工具,比如时间工具,json工具等 模块c —– 项目主要的内容,一般为聚合工程 2 Maven的一些特点 2.1 继承 这个可以理解为java中的继承类似,父类定义的东西,子类如果你想用就拿过来用就可以。 2.2 依赖 依赖就相当于我们java中的导包,二者有着异曲同工之妙; 你想用的东西只需要告诉maven它在哪就可以,它会自动帮你找过来给你用。 2.3 聚合 这个暂时我还没找到java中能与之对应的原型; maven聚合是将多个模块组装在一起,相互协调依赖运行。 3 创建步骤(详细多图) 3.1 创建一个空项目 file - new - project 一个空的项目 填写项目名称 选择要打开项目的方式 3.2 创建第一个模块 新建一个模块 选择创建一个maven模块 填写模块基本信息 解决创建速度慢 设置一个属性 archetypeCatalog ,具体原因感兴趣的自行了了了姐吧 finish完成模块创建 3.3 创建第二个模块 选择继承的父工程

怎么快速插入 100 条数据,用时最短

泄露秘密 提交于 2020-11-25 09:47:32
作者:孤独键客 https://juejin.im/post/5d255ab9e51d454f73356dcd 多线程插入(单表) 问:为何对同一个表的插入多线程会比单线程快?同一时间对一个表的写操作不应该是独占的吗? 答:在数据里做插入操作的时候,整体时间的分配是这样的: 链接耗时 (30%) 发送query到服务器 (20%) 解析query (20%) 插入操作 (10% * 词条数目) 插入index (10% * Index的数目) 关闭链接 (10%) 从这里可以看出来,真正耗时的不是操作,而是链接,解析的过程。 MySQL插入数据在写阶段是独占的,但是插入一条数据仍然需要解析、计算、最后才进行写处理,比如要给每一条记录分配自增id,校验主键唯一键属性,或者其他一些逻辑处理,都是需要计算的,所以说多线程能够提高效率。 多线程插入(多表) 分区分表后使用多线程插入。 预处理SQL 普通SQL,即使用Statement接口执行SQL 预处理SQL,即使用PreparedStatement接口执行SQL 使用PreparedStatement接口允许数据库预编译SQL语句,以后只需传入参数,避免了数据库每次都编译SQL语句,因此性能更好。 String sql = "insert into testdb.tuser (name, remark, createtime,

数据异构重器之 Canal 初探

爷,独闯天下 提交于 2020-11-25 07:51:36
点击上方 “中间件兴趣圈” , 选择 “设为星标” 做积极的人,越努力越幸运! 源码分析 Canal 系列开始了,一个全新的系列,即能探讨 canal 本身的实现原理,也是笔者源码阅读技巧的展示。 1、应用场景 提到 Canal,大家应该都能想到这是一个用于解析 MySQL binlog 日志的工具,并将 MySQL 数据库中数据同步到其他存储介质中,例如 Elasticsearch。 即 Canal 一个非常常用的使用场景:数据异构,一种更高级别的数据读写分离架构设计方法。 随着业务不断的发展,企业发展到一定阶段,发现单体的关系型数据库已无法支撑业务高速发展带来数据不断累积的压力,从而会诞生出一种设计架构:分库分表。分库分表对缓解单库数据库压力确实是一种非常好的解决方案,但又衍生出另外一种困境,关联查询不友好,甚至跨库JOIN就更加如此。 举例说明如下:例如一个订单系统,通常有两类用户需要去查询订单,一类是顾客,一类是商家,在对数据库进行分库分表时,如果以顾客(buy_id)进行分库的话,同一个商家的订单数据会分布在不同的库中,如果以商家(shop_id)进行分库的话,同一个用户购买的所有订单数据将会分布在不同的库中,这样进行关联查询,就必然需要跨库进行join,其成本都会偏高。而且上面的场景只能满足一方的需求,那如何是好呢? Canal 这个时候就闪亮登场了,在电商设计中

IDEA推出新字体,极度舒适

淺唱寂寞╮ 提交于 2020-11-25 04:43:45
JetBrains Mono 官方地址: https://www.jetbrains.com/lp/mono/ 特地去了下 JetBrains Mono 官网,看起来还是挺舒适的: 并且,从 2019.3 版本开始,JetBrains Mono 字体将随 JetBrains 系列 IDEs 一起提供。 我用的是2018版本,去官网下载一下,然后本地安装 设置开始使用 来源: oschina 链接: https://my.oschina.net/u/4359742/blog/3314373

IDEA-Maven的Dependencies中出现红色波浪线

心不动则不痛 提交于 2020-11-25 04:40:45
解决方法: 移除相关依赖,再重新添加即可 情况及具体解决方法如下: 1.在Maven Project中 Dependencies 出现红色波浪线 2.查询本地仓库:jar包已存在 3.解决方法: 3.1.从POM文件中,将对应的信息进行移除! 3.2执行Maven操作:clean 3.3将原先依赖重新填写到POM文件中 3.4恢复正常,不再出现红色波浪线 ———————————————— 原文链接:https://blog.csdn.net/u014672466/article/details/80211340 来源: oschina 链接: https://my.oschina.net/u/4380330/blog/3413577

IDEA插件:search with bing、search with baidu

佐手、 提交于 2020-11-25 04:10:31
//转载请注明出处: https://www.cnblogs.com/nreg/p/11267169.html 当项目出现错误时,经常需要复制错误信息粘贴到浏览器查询,但是手动复制再粘贴太麻烦了, 因此IDEA官方给了右键菜单search with google, 感觉上方便了许多,但是goolgle在咱这个地方是查询不到的, 因此一位名叫Xu Wang的网友开发了一款叫search with baidu的插件,在IDEA的插件库可以查询到, 我用了一下他的最新版本1.3,在复制一大串错误信息时,使用search with baidu不生效,IDEA没有反应,应该是有BUG, 盲猜他没有对要搜索的字符串转换为url请求编码格式,因为我开发插件时也遇到了这个问题,但是我解决了: 1 // 将搜索的字符串转为URL请求编码格式(盲猜他应该没有写这一行) 2 String seclectStr = URLEncoder.encode(selectedText.trim(), "UTF-8" ); 3 // 使用bing引擎搜索 4 String url = "https://cn.bing.com/search?q=" + seclectStr; 我开发了两款插件,一款叫search with bing,一款叫search with baidu, 已经上传到IDEA插件库,目前正在审核,

使用 IntelliJ IDEA 查看类图,内容极度舒适

白昼怎懂夜的黑 提交于 2020-11-24 18:44:33
点击上方 “ Java专栏 ”, 选择“置顶或者星标” 第一时间阅读精彩文章! 点击这段文字获取: 5个可以写到简历的项目实战视频教程(含源码) 最近正好也没什么可忙的,就回过头来鼓捣过去的知识点,到Servlet部分时,以前学习的时候硬是把从上到下的继承关系和接口实现记得乱七八糟。 这次利用了IDEA的diagram,结果一目了然,也是好用到炸裂,就此分享。 查看图形形式的继承链 在你想查看的类的标签页内,点击 右键,选择 Diagrams ,其中有 show 和 show ... Popup,只是前者新建在标签页内,后者以浮窗的形式展示: 实际上,你也可以从左边的项目目录树中,对你想查看的类点击右键,同样选择Diagrams,效果是一样的: 然后你就会得到如下图所示的继承关系图形,以自定义的Servlet为例: 显而易见的是: 蓝色实线箭头 是指继承关系 绿色虚线箭头 是指接口实现关系 优化继承链图形,想我所想 1 去掉不关心的类 得到的继承关系图形,有些并不是我们想去了解的,比如上图的Object和Serializable,我们只想关心Servlet重要的那几个继承关系,怎么办? 简单,删掉。 点击选择你想要删除的类,然后直接使用键盘上的delete键 就行了。清理其他类的关系后图形如下: 2 展示类的详细信息 有人说,诶,这怎么够呢,那继承下来的那些方法我也想看啊?简单

如何优雅地提高程序员的键盘使用效率?

ぐ巨炮叔叔 提交于 2020-11-24 06:53:43
0x00 引言   工欲善其事必先利其器, 作为一名底层代码搬砖工人熟练使用CTRL CV能大量节省其咖啡用量(大雾), 要想成为一名合格的程序员,最大化使用键盘效率是必不可少的。在编程思路清晰的前提下,键盘使用效率可以通过熟练掌握键盘布局,提高打字准确率,使用快捷键以及IDE来提高。 0x01 提高打字准确率   键盘是电脑主要的输入工具,熟练的使用键盘是提升效率的关键。掌握键盘的布局,通过不断地训练产生肌肉记忆以提高打字的准确率, 一秒五喷完全不在话下 。闲暇之余可以通过一些软件或者小游戏来训练打字的准确率和效率。如金山打字通:   程序员大部分的时间都在 (给变量起名) 使用英文编程,所以练好英文输入十分地重要,可以通过文章练习以及个种小游戏来训练打字速度和准确率:      顺便公开处刑自己...      0x02 使用快捷键   熟练掌握快捷键的使用可以使程序员在 996的愉快 工作中获得良好的体验,是提升工作的效率 (摸鱼) 的必备技能。常用到的快捷键有: Window      CTRL+C/V        复制/粘贴 (居家旅行必备神器,用了都说好)      CTRL+ALT+DEL      任务管理器(强杀导致电脑卡顿软件)      CTRL+A         全选      CTRL+Z         撤销   CTRL+S          保存

@Qualifier

我怕爱的太早我们不能终老 提交于 2020-11-24 04:47:28
当一个接口,有多个实现类且均已注入到spring容器中了,使用时@AutoWired是byType的,而这些实现类类型都相同,此时就需要使用@Qualifier明确指定使用那个实现类。因此,@Qualifier是byName的。 1、基本 public interface Formatter { String format(); } @Component( "fooFormatter" ) public class FooFormatter implements Formatter { @Override public String format() { return "foo" ; } } @Component( "barFormatter" ) public class BarFormatter implements Formatter { @Override public String format() { return "bar" ; } } idea提示,必须添加@Qualifier,否则红线。 最后,形如: @SpringBootTest class QualifierTest { @Qualifier( "barFormatter" ) @Autowired private Formatter formatter; @Test void test() { System