自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 事务的总结

幻读:一个事务在执行过程中读取到了另一个事务已提交的插入数据;1、第一类丢失更新(两个事务同时更新,因为其中一个事务的回滚,将另一事务已提交的数据丢失),因为两个事务都去做写操作,然后其中一个事务回滚,导致另一事务已提交的数据丢失。丢失更新:两个事务同时更新一行数据,最后一个事务的更新会覆盖掉第一个事务的更新,从而导致第一个事务更新的数据丢失,这是由于没有加锁造成的;2、脏读(两个事务,其中一事务读另一事务修改后,回滚前的记录),因为读还没有提交事务的数据,当其事务回滚后,读的数据是以前的临时数据。

2023-09-01 23:00:00 1031

原创 今天的小结

1、冒泡排序冒泡排序(Bubble Sort)是一种简单的排序算法,它重复地遍历待排序的元素列表,比较相邻的元素并交换它们的位置,直到整个列表排序完成。冒泡排序的基本思想是通过不断交换相邻元素,将最大(或最小)的元素逐渐 “冒泡” 到列表的一端。冒泡排序的基本步骤:从列表的第一个元素开始,比较它与下一个元素的大小。如果当前元素大于下一个元素,则交换它们的位置,使较大的元素 “冒泡” 到列表的末尾。继续比较和交换相邻元素,直到达到列表的末尾。重复上述步骤,直到整个列表排序完成。

2023-08-29 22:02:08 969

原创 java面试题

过滤器(Filter)和拦截器(Interceptor)是在软件开发中常用的两种处理请求的组件,它们具有类似的功能,但在具体实现和使用场景上有一些区别。需要注意的是,过滤器适用于所有的请求,而拦截器通常是在特定的框架或组件中使用。在具体开发中,根据需求和情境选择合适的过滤器或拦截器来实现所需的功能。过滤器filter和拦截器Interceptor的区别。

2023-08-25 21:29:16 211

原创 混合面试题

session 用于实现服务器端跟踪用户,但是需要客户端的内存 Cookie 的支持,每次提交时需要传递一个 Session的编号,用于区分不同用户,一个用户一个session 例如购物车。spring中security体现了一般的权限管理方法,提供了更多的方法,shiro也是一种权限管理的方法基本使用这个方法,是一个轻量级的工作原理主要包括身份验证和授权两个方面。dao接口是一个代理,典型的阳奉阴违。mybatis是半自动的,是JDBC的浅封装,以sql语句的工作量换取了程序执行的高灵活性。

2023-08-24 20:10:35 169

原创 Dubbo

Dubbo的 Provider 启动时,需要与注册中心交互,先注册自己的服务,再订阅自己的服务,订阅时,采用了观察者模式,开启一个 listener。另外,像上面的 Adaptive 实现,可以做到调用时动态决定调用哪个实现,但是由于这种实现采用了动态代理,会造成代码调试比较麻烦,需要分析出实际调用的实现类。相比起Dubbo简单的四个模块,SpringCloud则是一个完整的分布式一站式框架,他有着一样的服务注册中心,服务提供者,服务消费者,管控台,断路器,分布式配置服务,消息总线,以及服务追踪等;

2023-08-23 20:06:55 122

原创 线程面试题-2

ConcurrentHashMap 的迭代器创建后,就会按照哈希表结构遍历每个元素,但在遍历过程中,内部元素可能会发生变化,如果变化发生在已遍历过的部分,迭代器就不会反映出来,而如果变化发生在未遍历过的部分,迭代器就会发现并反映出来,这就是弱一致性。JDK1.7中的 HashMap 使用头插法插入元素,在多线程的环境下,扩容的时候有可能导致环形链表的出现,形成死循环。这样迭代器线程可以使用原来老的数据,而写线程也可以并发的完成改变,更重要的,这保证了多个线程并发执行的连续性和扩展性,是性能提升的关键。

2023-08-22 22:15:00 123

原创 线程面试题-1

线程安全的:Hashtable:比HashMap多了个线程安全。ConcurrentHashMap:是一种高效但是线程安全的集合。Vector:比Arraylist多了个同步化机制。Stack:栈,也是线程安全的,继承于Vector。线性不安全的:HashMapArraylistLinkedListHashSetTreeSetTreeMap// 容纳键值对的最大值// 负载因子int size;

