自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 计算机网络面试篇

计算机网络面试题

2025-03-18 16:51:17 897

原创 Java中的I/O

Java中的I/O流

2025-03-15 21:40:12 209

原创 MySQL面试题

mysql八股

2025-03-15 20:49:38 1099

原创 Java集合面试篇

在 JDK 1.7 版本之前, HashMap 数据结构是数组和链表,HashMap通过哈希算法将元素的键(Key)映射到数组中的槽位(Bucket)。如果多个键映射到同一个槽位,它们会以链表的形式存储在同一个槽位上,因为链表的查询时间是O(n),所以冲突很严重,一个索引上的链表非常长,效率就很低了。所以在JDK 1.8版本的时候做了优化,当一个链表的长度超过8的时候就转换数据结构,不再使用链表存储,而是使用红黑树。

2025-03-06 21:38:50 890

原创 Java虚拟机面试题

根据 JDK 8 规范,JVM 运行时内存共分为虚拟机栈堆元空间程序计数器本地方法栈五个部分。还有一部分内存叫直接内存,属于操作系统的本地内存,也是可以直接操作的。元空间:元空间的本质和永久代类似,都是对 JVM 规范中方法区的实现。不过元空间与永久代之间最大的区别在于:元空间并不在虚拟机中,而是使用本地内存。Java 虚拟机栈每个线程有一个私有的栈,随着线程的创建而创建。栈里面存着的是一种叫 “栈帧” 的东西,每个方法会创建一个栈帧,栈帧中存放了局部变量表基本数据类型和对象引用。

2025-03-04 15:45:29 1025

原创 Java并发面试篇

什么是线程池技术?其实,线程池就是一个可以复用线程的技术。要理解什么是线程复用技术,我们先得看一下不使用线程池会有什么问题,理解了这些问题之后,我们在解释线程复用同学们就好理解了。用户每次发起一个请求给后台,后台就创建一个新的线程来处理,下次新的任务过来肯定也会创建新的线程,如果用户量非常大,创建的线程也讲越来越多。然而,创建线程是开销很大的,并且请求过多时,会严重影响系统性能。而使用线程池,就可以解决上面的问题。如下图所示,

2025-03-01 19:40:56 737

原创 Redis面试篇

Redis分片集群如何判断某个key应该在哪个实例?将16384个插槽分配到不同的实例根据key计算哈希值,对16384取余余数作为插槽,寻找插槽所在实例即可如何将同一类数据固定的保存在同一个Redis实例?Redis计算key的插槽值时会判断key中是否包含{},如果有则基于{}内的字符计算插槽数据的key中可以加入{类型},例如key都以{typeId}为前缀,这样同类型数据计算的插槽一定相同。

2025-03-01 11:41:49 1082

原创 RabbitMq高级

Mq高级

2025-02-27 19:43:38 1093

原创 数组总结【代码随想录】

直接输出移除指定元素后的数组长度是非常容易的,原地修改数组需要:如果第一个元素是指定的元素,那么我们将最后一个元素的值赋给第一个元素并且len指针往前移(逻辑上把指定元素删了,数组长度减1)。

2025-02-26 22:12:54 999

原创 RabbitMQ基础

Work模型的使用:多个消费者绑定到一个队列,同一条消息只会被一个消费者处理通过设置prefetch来控制消费者预取的消息数量交换机的作用是什么?接收publisher发送的消息将消息按照规则路由到与之绑定的队列不能缓存消息,路由失败,消息丢失FanoutExchange的会将消息路由到每个绑定的队列描述下Direct交换机与Fanout交换机的差异?Fanout交换机将消息路由给每一个与之绑定的队列Direct交换机根据RoutingKey判断路由给哪个队列。

2025-02-26 20:51:18 915

原创 java基础面试篇

Java 能支持跨平台,主要依赖于 JVM 关系比较大。JVM也是一个软件,不同的平台有不同的版本。我们编写的Java源码,编译后会生成一种 .class 文件,称为字节码文件。Java虚拟机就是负责将字节码文件翻译成特定平台下的机器码然后运行。也就是说,只要在不同平台上安装对应的JVM,就可以运行字节码文件,运行我们编写的Java程序。而这个过程中,我们编写的Java程序没有做任何改变,仅仅是通过JVM这一”中间层“,就能在不同平台上运行,真正实现了”一次编译,到处运行“的目的。

2025-02-25 17:00:35 1167

原创 服务保护和分布式事务

