
Java碎碎知识点相关のlog
文章平均质量分 66
Java八股文学习日常
加油当当
争做有灵魂、有本事、有血性、有品德的新时代青年!
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
装饰器模式不能只会背诵八股文,还得能在实际中应用啊
所以,虽然在这个过程中我们创建了新的对象,但是这些新的对象内部都持有了对原始对象的引用,而且在调用它们的 getCost 和 getIngredients 方法时,它们会首先调用被装饰对象(也就是原始的 Coffee 对象)对应的方法,然后再添加上它们自己的额外行为(添加牛奶或糖以及增加价格)。这样就实现了装饰器模式,能够在不改变原始对象的基础上,动态地为其添加新的功能。"运行时动态地向对象添加更多的功能",意味着在程序运行期间,我们可以在不改变原有类结构的情况下,增强对象的某些行为或者添加一些新的行为。原创 2023-06-15 22:07:00 · 376 阅读 · 0 评论 -
Collections.emptyMap()与new HashMap有什么区别?表格对比+源码
最近心情都比较复杂,ε=(´ο`*))),大概是时间节点到了吧,加上对未来的不确定性,状态一直都不好;看好多大佬都找到了暑期实习,我还是在这里苟且,一是感觉这个氛围还不错(刨除互联网的大环境之外,大环境是没办法的,没人想这样),二是感觉大家都比较友善,看看能不能转正了,希望8月下旬之前有消息,这大概是最后的DDL了;以及记录一些日常🤔,准备明天学校の组会请假,一个月请假一次的频率其实还可以感觉,最近状态很糟糕,确实不想回去开组会了ε=(´ο`*)));实验室模型或许可以用蒸馏改进一下?原创 2023-05-24 23:52:32 · 2020 阅读 · 0 评论 -
Object的toString方法与Arrays.toString()的异同
Object类是Java中所有类的父类。Object的toString()方法和Arrays的toString()方法都是用来获取对象的字符串表示的,但是Object的toString()方法通常需要在子类中重写,以提供有意义的输出,而Arrays的toString()方法则是用来获取数组内容的字符串表示的。这个方法对于打印数组非常有用,因为如果你直接调用数组的toString()方法(这实际上是调用Object的toString()方法),你将得到的是数组的内存地址,而不是数组的内容。原创 2023-05-22 20:49:49 · 458 阅读 · 0 评论 -
面向对象七大(五大)基本原则
假设你有一个 Computer 类,这个类有一个 start 方法,这个方法需要访问 PowerSupply 类的 getVoltage 方法来检查电压是否正常,然后访问 Cpu 类的 run 方法来启动 CPU。为了遵循这个原则,你可以将 fly 方法移出 Bird 类,创建一个 FlyingBird 类继承自 Bird 类并包含 fly 方法,然后让需要飞的鸟类继承自 FlyingBird 类;如果我们想创建一个能飞的鸟,应该将Fly类作为Bird类的一个成员,而不是让Bird类继承Fly类。原创 2023-05-19 21:29:57 · 1211 阅读 · 0 评论 -
Java 11 sort DualPivotQuicksort 源码中的sort详解
static void sort(int[] a, int left, int right, int[] work, int workBase, int workLen)判断排序阈值: 如果待排序数组的长度小于设定的阈值QUICKSORT_THRESHOLD,则直接使用快速排序算法进行排序。 private static final int QUICKSORT_THRESHOLD = 286; 检查数组的有序性: 通过遍历数组,检查数组是否已经是部分有序的。这里的有序是指数组中存在多原创 2023-05-18 10:38:45 · 472 阅读 · 0 评论 -
MySQL查看索引语句:SHOW INDEX 详细讲解
SHOW INDEX语句是MySQL中用于查看表索引信息的语句。它提供了有关表中索引的详细信息,包括索引名称、索引类型、关联的列等。原创 2023-04-26 15:58:41 · 15626 阅读 · 1 评论 -
被CR代码时:何时应该使用enum类型,如何正确使用enum类型,常量与枚举类型之间如何选择?
每次被CR代码,都有点提心吊胆,因为感觉自己好多时候,都不太能把握到底应该如何书写,好在大家(俊哥、宽哥等)悉心指导下,似乎步入正轨;之前被指出,代码中不应该出现类似1、2、3这样的数字,应该定义成常量,但我理解错了,我把本应该定义成枚举类型的东西,依然定义成了常量,具体如下:是要求前端传入过来的一个用来标记的变量:configType1 代表费率调增代表账期调整,如果不定义成为枚举类型,你不仅需要单独校验,并且语义还不明确,但如果你指定定义成为枚举类型,枚举类型本身会在编译时检查;原创 2023-04-03 18:25:31 · 745 阅读 · 0 评论 -
SpringBoot处理异常的相关注解 - @ControllerAdvice注解
本文详细叙述了@ControllerAdvice注解的基本概念、用途、基本使用、属性、@ControllerAdvice 与其他注解联合使用?异常处理方法 @ExceptionHandler、绑定数据方法 @InitBinder、模型数据方法 @ModelAttribute 、@RestControllerAdvice注解 与 @ControllerAdvice注解的区别?@ControllerAdvice和@ExceptionHandler结合使用、等问题原创 2023-03-25 21:42:50 · 1140 阅读 · 0 评论 -
Kafka 如何保证消息不丢失:Kafka 在什么情况下会出现消息丢失及解决方案?kafka中的消息是否会丢失和重复消费?【重点】【面试问过】【字节飞书面试】【快手面试】
立足于生产者、消息存储、消费者,这三个角度,详细的分析了Kafka 如何保证消息不丢失:Kafka 在什么情况下会出现消息丢失及解决方案?kafka中的消息是否会丢失和重复消费?【重点】【面试问过】【字节飞书面试】【快手面试】原创 2023-03-06 20:42:20 · 897 阅读 · 0 评论 -
ChatGPT似乎有的时候并不能搞懂Java的动态分派,你懂了吗?
ChatGPT似乎有的时候并不能搞懂Java的动态分派,你懂了吗?本文从ChatGPT错误分析动态分派的例子出发,详细讲解了有关Java分派的概念、静态分派、动态分派、单分派与多分派;并且详细讲解了书中的五个例子,以及一道用友公司的笔试题最后对ChatGPT出现对程序员职业进行了一定的思考原创 2023-02-26 23:45:33 · 3895 阅读 · 0 评论 -
NPE:记一次脑残NPE的排查过程
NPE:记一次脑残NPE的排查过程试一次完整的过程并且总结了容易发生NPE的位置,以及避免方法!原创 2023-02-22 19:38:16 · 1253 阅读 · 0 评论 -
实习这么久,你知道Maven是如何从代码仓库中找到需要的依赖吗?
实习这么久,你知道Maven是如何从代码仓库中找到需要的依赖吗?Maven四连问!Maven是如何找到代码仓库里需要的依赖的?如何根据坐标在本地仓库中寻找所需要的依赖?如何根据坐标在远程仓库中寻找所需要的依赖?Maven 如何使用 HTTP 或 HTTPS 协议从远程仓库中获取依赖项,请详细解释其原理原创 2023-02-16 10:41:43 · 3733 阅读 · 0 评论 -
信息摘要算法——MessageDigest类用法
java.security.MessageDigest类为应用程序提供信息摘要算法的功能,如 MD5 或 SHA-1或SHA-256 算法。信息摘要是安全的单向哈希函数,它接收任意大小的数据,并输出固定长度的哈希值。MessageDigest 对象调用getInstance初始化,使用update方法处理数据。任何时候都可以调用reset方法重置摘要。一旦所有需要更新的数据都已经被更新了,应该调用digest方法之一完成哈希计算。对于给定数量的更新数据,digest方法只能被调用一次。原创 2023-02-10 16:30:55 · 965 阅读 · 0 评论 -
ES查询常用语法
ES查询常用语法目录1. ElasticSearch之查询返回结果各字段含义2. match 查询3. term查询4. terms 查询5. range 范围6. 布尔查询6.1 filter加快查询效率的原因7. boosting query(提高查询)8. dis_max(最佳匹配查询)9. 分页10. 聚合查询【内含实际的demo】原创 2023-01-02 13:26:58 · 17854 阅读 · 5 评论 -
程序验证Jackson反序列化的规则、Jackson序列化与反序列化关键方法程序详细分析
程序验证Jackson反序列化的规则没有无参构造时:如果有参构造的参数全,或者更多(就是有不存在的值),这样还能正常运行如果参数不全则直接异常无参构造和有参构造方法都有的时候先走无参构造;无参构造需要set/get方法来完成序列化和反序列化Jackson序列化与反序列化关键方法程序详细分析原创 2022-11-11 22:37:02 · 4432 阅读 · 3 评论 -
从两个易错的笔试题深入理解自增运算符
前缀自增自减法(++a,--a): 先进行自增或者自减运算,再进行表达式运算;后缀自增自减法(a++,a--): 先进行表达式运算,再进行自增或者自减运算;两个阿里笔试题原创 2022-07-30 21:52:41 · 943 阅读 · 0 评论 -
从笔试包装类型的11个常见判断是否相等的例子理解:包装类型、自动装箱与拆箱的原理、装箱拆箱的发生时机、包装类型的常量池技术
包装类型、自动装箱与拆箱的原理、装箱拆箱的发生时机、包装类型的常量池技术、包装类型的11个常见判断是否相等的例子原创 2022-07-30 13:52:13 · 613 阅读 · 0 评论 -
聚簇索引与非聚簇索引的区别?【必会】
依赖于有序的数据因为B+树是多路平衡树,如果索引的数据不是有序的,那么就需要在插入时排序,如果数据是整型还好,否则类似于字符串或UUID这种又长又难比较的数据,插入或查找的速度肯定比较慢;更新代价大如果对索引列的数据被修改时,那么对应的索引也将会被修改,而且况聚集索引的叶子节点还存放着数据,修改代价肯定是较大的,所以对于主键索引来说,主键一般都是不可被修改的。非聚集索引的更新代价就没有聚集索引那么大了,非聚集索引的叶子节点是不存放数据的;非聚集索引物理存储不按照索引排序;...原创 2022-07-19 20:16:23 · 580 阅读 · 0 评论 -
DNS解析过程【重点】【十分完整】【适合面试回答】
【解释∶DNS是分布式域名服务器,每台服务器只维护一部分IP地址到网络地址的映射,没有任何一台服务器能够维持全部的映射关系】。原创 2022-06-02 15:25:04 · 1264 阅读 · 0 评论 -
针对 TCP 应该 Socket 编程的具体流程【流程要会】:【重点】【重点】【重点】【重点】
流程图:具体过程:服务端和客户端建立socket ,客户端生成一个用于通信的套接字文件描述符sockfd; 服务端调用bind ,将套接字绑定在IP地址和端口; 服务端调用listen ,进行监听套接字; 服务端调用accept ,等待客户端连接; 客户端调用connect ,向服务器端的地址和端口发起连接请求; 连接请求需要TCP三次握手: 半连接队列,即 SYN 队列;是指TCP三次握手过程中,服务器首次收到客户端的 SYN 之后,状态变为SYN_RCVD,此时T...原创 2022-05-31 12:17:16 · 634 阅读 · 0 评论 -
Queue 与 Deque 【Collection接口】【笔记】
今天五四青年节,为了勋章……挂一个笔记;Deque支持在两端插入和移除元素 ArrayDeque和LinkedList是Deque的两个通用实现,官方更推荐使用AarryDeque用作栈和队列; 初始化方法: Deque<Integer> stack = new LinkedList<Integer>(); Deque<String> stack = new ArrayDeque<String>();【首选这个,效率更高!】 接口分析: 双原创 2022-05-04 17:51:06 · 631 阅读 · 0 评论 -
Spring 依赖注入(DI)几种方式:【重点】【重点】【重点】【重点】【面试】【面试问不问你也得会啊】
构造器注入:构造器依赖注入通过容器触发一个类的构造器来实现的,该类有一系列参数,每个参数代表一个对其他类的依赖。【一般不用】 在构造调用者实例的同时,在构造方法中给属性赋值,完成被调用者的实例化。即,使用构造器设置依赖关系; 优点:对象初始化完成后便可获得可使用的对象; 缺点:当需要注入的对象很多时,构造器参数列表将会很长;不够灵活。若有多种注入方式,每种方式只需注入指定几个依赖,那么就需要提供多个重载的构造函数,麻烦; Spring容器会将每一个正在创建的 Bean 标识符放在一个"当前创建原创 2022-04-14 16:33:55 · 970 阅读 · 0 评论 -
请列举出在JDK中几个常用的设计模式?【知识点速查】【设计模式需要长期感悟】【重点】【面试】【自我提升】
单例模式(Singleton pattern): 保证一个类仅有一个实例,并提供一个访问它的全局访问点,同时确保只有单个对象被创建; java.lang.Runtime#getRuntime() java.awt.Desktop#getDesktop() java.lang.System#getSecurityManager() 工厂模式(Factory Pattern): 定义一个创建对象的接口,但由子类决定需要实例化哪一个类。工厂方法使得子类实例化的过程推迟; 主要解决接口选择原创 2022-04-13 20:05:52 · 1417 阅读 · 0 评论 -
Java死锁代码【代码】【很重点】产生死锁必须具备以下四个条件:【必会】
Java 发生死锁的根本原因是:在申请锁时发生了交叉闭环申请; 据说面试喜欢考; synchronized在开发中最好不要嵌套使用,容易导致死锁; public class DeadLock { public static void main(String[] args) { Object o1 = new Object(); Object o2 = new Object(); // t1和t2两个线程共享o1,o2 Thread t1 = new MyThread原创 2022-04-13 18:02:08 · 782 阅读 · 0 评论 -
从21个方面对比Redis与Memcached的异同【重点】【表格详细对比】【可能持续更新】
基于内存的数据库 都有过期策略 性能都很高 对比参数 Redis Memcached 数据库类型 支持内存 ; 非关系型数据库; 支持内存 ; 键值对形式 ; 缓存形式; 数据存储类型 Redis 支持更丰富的数据类型(支持更复杂的应用场景); Redi...原创 2022-04-08 22:03:03 · 1838 阅读 · 0 评论 -
约束(Constraint)SQL约束有哪几种?【常用的约束】【有例子】【非空约束】【唯一约束】【主键约束】【外键约束】【检查约束】
常用约束非空约束(not null):约束的字段不能为NULL;只有列级约束,没有表级约束(也就是说,只能约束某个字段值不为空); 唯一约束(unique):约束的字段不能重复;既有列级约束,也有表级约束; 主键约束(primary key):约束的字段既不能为NULL,也不能重复(简称PK);既有列级约束,也有表级约束; 外键约束(foreign key):...(简称FK); 检查约束(check):注意Oracle数据库有check约束,但是mysql没有,目前mysql不支持该约束;n原创 2022-04-03 21:41:38 · 1994 阅读 · 0 评论 -
Session、Cookie和Token的主要区别【重点】【表格对比版】【简洁清晰】【面试】
Cookie Session Token 存储位置 客户端 服务器 客户端(但产生在服务端) 安全性 较差 相对更高 比session更高 占用服务器资源 占用服务器资源消耗少 当访问多时,消耗服务...原创 2022-04-02 16:40:33 · 2221 阅读 · 0 评论 -
HTTP 与 HTTPS 的区别【6个】【重点】【面试】【必须会】
区别 HTTP超文本传输协议 HTTPS 协议 运行在 TCP 之上,明文传输,客户端与服务器端都无法验证对方的身份 添加了加密和认证机制的 HTTP。HTTPS 在 HTTP 与 TCP 层之间加入了 SSL/TLS 协议; 所以整体上是混合加密; 建立连接时候:https 比 http多了 TLS 的握手过程; 传输内容的时候:https 会把数据进行加密,通常是...原创 2022-04-01 22:10:40 · 891 阅读 · 0 评论 -
MySQL三大日志、redo log和bin log的区别【表格对比版】【清晰明了】【简介】【重点】【面试】
MySQL三大日志: 二进制日志 binlog(归档日志) 事务日志 redo log(重做日志) undo log(回滚日志)。 binlog的写入时机也非常简单,事务执行过程中,先把日志写到binlog cache,事务提交的时候,再把binlog cache写到binlog文件中。 redo log(重做日志)是InnoDB存储引擎独有的,它让MySQL拥有了崩溃恢复能力。原创 2022-04-01 17:58:00 · 1018 阅读 · 0 评论 -
交叉连接(笛卡尔积)、连接查询、内连接、外连接都有哪些,以及书写语法【详细】【有例子】【有代码】【基础】【重点】
连接查询是指多表联合查询原创 2022-04-01 17:14:35 · 3507 阅读 · 0 评论 -
计算机网络很常用的专有名词解释自测【计网专有名词速查】【如果发现有不会的,请重新看计算机网络】【全新2.0版本再升级】【持续更新...】
ARP(Address Resolution Protocol):地址解析协议,是根据IP地址获取物理地址的一个TCP/IP协议; RARP(Reverse Address Resolution Protocol):反向地址转换协议, 反向地址转换协议(RARP)允许局域网的物理机器从网关服务器的 ARP 表或者缓存上请求其 IP 地址; MSL:Maximum Segment Lifetime,报文最大生存时间,它是任何报文在网络上存在的最长时间,超过这个时间报文将被丢弃; TTL:IP头中有一个T原创 2022-03-31 20:31:17 · 1287 阅读 · 0 评论 -
TCP, UDP 协议的区别:【重点】【详细对比】【表格版】
TCP UDP 是否面向连接 面向连接(传输数据之前需要建立连接,传输结束需要关闭连接) 无连接(传输数据之前不需要建立连接,远程主机接收UDP报文也不需要返回确认) 服务对象个数 一对一 一对多 传输可靠性 可靠(可靠性体现在三次握手和四次挥手上),数据可以无差错、不丢失重复; ...原创 2022-03-30 21:27:09 · 2171 阅读 · 0 评论 -
ConcurrentHashMap 和 Hashtable 的区别【表格对比】【详细】【重点】
ConcurrentHashMap Hashtable 底层数据结构 JDK1.7的 ConcurrentHashMap 底层采用 Segment数组 + HashEntry数组 实现; JDK1.8 采用的数据结构跟HashMap1.8的结构一样,数组+链表/红黑二叉树 直接就是HashMap加上Synchronized 实现线程安全的方式 ...原创 2022-03-30 16:58:32 · 1169 阅读 · 0 评论 -
在Java中CycliBarriar 和CountdownLatch 有什么区别?【表格对比版】【详细】
这应该是结合了很多人的教程; CycliBarriar CountdownLatch 是否可以重复使用 可以重复使用 不可以重复使用 使用场景 一般用于一组线程互相等待至某个状态,然后这一组线程再同时执行 一般用于某个线程A等待若干个其他线程执行完任务之后,它才执行 具体使用场景 .原创 2022-03-30 14:15:21 · 1015 阅读 · 0 评论 -
sleep() 方法、wait() 方法和yield()方法区别:【重点中的重点】【表格对比版】【2.0版本】
sleep() wait() yield() 类 Thread类中 Object类 Thread类中的静态方法 作用对象 作用于当前线程 作用于对象本身 作用于当前线程 是否释放锁 不释放锁 释放锁...原创 2022-03-29 22:32:13 · 716 阅读 · 0 评论 -
集合(ArrayList、Vector、HashMap、Hashset、HashTable、PriorityQueue)扩容汇总【表格对比版】
这是开组会的时候,搞出来的表格! 初始化容量 扩容增量 加载因子 备注 ArrayList JDK1.7 之前 ArrayList 默认大小是 10 JDK1.7 之后是 0 ArrayList 每次扩容之后容量都会变为原来的 1.5 倍左右(oldCapacity 为偶数就是 1.5 倍,否则是 1.5 倍左右)! 奇偶不同,比如 :1原创 2022-03-29 22:08:36 · 915 阅读 · 0 评论 -
HashTable, HashMap,TreeMap区别【表格对比】【2.0版本】
HashTable HashMap TreeMap 安全性 安全 不安全(要保证线程安全的话就使用ConcurrentHashMap) 不安全 对Null key 和Null value的支持 在HashTable 中 put 进的键值只要有一个 null,直接抛NullPointerException...原创 2022-03-29 18:35:04 · 1637 阅读 · 0 评论 -
抽象类和接口的对比、抽象类(abstract class)和接口(interface)有什么异同?【详细】【超级重点】【就必须得会的】
明天学长面试,今晚跟学长互相提问,看了看如下内容,应该是结合了很多人的笔记,侵删!抽象类是用来捕捉子类的通用特性的。接口是抽象方法的集合。从设计层面来说,抽象类是对类的抽象,是一种模板设计,接口是行为的抽象,是一种行为的规范。抽象类: 抽象类和抽象方法都是用abstract关键字进行声明,如果一个类中包含抽象方法,那么这个类必须声明为抽象类。 抽象类不能被实例化,只能被继承。 接口: 在Java8之前,他可以看成是一个完全抽象的类,也就是说,他不能有任何的方法实现; 从java原创 2022-03-24 22:33:06 · 758 阅读 · 0 评论 -
如何保证缓存和数据库数据的一致性?【重点】【阿里云面试】
早上跟面试阿里云的学长沟通了一下,其中一个面试题如下针对先删除缓存再更新数据库的情况: 使用延时双删: 基本思路: 在写库前后都进行删除缓存操作,并且设置合理的超时时间 基本步骤: 先删除缓存–再写数据库—休眠一段时间—再次删除缓存 注:休眠的时间是根据自己的项目的读数据业务逻辑的耗时来确定的。这样做主要是为了保证在写请求之前确保读请求结束,写请求可以删除读请求造成的缓存脏数据。 该方案的弊端: 集合双删策略+缓存超时策略设置,这样最差的结果就是在超时时间内数据存在不一致,又增加原创 2022-03-07 15:14:14 · 1775 阅读 · 0 评论 -
Spring AOP and AspectJ AOP 有什么区别?【重点】【很详细并且清晰】
AspectJ Spring AOP AspectJ是静态代理的增强; 静态代理,是AOP框架会在编译阶段生成AOP代理类,因此也称为编译时增强,他会在编译阶段将AspectJ(切面)织入到Java字节码中,运行的时候就是增强之后的AOP对象; Spring AOP使用的动态代理(运行时增强); 动态代理就是AOP框架不会去修改字节码,而是每次运行时在内存中临时为方法生成一个AOP对象,这个AOP对象包含了目标对象的全...原创 2022-03-05 16:52:09 · 2121 阅读 · 0 评论