2023-08-21 23:00:00 264

原创 JVM面试题-2

如果YougGC时新生代有大量对象存活下来,而 survivor 区放不下了,这时必须转移到老年代中,但这时发现老年代也放不下这些对象了,那怎么处理呢?其实JVM有一个老年代空间分配担保机制来保证对象能够进入老年代。在执行每次 YoungGC 之前,JVM会先检查老年代最大可用连续空间是否大于新生代所有对象的总大小。因为在极端情况下,可能新生代 YoungGC 后,所有对象都存活下来了,而 survivor 区又放不下,那可能所有对象都要进入老年代了。

2023-08-20 22:00:21 260

原创 JVM面试题-1

jvm将虚拟机分为5大区域,程序计数器、虚拟机栈、本地方法栈、java堆、方法区;程序计数器:线程私有的,是一块很小的内存空间,作为当前线程的行号指示器,用于记录当前虚拟机正在执行的线程指令地址;虚拟机栈:线程私有的,每个方法执行的时候都会创建一个栈帧,用于存储局部变量表、操作数、动态链接和方法返回等信息,当线程请求的栈深度超过了虚拟机允许的最大深度时,就会抛出StackOverFlowError;

2023-08-19 23:15:00 237

原创 Java面试题

在Java中,"invoke"函数通常用于通过反射机制调用对象的方法或访问对象的字段。它是一个用于动态调用的通用方法,可以使你在运行时根据需要调用特定的方法或字段。Java中有几种不同的"invoke"函数,具体取决于你要调用的方法或字段的类型和参数。: 该方法用于调用指定对象的方法。第一个参数是要调用的方法所属的对象,第二个参数是方法的参数。例如:: 该方法用于通过反射调用类的构造函数创建新的对象。参数是构造函数的参数。例如:: 该方法用于获取指定对象上的字段的值。

2023-08-18 19:47:55 105

原创 Java面试题

停顿时间:介绍 Serial 收集器的时候有提到过,回收器在进行垃圾回收都会或多或少的造成用户线程停顿,停顿的时间长度即为停顿时间。用户的请求不会被阻塞,至少可以看到一个执行结果。吞吐量:CPU用于运行用户代码的时间和CPU运行总消耗时间的比值,即吞吐量=运行用户代码的时间/(运行用户代码的时间+垃圾回收的时间),例如虚拟机总共运行了100分钟,其中一分钟用于垃圾回收,那么此时的吞吐量就是99%,高吞吐量可以高效率的利用CPU时间,使其尽快得完成运算任务,主要适合在后台运算而不需要太多交互的任务。

2023-08-17 19:40:04 102

原创 微服务概述-7

Cookie 是由网站在用户浏览器中存储的小型文本文件,用于跟踪用户的活动和提供个性化的服务。最常用的简单身份认证方式是系统通过核对用户输入的用户名和口令,看其是否与系统中存储的该用户的用户名和口令一致,来判断用户身份是否正确。所谓的跟踪用户是指记录用户操作信息并隔离不同用户数据访问的方法,常见的用户跟踪方法有隐藏域、URL 重写、客户端跟踪用户 Cookie。共享会话数据:在分布式环境中,Spring Session 可以将会话数据存储在共享的存储介质中,以便不同的服务器可以访问和共享相同的会话数据。

2023-08-16 23:30:00 855

原创 微服务与Nacos概述-6

系统的 RBAC 相关表的定义salt varchar(32) comment '盐值',iter int default 6 comment '加密次数')engine = innodb default charset utf8 comment '登录账户信息';id bigint primary key auto_increment comment '代理主键',descn varchar(255) comment '备注说明,一般在具体表中会创建一些看起来似乎没有什么用的列'

2023-08-15 23:32:06 586

原创 MyBatis面试题

MyBatis 是一个小巧、方便、高效、简单、直接、半自动化的持久层框架,Hibernate 是一个强大、方便、高效、复杂、间接、全自动化的持久层框架。

2023-08-14 19:55:30 714

原创 一休休的面试题

ps:已经入秋了为什么还是这么热!!!

2023-08-13 21:22:56 184

原创 微服务与Nacos概述-5

