- 博客(93)
- 收藏
- 关注
原创 【SpringCloud】SpringAMQP消息发送、消息接收(WorkQueue模型、FanoutExchange、DirectExchange、TopicExchange、消息转换器)
是用于在应用程序或之间传递业务消息的开放标准,该协议与语言和平台无关,更符合微服务中独立性的要求。是基于AMQP协议定义的一套API规范,提供了模板来发送和接收消息。包含两部分,其中spring-amqp是基础抽象,spring-rabbit;是底层的默认实现。用于异步处理入站消息的侦听器容器用于发送和接收消息的 RabbitTemplateRabbitAdmin 用于自动声明队列、交换和绑定@Testi
2024-03-23 15:24:51 806 2
原创 【若依】前后端分离版快速上手
若依框架(RuoYi)是一个基于Spring Boot和Vue.js的快速开发平台,它提供了一套前后端分离的解决方案,能够帮助开发人员快速构建企业级应用程序。该框架包含了许多常用的功能模块,如用户管理、角色权限、数据字典、系统监控、定时任务等,同时也提供了丰富的插件和扩展机制,可以方便地进行定制开发。对于开发人员来说,若依框架提供了一套完整的开发工具和解决方案,可以大大提高开发效率。开发人员可以利用框架提供的模块和组件快速搭建起一个基础的系统框架,然后根据具体业务需求进行定制开发。
2024-02-02 12:42:44 991
原创 【软件工程】软件工程复习题库2023
所谓数据字典,是数据流程图的基础上,进一步定义和描述所有数据的工具,包括对一切动态数据(数据流)和静态数据(数据存储)的数据结构和相互关系的说明,是数据分析和数据管理的重要工具,是系统设计阶段进行数据库(文件)设计的参考依据。数据字典是一种用户可以访问的记录数据库和应用程序源数据的目录。数据字典的内容主要是对数据流程图中的数据项、数据结构、数据流、处理逻辑、数据存储和外部实体等六个方面进行具体的定义。数据流程图配以数据字典,就可以从图形和文字两个方面对系统的逻辑模型进行完整的描述。
2023-12-19 17:54:38 2846 4
原创 【Feign】 基于 Feign 远程调用、 自定义配置、性能优化、实现 Feign 最佳实践
Feign 是一个声明式的http客户端,声明式就相当于MySQL中的事务一样,在Spring中要开启事务,不需要手动打开或关闭,只需要在配置文件中声明事务,Spring就会自动实现事务,同样声明式http客户端也是如此,Feign可以帮助我们优雅的实现http请求的发送。1.引入依赖。
2023-11-19 11:35:27 701
原创 【Nacos】配置管理、微服务配置拉取、实现配置热更新、多环境配置
在微服务搭建中,每个微服务中的业务都需要去完成数据库查询,并且服务之间还会完成相互调用,而要完成相互调用,需要将每个服务都注册到服务中心,消费者就可以从服务中心完成注册发现实现服务获取和负载均衡,完成远程调用,随着服务的增多,可能会有数十上百上千条这种情况,这时就需要对配置文件进行修改,这个配置文件可能跟数十上百上千条微服务都有关系,这时就需要逐个去修改配置,会非常麻烦,而且在配置完后,还需要对每个服务进行重启,而进行统一配置管理后只需要对一个配置文件进行修改即可,通过配置管理服务就可以实现在修改完配置文件
2023-11-18 12:04:30 1081 1
原创 【MybatisPlus】条件构造器、自定义SQL、Service接口
我们可以利用MybatisPlus的Wrapper来构建复杂的where条件,然后自己定义SQL语句中剩下的部分。
2023-11-11 12:30:30 475
原创 【JVM】运行时数据区、程序计数器
类加载器将字节码文件加载到内存当中的时候,会用到两块内存区域:一块是方法区、另外一块叫做堆区,这两块区域都属于Java虚拟机管理的内存,由于JVN在运行过程中会去使用这块内存,所以就称之为运行时数据区域,它的职责除了保存字节码信息之外,还可以将创建出来的对象放到这块内存区域。
2023-11-08 20:32:43 369
原创 【JVM】JDBC案例打破双亲委派机制
JDBC的这个框架的目的是在Java中操作数据库,在他的设计的核心思想中不希望出现具体的数据库的语法,提高它的泛用性,将来对接任何数据库都会比较容易,在JDBC中,设计了一个`DriverManager`的类,这个类会去管理在jar包中的引入的数据库的驱动,比如要使用mysql数据库,那么就会添加一个mysql的驱动jar包,`DriverManager`会负责把驱动jar包加载进来,这样就可以连接mysql的数据库了,要想连接其他类型的数据库,只需将jar包替换成其他数据库的即可
2023-11-05 21:32:00 482
原创 【JVM】双亲委派机制、打破双亲委派机制
双亲委派机制指的是:当一个类加载器接收到加载类的任务时,会自底向上查找是否加载过,再由顶向下进行加载。假设在com.practice包下有一个类A.java,应用程序类加载器接收到一个任务,他要去加载A.java这个类,首先他会检查一下这个类有没有被加载过,发现没有被加载过,那么他就会把这个类委派给它的父类(扩展类加载器),扩展类加载器发现也没有加载过,继续向上委派,委派给它的父亲(启动类加载器),启动类加载器发现A.java曾经加载过,所以它直接把A.java类的class对象返回,加载过程结束。
2023-11-04 21:17:13 190
原创 【JVM】类的声明周期(加载、连接、初始化)
加载(Loading)阶段第一步是类加载器根据类的全限定名通过不同的渠道以二进制流的方式获取字节码信息程序员可以使用Java代码拓展的不同的渠道。
2023-10-30 20:56:13 83
原创 【JVM】字节码文件的组成部分
要想看到java的字节码文件的内容,可以通过jclasslib这个工具来看,运行以上代码,然后通过jclasslib可以看到在这个方法中变量的存放位置,其中,局部变量表数组的0索引位置存放的是main方法的参数 args ,1索引位置存放的是第一个变量 i ,2索引存放的是第二个变量 j ,可以看出,定义在方法中的变量,方法的参数也将作为这个方法的变量存入局部变量表中,定义在方法内的变量会按定义的先后顺序依次存入局部变量表中。
2023-10-28 20:46:55 682
原创 【力扣刷题】删除链表的倒数第 N 个结点、两两交换链表中的节点、随机链表的复制
我的思路是先求出整个链表的长度,要删除倒数第n个节点,则将链表的长度减去n得到要删除的节点的前一个节点的索引,将链表长度减n+1得到要删除的节点的索引,定义两个指针,一个指针表示要删节点的前一个节点,另一个表示要删的节点,根据两个索引值对链表进行遍历,遍历索引值减1次就能得到索引对应的节点处,然后将要删节点的前一个节点的next指向要删的节点的next,完成倒数第n个节点的删除,当要删除的是第一个节点时(即删除倒数第链表长度个节点),直接改变头节点的位置即可。
2023-10-24 21:28:40 79
原创 【力扣刷题】只出现一次的数字、多数元素、环形链表 II、两数相加
创建Map集合,遍历数组,根据当前数字作为键的参数拿到集合中的值count,再判断这个count值是否为空,若为空,则默认这个值为1,将其和当前数字添加到Map集合中,若不为空,则这个值自增1,表示第二次出现这个数字,再将其和当前数字添加到Map集合中,覆盖之前的键值对,当遍历完这个数组后,再对Map集合进行遍历,根据数字作为键的参数得到它所出现的次数,判断这个此时是否等于1,若等于1,即表示当前数字只出现了一次,返回这个数字即可。
2023-10-23 21:31:49 144
原创 【力扣刷题】二叉树的中序遍历、二叉树的最大深度、翻转二叉树、对称二叉树
二叉树不为空,则定义一个栈,用来实现二叉树的中序遍历,定义一个节点指针cur,表示当前节点,当cur不为空或者栈不为空时,进入循环,在循环内再嵌套一个条件为cur不为空的循环,在嵌套的循环中将当前节点加入到栈中,并将当前节点指向当前节点的左子节点,直到将所有的左子节点均添加到栈中,内嵌循环结束,外部循环继续执行,将此时的栈顶元素弹出,并将弹出的节点值加入到集合中,将cur指向弹出的栈顶元素的右子节点,循环遍历,直到栈为空时退出循环,返回集合。
2023-10-22 20:51:19 98
原创 【力扣刷题】数组实现栈、后缀表达式(逆波兰表达式)求值、中缀表达式转换为后缀表达式(无括号&&有括号)
用数组来实现栈的方法相对比较简单,首先定义一个数组,用来模拟栈的功能,定义一个整型变量作为栈顶指针(`int top`),为这个数组栈定义一个带形参的构造方法,参数表示数组的默认长度(`int capacity`),即栈的容量。
2023-10-21 20:39:51 151
原创 【力扣刷题】回文链表、环形链表、合并两个有序链表
首先是要对该链表进行非空校验,若是空链表,直接返回fasle,否则,执行其它逻辑,按照回文链表的规律,可以有这样一个思路:若它是回文链表,可先找到他的前半个回文链表的最后一个节点,通过这个节点,就能找到开始回文的下半个链表的最后一个节点,从该节点处,将后半个回文链表进行整体反转,然后再定义指针进行遍历,从前半个回文链表的头开始作为p1指针,后半个回文链表的头作为p2指针,遍历整个回文链表,判断它们的值是否相同,若不相同,则不是回文链表,否则就是回文链表。
2023-10-20 20:02:34 329
原创 【MyBatisPlus】快速入门、常用注解、常用配置
1.2 自定义的Mapper继承MyBatisPlus的BaseMapper接口1.3 对比Mybatis要操作的数据库表结构:Mybatis的UserMapper.java:Mybatis的UserMapper .xml:MyBatisPlus只需UserMapper.java继承 BaseMapper即可:1.4 MyBatisPlus的增删改查方法二、MyBatisPlus常用注解类名驼峰转下划线作为表名名为id的字段作为主键变量名驼峰转下划线作
2023-10-18 21:03:42 693
原创 【MySQL】索引介绍、索引的数据结构
MySQL索引数据结构对经典的B+Tree进行了优化。在原B+Tree的基础上,增加一个指向相邻叶子节点的链表指针,就形成了带有顺序指针的B+Tree,提高区间访问的性能。
2023-10-17 20:52:20 327
原创 【MySQL】如何在Linux上安装MySQL
切换到mysql目录下,因为对于rpm的包资源管理器来说,它是不会处理它们的依赖关系的,所以要按照一定的顺序安装,依次执行如下命令:
2023-10-16 12:45:51 247
原创 【操作系统】信号量机制(整型信号量、记录型信号量),用信号量实现进程互斥、同步、前驱关系
进程P0在使用资源之前,必须要先进行一个wait原语,对信号量S进行操作,如果当前资源已不够用,整型信号量S就是小于0的,此时P0就需要一直循环等待,若是P0进程执行wait时S大于0,就说明资源够用,此时资源的数量就要减一,此时P0就可以访问资源,在P0访问资源的同时,若是发生了进程切换,其他进程则需要等待P0释放资源才能访问,P0访问资源结束后,会进行signal原语,将整型信号量的值进行加一,也就是释放资源。
2023-10-15 21:35:25 805
原创 【MySQL】事务四大特性ACID、并发事务问题、事务隔离级别
隔离性指的是有若干个并发事务,比如有两个事务,事务1和事务2都在同时操作这个数据库,事务1去操作的时候不会影响并发的事务2的执行,事物2去操作的时候也不会影响并发的事务1去执行,这两个事务是在独立的环境下运行的。
2023-10-14 20:25:50 274
原创 【MySQL】存储引擎简介、存储引擎特点、存储引擎区别
存储引擎是MySQL当中核心的部分,是MySQL当中特有的,是MySQL当中存储数据、建立索引、更新/查询数据等操作的实现方式,不同的存储引擎在实现存储数据、建立索引、更新/查询数据等操作的机制是不一样的,存储引擎是基于表的,而不是基于数据库的,所以在一个数据库下的多张表是可以基于不同的存储引擎的,存储引擎也可被称为表的类型。
2023-10-12 21:32:53 247
原创 【JVM】初步认识Java虚拟机
JVM全称是Java Virtual Machine,中文译名Java虚拟机,JVM本质上是一个运行在计算机上的程序,它的职责是运行Java字节码文件,在字节码文件中包含了一连串的指令,这个指令就是字节码指令,这些指令是无法直接在计算机上运行的,因为计算机只能识别机器码,而Java虚拟机就负责将字节码转换成机器码从而让电脑识别,这个过程被称为解释,相当于将一门语言翻译成另一门语言。
2023-10-11 20:41:35 420
原创 【SpringCloud】Nacos的安装、Nacos注册、Nacos服务多级存储模型
在nacos的配置文件中,有一个端口号的设置,若端口8848已被占用,可更改其他端口号
2023-10-10 20:08:34 238 2
原创 【SpringCloud】Ribbon负载均衡原理、负载均衡策略、饥饿加载
在order–service中的OrderApplication类中,定义一个新的IRule:@Bean配置文件方式:在order–servicel的application.yml文件中,添加新的配置也可以修改规则:ribbon:NFLoadBalancerRuleClassName: com.netflix.loadbalancer.RandomRule # 负载均衡规则。
2023-10-09 21:22:24 361
原创 【SpringCloud】Eureka原理分析、搭建Eureka服务、服务注册、服务发现
eureka中有一个eureka-server(注册中心)和作为eureka-client(eureka客户端)的服务消费者和服务提供者,其中服务提供者在启动时会把自己的信息注册给eureka-server,每一个服务启动时都会进行注册操作,此时,若有服务消费者想要获取一个服务,就可以从eureka注册中心中找,服务消费者将自己需要的服务发给注册中心,注册中心就会返回对应的服务信息,但服务提供者可能是一个集群,那么注册中心返回的结果可能是多个,这时可以采用负载均衡的算法挑出一个,然后发起远程调用的请求。
2023-10-08 20:39:16 723 1
原创 【力扣刷题】两数求和、移动零、相交链表、反转链表
这道题可以通过利用Set集合的特性进行求解,分析题目可以看出是要我们在两个单链表中找出两个链表开始相交时的节点,那么我们就可以先将一个链表存入Set集合,再遍历第二个链表利用Set集合的contains()方法判断当前集合中是否包含第二个集合的节点,若包含,则直接返回当前节点,不包含则继续遍历,遍历完仍未找到,则返回null。
2023-10-07 21:06:20 615
原创 【数据结构】单链表代码实现
链表为空:返回空链表非空:定义一个节点变量指向头,再通过这个变量遍历链表,当当前节点的下一个节点为空时,表示此节点为最后一个节点,返回当前节点/*** 找最后一个节点* @return 返回最后一个节点*/= null) {
2023-10-06 16:20:31 70
原创 【SpringCloud】认识微服务
分布式架构是将一个项目中的不同的需求拆分成了多个模块,每个模块都可以独立开发,互不影响,各个模块最终一起部署,降低了代码的耦合度,但如果项目的需求有很多个,就需要大量的模块,模块数量变多,最终部署的时候就会变得很复杂,再拆分的过程中也会有很多问题,由于拆分好的服务为了保证高可用,还需要集群,与单体架构相比,分布式架构中的某个模块需要另一个模块的提供的信息时不能像单体架构那样直接调用。
2023-10-05 21:34:21 602 1
原创 【Vue】Vue快速入门、Vue常用指令、Vue的生命周期
HTML标签上带有Vs前缀的特殊属性,不同指令具有不同含义。例如:V-if,V-for…
2023-10-04 20:38:23 237
原创 【数据结构】HashSet的底层数据结构
在哈希表中,最重要的是哈希值,哈希值就是对象的整数表现形式,HashSet 在存数据的时候,会根据数组长度和哈希值计算出要存入的位置,哈希值是根据hashCode()方法计算出来的int型的整数,hashCode()方法定义在Object类中,所有对象都可以调用,默认使用地址值进行计算,一般情况下,自定义的对象都要重写hashCode()方法,利用对象内部的属性值计算哈希值。
2023-10-03 11:11:14 1512
原创 【操作系统】进程同步与进程互斥
进程具有异步性的特征。异步性是指,各并发执行的进程以各自独立的、不可预知的速度向前推进。读进程和写进程并发地运行,由于并发必然导致异步性,因此“数据”和“读数据”两个操作执行的先后顺序是不确定的。而实际应用中,又必须按照“写数据→读数据”的顺序来执行的,如何解决这种异步问题,就是“进程同步”所讨论的内容。同步亦称直接制约关系,它是指为完成某种任务而建立的两个或多个进程,这些进程因为需要在某些位置上协调它们的工作次序而产生的制约关系。进程间的直接制约关系就是源于它们之间的相互合作。
2023-10-02 20:51:40 153
原创 【Spring底层原理】BeanFactory的实现
BeanFactory是通过一个DefaultListableBeanFactory来实现的,首先要创建一个DefaultListableBeanFactory的实例对象,创建好后,就作为一个核心的spring容器,此时容器中还没有bean* 这时需要创建bean的定义,主要是描述bean的特征,包括类型,scope(单例、多例),是否有初始化方法和销毁方法,根据这些描述信息就能知道bean有哪些特点,并根据这些描述信息将bean创建出来bean的定义通过`BeanDefinitionBuild
2023-10-01 21:48:55 344
原创 【操作系统】调度算法的评价指标和三种调度算法
由于早期的CPU造价极其昂贵,因此人们会希望让CPU尽可能多地工作CPU利用率:指CPU“忙碌”的时间占总时间的比例。利用率 = 忙碌的时间 / 总时间`Eg:某计算机只支持单道程序,某个作业刚开始需要在CPU上运行5秒再用打印机打印输出5秒,之后再执行5秒,才能结束。在此过程中,CPU利用率、打印机利用率分别是多少?
2023-09-28 20:43:02 730
原创 【操作系统】处理机调度的基本概念和三个层次、进程调度的时机和方式、调度器、闲逛线程
当有一堆任务要处理,但由于资源有限,这些事情没法同时处理。这就需要确定某种规则来决定处理这些任务的顺序,这就是“调度”研究的问题。内存不够时,可将某些进程的数据调出外存。等内存空闲或者进程需要运行时再重新调入内存。暂时调到外存等待的进程状态为挂起状态。被挂起的进程PCB会被组织成挂起队列中级调度(内存调度)一一按照某种策略决定将哪个处于挂起状态的进程重新调入内存。一个进程可能会被多次调出、调入内存,因此中级调度发生的频率要比高级调度更高
2023-09-27 21:25:47 316
原创 Servlet执行流程&生命周期&方法介绍&体系结构、Request和Response的功能详解
初始化方法,在Servleti被创建时执行,只执行一次提供服务方法,每次Servleti被访问,都会调用该方法销毁方法,当Servlet被销毁时,调用该方法。在内存释放或服务器关闭时销毁Servlet获取ServletConfig对象获取Servlet信息/*** 初始化方法* 1.调用时机:默认情况下,Servlet被第一次访问时调用* 2.调用次数:1次*/@Override@Override/*** 提供服务* 1.调用时机:每次Servlet被访问时调用。
2023-09-26 20:23:40 572
原创 单列集合顶层接口Collection
Collection是单列集合的祖宗接口,它的功能是全部单列集合都可以继承使用的。List 系列集合:添加的元素是有序、可重复、有索引Set 系列集合:添加的元素是无序、不重复、无索引
2023-09-25 16:22:51 62
原创 【操作系统】线程、多线程模型
进程是程序的一次执行,但这些功能显然不可能是由一个程序顺序处理就能实现的有的进程可能需要“同时”做很多事,而传统的进程只能串行地执行一系列程序。为此,引入了“线程”,来增加并发度。传统的进程是程序执行流的最小单位引入线程后,线程成为了程序执行流的最小单位引入线程之后,不仅是进程之间可以并发,进程内的各线程之间也可以并发,从而进一步提升了系统的并发度,使得一个进程内也可以并发处理各种任务(如QQ视频、文字聊天、传文件)
2023-09-25 07:56:03 50
原创 Arrays的用法(常见方法的使用)
默认把0索引的数据当做是有序的序列,1索引到最后认为是无序的序列通历无序的序列得到里面的每一个元素,假设当前遍历得到的元素是A元素把A往有序序列中进行插入,在插入的时候,是利用二分查找确定A元素的插入点* 拿着A元素,跟插入点的元素进行比较,比较的规则就是`compare`方法的方法体如果方法的返回值是负数,拿着A继续跟前面的数据进行比较如果方法的返回值是正数,拿着A继续跟后面的数据进行比较如果方法的返回值是0,也拿着A跟后面的数据进行比较
2023-09-24 15:22:49 100
原创 Java内部类(成员内部类、静态内部类、局部内部类、局部内部类)
类的五大成员:属性、方法、构造方法、代码块、内部类在一个类里面,再定义一个类就是内部类。内部类表示的事物是外部类的一部分内部类单独出现没有任何意义内部类的访问特点:内部类可以直接访问外部类的成员,包括私有外部类要访问内部类的成员,必须创建对象// 报错//创建内部类对象。
2023-09-24 11:02:45 65
软件工程题库2023年
2023-12-20
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人