自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(147)
  • 收藏
  • 关注

转载 重载和重写

转自。

2022-08-10 11:16:41 3704 1

转载 Zookeeper实现简单分布式锁

比如当前线程获取到的节点序号为/locks/seq-00000003,然后所有的节点列表为[/locks/seq-00000001,/locks/seq-00000002,/locks/seq-00000003],则对/locks/seq-00000002这个节点添加一个事件监听器。创建节点成功后,获取/locks目录下的所有临时节点,再判断当前线程创建的节点是否是所有的节点的序号最小的节点。如果当前线程创建的节点不是所有节点序号最小的节点,则对节点序号的前一个节点添加一个事件监听。......

2022-08-08 15:21:29 280

原创 equals和==

1、==用来比较两个变量的值是否相等,一般用于比较基本数据类型,如果比较的变量为引用类型(对象)的时候,比如:Object a = new Object(),a占用一块内存,new Object()占用另一块内存,a中存储的值就是new Object()内存的首地址。2、equals方法比较的是两个独立对象的内容是否相等。这时a==b为false,a.equals(b)为true。.........

2022-08-08 14:59:28 2189

转载 JAVA基本数据类型及转化

转自。

2022-08-04 16:44:38 1686

转载 Java异常try{}catch{}中的return机制

在探索try{}catch{}finally{}中return的时机之前,我们先根据return的位置,定义一下return的类型。

2022-08-02 10:56:07 273

转载 Centos7 ifconfig中没有ens33

在使用SecureCRT连接虚拟机连接不上,可能之前虚拟机关闭不当。登到虚拟机的中断使用ifconfig发现没有ens33。

2022-08-01 08:35:47 1124

原创 Cookie和Session

视频。

2022-07-28 21:59:15 195

转载 创建线程的3种方式

转自。

2022-07-26 20:38:51 88

转载 利用kafka实现消息总线Spring Cloud Bus

相信大多数读者之前都使用过各种各样的消息队列,例如RabbitMQ、kafka等等,消息总线和他的概念差不多,在微服务系统的架构中,我们通常会使用轻量级的消息代理来构建一个共用的消息主题让系统中所有的微服务都连接上来,由于该主题中产生的消息会被所有实例监听和消费,所以我们称他们为消息总线。在总线上的各个实例都可以方便的广播一些需要让其他连接到该主题上的实例都知道的消息,例如配置的变更或者其他一些管理操作等。......

2022-07-25 20:17:27 905

转载 JAVA面试集锦(二)

多个线程同时访问一个共享资源并有至少一个线程对其进行修改时,导致数据出现读写不一致的现象。

2022-07-22 15:54:36 91

原创 文件上传下载

配套视频。

2022-07-19 21:13:21 145

转载 JUC包下的常见类

可重入锁;信号量;计数器;循环屏障。

2022-07-19 18:26:01 2995

转载 HTTP、HTTPS详解及相关面试题

对称加密算法双方持有相同的密钥,进行加密速度快,典型对称加密算法DES、AES。非对称加密算法密钥成对出现(私钥、公钥),私钥只有自己知道,不在网络中传输;而公钥可以公开。相比对称加密速度较慢,典型的非对称加密算法有RSA、DSA。.........

2022-07-19 17:45:47 827

转载 Tomcat部署Web项目的3种方式

转自https://blog.csdn.net/weixin_44259233/article/details/121085077这是最简单粗暴的方式:将web工程打成war,丢进tomcat/webapps目录即可,tomcat会自动解压。无需修改任何配置文件即可完成部署。这里我准备了tomcat8.5.43与dubbo控制台的war包来做测试。    ①启动tomcat②将war丢进webapps目录,tomcat会自动解压该war包。  浏览器直接访问:localhost:8080/dubbo-

2022-07-13 15:29:39 6200

转载 自定义类加载器加载过Class文件被替换后如何生效

