自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(35)
  • 资源 (1)
  • 收藏
  • 关注

原创 消息中间件面试题

如果有这样的需求的话,我们是可以解决的,把消息都存储同一个分区下就行了,有两种方式都可以进行设置,第一个是发送消息时指定分区号,第二个是发送消息时按照相同的业务设置相同的key,因为默认情况下分区也是通过key的hashcode值来选择分区的,hash值如果一样的话,分区肯定也是一样的。如果已经存在这个数据了,就说明消息重复消费了,我们就不需要再消费了。嗯,这个我们还真遇到过,是这样的,我们当时消费者是设置了自动确认机制,当服务还没来得及给MQ确认的时候,服务宕机了,导致服务重启之后,又消费了一次消息。

2024-07-28 19:54:35 566

原创 微服务面试题

提供了两种方式:1,创建类实现IRule接口,可以指定负载均衡策略,这个是全局的,对所有的远程调用都起作用2,在客户端的配置文件中,可以配置某一个服务调用的负载均衡策略,只是对配置的这个服务生效远程调用服务雪崩是指一个服务失败,导致整条链路的服务都失败的情形,一般我们在项目解决的话就是两种方案,第一个是服务降级,第二个是服务熔断,如果流量太大的话,可以考虑限流。

2024-07-28 18:16:36 294

原创 框架篇面试题

aop是面向切面编程,在spring中用于将那些与业务无关,但却对多个对象产生影响的公共行为和逻辑,抽取公共模块复用,降低耦合,一般比如可以做为公共日志保存,事务处理等。

2024-07-27 16:04:46 584

原创 MySQL面试题

索引在项目中还是比较常见的,它是帮助MySQL高效获取数据的数据结构,主要是用来提高数据检索的效率,降低数据库的IO成本,同时通过索引列对数据进行排序,降低数据排序的成本,也能降低了CPU的消耗聚簇索引主要是指数据与索引放到一块,B+树的叶子节点保存了整行数据,有且只有一个,一般情况下主键在作为聚簇索引的非聚簇索引值的是数据与索引分开存储,B+树的叶子节点保存对应的主键,可以有多个,一般我们自己定义的索引都是非聚簇索引。

2024-07-27 15:43:53 589

原创 Redis面试总结

缓存穿透是指查询一个一定不存在的数据,如果从存储层查不到数据则不写入缓存,这将导致这个不存在的数据每次请求都要到 DB 去查询,可能导致DB 挂掉。这种情况大概率是遭到了攻击。解决方案的话,我们通常都会用布隆过滤器来解决它布隆过滤器主要是用于检索一个元素是否在一个集合中。我们当时使用的是redisson实现的布隆过滤器。它的底层主要是先去初始化一个比较大数组,里面存放的二进制0或1。

2024-07-11 23:50:14 745

原创 Redis面试问题一

Redis在面试中有很大的概率会问到,因此我们一定要学会回答此方面的问题。Redis主要涉及到使用场景已经一些其他方面的问题。下面是有可能涉及到的问题。

2024-07-11 23:30:28 772

原创 Spring、Spring MVC、MyBatis和Spring Boot对比

Spring是一个全面的Java应用程序框架,提供了依赖注入、AOP、事务管理等功能。Spring MVC是Spring框架的一个模块,用于构建Web应用程序,提供了清晰的MVC架构。MyBatis是一个基于Java的持久层框架,用于简化数据库操作,支持XML或注解的SQL映射方式。Spring Boot是Spring的扩展和封装,旨在快速构建生产就绪的Spring应用程序,提供了大量的自动配置和依赖模块。这四个框架各有侧重,但通常可以相互协作,共同构建高效、稳定、易于维护的Java应用程序。

2024-06-12 20:00:32 928

原创 并发编程 锁机制、线程池机制和AQS

Java并发编程是Java编程中非常重要的一部分,它允许开发者编写能够处理多个任务同时执行的应用程序。Java提供了一系列的工具和机制来支持并发编程,包括锁机制、线程池机制和AQS(AbstractQueuedSynchronizer)等。下面是对这些机制的总结:锁机制Java提供了多种锁机制来确保多线程之间的同步和互斥。内置锁(synchronized):是Java中最基本的锁机制。可以用于方法或代码块。可重入(Reentrant):一个线程可以多次获得同一个锁。隐式锁获取和释放。

2024-06-12 17:32:24 1021

原创 JavaSE中的IO(输入/输出)字节流字符流

JavaSE中的IO(输入/输出)知识是一个广泛的领域,它涵盖了如何在Java程序中进行数据的读取和写入。

2024-06-11 15:26:12 1065

