自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 关于OpenFeign的返回类型包装问题

使用feign的解码器。也就是从controller层的返回前端的数据。拆包取出响应的数据。在后来,也就是今天。说:feign的调用会有一个编码器和解码器。我在使用feign的调用时,突然出现了一点点问题。就是对于feign类型的包装问题。这个会让feign调用的数据拆包。

2024-04-01 20:32:41 436

原创 由于webSocket是多例的。造成的问题

【代码】由于webSocket是多例的。造成的问题。

2024-02-23 11:35:00 419

原创 温故而知新——多态

答:在多态中,无法直接访问子类的私有属性。多态是通过父类引用指向子类对象,而父类中没有子类的私有属性。私有属性只能在定义它们的类内部访问,无法从外部或其他类中直接访问。答:是的,你对多态的理解是正确的。多态允许我们使用父类的统一方法名和属性名,在不同的子类中实现不同的方法实现。问:多态可以这样理解吗?用父类统一的方法名以及属性名,然后方法实现是根据子类的内容实现。问:多态中,可以通过多态访问子类的私有属性吗?

2024-02-02 15:08:17 140 1

原创 今日方知-依赖注入

答:在Spring中,如果存在多个类型相同的Bean对象时,Spring容器无法确定要注入哪个Bean对象。为了解决这个问题,Spring提供了根据入参名称来获取Bean对象的方式。这种方式只在Spring容器中生效,而在普通的Java代码中是不生效的。方法名就是Bean的名称,而方法的返回类型就是Bean的类型。当其他组件需要依赖这些Bean对象时,可以通过方法的入参名称来指定要注入的Bean对象。问:当其他组件需要依赖这些Bean对象时,可以通过方法的入参名称来指定要注入的Bean对象。

2024-01-28 19:41:39 217

原创 RabbitMQ快速上手

解耦:通过使用 MQ,发送者和接收者之间的耦合度可以降低。可靠性:MQ 通常提供持久化机制,即使在发送者发送消息后,如果接收者当前不可用,消息也不会丢失。接收者在可用时可以从队列中获取消息并进行处理,确保消息的可靠传递。异步通信:MQ 允许发送者将消息发送到队列中,然后接收者可以异步地从队列中获取消息并进行处理。当发送者发送消息的速度超过接收者的处理速度时,消息可以在队列中暂存,避免系统过载。可以增加多个消费者来处理队列中的消息,从而提高系统的处理能力。前端发送请求后,将消息发送至MQ队列中。

2024-01-28 18:52:11 503

原创 MessageQueue消息队列

应用解耦:微服务模块分开执行。削峰填谷:应对高并发。

2024-01-27 16:47:27 38

原创 Feign远程调用快速上手

2.在他的同胞,或者父包下写下一个feign调用,这个feign调用要使用@feignClient注解。1.首先写好controller层的代码。3.在调用者的父工程pom文件中引入。4.在使用的包下,调用并且使用。

2024-01-26 18:36:32 273 2

原创 FastDFS快速上手

一般用户使用init方法使用地址加端口填充tracker_server对象。在服务器的主机上找到对象。利用tracker_server上传下载对象。存在多个trackerClient。用来处理多个对象,应对高并发。用于存储大量数据文件,或者用在高并发的场景。而访问非常方便,使用url地址进行访问即可。再利用封装好的接口,上传文件。对于FastDFS的了解。

2024-01-26 17:54:55 274

原创 WebSocket的进阶理解

【代码】WebSocket的进阶理解。

2024-01-14 21:35:11 797

原创 利用反射获取websocket,session字段的值

首先利用反射获取方法字段,然后取得字段的值。

2024-01-14 20:32:18 837 2

原创 WebSocket--整合springboot

【代码】WebSocket--整合springboot。

2024-01-12 14:39:46 777

原创 基于Java实现WebSocket快速上手

或者说启用spring框架,因为spring已经整合了ws。@OnOpen 获取的session很重要。

2024-01-12 13:37:36 792

原创 JWT的前身,Cookie与Session(博主也是一天从不懂到理解的)

web 2.0 它是具有交互性的,所以http协议由于对于交互性的不完善,所以使用了 Cookie 与Session 协助使用。弥补了http无状态的缺陷。session与cookie都是有服务器生成的key-value键值对,用来存储特定的值的。这是因为,状态不可以是随意定义的,需要服务端与客户端双方都认同。session存储在服务器,cookie存储在浏览器。

2024-01-11 10:53:06 554

原创 今日方知-Bean是线程安全的吗?

map是一个危险的存在状态的变量。Bean是线程安全的吗?

2024-01-10 09:11:06 429

原创 微信小程序的登录模块实现

用户联动微信小程序。相关的实现层代码。

2024-01-09 20:28:31 686

原创 jwt对称加密测试

【代码】对称加密测试。