Bean@Bean//表示每间隔100ms,最大间隔1000ms重试一次,最大重试次数是1,因为第三个参数包含了//第一次请求@Component@Override@Override@Slf4j//输出error等级的日志信息return res;控制台上查看日志信息输出。

2023-08-12 22:29:16 1085 1

原创 微服务与Nacos概述-4

Sentinel支持的雪崩解决方案:线程隔离的仓壁模式、降级熔断。

2023-08-11 23:00:00 1673 1

原创 微服务与Nacos概述-3

固定窗口算法实现简单,性能高,但是会有临界突发流量问题,瞬时流量最大可以达到阈值的2倍为了解决临界突发流量,可以将窗口划分为多个更细粒度的单元,每次窗口向右移动一个单元,于是便有了滑动窗口算法滑动窗口当流量到达阈值时会瞬间掐断流量,所以导致流量不够平滑想要达到限流的目的,又不会掐断流量,使得流量更加平滑?可以考虑漏桶算法!需要注意的是,漏桶算法通常配置一个FIFO的队列使用以达到允许限流的作用由于速率固定,即使在某个时刻下游处理能力过剩,也不能得到很好的利用,这是漏桶算法的一个短板。

2023-08-10 22:30:50 1737 1

原创 微服务与Nacos概述-2

服务消费者通过http协议访问服务提供者,可以使用JDK的URL或者使用HttpClient之类的工具,但是直接使用工具比较繁琐,所以使用SpringBoot提供的RestTemplate进行访问。服务注册和发现:Nacos允许服务实例向注册中心注册自己的信息,并且其他服务可以通过查询注册中心来发现可用的服务实例。动态DNS服务:Nacos支持将服务名称解析为具体的网络地址,从而实现动态DNS服务的功能。核心配置,主要修改一下访问端口号,因为应用的默认端口都是8080,会有端口号冲突的问题。

2023-08-09 21:17:38 848 1

原创 Nacos基本应用

负载均衡 Load Balance 就是将用户的请求平均的分配到多个服务上,从而达到系统的高可用,它是一种算法,可以通过该算法实现从地址列表中获取一个地址进行服务调用,LB 实现方式包含集中式(在消费者和服务提供方中间使用独立的代理方式进行负载均衡)和进程内(根据自己的请求情况做负载均衡)两种。服务的消费者向注册中心订阅某个服务,并提交一个监听器,当注册中心中服务发生变更时,监听器会收到通知,这时消费者更新本地的服务实例列表,以保证所有的服务均是可用的。

2023-08-09 09:13:33 148

原创 微服务与Nacos概述

软件架构的演变:单体架构、垂直应用架构、流式计算架构 SOA、微服务架构和服务网格。微服务是一种软件开发架构,它将一个大型应用程序拆分为一系列小型、独立的服务。每个服务都可以独立开发、部署和扩展,并通过轻量级的通信机制进行交互。微服务架构的目标是提高系统的可伸缩性、灵活性和可维护性,同时降低开发和部署的复杂性。每个微服务都专注于一个特定的业务功能,并可以使用不同的编程语言和技术栈进行开发。这种分布式架构可以帮助团队更快地开发和部署新功能,同时减少对整个系统的影响。

2023-08-07 20:09:15 1147 1

原创 Redis面试题-2

:从已设置过期时间的数据集(server.db[i].expires)中挑选最近最少使用的数据淘汰:从已设置过期时间的数据集(server.db[i].expires)中挑选将要过期的数据淘汰:从已设置过期时间的数据集(server.db[i].expires)中任意选择数据淘汰:从数据集(server.db[i].dict)中挑选最近最少使用的数据淘汰:从数据集(server.db[i].dict)中任意选择数据淘汰:禁止驱逐数据。

2023-08-06 22:47:57 198

原创 Redis常见面试题

Redis 是完全开源免费的,遵守 BSD 协议,是一个高性能的 key-value 数据库。Redis 支持数据的持久化,可以将内存中的数据保存在磁盘中,重启的时候可以再次加载进行使用。Redis 不仅仅支持简单的 key-value 类型的数据,同时还提供 list,set,zset,hash 等数据结构的存储。Redis 支持数据的备份,即 master-slave 模式的数据备份。Redis 优势性能极高 – Redis 能读的速度是 110000 次/s,写的速度是 81000 次/s。

