自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 设计模式之——单例模式

什么是单例模式?单例模式就是采取一定的方法保证在整个系统中,只能存在一个对象实例。该类提供一个静态方法返回对象实例。为什么要采用单例模式?当你需要多个对象共享某些资源(如数据库连接池、线程池、缓存等)时,可以使用单例模式确保所有对象都使用同一个实例,避免资源的浪费和冲突。在某些情况下,需要全局访问一个对象,例如日志记录器、配置管理器等,这时可以使用单例模式确保在整个应用程序中只有一个实例,并且可以在任何地方方便地访问它。单例模式可以限制类的实例化次数,确保只有一个实例存在。

2024-05-14 18:43:15 1172

原创 23种设计模式的支撑---六大原则

开闭原则是指在面向对象编程领域中,规定软件中的对象,类,函数是允许扩展但不允许修改的。开闭原则的核心思想可以理解为面向抽象编程。如何理解呢?我们在编写代码时要尽可能的提高代码的灵活性,可以去对功能进行扩展,但尽量避免去修改之前已经写好的类。举个例子,当我们要去修改之前一个工具类,我们不应该直接去修改源代码而是进行水平扩展,重新构建工具类,通常要实现这种效果,我们一般要使用继承或者实现接口,这两种方式,无论哪种,都是面向抽象编程的思想。

2024-05-14 12:03:37 548

原创 HTTP和HTTPS的区别及HTTPS的工作原理

1、安全性2、URL3、证书4、性能建立连接:握手阶段(Handshake):加密通信:数据传输:结束连接:

2024-04-27 11:40:15 838

原创 什么是TCP的粘包,拆包问题?

TCP粘包和拆包问题是指在TCP通信的过程中,发送方将多个小数据包粘合在一起发送,而接收方则将这些小的数据包进行拆分接收,在这个过程中可能会出现粘包和拆包问题。对于粘包和拆包问题,一般都是对包的格式进行约束,常见的解决方案有四种:

2024-04-27 11:33:33 167

原创 TCP协议是如何保证数据可靠传输的?

对应这四点,TCP有对应策略保证数据可靠传输二、可靠传输策略

2024-04-26 21:21:02 383

原创 进程间通信方式有哪些?

进程间通信是指在不同进程间进行数据交换和信息传递的机制。

2024-04-26 20:53:12 252

原创 什么是零拷贝?

如果只是传输数据,并不对数据作任何处理,譬如将服务器存储的静态文件,如htl,js发送到客户端用于浏览器渲染,在这种场景下,如果依然进行这么多数据拷贝和上下文切换,简直就是丧心病狂有木有!所以我们就可以通过sendfile的方式,只做文件传输,而不通过用户态进行干预。零拷贝就是指在操作系统中,通过各种方式来减少数据拷贝的次数或者说,减少cpu参与数据拷贝的次数。在正常的read+ write流程中,都会经历至少四次数据拷贝。使用DMA的好处就是从IO设备到内核缓冲区不需要cpu的参与。

2024-04-26 20:44:18 186

原创 操作系统中的select、poll、epoll多路复用技术的区别

文件描述符(File Descriptor)是操作系统中用于标识和操作文件或其他I/O资源的抽象概念。在UNIX和类UNIX操作系统中(如Linux),所有的I/O操作都通过文件描述符来进行。,由操作系统内核管理。它是进程与文件、套接字、管道等I/O资源之间的桥梁,通过文件描述符,进程可以打开、读取、写入、关闭等操作各种类型的I/O资源。

2024-04-26 19:55:05 552

原创 操作系统的IO模型有哪些

以Linux系统为例,对于Linux系统而言,everything is a file。:在该模型中,调用recv函数之前会先调用select或者epoll函数,这两个系统调用函数可以在内核中准备好数据时告知用户进程,此时再调用recv函数必定有数据。因此在拷贝过程中,对应有五种不同的IO模型。系统调用recv将数据从内核复制到用户空间并返回,:系统调用recv将数据从内核复制到用户空间,

2024-04-26 19:05:16 226 1

原创 第二篇:阿里为什么要禁用Java内置线程池?自定义线程池参数如何设置?

