![](https://img-blog.csdnimg.cn/20201014180756918.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Java
文章平均质量分 55
胡萧徒
最怕一生碌碌无为,还安慰自己平凡可贵。
展开
-
为什么阿里巴巴禁止在 foreach 循环里进行元素的 remove/add 操作
具体原理解释挺长的而且已经有很多文章写了,我只是总结一下: 1.此段代码反编译后的样子(实际还是迭代器,但是remove用的是List的remove) ArrayList<String> list = new ArrayList<>(); list.add("1"); list.add("2"); Iterator iterator = list.iterator(); do { ...原创 2021-12-01 16:56:44 · 219 阅读 · 0 评论 -
集合初始化时指定集合容量大小 -作用以及代码案例
一丶前言 最近一个朋友在优化代码,和我提到了这个集合初始容量的问题。所以想起来第一次看到这个还是在 阿里《Java开发手册》上,今天就来复习一下集合初始容量的作用。 二丶案例 (注意注释中的介绍) 话不多说直接上代码(List 案例): /** * 注解@ParameterizedTest: 和@Test类似,但是允许带有参数 * 注解@ValueSource: 表示会依次按照ints中的参数运行多次 * 0默认,16阿里推荐,200W刚好的容量,..原创 2021-11-15 18:10:06 · 1181 阅读 · 0 评论 -
对象集合根据其中某个字段去重,一行解决!
写业务代码的时候碰到一个业务场景,集合需要根据某个字段去重. 自己写的太多,所以到网上找了一个简洁的方案,一行解决了,运行也没有问题. 但是不太看得懂代码原理,到网上差了点资料弄明白了,在此记录一下 核心代码,要用的拿这行去,改下参数名就行了: userList = userList.stream().collect(Collectors.collectingAndThen(Collectors.toCollection(() -> new TreeSet<>(Compa...原创 2020-11-23 17:48:45 · 4180 阅读 · 9 评论 -
什么是缓存穿透? 如何避免?
1.什么是缓存穿透? 一般的缓存系统,都是按照key去缓存查询,如果不存在对应的value,就应该去数据库查询。 一些恶意的请求会故意大量查询不存在的key,就会对数据库造成很大的压力。这就叫做缓存穿透。 2.如何避免? ①采用布隆过滤器,将所有可能存在的数据存到一个bitMap中,不存在的数据就会进行拦截。 ②对查询结果为空的情况也进行缓存,缓存时间设置短一点,不超过5分钟。 ...转载 2020-04-29 16:13:04 · 1837 阅读 · 0 评论 -
Java 获取当日前,某月的所有日期
直接上代码: // 获取日期列表 private List<String> getDateList() throws ParseException { // 计算的月份 String month = "2016-12"; List<String> dateList = new LinkedList<String>(); Calendar ...原创 2019-12-11 17:17:58 · 815 阅读 · 0 评论 -
Java 求两个月份之间的每个年月
1. 求两个年月之间的月份,包含开始月份 /** * @param startMonth @example: "2016-01" * @param endMonth @example: "2019-11" * @return 两个时间之间的月份(含开始,结束) * @throws ParseException */ private List<String>...原创 2019-11-22 14:08:40 · 477 阅读 · 0 评论 -
推荐安装的 几个eclipse插件
1.Spring Tools -- springboot 项目开发插件 2.MyBatis Generator --自动生成MyBatis增删改查代码 3.Enhanced Class Decompiler --反编译神器原创 2019-04-26 13:57:37 · 1085 阅读 · 0 评论 -
eclipse alt+/ 自动提示卡死--解决方案
1、点击报错的那个连接(Content Assist) , 或者 打开 Windows>preferences>Java>Editor>Content Assist>Advanced 2、将Default Proposal Kinds栏中(上面框)Java Proposals (Code Recommenders)取消对勾。 3、生效后,我的...原创 2019-03-06 10:43:44 · 4211 阅读 · 1 评论 -
java 23种设计模式 深入理解
以下是学习过程中查询的资料,别人总结的资料,比较容易理解(站在各位巨人的肩膀上,望博主勿究): 创建型 抽象工厂模式http://www.cnblogs.com/java-my-life/archive/2012/03/28/2418836.html 工厂方法http://www.cnblogs.com/java-my-life/archive/2012/03/25/2416227.html...转载 2019-03-05 12:23:35 · 2173 阅读 · 0 评论 -
JAVA 内存管理 JVM 概述
1)堆: 1.1)存储new出来的对象(包括实例变量) 1.2)垃圾:没有任何引用所指向的对象, 垃圾回收器(GC)不定时到内存中清扫垃圾, 回收过程是透明的(看不到的),不一定一发现垃圾就立刻回收, 调用System.gc()可以建议虚拟机尽快调度GC来回收垃圾 1.3)实例变量的生命周期: 创建对象时存...原创 2018-12-11 21:35:31 · 4021 阅读 · 0 评论 -
JAVA 基础 final、static 关键字
1.final:最终的、不可改变的---------------应用率低 1)修饰变量:变量不能被改变 2)修饰方法:方法不能被重写 3)修饰类:类不能被继承 4)修饰成员变量:系统不会默认赋值,声明时初始化,或者构造中初始化. 5)修饰局部变量: 系统不会默认赋值,使用前初始化,局部变量出本方法后无效.2.static:静态的 1)静态变量: 1.1)由stati...原创 2018-12-11 21:33:25 · 4074 阅读 · 0 评论 -
JAVA 向上造型、重写方法、重写重载区别
1.向上造型: 1)超类型的引用指向派生类对象 2)能点出来什么,看引用的类型2.方法的重写(Override):重新写、覆盖 1)发生在父子类中,方法名称相同,参数列表相同,方法体不同 2)重写方法被调用时,看对象的类型 3)重写遵循"两同两小一大"原则: 3.1)两同: 3.1.1)方法名相同 3.1.2)参数列表相同 3.2...原创 2018-12-11 21:29:29 · 4415 阅读 · 0 评论 -
JAVA OOP三大特征:封装、继承、多态
1.封装: 1)类:封装的是对象的属性与行为 2)方法:封装一段特定的业务逻辑功能 3)访问控制修饰符:封装的是具体的访问权限2.继承: 1)作用:代码复用 2)超类:所有派生类所共有的属性和行为 接口:部分派生类所共有的行为 派生类:派生类所特有的属性和行为 3)单一继承、多接口实现,传递性3.多态: 1)行为多态(所有抽象方法都是多态的) 对...原创 2018-12-11 21:26:58 · 4227 阅读 · 0 评论