Java
文章平均质量分 82
记录Java的常用知识
.joker.
这个作者很懒,什么都没留下…
展开
-
Spring问题——大白话总结(IOC、AOP、事务传播、Bean生命周期、循环依赖、自动装配原理等)
Spring框架问题总结Spring是什么?Spring框架中Bean生成带来的一系列问题选择构造函数?如何注入依赖的属性?单例bean和单例模式有什么联系?普通对象和bean对象的区别Spring AOP在这个过程的工作原理?Spring事务的一些问题事务的底层原理同类方法的调用为什么会事务失效?@Configuration注解的作用Spring的三级缓存解决循环依赖问题循环依赖问题如何解决SpringMVCDispatcherServlet原理Spring的事务传播机制什么叫事务传播?Spring是什原创 2022-03-31 16:27:15 · 930 阅读 · 0 评论 -
记录笔试的常见考点
Java笔试常考知识点原创 2022-08-17 00:09:36 · 206 阅读 · 1 评论 -
记leetcode 2022/5/29 每日一题String类的split方法的使用
String类的split方法源码分析原创 2022-05-29 17:46:38 · 309 阅读 · 0 评论 -
浅谈对Netty的认识
记录Netty的一些面试问题①谈谈对Netty的认识?②Netty有什么优点?③Netty的执行原理①谈谈对Netty的认识?Netty是建立在NIO的基础上,提供了更高层次抽象的网络通讯框架,它类似于Spring框架一样可以方便开发人员在两台不同的系统上传输信息。Netty通过配置可以实现单线程Reactor,多线程Reactor以及主从Reactor的三种线程模型。②Netty有什么优点?可以有灵活的配置,如配置Decoder解码方式来解决粘包问题。Netty使用transferTo方法实现原创 2022-05-22 22:14:38 · 584 阅读 · 0 评论 -
记刷选择题时遇到的两个问题:字符串相加问题以及父子类初始化的问题
问题字符串相加问题父子类初始化问题字符串相加问题题目:public class test { public static void main(String[] args) { String s = "ab"; //这个字符串常量之间的相加,编译器会对其进行优化,实际上s1 = "ab" , 指向的是常量池中的地址 String s1 = "a"+"b"; String a = "a"; String b = "b"原创 2022-04-22 16:20:37 · 379 阅读 · 1 评论 -
基于ReentrantLock实现的AQS原理
ReentrantLockAQS是什么?ReentrantLock是什么?调用ReentrantLock.lock()方法会发生什么?调用ReentrantLock.unlock()方法会发生什么?补充park和unpark机制Synchronized与ReentrantLock的区别AQS是什么?AQS:AbstractQueuedSynchronizer,抽象队列同步器,它主要由两个部分组成,一个由volatile修饰的state变量(代表共享的资源)和一个双向队列(用头节点和尾结点来表示)。AQ原创 2022-04-12 17:04:58 · 440 阅读 · 0 评论 -
Java8新特性
Java8新特性前言Java8新特性Lambda表达式函数式接口方法引用与构造器引用Stream流Optional类示例代码:前言最近在做笔试与看一些框架的底层源码的时候,会考察和使用到Java8的某些新特性,因此感觉系统地学习下Java8的新特性是很有必要的,于是有了这篇文章。Java8新特性Lambda表达式Lambda表达式是什么?Lambda表达式其实本质是一个匿名内部类,当某个接口只定义了唯一一个抽象方法(功能单一)时,我们就可以使用(参数) - > {抽象方法的实现} 来作为这原创 2022-04-08 11:27:24 · 78 阅读 · 0 评论 -
Java多线程手写代码——奇偶交替输出,123123循环输出、A1B2C3交替输出
多线程环境为什么wait()和notify()方法一定要搭配synchronized关键字才可以使用wait()方法notify()方法代码奇偶交替输出123123循环输出A1B2C3交替输出为什么wait()和notify()方法一定要搭配synchronized关键字才可以使用因为如果不加synchronized关键字,会导致程序代码在多线程下,代码执行顺序混乱的问题。如在A1B2C3交替输出的场景下: 如果不加synchronized关键字,两个线程同时执行,假如都执行到LOCK.wait()方原创 2022-03-29 20:52:44 · 863 阅读 · 1 评论 -
2022/3/29 leetcode每日一题——滑动窗口解法
滑动窗口解法最大连续1的个数 II最大连续1的个数 Ⅲ每日一题——考试的最大困扰度滑动窗口模板我们本次解析滑动窗口解法是从3道leetcode题,由浅入深慢慢去理解,最后得出滑动窗口这一类题目的解题模板。滑动窗口解法,又称为“虫取法”。因为它的过程就很像虫的蠕动的过程。左边界不动,右边界不断增大,就像虫的尾部不动,头部不断伸长。右边界不动,左边界不断增大,就像虫的头部不动,尾部慢慢跟上来一样。滑动窗口的中心思想:定义左右两个指针,左右指针之间的空间称为区间。右指针不断增大,当增大到区间内的值不满足题目要原创 2022-03-29 13:02:53 · 851 阅读 · 1 评论 -
一文解决JVM常量池问题
常量池问题常量池是什么常量池的位置intern方法介绍字符串常量池的例子Java基本类型封装类常量池常量池是什么说到常量池,我们一般在JVM中把常量池分为运行时常量池和 字符串常量池。运行时常量池:用于存放编译时期生成的各种字面量和符号引用。字面量: 类似于我们平常说的常量,如String s = "“bb” , 字符串"bb"就是字面量。 还有就是final修饰的变量。符号引用:类及其实现的接口的全限定名(如String类的全限定名就是java.lang.String)和变量的名称和类型,方法的原创 2022-03-26 17:19:30 · 515 阅读 · 0 评论 -
用Concurrent包下的BlockingQueue阻塞队列实现生产者消费者模型
生产者与消费者模型Concurrent包阻塞队列简单实现阻塞队列以及put()方法和take()方法生产者类消费者类测试结果Concurrent包java.util.concurrent包下主要包括5个部分(《Java并发编程的艺术》这书对这5个部分都有介绍,感兴趣的朋友可以去阅读):①Collection集合类:包括并不限于ConcurrentHashMap,BlockingQueue等等。②lock的实现类:ReentrantLock 类,读写锁,condition等。③util类:如Coun原创 2022-03-20 17:04:27 · 498 阅读 · 1 评论 -
关于ThreadLocal,ThreadLocalMap,Thread的关系
ThreadLocal、ThreadLocalMap、Thread什么是ThreadLocal?ThreadLocal原理get方法set方法ThreadLocal、Thread、ThreadLocalMap三者的关系Hash冲突问题内存泄漏问题为什么会发送内存泄漏 ?如何解决内存泄漏问题?什么是ThreadLocal?官方解释:ThreadLocal是一个本地线程副本变量工具类,主要用于将私有线程和该线程存放的副本对象做一个映射,各个线程之间的变量互不干扰。白话:ThreadLocal就是给每个线程原创 2022-03-19 01:40:37 · 1009 阅读 · 0 评论 -
2022/3/17leetcode每日一题——词典中最长的单词(字典树解法)
leetcode第720题——词典中最长单词leetcode题目:常规解法:排序+HashSet排序+字典树(前缀树)解法什么是字典树字典树的应用场景回归题目leetcode题目:给你一个字符串数组words,请你找出words中最长的一个单词且该单词要是由数组中其他单词添加一个字母而来的。若其中有多个可行的答案,则返回答案中字典序最小的单词。若无答案,则返回空字符串。例子:输入:words = [“w”,“wo”,“wor”,“worl”, “world”]输出:“world”解释: 单词"wo原创 2022-03-17 16:44:17 · 810 阅读 · 0 评论 -
Redis——总结(大白话)
Redis——总结Redis 与 Memcached的区别Redis的5种数据类型(重要!!!)Redis事务Redis持久化(重要!!!)Redis主从复制Redis集群模式Redis的应用问题缓存穿透缓存击穿缓存雪崩缓存一致性问题(重要!!!)Redis分布式锁的实现Redis 与 Memcached的区别Memcached从名字上看就能看出其实它也是一个高性能的内存缓存,那么它与Redis的区别在哪呢?①Redis支持多数据类型,如String,List,Hash等,Memcached只支持St原创 2022-03-14 15:48:45 · 1805 阅读 · 0 评论 -
IO多路复用原理(大白话,通俗易懂)
IO多路复用原理BIONIOIO多路复用之select模型和poll模型IO多路复用之epoll模型Reactor模型IO多路复用技术:讲IO多路复用技术之前,我们得先了解NIO和BIO。BIOBIO (Block IO):同步阻塞IO。一般我们传统的JDK内置的Socket编程就是阻塞IO。其底层流程是:①创建socket接口,号为x,通过bind函数将接口号与端口号进行绑定,然后进行listn监听事件或者是read读事件,且会一直阻塞在该命令,直到有客户端连接或者发送数据。缺点:如果是在单线程原创 2022-03-12 23:39:19 · 30913 阅读 · 5 评论 -
由leetcode215题引发的快排思考
leetcode题目leetcode215题 : 数组中的第K个最大元素题目:给定整数数组 nums 和整数 k,请返回数组中第 k 大的元素。解析:可以调API,但调API方法就会导致有多余的操作。我们这里可以简化api方法,并不需要把整个数组完全排序后再返回对应位置的值。正确的代码如下: public int findKthLargest(int[] nums, int k) { //快排——每次确定一个元素的位置 k = nums.length-k;原创 2022-03-10 15:30:13 · 382 阅读 · 1 评论 -
JVM内存结构与GC调优
Java虚拟机JVM内存模型GC机制什么时候进行GC?可达性分析算法引用GC算法GC垃圾收集器查看JVM使用情况与GC调优JVM内存模型目前使用最广泛的是hotspot虚拟机。Java7跟Java8的内存模型的区别在于Java7的时候方法区是存有一块空间,而Java8是把这块空间取消掉,改成整个运行时数据区都为元空间,没有属于方法区的特定一块空间,方法区之间使用物理内存。这样就不会因为方法区不够空间而爆OOM,除非物理内存没了。由于Java8使用最为广泛,下面对Java8中各个区域进行分析:虚拟机原创 2022-03-09 22:46:01 · 379 阅读 · 0 评论 -
《Java并发编程的艺术》——Volatile关键字与Synchronized关键字
Java并发编程的艺术Volatile关键字的原理Volatile关键字的内存语义单例模式下的双重锁为什么要volatile?volatile关键字不适合用于i++操作的原因:Synchronized关键字锁升级的过程Volatile关键字的原理提到volatile关键字, 就不得不提两个关键词:JMM内存模型:JMM定义了线程和主内存之间的抽象关系:共享变量存储在主内存(Main Memory)中,而每个线程都有一个私有的内部缓存(Local Memory),内部缓存保存了被该线程使用到的变量的主内原创 2022-03-08 16:56:24 · 294 阅读 · 0 评论