有!讲究非常大!自定义线程池时,我们通常从两方面考虑服务器性能业务需求服务器性能:这个其实很好理解,cpu越多,当前机器性能越好,设置线程数也就可以越多。最主要的是对业务需求的划分来制定参数设置:计算密集型应用:对于CPU密集型业务来说,它的特点是要进行大量的CPU计算,比如计算高等数学中学习的泰勒公式,就会非常消耗我们的CPU资源。这种CPU密集型业务虽然也可以拆成多个任务去执行,但是任务越多,切换的成本就越大。所以,我们就要最高效地利用CPU,遇到CPU密集型的业务场景时,

2024-04-21 12:41:41 897

原创 第一篇:Java中的线程池介绍(阿里为什么要禁用Java内置线程池?自定义线程池参数如何设置?)

线程池中允许创建的最大线程数。如果队列已满且当前活动线程数小于最大线程数,则会创建新线程来执行任务,直到达到最大线程数为止。:当线程池中的线程数量大于核心线程数时,多余的空闲线程在被终止之前等待新任务的最长时间。:用于创建新线程的工厂。可以通过自定义线程工厂来指定线程的名称、优先级、守护状态等属性。:线程池中保持活动状态的线程数。即使线程处于空闲状态,也不会被销毁,除非设置了。:用于保存等待执行的任务的阻塞队列。提供了多种队列实现可供选择,比如。

2024-04-21 12:14:31 565

原创 spring中的过滤器和拦截器的区别?以及二者分别对应的使用场景

但是在实现方式和作用范围上有一些区别。因此在很多时候,对于二者功能上的区别我们都会有点迷茫。接下来,我将为大家划分二者的区别以及对应的使用场景。

2024-04-18 11:28:15 446

原创 HTTP/1.0、HTTP/1.1、HTTP/2.0、HTTP3.0的区别

1996年5月,HTTP/1.0版本发布,为了提高系统的效率,请注意上面提到的HTTP/1.0中浏览器与服务器只保持短暂的连接,。现在,随便打开一个网页,上面都会有很多图片、视频等资源,HTTP/1.0显然无法满足性能要求。HTTP/1.0 中一个 TCP 连接只能发送一个请求和响应,而。持久连接虽然可以多个请求复用同一个连接,但是每次都需要等到上一个请求响应完成后,才能发送下一个请求。

2024-04-08 14:01:29 1017

原创 @PostMapping和@PutMapping的区别

对于这两个注解,很多人认为他们的作用效果都是一样的,甚至常常用@PostMapping来代替Putmmping来发送修改请求。但这两个本质上存在着非常大的区别。我们先了解一个幂等性概念。幂等性是指相同的请求被执行一次或多次的效果是相同的,不会产生额外的影响。也就是说,假如我通过PostMapping去发送请求,如果该表的所有字段都没有唯一约束,那我发送多次相同的请求,数据库中不会存在多条记录。但事实正好相反,PostMapping不具备幂等性,因为它时新建资源,如果数据库字段没有唯一约束,那么所有的请求都会

2024-03-28 10:00:12 1141

原创 Java中的序列化和反序列化

serialVersionUID 用来表明类的不同版本间的兼容性Java的序列化机制是通过在运行时判断类的serialVersionUID来验证版本一致性的。在进行反序列化时,JVM会把传来的字节流中的serialVersionUID与本地相应实体(类)的serialVersionUID进行比较,如果相同就认为是一致的,可以进行反序列化,否则就会出现序列化版本不一致的异常。

2024-03-25 22:00:13 1157

原创 Java中的反射,用法,原理总结

反射是指在程序运行过程中,动态的去获取类的所有信息,包括,类名,类的成员变量(私有,公有),类上的注解,类的所有方法(私有,公有)。在Java中实现软编码,所谓软编码就是指在程序运行之前并不知道具体的信息,增强代码的灵活性。在各大框架的底层实现中,反射都是基础。

2024-03-25 21:48:34 310 1

原创 redis常见面试题

