- 博客(16)
- 收藏
- 关注
原创 idea Ctrl+Alt+L 格式化代码快捷键失效的解决办法及解决热键冲突的进阶工具
今天敲代码的时候突然发现idea的格式化代码快捷键失效了,点击菜单栏中的是有效的,并且右边的快捷按键也是显示为Ctrl + Alt + L,说明并不是idea的快捷方式被意外修改了,应该是有某个程序的全局快捷键也占用了Ctrl + Alt + L,造成了快捷键冲突。通过一个个关闭开启的软件再按Ctrl + Alt + L验证的方式,很快发现是与网易云音乐的快捷方式冲突了。
2024-02-05 16:55:15
6075
6
原创 JAVA生成SQL语句
我所在的项目是某手机银行的后台,提供给手机调用的后台接口,比如营销banner、APP上菜单数据、布局数据的下发等,同时也提供相应的后管页面供配置数据。以菜单功能为例,在后管中菜单的列表页上增加导出SQL按钮,鼠标放到哪一行数据上,哪一行就弹出导出为insert语句和导出为update语句的气泡按钮,点击按钮之后调用接口,后台从数据库查询这条数据,然后据此生成insert或update语句。则是表示字符串拼接,参数传入的是什么,就参数拼接到对应的位置,这就导致SQL每次都需要编译,同时有sql注入的风险。
2023-08-18 18:36:47
675
1
原创 记使用Apache DateFormatUtils时的一个小问题(大SS与小ss)
代码原作者的本意可能是生成 4位年+2位月+2位日+2位+2位分+2位秒 一共14位的时间戳字符串,但是他错将小写的ss写成了大写的SS,而Apache的DateFormatUtils类解析时间戳使用的是JDK类库中SimpleDateFormat的解析规则,SS代表的是毫秒而不是秒,2个SS代表的是毫秒值不足2位时补齐2位,超过2位时正常显示。由于1秒有1000毫秒,在第1-99毫秒时,毫秒值是2位,整个字符串是14位,在第100-999毫秒时,毫秒值是3为,整个字符串是15位。
2023-07-13 15:20:22
168
1
原创 JAVA单例模式小结
单例模式:最简单的设计模式之一。其作用是保证每个类只有一个实例。使用这一设计模式的目的主要是“统一”,即防止在多实例情况下不同对象内部属性不同,造成访问不同实例时其行为和结果不统一而产生的问题。除此之外,使用单例模式也可以起到节约内存资源的作用。交由Spring框架管理的bean默认模式下都是单例模式。举一个维基百科上的例子:许多时候整个系统只需要拥有一个的全局对象,这样有利于我们协调系统整体的行为。比如在某个服务器程序中,该服务器的配置信息存放在一个文件中,这些配置数据由一个单例对象统一读取,然后服
2022-03-30 17:50:22
320
原创 注意ArrayList的数组越界异常
我们都知道ArrayList的底层是由数组实现的,并且数组初始容量为10,数组满时会以1.5倍的倍率进行扩容,但是调用remove()方法删除元素时,数组并不会缩小容量。换言之,ArrayList中数组的长度只增不减,在第一次往ArrayList中添加元素之后,数组容量就一定>=10(new ArrayList对象时,数组还没有真正创建,数组是在第一次向ArrayList中添加元素时创建的)但是由于ArrayList在数组的基础上进行了很多封装,所以很多数组的特性并不能简单套用,比如今天我就犯了一个
2022-03-02 18:06:26
2151
原创 Lucene使用经验小结
最近对公司一个使用Lucene的搜索服务进行了维护,踩了一些坑,总结了一点经验,在此做个记录1、分享一个十分有用的视频教程由于Lucene没有中文官方文档,英文API文档对新手来说看得十分痛苦,加上中文互联网上Lucene相关的博客内容质量参差不齐,找好文章的概率无异于屎里淘金,所以我建议Lucene新手看一下黑马的这个视频,里面的内容相当详实,质量很高。黑马程序员Lucene全文检索技术,从底层到实战应用Lucene全套教程2、分词器的使用和词典的维护很重要在起点看过小说的人一定经历过在正常文章中
2022-02-28 15:50:08
317
原创 控制反转与依赖注入的概念解析
控制反转(Inversion of Control)与依赖注入(Dependency Injection)应该是我们在学习Spring时最早也最常接触的两个概念。在Spring的官方文档中,对这两个概念的解释是:控制反转约等于依赖注入。注意看加粗部分:This chapter covers the Spring Framework implementation of the Inversion of Control (IoC) principle. IoC is also known as depend
2021-12-29 14:55:41
2389
原创 Spring中Bean别名的作用
在我们日常工作中,Bean的别名使用较少,因为大部分场景下,我们的Bean都是自己定义自己使用,比如:@Componentpublic class UserServiceImpl1 implements UserService { public void test() { System.out.println("userServiceImpl1:test"); }}@Componentpublic class OrderService { @Autowired() @Qualifie
2021-12-15 15:43:33
2866
原创 Java HashMap设计思想探究
最近本来想写一个HashMap相关的博客,捋一捋源码,算是对这两年开发经验的一个小考试。但是源码看着看着,博客写着写着发现HashMap的设计有一些不仔细思考可能不会理解的点。所以最终觉得写这么一篇博客,说一说我理解的HashMap的设计思想,代码基于JDK1.7和JDK1.8。1、JDK1.7使用哈希表(HashTable)+ 链表结构的原因。查找速度快,这是我们使用HashMap储存数据的原因,也是HashMap使用哈希表结构的原因:哈希表查找的理论复杂度是O(1),而结构相似的数组(代表类如Arr
2021-11-02 10:36:29
237
原创 JAVA NumberFormat和DecimalFormat小结
中文互联网上很多介绍这两个类的博客质量真是一眼难尽,遇到什么问题想百度的时候发现就是屎里淘金,非常浪费时间。格式化数字这种不常用但是一定有机会遇到的场景,还是提前做好功课为好。本篇文章简单说明一下NumberFormat和DecimalFormat这两个类。首先是类的继承关系:可以看到在JAVA的Format家族中,主要分为3个分支,分别是格式化日期时间的DateFormat分支,主要用的其实现类SimpleDateFormat格式化文本消息的MessageFormat分支,自己就是实现类,常
2021-10-29 17:27:46
711
原创 记一次因多线程修改HashMap造成的生产BUG
本来文章标题想叫《记一次因错用HashMap造成的生产BUG》的,但感觉这标题像足了某些java公众号写的标题党文章,所以还是改成现在这个了。首先,一个合格的Java程序员都必须知道HashMap是不能在多线程环境下使用的,我在写代码的时候也都小心地遵守这个要求,不过还是因为经验问题以及大意,仍然写出了有问题的代码。事情经过是这样的:上周一,运维突然发现生产环境有一台机器出现了大量线程在执行同一操作,检查发现是卡在了我写的一个接口里。线程dump发现所有线程都在执行HashMap的get()方法上卡住了
2021-04-27 10:35:35
625
原创 Java11通过实例调用静态方法
最近在学习javafx,用的jdk11+javafx15,在学习GridPane时发现setMargin这个方法不能通过GridPanede的实例来调用,在java8中是可以的。看来应该是java8之后的某个版本新增的语法规则? 在百度和stack overflow上都没搜到,算了,暂时先记下吧。...
2021-03-14 21:45:59
457
原创 idea提示git is not installed与“meaningless REX prefix used”
记一次遇到idea提示“git is not installed”问题时的解决过程我自己的笔记本上面的idea和git都安装挺久了,只是一直没有在idea上用git下载过东西。前两天准备学习spring源码,照着教程开始下载和编译源码,这时idea右下角突然蹦出气泡弹窗,提示git未配置,让我安装git。点击file-settings,搜索git,在version control-git项下,确实有如下提示:git is not installedidea自动检测到的地址确实是git的安装地址,点击右
2020-12-10 11:33:14
18533
5
原创 JAVA中一些不常用但面试中可能会问到的API
Object.finalize()protected void finalize() throws Throwable { }注意这个方法是protected,protected修饰的方法可见性是:同包可见,子类可见因此如果要调用finalize()方法,只能这样写:void method() throw Throwable { finalize()}而不能这样写:void method() throw Throwable { Object obj = new Object(); o
2020-11-22 00:31:20
183
原创 加解密相关知识(RSA,AES)
AESAES = Advanced Encryption Standard,正式诞生于2002年,是目前最流行的对称加密算法之一AES128,AES256就是采用128/256位秘钥进行AES加密对称加密的意思就是自始至终只有一个密钥,由这个密钥加密的数据只能由这个密钥才能快速解密,否则强行破解非常耗时。RSARSA是1977年由罗纳德·李维斯特(Ron Rivest)、阿迪·萨莫尔(A...
2019-05-27 01:27:21
402
原创 关于Base64数据编码方式的一点总结
在使用RSA解密AES密钥的时候遇到了一个编码问题:Base64问题场景是这样的:AES秘钥在经过RSA加密后,生成的是256位的16进制数,也就是1024位的二进制数。这1024位的二进制数每8位组成一个字节,最后得到的就是一个长度为128的byte数组(byteArray)。在编程时,如果想把由一长串010101组成的byte数组变成容易查看的字符串时遇到了问题:byte数组是byteA...
2019-05-27 01:17:12
227
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人