应用教程
文章平均质量分 58
dospy微光
这个作者很懒,什么都没留下…
展开
-
Springboot集成Async异步调用
前言在业务开发过程中,有时会遇到非核心的业务,如记录日志或发送短信等。有时也会遇到一次性要处理多个任务,再将多个任务处理结果进行返回。如果做同步处理时,会比较耗时,对于接口而言,响应速度慢一方面会影响用户体验,另一方面如果是服务间调用,可能会出现超时的情况。这种情况我们可以采用异步处理的方式,提高主流程的性能。集成方法1、springboot启动类添加@EnableAsync注解@SpringBootApplication@EnableAsyncpublic class Application原创 2022-03-24 13:56:38 · 399 阅读 · 0 评论 -
Cacheable注解缓存失效问题
前言对一个应用系统而言,把经常使用且很少更新的数据加入到缓存,是非常有必要的。因为从缓存中获取数据的速度要优于数据库,把redis内存型数据库作为缓存是非常常见的做法。当项目集成redis框架后,就可以使用StringRedisTemplate对象对数据进行缓存,优先从redis中获取数据,若获取不到再查询数据库。当缓存数据较多时,每次都需要判断,代码未免有些臃肿。可使用方法加@Cacheable注解解决,但需要避免踩坑。失效场景@Cacheable注解是基于spring aop切面实现,必须走代理原创 2022-03-24 13:52:54 · 1930 阅读 · 0 评论 -
PostgreSql主键自动生成的方法
前言postgresql不同于mysql数据库,mysql建表时通过auto_increment关键字就可以实现主键自增, 但postgresql是通过序列和函数实现主键自动生成。创建方法1、主键自增长方法一:定义序列,再定义主键调用增长函数实现定义序列CREATE SEQUENCE "public"."t_student_id_seq" INCREMENT 1 MINVALUE 1 MAXVALUE 9999999999 START 1 CACHE 1;创建表,原创 2022-03-24 13:46:34 · 6092 阅读 · 0 评论 -
谈谈restful风格API编写和接口调用
前言前后端分离开发已成为主流,专业人做专业事,明确各自的分工有利于提高工作效率。然而实际开发过程中,却受到一些因素的影响。比如接口代码不规范、后端接口不自测、前端传参错误、后端返参问题等等,往往耗费了大量的时间在接口联调上,导致工作效率比较低下。有没有好的方式去提高效率呢,下面就来说说编写restful风格API和swagger接口调用restful风格接口简介Restful风格API是一种软件架构、设计风格,不是标准,只提供一组设计原则和约束条件。用于客户端与服务器进行交互。基于该风格设计的软件可原创 2022-03-24 13:45:10 · 795 阅读 · 0 评论 -
说说PostgreSql手动分区与自动分区
分区描述分区方式:postgresql10支持list和range分区,postgresql10以上支持list、range和hash分区分区原理:分区表继承主表,但不完全继承主表属性,如唯一性约束、索引、主键、外键,而检查约束和非空约束可以继承创建方法:①手动方法:创建主表时定义分区方式和分区键,再创建分区表②自动方法:创建主表,创建触发函数,再定义分区键为触发器,不需要手动创建优劣:分区键值固定时,手动方法更好,插入数据时不需要触发判断,再分配到相应分区;分区键不固定时,自动方法更好,但性能受到原创 2022-03-24 13:43:54 · 2122 阅读 · 0 评论 -
springboot参数校验正确的打开方式
前言项目开发过程中,一般会对接口接收参数进行字段校验,校验的重要性不言而喻。字段校验分为前端和后端,正确的做法是前后端都进行校验。做为一个后端开发人员,将字段校验完全交给前端是不合适的,你无法确定前端会不会犯抽。接口保存和更新一般都需要进行校验,但两者又有差别,如更新时必须保证对象的主键不能为空。常规做法是用if-else对各个字段进行校验,同时将保存和更新进行差别校验,然而代码重复臃肿不可避免。有没有更好的方式呢?下面讲讲validated注解与全局异常处理完美结合,对相关实体类字段进行校验。常规原创 2022-03-24 13:41:17 · 179 阅读 · 0 评论 -
一个tomcat同时部署有启动顺序的多个项目
前言一个tomcat部署多个项目常用的方法是将所有的项目放置在webapps里面,共用同一个端口,各项目根据项目名进行区分。如果多个项目有启动先后顺序,这样的做法就显得不合适,因为tomcat启动是根据项目名称字母顺序来启动。网上有种做法,在conf\Catalina\localhost文件夹下建立需要首先启动的项目相应文件,如果是两个项目没有问题,但多个项目仍然不方便控制。实用的做法是定义多个service标签,各项目使用不同的端口号。操作方法1、conf\server.xml定义多个service原创 2020-12-11 15:37:29 · 1811 阅读 · 0 评论 -
springboot集成websocket
前言服务端一般都是被动接收请求,不主动向客户端发送信息。在某些场景情况下,客户需要及时获取更新的数据,有两种方法解决,一是由前端轮询定时调用接口,二是采用websocket服务端与客户端保持实时通信。集成说明采用tomcat自带的websocket实现,其中内置tomcat和外置tomcat集成稍有差别,外置tomcat不需要注入ServerEndpointExporter,因为它由容器自己提供和管理,websocket接收类不需要加@Component注解。如果涉及用户权限的问题,需要定义webso原创 2020-12-11 15:35:25 · 184 阅读 · 0 评论 -
springboot集成kafka消息中间件
前言目前消息中间件有很多,比如rabbitmq、rocketmq、activemq、kafka,集成方法和使用方法大同小异,消息中间件主要是解决三方面的问题:削峰、异步、解耦。曾用过rabbitmq上传机器人状态信息、用rocketmq进行订单超时取消功能。集成说明kafka原生并不支持传输对象,具体可用传输类型可参照下图以Serializer后缀的为序列化类,以Deserializer后缀的为反序列化类。若需要让kafka能够传输对象,一是实体类需要实现序列化接口,二是实现Serializer和原创 2020-12-11 15:33:59 · 260 阅读 · 1 评论 -
springboot使用外置tomcat启动
1、修改pom.xml打包成war<packaging>war</packaging>排除内置的tomcat<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-tomcat&l...原创 2020-12-11 15:23:54 · 182 阅读 · 0 评论