原创 Java 线程的具体介绍

通过线程同步机制,我们可以确保多个线程按照一定的次序执行共享代码块,从而保证了数据的一致性,并避免了竞态条件和数据冲突。以上即为JavaSE线程的主要知识点。在实际编程中,还需要注意线程的调度、优先级、礼让等概念,以及如何处理多线程操作共享数据的问题。

2024-06-11 14:13:32 706

原创 java中集合List,Set,Queue,Map

Java SE中的集合框架是一组用于存储和操作对象的类和接口。它提供了丰富的数据结构,可以用于解决各种问题。

2024-06-09 19:17:51 1398 1

原创 Java核心知识概述

Java的核心知识点构成了Java编程的基础,掌握它们可以帮助你理解和编写Java程序。同时,Java还有丰富的库和框架,如JDBC用于数据库编程,Servlet和JSP用于Web开发等,

2024-06-09 18:01:28 513 2

原创 Kafka Streams介绍及在idea中的配置

Kafka Streams是一个用于构建实时流处理应用程序的客户端库。它基于Apache Kafka构建,提供了一种简单而强大的方式来处理和分析实时数据流。Kafka Streams为开发人员提供了丰富的功能和灵活性,使他们能够使用常用的编程语言(如Java)来编写流处理逻辑。

2024-05-29 16:05:52 885

原创 xxl-job的功能及idea中的配置

使用XXL-Job可以很方便地实现这个定时任务,设置任务的执行时间为每天凌晨2点,通过XXL-Job执行器调度执行相关的业务逻辑,保证商品库存的准确性。下载XXL-Job的执行器(xxl-job-executor-sample)并导入到IntelliJ IDEA中。4.在IntelliJ IDEA的Maven项目中,添加XXL-Job的依赖。创建一个新的Java类,例如"XxlJobDemo",并在该类中编写具体的任务逻辑。6.启动XXL-Job的执行器,运行"XxlJobDemo"类中的任务逻辑。

2024-05-29 15:59:49 426

原创 Kafka分区机制

Kafka的主题(Topic)可以分为多个分区(Partition),每个分区是一个有序的消息日志。每个分区都有一个唯一的标识符(Partition ID),并且可以在不同的节点上进行复制,以提供容错性。每个分区都是独立存储的,所以可以根据需求增加或减少分区数量,以适应系统的变化。负载均衡:Kafka可以根据分区数量和消费者数量来进行负载均衡,将不同分区分配给不同的消费者,从而实现并行处理。消息有序性:每个分区内的消息按照写入的顺序进行存储,保证了消息的有序性。不同分区之间的消息可能会存在乱序。

2024-04-27 16:05:45 1212 3

原创 Kafka

架构:卡夫卡采用分布式发布-订阅模型,由多个生产者将数据发布到一个或多个主题(topics),然后由多个消费者订阅这些主题并处理数据。它与许多其他工具和框架集成,例如Apache Spark、Apache Storm、Elasticsearch等,可以方便地进行数据流处理、数据分析和数据存储。需要注意的是,KafkaProducer和KafkaConsumer都是线程安全的,可以在多线程环境下使用。此外,卡夫卡还实现了分区和副本的机制,使得数据能够在集群中被有效地分布和处理。

2024-04-27 15:46:28 650

原创 Long和long类型

范围区别:Long是一个引用类型,它可以表示更大的数字范围,可以存储的值范围是 -9,223,372,036,854,775,808 到 9,223,372,036,854,775,807,占用 8 个字节。而long是一个基本数据类型,它可以存储的值范围是 -9,223,372,036,854,775,808 到 9,223,372,036,854,775,807,占用 8 个字节。在实际使用中,如果只需要存储整数值,建议使用long,如果需要使用Long对象的功能,可以使用Long。

2024-04-24 18:40:48 658

原创 悲观锁与乐观锁

乐观锁是一种乐观的策略,它相信在并发情况下不会发生冲突和竞争,因此不会加锁,而是在更新数据时进行检查,例如使用版本号或时间戳来标识数据的版本。乐观锁的作用是提高并发性能,减少锁的开销,但也会增加代码的复杂性,因为需要处理冲突和回滚的情况。在实际应用中,可以根据具体的业务场景和性能要求选择适合的并发控制策略,或者结合使用悲观锁和乐观锁的特点,例如先使用乐观锁检查数据的版本,如果发现冲突,则切换为悲观锁进行加锁和更新操作。悲观锁适用于对共享资源的访问频率较高,且数据冲突的概率较高的情况,例如数据库的更新操作。

2024-04-24 12:59:00 412

原创 Feign调用服务降级实现

