自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(46)
  • 资源 (1)
  • 收藏
  • 关注

原创 面试官:可以聊聊有关数据库的优化吗?

刁钻面试官一、你怎么看待数据库优化这件事?一、你怎么看待数据库优化这件事?        

2021-07-28 18:21:51 1528 2

原创 Java线程池详解(执行原理、拒绝策略、Executors三种线程池对比)

线程池,顾名思义,存放线程的池子,线程池的创建与管理是需要消耗一定的资源的,现在假设一个场景,在你的程序中,存在一些高并发的任务,而且任务执行时间往往都不长,那你就需要频繁的创建与销毁线程,这样对服务器资源来说是极大的浪费,如果采用线程池,将线程提前创建好,用的时候直接拿,不用的时候放回去,则会节省很多资源。当然线程池不仅仅能维护好线程,并且能根据不同的场景定制化不同的线程池,线程数量也有弹性,还能维护需要执行的任务,下面我们来详细探讨。

2023-04-13 18:48:39 1119 6

原创 DCL 单例模式是否需要volatile?

DCL单例模式是否需要volatile修饰

2023-02-17 14:28:02 964 10

转载 wait原理的讨论

synchronized关键字的wait方法的原理;ReentrantLock的wait底层原理;waiting与blocking状态剖析;EntryList与WaitSet剖析

2022-08-19 11:36:21 523

原创 ScheduledExecutorService详解

有线程池的特性,也可以实现任务循环执行,可以看作是一个简单地定时任务组件,因为有线程池特性,所以任务之间可以多线程并发执行,互不影响,当任务来的时候,才会真正创建线程去执行我们在做一些普通定时循环任务时可以用它,比如定时刷新字典常量,只需要不断重复执行即可,这篇文章讲解一下它的用法以及注意事项,不涉及底层原理。...

2022-08-15 16:45:52 32540 12

原创 SpringBoot集成Shardingjdbc+seata AT模式

SpringBoot集成shardingjdbc+seata-AT,分布式事务案例

2022-08-12 18:00:39 4053 8

原创 Java获取当前时间的上一年、下一年、上个月、下个月、前一天等(时间格式化)

类,而且具有相同的规律,会一个,就都会了,下面是获取当前时间下一年的前一天的示例,一般用于生成年账单,比如年账单时间是2022-08-11到2023-08-10。类拿到我们需要的任意类型的时间,也可以用它获取单个的年、月、日,类,我们可以先用上面代码获取到所需要的时间,然后再用。那最开始我们要获取的当前时间的下一年的前一天,再用。中获取昨天、明天、去年,上一个小时等等都需要用到。例如我们要获取当前时间的天,则可以直接调用上述。,其余均一致,获取年月日时分秒则传。中,要对时间类型格式化都会用到。...

2022-08-11 14:27:04 16518

原创 SpringBoot默认开启AOP,采用Cglib代理方式?(Spring AOP快速入门)

Spring AOP快速入门,为何SpringBoot不需要手动开启AOP功能?

2022-07-20 18:43:02 4711

原创 Redis底层数据结构详解(二)

Redis底层数据结构一、整体结构1. 类型:type属性2. 编码:encoding属性3. *ptr指针二、字符串对象(包含三种数据结构)① embstr结构② int结构③ raw结构raw与embstr有什么区别呢?面试题:Redis中字符串的value最大不能超过多少呢?三、list对象四、hash对象五、set对象六、zset对象上篇文章介绍了Redis底层涉及到的各类数据结构,但只知道底层我们无法更系统地了解Redis底层到底是如何设计与实现的,今天这篇文章,是基于上一篇文章的,相当于是从

2021-12-22 17:48:59 903

原创 Redis底层数据结构详解(一)

《Redis底层原理、Redis详解》该篇章分为两部分,第一部分介绍Redis底层数据结构,第二部分介绍Redis五大数据类型与Redis底层数据结构的关系,包括原理,优势与劣势,每种数据类型什么情况下该使用什么数据结构以及调优参数等等,使读者深入了解Redis。本文为第一部分,主要介绍了Redis底层的六种数据结构,帮助读者理解隐藏在Redis五大数据类型背后的数据结构

2021-12-21 18:19:38 1433

原创 Java大厂面试总结(包含面试题)