Sentinel是阿里巴巴开源的一款服务保护框架,目前已经加入SpringCloudAlibaba中。官方网站:核心库(Jar包):不依赖任何框架/库,能够运行于 Java 8 及以上的版本的运行时环境,同时对 Dubbo / Spring Cloud 等框架也有较好的支持。在项目中引入依赖即可实现服务限流、隔离、熔断等功能。控制台(Dashboard):Dashboard 主要负责管理推送规则、监控、管理机器信息等。为了方便监控微服务,我们先把Sentinel的控制台搭建出来。

2025-02-20 15:18:00 615

原创 回溯&&单调栈总结

数字 x 的下一个更大的元素是按数组遍历顺序,这个数字之后的第一个比它更大的数,这意味着你应该循环地搜索它的下一个更大的数。图中可以看出遍历的深度,就是输入"23"的长度,而叶子节点就是我们要收集的结果,输出["ad", "ae", "af", "bd", "be", "bf", "cd", "ce", "cf"]。例如,给定一个列表 temperatures = [73, 74, 75, 71, 69, 72, 76, 73],你的输出应该是 [1, 1, 4, 2, 1, 1, 0, 0]。

2025-01-14 11:39:42 647

原创 微服务-02

Component@Override// 编写过滤器逻辑System.out.println("未登录,无法访问");// 放行// 拦截@Override// 过滤器执行顺序,值越小,优先级越高return 0;

2024-12-19 17:37:12 1472

原创 二叉树总结

思路: 层序遍历,至最后一行,拿到第一个元素。

2024-12-19 15:19:20 1211

原创 微服务-01【续】

而且这种调用方式,与原本的本地方法调用差异太大,编程时的体验也不统一,一会儿远程调用,一会儿本地调用。因此,我们必须想办法改变远程调用的开发模式,让。上篇文章我们利用Nacos实现了服务的治理,利用利用RestTemplate实现了服务的远程调用。Feign底层发起http请求,依赖于其它的框架。有了上述信息,OpenFeign就可以利用动态代理帮我们实现这个方法,并且向。Feign默认的日志级别就是NONE,所以默认我们看不到请求日志。方案2抽取相对麻烦,工程结构相对更复杂,但服务之间耦合度降低。

2024-12-12 15:43:57 1139

原创 微服务-01

什么时候需要拆分微服务?如果是创业型公司,最好先用单体架构快速迭代开发,验证市场运作模型,快速试错。当业务跑通以后,随着业务规模扩大、人员规模增加,再考虑拆分微服务。如果是大型企业,有充足的资源,可以在项目开始之初就搭建微服务架构。如何拆分?首先要做到高内聚、低耦合从拆分方式来说,有横向拆分和纵向拆分两种。纵向就是按照业务功能模块,横向则是拆分通用性业务,提高复用性服务拆分之后,不可避免的会出现跨微服务的业务,此时微服务之间就需要进行远程调用。微服务之间的远程调用被称为RPC,即远程过程调用。

2024-12-12 14:50:01 1034

原创 Docker基础

命令说明文档地址拉取镜像推送镜像到DockerRegistry查看本地镜像docker rmi删除本地镜像docker rmidocker run创建并运行容器(不能重复创建)docker run停止指定容器启动指定容器重新启动容器docker rm删除指定容器docker ps查看容器docker ps查看容器运行日志进入容器保存镜像到本地压缩文件加载本地压缩文件到镜像查看容器详细信息图示:​默认情况下,每次重启虚拟机我们都需要手动启动Docker和Docker中的容器。

2024-12-10 15:55:25 1049 1

原创 MyBatisPlus

为了简化单表CRUD,MybatisPlus提供了一个基础的BaseMapper接口,其中已经实现了单表的CRUD:因此自定义的Mapper只要实现了这个BaseMapper,就无需自己实现单表CRUD了。修改mp-demo中的包下的UserMapper接口,让其继承BaseMapper在UpdateWrapper的案例中,我们在代码中编写了更新的SQL语句:这种写法在某些企业也是不允许的,因为SQL语句最好都维护在持久层,而不是业务层。

2024-11-29 19:11:25 1263

原创 苍穹外卖复习总结

进入到sky-server模块,创建com.sky.annotation包。/*** 自定义注解,用于标识某个方法需要进行功能字段自动填充处理*///数据库操作类型:UPDATE INSERT其中枚举类OperationType已在sky-common模块中定义,其这枚举项就表示枚举类的对象,只是这些对象在定义枚举类时就预先写好了,以后就只能用这几个固定的对象。想要获取枚举类中的枚举项,只需要用类名调用就可以了。/*** 数据库操作类型*//*** 更新操作*/