转自https://cloud.tencent.com/developer/article/1636595这篇文章是在上一篇文章的基础上进行补充。写这篇文章的原因是因为在今天的面试中,聊到自己小程序后台在线编辑代码,其中涉及到防止非必要重启(如果是系统类加载器就不支持热加载,需要重启JVM才能加载已经被加载过且被修改过的类),我使用自定义类加载去加载某些类,然后面试官问到这样一个问题:如果你第一版的class文件放服务器上去被加载之后,你又修改了源代码重新编辑替换,此时怎么解决?听到这个问题的时候,我愣住了

2022-07-12 22:24:28 361

转载 ThreadPoolExecutor 线程池的七个参数

转自https://blog.csdn.net/FUTEROX/article/details/122893521现在点进去看 newFixedThreadPool 的实现创建线程池的方法实现了 ThreadPoolExecutor 方法。从源码中可以看出,线程池的构造函数有7个参数,分别是 corePoolSize、maximumPoolSize、keepAliveTime、unit、workQueue、threadFactory、handler。那么接下来分别说说这七个参数。线程池核心线程大小线程

2022-07-12 17:22:55 171

转载 线程池的创建方式

转自https://blog.csdn.net/weixin_39771749/article/details/123576797在 Java 语言中,并发编程都是通过创建线程池来实现的,而线程池的创建方式也有很多种,每种线程池的创建方式都对应了不同的使用场景,总体来说线程池的创建可以分为以下两类:而以上两类创建线程池的方式,又有 7 种具体实现方法,这 7 种实现方法分别是:Executors.newFixedThreadPool:创建一个固定大小的线程池,可控制并发的线程数,超出的线程会在队列中等

2022-07-12 17:01:40 1466

原创 面试集锦——集合

1、⾸先CopyOnWriteArrayList内部也是⽤过数组来实现的,在向CopyOnWriteArrayList添加元素时,会复制⼀个新的数组,写操作在新数组上进行,读操作在原数组上进⾏2、并且,写操作会加锁,防止出现并发写入丢失数据的问题3、写操作结束之后会把原数组指向新数组CopyOnWriteArrayList允许在写操作时来读取数据,大大提高了读的性能,因此适合读多写少的应用场景,但是CopyOnWriteArrayList会比较占内存,同时可能读到的数据不是实时最新的数据,所以不适合实

2022-07-12 12:11:01 124

原创 面试集锦——MySQL

索引覆盖就是⼀个SQL在执行时,可以利用索引来快速查找,并且此SQL所要查询的字段在当前索引对应的字段中都包含了,那么就表示此SQL走完索引后不用回表了,所需要的字段都在当前索引的叶子节点上存在,可以直接作为结果返回了。当⼀个SQL想要利用索引是,就⼀定要提供该索引所对应的字段中最左边的字段,也就是排在最前面的字段,比如针对a,b,c三个字段建立了⼀个联合索引,那么在写⼀个sql时就⼀定要提供a字段的条件,这样才能用到联合索引,这是由于在建立a,b,c三个字段的联合索引时,底层的B+树是按照a,b,c三个字

2022-07-09 10:23:26 195

原创 Redis相关面试题

Redis的数据结构有:Redis的主从复制是提高Redis的可靠性的有效措施,主从复制的流程如下:缓存中存放的大多都是热点数据,目的就是请求可以直接从缓存中获取到数据,而不用访问 Mysql。

2022-07-09 09:17:07 120

转载 @Configuration注解的详细介绍(也就是@Configuration注解的作用)

转自https://www.cnblogs.com/init-qiancheng/p/14623522.html由该注解定义可知,该注解首先是一个组件,所以会被@SpringBootApplication注解扫描(扫描的前提是该注解必须在与启动类相同包或者子包中) 该注解中有一个属性 proxyBeanMethods,该属性的默认值是true,这个属性可以分为两种模式使用Full模式,这个配置类就被代理,就可以解决组件之间的依赖关系,他会先检查容器中是否存在组件的实例,如果存在就会直接使用,不存在才会进行

2022-07-07 13:14:46 830

转载 MVC设计模式

