向日葵班学霸
码龄8年
关注
提问 私信
  • 博客:42,245
    动态:9
    42,254
    总访问量
  • 44
    原创
  • 722,885
    排名
  • 18
    粉丝
  • 0
    铁粉

个人简介:努力变强

IP属地以运营商信息为准,境内显示到省(区、市),境外显示到国家(地区)
IP 属地:北京市
  • 加入CSDN时间: 2016-12-23
博客简介:

向日葵班学霸的博客

博客描述:
我在夜间,张开翅膀,努力飞行。
查看详细资料
个人成就
  • 获得43次点赞
  • 内容获得55次评论
  • 获得156次收藏
创作历程
  • 23篇
    2020年
  • 21篇
    2019年
成就勋章
TA的专栏
  • java基础
    11篇
  • Spring
    1篇
  • 前端
    1篇
  • 设计模式
    13篇
  • 算法
    9篇
  • Java高并发
    7篇
  • netty
    2篇
兴趣领域 设置
  • 大数据
    mysqlredis
  • 后端
    spring架构
  • 搜索
    elasticsearch
  • 服务器
    linux
创作活动更多

超级创作者激励计划

万元现金补贴,高额收益分成,专属VIP内容创作者流量扶持,等你加入!

去参加
  • 最近
  • 文章
  • 代码仓
  • 资源
  • 问答
  • 帖子
  • 视频
  • 课程
  • 关注/订阅/互动
  • 收藏
搜TA的内容
搜索 取消

8、合并两个有序的单链表