我是一名20年毕业生,至今毕业已经一年出头,算上实习经历,也只有一年半的工作经验,而且我并没有选择在金九银十的时候去找工作,机会不是很多,加上资历尚浅,找工作其实还蛮难的。我从今年11月1开始看机会,一直到今天,手里也拿了不少offer,但并没有收获大厂,很遗憾。今天这篇文章也说下最近面试的一些问题吧,大家可以提前做准备(最后会凭记忆奉上面试题)1. 简历问题简历不需要追求完美,你需要考量的是,你写的简历是否跟你当前阶段的资历与能力所匹配,即使你什么都会,也不要什么都往上写,我的前领导告诉我,你什.

2021-11-26 11:26:20 1098

原创 多线程必备基础

多线程基础1、概念1.1 什么是线程1.2 线程的创建与运行1.3 死锁1.4 守护线程与用户线程1.5 Join、Yield、Sleep1.5.1 join1.5.2 Sleep1.5.3 Yield1.5.4 wati、join、sleep、yield总结2、 ThreadLocal3、 InheritableThreadLocal4、 多线程其他基础4.1 理解并发与并行4.2 Java中线程安全问题4.3 Java中共享变量的内存可见性问题1、概念1.1 什么是线程  &n

2021-09-26 15:36:41 359

原创 算法(一):二分查找Java版