转自https://blog.csdn.net/lj15559275886/article/details/121803156MVC设计模式一般是指MVC框架,Model数据模型层,View视图层,Controller控制层。1、web项目中,用户请求网页上一个URL路径,web服务器获取请求后如何解析用户输入并执行相关逻辑处理,最终跳转至正确的页面反馈结果,这些工作是在Controller控制层完成的。2、在请求过程中,用户信息被封装在实体类中,实体类在web项目中属于数据模型层model。3、在请求显示

2022-07-06 09:27:51 196

原创 LeetCode算法—排序算法(以升序为例)

执行流程参考视频https://www.bilibili.com/video/BV1PT4y13767?p=19&vd_source=3558fd85254f40ca0361146cc92d2cce快速排序原理是首先要找到一个中枢,把小于中枢的值放到他前面,大于中枢的值放到他的右边,然后再以此方法对这两部分数据分别进行快速排序。这里是先用待排数组的第一个作为中枢,把数组划分两部分,小于他的往前挪,那大于他的自然就在后面了,然后再把中枢值放到大于和小于他之间的位置。三、冒泡排序1. 冒泡排序原理将第

2022-06-30 17:49:44 386

原创 Spring全家桶面试题(四)之SpringCloud

SpringBoot是用来快速开发Spring应用的一个脚手架、其设计目的是用来简化Spring应用的初始搭建以及开发过程。SpringBoot是Spring生态的产品。Spring Framework是一个容器框架。SpringBoot 它不是一个框架、它是一个可以快速构建基于Spring的脚手架(里面包含了Spring和各种框架),为开发Spring生态其他框架铺平道路,2个不是一个层面的东西, 没有可比性。1.通过@SpringBootApplication引入了@EnableAutoConfigu

2022-06-19 13:46:11 308

原创 Spring全家桶面试题(二)之SpringMVC

(1)解决post请求乱码问题:在web.xml中配置一个CharacterEncodingFilter过滤器,设置成utf­8;(2)get请求中文参数出现乱码解决方法有两个:①修改tomcat配置文件添加编码与工程编码一致,如下:②另外一种方法对参数进行重新编码:(3)确保前端请求的数据不是乱码,确保开发工具和文件本身的编码为utf-81、控制器也是一个bean,默认是单例。2、单例的Bean如果有状态则线程不安全,如果无状态则线程安全(有状态指有成员变量声明在类中)(1)用户发送请求至前端控制器

2022-06-18 14:29:15 94

原创 Spring全家桶面试题(一)之Spring Framework(九)

事件事件发布监听了对应事件的监听器当监听器监听的事件发布之后,对应的监听器就会执行。事件(ApplicationEvent) :负责对应相应监听器,事件源发生某事件是特定事件监听器被触发的原因。监听器(ApplicationListener): 对应于观察者模式中的观察者。监听器监听特定事件,并在内部定义了事件发生后的响应逻辑。事件发布器(ApplicationEventMulticaster ):对应于观察者模式中的被观察者/主题, 负责通知观察者对外提供发布事件和增删事件监听器的接口,

2022-06-16 16:37:07 103

原创 Spring全家桶面试题(一)之Spring Framework(八)

⑴ 原子性(Atomicity)原子性是指事务包含的所有操作要么全部成功,要么全部失败回滚, 因此事务的操作如果成功就必须要完全应用到数据库,如果操作失败则不能对数据库有任何影响。⑵ 一致性(Consistency)一致性是指事务必须使数据库从一个一致性状态变换到另一个一致性状态,也就是说一个事务执行之前和执行之后都必须处于一致性状态。拿转账来说,假设用户A和用户B两者的钱加起来一共是5000,那么不管A和B之间如何转账,转几次账,事务结束后两个用户的钱相加起来应该还得是5000,这就是事务的一致性

2022-06-16 14:00:13 118

原创 Spring全家桶面试题(一)之Spring Framework(七)