2023-08-05 23:00:00 630

原创 Redis-2

对于事务的执行来说,如果 redis 开启了 AOF 持久化的话,那么一旦事务被成功执行,事务中的命令就会通过write 命令一次性写到磁盘中去,如果在向磁盘中写的过程中恰好出现断电、硬件故障等问题,那么就可能出现只有部分命令进行了 AOF 持久化,这时 AOF 文件就会出现不完整的情况,这时可以使用 redis-check-aof 工具来修复这一问题,这个工具会将 AOF 文件中不完整的信息移除,确保 AOF 文件完整可用。RDB 保存的数据,AOF 保存的命令,RDB 文件比 AOF 小。

2023-08-04 19:51:44 519 1

原创 Redis-1

1、调大连接池大小能够提高 jedis 的吞吐量,但是不能避免出现超时错误和长时间等待。jedis 连接方式最大连接数和最小、最大空闲连接数设置为一样有利于减少上下文切换时间,提升效率。2、lettuce 调大连接池大小反而会影响性能,最佳个数=CPU 核数+1,lettuce 整体稳定性和性能优于 jedis 方式。

2023-08-03 20:00:18 356

原创 微服务的基础使用

Maven的依赖冲突解决方案:路径最短原则配置优先原则破坏规则则使用排除SpringBoot场景启动器starter的开发流程c3p0-spring-boot-starter自定义场景启动器test-c3p0调用自定义场景启动器SpringBoot自动装配SpringBoot应用启动原理nacos服务治理。

2023-08-02 23:45:00 962

原创 Redis的部分面试题

Redis的跳跃表(Skip List)是一种基于随机化的数据结构,用于实现有序集合(Sorted Set)的底层数据结构。在每一层中,节点的数量都是随机的,但是节点之间的分值都是有序的。最底层的链表包含所有的节点,而最高层的链表只包含一个节点,这个节点是所有节点中分值最大的节点。但是,跳跃表的实现更加简单,而且在插入和删除操作中,跳跃表的性能都比平衡树更加优秀。因此,Redis中使用跳跃表作为有序集合的底层数据结构,可以提高有序集合的性能。它通过随机化和多层链表的结构,实现了高效的插入、删除和查找操作。

2023-08-01 23:11:52 415

原创 Java注解开发

}

2023-07-31 19:49:04 228

原创 MP的开发流程-2

在RESTful应用中需要和前端充分沟通,建议通信的数据规范。

2023-07-30 21:39:06 366

原创 MP的开发流程-1

实际开发中,从上到下或者从下到上进行开发都可以,一般考虑采用一个方向最佳最近的一个面试热点是auto_increment的处理,例如auto_increment到达上限继续插入数据MySQL如何处理?在MySQL中,当自增字段(如使用auto_increment修饰的字段)达到上限后继续插入数据会发生以下情况:达到上限后插入新数据会引发一个错误。MySQL会抛出异常并报告违反"Duplicate entry"约束错误,因为插入的值与已存在的记录具有相同的自增字段值。自增字段的上限取决于其数据类型。

2023-07-29 23:37:27 257

原创 SpringBoot集成Thymeleaf

Thymeleaf 是适用于 Web 和独立环境的现代服务器端 Java 模板引擎。Thymeleaf 的主要目标是为开发工作流程带来优雅的自然模板,既可以在浏览器中正确显示的 HTML,也可以用作静态原型,从而在开发团队中实现更强大的协作。传统的 JSP+JSTL 组合是已经过去了,Thymeleaf 是现代服务端的模板引擎,与传统的 JSP 不同,Thymeleaf可以使用浏览器直接打开,因为可以忽略掉拓展属性,相当于打开原生页面,给前端人员也带来一定的便利。

2023-07-28 20:27:15 1586

原创 SpringBoot集成 Swagger

随着互联网技术的发展,现在的网站架构基本都由原来的后端渲染,变成了前后端分离的形态,而且前端技术和后端技术在各自的道路上越走越远。前端和后端的唯一联系变成了 API 接口,所以 API 文档变成了前后端开发人员联系的纽带,变得越来越重要。

2023-07-27 23:45:00 478

原创 SpringBoot-6

