自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 OpenOffice实现word文档在线预览

linux下安装openoffice1、解压压缩包tar -zxvf Apache_OpenOffice_4.1.9_Linux_x86-64_install-rpm_zh-CN.tar.gztar -zxvf Apache_OpenOffice_4.1.9_Linux_x86-64_langpack-rpm_zh-CN.tar.gz2、软件安装cd zh-CN/RPMS/rpm -ivh *.rpmcd desktop-integrationrpm -ivh openoffice4.1.

2022-03-24 14:15:00 1314

原创 Springboot集成Async异步调用

前言在业务开发过程中,有时会遇到非核心的业务,如记录日志或发送短信等。有时也会遇到一次性要处理多个任务,再将多个任务处理结果进行返回。如果做同步处理时,会比较耗时,对于接口而言,响应速度慢一方面会影响用户体验,另一方面如果是服务间调用,可能会出现超时的情况。这种情况我们可以采用异步处理的方式,提高主流程的性能。集成方法1、springboot启动类添加@EnableAsync注解@SpringBootApplication@EnableAsyncpublic class Application

2022-03-24 13:56:38 375

原创 Cacheable注解缓存失效问题

前言对一个应用系统而言,把经常使用且很少更新的数据加入到缓存,是非常有必要的。因为从缓存中获取数据的速度要优于数据库,把redis内存型数据库作为缓存是非常常见的做法。当项目集成redis框架后,就可以使用StringRedisTemplate对象对数据进行缓存,优先从redis中获取数据,若获取不到再查询数据库。当缓存数据较多时,每次都需要判断,代码未免有些臃肿。可使用方法加@Cacheable注解解决,但需要避免踩坑。失效场景@Cacheable注解是基于spring aop切面实现,必须走代理

2022-03-24 13:52:54 1704

原创 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 5710

原创 谈谈restful风格API编写和接口调用

前言前后端分离开发已成为主流,专业人做专业事,明确各自的分工有利于提高工作效率。然而实际开发过程中,却受到一些因素的影响。比如接口代码不规范、后端接口不自测、前端传参错误、后端返参问题等等,往往耗费了大量的时间在接口联调上,导致工作效率比较低下。有没有好的方式去提高效率呢,下面就来说说编写restful风格API和swagger接口调用restful风格接口简介Restful风格API是一种软件架构、设计风格,不是标准,只提供一组设计原则和约束条件。用于客户端与服务器进行交互。基于该风格设计的软件可

2022-03-24 13:45:10 731

原创 说说PostgreSql手动分区与自动分区

分区描述分区方式:postgresql10支持list和range分区,postgresql10以上支持list、range和hash分区分区原理:分区表继承主表,但不完全继承主表属性,如唯一性约束、索引、主键、外键,而检查约束和非空约束可以继承创建方法:①手动方法:创建主表时定义分区方式和分区键,再创建分区表②自动方法:创建主表,创建触发函数,再定义分区键为触发器,不需要手动创建优劣:分区键值固定时,手动方法更好,插入数据时不需要触发判断,再分配到相应分区;分区键不固定时,自动方法更好,但性能受到

2022-03-24 13:43:54 2041

原创 springboot参数校验正确的打开方式

前言项目开发过程中,一般会对接口接收参数进行字段校验,校验的重要性不言而喻。字段校验分为前端和后端,正确的做法是前后端都进行校验。做为一个后端开发人员,将字段校验完全交给前端是不合适的,你无法确定前端会不会犯抽。接口保存和更新一般都需要进行校验,但两者又有差别,如更新时必须保证对象的主键不能为空。常规做法是用if-else对各个字段进行校验,同时将保存和更新进行差别校验,然而代码重复臃肿不可避免。有没有更好的方式呢?下面讲讲validated注解与全局异常处理完美结合,对相关实体类字段进行校验。常规

2022-03-24 13:41:17 137

原创 一个tomcat同时部署有启动顺序的多个项目

前言一个tomcat部署多个项目常用的方法是将所有的项目放置在webapps里面,共用同一个端口,各项目根据项目名进行区分。如果多个项目有启动先后顺序,这样的做法就显得不合适,因为tomcat启动是根据项目名称字母顺序来启动。网上有种做法,在conf\Catalina\localhost文件夹下建立需要首先启动的项目相应文件,如果是两个项目没有问题,但多个项目仍然不方便控制。实用的做法是定义多个service标签,各项目使用不同的端口号。操作方法1、conf\server.xml定义多个service

2020-12-11 15:37:29 1661

原创 springboot集成websocket

前言服务端一般都是被动接收请求,不主动向客户端发送信息。在某些场景情况下,客户需要及时获取更新的数据,有两种方法解决,一是由前端轮询定时调用接口,二是采用websocket服务端与客户端保持实时通信。集成说明采用tomcat自带的websocket实现,其中内置tomcat和外置tomcat集成稍有差别,外置tomcat不需要注入ServerEndpointExporter,因为它由容器自己提供和管理,websocket接收类不需要加@Component注解。如果涉及用户权限的问题,需要定义webso

2020-12-11 15:35:25 132

原创 springboot集成kafka消息中间件

前言目前消息中间件有很多,比如rabbitmq、rocketmq、activemq、kafka,集成方法和使用方法大同小异,消息中间件主要是解决三方面的问题:削峰、异步、解耦。曾用过rabbitmq上传机器人状态信息、用rocketmq进行订单超时取消功能。集成说明kafka原生并不支持传输对象,具体可用传输类型可参照下图以Serializer后缀的为序列化类,以Deserializer后缀的为反序列化类。若需要让kafka能够传输对象,一是实体类需要实现序列化接口,二是实现Serializer和

2020-12-11 15:33:59 227 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 148

原创 Java获取音视频文件时长(支持windows和linux)

<!-- window64位 ffmpeg --> <dependency> <groupId>ws.schild</groupId> <artifactId>jave-native-win64</artifactId> <version>2.4.6</version> </dependency> <!-- linux64位 ffmpeg --> <dependency>

2019-07-10 12:45:18 4295

空空如也

空空如也

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

TA关注的人

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