2024-01-07 14:20:08 372

原创 Gateway快速上手

可以解决统一访问、隐藏真实的服务器地址、网关进行统一认证、解决跨域问题、限流等问题。所以网关只需要处理网址,基本上只需要处理配置文件和启动类。因为在使用微服务的时候,会有多端请求。将启动类发送到注册中心去。

2024-01-06 15:27:43 1518

原创 ascii

2023-12-27 18:56:28 379

原创 JVM面试问题

虚拟机栈:每一个线程都有一个虚拟机栈,java的方法调用就是使用栈完成的。由操作系统进行交互。程序计数器:因为java是多线程的,在线程切换时,使用程序计数器来记录字节码运行的行数。堆:存储对象数据,以及数组的数据。堆的内存区域是共享的,所以需要考虑线程安全问题。本地方法栈:和虚拟机栈一个原理。不过本地方法栈使用的是c++完成的。java运行时的内存空间,他在jdk的jre中。方法区:存储已被加载的类、静态方法、常量的信息。方法区又分为:运行时常量池,字符串常量池。

2023-12-24 19:12:28 406

原创 Redis的五种存储类型以及常用的用途

存储session、token,地址信息,分布式锁的实现。

2023-12-23 16:10:03 391

原创 Mysql的基础问题原理

存储引擎是Inndb。它支持行级锁,以及表级锁,支持事务操作,需要主键,若未声明主键,则会寻找表中的 not null 以及 unique 修饰的字段。若表中无此类字段,会隐式生成字段。

2023-12-21 22:14:10 724

原创 volatile

用于读操作,会使其他读操作不得位于他的下方的操作排序到上方。用于写操作,会使其他写操作不得在他的上方排序到下方。1、使被修饰变量在运行内存中相互可见。2、禁止指令重排序。

2023-12-18 22:48:50 315

原创 synchronized关键字的底层原理

他的底层是由monitor实现的,monitor是jvm级别的对象,线程获得锁需要使用对象关联monitor。synchronized对象锁采用互斥的方式,让同一时刻,之多有一个秀安承获取对象锁。在monitor内部由三个属性,分别是owner,entrylist、waitlset。其中owern是关联在获得锁的线程,并且只能关联一个线程。entrylist关联的是竞争锁失败的处于阻塞状态的线程。waitset是出于waiting状态的线程。

2023-12-18 20:37:37 515

原创 Map,Set线程不安全怎么解决?

1.使用HashTable,因为HashTable对于get,put方法加锁(使用synchronized修饰着两个方法)。内部将整个哈希表分成多个段(Segments),每个段都维护着一个子哈希表。ConcurrentHashMap(),他每次只给一个桶(数组项)加锁。的段数与 CPU 核心数相同,这样可以最大限度地提高并发性能。

2023-12-16 12:02:08 384

原创 什么是类加载器,常见的类加载器有哪些?

扩展类加载器(Extension ClassLoader):用来加载java的扩展库,java的虚拟机实现会提供一个 扩展库目录,该类加载器在扩展库目录里面查找并加载java类;系统类加载器(AppClassLoader):它根据java的类路径来加载类,一般来说,java应用的类都是 通过它来加载的;启动类加载器(BootStrapClassLoader):用来加载java核心类库,无法被java程序直接引用;类加载器是指:通过一个类的全限定性类名获取该类的二进制字节流叫做类加载器;

2023-12-15 16:03:15 463

原创 什么是类加载?类加载的过程?

如图所示: 加载、验证、准备、初始化和卸载这5个阶段的顺序是确定的,类的加载过程必须按照这种顺序按部就班 地开始,而解析阶段则不一定:它在某些情况下可以在初始化阶段之后再开始,这是为了支持Java语言 的运行时绑定(也称为动态绑定或晚期绑定)类的整个生命周期包括:加载(Loading)、验证(Verification)、准备(Preparation)、解析 (Resolution)、初始化(Initialization)、使用(Using)和卸载(Unloading)7个阶段。

2023-12-15 16:02:28 375

原创 HashMap 的put方法流程?

6. 如果冲突后是链表,判断该链表是否大于 8 ,如果大于 8 并且数组容量小于 64,就进行扩容;如果链表节点大于 8 并且数组的容量大于 64,则将这个结构转换为红黑树;否则,链表插入键值 对,若 key 存在,就覆盖掉 value。1. 首先根据 key 的值计算 hash 值,找到该元素在数组中存储的下标;4. 如果冲突了,且 key 已经存在,就覆盖掉 value;5. 如果冲突后,发现该节点是红黑树,就将这个节点挂在树上;2. 如果数组是空的,则调用 resize 进行初始化;

2023-12-14 22:50:02 385

原创 为什么在解决 hash 冲突的时候,不直接用红黑树?而选择先用链表,再转红黑树?