AOF:以日志的形式来记录每个写操作,将Redis执行过的所有写指令记录下来(读操作不记录),只许追加文件但不可以改写文件,Redis启动之初会读取该文件重新构建数据,换言之,Redis重启的话就根据日志文件的内容将写指令从前到后执行一次以完成数据的恢复工作。如果是用做内存数据库,要使用Redis的持久化,建议是RDB和AOF都开启,或者定期执行bgsave做快照备份,RDB方式更适合做数据的备份,AOF可以保证数据的不丢失。如果是数据不那么敏感,且可以从其他地方重新生成补回的,那么可以关闭持久化。

2024-03-17 21:01:37 456 1

原创 Redis常见面试题--基础篇

答:redis可以作为缓存中间件,我们可以将数据库中频繁访问的数据存放到redis中,用户在访问的时候直接走redis返回,降低数据库的并发量,不仅提高数据库的安全同时提高了系统的性能。redis采用内存存储,因此读写速度非常快,没有IO开销。并且redis采用单线程+IO多路复用,在保证线程安全的情况下将速度提升到最佳。答:redis数据库是一种非关系型数据库,它的数据存储采用key-value形式,整个数据库的加载都在内存当中,因此它的速度非常快。问:redis的数据类型有哪些?

2024-03-17 20:18:30 499 1

原创 Java中的悲观锁机制----synchronized 关键字原理

sychronized是Java原生的一个同步锁机制,可以保证在多线程并发的情况下,仅允许一个线程执行加锁的方法和代码块,保证了线程安全。在Java1.5之前,sychronized关键字实现的同步锁,底层是一种悲观锁的理念,在1.6版本后,Java对该关键字进行了优化,使得该锁在某些情况下呈现轻量锁的作用(这个后面介绍,先有个印象)

2024-03-16 11:33:23 1333 1

原创 Java中的锁机制?(体系梳理篇)

在面试过程中,多线程及并发编程已经是必问的项目,并发编程的实现依赖Java中的锁机制,那么在Java中存在几种锁机制呢?

2024-03-16 10:16:42 380 1

原创 多线程-并发编程、面试难点(线程合集)

它可以应用到标记某个线程的状态,比如在后面即将谈论到的Lock类中,就有一个字段state通过volatile标记,当锁被获取后,就会修改这个值,通知其他线程锁已被获取,让其他线程去排队。答:ThreadLocal类保证了每个访问这个变量的线程在它自己的线程内都会有这个变量的拷贝,不受其他线程的影响,也就是说,它保证了在操作当前变量的时候不会收到其他线程的影响。什么叫弱引用,当一个对象只被弱引用引用时,在垃圾回收器执行垃圾回收时,该对象就会被回收,即使 JVM 内存充足,也可能会被回收。

2024-03-15 17:56:59 372 1

原创 多线程面试-基础篇(多线程系列连更,后续可查看合集)

wait方法也是让当前线程阻塞,但不一样的是,wait方法不会去自动苏醒,并且它会释放当前线程持有的锁,只有当另外一个线程调用休眠线程的notify方法才会苏醒。答:sleep方法不会释放锁,wait方法会释放锁,sleep方法只是让当前线程休眠,如果当前线程持有锁,不会释放锁,当休眠结束后线程自动苏醒,仍旧会执行当前线程。线程死锁是指,在多线程情况下,A线程持有锁需要B线程所占有的资源,B线程持有锁需要A线程占有的资源,两个互相掣肘,导致线程死锁。答:可以采取嵌套锁,先获取A锁,再获取B锁。

2024-03-15 15:34:33 502 1

原创 字符串相乘---力扣原题(采用算数运算法实现,注释详细,非常好理解)

字符串相乘---力扣原题(采用算数运算法实现,注释详细,非常好理解)

2024-02-07 20:03:53 369 1

原创 内部类之匿名内部类(内部类合集,第三篇,原理+细节+实现)

匿名内部类就是通过在方法中去实现接口或重写父类的方法来达到一个程序的需求,不需要去专门写一个实现类或继承类,保证再其他类文件中不再使用该实现类,这就是匿名内部类的终极意义

2024-02-07 13:56:30 1139 1

原创 面向对象高级部分---内部类,什么是内部类,内部类的划分,为什么要用内部类?