2024-11-18 11:27:51 271

原创 Lambda表达式&&方法引用(JDK8新特性)

最后,再准备一个测试类,在测试类中创建CreateCar接口的实现类对象,先用匿名内部类创建、再用Lambda表达式创建,最后改用方法引用创建。现在,我想要把下图中Lambda表达式的方法体,用一个实例方法代替。Lambda是用来简化匿名代码的书写格式的,而方法引用是用来进一步简化Lambda表达式的,它简化的更加过分。因为方法引用是基于Lamdba表达式简化的,所以也要按照Lamdba表达式的使用前提来用,特定类型的方法引用是没有什么道理的,只是语法的一种约定,遇到这种场景,就可以这样用。

2024-11-06 15:32:24 509

原创 Maven高级

所谓分模块设计,顾名思义指的就是我们在设计一个 Java 项目的时候,将一个 Java 项目拆分成多个模块进行开发。1). 未分模块设计的问题如果项目不分模块,也就意味着所有的业务代码是不是都写在这一个 Java 项目当中。随着这个项目的业务扩张,项目当中的业务功能可能会越来越多。假如我们开发的是一个大型的电商网站,这个项目组至少几十号甚至几百号开发人员,这些开发人员全部操作这一个 Java 项目。此时大家就会发现项目管理和维护起来将会非常的困难。

2024-10-19 11:47:13 3488

原创 BigDecimal类&Date类&JDK8日期

JDK8新增的日期类分得更细致一些,比如表示年月日用LocalDate类、表示时间秒用LocalTime类、而表示年月日时分秒用LocalDateTime类等;Java语言规定,1970年1月1日0时0分0秒认为是时间的起点,此时记作0,那么1000(1秒=1000毫秒)就表示1970年1月1日0时0分1秒。为了解决计算精度损失的问题,Java给我们提供了BigDecimal类,它提供了一些方法可以对数据进行四则运算,而且不丢失精度,同时还可以保留指定的小数位。这两个类可以用来对计算两个时间点的时间间隔。

2024-10-16 21:57:49 998

原创 SpringBoot原理(续)

这是因为在实际的项目开发当中,我们可能会用到很多第三方的技术,并不是所有的第三方的技术官方都给我们提供了与SpringBoot整合的starter起步依赖,但是这些技术又非常的通用,在很多项目组当中都在使用。将来在项目当中,我要想使用这个技术,我。web后端开发现在基本上都是基于标准的三层架构进行开发的,在三层架构当中,Controller控制器层负责接收请求响应数据,Service业务层负责具体的业务逻辑处理,而Dao数据访问层也叫持久层,就是用来处理数据访问操作的,来完成数据库当中数据的增删改查操作。

2024-10-16 15:56:56 1066

原创 SpringBoot原理

在实现类重写的selectImports()方法,读取当前项目下所有依赖jar包中META-INF/spring.factories、META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports两个文件里面定义的配置类(配置类中定义了@Bean注解标识的方法)。如果采用以上这种方式来完成自动配置,那我们进行项目开发时,当需要引入大量的第三方的依赖,就需要在启动类上配置N多要扫描的包,这种方式会很繁琐。

2024-10-14 17:15:25 1562

原创 Java中的枚举

既然枚举是一个类的话,我们能不能在枚举类中定义构造器、成员变量、成员方法呢?比如我们现在有这么一个应用,用户进入应用时,需要让用户选择是女生、还是男生,然后系统会根据用户选择的是男生,还是女生推荐不同的信息给用户观看。可以看到,枚举类A是用class定义的,说明枚举确实是一个类,而且X,Y,Z都是A类的对象;其实枚举项就表示枚举类的对象,只是这些对象在定义枚举类时就预先写好了,以后就只能用这几个固定的对象。定义一个枚举类,在枚举类中定义三个枚举项X, Y, Z。修饰,所以被可以类名调用,而且不能更改。

2024-10-12 15:14:55 211

原创 Java中的泛型

ArrayList集合的设计者在定义ArrayList集合时,就已经明确ArrayList集合时给别人装数据用的,但是别人用ArrayList集合时候,装什么类型的数据他不知道,所以就用一个。泛型指的是,在定义类、接口、方法时,同时声明了一个或者多个类型变量(如:<E>),称为泛型类、泛型接口、泛型方法、它们统称为泛型。泛型类,在实际工作中一般都是源代码中写好,我们直接用的,就是ArrayList<E>这样的,自己定义泛型类是非常少的。定义一个Data<T> 泛型接口,T表示接口中要处理数据的类型。

