- 博客(150)
- 收藏
- 关注
原创 防抖和节流
就是指连续触发事件但是在设定的一段时间内中只执行最后一次。假如:设定1000毫秒执行,当你触发事件了,他会1000毫秒后执行,但是在还剩500毫秒的时候你又触发了事件,那就会重新开始1000毫秒之后再执行。代码思路是利用定时器,每次出发前先清掉以前的定时器(只要最后一次的操作。
2024-07-27 16:32:31 261
原创 04-springmvc-RequestContextHolder
该方法实现的原理是,在Controller方法开始处理请求时,Spring会将request对象赋值到方法参数中。此时request对象是方法参数,相当于局部变量,毫无疑问是线程安全的。Controller中获取request对象后,如果要在其他方法中(如service方法、工具类方法等)使用request对象,需要在调用这些方法时将request对象作为参数传入。
2024-04-07 10:10:47 812
原创 如何把已安装的nodejs高版本降级为低版本
使用nvm来管理node.js的版本真的很方便,这样就可以根据自己的需要来回切换node.js版本!最好先卸载之前的node再用nvm下载nodejs,不然可能会出错。
2024-03-04 18:58:10 9222 2
原创 4-Bean的循环依赖
问题:请聊一聊Bean的循环依赖答案:总:Bean的循环依赖指的是À依赖B,B又依赖A这样的依赖闭环问题,在Spring中,通过三个对象缓存区来解决循环依赖问题,这三个缓存区被定义到了DefaultSingletonBeanRegistry中,分别是用来存储创建完毕的Bean,用来存储未完成依赖注入的Bean,还有用来存储创建Bean的ObjectFactory。假如说现在A依赖B,B依赖A,整个 Bean的创建过程是这样的分。
2024-02-26 17:22:29 880
原创 3-Bean的生命周期
问题:请聊一聊Bean的生命周期答案:总:Bean的生命周期总的来说有4个阶段,分别是创建对象,初始化对象,使用对象以及销毁对象,而且这些工作大部分都是交给Bean工厂的doCreateBean方法完成的分首先,在创建对象阶段,先调用构造方法实例化对象,对象有了后会填充该对象的内容,其实就是处理依赖注入其次,对象创建完毕后,需要做一些初始化的操作,在这里涉及到几个扩展点执行Aware感知接口的回调方法执行Bean后置处理器的postProcessBeforeInitialization方法。
2024-02-23 18:43:08 451
原创 2-IOC容器的初始化流程
问题:请聊一聊IOC容器的初始化流程答案:总:IOC容器的初始化,核心工作是在AbstractApplicationContext.refresh()方法中完成的分:在refresh()方法中主要做了这么几件事准备BeanFactory,在这一块需要给BeanFactory设置很多属性,比如类加载器,Environment等执行BeanFactory后置处理器,这一阶段会扫描要放入到容器中的Bean信息,得到对应的BeanDefinition(注意:这里只是扫描,不创建)
2024-02-21 17:14:20 497
原创 1-SpringBoot启动流程
问题:请聊一聊SpringBoot的启动流程答案:总:SpringBoot启动,其本质就是加载各种配置信息,然后初始化IOC容器并返回分:在启动的过程中会做这么几个事情首先,当我们在启动类执行SpringApplication.run这行代码的时候,在它的方法内部其实会做两个事情创建SpringApplication对象;执行run方法。其次,在创建SpringApplication对象的时候,在它的构造方法内部主要做3个事情。
2024-02-21 16:22:45 358
原创 0-前置知识
SpringBoot框架在设计之初,为了有更好的兼容性,在不同的运行阶,段提供了非常多的扩展点,可以让程序员根据自己的需求,在整个Spring应用程序运行过程中执行程序员自定义的代码。
2024-02-21 15:44:23 858
原创 05-springboot中使用阿里云oss
OSS」的英文全称是Object Storage Service,翻译成中文就是「对象存储服务」,官方一点解释就是对象存储是一种使用HTTP API存储和检索非结构化数据和元数据对象的工具。白话文解释就是将系统所要用的文件上传到云硬盘上,该云硬盘提供了文件下载、上传等一列服务,这样的服务以及技术可以统称为OSS,业内提供OSS服务的厂商很多,知名常用且成规模的蓝队云等。
2023-12-27 12:07:08 2226 1
原创 05-SpringBoot-自定义校验
在控制器上添加@Validated注解,在接口方法的简单数据类型参数前面添加校验注解@NotNull@NotEmpty@Email。实体类的成员变量上添加校验注解@NotNull@NotEmpty@Email,接口方法的实体类参数上添加@Validated注解。
2023-12-26 09:52:52 525 1
原创 数据在网络中是怎么传输的?
同一子网,使用ARP协议(IP获取mac)寻址,在数据链路层进行通信同一公网,不同子网,通过网关进入网络层,找到另一个子网的网关,然后再下沉至数据链路层进行通信不同公网,私网地址先通过nat转换成公网地址,然后再通过公网地址,访问另一公网。
2023-12-12 21:25:58 1089
原创 OSI七层网络参考模型
所以默认网关收到消息后查看了帧,发现了发送端的MAC地址,再解封发现包里面的IP地址,就会把客户端MAC地址和IP地址关联为一台主机。同时默认网关会把自己的IP地址放入包里,再结合自己的MAC地址封装成帧,默认网关就这样做出响应。比特流到了默认网关的时候,解封为帧发现是送给自己的,那解封为包查看到目标IP地址是在另一网络中的,就会进行路由转发,最终到达了目的网络。假设当前网络有个二层交换机,这个交换机只需要记录下不同的接口对应的MAC地址就好了,交换机收到广播后就帮忙发送出去“人手一份”。
2023-12-08 14:19:29 964
原创 浅谈https
服务器生成一对私钥和公钥(非对称加密)通过 CA私钥 加密 生成 服务器证书(服务器公钥、域名…),计算机中已内置 CA公钥浏览器 拿证书,并用内置的 CA公钥 解密得到 服务器公钥浏览器生成 会话密钥(对称加密),浏览器用 服务器公钥 对自己的 会话密钥 进行加密后发送给服务器。服务器用自己的私钥对 会话密钥 进行解密。浏览器和服务器 使用 会话秘钥 来对 请求报文 和 响应报文 做加密。
2023-12-07 17:06:26 1054
原创 前端项目打包和自动化部署(jenkins+gitee+nginx)
在传统的开发模式中,开发的整个过程是按部就班就行:但是这种模式存在很大的弊端:DevOps是Development和Operations两个词的结合,将开发和运维结合起来的模式:伴随着DevOps一起出现的两个词就是持续集成和持续交付(部署):持续集成CI:持续交付和持续部署:通过安装JDK安装步骤查看云端支持安装的jdk版本安装jdk(以下命令自动安装jdk相关依赖)查看jdk版本,验证是否安装成功安装git使用 yum 安装 git,安装完成后,查看版本安装jenkins添加Jenkins
2023-12-02 17:29:11 1430 2
原创 js中什么看做false
在javascript中,有一些值会被视为false,这些值通常被称为“假值(falsy values)”。虽然它们不是布尔值真正意义上的false,但它们在条件语句判断中会被视为假false,因此了解这些假值非常重要。布尔值 ,false:直接使用布尔字面量 false。数字, 0:当变量的值为数字 0 时,会被判断为 false。空字符串 '':当变量的值为空字符串时,会被判断为 false。null:当变量的值为 null 时,会被判断为 false。undefined。
2023-11-20 16:30:40 144
原创 使用WebSocket实现网页聊天室
一、引言1. 问题引入Hypertext Transfer Protocol (HTTP) 协议一种无状态的、应用层的、以请求/应答方式运行的协议,它使用可扩展的语义和自描述消息格式,与基于网络的超文本信息系统灵活的互动.因为http 通信只能由客户端发起,服务器返回查询结果,HTTP 协议做不到服务器主动向客户端推送信息,服务器有连续的状态变化,客户端要获知就非常麻烦。我们只能使用轮询:每隔一段时候,就发出一个询问,了解服务器有没有新的信息。最典型的场景就是聊天室。轮询的效率低,非常浪费
2023-11-16 17:59:02 1704
原创 JVM垃圾回收机制
本节主要讲解 7 种垃圾回收器,其中有 3 种垃圾回收器是作用于年轻代垃圾回收的收集器;另外 3 种圾回收器是作用于老年代垃圾回收的收集器;剩余的 1 种垃圾回收器能够同时作用于年轻代和老年代。
2023-11-10 18:06:04 184
原创 JVM运行时数据区
基本概念:Java 栈有两个,分别是虚拟机栈和本地方法栈。这里以虚拟机栈为例,本地方法栈和虚拟机栈基本相同。栈的特点:对于每个线程,将创建单独的运行时栈。对于每个方法调用,将在栈存储器中产生一个条目,称为栈帧。所有局部变量将在栈内存中创建。栈区域是线程安全的,因为它不共享资源。Java 虚拟机栈是线程私有的,它的生命周期与线程相同(随线程而生,随线程而灭);如果线程请求的栈深度大于虚拟机所允许的深度,将抛出 StackOverflowError 异常;
2023-11-10 17:03:53 1203
原创 简单聊聊java中各种常量池
基本类型的包装类的常量池:Java中有6种基本类型的包装类型实现了常量池技术,分别是Byte,Short,Integer,Long,Character,Boolean,其中Byte,Short,Integer,Long,Character这5种整型的包装类只是在对应值小于等于127时才可使用对象池。另外两种浮点数类型的包装类型没有实现。包装类型在进行运算时可能会自动拆箱三种常量池:Class文件常量池(字面量,符号引用),其中字面量的概念需要重点掌握。运行时常量池字符串常量池字符串常量池。
2023-11-09 17:28:10 283
原创 Java并发工具-4-并发框架(Executor&ForkJoin)
Java 1.7 引入了一种新的并发框架—— Fork/Join Framework,主要用于实现“分而治之”的算法,特别是分治之后递归调用的函数。ForkJoin框架的本质是一个用于并行执行任务的框架, 能够把一个大任务分割成若干个小任务,最终汇总每个小任务结果后得到大任务的计算结果。在Java中,ForkJoin框架与ThreadPool共存,并不是要替换ThreadPool其实,在Java 8中引入的并行流计算,内部就是采用的ForkJoinPool来实现的。
2023-11-08 17:18:29 409
原创 Java并发工具-3-并发容器(Collections)
如果 key 对应的 value 不存在,则 put 进去,返回 null。否则不 put,返回已存在的 value。put在放入数据时,如果放入数据的key已经存在与Map中,最后放入的数据会覆盖之前存在的数据,而在放入数据时,如果存在重复的key,那么putIfAbsent不会放入值。putIfAbsent 如果传入key对应的value已经存在,就返回存在的value,不进行替换。如果不存在,就添加key和value,返回null。/*** put*/map.put(1, "张三")
2023-11-08 14:42:43 90
原创 Java并发工具-2-同步工具(Tools)
除过上面代码中使用的最基本的 acquire 方法和 release 方法之外,我们还需要掌握其他几个核心方法的使用。下面逐个介绍。上面的例子中使用了 Semaphore (int permits) 构造方法。此构造方法也是用于创建信号量对象,第二个参数表示创建的信号量是否秉持公平竞争特性。即对资源的申请使用严格按照申请的顺序给予允许。一般情况下,我们使用 Semaphore (int permits) 构造方法就可以了。返回当前还可用的许可数,即还允许多少个线程进行使用资源。
2023-11-07 17:40:38 141
原创 Java并发工具-1-原子操作(Atomic)
除了上面代码中使用的最基本的 AtomicInteger (int)、AtomicInteger ()、 set () 、get () 和 decrementAndGet () 方法之外,我们还需要掌握其他几组核心方法的使用。下面逐个介绍。getAndAdd (int) 方法与 AddAndGet (int) 方法第 1 个方法是先获取原值,之后再对原值做增加。注意获取的值是变更之前的值。而第 2 个方法正好相反,是先对原值做增加操作之后再获取更新过的值。// 0// 0,获取当前值并加10。
2023-11-07 11:33:57 548
原创 JUC-3-并发锁
Lock 接口的诞生:在 Java 中锁的实现可以由 synchronized 关键字来完成,但在 Java5 之后,出现了一种新的方式来实现,即 Lock 接口。诞生的意义:Lock 接口支持那些语义不同(重入、公平等)的锁规则,可以在非阻塞式结构的上下文(包括 hand-over-hand 和锁重排算法)中使用这些规则。主要的实现是 ReentrantLock。对于 ReentrantLock,后续有专门的小节进行讲解。JDK 1.5 前的 synchronized。
2023-11-06 20:42:49 149
原创 JUC-2-多线程的安全与同步
定义: 当线程的 run () 方法完成时,或者主线程的 main () 方法完成时,我们就认为它终止了。这个线程对象也许是活的,但是,它已经不是一个单独执行的线程。线程一旦终止了,就不能复生。概念:synchronized 同步块是 Java 提供的一种原子性内置锁,Java 中的每个对象都可以把它当作一个同步锁来使用,这些 Java 内置的使用者看不到的锁被称为内部锁,也叫作监视器锁。线程的执行。
2023-11-06 17:53:40 95
原创 JUC-1-并发编程基础
定义: 所谓并发编程是指在一台处理器上 “同时” 处理多个任务。并发是在同一实体上的多个事件,多个事件在同一时间间隔发生。意义:开发者通过使用不同的语言,实现并发编程,充分的利用处理器(CPU)的每一个核,以达到最高的处理性能,提升服务器的资源利用率,提升数据的处理速度。定义: Java 内存模型(即 Java Memory Model,简称 JMM)本身是一种抽象的概念,并不真实存在,它描述的是一组规则或规范,通过这组规范定义了程序中各个变量(包括实例字段,静态字段和构成数组对象的元素)的访问方式。介绍。
2023-11-06 17:28:30 84
原创 Java反射详解:入门+使用+原理+应用场景
反射非常强大和有用,,反射机制在框架设计中占有举足轻重的作用。所以,在你Java进阶的道路上,你需要掌握好反射。1.反射是什么?2.反射有什么用?3.反射的实现原理?4.怎么用反射?
2023-11-02 20:57:08 198
原创 js截取字符串方法
一个新的字符串,该字符串值包含 stringObject 的一个子字符串,其内容是从 start 处到 stop-1 处的所有字符,其长度为 stop 减 start。
2023-10-31 18:45:39 369
原创 Vue3中的v-model
Vue2中得 v-model 默认解析成 :value 与 @inputVue3中得 v-model 默认解析成 :modelValue 与 @update:modelValueVue2中得 :attr.sync 默认解析成 :attr 与 @update:attrVue3中得 v-model:attr 默认解析成 :attr 与 @update:attr作用:用于在自定义组件中实现父子组件之间的双向数据绑定也就是说在Vue3中只有v-model,没有.sync如果父组件只写。
2023-10-26 19:47:26 265
原创 TS的内置类型-Pick,Omit
今天我们聊聊Typescript的内置工具类型,其中有两个类型颇为有意思。那就是Pick (选取)和Omit (排除)。从类型对象中选取指定的属性类型从类型对象中排除指定的属性类型,得到剩余的。
2023-10-26 13:46:56 671
原创 vue3中使用svg并封装成组件
安装插件使用插件导入到main使用svg精灵地图</精灵图精灵图定位坐标自行安装一下fast-glob依赖解决该问题。
2023-10-25 23:27:29 1357
原创 vue2、vue3中路由守卫变化
路由守卫就是路由跳转的一些验证,比如登录鉴权(没有登录不能进入个人中心页)等等等路由守卫分为三大类:全局守卫:前置守卫:beforeEach 后置钩子:afterEach单个路由守卫:独享守卫:beforeEnter组件内部守卫:beforeRouteEnter beforeRouteUpdate beforeRouteLeave所有的路由守卫都是三个参数:to: 要进入的目标路由(去哪儿)from: 要离开的路由(从哪来)next: 是否进行下一步(要不要继续全局守卫:全局前置守卫beforEach:
2023-10-25 22:24:15 532
原创 vue3中的route和router
全局的 router 实例。通过 vue 根实例中注入 router 实例,然后再注入到每个子组件,从而让整个应用都有路由功能。其中包含了很多属性和对象(比如 history 对象),任何页面也都可以调用其 push(), replace(), go() 等方法。:当前激活的路由的信息对象。每个对象都是局部的,可以获取当前路由的 path,name, params, query 等属性。因为我们在 setup 里面没有访问 this,所以我们不能再直接访问。方法来获取当前 Vue 实例。
2023-10-24 23:28:43 820
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人