自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 token怎么续期? 怎么退出?

Token的续期:Token的退出:

2024-01-09 20:38:00 538

原创 mysql如何与es数据同步

缺点:开启binlog增加数据库负担、实现复杂度高。优点:低耦合,实现难度一般。方式三:监听binlog。优点:完全解除服务间耦合。缺点:依赖mq的可靠性。优点:实现简单,粗暴。

2024-01-04 20:21:39 338

原创 rabbitmq如何保证消息的可靠性

通过这些机制,RabbitMQ可以保证消息的可靠传输和处理。但需要注意的是,虽然这些机制可以提高消息的可靠性,但并不能保证100%的消息不丢失或不错乱。在实际应用中,还需要结合具体场景和需求,选择合适的机制来保证消息的可靠性。

2024-01-04 20:16:19 623

原创 volume是啥东西?volume挂载和本地目录或者文件直接挂载的区别

具体来说,本地目录或文件挂载是指将一个本地文件系统中的目录或文件挂载到另一个位置,以便可以将其视为一个独立的文件系统来访问其中的内容。"volume挂载"通常指的是将一个存储设备(如硬盘分区、网络共享等)挂载到文件系统中的特定目录上,使得该设备中的文件和目录在该目录下可见并可访问。这种挂载操作通常由操作系统自动完成,用户可以将挂载点视为一个虚拟目录。与本地目录或文件直接挂载的区别主要在于volume挂载涉及到的是存储设备或数据卷的挂载,而本地目录或文件挂载则是在本地文件系统中的操作。

2024-01-04 20:15:27 385

原创 什么是请求跨域?如何解决?

请求跨域指的是在浏览器中执行的JavaScript代码向不同域名的服务器发起请求,而同源策略阻止了这类请求。同源策略是一种安全策略,要求脚本只能访问和执行来自同一源的资源和数据,不能访问其他源的资源和数据,以防止跨站点请求伪造(Cross-Site Request Forgery, CSRF)等安全问题。

2024-01-04 20:14:30 382

原创 你的项目中都用到了Springcloud的哪些组件?

Spring Cloud主要包含以下几个组件:我主要使用了Spring Cloud的以下几个组件:

2024-01-04 20:13:29 417

原创 注册中心的工作原理

总的来说,Nacos 注册中心的原理在实际工作中具有很强的可用性和可扩展性,开发者可以通过 Nacos 作为服务注册发现中心,更好地构建微服务架构,借助其强大的功能和便捷的控制方式提供高质量的服务。

2024-01-04 20:11:36 550

原创 Spring Bean的生命周期

Spring Bean的生命周期主要包括以下五个阶段:

2024-01-04 20:09:29 338

原创 三十分钟不支付订单取消

例如,如果消费者处理订单取消失败,需考虑日志记录和重试机制,以确保系统的稳定性和订单取消功能的可靠性。首先,在RabbitMQ中,创建一个延迟交换机和相应的队列。这些队列和交换机将用于存储订单并在一定时间后处理取消订单的操作。当用户下单时,将订单消息发送到这个延迟队列中,并设置消息的延迟时间为30分钟。在消费者中,实现逻辑以检查订单支付状态和创建时间。如果订单未支付且创建时间与当前时间的差超过了30分钟,则执行取消订单的操作。当订单消息被投递到交换机时,消费者收到消息并执行取消订单的逻辑.

2024-01-04 20:08:17 351 1

原创 系统登录如何来做

这个流程可以用许多不同的技术来实现,包括使用Spring Boot这样的框架来处理Web请求,使用Java Servlet API来处理HTTP请求和响应,以及使用JDBC或ORM框架(如Hibernate)来与数据库交互。以上是一个基本的流程,实际操作中可能需要根据具体需求进行相应的调整和优化。

2024-01-04 20:04:29 427 1

原创 你有没有用过多线程

在项目中是否使用多线程取决于项目的需求和技术栈。对于某些需要并发处理或执行耗时操作的情况,我会使用多线程来提高性能和响应速度。例如,在处理大量数据或进行网络请求时,使用多线程可以同时处理多个任务,从而提高整体的处理速度。在实现多线程时,我会考虑线程安全问题,避免数据竞争和死锁等问题。同时,我也会根据项目需求选择合适的线程模型,如生产者消费者模型、任务队列模型等。总之,根据项目的实际需求和技术要求,我会综合考虑是否使用多线程来提高项目的性能和响应速度。

2024-01-04 20:01:17 333 1

原创 nginx如何配置反向代理与负载均衡?nginx的负载均衡算法有哪些?

配置反向代理服务器:在nginx的配置文件中添加server标签,指定监听的端口和IP地址,然后使用proxy_pass指令将请求代理到目标服务器上。配置负载均衡:通过使用upstream指令,可以将请求分发到多个后端服务器上,从而实现负载均衡。

