![](https://img-blog.csdnimg.cn/20201014180756757.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
java学习
Ivan_梦方舟
我是一只小小菜鸟,我的梦想是做一只展翅蓝天的雄鹰,现在我的还在这条成长的路上
I am on the road ....
展开
-
List集合根据条件删除某些元素,只需一行代码
很多时候,我们要对集合中的数据进行筛选,只保留符合我们条件的元素,一般我们是通过for循环去遍历list ,然后在循环里面删除不符合条件的元素或者是新增一个集合,然后在循环里面添加符合条件的元素这些方法都是可以的,但是不够简便,需要我们自己写挺多逻辑这里有一个偷懒的做法,jdk 1.8 的集合类中有一个叫 removeIf ()的方法,只需要传入移除元素的条件判断逻辑即可完成元素移除操作一行代码即可解决这个方法源码如下,原理还是利用迭代器去删除元素的,返回值是被删除的元素原创 2021-12-02 17:28:10 · 1560 阅读 · 0 评论 -
java工具类:生成指定时间范围内的所有连续的日期、月份、周数集合
/** * 计算两个时间中所有的月份 * @param date1 开始时间 * @param date2 结束时间 * @return * @throws ParseException */ public static List<String> getMonths(String date1, String date2) throws ParseException{ SimpleDateFormat s...原创 2021-11-19 18:10:46 · 4563 阅读 · 0 评论 -
mybaties plus 分页查询临时禁用分页,一次性查询所有数据的最简单方式
mybatis plus 分页查询只需要传入一个分页参数page即可实现自定义sql查询的分页功能,不过有的时候,我们可能会要求查询所有数据,不使用分页,比如做数据导出,前端列表用的分页查询,而想要导出所有数据,后端就要重新查一遍数据然后去导出,查询的逻辑一般是和前段列表的分页查询是一样的,如果能复用分页查询的逻辑,就不用重新写一份同样的逻辑,减少冗余代码如何使用分页查询查询所有的数据而不带入分页参数呢?答案:将传入的page参数的pageSize设为 -1 即可...原创 2021-09-23 20:34:06 · 6306 阅读 · 2 评论 -
理解java中类加载过程中的双亲委派机制
简单来说,双亲委派过程大致分为两步:第一步: 判断需要加载的类是否已经被加载过第二步:开始加载类(从bootstrapClassload开始尝试加载,如果无法加载,则交由子类加载器尝试加载)类加载器种类:启动类加载器(bootstrap classloader)主要加载jre核心的类库扩展类加载器(extension classloader)主要加载 java_home/lib/ext类库应用类加载器(application classloader)主要加载classpath路径下的原创 2021-09-07 16:03:17 · 118 阅读 · 0 评论 -
java利用stream流实现对hashmap的value值进行排序
我们都知道,hashmap本身是无序的,不可能做到排序,但是有时候又要排序该怎么办呢?既然hashmap不行,那么有没有那种map集合是有序的呢?当然有,linkedhashmap就是其中的一种所以解决问题的思路就是将hashmap转成linkedhashmap就好了那么该如何转呢?这里推荐使用java8的stream流操作来转化Map<String, Integer> unsortedMap= new HashMap<>();unsortedMap.put.原创 2020-11-30 19:14:06 · 4088 阅读 · 1 评论 -
java 计算当前日期所在周的周一是那一天
分享工具类:各种日期计算(注:工具类中的周的开始时间是周日)计算当前日期所在周的周一是那一天计算当前日期所在月份的第一天。。。。。。。import java.time.LocalDate;/** * 日期计算辅助类 * @author Lim * @date 2019/11/10 */public class LocalDateUtil { /** * 周开始日期,周日为周开始时间 * @param date 指定日期 * @ret原创 2020-11-30 18:53:20 · 626 阅读 · 0 评论 -
java判断导入的excel是否有重复行数据并记录重复数据行号
这个是我做项目过程中遇到的的一个问题,当时的需求是要求对使用excel导入的数据做判重校验(所有列的数据都一样判定为重复数据),如果里面有输入重复的数据的话,就记录哪些行是重复的数据,记录对应的行号,返回给前端显示给用户最开始的想法是把所有excel里面的数据全部读出来,放在一个map中,map的key记录行号,value保存数据行转化之后的对象,然后通过遍历map集合,一个个的去比较。这种方式肯定是可行的,但是当时觉得太麻烦了,并且效率很低,就没有用这种方式去做,当时在想有没有更简单的,更高.原创 2020-11-04 11:58:54 · 9274 阅读 · 2 评论 -
什么是Java中的重入锁?看不懂算我输
什么是重入锁?字面上理解就是可以重新获取进入的锁,实际上也是这样理解的,官方解释:当某个线程获取到锁时,该线程还能继续获取该锁。也就是说线程可以重复获取同一把锁就像下面这样:一个类中,同步方法之间的调用就需要重复获取this锁public class Demo1 { public synchronized void functionA(){ System.out.println("iAmFunctionA"); functionB(); ...原创 2020-08-06 11:25:43 · 604 阅读 · 0 评论 -
Java中的线程池是如何实现线程复用的?
对于从事Java语言开发者对于线程池大家应该都不会陌生,Executors里面的各种线程池也是顺手拈来。但突然某一次,某人问了句“复用”如何实现的。想了想线程执行完就释放了,如何复用不甚了解。Java线程池优点:降低资源消耗。java中所有的池化技术都有一个好处,就是通过复用池中的对象,降低系统资源消耗。设想一下如果我们有n多个子任务需要执行,如果我们为每个子任务都创建一个执行线程,而创建线程的过程是需要一定的系统消耗的,最后肯定会拖慢整个系统的处理速度。而通过线程池我们可以做到复用线程,任...转载 2020-08-02 22:46:30 · 1324 阅读 · 0 评论 -
Java中如何正确的停止一个线程?多线程面试必问知识点
一般情况下我们是不需要自己手动去停止一个线程的,因为线程在执行完run方法里面的代码之后会自动停止那么在什么情况下需要我们手动去停止呢?答案就是run方法里面存在死循环,导致run方法一直没有办法执行完,如下面的情况public void run() { while (true) { System.out.println("I"); System.out.println("Love"); System.out.println("You");..原创 2020-07-26 22:07:44 · 637 阅读 · 0 评论 -
mybaties这样配置sql,轻松在java代码中获取新增记录的主键id
有时候,我们在做数据插入的时候,期望可以立马知道这条数据的主键id,应该怎么做呢?其实很简单,只需要在mybaties的sql上进行简单的配置即可,如下图所示在insert上加上:keyColum ,keyProperty,useGeneratedKeys=true 即可keyColum :表示数据库中主键的字段名keyProperty:主键映射的实体类中的属性名useGeneratedKeys=true :代表主键自增这样配置好之后,当执行这段sql时,会自动生成一个id(该i原创 2020-07-24 11:20:32 · 690 阅读 · 0 评论 -
最简单的模拟真实多线程死锁的场景,适合刚学习多线程的新手看
首先介绍下什么是死锁?个人理解:死锁指的是在多线程中(至少存在2个线程),线程之间持有各自所需要的锁,互相等待对方释放锁资源,形成无限等待的情况,这种场景叫做死锁上面那句话可能不是很好理解,我举一个例子:有两个人,一个叫小明,一个叫小红,他们关系特别好,吃饭共用一套碗筷 到饭点了,小明和小红一起去吃饭,小明先拿到了碗,正准备拿筷子的时候,却被小红抢先一步,小明说:你把筷子给我,我要先去吃饭,吃完给你,小红不肯,说:你先把碗给我,我吃完了再给你这样两个人,你不让...原创 2020-07-18 18:38:49 · 1724 阅读 · 0 评论 -
教你如何使用idea 中的git工具在本地进行分支合并,分支切换,纯手动按钮操作,无git指令
本文只针对idea中git工具,并且在使用过程中不会涉及到git的指令操作,对于不喜欢使用指令操作git 的朋友是一大福音。废话不多说,下面正式演示相关的操作过程:第一步:在远程仓库建立多个分支。以github为例我们先创建一个开发分支(dev),这个分支的目的是为了用于本地开发,而主分支(master)则用于最终打包部署到正式服务器环境使用。创建成功后的效果,在下拉列表中...原创 2019-08-07 13:11:21 · 1263 阅读 · 0 评论 -
java通过sign签名+时间戳的方式防止rest接口被恶意抓包调用和重放
做后端开发,避免不了要写接口,最开始我们写接口是为了满足实现具体的功能,能在客户端正常调用就行了,这种接口称为裸接口,就跟一个人没有穿衣服一样,我们在家的时候当然可以这么做,肆意放荡,这没关系,但是人总是要出门的,接触一些外人,这时候赤身裸体就不太好了吧。所有这时候我们要给自己穿上一件衣服。我们的接口也是一样的,一旦我们的接口上线暴露给外界了,必须要做一定的防护措施,给接口穿上“一件衣服”,避免一...原创 2019-07-26 16:54:19 · 10694 阅读 · 17 评论 -
springboot 传递对象数组参数时报错java.lang.NoSuchMethodException: 实体类.<init>()
前端代码:var user1 = { username : 'zs', password : '123'};var user2 = { username : 'lisi', password : '234'};var data = [];data.put(user1);data.put(user2);特别注意:在使用ajax发送请求时,需...原创 2019-01-15 21:52:45 · 3511 阅读 · 0 评论