- 博客(184)
- 资源 (15)
- 收藏
- 关注
原创 统一响应实体
统一响应实体import java.io.Serializable;/** * 统一响应实体 * <p> * <br/> * 格式如下 * * <pre> * { * "content": "自定义业务Response", * "message": "操作成功", * "state": 1, * "uiMessage": "自定义消息,用于前端显示" * } * </pre> */public
2021-10-15 15:23:50 242
原创 基于SpringBoot整合Swagger2项目API版本控制
基于SpringBoot整合Swagger2项目API版本控制SpringBoot项目pom配置<?xml version="1.0" encoding="UTF-8"?><project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/
2021-08-09 10:55:28 620 1
原创 RabbitMQ的消息确认机制
RabbitMQ的消息确认机制一:确认种类RabbitMQ的消息确认有两种。一种是消息发送确认。这种是用来确认生产者将消息发送给交换器,交换器传递给队列的过程中,消息是否成功投递。发送确认分为两步,一是确认是否到达交换器,二是确认是否到达队列。第二种是消费接收确认。这种是确认消费者是否成功消费了队列中的消息。二:消息发送确认(1)ConfirmCallback通过实现ConfirmCallBack接口,消息发送到交换器Exchange后触发回调。RabbitMQ的消息确认机制使用该功能需要
2021-02-26 10:37:38 287
原创 Rabbitmq的死信队列和延时队列
Rabbitmq的死信队列和延时队列一、死信队列死信队列其实和普通的队列没啥大的区别,都需要创建自己的Queue、Exchange,然后通过RoutingKey绑定到Exchange上去,只不过死信队列的RoutingKey和Exchange要作为参数,绑定到正常的队列上去,一种应用场景是正常队列里面的消息被basicNack或者reject时,消息就会被路由到正常队列绑定的死信队列中,还有一种还有常用的场景就是开启了自动签收,然后消费者消费消息时出现异常,超过了重试次数,那么这条消息也会进入死信队列,
2021-02-26 10:33:44 836
转载 ckeditor富文本编辑器的使用和图片上传
项目开发需要用到在线编辑和图片上传,最终讨论使用ckeditor,原因就是其丰富的API。考虑到最新版本ckeditor5可能不够稳定,我们选择使用ckedtior4.9.2版本。官网链接:ckeditor官网 特别注意:下面截图中url中的/editor/upload/1?其中的 /1 是根据自己需求添加不同类型数据上传时候的区分,可以去掉,写成/ed...
2021-02-17 14:29:06 1342 1
原创 Mybatis和Mybatis-Plus时间范围查询
一、mysql1.传入时间范围参数类型是字符串 <if test="startTime!=null and startTime.trim() neq ''"> and date_format(create_time,'%Y-%m-%d %H:%i:%s') >= str_to_date(#{startTime},'%Y-%m-%d %H:%i:%s') </if> <if test="endTime!=null and endTime.trim
2020-11-06 13:59:01 7414
转载 SpringBoot使用Redis实现分布式锁
前言在单机应用时代,我们对一个共享的对象进行多线程访问的时候,使用java的synchronized关键字或者ReentrantLock类对操作的对象加锁就可以解决对象的线程安全问题。分布式应用时代这个方法却行不通了,我们的应用可能被部署到多台机器上,运行在不同的JVM里,一个对象可能同时存在多台机器的内存中,怎样使共享对象同时只被一个线程处理就成了一个问题。在分布式系统中为了保证一个对象在高并发的情况下只能被一个线程使用,我们需要一种跨JVM的互斥机制来控制共享资源的访问,此时就需要用到我们的分布式
2020-09-24 14:42:56 700
转载 利用Power Design 进行数据库设计(超详细)
https://blog.csdn.net/Fly_1213/article/details/88813490
2020-09-14 16:25:05 220
转载 RestTemplateUtils工具类
Spring 远程调用Rest服务工具类,包含Get、Post、Put、Delete四种调用方式。依赖jar <dependency> <groupId>org.springframework</groupId> <artifactId>spring-context</artifactId> <version>5.0.9.RELEASE</version> &
2020-09-02 10:13:17 1315
原创 三种常见的限流算法
1、计数器算法计数器算法是限流算法里最简单也是最容易实现的一种算法。比如我们规定,对于A接口来说,我们1分钟的访问次数不能超过100个。那么我们可以这么做:在一开 始的时候,我们可以设置一个计数器counter,每当一个请求过来的时候,counter就加1,如果counter的值大于100并且该请求与第一个 请求的间隔时间还在1分钟之内,那么说明请求数过多;如果该请求与第一个请求的间隔时间大于1分钟,且counter的值还在限流范围内,那么就重置 counter,具体算法的示意图如下:具体的Java代
2020-07-30 10:06:29 342
原创 Spring Cloud Feign的文件上传实现
在Spring Cloud封装的Feign中并不直接支持传文件,但可以通过引入Feign的扩展包来实现,本来就来具体说说如何实现。服务提供方(接收文件)服务提供方的实现比较简单,就按Spring MVC的正常实现方式即可,比如:@EnableFeignClients@EnableDiscoveryClient@SpringBootApplicationpublic class Application { @RestController public class UploadCo
2020-07-17 14:07:41 481
原创 SpringCloud : 多个 @FeignClient 注解 value 设置为同一个应用的解决方案
Feign 版本10.1.0Spring 版本 5.1.5.RELEASESpringBoot 版本 2.1.5.RELEASESpringCloud 版本 2.1.1.RELEASE在微服务架构中,当我们需要进行服务间调用时可以选择feign组件,现在遇到的问题是: 当同一个服务,声明多个feign实例时,启动时直接报错。解决办法,通过 Feign.builder() 手动生成代理类。 另一种见评论区:#允许bean实例同名覆盖 allow-bean-definition-over.
2020-07-17 14:02:38 2911 2
转载 Java图片水印工具类
package com.atguigu.sssp.util;import java.awt.AlphaComposite;import java.awt.Color;import java.awt.Font;import java.awt.Graphics2D;import java.awt.Image;import java.awt.RenderingHints;import j...
2020-07-10 14:38:50 127
原创 优秀的基于VUE移动端UI框架合集
vonic 一个基于 vue.js 和 ionic 样式的 UI 框架,用于快速构建移动端单页应用,很简约,是我喜欢的风格 star 2.3k2.vux 基于WeUI和Vue(2.x)开发的移动端UI组件库 star 10k基于webpack+vue-loader+vux可以快速开发移动端页面,配合vux-loader方便你在WeUI的基础上定制需要的样式。3.Mint UI 由饿了么前端...
2020-07-10 14:38:22 314
原创 vue的UI框架集合(移动端+pc端)
1. vonic 一个基于 vue.js 和 ionic 样式的 UI 框架,用于快速构建移动端单页应用,很简约,是我喜欢的风格 star 2.3k中文文档 在线预览2.vux 基于WeUI和Vue(2.x)开发的移动端UI组件库 star 10k基于webpack+vue-loader+vux可以快速开发移动端页面,配合vux-loader方便你在WeUI的基础上定制需要的样式。...
2020-07-10 14:38:12 1089
原创 vue 移动端PC端选用的ui框架
1.pc端的项目,最好的选择是ElementUI。(pc端)一套为开发者、设计师和产品经理准备的基于 Vue 2.0 的桌面端组件库。Element是饿了么前端开源维护的Vue UI组件库,更新频率还是很高的,基本一周到半个月都会发布一个新版本。组件齐全,基本涵盖后台所需的所有组件,文档讲解详细,例子也很丰富。没有实际使用过,网上的Element教程和文章比较多。Element应该是一个质量比较...
2020-07-10 14:37:24 1108
原创 MongoDB 聚合 -- 连表查询
在使用MongoDB存储数据的时候,我们查询的时候,有时候难免会需要进行连表查询。但是MongoDB本身是非关系性数据库,连表查询,很多时候,需要我们自己在代码里手工操作。但是从 MongoDB 3.2 版本过后,我们可以使用 $lookup 进行连表查询。下...
2020-07-10 14:37:05 409
转载 mysql查询数据分组后保留每组前n条数据
https://blog.csdn.net/smile_life_/article/details/81216926
2020-07-10 14:36:46 611
转载 springboot集成Elasticsearch使用completion suggest实现自动关键字补全
https://blog.csdn.net/wangxudongx/article/details/87275232
2020-07-10 14:36:27 1514
原创 VuePC端UI组件库
ElementElement,一套为开发者、设计师和产品经理准备的基于 Vue 2.0 的桌面端组件库中文文档 | github地址image2. iView一套基于 Vue.js 的高质量UI 组件库中文文档 | github地址image3. vue-element-adminvue-element-admin是基于 Vue2.0,配合使用 Element UI 组件库的...
2020-07-10 14:36:10 1649
原创 常见的“熟悉”、“掌握”、“精通”具体究竟是指怎样的水平?
1、了解——知道,不会做,找个人带着可以帮点忙。2、熟悉——知道,能做60-80%的工作。但碰到难题需要指导一下3、熟练(掌握)——95%以上的相关工作都可独立完成,无需指导帮助。且能在工作技巧上指导“了解”、“熟悉”4、精通——“熟练”那5%解决不了的,“精通”可以攻关完成。“精通”最主要的价值是可以技术预研,能改革现有程序或方法,解决新问题。精通另一点价值是,能解决单一领域多层次问题,或...
2020-07-10 14:35:52 54936
原创 MyBatis中调用存储过程和函数
MyBatis中调用存储过程和函数 一.调用存储过程 1.首先在数据库中定义存储过程,定义的存储过程的代码如下: //定义存储过程 create or replace procedure pag_add(p1 varchar2,p2 varchar2,p3 out varchar2) as begin p3:=p1+p2; end...
2020-07-10 14:33:42 123
转载 数据库设计——评论回复功能
1、概述评论功能已经成为APP和网站开发中的必备功能。本文主要介绍评论功能的数据库设计。评论功能最主要的是发表评论和回复评论(删除功能在后台)。评论功能的拓展功能体现有以下几方面:(1)单篇文章的评论数量和信息展示;(2)从时间维度,按照时间倒叙的方式展示动态的用户评论信息;(3)不同栏目,不同模块,不同时间维度的评论排行展示;(4)精华评论的单独推荐和聚合展示;(5)评论后直接分享...
2020-07-10 14:32:38 758 1
原创 【springboot】之利用shell脚本优雅启动,关闭springboot服务
springbot开发api接口服务,生产环境中一般都是运行独立的jar,在部署过程中涉及到服务的优雅启动,关闭,springboot官方文档给出的有两种方式,1、使用http shutdown2、注册为系统服务 https://docs.spring.io/spring-boot/docs/1.5.3.RELEASE/reference/htmlsingle/#deployment-se...
2020-07-10 14:30:43 673
原创 mysql 统计 每天累计用户数
需求: 查出 每天的新增用户SELECT DISTINCT ( DATE_FORMAT(a.t_create_time, '%Y-%m-%d') ) AS 日期, count(t_id) AS 用户量FROM t_user aGROUP BY 日期结果: ...
2020-07-10 14:29:59 984
原创 API接口签名验证
API接口签名验证系统从外部获取数据时,通常采用API接口调用的方式来实现。请求方和接口提供方之间的通信过程,有这几个问题需要考虑: 1、请求参数是否被篡改; 2、请求来源是否合法; 3、请求是否具有唯一性。 今天跟大家探讨一下主流的通信安全解决方案。 参数签名方式 这种方式是主流。它要求调用方按照约定好的算法生成签名字符串,作为请求的一部分,接口提供方验算签名即可知是否合法。步骤...
2020-07-10 14:29:05 187
原创 MYSQL数据库设计规范
MYSQL数据库设计规范**1、数据库命名规范** 采用26个英文字母(区分大小写)和0-9的自然数(经常不需要)加上下划线'_'组成; 命名简洁明确(长度不能超过30个字符); 例如:user, stat, log, 也可以wifi_user, wifi_stat, wifi_log给数据库加个前缀; 除非是备份数据库可以加0-9的自然数:user_db_20...
2020-07-10 14:28:50 99
原创 SwaggerAPI注解详解,以及注解常用参数配置
官网github地址:https://github.com/swagger-api/swagger-core/wiki/Annotations-1.5.X注解@Api:作用在类上,用来标注该类具体实现内容。表示标识这个类是swagger的资源 。参数:tags:可以使用tags()允许您为操作设置多个标签的属性,而不是使用该属性。description:可描述描述该类作用。@ApiImplicitParam:作用在方法上,表示单独的请求参数参数:name :参数名。value :
2020-07-10 14:23:07 1385
原创 分布式全局唯一ID的实现
分布式全局唯一ID的实现概念在复杂分布式系统中,往往需要对大量的数据和消息进行唯一标识。如在金融、电商、支付、等产品的系统中,数据日渐增长,对数据分库分表后需要有一个唯一ID来标识一条数据或消息,数据库的自增ID显然不能满足需求,此时一个能够生成全局唯一ID的系统是非常必要的。特点:全局唯一性(核心):作为唯一标识,不可以出现重复ID趋势递增:在MySQL InnoDB引擎中使用的是聚集索引,由于多数RDBMS使用B-tree的数据结构来存储索引数据,在主键的选择上面我们应该尽量使用有序的主键保
2020-07-03 16:50:04 172
转载 分布式系统中接口的幂等性
业务场景公司有个借贷的项目,具体业务类似于阿里的蚂蚁借呗,用户在平台上借款,然后规定一个到期时间,在该时间内用户需将借款还清并收取一定的手续费,如果规定时间逾期未还上,则会产生滞纳金。用户发起借款因此会产生一笔借款订单,用户可通过支付宝或在系统中绑定银行卡到期自动扣款等方式进行还款。还款流程都走支付系统,因此用户还款是否逾期以及逾期天数、逾期费等都通过系统来计算。但是在做订单系统的时候,遇到这样一个业务场景,由于业务原因允许用户通过线下支付宝还款,即我们提供一个公司官方的支付宝二维码,用户扫码还款,
2020-07-02 14:26:25 336
原创 uni-app实战仿小米商城app开发
uni-app实战仿小米商城app开发关注公众号:码农那些年 回复“uni-app商城”,免费获取。
2020-06-21 14:37:27 2103 2
原创 2019uni-app前后端全栈实战仿糗事百科app
2019uni-app前后端全栈实战仿糗事百科app关注公众号:码农那些年 回复“uni-app百科”,免费获取。
2020-06-21 14:36:51 971 1
转载 IDEA快捷键大全
常用快捷键Ctrl+Alt+O 优化导入的类和包Alt+Insert 生成代码(如get,set方法,构造函数等) 或者右键(Generate)fori/sout/psvm + TabCtrl+Alt+T 生成try catch 或者 Alt+enterCTRL+ALT+T 把选中的代码放在 TRY{} IF{} ELSE{} 里Ctrl + O 重写方法Ctrl + I 实现方法...
2019-12-16 11:53:05 133
转载 点赞模块设计 - Redis缓存 + 定时写入数据库实现高性能点赞功能
本文基于 SpringCloud, 用户发起点赞、取消点赞后先存入 Redis 中,再每隔两小时从 Redis 读取点赞数据写入数据库中做持久化存储。点赞功能在很多系统中都有,但别看功能小,想要做好需要考虑的东西还挺多的。点赞、取消点赞是高频次的操作,若每次都读写数据库,大量的操作会影响数据库性能,所以需要做缓存。至于多久从 Redis 取一次数据存到数据库中,根据项目的实际情况定吧,我是暂...
2019-12-05 09:28:33 299
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人