2024-01-04 19:59:51 528 1

原创 spring中有哪些常见的设计模式? 你的项目中用到了哪些设计模式?

面向切面编程AOP:Aspect-0riented Programming 面向切面编程能够将和业务无关,但是是业务模块中所共同调用的逻辑或者业务功能封装起来,比如事务管理,日志管理,权限控制等 有利于减少重复代码,降低模块之间的想合度 ,并有利于面向未来的可拓展性和可维护性使AOP可以将一些通用功能抽象出来,在需要使用的地方直接使用,这样可以大大简化代码量 需要增加新功能也会更加简单方便,这样可以提高系统的扩展性。在策略模式(Strategy Pattern) 中,一个类的行为或其算法可以在运行时更改。

2024-01-04 19:54:19 423 1

原创 java面试题之线程池的工作原理

如果工作队列没有满,则将新提交的任务存储到这个工作队列中,如果工作队列满了,线程池则判断线程池的线程是否都处于工作状态。如果核心线程池中的线程都在执行任务,则判断工作队列是否已满。所谓线程池的工作原理就是当线程池提交一个任务到线程池后,线程池先判断核心线程池里面的线程是否都在执行任务。如果没有,则创建一个新的工作线程来执行任务。(1)如果当前线程少于corePoolSize,就创建新的线程来执行任务,但是这一步会获取全局锁。(3)如果无法将任务加入队列中, 队列已满的话,则创建新的线程处理任务。

2023-12-14 09:47:34 388 1

原创 java面试题之redis分布式锁

在Redis分布式锁时我用的是里面的set ex Nx 他的特性是当一个线程进入时会设置一个键并返回true并上锁,当另一个线程进来时会返回一个false,并阻止她进入,顺便要加上一个过期时间来防止死锁的情况发生。但当过期时间如果设置的不当的话,就会导致第一个线程并没处理完,第二个线程就进来了,当线程一处理完后就会释放线程二的锁,其他的线程又进来了,以此类推,又会出现我开头说的那个问题。还有就是再给锁用UUID设置下唯一ID,这样的话就不会出现线程乱释放锁的问题了。

2023-12-12 09:30:00 41

原创 java面试题之controller是线程安全的吗?

线程安全不安全取决于controller中的方法是否并发写了共享资源如果存在并发写共享资源的场景,那就可能会线程不安全,否则就是线程安全的。tomcat在执行controller的方法的时候,多线程并发执行的controller是单例的吗?redis的服务端在执行指令的时候是单线程执行的。

2023-12-05 21:23:55 37

原创 java面试题之OAuth 2.0是什么,四种支持的方法

OAuth(Open Authorization,开放授权)是为用户资源的授权定义了一个安全、开放及简单的标准,第三方无需知道用户的账号及密码,就可获取到用户的授权信息,并且这是安全的。Third-party application:第三方应用程序,又称"客户端"(client)。Resource Owner:资源所有者,又称"用户"(user)。User Agent:用户代理,指浏览器。Authorization server:认证服务器,即服务提供商专门用来处理认证的服务器。

2023-12-05 21:22:29 231

原创 java面试题之@Transactiona1失效的场景有哪些

Transactional注解使用过程中失效的12种场景最后,@Transactional注解虽香,但是复杂业务逻辑下,为了更好的管理事务与把控业务处理时事务的细粒度,还是使用编程式事务为妙。

2023-12-05 21:19:41 57

原创 java面试题之Redis数据如何与mysql数据保持一致

但是有一种情况就是比如线程一在执行一个修改操作,先执行数据库操作,把数据库修改成新的,在修改数据库的过程中线程二过来了执行个查询的这个请求,查到的数据是老数据,直接返回,线程一会把redis删掉.下一个线程查到redis当中没有,然后会查询数据库,然后会把新数据在返回到redis中,虽然线程二出现了数据不一致的现象,但是往后的线程仍然能访问到最新的数据,能保证最终数据的一致性,因为我们在使用场景中,看重的是可用性,只要能保证数据的最终一致性,我们允许数据短暂的不一致。1.什么情况会出现缓存不一致性。

2023-12-05 21:16:19 99

原创 java面试题之小程序登录流程

