JAVAEE
文章平均质量分 66
爱叨叨的程序狗
码农,不只Coding.
展开
-
图解JDK 8 HashMap
HashMap 主要用来存放键值对,它基于哈希表的 Map 接口实现,是常用的 Java 集合之一,是非线程安全的。HashMap可以存储 null 的 key 和 value,但 null 作为键只能有一个,null 作为值可以有多个JDK1.8 之前HashMap由 数组+链表 组成的,数组是HashMap的主体,链表则是主要为了解决哈希冲突而存在的(“拉链法”解决冲突)。JDK1.8 以后的HashMap。原创 2024-04-14 16:30:51 · 282 阅读 · 0 评论 -
List subList()方法缺陷及替代方案
方法是通过下标来获取原数组的数据,而不是返回一个新的对象,当代码中有对分割后的列表访问时,便是对原。因此,我们需要找到新的方案去解决代码中的风险点。的构造方法中,入参有原始list的引用,在日常开发中,我们常遇到将一个。使用Stream的方式分割。方法避免开发者重复造轮子。的引用,导致该对象不会被。回收,数据量大时,有导致。列表分割成多个的场景,的一个内部类,它继承自。使用方法参考示例来自。原创 2023-01-13 20:05:08 · 2251 阅读 · 0 评论 -
String spilt的使用和常见的坑以及平替方案性能比较
String spilt用法入参:regex或regex,limit将字符串根据某个符号(正则)进行分割成char数组。limit用于确定 分割后的字符串数组的长度。返回值String []方法一、入参仅正则regex String b = "This is the code, test 1 ,test 2"; String b0 = b.split(",")[0]; String b1 = b.split(",")[1]; S原创 2021-11-22 21:32:17 · 651 阅读 · 0 评论 -
继承关系在编译期做了什么?桥接方法、泛型擦除
什么是桥接方法?Java桥接方法(Bridge Method)是一种为了实现某些Java语言特性而由编译器自动生成的方法。可以通过Method类的isBridge方法来判断一个方法是否为桥接方法。在字节码文件中,桥接方法会被标记为ACC_BRIDGE和ACC_SYNTHETIC。ACC_BRIDGE用于表示该方法是由编译器产生的桥接方法,ACC_SYNTHETIC用于表示该方法是由编译器自动生成。什么时候生成桥接方法?最常见的两种情况是:协变返回值类型类型擦除这两种情况会导致父类方法的原创 2021-07-30 14:54:44 · 197 阅读 · 0 评论 -
拆箱与装箱可能会出现的坑
拆箱与装箱可能会出现的坑以Integer为例:装箱时使用静态的valueOf()方法。拆箱时使用非静态的xxxValue()方法。try { int count = (Integer) map.get("count"); } catch (NullPointerException e) { // do something.}这样写为什么有可能出现空指针异常?map.get("count")根据key去获取map的value,有可能会获取到null,null可以转换为任何类型,原创 2021-07-15 10:59:50 · 168 阅读 · 0 评论 -
HashMap不完全解读
HashMap的几个重要知识点HashMap是无序且不安全的数据结构。存储结构是数组 + 链表 + 红黑树 (阈值为8 如果链表长度<=8则会把链表变成红黑树 ),数组中存储元素Entry,存储元素的位置被称为桶,每个bucket有且仅有一个元素并指定索引,以实现快速访问。HashMap 是以key–value对的形式存储的,key值是唯一的(可以为null),一个key只能对应着一个value,但是value是可以重复的。HashMap 如果再次添加相同的key值,它会覆盖key值所对应的原创 2021-02-18 21:52:54 · 236 阅读 · 4 评论 -
Java中的深浅拷贝
Java中对象复制的方式直接赋值浅拷贝深拷贝概念明确Java把内存划分成两种:一种是堆内存,一种是栈内存。堆(heap):主要用于存储实例化的对象,数组。由JVM动态分配内存空间,堆内存还可以用来存放由new创建的对象和数组。一个JVM只有一个堆内存,线程是可以共享数据的。栈(stack):主要用于存储局部变量和对象的引用变量,每个线程都会有一个独立的栈空间,所以线程之间是不共享数据的。talk is c heap , show me your code.直接赋值Demo@Data原创 2021-01-31 16:40:20 · 166 阅读 · 0 评论 -
Integer和int的关系与区别、默认值
Integer和int的关系类型Java的两种类型基本类型,存放的是数据的本身引用类型,存放的是被引用对象的地址比较方式基本类型之间的比较是通过比较值引用类型之间的比较是比较地址默认值的区别Java为每个原始类型提供了封装类,Integer是java为int提供的封装类。int的默认值为0,而Integer的默认值为null,即Integer可以区分出未赋值和值为0的区别,int则无法表达出未赋值的情况。 int a; //默认为0 integer b; //默认为null原创 2020-11-20 09:45:27 · 1838 阅读 · 0 评论 -
Java设计模式
一、单例模式定义:单例模式,保证一个类有且仅有一个实例,并提供一个它的全局访问点。缺点:不管用到与否,类装载时就完成实例化(如果没有用到,则内存浪费)。public class Singleton { private final static Singleton instance = new Singleton(); /** * 构造方法是private,其他类无法new, * 所以其他类在试用该类的实例时,只能通过getInstance()来获取 */原创 2020-11-16 22:08:58 · 228 阅读 · 0 评论 -
Assert断言
Assert断言关键字:一、断言的作用Assert关键字是在JDK1.4之后出现,使用Java中的 assert 语句实现,配合布尔表达式一起使用,达到调试程序开发过程中的判断、调试程序的作用。 在执行断言时,它被认为是正确的。 如果失败,JVM会抛出一个名为 AssertionError 的错误。 断言是默认关闭的,如果想使用断言进行判断,需要手动打开断言功能。如果要开启断言检查,则需使用-enableassertions 或 -ea JVM参数来开启;如果要手动忽略断言检查,则可以通过使用 -dis原创 2020-11-16 21:00:45 · 585 阅读 · 0 评论 -
@Builder建造者模式
建造者模式:1、定义:将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示2、主要作用:在用户不知道对象的建造过程和细节的情况下就可以直接创建复杂的对象。3、如何使用:用户只需要给出指定复杂对象的类型和内容,建造者模式负责按顺序创建复杂对象(把内部的建造过程和细节隐藏起来)4、解决的问题:(1)、方便用户创建复杂的对象(不需要知道实现过程)(2)、代码复用性 & 封装性(将对象构建过程和细节进行封装 & 复用)5、注意事项:与工厂模式的区别是:建造者模式更加原创 2020-10-24 17:22:43 · 440 阅读 · 0 评论 -
Java8 Collectors.toMap的key重复
**Map<String, BottomAccount> map = bottomAccountList.stream().collect(Collectors.toMap(BottomAccount::getGoodName, Function.identity()));如这个地方,如果使用GoodName为map的key,货物名称有可能会重复,这时候就会报Duplicate Key的问题,其实是map的key重复了,首先查看源码:显而易见,throwingMerger()是一个出现原创 2020-09-23 20:23:27 · 9830 阅读 · 0 评论 -
Java基本集合介绍
Java中的集合Java中的集合被称为容器,常用的List/Map集合都继承自Collection接口.下面是我使用xmind来描述它们.原创 2020-08-18 20:04:29 · 140 阅读 · 0 评论 -
MySQL常用语句整理
数据库,表操作1 create database 数据库名称; (创建一个数据库)2 dorp database 数据库名称; (删除一个数据库)3 show tables from 数据库名称 like 表达式; (显示一个数据库所有的表格)4 create table...转载 2019-02-16 17:12:32 · 144 阅读 · 0 评论 -
MVC设计模式及流程
MVC设计模式:概述:是一种开发结构合理、能使前后端分离、流程控制逻辑、业务逻辑调用与展示逻辑分离,实现高内聚,低耦合的设计模式。M:模型(Model):数据模型,提供要展示的数据,包括数据(JavaBean)和行为(数据处理)。V:视图(View):视图层:客户端用户能直接看到的页面,主要有模型的展示。C:控制 (Controller):接受用户请求,参数的提交和页面的响应,委托...原创 2019-02-11 22:00:20 · 5603 阅读 · 0 评论 -
最新的spring boot技术实现登录、列表、分页、上传等功能
转载简书的一篇文章效果图<?xml version="1.0" encoding="UTF-8"?><project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http:/转载 2019-02-20 19:47:49 · 527 阅读 · 0 评论 -
Spring MVC框架浅析
概述:是一种开发结构合理、能使前后端分离、流程控制逻辑、业务逻辑调用与展示逻辑分离,实现高内聚,低耦合的设计模式。M:数据实体模型(Model):每一个类的成员变量字段对应数据库字段对应(对应的Entity、JavaBean),提供数据的CRUD操作,实现数据库的持久化。V:视图(View):视图层:客户端用户能直接看到的页面,主要负责视图的展示。视图层调用控制层(HTML、JSP等文件...原创 2019-08-16 17:27:51 · 173 阅读 · 0 评论 -
浅谈Apache Shiro权限模块及数据库设计
写在最最最~~~前面的:由于Shiro框架在学习过程中假如没有一个实例Demo的参考,理解起来可能较为生涩难懂,所以笔者建议大家参考这个开源的项目:点我下载项目,该项目是我在学习Apache Shiro过程中参考的项目,我在原项目的基础上增加了一些便于理解的注释等,项目采用前后分离的方式开发,原作者:点我查看简介Apache Shiro是Java项目中常用的两大安全框架之一,可以完成认证、授权...原创 2019-10-05 23:29:41 · 423 阅读 · 0 评论 -
Servlet执行流程
Servlet执行流程本文主要解释服务器在收到客户端的请求后在服务器内部的执行过程。什么是映射客户端通过URL地址访问服务器中的资源,所以Servlet程序要是想被外界访问,必须把servlet映射到一个URL地址上,这个工作在web.xml文件中使用元素和元素完成。元素用于注册Servlet它包含两个主要的子元素:设置Servlet的注册名称:设置Servlet的完整类名。元素用...原创 2019-01-28 23:02:04 · 249 阅读 · 0 评论