
Java
文章平均质量分 60
AlbenXie
这个作者很懒,什么都没留下…
展开
-
从3s到25ms!看人家的接口优化技巧,确实很优雅!
批量思想:批量操作数据库,这个很好理解,我们在循环插入场景的接口中,可以在批处理执行完成后一次性插入或更新数据库,避免多次 IO。//for循环单笔入库insert();});//批量入库JVM为Vector扩充大小的时候需要重新创建一个更大的数组,将原原先数组中的内容复制过来,最后,原先的数组再被回收。可见Vector容量的扩大是一个颇费时间的事。通常,默认的10个元素大小是不够的。你最好能准确的估计你所需要的最佳大小。更正:自己设定初始大小。转载 2023-05-02 01:27:29 · 341 阅读 · 0 评论 -
mac配置maven环境变量
注:mvn -v后如果提示 Permission denied可以执行下面命令获取权限。按下 esc键退出Insert模式,然后在英文输入法下输入。保存并退出文件,然后在终端通过如下代码执行此配置文件。如果出现下图所示的Maven基本信息,配置完成。执行完成后,再次执行如下命令。2.idea配置maven。点击启动台找到终端,输入。原创 2023-02-10 23:19:35 · 1393 阅读 · 0 评论 -
JAVA 中的 / 和 % 区别
(除) 注意:整数相除结果还是整数,向下取整。只要相除中有一个小数,结果带小数。4/5 //输出结果为06/5 //输出结果为15/5 //输出结果为14.2/5.2 //输出结果为0.8076923076923077%(取模) 结果为相除之后的余数。也叫取余。原创 2022-08-21 20:47:10 · 3475 阅读 · 1 评论 -
JAVA日期格式化中的“yyyy”与“YYYY”
“YYYY”表示的是Week year,就是这天所在的周所属的年。转载 2022-06-07 18:32:55 · 1462 阅读 · 1 评论 -
SpringBoot集成Google Kaptcha图形验证码
前言相信大家在浏览网页的时候,经常会碰到人机校验。很经典的要属Google的人机校验,用多张图片进行点击校验。可以说是对于我们人类来说就是很烦的啦。烦归烦,但是为了安全着想,我们还是需要为自己的项目加上验证码机制,特别是一些防刷的接口调用下。今天我们就来学习简单的图形验证码实现。实现SpringBoot DEMO,Maven项目。创建SpringBoot项目很简单,Intellij IDEA旗舰版可直接创建。maven依赖引入kaptcha maven依赖<!-- http转载 2021-12-28 15:25:40 · 874 阅读 · 0 评论 -
面试题系列:Java 夺命连环16问
说好了面试系列已经完结了,结果发现还是真香,嗯,以为我发现我的Java基础都没写,所以这个就算作续集了,续集第一篇请各位收好。说说进程和线程的区别?进程是程序的一次执行,是系统进行资源分配和调度的独立单位,他的作用是是程序能够并发执行提高资源利用率和吞吐率。由于进程是资源分配和调度的基本单位,因为进程的创建、销毁、切换产生大量的时间和空间的开销,进程的数量不能太多,而线程是比进程更小的能独立运行的基本单位,他是进程的一个实体,可以减少程序并发执行时的时间和空间开销,使得操作系统具有更好的并发性。转载 2021-06-05 21:29:45 · 553 阅读 · 0 评论 -
大厂面试指南
https://www.cnblogs.com/ilovejaney/category/1833404.html原创 2021-06-05 21:27:42 · 417 阅读 · 0 评论 -
如何做到每天比别人少写200行代码?
熟练的掌握正则表达式,能够帮助程序员以最快的速度写出最优雅的代码。冰河在多年的编程工作中,对使用过的正则表达式进行了梳理和总结,这些正则表达式能够帮助你节省很多的编码时间,往往一个简单的正则表达式就能够省略大量的if...else...代码。这次,冰河向小伙伴们公开了自己平时经常使用的正则表达式,希望能够为小伙伴们带来实质性的帮助。冰河常用正则整数或者小数^[0-9]+\.{0,1}[0-9]{0,2}$只能输入数字^[0-9]*$只能输入n位的数字^\d{n}$.转载 2021-06-05 21:18:17 · 570 阅读 · 0 评论 -
Java 6种延时队列的实现方法
五一期间原计划是写两篇文章,看一本技术类书籍,结果这五天由于自律性过于差,禁不住各种诱惑,我连电脑都没打开过,计划完美宣告失败。所以在这能看出和大佬之间的差距,人家没白没夜的更文,比你优秀的人比你更努力,难以望其项背,真是让我自愧不如。知耻而后勇,这不逼着自己又学起来了,个人比较喜欢一些实践类的东西,既学习到知识又能让技术落地,能搞出个demo最好,本来不知道该分享什么主题,好在最近项目紧急招人中,而我有幸做了回面试官,就给大家整理分享一道面试题:“如何实现延时队列?”。...转载 2021-06-03 18:17:27 · 1441 阅读 · 0 评论 -
try-catch-finally中的4个大坑,老程序员也搞不定
在 Java 语言中 try-catch-finally 看似简单,一副人畜无害的样子,但想要真正的“掌控”它,却并不是一件容易的事。别的不说,咱就拿 fianlly 来说吧,别看它的功能单一,但使用起来却“暗藏杀机”,若您不信,咱来看下面的这几个例子...坑1:finally中使用return若在 finally 中使用 return,那么即使 try-catch 中有 return 操作,也不会立马返回结果,而是再执行完 finally 中的语句再返回。此时问题就产生了:如果 finally 中转载 2021-06-02 17:23:00 · 557 阅读 · 0 评论 -
如何有效减少Java内存占用过高
1、是否有内存泄漏2、业务层面,业务逻辑处理是否使用了大对象,比如上百字段的对象,这种冗余就会过多的占用内存3、能用局部变量,就不用成员变量和静态变量4原创 2021-06-02 15:19:51 · 1880 阅读 · 0 评论 -
IntelliJ IDEA Java 中如何快速插入 try / catch
在 IntelliJ IDEA 中是有快捷键的。On the Code menu, click Surround WithCtrl+Alt+T.在 Java 的语句中,可以支持下面的一些快捷插入。if if/else while do/while for try/catch try/finally try/catch/finally synchronized Runnable {}...转载 2021-05-19 14:46:09 · 1119 阅读 · 0 评论 -
Java的对象工具类Objects
Java开发中经常要对对象进行非空判断以防止出现空指针。大部分同学都喜欢用下面这种方式来进行判断:if (obj!=null){ // 判断不等于空}if (obj==null){ // 判断等于空}这种方式没有什么问题。不过在 Java 7 中专门提供了一个工具类java.util.Objects可以处理的更好。java.util.Objects提供了一系列的静态方法来处理日常一些针对对象的操作。空值判断比如开始提到的null值判断我们可以优化为:if (转载 2021-05-18 16:55:17 · 695 阅读 · 0 评论 -
深入理解 Java 的接口和抽象类
对于面向对象编程来说,抽象是它的一大特征之一。在 Java 中,可以通过两种形式来体现 OOP 的抽象:接口和抽象类。这两者有太多相似的地方,又有太多不同的地方。很多人在初学的时候会以为它们可以随意互换使用,但是实际则不然。今天我们就一起来学习一下Java中的接口和抽象类。一、抽象类在了解抽象类之前,先来了解一下抽象方法。抽象方法是一种特殊的方法:它只有声明,而没有具体的实现。抽象方法的声明格式为:abstract void fun();抽象方法必须用 abstract 关键字进行修饰。如转载 2021-05-18 11:30:06 · 233 阅读 · 0 评论 -
程序员缺乏经验的 7 种表现!
一、预览1. 一次性提交大量代码你能做什么: 进行小的代码提交。一个好的做法是:每个工作日都进行代码提交。 不要提交没有编译或者会导致构建失败的代码。 2. 代码写的很烂你能做什么: 编写代码之前,对你要实现的功能有个清晰的了解。为了清楚地理解需求,你需要尽量多问问题。 让你的代码简洁而优雅。其他团队成员可以读懂代码并理解它打算做什么。最新 Java 核心技术教程,都在这里了。 3. 同时开展多项工作你能做什么: 专注完成小的任务。将收到的任务分转载 2021-05-15 23:46:29 · 395 阅读 · 0 评论 -
常见代码重构技巧,非常实用
关于重构为什么要重构项目在不断演进过程中,代码不停地在堆砌。如果没有人为代码的质量负责,代码总是会往越来越混乱的方向演进。当混乱到一定程度之后,量变引起质变,项目的维护成本已经高过重新开发一套新代码的成本,想要再去重构,已经没有人能做到了。造成这样的原因往往有以下几点:编码之前缺乏有效的设计 成本上的考虑,在原功能堆砌式编程 缺乏有效代码质量监督机制对于此类问题,业界已有有很好的解决思路:通过持续不断的重构将代码中的“坏味道”清除掉。什么是重构重构一书的作者Martin..转载 2021-05-13 10:01:52 · 879 阅读 · 0 评论 -
Java中List集合对象去重及按属性去重的8种方法
一、本文梗概这一篇文章我想写一下List集合元素去重的8种方法,实际上通过灵活的运用、排列组合不一定是8种,可能有18种方法。对象元素整体去重的4种方法 按照对象属性去重的4种方法为了在下文中进行测试内容讲解,我们先做一些初始化数据public class ListRmDuplicate { private List<String> list; private List<Player> playerList; @BeforeEach转载 2021-05-07 15:24:16 · 5037 阅读 · 0 评论 -
java8 list中根据对象多属性去重
项目需求描述出于项目需要,有一个list,实体包含多个字段,当其中两个字段相同均相同时,就认为list中的两条记录是一样的,本来想通过分组实现,java8的分组只提供根据一个字段分组,只好另寻他路,java8有一个collectingAndThen可以根据多个字段去重,因为我们的需求是可以去重之后操作,因此采用这种方式。分组及去重分组classEntities.stream().collect(Collectors.groupingBy(ClassEntity::getGrade));转载 2021-05-07 14:52:19 · 3952 阅读 · 0 评论 -
JAVA中List集合按照对象的某一个或多个字段去重实现
如题继续总结工作中遇到的各种需求实现:import org.apache.commons.lang3.StringUtils;import java.util.*;/** * @Auther: * @Date: 2019/1/11 09:11 * @Description: 根据list中对象指定的n个字段去重测试 */public class TestMyUser { @org.junit.Test public void test(){ List转载 2021-05-07 19:11:04 · 1262 阅读 · 0 评论 -
工作笔记
RestTemplate使用:https://blog.youkuaiyun.com/qq_35981283/article/details/82056285https://www.jianshu.com/p/95680c1eb6e0https://blog.youkuaiyun.com/qq_28114159/article/details/106469659https://www.jianshu.com/p/2a59bb937d21https://blog.youkuaiyun.com/asahinokawa/article/d原创 2021-05-07 11:20:49 · 271 阅读 · 0 评论 -
Java汉字转拼音工具类(支持首字母和全拼)
工具类产生是因为个人业务需求需要根据中文汉字排序,而博主又对网上回答不满意,所以才根据相关资料写了该工具类,写入博客 以备不时之需。直接上代码:Java汉字转成汉语拼音工具类,需要用到pinyin4j.jar包,博主使用的是Maven项目,在pom.xml中引入依赖<dependency> <groupId>com.belerweb</groupId> <artifactId>pinyin4j</artifactId> <转载 2021-04-21 10:01:34 · 689 阅读 · 1 评论 -
Java判断字符串是中文还是英文
强烈推荐一个大神的人工智能的教程:http://www.captainbed.net/zhanghan前言最近项目的短信服务对接外国的第三方发短信通道,第三方对短信内容有限制,不能含中文字符(如果含调用结果肯定失败),所以在发送之前需要对短信内容做校验,看是否含有中文,如果含有则直接将短信发送状态改为失败,不用再去调用第三方;探索之旅站在巨人的肩膀上, 立马在网上搜索一下关于Java怎么判断字符串中是否含有中文;果然网上有很多实现;一、最简单的方式字符与字节的长度依据:一个中..转载 2021-04-21 09:52:50 · 9957 阅读 · 1 评论 -
MySql的like语句中的百分号、下划线
1、问题:在开发中,测试提出了一个bug,在某搜索中,搜索 _,结果把不包含下划线的内容也查了出来!这是什么问题呢?今天特此记录一下,顺便给大家分享下!原sql:select * from table where condition like '%_%';结果: 搜索出来的是全部。原来,在mysql 中,下划线 _ 代表 全部 基本上等同于 *。2、解决方案:对sql 用 \ 进行转义最终达到的sql效果 :select * from table where condition.原创 2021-04-09 11:13:49 · 4245 阅读 · 1 评论 -
Google工具库guava中集合类型Table
Table:它具有两个key[行, 列],对应一个值Table是Guava提供的一个接口Interface Table<R,C,V>Table可以看成:Table<R,C,V> == Map<R,Map<C,V>>它的主要方法:S.N. 方法 & 描述 1 Set<Table.Cell<R,C,V>> cellSet() 返回集合中的所有行键/列键/值三元组。 2 void cl.原创 2021-04-07 11:18:35 · 1148 阅读 · 0 评论 -
java 8 把list中对象的属性转成list
AcAppRole实体对象@ApiModelProperty(value = "主键ID")@TableId(value = "id", type = IdType.AUTO)private Long id;/** 角色描述 */@ApiModelProperty(value = "角色描述")private String remark;/** 角色名称 */@ApiModelProperty(value = "角色名称")private String name;/** 角色所转载 2021-03-30 13:45:06 · 5271 阅读 · 0 评论 -
Java多线程之控制执行顺序
概念:多线程在并发环境中的正常执行顺序是随机无序的,并不能按照期盼的结果输出。因为启动一个线程时,线程并不会立即执行,而是等待CPU的资源调度,CPU能调度哪个线程,是通过多种复杂的算法计算而来。一、Thread的join()方法来解决这个问题一般在多线程编程时,需要控制线程的先后执行顺序,比如:主线程中写了子线程t1,想要的效果是需要t1先执行,然后再执行接下来的主线程操作,但是默认的是主线程先执行,所以问题就出现了,执行结果与预期结果不一致。有两个线程t1和t2,现在让t1比t2先执.转载 2021-01-11 21:37:37 · 837 阅读 · 0 评论 -
Java多线程中如何让线程按照自己指定的顺序执行
前言:我们在日常的多线程开发中,可能有时会想让每个线程都按照我们指定的顺序来运行,而不是让CPU随机调度,这样可能会让我们在日常的开发工作中带来不必要的麻烦。既然有了这个需求,也就引入了本文的标题,让线程按照自己指定的顺序来运行。多线程执行顺序按照正常的理解思路,上面代码的执行顺序依次应该为:t1 → t2 → t3,而实际效果则不是理想的状态。运行效果:认识Joinjoin可能对于一些同学来说并不陌生,此处我就不详细介绍Join是什么了,有疑问的同学可以自行baidu和go转载 2021-01-11 21:23:47 · 1471 阅读 · 0 评论 -
Java Servlet API中文说明文档
1 Servet资料1.1 绪言 这是一份关于2.1版Java Servlet API的说明文档,作为对这本文档的补充,你可以到http://java.sun.com/products/servlet/index.html下面下载Javadoc格式的文档。1.2 谁需要读这份文档 这份文档描述了Java Servlet API的最新版本2.1版。所以,这本书对于Servlet的开发者及servlet引擎的开发者同样适用。1.3 Java Servlet A...转载 2020-11-20 16:49:47 · 461 阅读 · 0 评论 -
Hutool-poi是针对Apache POI的封装,操作Excel【三】
package com.example.demo.hutool;import cn.hutool.core.collection.CollUtil;import cn.hutool.core.date.DateUtil;import cn.hutool.poi.excel.ExcelUtil;import cn.hutool.poi.excel.ExcelWriter;import cn.hutool.poi.excel.StyleSet;import lombok.Data;import.原创 2020-11-16 00:04:05 · 4020 阅读 · 0 评论 -
Hutool-poi是针对Apache POI的封装,操作Excel【二】
package com.example.demo.hutool;import cn.hutool.poi.excel.ExcelReader;import cn.hutool.poi.excel.ExcelUtil;import lombok.Data;import org.junit.Test;import java.util.List;import java.util.Map;/** * @Description Hutool-poi是针对Apache POI的封装 * * .原创 2020-11-16 00:01:27 · 1820 阅读 · 0 评论 -
Hutool-poi是针对Apache POI的封装,操作Excel【一】
package com.example.demo.hutool;import cn.hutool.core.io.FileUtil;import cn.hutool.poi.excel.ExcelReader;import cn.hutool.poi.excel.ExcelUtil;import org.junit.Test;import java.util.List;import java.util.Map;/** * @Description Hutool-poi是针对Apach.原创 2020-11-15 23:59:27 · 580 阅读 · 0 评论 -
Java工程师该如何编写高效代码?
阿里妹导读:世界上只有两种物质:高效率和低效率;世界上只有两种人:高效率的人和低效率的人。——萧伯纳同理,世界上只有两种代码:高效代码和低效代码;世界上只有两种人:编写高效代码的人和编写低效代码的人。如何编写高效代码,是每个研发团队都面临的一个重大问题。本文作者根据实际经验,查阅了大量资料,总结了"Java高效代码50例",让每一个Java程序员都能编写出"高效代码"。1.常量&变量1.1.直接赋值常量值,禁止声明新对象直接赋值常量值,只是创建了一个对象引用,而这个对象引用指向常.转载 2020-11-09 19:28:02 · 438 阅读 · 0 评论 -
啪啪打脸!领导说:try-catch要放在循环体外!
今天给大家带来的是关于try-catch 应该放在循环体外,还是放在循环体内的文章,我们将从性能和业务场景分析这两个方面来回答此问题。很多人对 try-catch有一定的误解,比如我们经常会把它(try-catch)和“低性能”直接画上等号,但对 try-catch 的本质(是什么)却缺少着最基础的了解,因此我们也会在本篇中对 try-catch 的本质进行相关的探索。小贴士:我会尽量用代码和评测结果来证明问题,但由于本身认知的局限,如有不当之处,请读者朋友们在评论区指出。性能评测..转载 2020-11-06 17:47:19 · 330 阅读 · 0 评论 -
MultipartFile类
导包:import org.springframework.web.multipart.MultipartFile说明:这个类一般是用来接收前台传过来的文件方法说明:返回值类型 方法说明 byte[] getBytes() 将文件内容转化成一个byte[] 返回 String getContentType() 返回文件的内容类型 Inputstream getInputStream() 返回InputStream读取文件的内容 String getN转载 2020-10-29 17:38:21 · 1392 阅读 · 0 评论 -
Java内部类序列化问题
一个类能够序列化,需要满足两个条件:类本身实现序列化接口Serializable 类所有的成员属性实现序列化接口SerializableJava的嵌套类(nested class)一共有四种:static nested class 静态嵌套类 inner class 内部类(非静态) local class 本地类(定义在方法内部) anonymous class 匿名类静态嵌套类的行为更接近普通的类,另外三个是真正的内部类。区别在于作用域的不同。 以下是对他们的性质描述:...转载 2020-10-27 20:04:09 · 2359 阅读 · 0 评论 -
Java HashMap 初始化赋值 (不建议)
1、HashMap 初始化的文艺写法HashMap 是一种常用的数据结构,一般用来做数据字典或者 Hash 查找的容器。普通青年一般会这么初始化:HashMap<String, String> map = new HashMap<String, String>();map.put("name", "test"); map.put("age", "20");看完这段代码,很多人都会觉得这么写太啰嗦了,文艺青年一般这么来了:HashMap<String, .转载 2020-10-27 19:45:12 · 13205 阅读 · 0 评论 -
B 站面试之旅,一起来看看都问了什么?
前言此次 B 站服务端开发面试之旅可谓惊险,不过通过对大部分面试题套路的掌握,不出意外还是拿下了,下面我们来看看这些骚题是不是常见的不能再常见的了。这些面试题看了就能面上?当然不是,只是通过这些题让自己知道所欠缺的是什么,以及可以去看看哪些资料。正文1. 操作系统相关 自旋锁和一般锁的区别是什么?为什么要使用自旋锁? 当一个线程在获取锁的时候,如果这个锁已经被其他线程获取,那么这个线程不会破门而入,而是循环等待,但是嗷嗷待哺,需要不断地嗷嗷叫判断锁是否被成功获取,直到获取到锁才会退转载 2020-10-26 14:56:05 · 490 阅读 · 0 评论 -
Java中常见流的分类及简单讲解
一、梳理总结一流在Java中是指计算中流动的缓冲区。从外部设备流向中央处理器的数据流成为“输入流”,反之成为“输出流”。字符流和字节流的主要区别:1.字节流读取的时候,读到一个字节就返回一个字节;字符流使用了字节流读到一个或多个字节(中文对应的字节数是两个,在UTF-8码表中是3个字节)时。先去查指定的编码表,将查到的字符返回。2.字节流可以处理所有类型数据,如:图片,MP3,AVI视频文件,而字符流只能处理字符数据。只要是处理纯文本数据,就要优先考虑使用字符流,除此之外都用字...转载 2020-10-26 11:36:33 · 2515 阅读 · 0 评论 -
java中Map遍历的四种方式
在java中所有的map都实现了Map接口,因此所有的Map(如HashMap, TreeMap, LinkedHashMap, Hashtable等)都可以用以下的方式去遍历。方法一:在for循环中使用entries实现Map的遍历最常见也是大多数情况下用的最多的,一般在键值对都需要使用Map <String,String>map = new HashMap<String,String>();map.put("熊大", "棕色");map.put("熊二", "黄转载 2020-10-26 09:48:02 · 1656 阅读 · 0 评论 -
两个list集合的交,并,差集
import java.util.ArrayList;import java.util.List;public class Listbj { public static void main(String[] args) { //先声明8个数组 List a = new ArrayList(); List b = new ArrayList(); List c = new ArrayList(); List d =.转载 2020-10-23 14:56:08 · 740 阅读 · 0 评论