之前项目中做过一个点单系统,前端用的是小程序,用户必须先登录才能执行点菜,下单等操作,小程序登录时,先调用了wx.login方法,获取到了code(临时登录凭证),然后前端也就是小程序端发送请求并携带ode发送至服务端,服务端接收到前端发送的code后要获取到用户的openld,因为openld是用户的唯一标识,所有要获取此属性作为用户的信息存储到数据库,获取openid,通过httpclient向微信接口发送htp请求,携带好accessid,accesskey,code等属性(这些属性可以在官方文档查看

2023-12-05 21:15:37 55

原创 java面试题之登录流程

在用户身份验证过程中,首先进行初步校验,使用@NotNu11和@size注解确保用户名和密码的有效性。随后,通过异常处理,创建了一个自定义的Exception类,用来捕获并传递与身份验证相关的异常信息。因为我们用使用BCrypt 加密,所以需要用security 的matches方法比对密码进行密码匹配的验证。在成功验证用户身份后,通过JMT令牌进行安全认证。为了在整个应用程序中方便地传递当前用户的ID,同时也是为了保证线程的安全使用Threa docal将用户ID保存到当前线程中。

2023-12-05 21:14:55 89

原创 java面试题之你在项目中定义过startor吗

定义过,项目中有个上传用户头像到阿里云的功能我封装了一个startor,创建两个模块分别是startor和configtion,将所需要的依赖导入configtion的pom文件中,在receouse文件夹下创建meta-inf,spring.factories配置文件把全限名写进去,在包内创建preperties类用@ConfigurationProperties注解他读取到阿里云的秘钥和筒名和地址,创建configtion类注入properties,在工具类内写入云端上传的业务代码,在startor中传

2023-12-05 21:13:29 26

原创 java面试题之你定义过aop吗

aop他允许在不修改源代码的前提下,利用横切关注点的方式去实现通用功能,用索引定义切点和切面,能相对灵活的控制切面的应用范围和执行顺序而且aop来解耦业务逻辑和通用功能提高代码的可扩展性和维护性,比如说用aop来监视业务方法吧,能对这个看到执行时间,可以对数据进行监控和优化,利用在事务管理上可以确保一组要么全部成功要么全部回滚。通俗的讲:就是在一些代码中做重复操作的时候,我们为了实现代码的复用性,统一去处理这些工作,让后让我们得操作自然的嵌入(用自定义注解)到指定方法的指定位置。你在项目中定义过aop吗。

2023-12-05 21:12:58 28

原创 java面试题之springboot的自动装配原理

条件判断是通过@ConfigurationCondition接口的实现类来实现的,根据一定的条件,自动配置类会决定是否生效。@ComponentScan注解用于扫描指定的包及其子包,把标有@Component、@Service、@Repository和@Controller注解的类自动注册为Bean。通过自动装配,Spring Boot可以根据项目的依赖和配置,自动配置数据库连接、Web服务器、缓存、消息队列等常用的功能。Spring Boot的自动装配原理就是基于Spring框架的自动装配机制而来。

2023-12-05 21:12:23 79

原创 java面试题之缓存的穿透、击穿、雪崩、预热

缓存穿透是指用户请求的数据在缓存和数据库中都不存在,导致用户每次请求该数据都要去数据库中查询一遍。如果有恶意攻击者不断请求系统中不存在的数据,会导致短时间大量请求落在数据库上,造成数据库压力过大,甚至导致数据库承受不住而崩溃。缓存穿透就是请求直接从缓存中穿透到数据库了,数据库里也没这个数据,数据库就也一起凉凉了。

2023-12-05 21:11:52 50

原创 java面试题之反射

反射在 Java 中的反射机制是指在运行状态中,对于任意一个类都能够知道这个类所有 的 属性和方法;并且对于任意一个对象,都能够调用它的任意一个方法;这种动态获取信息以及动态调用对象方法的功能成为 Java 语言的反射机制。近期在维护公司项目的时候遇到一个问题,因为实体类中的 set 方法涉及到了业务逻辑,因此在给对象赋值的过程中不能够使用 set 方法,为了实现功能,所以采用了反射的机制给对象属性赋值,借此机会也了解了反射的一些具体用法和使用场景,分以下两点对反射进行分析: 反射

2023-12-05 21:11:06 14

原创 java面试题之索引

我们通过创建唯一索引可以保证数据记录的唯一性,极大加快了数据的检索速度,不仅如此还可以加速表与表之间的链接,这点在实现数据的参照完整性方面有特别的意义当然在使用ORDER BY 或者 GROUP BY 子句中进行检索数据的时候,也能显著减少查询中分组和排序的时间在用索引的时候可以在检索数据的过程中使用优化隐藏器,提高系统性能。

2023-12-05 21:10:33 42

原创 java面试题之MySql的性能优化

首先需要定位到具体是哪条sql语句执行效率低,通过show status like 'Com_%select就能知道当前数据库做查询操作的次数,Com_insert:执行INSERT用这些命令就能查看增删改的次数,通过这些来判断当前数据库主要做的是什么操作再用show profile分析一下sql,得到所有sql语句执行效率之后,通过这条命令记录下来的时间呢,分析具体是哪条sql语句执行效率低而后用slow_query_log = 1 #开启服务器的慢查询日志,时间超过超过三秒就是慢查询。

2023-12-05 21:10:03 57

空空如也

空空如也

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

TA关注的人

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