Java
Java知识点整理
Monika、
加油,做最好的自己!
展开
-
在线程中 sleep 和 wait 有什么区别
一、源码如下sleep源码public class Thread implements Runnable { public static native void sleep(long millis) throws InterruptedException; public static void sleep(long millis, int nanos) throws InterruptedException { if (millis < 0) { throw new原创 2020-07-21 15:45:35 · 415 阅读 · 0 评论 -
JDK8中各种排序方法!
一、代码测试案例package demo;import java.util.ArrayList;import java.util.Collections;import java.util.Comparator;import java.util.List;import entity.Users;/*** @author :zkx* @createtime :2020年5月21日 上午8:56:52* @description:*/public class Test { p原创 2020-07-21 10:36:15 · 2775 阅读 · 1 评论 -
Java8中使用groupBy实现集合的分组,并根据某一条件进行分组
一、简介:Java8中的groupBy实现集合的分组,类似Mysql的group by分组功能,注意得到的结果是一个map二、代码测试案例:package demo;import java.util.ArrayList;import java.util.List;import java.util.Map;import java.util.Set;import java.util.stream.Collectors;import entity.Student;/*** @autho原创 2020-07-17 17:15:38 · 4401 阅读 · 2 评论 -
Java8 新特性 使用lambda表达式对map集合求和,或平均值、最大值、最小值
一、lambda方法,如下: IntSummaryStatistics statistics= (IntSummaryStatistics) list .stream() .collect( Collectors.summarizingInt( e->Integer.valueOf( ((Map) e).get("xxx Key对象").toString() )));具体方法:我们用以上得到的结果 .get,如下图,可以直接获取集合的和,或原创 2020-07-17 14:59:46 · 5179 阅读 · 0 评论 -
Java中使用Lambda表达式和filter方法对List集合进行过滤
一、代码测试案例package demo;import java.util.ArrayList;import java.util.List;import java.util.stream.Collectors;import entity.User;public class Test01 { public static void main(String[] args) { // 创建集合对象 List<User> list = new ArrayList<&原创 2020-07-17 15:26:02 · 9573 阅读 · 1 评论 -
Java中实现多级菜单的列表(递归排序)
一、项目背景由于最近项目中需要实现展示菜单功能,菜单是需要多级,并且级数不固定。像这种需求,一般就是用递归实现了,可以从第一级一直往下查,一直查询到为空为止。二、数据库实体类字段两个实体类,一个是对应数据库的实体类,VO是返回给前端的实体类public class RcMenu { private Integer menuId; //菜单ID private String menuName;//菜单名称 private Boolean status; //菜单状态 pri原创 2020-05-26 15:52:46 · 4634 阅读 · 11 评论 -
【Java】中使用CGLIB动态代理详解
一、简介Cglib是一个优秀的动态代理框架,它的底层使用ASM在内存中动态的生成被代理类的子类。使用CGLIB即使被代理类没 有实现任何接口也可以实现动态代理功能。CGLIB具有简单易用,它的运行速度要远远快于JDK的Proxy动态代理:1. 使用CGLIB需要导入以下两个jar文件: asm.jar – CGLIB的底层实现。 cglib.jar – CGLIB的核心jar包。2. CGLIB的核心类:net.sf.cglib.proxy.Enhancer – 主要的增强类 net.s原创 2020-06-01 16:18:52 · 816 阅读 · 0 评论 -
【Java】中分布式锁的三种实现方式及对比
分布式锁三种实现方式:基于数据库实现分布式锁;基于缓存(Redis等)实现分布式锁;基于Zookeeper实现分布式锁;一, 基于数据库实现分布式锁悲观锁利用select … where … for update 排他锁注意: 其他附加功能与实现一基本一致,这里需要注意的是“where name=lock ”,name字段必须要走索引,否则会锁表。有些情况下,比如表不大,mysql优化器会不走这个索引,导致锁表问题。乐观锁所谓乐观锁与前边最大区别在于基于CAS思想,原创 2020-06-04 14:52:29 · 375 阅读 · 0 评论