设置暴露当前代理对象到本地线程, 可以通过AopContext.currentProxy() 拿到当前正在调用的动态代理对象54.Spring的AOP是在哪里创建的动态代理?正常的Bean会在Bean的生命周期的初始化后, 通过BeanPostProcessor.postProcessAfterInitialization创建aop的动态代理还有一种特殊情况: 循环依赖的Bean会在Bean的生命周期属性注入时存在的循环依赖的情况下, 也会为循环依赖的Bean通过MergedBeanDefi

2022-06-15 21:00:23 111

原创 Spring全家桶面试题(一)之Spring Framework(六)

AOP(Aspect-Oriented Programming),一般称为面向切面编程,用于将那些与业务无关,但却对多个对象产生影响的公共行为和逻辑,抽取并封装为一个可重用的模块,这个模块被命名为“切面”(Aspect),减少系统中的重复代码,降低了模块间的耦合度,同时提高了系统的可维护性。可用于权限认证、日志、事务处理等。AOP、OOP在字面上虽然非常类似,但却是面向不同领域的两种设计思想。**OOP(面向对象编程)**针对业务处理过程的实体及其属性和行为进行抽象封装,以获得更加清晰高效的逻辑单元划分。

2022-06-15 15:17:57 95

原创 Spring全家桶面试题(一)之Spring Framework(五)

