杰克说
94年的短视频创作者,软件工程师,CSDN博主。喜欢打抱不平,行侠仗义。有人性格内向,有人性格外向,这是我的vlog。全网搜索杰克说,喜欢记得点赞关注评论哦。
展开
-
XXL-JOB面试问题
XXL-Job 是一款分布式任务调度平台,用于解决分布式系统中的定时任务和异步任务调度问题。它提供了任务的注册、调度、执行和监控等功能,能够帮助开发者简化任务调度的复杂性,提高任务执行的准确性和稳定性。原创 2024-08-04 21:43:51 · 24 阅读 · 0 评论 -
图文详解线程池ThreadPoolExecutor的实现原理
1. 为什么要使用线程池在实际使用中,线程是很占用系统资源的,如果对线程管理不善很容易导致系统问题。因此,在大多数并发框架中都会使用线程池来管理线程,使用线程池管理线程主要有如下好处:降低资源消耗。通过复用已存在的线程和降低线程关闭的次数来尽可能降低系统性能损耗; 提升系统响应速度。通过复用线程,省去创建线程的过程,因此整体上提升了系统的响应速度; 提高线程的可管理性。线程是稀缺资源,...原创 2020-02-04 16:48:54 · 769 阅读 · 2 评论 -
Java面试题Tomcat的优化经验
Tomcat作为Web服务器,它的处理性能直接关系到用户体验,下面是几种常见的优化措施:一、掉对web.xml的监视,把jsp提前编辑成Servlet。有富余物理内存的情况,加大tomcat使用的jvm的内存二、服务器资源 服务器所能提供CPU、内存、硬盘的性能对处理能力有决定性影响。 (1) 对于高并发情况下会有大量的运算,那么CPU的速度会直接影响到处理速度。 (2) ...原创 2018-10-24 17:21:02 · 661 阅读 · 0 评论 -
图文详解面试必备之HashMap、Hashtable、ConcurrentHashMap的原理与区别
下面直接来干货,先说这三个Map的区别:HashTable底层数组+链表实现,无论key还是value都不能为null,线程安全,实现线程安全的方式是在修改数据时锁住整个HashTable,效率低,ConcurrentHashMap做了相关优化 初始size为11,扩容:newsize = olesize*2+1 计算index的方法:index = (hash & 0x7FF...原创 2019-06-03 00:54:13 · 196 阅读 · 0 评论 -
从底层原理深度剖析volatile关键字
本篇文章从底层原理层面深度剖析volatile关键字是如何实现内存可见性的,同时引入了Java内存模型、指令重排序以及内存屏障等知识点作为原理分析的知识支撑。一、简述Java内存模型Java内存模型分为主内存和线程工作内存两大类。主内存:多个线程共享的内存。如下图所示,方法区和堆属于主内存区域。线程工作内存:每个线程独享的内存。如下图所示,虚拟机栈、本地方法栈、程序计数器属于线程独享的工作内存。Java内存模型规定:所有变量都需要存储在主内存中,线程工作内存保存了变量在主内存中...原创 2020-07-21 20:52:25 · 260 阅读 · 1 评论 -
图文详解spring的4种事务特性,5种隔离级别,7种传播行为
什么是事务:事务是指逻辑上的一组操作,组成这组操作的各个逻辑单元,要么一起成功,要么一起失败。事务特性(4种):原子性 (atomicity):强调事务的不可分割,要么一起成功,要么一起失败。 一致性 (consistency):事务的执行时,前后数据的完整性保持一致。 隔离性 (isolation):一个事务执行的过程中,不应该受到其他事务的干扰。 持久性(dur...原创 2020-04-09 14:53:50 · 488 阅读 · 0 评论 -
JAVA面试中问及HIBERNATE与 MYBATIS的对比,在这里做一下总结
我是一名java开发人员,hibernate以及mybatis都有学习,在java面试中也经常被提及问道过,在项目实践中也应用过,现在对hibernate和mybatis做一下对比,便于大家更好的理解和学习,使自己在做项目中更加得心应手。第一方面:开发速度的对比就开发速度而言,Hibernate真正掌握要比Mybatis要难一些。Mybatis框架相对简单很容易上手,但也相对简陋些。个人觉...原创 2018-12-06 19:02:27 · 138 阅读 · 0 评论 -
图文详解ThreadLocal原理
目录一、示例:二、ThreadLocal实现原理 set()方法:get()方法:三、ThreadLocal使用场景:一、示例:ThreadLocal称为线程本地变量,其为变量在每个线程中都创建了一个副本,每个线程都访问和修改本线程中变量的副本。 应用示例:ThreadLocal<SimpleDateFormat> t1=new ThreadLocal<>();可以看出,为每个线程分配一个变量副本的工作并不是由Th...原创 2020-07-21 20:23:16 · 255 阅读 · 0 评论 -
全面分析Hashmap在JDK1.7和JDK1.8有哪些区别
一、HashmapJDK1.7和JDK1.8有哪些区别?(1)头插与尾插: JDK1.7用的是头插法,而JDK1.8及之后使用的都是尾插法,那么他们为什么要这样做呢?因为JDK1.7是用单链表进行的纵向延伸,当采用头插法时会容易出现逆序且环形链表死循环问题。但是在JDK1.8之后是因为加入了红黑树使用尾插法,能够避免出现逆序且链表死循环的问题。(2)扩容后数据存储位置...原创 2020-03-12 18:59:32 · 1033 阅读 · 1 评论 -
java中的多线程你只要看这一篇就够了
目录引言扎好马步:线程的状态内功心法:每个对象都有的方法(机制)太祖长拳:基本线程类RunnableCallable九阴真经:高级多线程控制类1.ThreadLocal类2.原子类(AtomicInteger、AtomicBoolean……)3.Lock类 4.容器类5.管理类引言如果对什么是线程、什么是进程仍存有疑惑,请先百度之,因为这两个......原创 2019-06-02 20:28:50 · 194 阅读 · 0 评论 -
JVM面试题及答案-图文详解
前言总结了JVM一些经典面试题,分享出我自己的解题思路,希望对大家有帮助,有哪里你觉得不正确的话,欢迎指出,后续有空会更新。1.什么情况下会发生栈内存溢出?思路: 先描述栈定义,再描述为什么会溢出,再说明一下相关配置参数,OK的话可以给面试官手写是一个栈溢出的demo。我的答案:定义:栈是线程私有的,他的生命周期与线程相同,每个方法在执行的时候都会创建一个栈帧,用来存储局部变...原创 2020-04-09 21:10:50 · 527 阅读 · 0 评论 -
Java面试题大全 (上) --2021版
结合网上的资料以及自身面试经历,花了很长时间搜集整理出来了这套Java面试题大全,希望对大家有帮助哈~一、Java基础知识面试题1、Java概述①. 何为编程编程就是让计算机为解决某个问题而使用某种程序设计语言编写程序代码,并最终得到结果的过程。为了使计算机能够理解人的意图,人类就必须要将需解决的问题的思路、方法、和手段通过计算机能够理解的形式告诉计算机,使得计算机能够根据人的指令一步一步去工作,完成某种特定的任务。这种人和计算机之间交流的过程就是编程。②. 什么是Java原创 2021-05-16 15:53:16 · 256 阅读 · 0 评论 -
协程、同步与异步在java中的实现
前言 最近在学习协程,打算输出几篇文章来介绍一下协程。而协程与异步有很大的关联,所以想先介绍一下异步。异步是一种程序的运行方式,各种编程语言语言或多或少都对它有所支持。异步对于Java后端程序员来说并不是一种特别熟悉的概念,而安卓或者前端的同学可能会对异步这个概念会更熟悉一些。程序同步和异步同步是最简单也是最符合我们人类思维方式的编程方式,所谓同步,就是程序会按照代码一行行执行,执行完一句再执行下一句。同步代码看起来是这样:stepA();stepB();stepC(....原创 2022-04-13 17:43:44 · 1315 阅读 · 2 评论 -
图文详解Java多线程常用面试题(含答案,精心总结整理)
目录现在有T1、T2、T3三个线程,你怎样保证T2在T1执行完后执行,T3在T2执行完后执行?在Java中Lock接口比synchronized块的优势是什么?你需要实现一个高效的缓存,它允许多个用户读,但只允许一个用户写,以此来保持它的完整性,你会怎样去实现它?在java中wait和sleep方法的不同?用Java实现阻塞队列。BlockingQueue介绍:用Java写...原创 2018-11-08 16:14:00 · 590 阅读 · 0 评论 -
学习笔记:JVM内存结构、垃圾回收器种类、垃圾回收算法、内存分配与回收策略、Java 内存模型与线程、虚拟机类加载机制与类加载器
1. Java 内存区域与内存溢出异常1.1 运行时数据区域根据《Java 虚拟机规范(Java SE 7 版)》规定,Java 虚拟机所管理的内存如下图所示。1.1.1 程序计数器内存空间小,线程私有。字节码解释器工作时就是通过改变程序计数器的值来选取下一条需要执行指令的字节码指令,分支、循环、跳转、异常处理、线程恢复等基础功能都需要依赖计数器完成。如果线程正在执...原创 2020-04-10 16:20:06 · 261 阅读 · 0 评论 -
Java面试题大全 (下) --2021版
前言: 接着上篇博客《Java面试题大全 (上) --2021版》写,三、Java异常面试题1. Error 和 Exception 区别是什么?Error 类型的错误通常为虚拟机相关错误,如系统崩溃,内存不足,堆栈溢出等,编译器不会对这类错误进行检测,JAVA 应用程序也不应对这类错误进行捕获,一旦这类错误发生,通常应用程序会被终止,仅靠应用程序本身无法恢复;Exception 类的错误是可以在应用程序中进行捕获并处理的,通常遇到这种错误,应对其进行处理,使应用程序可以继续正常运行..原创 2021-05-16 16:05:42 · 161 阅读 · 0 评论 -
java.nio.ByteBuffer常用方法详解
一、前言在Java nio中,主要有三大组件:Buffer,Channel和Selector。这三者之间的关系可以按照如下方式进行理解:Buffer提供了一个字节缓冲区,其可以不断的从Channel中读取接收到的数据。Buffer的优点主要在于其提供了一系列的Api,能够让用户更方便的对数据进行读取和写入; Channel简单来说就是一个信道,也就是客户端与服务器的一个连接,而且每个客户端都会对应一个Channel对象; Selector是Java nio能够支持高并发数据处理一个关键,其核心理原创 2021-08-04 18:17:42 · 5248 阅读 · 0 评论 -
图文详解Spring AOP
一、什么是AOP首先先给出一段比较专业的术语(来自百度):在软件业,AOP为Aspect Oriented Programming的缩写,意为:面向切面编程,通过预编译方式和运行期动态代理实现程序功能的统一维护的一种技术。AOP是OOP的延续,是软件开发中的一个热点,也是Spring框架中的一个重要内容,是函数式编程的一种衍生范型。利用AOP可以对业务逻辑的各个部分进行隔离,从而使...原创 2020-04-17 21:08:12 · 410 阅读 · 0 评论 -
Java的List集合根据实体类的属性去重数据
Java List集合根据实体类的属性去重数据。原创 2022-12-08 17:11:42 · 1705 阅读 · 0 评论 -
Java爬虫详解
我们需要提取图中圈出来的内容及其对应的链接,在提取的过程中,我们会使用两种方式来提取,一种是 Jsoup 的方式,另一种是 httpclient + 正则表达式的方式,这也是 Java 网络爬虫常用的两种方式,你不了解这两种方式没关系,后面会有相应的使用手册。在正式编写提取程序之前,我先交代一下 Java 爬虫系列博文的环境,该系列博文所有的 demo 都是使用 SpringBoot 搭建的,不管你使用哪种环境,只需要正确的导入相应的包即可。原创 2022-11-03 10:56:49 · 5254 阅读 · 1 评论 -
详解蚂蚁开源框架SOFA
前言SOFA解决:分布式下的服务和组件管理以及调用繁琐的问题SOFA结构图1.Sofa是什么SOFA 源自于 Service Oriented Fabric Architecture,即面向服务的架构。随着 SOFA 的开源,目前 SOFA 的新解释:Scalable Open Financial ArchitectureSOFA 是蚂蚁金服自主研发的金融级分布式中间件,包含了构建金融级云原生架构所需的各个组件,包括微服务研发框架,RPC 框架,服务注册中心,分布式定时任务,.原创 2020-08-02 16:15:08 · 14759 阅读 · 0 评论 -
SpringBoot 中到底如何解决跨域问题?
同源策略是浏览器的一个重要的安全策略,它用于限制一个源的文档或其加载的脚本如何与另外一个源进行交互,它能够隔绝恶意文档,减少被攻击的媒介。如果两个URL的协议、主机名和端口号都是相同的,那么这两个URL就是同源的,否则不同源,不同源的访问就会出现跨域问题,就会出现上面的错误。下表给出了与 URLURL结果原因同源只有路径不同非同源协议不同非同源端口号不同非同源主机名不同也就是说当在这个网站中向、和三个地址发起AXJX请求都会失败并且会报跨域的错误。...原创 2022-08-04 15:27:00 · 756 阅读 · 0 评论 -
图文详解mina框架
Apache Mina Server 是一个网络通信应用框架,也就是说,它主要是对基于TCP/IP、UDP/IP协议栈的通信框架(当然,也可以提供JAVA 对象的序列化服务、虚拟机管道通信服务等),Mina 可以帮助我们快速开发高性能、高扩展性的网络通信应用,Mina 提供了事件驱动、异步(Mina 的异步IO 默认使用的是JAVA NIO 作为底层支持)操作的编程模型。Mina 主要有1.x 和...原创 2019-02-23 15:14:20 · 21195 阅读 · 10 评论 -
Java中基本数据类型和包装类型的区别
1、包装类是对象,拥有方法和字段,对象的调用都是通过引用对象的地址;基本类型不是2、包装类型是引用的传递;基本类型是值的传递3、声明方式不同:基本数据类型不需要new关键字;包装类型需要new在堆内存中进行new来分配内存空间4、存储位置不同:基本数据类型直接将值保存在值栈中;...原创 2019-02-26 16:48:05 · 21812 阅读 · 6 评论 -
什么是事务? 事务的隔离级别和事务运行的模式分别是什么?spring 事务和分布式事务实现方式有哪些?
什么是事务?百度百科中解释:指作为单个逻辑工作单元执行的一系列操作,要么完全地执行,要么完全地不执行。简单的说,事务就是并发控制的单位,是用户定义的一个操作序列。而一个逻辑工作单元要成为事务,就必须满足ACID属性。A:原子性(Atomicity) 事务中的操作要么都不做,要么就全做。C:一致性(Consistency) 事务执行的结果必须是从数据库从一个一致性状态...原创 2019-01-27 23:26:53 · 18977 阅读 · 0 评论 -
Java异步注解@Async详解
再查看一下initializeExecutor抽象方法的具体实现类,其中有一个就是ThreadPoolTaskExecutor类,查看它的initializeExecutor方法,使用的就是ThreadPoolExecutor。在需要异步执行的方法上加入@Async注解,并指定使用的线程池,当然可以不指定,直接写@Async。的名称,也就是不自定义线程池,@Async是有默认线程池的,使用的是Spring默认的线程池SimpleAsyncTaskExecutor。配置文件中的线程池核心线程数为何配置为。原创 2022-11-10 16:47:26 · 20451 阅读 · 0 评论 -
消息队列RabbitMQ的常见面试题
1、使用RabbitMQ有什么好处?解耦,系统A在代码中直接调用系统B和系统C的代码,如果将来D系统接入,系统A还需要修改代码,过于麻烦! 异步,将消息写入消息队列,非必要的业务逻辑以异步的方式运行,加快响应速度。 削峰,并发量大的时候,所有的请求直接怼到数据库,造成数据库连接异常。2、RabbitMQ 中的 broker 是指什么?cluster 又是指什么?broker 是指一个或多个 erlang node 的逻辑分组,且 node 上运行着 RabbitMQ 应用程序。clust.原创 2020-08-24 17:50:56 · 623 阅读 · 0 评论 -
ElasticSearch 面试总结
0.什么是ES?es是一个基于Lucene的高扩展、开源的全文检索和分析引擎,它可以准实时地快速存储、搜索、分析海量的数据。1.为什么要使用到ES?因为在我们商城中的数据,将来会非常多,所以采用以往的模糊查询,模糊查询前置配置,会放弃索引,导致商品查询是全表扫面,在百万级别的数据库中,效率非常低下,而我们使用ES做一个全文索引,我们将经常查询的商品的某些字段,比如说商品名,描述、价格还有id这些字段我们放入我们索引库里,可以提高查询速度。2.Elasticsearch是如何实现Master选原创 2020-07-16 17:51:42 · 1335 阅读 · 2 评论 -
如何解决Redis 和MySQL的数据不一致
1. MySQL持久化数据,Redis只读数据redis在启动之后,从数据库加载数据。读请求:不要求强一致性的读请求,走redis,要求强一致性的直接从mysql读取。写请求:数据首先都写到数据库,之后更新redis(先写redis再写mysql,如果写入失败事务回滚会造成redis中存在脏数据)。2.MySQL和Redis处理不同的请求数据类型MySQL处理实时...原创 2020-04-21 19:03:31 · 1413 阅读 · 1 评论 -
TCP的三次握手与四次挥手详解及面试题
TCP请求报文结构图名词解释 序列号seq:占4个字节,用来标记数据段的顺序,TCP把连接中发送的所有数据字节都编上一个序号,第一个字节的编号由本地随机产生;给字节编上序号后,就给每一个报文段指派一个序号;序列号seq就是这个报文段中的第一个字节的数据编号。 确认号ack:占4个字节,期待收到对方下一个报文段的第一个数据字节的序号;序列号表示报文段携带数据的第一个字...原创 2020-04-17 20:08:24 · 376 阅读 · 0 评论 -
分布式事务解决方案——MQ、TCC、LCN
分布式事务解决方案中有MQ、TCC、LCN,该篇介绍TCC。 TCC方案是可能是目前最火的一种柔性事务方案了。关于TCC(Try-Confirm-Cancel)的概念,最早是由Pat Helland于2007年发表的一篇名为《Life beyond Distributed Transactions:an Apostate’s Opinion》的论文提出。在该论文中,TCC还是以T...原创 2019-11-06 14:41:13 · 2067 阅读 · 1 评论