这里我主要还是要掌握一下 Spring Boot 中对 MVC 的支持,重点掌握一下@RestController、@RequestMapping、@PathVariable、@RequestParam 和@RequestBody 四个注解的使用方式,由于@RestController 中集成了@ResponseBody 所以对返回 json 的注解。在看的好几篇有关Springboot的博客中以上四个注解是使用频率很高的注解,在所有的实际项目中基本都会遇到,必须熟练掌握。

2023-07-26 23:30:00 651

原创 SpringBoot-5

这里主要了解 Spring Boot 中在业务代码中读取相关配置,包括单一配置和多个配置项,在微服务中,这种情况非常常见,往往会有很多其他微服务需要调用,所以封装一个配置类来接收这些配置是个很好的处理方式。除此之外,例如数据库相关的连接参数等,也可以放到一个配置类中,其他遇到类似的场景,都可以这么处理。最后了解开发环境和生产环境配置的快速切换方式,省去了项目部署时,诸多配置信息的修改。

2023-07-25 23:30:00 154

原创 SpringBoot-4

SLF4J 即简单日志门面,不是具体的日志解决方案,它只服务于各种各样的日志系统。按照官方的说法,SLF4J是一个用于日志系统的简单 Facade,允许最终用户在部署其应用时使用其所希望的日志系统。这里的意思是:只需要按统一的方式写记录日志的代码,而无需关心日志是通过哪个日志系统,以什么风格输出的。因为它们取决于部署项目时绑定的日志系统。例如,在项目中使用了 slf4j 记录日志,并且绑定了 log4j,即导入相应的依赖,则日志会以 log4j 的风格输出;

2023-07-24 23:45:00 312

原创 Spring Boot-3

由于封装的 json 数据的类型不确定,所以在定义统一的 json 结构时需要用到泛型。统一的 json 结构中属性包括数据、状态码、提示信息即可,构造方法可以根据实际业务需求做相应的添加即可,一般来说,应该有默认的返回结构,也应该有用户指定的返回结构。//需要传递的数据 private int code;//用户自定义相应码,注意不是服务器响应状态码。//如果不需要传递详细信息还可以使用 boolean success;// 服务器回传信息 public JsonResult() {

2023-07-23 22:12:00 846

原创 SpringBoot-2

XML 文件的解析常见的解析工具有 DOM4j、JDOM 等,为了标准化 XML 文件解析,Java 中提出了 JAXP 规范,使用的解析模型有优点:操作方便,可以对文档进行 CRUD 的所有操作缺点:一次性加载进入内存形成 DOM 树,非常消耗资源优点:不消耗资源缺点:只能读取,不能增删改。

2023-07-22 22:15:00 187

原创 SpringBoot-1

今天大概看了30篇的博客关于Spring-Boot大致做一个理解的结果总结。

2023-07-20 23:28:41 88

原创 复习HashMap-3

根据一定的规则放进存放哈希值的数组中,然后下标为1的数组已经有值了,后面根据规则,判定某个数也需要放到下标为1的数组中,这样就导致了只有一个位置两个人都要坐,就引起了冲突。(不同的key值产生的H(key)是一样的)。

2023-07-19 21:27:22 1166

原创 spring的设计模式----工厂模式

spring的设计模式----工厂模式spring中IoC 控制反转,底层是工厂模式。工厂模式(Factory Pattern)是 Java 中最常用的设计模式之一。这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式。工厂模式提供了一种将对象的实例化过程封装在工厂类中的方式。通过使用工厂模式,可以将对象的创建与使用代码分离,提供一种统一的接口来创建不同类型的对象。在工厂模式中,我们在创建对象时不会对客户端暴露创建逻辑,并且是通过使用一个共同的接口来指向新创建的对象。介绍。

2023-07-18 22:45:08 918

得帆云考试测试接口,得帆云考试测试接口

得帆云考试测试接口,得帆云考试测试接口

2024-09-29

需要配置的setting文件

需要配置的setting文件

2024-09-25

得帆云考试依赖得帆云考试依赖

得帆云考试依赖得帆云考试依赖

2024-09-24

开发培训视频开发培训视频开发培训视频

开发培训视频开发培训视频

2024-09-18

空空如也

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

TA关注的人

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