2024-09-26 16:30:20 407

原创 Spring中的AOP

我们要想完成统计各个业务方法执行耗时的需求,我们只需要定义一个模板方法,将记录方法执行耗时这一部分公共的逻辑代码,定义在模板方法当中,在这个方法开始运行之前,来记录这个方法运行的开始时间,在方法结束运行的时候,再来记录方法运行的结束时间,中间就来运行原始的业务方法。我们所说的模板方法,其实就是代理对象中所定义的方法,那代理对象中的方法以及根据对应的业务需要, 完成了对应的业务功能,当运行原始业务方法时,就会运行代理对象中的方法,从而实现统计业务方法执行耗时的操作。切入点指的是匹配连接点的条件。

2024-09-19 15:42:25 1164 2

原创 Java中的事务管理

以上业务功能delete()方法在运行时,会引发除0的算数运算异常(运行时异常),出现异常之后,由于我们在方法上加了@Transactional注解进行事务管理,所以发生异常会执行rollback回滚操作,从而保证事务操作前后数据是一致的。所谓事务的传播行为,指的就是在A方法运行的时候,首先会开启一个事务,在A方法当中又调用了B方法, B方法自身也具有事务,那么B方法在运行的时候,到底是加入到A方法的事务当中来,还是B方法在运行的时候新建一个事务?例如:两个事务方法,一个A方法,一个B方法。

2024-09-18 15:09:28 1848

原创 idea连接数据库大避雷!!!

学习的时候,用黑马的资料安装的数据库,命令行能正常启动,SQLyog也能正常连接,就是tmd idea连接不了。然后就晚上各种搜,有的说数据库驱动版本不匹配,有的说时区问题,都不能解决我的问题!,折腾了几次,还是卸了重装吧,重装也有方法。具体什么原理咱也不太清楚,反正错误大概意思是说:缺少客户端插件啥玩意的。按照这篇博客重装,还是老毛病,无用!当然有的同学没出现这个问题,有的出现了可以避避雷!参考这篇一路下来安装,连接,成功连接!

2024-09-15 17:04:56 553

原创 Java中的异常及处理

上述错误信息的含义是,dept部门表的name字段的值 就业部 重复了,因为在数据库表dept中已经有了就业部,之前设计这张表时,为name字段建议了唯一约束,所以该字段的值是不能重复的。最终抛给框架之后,框架就会返回一个JSON格式的数据,里面封装的就是错误的信息,但是框架返回的JSON格式的数据并不符合我们的开发规范。刚才的复习已经回顾了什么是异常了,但是无法为这个世界上的全部问题都提供异常类,如果企业自己的某种问题,想通过异常来表示,那就需要自己来定义异常类了。而此时,会发现,网络请求报错了。

2024-09-13 10:53:51 917

原创 JavaWeb案例-登录认证

如果是第一次请求Session ,会话对象是不存在的,这个时候服务器会自动的创建一个会话对象Session。获取到会话对象 session 之后,要给浏览器响应数据,最终在给浏览器响应数据的时候,就会携带这么一个 cookie 的名字,就是 JSESSIONID ,下一次再请求的时候,是不是又会将 Cookie 携带到服务端?通过统一拦截的技术,我们可以来拦截浏览器发送过来的所有的请求,拦截到这个请求之后,就可以通过请求来获取之前所存入的登录标记,在获取到登录标记且标记为登录成功,就说明员工已经登录了。

2024-09-10 17:59:12 2082

原创 Java中的配置文件

如果我们开发的是一个真实的企业级项目, Java类可能会有很多,如果将这些参数分散的定义在各个Java类当中,我们要修改一个参数值,我们就需要在众多的Java代码当中来定位到对应的位置,再来修改参数,修改完毕之后再重新编译再运行。前面我们一直使用springboot项目创建完毕后自带的application.properties进行属性的配置,在springboot项目当中是支持多种配置方式的,除了支持properties配置文件以外,还支持另外一种类型的配置文件,yml格式的配置文件。

2024-09-07 11:56:44 2125

原创 Java中的反射

字节码文件:就是通过java文件编译之后的class文件(是在硬盘上真实存在的,用眼睛能看到的)理解:集合中的泛型只在java文件中存在,当编译成class文件之后,就没泛型了。字节码文件对象:当class文件加载到内存之后,虚拟机自动创建出来的对象。字节码文件对象,这个对象在内存中是唯一的。需求:利用反射根据文件中不同的类名和方法名,创建不同的对象并调用方法。如果当前获取到的是私有的,必须要临时修改访问权限,否则无法使用。,把要创建的对象信息和方法写在配置文件中。如何获取class字节码文件的对象。