1.因为BeanDefinition会在ioc容器加载的先注册, 而BeanFactoryPostProcess就是在所有的BeanDefinition注册完后做扩展的,所以要先加载BeanFactoryPostProcess2. 解析配置类的组件 它就实现BeanFactoryPostProcess, 所以要先去加载BeanFactoryPostProcessBean的创建顺序是由BeanDefinition的注册顺序来决定的, 当然依赖关系也会影响Bean创建顺序 (A-B)。主要是由注解(

2022-06-14 20:27:39 165

原创 Spring全家桶面试题(一)之Spring Framework(四)

Bean生命周期:指定的就是Bean从创建到销毁的整个过程: 分4大步:如何解决:采用三级缓存解决,也就是3个map。一级缓存:存储完整的Bean三级缓存:a. 缓存的是函数接口:通过lambda 把方法传进去( 把Bean的实例(纯净态的实例)和Bean名字传进去(aop创建) )b. 不会立即调:(如果在实例化后立即调用的话:所有的aop 不管bean是否循环依赖都会在 实例化后创建proxy, 正常Bean 其实spring还是希望遵循生命周期在初始化创建动态代理, 只能循环依赖

2022-06-13 20:39:03 340 1

原创 Spring全家桶面试题(一)之Spring Framework(三)

在 Spring 中,构成应用程序主干并由Spring IoC容器管理的对象称为bean。bean是一个由Spring IoC容器实例化、组装和管理的对象。概念简单明了,我们提取处关键的信息:Spring框架支持以下五种bean的作用域:注意: 缺省的Spring bean 的作用域是Singleton。使用 prototype 作用域需要慎重的思考,因为频繁创建和销毁 bean会带来很大的性能开销。指定作用域的方式:由于不会每次都新创建新对象,所以有一下几个性能上的优势:不是,Spring框架中的单例

2022-06-11 16:11:26 103

原创 Spring全家桶面试题(一)之Spring Framework(二)

总的来说:概念态 ==》定义态 ==》纯净态 ==》成熟态从概念态 ==》定义态的过程1、实例化一个ApplicationContext的对象;2:调用bean工厂后置处理器(new一个ApplicationContext对象的时候,调用了refresh方法,refresh就是IOC的整个加载过程,它调用的invokeBeanFactoryPostProcessors方法)解析配置类;3:扫描配置的扫描包(component-scan base-package)下的所有类信息,看是否配置了@Compo

2022-06-09 13:22:57 103

原创 Spring全家桶面试题(一)之Spring Framework(一)

搭配视频地址https://www.bilibili.com/video/BV1vS4y1h7Kn?p=1什么是spring核心解释spring是一个轻量级的开源容器框架。spring是为了解决企业级应用开发的业务逻辑层和其他各层对象和对象直接的耦合问题spring是一个IOC和AOP的容器框架。特点:方便解耦,简化开发通过Spring提供的IoC容器,我们可以将对象之间的依赖关系交由Spring进行控制,避免硬编码所造成的过度程序耦合。有了Spring,用户不必再为单实例模式类、属性文件解析等

2022-06-08 20:47:35 306

转载 JVM内存结构分析(通俗易懂)

转自https://baijiahao.baidu.com/s?id=1722629637623477825&wfr=spider&for=pcJVM(Java虚拟机)主要包括五块区域,分别是程序计数器、虚拟机栈、本地方法栈、堆、方法区。在JVM当中堆和方法区各有一个,一条线程有一个栈和一个程序计数器。五块区域中当中变化最频繁是栈,最先有数据的是方法区,垃圾回收器主要针对的是堆。由于在JVM中多线程是通过线程轮流切换来换取CPU执行时间的,在任何一个确定的时刻,一个CPU只会执行一条线程的指令。因此,为了

2022-06-06 13:33:22 74

原创 JVM内存结构剖析

配套视频:https://www.bilibili.com/video/BV18J41187Nj?spm_id_from=333.337.search-card.all.click1. 什么是JVMJava Virtual Machine:Java虚拟机,用来保证Java语言跨平台。Java虚拟机可以看做是一台抽象的计算机,如同真实的计算机那样,它有自己的指令集以及各种运行时内存区域Java虚拟机与Java语言并没有必然的联系,它只与特定的二进制文件格式(class文件格式所关联)Java虚拟机

2022-06-05 21:05:39 140

转载 Set系列集合

转自https://blog.csdn.net/weixin_43521028/article/details/1080599581.3 面试热点1)Set集合添加的元素是不重复的,是如何去重复的?2)Set集合元素无序的原因是什么?是HashSet的子类,元素是“有序” 不重复,无索引.LinkedHashSet底层依然是使用哈希表存储元素的,但是每个元素都额外带一个链来维护添加顺序!!不光增删查快,还有序。缺点是多了一个存储顺序的链会占内存空间!!而且不允许重复,无索引。3. TreeSet集

2022-06-04 21:50:51 72

转载 Like是否走索引

先说结论:只要like后需要匹配的字段前加%,索引就会失效。但是后面加%,能使用索引。1. 匹配字段前后都加%,索引失效Test case:结果:Test case:结果:Test case 3:**注意:**上面这个表实际上已经索引覆盖了所有字段,因为非聚集索引叶子节点存的就是 索引值 加 主键, 下面例子 中的select * 实际上查的就是四个覆盖的字段Test case 1、Test case 2、Test case 3分别测试匹配字段前后都加%、匹配字段前加%、**匹配字段后加%*

2022-06-04 16:59:05 7607 1

原创 Kafka从入门到精通(十)消息不丢失机制

1. 消息不丢失机制1.1 broker数据不丢失生产者通过分区的leader写入数据后,所有在ISR中follower都会从leader中复制数据,这样,可以确保即使leader崩溃了,其他的follower的数据仍然是可用的。1.2 生产者数据不丢失生产者连接leader写入数据时,可以通过ACK机制来确保数据已经成功写入。ACK机制有三个可选配置1.配置ACK响应要求为 -1或者ALL 时 —— 表示所有的节点都收到数据(leader和follower都接收到数据)2.配置ACK响应要

2022-05-21 14:43:55 193

原创 Kafka从入门到精通(九)Kafka生产、消费数据工作流程

1. Kafka生产、消费数据工作流程1.1 Kafka数据写入流程生产者先从 zookeeper 的 "/brokers/topics/主题名/partitions/分区名/state"节点找到该 partition 的leader生产者在ZK中找到该ID找到对应的brokerbroker进程上的leader将消息写入到本地log中follower从leader上拉取消息,写入到本地log,并向leader发送ACKleader接收到所有的ISR中的Replica的A

2022-05-20 20:22:05 2559

空空如也

空空如也

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

TA关注的人

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