Java学习
文章平均质量分 73
luxinfeng666
这个作者很懒,什么都没留下…
展开
-
解决实际项目中stalled时间过久的问题
在公司参与了一个做度量统计的项目,该项目的特点是页面上的表格、卡片、图标非常多。项目经常出现一种情况:页面加载速度较慢,开始怀疑是由于计算量较大,后端接口相应速度较慢。优化了一版后端接口后(加缓存、优化SQL),发现有时接口的相应速度还是很慢,有的接口能达到3秒多,严重影响了用户体验。原创 2023-02-19 00:18:55 · 10381 阅读 · 1 评论 -
Java日志框架学习
本文主要介绍Java常用日志框架,以及基础配置文件原创 2023-02-11 23:20:25 · 632 阅读 · 0 评论 -
Spring Boot项目读取不到配置文件中的“url“属性
最近新起了一个spring boot项目,配置了MySQL作为项目的数据库。但是在项目启动时,报错:Failed to configure a DataSource: 'url' attribute is not specified and no embedded datasource could found。原创 2022-10-09 22:27:26 · 5819 阅读 · 1 评论 -
记一次服务部署失败问题排查
上周五的时候某一功能本地开发完成后,需要部署到线下环境进行前后端联调。在部署的时候提示“进程反复重启”从而部署失败,在本地启动时代码可以正常启动。原创 2022-06-26 12:05:11 · 781 阅读 · 0 评论 -
记一次因MySQL编码问题导致的慢查询排查
问题背景在工作时,有一个联表查询的操作,两个表,每个表大概20万条数据,查询语句类似下面的SQL语句。select a.name1, a.name2, b.name1, b.name2from table1 a, table2 b on a.name3 = b.name3 and a.name4 = b.name4;两个表的name3和name4字段都建立了索引,但是查询速度依旧很慢。分析问题使用explain分析该语句,发现表b并没有使用索引,而是采用了全部遍历的方式。表b上的name3,原创 2021-08-22 23:44:32 · 376 阅读 · 0 评论 -
删除文件夹下的指定格式的文件(Java实现)
删除文件夹下的指定格式的文件之前在本地用cloudreve搭建了私人网盘,然后发现在上传图片或者文档时,总会同时产生后缀为_thumb的文件,这些文件还不小。在这种情况下,如果我存的是一系列小文件,那么_thumb文件会占用大量的磁盘空间,最后决定使用kodbox作为一个私人云盘了。由于需要把所有文件夹内的_thumb文件删除,便写了这个脚本。这个脚本可以删除指定文件夹下任意格式和名称的文件。import java.io.File;public class Deletefile { pub原创 2021-06-25 17:25:17 · 807 阅读 · 0 评论 -
记一次让自己排查好久的小bug
起因今天在做LRU缓存机制这个题的过程中,出现了一个问题,就是发现自己写的逻辑没啥问题,但是就是出错,最后把代码贴到IDEA中debug一下才发现了问题所在。详情大家有兴趣的话可以看看以下代码有啥区别正确代码class LRUCache { class LRUNode{ int key; int value; LRUNode pre; LRUNode next; public LRUNode(){}原创 2021-03-23 22:08:03 · 611 阅读 · 0 评论 -
Generic Array Creation,泛型数组创建时提示出错
起因前两天在刷leetcode时,遇到一个设计题,需要设计一个哈希集合,当时的想法就是创建一个链表数组,用链表来解决哈希冲突问题。然而在编写时,编译器报错,如下图所示。分析为什么会出现编译错误呢?这里就是泛型数组的问题了。在Java中,数组是支持协变(Covariant)的,而泛型是不可变(Invariant)的。当两者在一起的时候,就会出现问题。我们先来看看协变和不可变的定义协变:是指子类型关系在类型变换的作用下保持原样。逆变:指的是子类型关系在类型变换的作用下发生逆转。不可变:表示子原创 2021-03-15 21:18:00 · 9045 阅读 · 1 评论 -
Java中BufferedReader与Scanner的比较(基于源码jdk15)
最近在用Java刷题,看到大佬说用BufferedReader读取输入会比Scanner快一些,自己试了一下,确实快一些。实验题目为Acwing题库中的第568题(看讨论区说使用Scanner会超时,自己尝试后发现并没有超时,但是Scanner的速度确实会慢不少)。为了比较,我都是使用这两个类来把输入读取为字符串,然后再手动解析成整数,并没有使用该类自带的方法来解析//Scanner版本,多次测试平均完成时间为1900ms上下import java.util.*;import java.io.*;原创 2020-10-11 16:11:39 · 463 阅读 · 2 评论 -
使用TLS加密netty应用
问题描述自己基于Netty做了一个类IM项目,没有使用Spring框架,用到了应用层协议HTTP和websocket,在大致框架完成后,想对传输内容进行加密,便用到了TLS协议,用此博文记录自己的加密过程以及睬的坑。TLS部分KeyTool部分Netty...原创 2020-06-15 22:45:32 · 1727 阅读 · 1 评论 -
ArrayList使用迭代器遍历删除元素(迭代器的具体实现)
问题简述为什么使用for循环遍历删除ArrayList中的元素会出错,而使用迭代器方法就不会出错(此处不考虑fast-fail机制问题)?查阅各种博客,只知道遍历删除元素时的正确方法,但是不知道为什么该方法正确,因此写这篇博客记录一下。问题描述ArrayList的底层数据结构是数组,在数组中删除元素,我们可以直接用待删除元素的下一位元素覆盖待删除元素,然后将后面的元素依次往前挪动即可。实际...原创 2020-04-28 23:15:43 · 5404 阅读 · 3 评论 -
JAVA学习笔记--lambda表达式
lambda表达式是一个可传递的代码块,可以在以后执行一次或多次。lambda表达式的形式(参数)->表达式举例如下(String first,String second)->first.length()-second.length()如果代码要完成的计算无法放在一个表达式中,可以用{}把这些计算括起来,如下(String first,String second) -&g...原创 2019-11-25 20:51:57 · 222 阅读 · 0 评论 -
JAVA学习笔记--接口篇
接口指定了类必须执行的操作,但并不指定具体的方法,可以把接口当作类的大纲或者蓝图(如果一个类实现了一个接口,但并没有为该接口中的所有方法提供方法主体,那么该类必须是抽象类)。类实现接口的步骤将类声明为实现给定的接口对接口中的所有方法进行定义举例如下class Employee implements Comparable //implements关键字表示类实现某个接口{ ......原创 2019-11-25 16:36:28 · 197 阅读 · 0 评论 -
JAVA学习笔记--继承篇
构建子类子类和超类我们现在先来搞清两概念:子类和超类。先来看以下Java语句。public class Manager extends Employee{}在该语句中,extends起到了继承的作用,它表明正在构造的新类派生于一个已经存在的类,Manager继承了Employee。Manager称为子类(派生类、孩子类),而Employee称为超类(基类、父类)。“超”和“子”这两个...原创 2019-11-24 14:39:22 · 251 阅读 · 0 评论 -
JAVA学习笔记--基础篇
数据类型JAVA是一种强类型语言(python也是一种强类型语言),每个变量都有一个类型。JAVA一共有8种基本类型,其中有4种整型、2种浮点类型、1种用于表示Unicode编码[1]的字符单元的字符类型char以及一种表示真值的boolean类型。整型JAVA中的整型分为四种,int(4字节)、short(2字节)、long(4字节)以及byte(1字节)。与C/C++不同,JA...原创 2019-11-21 15:27:05 · 833 阅读 · 0 评论