因为红黑树需要进行左旋,右旋,变色这些操作来保持平衡,而单链表不需要。当元素小于 8 个的时 候,此时做查询操作,链表结构已经能保证查询性能。当元素大于 8 个的时候, 红黑树搜索时间复杂度 是 O(logn),而链表是 O(n),此时需要红黑树来加快查询速度,但是新增节点的效率变慢了。因此,如果一开始就用红黑树结构,元素太少,新增效率又比较慢,无疑这是浪费性能的。

2023-12-14 22:48:59 369

原创 ArrayList 与 Vector 区别?

如果有多个线程会访问到集合,那最好是使用 Vector,因为不需要我们自己再去考虑和编写线程安全的代码。ArrayList在底层数组不够用时在原来的基础上扩展0.5倍,Vector是扩展1倍,这样ArrayList就有利 于节约内存空间。Vector是线程安全的,ArrayList不是线程安全的。其中,Vector在关键性的方法前面都加了 synchronized关键字,来保证线程的安全性。

2023-12-14 22:48:04 339

原创 Arraylist与 LinkedList 异同点?

插入和删除是否受元素位置的影响: ArrayList 采用数组存储,所以插入和删除元素的时间 复杂度受元素位置的影响。比如:执行 add(E e) 方法的时候, ArrayList 会默认在将指定的元 素追加到此列表的末尾,这种情况时间复杂度就是O(1)。: ArrayList的空 间浪费主要体现在在list列表的结尾会预留一定的容量空间,而 LinkedList的空间花费则体现在它的每一个元素都需要消耗比ArrayList更多的空间(因为要存放直 接后继和直接前驱以及数据)。是否支持快速随机访问。

2023-12-14 22:47:30 339

原创 JVM 是如何处理异常的?

JVM 会顺着调用栈去查找看是否有可以处理异常的代码,如果有,则调用异常处理代码。如果 JVM 没有找到可以处理该异常的代码块,JVM 就 会将该异常转交给默认的异常处理器(默认处理器为 JVM 的一部分),默认异常处理器打印出异常信息 并终止应用程序。在一个方法中如果发生异常,这个方法会创建一个异常对象,并转交给 JVM,该异常对象包含异常名 称,异常描述以及异常发生时应用程序的状态。可能 有一系列的方法调用,最终才进入抛出异常的方法,这一系列方法调用的有序列表叫做调用栈。

2023-12-14 22:46:14 414

原创 逢“四”过

出租车司机解释说他不喜欢数字4,所以改装了计费表,任何数字位置遇到数字4就直接跳过,其余功能都正常。程序员小明打了一辆出租车去上班。出于职业敏感,他注意到这辆出租车的计费表有点问题,总是偏大。小明识破了司机的伎俩,准备利用自己的学识打败司机的阴谋。给出计费表的表面读数,返回实际产生的费用。399再多一块钱变为500;23再多一块钱就变为25;39再多一块钱变为50;

2023-12-14 16:50:05 438

原创 访问修饰符的区别

protected(受保护的):对同一个包的类和所有子类可见。default(默认的):在同一个包的类可见;private(私有的):在同一个类中可见;public(公共的):对所有类可见。

2023-12-13 19:57:06 373

原创 String的常用方法

在面试的时候,偶尔就会问你java中的String的一些你常用的方法来考察你对于java的熟练度。但是对于api那种全是英文或者说多个方法杂糅到一块。不花点时间真的不好弄明白。

2023-12-13 16:03:34 557

原创 Mysql的多表联合查询

mysql的多表查询

2023-12-12 21:39:46 1204

原创 Mysql的基础语句

创建表的信息使用指定表查看所有数据库查看当前数据库删除数据库表。

2023-12-12 11:37:52 613

原创 反射篇笔记

反射的本质:加载类。把某个类的字节码文件加载到内存中。并允许以变成的方式解剖类中的各种成分(成员方法,变量,构造器)。例如在使用IDEA时,他的提示,就是利用反射,提前将类中的信息解剖展示出来。

2023-12-11 16:43:16 392

原创 删除链表的倒数第 N 个结点

leetcode第19题

2023-11-12 20:04:48 38

原创 配置环境下载

链接:https://pan.baidu.com/s/1bh0g4UMwfBWyfWu9KbZ1JQ?# 设置mysql数据库的数据的存放目录 ---------是你的文件路径data文件夹自行创建。# 设置mysql的安装目录 ----------是你的文件路径-------------MYSQL下载(更改my.ini本地地址)(用管理员模式进入)(服务名称在中间激活部分见)# 默认使用“mysql_native_password”插件认证。# 设置mysql客户端连接服务端时默认使用的端口。

2023-06-15 20:07:20 74

原创 Mybatis-Plus的逆向工程

【代码】Mybatis-Plus的逆向工程。

2023-06-15 19:57:45 647

空空如也

空空如也

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

TA关注的人

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