服务降级是指在系统高并发或故障等情况下,为了保证系统的可用性和稳定性,临时关闭一些不重要或耗时较长的服务,即降低服务的质量或功能来保证系统的基本功能能够正常运行。

2024-04-17 12:39:26 405 1

原创 Feign接口的配置方法

这使得服务之间的调用更加方便和可靠,无需手动指定服务实例的地址和端口,Feign会自动从注册中心获取服务信息,并通过负载均衡器来选择合适的服务实例。提供业务级别的错误处理:Feign提供了对响应状态码和错误信息的处理机制,可以根据业务需求对错误进行统一处理,并返回友好的错误信息。这样可以简化错误处理的逻辑,提高系统的可维护性和可扩展性。总的来说,Feign的作用是简化和优化HTTP服务调用的过程,提高开发效率,降低代码的复杂度,并提供了一些高级功能(如服务发现和负载均衡)来提升系统的可靠性和扩展性。

2024-04-17 12:17:35 1728 1

原创 故宫抢票攻略

在购票页面上选择合适的日期和时间,并填写参观人数和个人信息后,尽快提交订单。如果抢票失败,可以多次尝试,或者选择其他渠道购票,例如在官方网站或APP上查看是否有余票回补,或者在第三方票务平台上购买。在抢票开始前,打开故宫官方网站或APP,登录自己的账号,并提前填写好个人信息和常用联系人的信息,以节省抢票时间。在抢票开始前,确认自己的手机网络信号良好,并保持手机电量充足,以防止抢票过程中出现网络断连或手机没电的情况。确定自己想要参观的日期和时间段,尽量选择非节假日和旺季的时间,这样抢票成功的概率会更大。

2024-04-12 21:27:06 723

原创 MinIO

MinIO基于Apache License v2.0开源协议的对象存储服务,可以做为云存储的解决方案用来保存海量的图片,视频,文档。由于采用Golang实现,服务端可以工作在Windows,Linux, OS X和FreeBSD上。配置简单,基本是复制可执行程序,单行命令可以运行起来。MinIO兼容亚马逊S3云存储服务接口,非常适合于存储大容量非结构化的数据,例如图片、视频、日志文件、备份数据和容器/虚拟机镜像等,而一个对象文件可以是任意大小,从几kb到最大5T不等。基本概念。

2024-04-12 17:37:15 749

原创 Freemarker基本语法

总结来说,要使用Freemarker生成静态文件,你可以使用Java程序调用Freemarker进行渲染并输出到文件,或者结合静态网站生成器进行生成。1.使用Java程序调用Freemarker:你可以编写一个Java程序,使用Freemarker来渲染模板,并将渲染结果输出到文件。需要注意的是,指令的结束标签是必须的,在循环体内部的内容将被迭代多次。除了内建函数,Freemarker还支持自定义函数,可以在模板中使用自己定义的函数来进行特定的处理。操作符来连续访问键。

2024-04-11 20:18:16 1752 1

原创 Freemarker介绍及使用

通过使用Freemarker,可以将一些常用的片段或模块作为模板,通过合适的数据输入,将它们生成为静态文件,提高开发效率。需要注意的是,模板文件需要放置在指定的路径下,示例代码中采用的是相对路径,可以根据实际情况进行调整。2.创建Freemarker配置对象:使用Configuration类来创建Freemarker的配置对象,该对象包含了一些常见的配置选项,如模板文件的路径、编码格式等。通过Freemarker可以将模板和数据分离,实现网页内容的动态渲染,提高网页的可维护性和扩展性。

2024-04-11 19:08:01 1032 1

原创 Swagger使用方法

Swagger是一个开源的API开发工具,用于设计、构建、文档化和消费RESTful Web服务。它提供了一组工具和规范来定义和描述API,包括用户友好的界面用于文档化API端点、请求/响应示例和交互式API探索。Swagger通过促进一致性、协作以及生成客户端SDK、服务器存根和API文档来简化API开发。

2024-04-09 19:05:36 304

原创 Nacos 基本知识与使用

Nacos是一个开源的分布式服务注册和发现系统,由阿里巴巴集团开发和维护。它可以帮助开发人员实现服务的动态发现、注册和配置管理。Nacos支持多种服务注册和发现方式,包括DNS、HTTP和RPC。它还提供了一套API,可以方便地与其他系统进行集成。

2024-04-09 12:11:05 811

原创 什么是微服务

