在Spring中使用消息队列中间件发送异步消息
同步 通信有它的适用场景,这是我们在 REST 中所看到的。但这并不是开发人员可以使用的惟一的应用程序间通信方式。异步 消息传递是一种间接地将消息从一个应用程序发送到另一个应用程序而无需等待响应的方式。这种间接方式解耦了相互通信的应用程序,并带来了更好的伸缩性。 在书中,作者介绍了三种发送异步消息的做法,分别是 实现JMS(Java Message Service)规范的 Arte...
同步 通信有它的适用场景,这是我们在 REST 中所看到的。但这并不是开发人员可以使用的惟一的应用程序间通信方式。异步 消息传递是一种间接地将消息从一个应用程序发送到另一个应用程序而无需等待响应的方式。这种间接方式解耦了相互通信的应用程序,并带来了更好的伸缩性。 在书中,作者介绍了三种发送异步消息的做法,分别是 实现JMS(Java Message Service)规范的 Arte...
在完成REST Service的创建之后,一个很重要的问题就是如何保护REST Service, 在分布式应用程序中,软件系统之间的信任至关重要。 即使只是一个简单的客户端请求,服务端也需要验证客户端是否是可信的,以将任何其他未授权的客户端请求拒绝。 例如,虽然任何人都可以发送一个DELETE请求给REST服务,但是应该只有对应权限的人才能删除数据。 之前使用SpringSecurity保...
本博文中的内容不包含安全相关的内容。其统一在另一篇博文中进行讨论。 概念 书中没有具体展开所有的REST请求方式,没有介绍HEAD和OPTIONS请求方式,(待补充) GET、POST、DELETE很容易理解,但是更新有PUT和PATCH。 POST 从无到有添加新数据,预期是数据库中不存在该数据,如果存在则会报错。(例如注册一个新的用户) PUT 字面理解为将资源直接p...
书中,以及本博文不涉及XML的配置方式,仅涉及基于Java的配置方式。 一般在概念上存在两种形式的Configuration: BeanWriting 和 PropertyInjection 。 前者配置依赖关系,后者用于注入一些具体的配置属性。 BeanWriting自然是Spring配置的核心,毕竟一切都是Bean,但用现代的基于Java配置方式来完成BeanWriting是如此...
就像书名Spring in action写的那样,内容主要都是how to use的内容,学习的目的只是对Spring的操作有个大致的了解,很多细节原书没有深入。 个人仅对自己觉得不明白与重要的地方做了一点补充,其他的就只是简单的记录一下,以备后续查阅。 启动SpringSecurity 只要引入了spring-boot-starter-security 依赖,就会启用SpringSe...
Spring Data支持多种数据库,包括Cassandra、MongoDB、Couchbase和Redis等。在应用程序中,我们仍然使用用于创建Repository的编程模型规范,这使得对于不同的底层数据库而言差别并不大。 然而,需要明确的是,在使用这些数据源时,我们需要采用与处理其他类型数据库有所不同的建模思想。因为这些数据库有其自身独特的特点,例如Cassandra是一个面向列的数据...
热身 143. 重排链表 此题的最优思路是先找到链表的中点(快慢指针),然后将后半部分的链表反转,最后将两个链表交错合并。但是这里为了符合主题,我们使用栈来实现 单链表要从尾部遍历,可以将Node元素都存入Stack,然后再pop即可。 其实难点不在Stack的部分,而是链表指针之类的细节问题,所以不赘述了. 225. 用队列实现栈 使用两个队列的做法在官方解没来得及看,一...
本文旨在强调个人觉得重要的部分,而省略一些基础的准备工作,例如准备数据库等内容。如需了解更为详尽的信息,请参考原著。 以及本文并非是关于在Spring架构中进行持久化处理的最佳实践总结,相较于Mybatis提供的解决方案而言,本节中的SpringDataJDBC是一种规范的low level的实现,而不是一种解决方案。而JPA是在思路上和Mybatis不同的一种解决方案,对于Mybatis和...
个人之前接触的都是前后端分离的架构,Validation的工作是直接在前端完成的。在Spring实战这本书中作者一开始做的是SSR项目,其使用了SpringValidation完成属性验证。这是我第一次看到这种方式,所以记录一下。 步骤 添加依赖 在需要验证的类上添加注解,声明验证的规则 在需要实施验证的地方添加@Valid注解 在SRR的页面上添加错误信息 书本中...
写在最前,所有的滑动窗口问题都是灵魂三问:何时扩大窗口,何时缩小窗口,何时更新结果。理清这个框架,剩下的就是细节问题了。 字符串区间问题 76 最小覆盖子串 使用两个HahsMap<Character,Integer>统计字符出现的频率 ,分别作为window和need表示窗口区域和作为目标条件。初始化need后开始遍历String进行滑动窗口操作。 加入新字符到win...