自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(103)
  • 资源 (3)
  • 收藏
  • 关注

转载 优化api接口,返回格式,统一返回格式

微服务盛行的今天,现在项目绝大部分都采用的微服务框架,前后端分离方式,(题外话:前后端的工作职责越来越明确,现在的前端都称之为大前端,技术栈以及生态圈都已经非常成熟;以前后端人员瞧不起前端人员,那现在后端人员要重新认识一下前端,前端已经很成体系了)。需要说明的是,有些小伙伴会回复说,这个架构太简单了吧,太low了,什么网关啊,缓存啊,消息中间件啊,都没有。因为这篇主要聊API接口,所以我们聚焦这一点。

2022-11-14 10:55:47 716

转载 设计模式-责任链

责任链模式是一种行为设计模式, 允许你将请求沿着处理者链进行发送。收到请求后, 每个处理者均可对请求进行处理, 或将其传递给链上的下个处理者。图片。

2022-08-15 09:41:51 222

转载 @Transactional 事务注解

至于这个的原因,发表下个人的理解吧,因为JVM的动态代理是基于接口实现的,通过代理类将目标方法进行增强,想一下也是啦,没有权限访问那么你让我怎么进行,,,好吧,这个我也没有深入研究底层,个人理解个人理解。层直接调用没有接口的service层,加了注解也一样不起作用吧,这个懒了,没有测试,其一是因为没有人会这么开发吧,其二是我就认为是不起作用的,哈哈。代码太长了,超过屏幕了,粘贴出来截的图,红框注释需要仔细看,希望不要影响你的阅读体验,至此,本篇关于。自己简单写了代码,有点粗糙,就不要介意啦,嘿嘿。...

2022-08-04 09:44:21 253

转载 Ip2region 离线IP地址定位库和IP定位数据管理框架

老板要我做一个 IP 属地功能!我摸索了 1 天,搞定了。♥️细心的朋友应该会发现,最近,继新浪微博之后,头条、腾讯、抖音、知乎、快手、小红书等各大平台陆陆续续都上线了“网络用户IP地址显示功能”,境外用户显示的是国家,国内的用户显示的省份,而且此项显示无法关闭,归属地强制显示。作为技术人,那!这个功能要怎么实现呢?1.HttpServletRequest 获取 IP下面,我就来讲讲,Java中是如何获取IP属地的,主要分为以下几步:通过 HttpServletRequest 对象,获取用户的。...

2022-08-04 09:42:00 7219 1

转载 7种 实现web实时消息推送的方案

推送的场景比较多,比如有人关注我的公众号,这时我就会收到一条推送消息,以此来吸引我点击打开应用。消息推送(push)通常是指网站的运营工作等人员,通过某种工具对用户当前网页或移动设备APP进行的主动消息推送。消息推送一般又分为web端消息推送和移动端消息推送。上边的这种属于移动端消息推送,web端消息推送常见的诸如站内信、未读邮件数量、监控报警数量等,应用的也非常广泛。...

2022-08-04 09:33:25 1024

转载 Spring Event 贼好用的业务解耦神器

实际业务开发过程中,业务逻辑可能非常复杂,核心业务 + N 个子业务。如果都放到一块儿去做,代码可能会很长,耦合度不断攀升,维护起来也麻烦,甚至头疼。还有一些业务场景不需要在一次请求中同步完成,比如邮件发送、短信发送等。Spring Event(Application Event)其实就是一个观察者设计模式,一个 Bean 处理完成任务后希望通知其它 Bean 或者说一个 Bean 想观察监听另一个Bean 的行为。有些业务场景不需要在一次请求中同步完成,比如邮件发送、短信发送等。...

2022-08-04 09:09:23 107

转载 DevSidecar加速访问GitHub

DevSidecar 会根据网络状况智能解析最佳域名 IP 地址,获取最佳网络速度,进而解决一些网站和库无法访问或访问速度慢的问题。实现原理:DNS 解析域名下的 IP 地址,对每个 IP 进行测速,选择速度最快的 IP 地址进行请求。这是DevSidecar 最基本的功能,和我们以前常用的手动修改 hosts 文件是一个道理。对于所有 IP 地址访问都比较困难的网站,DevSidecar 可以将请求(比如访问 GitHub)代理到加速镜像站点。实现原理:DevSidecar 在本地启动了一个代理服务器帮你