2024-09-07 10:51:32 1155

原创 SpringBootWeb案例(续)

在此案例中,在新增员工的时候,要上传员工的头像,此时就会涉及到文件上传的功能。在进行修改员工信息的时候,我们首先先要根据员工的ID查询员工的信息用于页面回显展示,然后用户修改员工数据之后,点击保存按钮,就可以将修改的数据提交到服务端,保存到数据库。在新增员工的时候,上传员工的图像,而之所以需要上传员工的图像,是因为将来我们需要在系统页面当中访问并展示员工的图像。使用分页解决这个问题。在新增用户时,我们需要保存用户的基本信息,并且还需要上传的员工的图片,我们先完成第一步操作,保存用户的基本信息。

2024-09-05 19:56:30 1289

原创 SpringBootWeb案例

第2步:创建一个SpringBoot工程,选择引入对应的起步依赖(web、mybatis、mysql驱动、lombok) (可以创建完毕之后,在pom.xml文件中更改版本号)我们看到,原始的传统URL呢,定义比较复杂,而且将资源的访问行为对外暴露出来了。如:users、emps、books…查询的部门的信息:部门ID、部门名称、修改时间通过页面原型以及需求描述,我们可以看到,部门查询,是不需要考虑。点击 "新增部门" 按钮,弹出新增部门对话框,输入部门名称,点击 "保存" ,将部门信息保存到数据库。

2024-09-02 16:32:19 975 1

原创 Bean管理

默认情况下,springboot项目在启动的时候会自动创建IOC容器(也称之为Spring容器),并且在启动的过程中会自动的将bean对象都创建好,存放在IOC容器当中。上述所说的 【Spring项目启动时,会把其中的bean都创建好】还会受到作用域及延迟初始化影响,这里主要针对于默认的单例非延迟加载的bean而言。(默认情况下,IOC中的bean对象是单例)那么能不能将bean对象设置为非单例的(每次获取的bean都是一个新对象)?知道了bean的5种作用域了,我们要怎么去设置一个bean的作用域呢?

2024-08-29 11:23:41 1042

原创 Mybatis的XML配置文件

在员工管理的页面中,当我们进行更新数据时,会点击 “编辑” 按钮,然后此时会发送一个请求到服务端,会根据Id查询该员工信息,并将员工数据回显在页面上。在Mybatis中提供了很多实现动态SQL的标签,我们学习Mybatis中的动态SQL就是掌握这些动态SQL标签。在页面原型中,列表上方的条件是动态的,是可以不传递的,也可以只传递其中的1个或者2个或者全部。在员工管理的列表页面中,我们需要根据条件查询员工信息,查询条件包括:姓名、性别、入职时间。:动态的在SQL语句中插入set关键字,并会删掉额外的逗号。

2024-08-27 17:16:45 2495 1

原创 Java中的注解&定义注解

再比如:@Override注解可以用在方法上,用来标记这个方法是重写方法,被@Override注解标记的方法能够被IDEA识别进行语法检查。@Retetion元注解的使用:定义MyTest3注解时,给MyTest3注解添加@Retetion注解来声明MyTest3注解保留的时期。,比如现在要模拟Junit写一个测试框架,要求有@MyTest注解的方法可以被框架执行,没有@MyTest注解的方法不能被框架执行。定义好MyTest注解之后,我们可以使用MyTest注解在类上、方法上等位置做标记。

2024-08-25 16:31:08 1249

原创 Java中的动态代理

假设现在有一个大明星叫杨超越,它有唱歌和跳舞的本领,作为大明星是要用唱歌和跳舞来赚钱的,但是每次做节目,唱歌的时候要准备话筒、收钱,再唱歌;杨超越越觉得我擅长的做的事情是唱歌,和跳舞,但是每次唱歌和跳舞之前或者之后都要做一些繁琐的事情,有点烦。于是杨超越就找个一个经济公司,请了一个代理人,代理杨超越处理这些事情,如果有人想请杨超越演出,直接找代理人就可以了。解决这个问题,Java使用的是接口,杨超越想找代理,在Java中需要杨超越实现了一个接口,接口中规定要唱歌和跳舞的方法。3,利用代理调用方法。

2024-08-24 17:48:34 619

空空如也

空空如也

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

TA关注的人

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