一、思路        二分查找需要在具有索引的有序序列集合上进行操作。首先二分查找需要维护左中右三个索引,假设现在有一个升序序列,首先以序列第一位为左左索引,最后一个为右索引,以左右平均数为中索引,每次取出中索引的数与查找目标作比较,如果中索引的元素小于目表元素,则需要去大于中索引的搜索空间搜索,将中索引加1赋值给左索引,重复上述比较操作,直到查到目表或左索引大于右索引为止。二、代码1. 循环版本/** * 常规循

2021-09-22 15:54:16 150

原创 NIO多路复用底层原理(Select、Poll、EPoll)

NIO一、NIO概述1. BIO2. NIO二、文件描述符三、Select、Poll、EPoll1. Select2. Poll模型3. EPoll模型四、总结1. 大致过程如下:一、NIO概述1. BIO        BIO,即Blockig IO,阻塞IO,一个线程对应一个连接,如果你的服务器有很多用户,每个用户都需要与你的服务器建立一个连接,那么你有多少用户,你的服务器就得创建多少个线程,显然是不显示的,而且每个线

2021-09-06 17:46:47 4551 1

转载 面试干货11——ThreadLocal原理(存储原理、内存泄漏)

本文为转载文章,在转载基础上多加了张结构图作者:ingxin链接:https://www.jianshu.com/p/3c5d7f09dfbdThreadLocal        ThreadLocal使用方法很简单static final ThreadLocal<T> sThreadLocal = new ThreadLocal<T>();sThreadLocal.set(t)sThr.

2021-08-27 15:59:46 689

原创 面试干货10——聊一聊Redis的应用吧!(实现分布式锁、缓存、抽奖、热搜、点赞、商品筛选..)

Redis这样用一、String类型1. 对String类型的理解2. 常用命令如下3. 应用场景① 分布式锁② 缓存设计③ 全局唯一序列号、计数器(value为Numbers类型)④ 判断大数据量包含(在线用户数量统计、布隆过滤器)(bit类型)二、hash哈希结构1. 对hash结构的理解2. 常用命令3. 应用场景① 缓存设计② 购物车实现三、List结构1. 对list结构的理解2. 常用命令3. 应用场景① 消息队列实现② 关注的最新消息列表(微信朋友圈、抖音我的关注的视频)四、Set数据结构1.

2021-08-19 18:48:02 1123

原创 面试干货9——synchronized的底层原理

synchronized底层原理推荐:在准备面试的同学可以看看这个系列一、synchronized的用法问题1:synchronized为什么只能锁引用类型?二、对象在内存中的布局究竟是什么样的1. 所有引用类型对象都有如下布局:2. 数组类型有如下布局:3. 详细的布局图如下:三、synchronized的底层原理1. JDK1.6之前的synchronized是怎样的?2. JDK1.6及以后synchronized是如何实现的① 偏向锁② 轻量级锁③ 重量级锁推荐:在准备面试的同学可以看看这个系列

2021-08-17 18:27:38 2007 8

原创 面试干货7——刁钻面试官:关于redis,你都了解什么?

面试高频问题一、问题1:1. 为什么要用redis?业务场景有哪些?追问1: 可以说说redis数据类型吗?追问2:说到命令,那你对redis的事务了解吗?追问3:如何防止数据丢失?对持久化有了解吗?深入追问:如果让你来选择一种持久话方式,你怎么选?二、问题2:1. redis为什么那么快呢?追问1:为什么redis是单线程的?追问2:既然有瓶颈,那你是如何解决的?三、问题3:1. 什么是缓存穿透、缓存击穿与雪崩?追问1:你有遇到过上述情况吗?如何解决?一、问题1:1. 为什么要用redis?业务场景有

2021-07-19 18:02:08 3369 10

原创 面试干货6——输入网址按下回车后发生了什么?三次握手与四次挥手原来如此简单!

面试总结一. 按下回车后的流程二. DNS解析(简单介绍)三. 3次握手1. 三次握手具体流程2. 为什么要进行三次握手,而不是两次或四次3. 什么是半连接队列?4. 三次握手可以携带数据吗?5. ISN是动态生成的吗?为什么?6. SYN攻击有了解吗?四、4次挥手1. 四次挥手详细过程2. 为什么握手是三次,而挥手时需要四次呢?3. 请你解释一下TIME_WAIT状态。        在面试过程中,有些看似简单的问题,实在存

2021-07-13 17:06:37 2269 2

原创 面试干货5——请详细说说JVM内存结构(堆、栈、常量池)

这里写目录标题一、概述二、运行时数据区一、概述        JVM是中、高级开发人员必学的,虽然这玩意对平时的开发没有卵用,但是有助于你理解项目从加载到运行的整个流程,有助于你处理生产上出现的问题,比如我们常见的OOM,如果你对JVM一无所知,你会知道为什么会OOM吗?你知道如何监控吗?你懂得怎么处理吗?        前面的文章讲解了类加载

2021-07-09 15:36:50 2726

原创 面试干货4——你对Java类加载器(自定义类加载器)有了解吗?

类加载器一、类加载器的作用二、Java虚拟机类加载器结构1. 引导类(启动类)加载器2. 扩展类加载器3. 系统类加载器三、类加载器的加载机制1. 全盘负责2. 双亲委派3. 缓存机制四、自定义类加载器一、类加载器的作用        Java代码是不能直接运行的,需要通过编译器编译成JVM能够识别的二进制字节码文件,而类加载器的作用就是将这些二进制字节码文件即.class文件装载进虚拟机。二、Java虚拟机类加载器结构

2021-06-24 14:42:59 2462

原创 面试干货3——基于JDK1.8的HashMap(与Hashtable的区别、数据结构、内存泄漏..)

HashMap一、HashMap基本知识1. 简述2. 继承关系3. 基本属性4. 遍历二、HashMap与HashTabl的区别1. 继承结构2. 对待null3. 线程安全性4. 初始容量与扩容5. 计算hash的方法三、HashMap数据存储结构1. JDK1.8之前2. JDK1.8时3. put方法剖析四、结语一、HashMap基本知识1. 简述        HashMap基于Map接口实现,元素以键值对的方

2021-06-08 17:49:28 2522 9

原创 面试干货2——你对Java GC垃圾回收有了解吗?

GC垃圾回收1. 什么是GC2. GC主要针对区域3. Java如何判断对象是否存活4. GC垃圾回收机制4.1 标记-清除法4.2 标记-整理法4.3 复制算法4.4 分代收集算法5. 内存分配策略及垃圾回收过程5.1 为什么新生代要有survivor区?5.2 为什么要有两个survivor区?6. 总结1. 什么是GC        GC全名Garbage Collection,垃圾收集,垃圾回收,这是Java区别于C

2021-05-11 18:41:29 2533 23

原创 请你说说Java类的加载过程

1. 什么是类的加载过程        一个Java文件从编码完成到最终运行,一般会经历两个阶段:编译期、运行期。编译,即通过javac命令,将Java文件转化为二进制字节码文件,即.class文件;运行,则是将.class文件交给JVM执行。而本文所说的类加载过程就是将.class文件中类的元信息加载进内存,创建Class对象并进行解析、初始化类变量等的过程     &nb

2021-05-11 11:32:13 13796 38

原创 SpringBoot+Alipay支付宝支付对接教程(沙箱环境)

Alipay一、学习文档二、环境准备1、调试2、依赖三、开发一、学习文档1、APIhttps://opendocs.alipay.com/apis2、沙箱环境https://opendocs.alipay.com/apis二、环境准备1、调试(1)获取appid点击上述沙箱环境网址,登陆进入,以下为appid(2)设置RSA2密钥1、依然是沙箱环境,如下,点击 设置2、选择 公钥 ,此处的公钥支付宝提供了专门的生产工具,很方便生成密钥有两种方式,我选择的是生成器生成。以下

2021-04-12 16:54:35 5403 7

原创 解决Java发送带附件的邮件,文件变为tcmime.*.bin以及乱码问题(SpringBoot)

一、原因1. 文件变为tcmime.*.bin        在Java邮件发送中,默认情况下,附件名称过长会自动截断且变为tcmime.*.bin,无法打开查看。2. 乱码        编码格式问题二、解决方案1. 解决文件变为tcmime.*.bin      &nbsp

2021-03-23 11:20:29 3115 11

原创 提交form表单无法携带cookie问题解决方案

解决方案一、问题背景二、解决方案1、手动获取该域名下所有cookie2、将cookie放入表单并提交3、后台接收cookie并做数据处理一、问题背景        该问题发生微服务项目单点登录环境下,业务为用户修改头像。具体细节就不说了,大致是我上传头像使用提交form表单的方式,且后台业务逻辑本身需要依赖cookie实现,但form表单无法携带cookie。二、解决方案1、手动获取该域名下所有cookie 

2020-11-26 11:45:23 6507 11

原创 (二) RabbitMQ快速入门, 一篇文章教会你使用RabbitMQ并理解消息发布模型(SpringBoot版)

RabbitMQ的使用与理解前言一. 配置RabbitMQ前言        RabbitMQ基于生产者于消费者模型,实现了系统间的解耦        生产者需要与rabbitmq server建立连接,每一个生产者对应一个虚拟主机,类似于MySQL中库的概念,即一个应用(一个业务)对应一个虚拟主机,使各个应用(业务)之间互不影响。每一个虚拟

2020-11-20 11:35:23 2658 14

原创 ApplicationContextAware接口的使用

ApplicationContextAware接口一、ApplicationContextAware的作用1、ApplicationContext是什么?2、ApplicationContextAware作用二、ApplicationContextAware如何使用三、知识点拓展一、ApplicationContextAware的作用1、ApplicationContext是什么?        很多人都知道,Applic

2020-11-17 18:30:15 6958 17

原创 Java实现批量下载(打包成zip)

批量下载引言一、前端JS发送下载请求1、ajax无法发送下载请求2、js发送下载请求:超链接方式3、js发送下载请求:拼接Form表单,并提交二、后台处理三、结束引言        批量下载思路,首先前端发送下载请求,携带必要参数,也可无参默认批量下载页面全部数据;后台接收后进行数据处理拿到要下载文件的下载地址,循环下载地址,用压缩流,将文件直接写入压缩包,最后利用文件下载将压缩包输出给前端。一、前端JS发送下载请求1、

2020-11-10 16:57:41 12600 57

原创 js前端传json,后台接收‘‘被转为&quot;问题解决

js前端传json,后台接收''被转为& quot;一、产生原因二、解决方案1、方案一2、方案二三、结束一、产生原因        前端传json格式数据,后台接收却发现有一堆& quot;,但是如果后台接收参数用@RequestBody注解,则不会出现这个问题,出现这一问题的原因就是后台没有按照json格式去接收参数,按照json接收参数的前提是请求头 参数Content-Type:application/

2020-11-10 16:25:18 8014 10

原创 (一) Linux CentOS7安装RabbitMQ(包含依赖下载地址)

Linux CentOS7安装RabbitMQ一、准备依赖1、RabbitMQ与依赖版本对应关系2、RabbitMQ安装包3、Erlang依赖包4、安装Erlang内存管理依赖Socat二、安装1、安装Erlang2、安装Socat3、安装rabbitmq-server三、配置RabbitMQ1、找配置文件模板2、修改配置文件3、启动管理控制界面权限插件四、启动RabbitMQ,登陆web管理界面1、启动rabbitmq-server2、登陆web管理界面一、准备依赖1、RabbitMQ与依赖版本对应关

2020-11-04 12:48:17 5725 15

原创 Redis主从复制,集群搭建【Windows】,主从复制原理

Redis主从复制一、什么是主从复制二、主从复制的作用三、Redis集群搭建四、主从服务器宕机问题1、主机宕机2、从机宕机五、主从复制原理1、全量复制2、增量复制一、什么是主从复制主从复制是将一台Redis服务器的数据复制到其他Redis服务器,前者叫master/leader主节点,后者成为从节点slave/follower,数据库的复制是单项的,只能由主-->从,master以写为主,slave以读为主,利用主从复制实现读写分离,最低配的主从复制也需要一主二从。主从复制中,从节点只能进行读操

2020-11-01 14:51:53 1106

原创 SpringBoot+阿里云短信服务实现发送短信验证码功能

本篇文章为记录自己学习发送短信验证码小功能的过程,所有的调用三方接口的功能都如出一辙,在学习一个调用三方接口的过程中总结经验,再学习其他的,思路就会很清晰,就像我刚学完发送邮件(上一篇博客有总结),现在学发短信,很清楚自己该干什么。一、登陆阿里云,开通短信服务,并获取AccessKeyId和AccessKeySecret AccessKeyId,用阿里云官网的话说,是访问阿里云API的密钥,一个用户可以有多个,每次向阿里云服务发送请求,需要带着AccessKeyId,阿...

2020-10-27 14:42:08 3795

原创 SpringBoot发送邮件(QQ邮箱、腾讯企业邮箱、网易邮箱、阿里云邮箱...)

本篇文章以QQ邮箱作为发件人写案例演示了不带附件发邮件、带附件发邮件,无论是QQ邮箱还是网易邮箱,操作都一样,只是配置文件配置邮箱服务器与用户和授权码不同的问题。一、获取邮箱授权码 使用SpringBoot发送邮箱,首先需要有邮箱的授权码,用QQ邮箱,那就获取QQ邮箱的授权码,网易邮箱,就获取网易邮箱授权码,打开QQ邮箱的设置,点击账户,找到一下信息: 点击开启,按照弹出框操作,随后要把给出的邮箱授权码复制出来 !!!如果想要将发送历史保留在邮箱...

2020-10-26 17:17:24 6064 3

原创 SpringCloud项目子工程pom文件的依赖无法引入(pom文件的依赖引入被忽略)

一、问题 最近在学习Spring Cloud,于是搭建了父子工程,但是有一个问题是,在其中一个子工程中,pom文件定义了依赖,并且我明明点了import,但是依赖中却什么都没有,也没有引入依赖报错什么的信息,好像这个pom文件被忽略了一样 这是pom 去看依赖并没有二、问题解决 1、打开settings 可以看到,这个pom文件被maven 忽视掉了 2、将√去掉然后确认 3、重新import,搞定...

2020-10-26 15:17:17 4103

转载 漫谈单点登录(SSO)

我认为作者写的很好,所以记录到自己博客,以下为一字不差的复制,原文地址:https://www.cnblogs.com/EzrealLiu/p/5559255.html漫谈单点登录(SSO)1. 摘要( 注意:请仔细看下摘要,留心此文是否是您的菜,若浪费宝贵时间,深感歉意!!!)SSO这一概念由来已久,网络上对应不同场景的成熟SSO解决方案比比皆是,从简单到复杂,各式各样应有尽有!开源的有OpenSSO、CAS ,微软的AD SSO,及基于kerberos 的SSO等等……这些优秀的解.

2020-10-24 21:41:38 1242

原创 关于Redis事务的介绍

一、Redis事务的本质 Redis事务的本质是一组命令的集合,相当于一个队列,一个事务中的的所有命令都会被序列化,在事务执行过程中,按照顺序执行,且不会被中断,所以redis的事务有一次性(执行完则当前事务结束,下次事务需要重新开启)、顺序性、排他性。Redis中的事务是比较简单的。二、事务的操作命令 先说一下事务的操作,这样在介绍Redis特性的时候举例也比较方便multi #开启事务set name "zs" #回车,将命令添加到...

2020-10-24 21:37:14 1150

原创 Redis之RedisTemplate在实际开发中的使用

本篇文章介绍的是RedisTemplate在实际开发中如何使用,从SpringBoot自动装配RedisTemplate出发,介绍如何定义自己的RedisTemplate,到RedisTemplate的封装,老司机不必再浪费时间,O(∩_∩)O一、SpringBoot中集成RedisTemplate 我的上一篇博客清楚明了介绍了在SpringBoot中如何集成Redis,其中遇到了一些问题,都有记录,可以看下:https://blog.csdn.net/qq_41563...

2020-10-23 10:58:52 4172 1

原创 如何在SpringBoot中集成Redis(RedisTemplate)

1、导入依赖<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-redis</artifactId> </dependency>如图:2、在application.yml中配置Redisspring: redis: hos...

2020-10-21 16:18:40 4498 5

windows版seata-server 1.4.2

win版本seata-server 1.4.2,解压完修改conf配置,bin目录下有启动脚本,双击启动

2022-08-16

LinuxCentOS7版本RabbitMQ3.8.9带erlang+socat

RabbitMQ-server-3.8.9安装包+erlang23.1.1依赖安装包+socat--erlang的内存管理直接执行yum install socat即可

2020-11-02

空空如也

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

TA关注的人

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