单一职责:微服务拆分力度更小,每一个服务都对应唯一的业务能力,做到单一职责,避免重复业务开发。根据业务功能对系统进行拆分,每个业务模块作为独立项目开发,称为一个服务。隔离性强:服务调用做好隔离、容错、降级,避免出现级联问题。将业务的所有功能集中在一个项目中开发,打包一个包部署。自治:团队独立、技术独立、数据独立、部署独立。缺点:架构非常复杂,运维、监控、部署难度提高。优点:降低服务耦合、有利于服务升级拓展。缺点:架构复杂,难度大,适合大型互联网。面向服务:微服务对外暴漏业务接口。

2024-04-06 18:24:50 583 2

原创 CMM与CMMI 软件设计师1

它是CMM模型的最新版本,基于连续式表述的CMMI 共有6个(0〜5)能力等级,对应于未完成级、已执行级、已管理级、已定义级、量化管理级、优化级。一个可管理的过程就是一个可重复的过程,一个可重复的过程则能逐渐演化和成熟。软件过程的特点是无秩序的,甚至是混乱的,软件处于无章法和步骤可询的状态,或者制订的规范为能覆盖基本的关键过程要求,且执行没有政策、资源方面的保证,那么仍被视为初始级。能力等级1指过程通过转化可识别的输入工作产品,产生可识别的输出工作产品,关注于过程域的特定目标的完成;

2024-04-06 10:00:07 511 1

原创 Tomact服务器在idea中的配置

4. 在"Tomcat Server"对话框中,选择Tomcat的安装目录。如果没有安装Tomcat,可以点击"Download"按钮自动下载并安装Tomcat。2. 在Settings窗口中,选择"Build, Execution, Deployment",然后选择"Application Servers"。1. 打开IntelliJ IDEA,点击菜单栏的"File",然后选择"Settings"。3. 点击右侧的"+"按钮,选择"Tomcat Server"。6. 点击"OK"保存配置。

2024-04-04 18:51:18 610 1

原创 SEICMM能力成熟度模型

这些级别按照递增的顺序分别是:初始级别(Level 1)、可重复级别(Level 2)、已定义级别(Level 3)、已管理级别(Level 4)和优化级别(Level 5)。- 已定义级别:组织在软件开发过程中引入了标准化的流程和方法,确保项目能够按照规定的流程和方法进行。- 已管理级别:组织已经建立了量化的软件过程度量,以及为过程管理提供支持的数据。SEICMM的实施可帮助组织评估和改进其软件开发过程的成熟度,从而提高组织的软件工程能力和产品质量。

2024-04-04 17:56:23 302 1

原创 KMP算法理解

我们可以使用暴力匹配算法来实现,即从字符串的第一个位置开始,依次比较子串和字符串中的字符,直到找到匹配的位置或者匹配失败。然后,当匹配到 "D" 和 "D" 时,它们匹配成功,匹配完成,返回匹配的起始位置,即索引 4。然后,当匹配到 "D" 和 "D" 时,它们匹配成功,匹配完成,返回匹配的起始位置,即索引 4。接着,当匹配到 "B" 和 "B" 时,它们匹配成功,继续匹配下一个字符。接着,当匹配到 "B" 和 "B" 时,它们匹配成功,继续匹配下一个字符。方法用于在文本字符串中找到模式字符串的匹配位置。

2024-04-03 20:53:55 263 1

原创 程序员常见算法

这些算法是计算机科学中最常见的算法之一,对于程序员来说至关重要。深入理解这些算法的原理和实现方式,可以帮助你更好地解决实际问题,并设计出高效的算法和数据结构。

2024-04-03 20:40:34 260

原创 WebSocket 入门

WebSocket是基于TCP的一种新的网络协议.它实现了浏览器与服务器全双工通信---浏览器和服务器只需要完成一次握手,两者就可以创建持久性的连接,并进行双向数据传输。http协议与WebSocket协议对比-HTTP是短连接-WebS是长连接-HTTP通信是单向的,基于请求响应模式-WebSocket支持双向通信。

2024-04-02 19:35:19 542 2

原创 Spring Task 入门

Spring Task是Spring框架提供的任务调度工具,可以按照约定的时间自动执行某个代码逻辑。作用:自动执行某段Java代码。

2024-04-02 17:24:30 401 1

原创 c#中基础知识/课堂笔记

console.writeline(“输出内容为{0}和{1}”,变量名1,变量名2);s1.contains(s2)若s1包含s2返回值为true或1,否则返回false或0。将s中的s全部替换为f。s1=s.split(“&”)将s以&为分界线,分为若干字符串数组。s.trim()可去除字符串开始和结尾的空格。

2023-09-16 23:46:16 62 1

WebSocket 入门

WebSocket 入门

2024-04-02

空空如也

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

TA关注的人

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