2022-06-14 09:31:40 6761 1

转载 一个注解搞得重试逻辑

一个注解搞得重试逻辑

2022-06-13 16:27:56 71

转载 Spring 自带的工具类

断 言1 断言是一个逻辑判断,用于检查不应该发生的情况2 Assert 关键字在 JDK1.4 中引入,可通过 JVM 参数-enableassertions开启3 SpringBoot 中提供了 Assert 断言工具类,通常用于数据合法性检查//要求参数object必须为非空(NotNull),否则抛出异常,不予放行//参数 message 参数用于定制异常信息。voidnotNull(Objectobject,Stringmessage)//要求参数必须空(...

2022-03-02 15:31:37 385

转载 “ YYYY-MM-dd ”与““ yyyy-MM-dd ””的区别

publicclassDateTest{publicstaticvoidmain(String[]args){Calendarcalendar=Calendar.getInstance();calendar.set(2019,Calendar.AUGUST,31);DatestrDate=calendar.getTime();DateFormatformatUpperCase=newSimpleDateForm...

2022-03-02 15:28:15 347

转载 自定义注解实现业务校验

参数校验 业务规则校验 代码实战 自定义注解 实现业务校验规则 使用 测试 小结 在日常的接口开发中,为了保证接口的稳定安全,我们一般需要在接口逻辑中处理两种校验: 参数校验 业务规则校验 首先我们先看看参数校验。参数校验参数校验很好理解,比如登录的时候需要校验用户名密码是否为空,创建用户的时候需要校验邮件、手机号码格式是否准确。而实现参数校验也非常简单,我们只需要..

2022-03-01 13:28:25 359

转载 消息队列经典十连问

前言金三银四即将来临,整理了十道十分经典的消息队列面试题,看完肯定对面试有帮助的,大家一起加油哈~ 什么是消息队列 消息队列的应用场景 消息队列如何解决消息丢失问题 消息队列如何保证消息的顺序性。 消息有可能发生重复消费吗?如何幂等处理? 如何处理消息队列的消息积压问题 消息队列技术选型,Kafka还是RocketMQ,还是RabbitMQ 消息中间件如何做到高可用? 如何保证数据一致性,事务消息如何实现 如

2022-03-01 10:55:29 108

转载 if-else=Map + 函数式接口

文章目录 需求 策略模式 Map+函数式接口 最后捋一捋本文讲了什么 需求最近写了一个服务:根据优惠券的类型resourceType和编码resourceId来 查询 发放方式grantType和领取规则。实现方式: 根据优惠券类型resourceType -> 确定查询哪个数据表 根据编码resourceId -> 到对应的数据表里边查询优惠券的派发方式grantType和领取规则 优惠券有多种类型,分别对应了不同的数据库表:

2022-02-28 16:25:15 168

转载 一键生成数据库文档,堪称数据库界的Swagger

1简介在企业级开发中、我们经常会有编写数据库表结构文档的时间付出,从业以来,待过几家企业,关于数据库表结构文档状态:要么没有、要么有、但都是手写、后期运维开发,需要手动进行维护到文档中,很是繁琐、如果忘记一次维护、就会给以后工作造成很多困扰、无形中制造了很多坑留给自己和后人,于是萌生了要自己写一个插件工具的想法2特点 简洁、轻量、设计良好 多数据库支持 多种格式文档 灵活扩展 支持自定义模板 3数据库支持

2022-02-28 11:24:56 240

转载 分布式JVM监控工具,非常实用

介绍该项目为了方便开发者更快监控多个远程主机jvm,如果你的项目是Spring boot那么很方便集成,jar包引入即可,不是Spring boot也不用气馁,你可以快速自行初始化一个Spirng boot程序引入jar包即可效果展示整体架构git地址https://github.com/xk4848123/monitorhttps://github.com/xk4848123/monitor-server使用前提需要机器中有J

2022-02-25 16:38:02 130

原创 一键更改pom中jar包版本名称命令

versions:set -DnewVersion=0.0.3-SNAPSHOT

2022-02-15 15:06:04 1316

转载 100多个常用免费 API 接口分享,不限次数,留着备用

各类无次数限制的免费API接口整理,主要是聚合数据上和API Store上的一些,还有一些其他的。聚合数据提供30大类,160种以上基础数据API服务,国内最大的基础数据API服务,下面就罗列一些免费的各类API接口。手机号码归属地API接口:https://www.juhe.cn/docs/api/id/11历史上的今天API接口:https://www.juhe.cn/docs/api/id/63股票数据API接口:https://www.juhe.cn/do

2022-01-27 17:05:06 28480

转载 Spring Boot 配置文件敏感信息加密

使用过SpringBoot配置文件的朋友都知道,资源文件中的内容通常情况下是明文显示,安全性就比较低一些。打开application.properties或application.yml,比如 MySql登陆密码,Redis登陆密码以及第三方的密钥等等一览无余,这里介绍一个加解密组件,提高一些属性配置的安全性。jasypt由一个国外大神写了一个springboot下的工具包,用来加密配置文件中的信息。GitHub Demo地址:https://github.com/jeiker

2022-01-27 17:00:46 93

转载 分布式接口幂等性、分布式限流(Guava 、nginx和lua限流)

限流

2022-01-04 09:43:50 192

转载 SpringBoot 启动时实现自动执行代码的几种方式讲解

自动执行代码

2021-12-29 13:23:31 113

转载 Nginx从安装到高可用

Nginx搭建

2021-12-28 13:02:48 88

原创 浏览器安装油猴

浏览器安装油猴及脚本

2021-12-22 15:48:16 2330

转载 @Async异步发送短信

前言最近在做订单模块,用户购买服务类产品之后,需要进行预约,预约成功之后分别给商家和用户发送提醒短信。考虑发短信耗时的情况所以我想用异步的方法去执行,于是就在网上看见了Spring的@Async了。但是遇到了许多问题,使得@Async无效,也一直没有找到很好的文章去详细的说明@Async的正确及错误的使用方法及需要注意的地方,这里简单整理了一下遇见的问题,Sring是以配置文件的形式来开启@Async,而SpringBoot则是以注解的方式开启。我们可以使用springBoot默认的线程池,不过

2021-12-16 09:02:42 832

转载 Bean Searcher

对一个 Java 后端程序员来说,mybatis、hibernate、data-jdbc等都是我们常用的 ORM 框架。它们有时候很好用,比如简单的 CRUD,事务的支持都非常棒。但有时候用起来也非常繁琐,比如接下来我们要聊到的一个常见的开发需求,而对这类需求,本文会给出一个比直接使用这些 ORM 开发效率至少会提高100倍的方法(绝无夸张)。首先数据库有两张表用户表(user):(简单起见,假设只有 4 个字段)角色表(role):(简单起见,假设只有 2 个字段)接下来我们...

2021-11-11 09:34:57 5720 6

转载 Spring Boot 发送邮件功能

什么是 SMTP?SMTP 全称为 Simple Mail Transfer Protocol(简单邮件传输协议),它是一组用于从源地址到目的地址传输邮件的规范,通过它来控制邮件的中转方式。SMTP 认证要求必须提供账号和密码才能登陆服务器,其设计目的在于避免用户受到垃圾邮件的侵扰。什么是 IMAP?IMAP 全称为 Internet Message Access Protocol(互联网邮件访问协议),IMAP 允许从邮件服务器上获取邮件的信息、下载邮件等。IMAP 与 POP 类似,都是一种

2021-11-01 09:11:11 719

转载 使用 StopWatch 优雅打印执行耗时

0x01:背景有时在做开发的时候需要记录每个任务执行时间,或者记录一段代码执行时间,最简单的方法就是打印当前时间与执行完时间的差值,然后这样如果执行大量测试的话就很麻烦,并且不直观,如果想对执行的时间做进一步控制,则需要在程序中很多地方修改,目前spring-framework提供了一个StopWatch类可以做类似任务执行时间控制,也就是封装了一个对开始时间,结束时间记录工具示例先来看几个示例 统计输出总耗时 1importorg.springframework.util.St.

2021-10-29 10:43:59 111

转载 Java8 Stream流递归,几行代码搞定遍历树形结构

可能平常会遇到一些需求,比如构建菜单,构建树形结构,数据库一般就使用父id来表示,为了降低数据库的查询压力,我们可以使用Java8中的Stream流一次性把数据查出来,然后通过流式处理,我们一起来看看,代码实现为了实现简单,就模拟查看数据库所有数据到List里面。实体类:Menu.java/***Menu*@authorlcry*/@Data@BuilderpublicclassMenu{/***id*/publicIn...

2021-10-21 15:50:58 212

转载 Spring Boot巧用 @Async 提升API接口并发能力

异步调用几乎是处理高并发Web应用性能问题的万金油,那么什么是“异步调用”?“异步调用”对应的是“同步调用”,同步调用指程序按照定义顺序依次执行,每一行程序都必须等待上一行程序执行完成之后才能执行;异步调用指程序在顺序执行时,不等待异步调用的语句返回结果就执行后面的程序。同步调用下面通过一个简单示例来直观的理解什么是同步调用:定义Task类,创建三个处理函数分别模拟三个执行任务的操作,操作消耗时间随机取(10秒内)@ComponentpublicclassTask{...

2021-10-13 09:40:22 128

转载 SpringBoot热部署环境配置与测试

什么是热部署?热部署,就是我们在项目正在运行的时候进行了项目改造升级(增加业务),却不需要重新启动项目。大家都知道在项目开发过程中,常常会改动页面数据或者修改数据结构,为了显示改动效果,往往需 要重启应用查看改变效果,其实就是重新编译生成了新的Class文件,这个文件里记录着和代码等对应 的各种信息,然后Class文件将被虚拟机的ClassLoader加载。而热部署正是利用了这个特点,它监听到如果有 Class 文件改动了,就会创建一个新的ClaassLoader 进行加载该文件...

2021-10-11 16:34:31 451

转载 一个注解搞定 SpringBoot 接口防刷

一,技术要点:springboot的基本知识,redis基本操作,首先是写一个注解类:importjava.lang.annotation.Retention;importjava.lang.annotation.Target;importstaticjava.lang.annotation.ElementType.METHOD;importstaticjava.lang.annotation.RetentionPolicy.RUNTIME;@Retention(RUN...

2021-10-11 16:28:01 130

转载 Spring Cloud架构的各个组件的原理分析

原理讲解前,先看一个最经典的业务场景,如开发一个电商网站,要实现支付订单的功能,流程如下:创建一个订单之后,如果用户立刻支付了这个订单,我们需要将订单状态更新为“已支付”扣减相应的商品库存通知仓储中心,进行发货给用户的这次购物增加相应的积分如上,微服务的应用场景和核心竞争力:降低耦合:每一个微服务专注于单一功能,并通过定义良好的接口清晰表述服务边界。由于体积小、复杂度低,每个微服务可由一个小规模开发团队完全掌控,易于保持高可维护性和开发效率。...

2021-10-11 11:21:34 84

转载 @Valid使用

数据的校验的重要性就不用说了,即使在前端对数据进行校验的情况下,我们还是要对传入后端的数据再进行一遍校验,避免用户绕过浏览器直接通过一些 HTTP 工具直接向后端请求一些违法数据。最普通的做法就像下面这样。我们通过if/else语句对请求的每一个参数一一校验。这样的代码,小伙伴们在日常开发中一定不少见,很多开源项目都是这样对请求入参做校验的。但是,不太建议这样来写,这样的代码明显违背了单一职责原则。大量的非业务代码混杂在业务代码中,非常难以维护,还会导致业务层代码冗杂!实际上,我们...

2021-10-11 10:22:29 586

转载 Spring Boot 实现扫码登录

一、首先咱们需要一张表这表是干啥的呢?就是记录一下谁扫码了。谁登录了。User_Token表字段如下: uuid : 用于确保唯一性 userId :谁登录的 loginTime :登录时间 createTime :创建时间 用于判断是否过期 state:是否二维码失效 0有效 1失效 二、角色都有哪些咱们还需要分析一下子。扫码登录这个业务逻辑都有哪些角色 android端 or 微信Web端 :扫码 PC端 :被扫。登录

2021-10-11 09:39:30 186 1

转载 Java 对象不使用时,要赋值为 null

示例代码我们来看看一段非常简单的代码:Javapublicstaticvoidmain(String[]args){if(true){byte[]placeHolder=newbyte[64*1024*1024];System.out.println(placeHolder.length/1024);}System.gc();}我们在if中实例化了...

2021-10-09 15:15:11 467

转载 isEmpty 和 isBlank 的用法区别

isEmpty系列 StringUtils.isEmpty() StringUtils.isNotEmpty() StringUtils.isAnyEmpty() StringUtils.isNoneEmpty() isBank系列 StringUtils.isBlank() StringUtils.isNotBlank() StringUtils.isAnyBlank() ..

2021-10-09 15:08:18 133

转载 spring 事务失效的 12 种场景

前言 一、事务不生效 1.访问权限问题 2. 方法用 final 修饰 3.方法内部调用 4.未被 spring 管理 5.多线程调用 6.表不支持事务 7.未开启事务 二、事务不回滚 1.错误的传播特性 2.自己吞了异常 3.手动抛了别的异常 4.自定义了回滚异常 5.嵌套事务回滚多了 ..

2021-10-09 15:05:32 172

转载 Spring Boot + EasyExcel 导入导出

一、EasyExcel 二、常用注解 三、依赖 四、监听 五、接口导入Excel 六、接口导出Excel 七、本地导入、本地导出 一、EasyExcelEasyExcel是阿里巴巴开源poi插件之一,主要解决了poi框架使用复杂,sax解析模式不容易操作,数据量大起来容易OOM,解决了POI并发造成的报错。主要解决方式:通过解压文件的方式加载,一行一行的加载,并且抛弃样式字体等不重要的数据,降低内存的占用。EasyExcel..

2021-10-09 13:55:54 207

转载 详解 Lombok 中的 @Builder 用法!

Builder 使用创建者模式又叫建造者模式。简单来说,就是一步步创建一个对象,它对用户屏蔽了里面构建的细节,但却可以精细地控制对象的构造过程。基础使用@Builder注释为你的类生成相对略微复杂的构建器API。@Builder可以让你以下面显示的那样调用你的代码,来初始化你的实例对象:Student.builder().sno("001").sname("admin").sage(1...

2021-10-09 13:25:53 542

转载 为什么不把基本类型放堆中呢?

为什么要把堆和栈区分出来呢?第一,从软件设计的角度看,栈代表了处理逻辑,而堆代表了数据。这样分开,使得处理逻辑更为清晰。分而治之的思想。这种隔离、模块化的思想在软件设计的方方面面都有体现。第二,堆与栈的分离,使得堆中的内容可以被多个栈共享(也可以理解为多个线程访问同一个对象)。这种共享的收益是很多的。一方面这种共享提供了一种有效的数据交互方式(如:共享内存),另一方面,堆中的共享常量和缓存可以被所有栈访问,节省了空间。第三,栈因为运行时的需要,比如保存系统运行的上下文,需要进行地址段的划分。

2021-10-09 11:53:04 277

转载 RabbitMQ 和 Kafka 到底怎么选?

前言开源社区有好多优秀的队列中间件,比如 RabbitMQ 和 Kafka,每个队列都貌似有其特性,在进行工程选择时,往往眼花缭乱,不知所措。对于 RabbitMQ 和 Kafka,到底应该选哪个?RabbitMQ 架构RabbitMQ 是一个分布式系统,这里面有几个抽象概念。 broker:每个节点运行的服务程序,功能为维护该节点的队列的增删以及转发队列操作请求。 master queue:每个队列都分为一个主队列和若干个镜像队列。 mirror queue:镜像队列

2021-10-09 11:35:34 590

bjui的演示和说明

bjui的演示稿和说明,里面详细说明了bjui中的各种调用和各种插件的使用。

2019-03-14

SVN 客户端

一款强大的版本控制工具,这个事客户端的。

2016-01-14

SVN服务器端

一款强大的版本控制工具,这个是服务器端的。

2016-01-14

空空如也

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

TA关注的人

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