步骤1、同时遍历两个链表,并取出节点作比较,根据不同的情况生成新的链表2、若有链表为空,则直接遍历另一个链表即可public class CombineLinked { private static Node head1; private static Node tail1; private static Node head2; private stat...
原创
发布博客 2020.02.26 ·
275 阅读 ·
1 点赞 ·
0 评论 ·
1 收藏

7、删除单链表倒数第n个节点

步骤1、假设链表长度为len,删除倒数第n个节点,那么节点的正数位置为:pos = len-n+12、所以可以用快慢指针,快指针先走n步,然后快慢指针一起移动,直到快指针为null,那么此时,慢指针走的步数为:len-n+1,也就是要删除的节点位置:public class DeleteOneNode { private static Node head; private...
原创
发布博客 2020.02.25 ·
341 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

6、通过数组创建单链表,并反转单链表

步骤1、尾部插入法创建链表2、自定义上一个节点、当前节点、下一个节点,遍历反转链表,主要是把当前节点的下一个节点设置为当前节点的上一个节点;public class ReverseLinkd { private static Node head; private static Node tail; public static void main(String[...
原创
发布博客 2020.02.16 ·
632 阅读 ·
0 点赞 ·
0 评论 ·
1 收藏

5、通过单链表判断数组存储的数据是否为回文

思路:1、通过快慢指针找到链表中间点;2、在快慢指针找中点过程中,通过头部插入法,把慢指针遍历的链表节点反转保存,生成新的链表,并根据链表长度的奇偶性分别处理;3、遍历反转后的链表和原链表,比较并判断是否为回文;public class HuiWen { //定义一个链表,存储需要判断的字符串,节点添加到尾部 private static Node head; ...
原创
发布博客 2020.02.15 ·
247 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

Java高并发(六):ReentrantLock

目录LockReentrantLockReentrantReadWriteLockStampedLockReentrantLockReentrantLock实现原理AQSLockJava中的Lock是J.U.C中的一个核心组件,J.U.C(java.util.concurrent)是在并发编程中常用的工具类,里面包含了很多在并发场景中使用的组件,比如线程池、阻塞队列、计时器、同步器、并发集合...
原创
发布博客 2020.02.06 ·
459 阅读 ·
1 点赞 ·
0 评论 ·
0 收藏

Java高并发(五):synchronized

目录synchronizedsynchronized
原创
发布博客 2020.01.22 ·
468 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

Java高并发(四):volatile

目录volatilevolatile如何保证可见性可见性本质硬件层面volatilevolatile主要是为了保证在多处理器下,共享变量的可见性。可见性在单线程的环境下不会出现问题;但是对于多线程,读写位于不同的线程中时,可能会发生线程读取到的数据不是其他线程写入的最新的值。然而volatile可以解决线程的可见性带来的问题volatile如何保证可见性当成员变量被volatil...
原创
发布博客 2020.01.21 ·
476 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

Java高并发(三):线程的基本使用和线程的状态

目录线程的应用继承Thread类实现Runnable接口实现Callable线程的生命周期NEWRUNNABLEBLOCKED1、等待阻塞2、同步阻塞3、其他阻塞TIME_WAITINGTERMINATED线程的启动原理线程的应用在Java中,有多种方式来实现多线程,比如继承Thread类,实现Runnable接口,使用ExecutorService、Future、Callable实现带返回...
原创
发布博客 2020.01.20 ·
121 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

设计模式十三:观察者模式

目录观察者模式代码示例观察者模式观察者模式(Observer Pattern)定义了对象之间一对多的依赖,让多个观察者对象同时监听一个主题对象,当主题对象发生变化时,它的所有观察者都会受到消息并作出更新,观察者模式属于行为型设计模式。观察者模式有时也被称为发布订阅模式。代码示例以消息通知为例,定义一个主题,也就是被观察者:public class Theme extends O...
原创
发布博客 2020.01.12 ·
112 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

设计模式十二:装饰者模式

目录装饰者模式代码示例装饰者模式装饰者模式(Decorator Pattern)是指在不改变原有对象的基础上,将功能附加到对象上,实现对原有对象功能的扩展,比继承更加灵活。装饰者模式属于结构型设计模式。装饰者模式的适用场景:1、用于扩展一个类的功能或给一个类添加附加功能2、动态的给一个类添加功能,同时这些功能可以动态的取消装饰者模式优点:1、比继承更加灵活,可以在不改变原有对象的基...
原创
发布博客 2020.01.12 ·
136 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

设计模式十一:适配器模式

目录适配器模式代码示例适配器模式适配器模式(Adapter Pattern)是指将一个类的接口转换为客所期望的另一个接口,使原来不兼容的接口类可以一块工作,属于结构型设计模式。适配器模式适用的业务场景:1、类已经存在,但是它的方法和需求不匹配(方法和结果相似或相同);2、随着产品的维护,由于不同产品或者商家造成功能类似但是接口不同的情况而采取的方案适配器模式优点:1、提高类的透明性...
原创
发布博客 2020.01.12 ·
156 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

设计模式十:模板模式

目录模板模式代码示例模板模式模板模式通常又被称为模板方法模式(Template Method Pattern),是指定义一个算法的骨架,并允许子类为一个或多个步骤提供实现。模板模式属于行为型设计模式。模板模式使用场景:一次性实现一个算法不变的部分,并将可变的行为留给子类来实现;子类中公共的行为被提取出来,并集中到一个公共的父类,避免了代码的重复。模板模式优点:提高代码的复用性和扩展性,符...
原创
发布博客 2020.01.12 ·
225 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

设计模式九:策略模式

目录策略模式代码示例策略模式策略模式(Strategy Pattern)是指定义了算法家族,分别封装起来,让它们之间可以相互替换。此模式让算法的变化不会影响到使用算法的用户。策略模式可以避免多分支的if…else…和switch语句策略模式的使用场景:一个系统需要动态的从几个算法中选择一种;或者一个系统中有很多类,而他们之间的区别仅仅在于行为不同。策略模式优点:符合开闭原则、避免大量的i...
原创
发布博客 2020.01.12 ·
185 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

设计模式八:委派模式

目录委派模式委派模式委派模式(Delegate Pattern)的基本作用就是负责任务的调度和分配,委派模式和代理模式很相似,委派模式可以看做是一种特殊情况下的静态代理的全权代理,但是,代理模式注重的是过程,委派模式注重的是结果,委派模式属于行为型模式。委派模式在Spring中应用十分广泛,比如DispatcherServlet就用到了委派模式,现在以生活中的实际场景为例,比如boss给l...
原创
发布博客 2020.01.12 ·
162 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

设计模式七:动态代理

目录动态代理JDK实现方式CGLib实现方式JDK和CGLib动态代理动态代理的思想其实是和静态代理是一致的,不过,动态代理的功能更加强大。随着业务的扩展,动态代理的适应性更强。动态代理有JDK和CGLib两种实现方式,我们分别来看一下:JDK实现方式还是以找对象为例,这次不是定义父母类,而是定义一个专业的婚介(媒婆):public class JDKMeiPo implemen...
原创
发布博客 2020.01.12 ·
124 阅读 ·
1 点赞 ·
0 评论 ·
0 收藏

设计模式六:静态代理

目录代理模式静态代理代理模式代理模式是指为其他对象提供一种代理,以控制对这个对象的访问,代理对象在客户端和目标对象之间起到了中介的作用,代理模式属于结构型设计模式,起到了对目标对象的保护和增强的作用。静态代理以当前社会状况为例,很多人都到了适婚年龄但是还不找对象,所以父母就展开行动为自己的子女寻找合适的对象,那么这个过程中,父母就可以看作是对子女的一种代理,代码如下:首先定义一个P...
原创
发布博客 2020.01.12 ·
131 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

设计模式五:原型模式

目录原型模式浅克隆深克隆原型模式原型模式是指:原型实例制定穿件对象的种类,并且通过拷贝这些原型创建新的对象。原型模式的适用场景:1、类初始化消耗资源较多2、new产生一个对象需要非常繁琐的过程(访问权限、数据准备等)3、构造函数比较复杂4、循环体中产生大量对象时浅克隆先写一个简单的示例,这里通过实现Cloneable的方式,代码如下,先创建一个实体类作为原型:@Gett...
原创
发布博客 2020.01.12 ·
180 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

Spring一:通过gradle构建Spring源码

目录1、源码下载:2、gradle3、编译Spring源码4、导入idea5、需要避免的一些坑1、源码下载:源码下载地址Spring5.0.2,下载好后解压,在根目录找到build.gradle文件打开,可以找到这段:可以看到要求的gradle版本是4.3.1。2、gradle输入地址gradle4.3.1,下载好后解压缩配置环境变量,新建GRADLE_HOME系统变量,值为gr...
原创
发布博客 2020.01.11 ·
542 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

设计模式四:单例模式

目录概述:1、饿汉式单例1.1、饿汉式单例2、懒汉式单例2.1、懒汉式单例2.2、双重校验锁2.3、静态内部类3、注册式单例3.1、枚举4、反射破坏单例4.1、反射破坏单例5、序列化破坏单例5.1、序列化破坏单例概述:单例模式是指确保任何一个类在任何情况下都绝对只有一个实例对象,拥有私有的构造方法,并提供一个全局访问点,主要适用场景:ServletContext、ServletConfig、...
原创
发布博客 2020.01.05 ·
152 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

4、利用数组实现LRU 缓存淘汰策略

常见的策略有三种:先进先出策略 FIFO(First In,First Out)、最少使用策略 LFU(Least Frequently Used)、最近最少使用策略 LRU(Least Recently Used)。使用链表实现LRU算法的方式很多,现在用数组也实现一下,话不多说上代码:public class LRU { private static String[] lruA...
原创
发布博客 2020.01.03 ·
1454 阅读 ·
2 点赞 ·
0 评论 ·
1 收藏
加载更多