自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

萝卜代码

公众号:萝卜代码

  • 博客(75)
  • 收藏
  • 关注

原创 Spring源码分析:IOC

@Overridepublic void refresh() throws BeansException, IllegalStateException { //上锁,保证refresh()方法的同步操作,使启动或销毁容器操作不会同时进行 synchronized (this.startupShutdownMonitor) { // 1. 准备工作,记下容器的启动时间、标记'已启动'状态、...

2019-08-13 12:21:44 273

原创 源码分析BlockingQueue实现(jdk1.8)

BlockingQueueBlockingQueue常常运用于线程池的阻塞队列中,顾名思义,它能够作为一个具有阻塞作用的先进先出队列。BlockingQueue 对插入操作、移除操作、获取元素操作提供了四种不同的方法用于不同的场景中使用:1、抛出异常;2、返回特殊值(null 或 true/false,取决于具体的操作);3、阻塞等待此操作,直到这个操作成功;4、阻塞等待此操作,直到成功或者超...

2019-07-30 10:04:35 219

原创 源码分析ConcurrentHashMap(jdk1.7 和jdk1.8)

JDK1.7 ConcurrentHashMap图示结构图片来源于https://www.javadoop.com/post/hashmap]初始化ConcurrentHashMap的初始化是个懒加载的过程:实例化ConcurrentHashMap时只新建了Segment数组并初始化了s[0],真正对Segment其他位置的初始化要等到put操作才执行 @SuppressWarni...

2019-07-27 16:01:29 490

原创 源码分析AbstractQuenedSynchronized(三)

第一篇:源码分析AbstractQuenedSynchronized(一)第二篇:源码分析AbstractQuenedSynchronized(二)文章目录CountDownLatch数据结构模板方法ReentrantLockReentrantLock获得公平锁ReentrantLock释放公平锁公平锁和非公平锁公平锁的争锁过程非公平锁的争锁过程总结结合AQS分析JDK并发包中的几个非常有...

2019-06-23 13:32:53 176

原创 源码分析AbstractQuenedSynchronized(二)

上一篇:源码分析AbstractQuenedSynchronized(一)公平锁和非公平锁公平锁的争锁过程 static final class FairSync extends Sync { //争锁 final void lock() { acquire(1); }/*========调用父类AQS的acqu...

2019-06-15 22:30:52 135

原创 源码分析AbstractQuenedSynchronized(一)

AbstractQuenedSynchronized该类是一个抽象类,简称AQS,是Java并发包的基础工具类,是实现ReentrantLock、CountDownLatch、Semaphore、FutureTask等类的基础。数据结构双向队列,结点Node包含:pre+next+thread+waitStatus static final class Node { ...

2019-05-26 18:49:08 351

原创 SpringBoot项目配置多数据源(使用SpringDataJpa前提下添加JdbcTemplate连接vertica)

SpringBoot项目配置多数据源(使用SpringDataJpa前提下添加JdbcTemplate连接vertica)

2022-02-18 11:18:56 1410

原创 Redis学习笔记

目录Redis 跳表结构Redis为什么是线程安全的?Redis 跳表结构跳表结构在Redis中主要有两个用途: (1) 实现有序集合键 (2) 在集群结点中用作内部数据结构跳表的数据结构由zskiplistNode和zskiplist构成zskiplist 存储着跳表的头结点、尾结点、跳表长度和跳表最大层数zskiplistNode作为构成跳表的结点,每个zskiplistNode都有这些属性:层(层中又包含着前进指针和跨度)、后退指针、成员对象和分值每个跳表结点的层高都是1到32之间的随

2021-11-21 23:09:25 554

原创 工作中遇到的坑

后端向前端传入LinkedHashMap的数据,前台会对key重新进行排序,将key为纯数字的键值对排在最前面。若在前端严格要求Map键值对的顺序,建议后端传入List。 Js遍历map对象,使用forEach方法,在循环体中return,后续逻辑可能仍会继续执行,使用for(var[key,value] of mapObject)可解决此问题。...

2021-11-21 20:50:40 247

转载 VS2015生成.c文件生成动态链接库以及调用

转载:https://blog.csdn.net/nienelong3319/article/details/81357459 本人VS2015+WIN10测试环境 ,接下来介绍如何.c文件生成动态链接库以及调用 生成动态链接库1.创建工程,选择WIN32控制台应用程序2.点击下一步3.选...

2020-03-05 22:25:53 1358

原创 非科班Java小白的我在这一年里是如何学习的

由于有很多学弟都向我咨询这一年来的经验,因此决定记录下来供大家参考,祝愿大家最后都能拿到自己想要的offer ! 下面分几个阶段作下介绍。文章目录一、决定转行二、基础学习三、尝试做项目四、巩固基础五、实习一、决定转行相关背景:作者本科毕业于重庆大学机械设计制造及其自动化专业,现在就读于华中科技大学机械科学与工程学院机械工程专业。本人有转互联网的想法是在大三暑假保研的时候萌生的,可能有很多读者...

2019-11-11 10:32:43 1253

原创 学习资料总结

作者用一年的时间从传统机械专业转到互联网行业,专注于Java后端技术,拿到了阿里巴巴、美团、携程、华为消费者bg、贝壳找房等公司的意向书,相信你也可以!这里列出了作者一年来学习所用到的资料,一些资料可以直接通过网络链接找到,另外一些比较大的视频资源作者将其整理在百度云盘中,希望能够帮到大家,链接在文章末尾,欢迎自取~JavaSe基础视频:《传智播客_毕向东35天》书籍:《Head Firs...

2019-10-11 22:55:35 505 2

原创 LeetCode题目4. 寻找两个有序数组的中位数

LeetCode题目4. 寻找两个有序数组的中位数给定两个大小为 m 和 n 的有序数组 nums1 和 nums2。请你找出这两个有序数组的中位数,并且要求算法的时间复杂度为 O(log(m + n))。你可以假设 nums1 和 nums2 不会同时为空。示例1nums1 = [1, 3]nums2 = [2]则中位数是 2.0示例2nums1 = [1, 2]nums2...

2019-09-09 22:10:21 265

原创 Netty 源码分析

Netty 中的异步编程: Future 和 PromiseFuture首先看看Java.util.Concurrent包下的Future接口,其有以下声明方法:Netty中的Future接口(同名)继承了JDK中的Future接口,然后添加了一些方法package io.netty.util.concurrent;import java.util.concurrent.TimeU...

2019-08-31 16:48:27 290

原创 LeetCode题目46. 全排列

LeetCode题目46. 全排列给定一个没有重复数字的序列,返回其所有可能的全排列。示例1输入: [1,2,3]输出:[[1,2,3],[1,3,2],[2,1,3],[2,3,1],[3,1,2],[3,2,1]]完整代码class Solution { private List<List<Integer>> ansList; ...

2019-08-27 22:54:21 187

原创 LeetCode题目47. 全排列II

LeetCode题目47. 全排列II给定一个可包含重复数字的序列,返回所有不重复的全排列。示例1输入: [1,1,2]输出:[[1,1,2],[1,2,1],[2,1,1]]完整代码class Solution { private List<List<Integer>> ansList; public List<List...

2019-08-27 22:52:29 122

原创 LeetCode题目72. 编辑距离

LeetCode题目72. 编辑距离给定两个单词 word1 和 word2,计算出将 word1 转换成 word2 所使用的最少操作数 。你可以对一个单词进行如下三种操作:插入一个字符删除一个字符替换一个字符示例1输入: word1 = “horse”, word2 = “ros”输出: 3解释:horse -> rorse (将 ‘h’ 替换为 ‘r’)rors...

2019-08-21 21:54:34 250

转载 堆外内存 之 DirectByteBuffer 详解

堆外内存堆外内存是相对于堆内内存的一个概念。堆内内存是由JVM所管控的Java进程内存,我们平时在Java中创建的对象都处于堆内内存中,并且它们遵循JVM的内存管理机制,JVM会采用垃圾回收机制统一管理它们的内存。那么堆外内存就是存在于JVM管控之外的一块内存区域,因此它是不受JVM的管控。在讲解DirectByteBuffer之前,需要先简单了解两个知识点jav...

2019-08-18 21:58:08 1072

原创 剑指Offer题目:序列化二叉树

剑指Offer题目:序列化二叉树题目描述请实现两个函数,分别用来序列化和反序列化二叉树二叉树的序列化是指:把一棵二叉树按照某种遍历方式的结果以某种格式保存为字符串,从而使得内存中建立起来的二叉树可以持久保存。序列化可以基于先序、中序、后序、层序的二叉树遍历方式来进行修改,序列化的结果是一个字符串,序列化时通过 某种符号表示空节点(#),以 ! 表示一个结点值的结束(value!)。二叉树的...

2019-08-18 16:23:39 188

原创 剑指Offer题目:对称的二叉树

剑指Offer题目:对称的二叉树题目描述请实现一个函数,用来判断一颗二叉树是不是对称的。注意,如果一个二叉树同此二叉树的镜像是同样的,定义其为对称的。解题思路思路:(1) 递归。根结点的左右子结点值相同,同时左子结点的左子结点和右子结点的右子结点值相同,左子结点的右子结点和右子结点的左子结点值相同即可。(2)也可以采用非递归思路,利用队列或者栈实现。完整代码public cla...

2019-08-17 17:22:56 195

原创 剑指Offer题目:删除链表中重复的结点

剑指Offer题目:删除链表中重复的结点题目描述在一个排序的链表中,存在重复的结点,请删除该链表中重复的结点,重复的结点不保留,返回链表头指针。 例如,链表1->2->3->3->4->4->5 处理后为 1->2->5解题思路思路:利用双指针,首先建立一个虚拟头结点vroot,然后设置两个指针pre和curpre指向确定不会重复的结点,...

2019-08-17 15:53:45 230

原创 Spring源码分析总结

文章目录IOCApplication的继承关系容器的启动过程AOPSpring对AOP的支持基于xml配置的AOP模式基于注解驱动的AOP模式IOCApplication的继承关系ApplicationContext的实现类图片来源于https://www.javadoop.com/post/spring-iocApplicationContext的父接口图片来源于https...

2019-08-16 15:44:34 199

转载 Spring源码分析:AOP

之前写过 IOC 的源码分析,那篇文章真的有点长,看完需要点耐心。很多读者希望能写一写 Spring AOP 的源码分析文章,这样读者看完 IOC + AOP 也就对 Spring 会有比较深的理解了。今天终于成文了,可能很多读者早就不再等待了,不过主要为了后来者吧。本文不会像 IOC 源码分析那篇文章一样,很具体地分析每一行 Spring AOP 的源码,目标读者是已经知道 Spring IO...

2019-08-16 14:56:18 112

原创 剑指Offer题目:链表中环的入口结点

剑指Offer题目:链表中环的入口结点题目描述给一个链表,若其中包含环,请找出该链表的环的入口结点,否则,输出null。解题思路有两种做法做法一利用快慢指针的进度关系找到规律:假设环长度为n,进入环之前结点个数为x;slow在环内走到第k个结点,绕环走了s圈;fast绕环走了f圈,则有2(x+sn+k)=x+fn+k 可以得出x =(f-2sn) - k。此时slow距入口结点...

2019-08-15 17:19:06 225

原创 剑指Offer题目:表示数值的字符串

剑指Offer题目:表示数值的字符串题目描述请实现一个函数用来判断字符串是否表示数值(包括整数和小数)。例如,字符串"+100",“5e2”,"-123",“3.1416"和”-1E-16"都表示数值。 但是"12e",“1a3.14”,“1.2.3”,"±5"和"12e+4.3"都不是。解题思路主要分析 ‘E/e’、‘+/-’、’.'出现的时机,O(n)时间复杂度搞定 ‘E/e’:...

2019-08-15 15:53:40 108

转载 Spring AOP 使用介绍

前面写过 Spring IOC 的源码分析,很多读者希望可以出一个 Spring AOP 的源码分析,不过 Spring AOP 的源码还是比较多的,写出来不免篇幅会大些。本文不介绍源码分析,而是介绍 Spring AOP 中的一些概念,以及它的各种配置方法,涵盖了 Spring AOP 发展到现在出现的全部 3 种配置方式。由于 Spring 强大的向后兼容性,实际代码中往往会出现很多配置混...

2019-08-15 11:38:21 129

原创 剑指Offer题目:正则表达式匹配

剑指Offer题目:正则表达式匹配题目描述请实现一个函数用来匹配包括’.‘和’‘的正则表达式。模式中的字符’.‘表示任意一个字符,而’'表示它前面的字符可以出现任意次(包含0次)。 在本题中,匹配是指字符串的所有字符匹配整个模式。例如,字符串"aaa"与模式"a.a"和"abaca"匹配,但是与"aa.a"和"ab*a"均不匹配解题思路使用递归的思想每一步递归中都判断模式的第2位字符是...

2019-08-14 20:26:47 109

转载 Java网络编程(七):浅谈 Linux 中 Selector 的实现原理

概述Selector是NIO中实现I/O多路复用的关键类。Selector实现了通过一个线程管理多个Channel,从而管理多个网络连接的目的。Channel代表这一个网络连接通道,我们可以将Channel注册到Selector中以实现Selector对其的管理。一个Channel可以注册到多个不同的Selector中。当Channel注册到Selector后会返回...

2019-08-08 15:51:40 626 1

转载 Java网络编程(六):I/O 多路复用入门——select/poll/epoll

Linux epoll实现原理详解在linux 没有实现epoll事件驱动机制之前,我们一般选择用select或者pol...

2019-08-08 15:32:56 1544

转载 Java网络编程(五):Java 非阻塞 IO 和异步 IO

上一篇文章介绍了 Java NIO 中 Buffer、Channel 和 Selector 的基本操作,主要是一些接口操作,比较简单。本文将介绍非阻塞 IO 和异步 IO,也就是大家耳熟能详的 NIO 和 AIO。很多初学者可能分不清楚异步和非阻塞的区别,只是在各种场合能听到异步非阻塞这个词。本文会先介绍并演示阻塞模式,然后引入非阻塞模式来对阻塞模式进行优化,最后再介绍 JDK7 引...

2019-08-08 15:28:19 651

转载 Java网络编程(四):浅析Java NIO包中的Buffer、Channel 和 Selector

本文将介绍 Java NIO 中三大组件 Buffer、Channel、Selector 的使用。本来要一起介绍非阻塞 IO 和 JDK7 的异步 IO 的,不过因为之前的文章真的太长了,有点影响读者阅读,所以这里将它们放到另一篇文章中进行介绍。Bufferposition、limit、capacity初始化 Buffer填充 Buffer提取 Buffer...

2019-08-08 15:22:38 134

转载 Java网络编程(三):JAVA NIO 构建I/O多路复用的请求模型

JAVA NIO 一步步构建I/O多路复用的请求模型转自:https://github.com/jasonGeng88...

2019-08-08 14:58:35 323

原创 Java网络编程(二):原生Socket通信机制

文章目录前言Socket编程TCP通信客户端服务端UDP通信客户端服务端前言学习Java网络编程的过程中,一开始都是利用Java的原生Socket来练手的,后面才知道它们的I/O模型属于BIO模型,即同步阻塞I/O模型。下面利用原生socket实现TCP连接通信和UDP通信的demo。Socket编程socket是操作系统提供的网络编程接口,它封装了TCP/IP协议栈的支持,属于应用层和传...

2019-08-08 11:17:40 436

转载 Java网络编程(一):五种I/O模型

...

2019-08-08 10:39:29 452

转载 SpringBoot常见面试题

转载:https://blog.csdn.net/zl1zl2zl3/article/details/83715633 ...

2019-08-05 17:19:04 143

转载 日志框架logback的介绍和配置使用

logback的使用和logback.xml详解 一、logback的介绍Logback是由log4j创始人设计的另一个开源日志组件,官方网站: http://logback.qos.ch。它当前分为下面下个模块:logback-core:其它两个模块的基础模块logback-classic:它是log4j的一个改良版本,同时它完整实现了slf4j API使你可以很方便地更...

2019-06-24 17:12:46 136

原创 剑指Offer题目:重建二叉树

剑指Offer题目:重建二叉树题目描述输入某二叉树的前序遍历和中序遍历的结果,请重建出该二叉树。假设输入的前序遍历和中序遍历的结果中都不含重复的数字。例如输入前序遍历序列{1,2,4,7,3,5,6,8}和中序遍历序列{4,7,2,1,5,3,8,6},则重建二叉树并返回。解题思路先序遍历顺序:根结点>左子结点->右子结点中序遍历顺序:左子结点->根结点->右子...

2019-06-07 22:14:39 176

原创 IDEA常用快捷键总结

CRTL+F7: 查看方法在哪里被调用CRTL+ALT+B:查看实现类CRTL+H:查看当前类的继承关系CRTL+ALT+U: 小窗口显示UML类图CRTL+SHIFT+ALT+U:大窗口显示UML图SHIFT+SHIFT:全局搜索...

2019-06-04 19:13:19 157

原创 LeetCode51. N皇后

LeetCode题目51. N皇后n 皇后问题研究的是如何将 n 个皇后放置在 n×n 的棋盘上,并且使皇后彼此之间不能相互攻击。上图为 8 皇后问题的一种解法。给定一个整数 n,返回所有不同的 n 皇后问题的解决方案。每一种解法包含一个明确的 n 皇后问题的棋子放置方案,该方案中 ‘Q’ 和 ‘.’ 分别代表了皇后和空位。示例1输入: 4输出: [[".Q…", // 解法...

2019-06-02 21:01:48 482

转载 消息中间件(二):MQ(消息队列)具体应用场景举例

一、消息队列概述消息队列中间件是分布式系统中重要的组件,主要解决应用解耦,异步消息,流量削锋等问题,实现高性能,高可用,可伸缩和最终一致性架构。目前使用较多的消息队列有ActiveMQ,RabbitMQ,ZeroMQ,Kafka,MetaMQ,RocketMQ...

2019-05-23 11:22:49 823

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除