内部类!这是面向对象编程中最重要的部分,也是Java进阶的第一个难点,主要体现在源码上,如果有朋友读过一些Java类的源码就会发现,源码中大量使用内部类,如果你不懂,那看起来是相当困难的,尤其是一些主流框架和开源项目,都大量使用内部类,而这些往往也是面试中的重点,所以,这部分一定要非常重视!!!

2024-02-06 15:00:08 1358 1

原创 内部类之局部内部类(内部类合集,第二篇,原理+细节)

接下来,我们仔细阐述内部类中的----局部内部类。请各位一定要把握一个核心-----内部类也是类,局部内部类是指内部类处在局部变量的位置,大家对这个一定要有一个位置的感觉,再结合局部变量的特点和类的特点去学习就不会有问题。

2024-02-06 12:14:30 349 1

原创 Java中的自定义异常---第三篇(什么情况下需要自定义异常以及如何去自定义)

Java中的自定义异常---第三篇(什么情况下需要自定义异常以及如何去自定义)

2024-02-05 18:17:06 361 1

原创 Java中的异常处理---第二篇(共三篇,原理+具体实现和细节)

Java中的异常处理---第二篇(原理+具体实现和细节)

2024-02-05 15:03:46 808 1

原创 对Java中的异常的认识和分析(共三篇--异常认识和异常处理及自定义异常,此为一)

对Java中的异常的认识和分析(共两篇--异常认识和异常处理及自定义异常,此为一)

2024-02-05 13:59:29 451 1

原创 Java中的多态(二)---动态绑定(父类引用指向子类对象)

Java中的多态(二)---动态绑定(父类引用指向子类对象),涉及原理--用最通俗易懂的语言来描述原理,一篇搞定多态核心!

2024-01-29 11:12:27 528

原创 java中的多态之一参数传递(深入体会,总结多方话语,连更三篇,此为一)

Java三大特性之一---多态的使用方式一

2024-01-27 12:14:01 442

原创 Java实现二分查找

Java实现二分查找(非递归写法)

2022-09-17 20:31:24 226 1

原创 什么是高内聚,低耦合

最近因为要学习springboot,又去看了一遍spring,在这里简单的再复习一下其中的核心思想。如果觉得内容繁琐,可以直接看结论哦!# 什么是低耦合? 我们先来说低耦合,因为这个比较广为人知,低耦合是针对于各个模块之间的,我们在实现一个项目时,会把各种功能分开实现,封装成为一个一个模块,从而降低他们之间的耦合性,耦合就是类似于齿轮,我们熟知,一个一个的齿轮协同工作,虽然看起来非常完美,但一旦其中一个出现问题,就需要停掉所有服务,重新修理,这对维护和升级来说都是非常痛苦的一件事。...

2022-03-13 13:26:15 9444

原创 深入理解vue中的插槽slot

首先来看vue官网对于插槽的解释:通俗来讲,插槽就是由父组件决定子组件中要展示什么内容。其次,我们需要知道,插槽分为三种,匿名插槽,具名插槽,作用域插槽。顾名思义,匿名插槽就是没有指定name的插槽,使用该插槽,父组件会将子组件中所有定义插槽的地方替换为父组件中的内容具名插槽:就是在插槽中指定name属性,并给它一个名称,使用该插槽时,父组件只会将定义名称相同的子组件插槽替换。作用域插槽:这个不能顾名思义了,作用域插槽通俗来说,就是一个绑定了数据的插槽,绑定的数据只能在当前插槽内使用,所以称

2022-03-09 15:29:12 210

原创 对于v-bind在elementui中的使用

最近在学习vue和elementui的过程中遇到了一些问题,初学时,用v-bind来绑定数据,绑定样式来动态控制,但在做项目时发现,对于data中同一个属性,有些不需要使用v-bind绑定,而有些却需要使用v-bind绑定,eg:图一图二中实现了对loading这个变量的绑定,本人经过询问以及查阅,发现这个与elementui这个第三方包的底层有关,如果是写原生的vue,那么对于数据的绑定是一定需要使用v-bind,但如果使用elementui这种第三方包,例如v-loading,eleme..

2022-03-09 13:31:40 1860

空空如也

空空如也

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

TA关注的人

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