• springboot 项目之默认全局异常拦截

    在web项目中,不可避免地会出现系统异常,例如资源找不到的404错误,服务器异常的5**错误,如果对这些异常不进行任何处理,则是非常不友好的。今天就对springboot项目中的异常拦截处理进行一个简单的使用说明。这里我使用的是springboot默认的异常拦截,也就是新建一个BasicErrorController类继承BasicErrorController。默认异常拦截在...

    Java 2021年01月13日 47 0
  • java初探Tess4j识别图片文字

    想学习下识别图片中的文字,找到了Tess4j图文识别的方式,于是就初步探究下,玩下识别验证码。第一步,下载1、以3.4.2版本为例,下载Tess4j-3.4.2-src.zip。2、下载中文字库,chi_sim.traineddata。下载Tess4j参考:http://sourceforge.net/projects/tess4j/字库下载参考:https://github....

    Java 2021年01月13日 56 0
  • 一种解决jar包冲突的实现:隔离机制

    业务背景随着业务的发展 和 架构的升级, 业务会越来越多的依赖公司内部提供的 中间件 ,如 rpc服务框架、分库分表框架、异步消息框架、公共工具包等等。每个中间件都有自己的 jar包依赖体系,最常用的如: logback、log4j、httpclient 、common-lang 、guava、zookeeper 等等 ,这些jar包依赖不仅会产生版本冲突,甚至会有jar包不兼...

    Java 2021年01月13日 49 0
  • CodeReview规范

    CodeReview规范目标和原则提高代码质量,及早发现潜在缺陷,降低修改/弥补缺陷的成本促进团队内部知识共享,提高团队整体水平评审过程对于评审人员来说,也是一种思路重构的过程,帮助更多的人理解系统是一个传递知识的手段,可以让其它并不熟悉代码的人知道作者的意图和想法,从而可以在以后轻松维护代码可以被用来确认自己的设计和实现是一个清楚和简单的鼓励相互学习对方的长处和优点高效迅速完...

    Java 2021年01月13日 51 0
  • Dubbo 版 Swagger 来啦

    背景Swagger 是一个规范和完整的前端框架,用于生成、描述、调用和可视化 RESTful 风格的 Web 服务。Swagger 规范也逐渐发展成为了 OpenAPI 规范。Springfox 是一个集成了 Swagger,基于 Sring MVC/Spring Webflux 实现的一个 Swagger 描述文件生成框架,通过使用它定义的一些描述接口的注解自动生成 Swag...

    Java 2021年01月13日 68 0
  • 干掉mapper.xml!MyBatis新特性动态SQL真香

    当我们使用MyBatis的时候,需要在mapper.xml中书写大量的SQL语句。当我们使用MyBatis Generator(MBG)作为代码生成器时,也会生成大量的mapper.xml文件。其实从MBG 1.3.6版本以后,MyBatis官方已经推荐使用Dynamic SQL,使用这一新特性基本就不用写mapper.xml文件了,使用起来非常方便,推荐给大家!Dynamic...

    Java 2021年01月09日 78 0
  • MybatisPlus全套Api小解(一)

    前言如果说ssm比ssh究竟好用在哪里,快速开发体验在哪里的话,那必然就是mybatis了,如果还要找一个比mybatis更优秀的dao层框架,那必然就是他的大哥——mybatis plus。一、MybatisPuls是什么? MyBatis-Plus 是一个 Mybatis 增强版工具,在 MyBatis 上扩充了其他功能没有改变其基本功能,只是为了简化开发提交效率而存在。官...

    Java 2021年01月09日 92 0
  • 微服务架构下分布式事务解决方案

    1 微服务的发展微服务倡导将复杂的单体应用拆分为若干个功能简单、松耦合的服务,这样可以降低开发难度、增强扩展性、便于敏捷开发。当前被越来越多的开发者推崇,很多互联网行业巨头、开源社区等都开始了微服务的讨论和实践。Hailo有160个不同服务构成,NetFlix有大约600个服务。国内方面,阿里巴巴、京东、58同城等很多互联网公司都进行了微服务化实践。当前微服务的开发框架也非常多...

    Java 2021年01月08日 115 0
  • 分布式系统 session 共享解决方案 JWT 实战笔记

    序言在分布式系统中,session 共享是一个必须要解决的问题。JWT 作为将信息放在客户端的解决方案,设计的非常巧妙,本节就和大家一起学习下 JWT 的使用。JWT 的优势或者说为什么使用 jwt?JSON Web Token(缩写 JWT)是目前最流行的跨域认证解决方案。传统方式互联网服务离不开用户认证。一般流程是下面这样。1、用户向服务器发送用户名和密码。 2、服务器验...

    Java 2021年01月08日 90 0
  • Java中“附近的人”实现方案讨论及代码实现

    1|0前言在我们平时使用的许多app中有附近的人这一功能,像微信、qq附近的人,哈罗、街兔附近的车辆。这些功能就在我们日常生活中出现。像类似于附近的人这一类业务,在Java中是如何实现的呢?本文就简单介绍下目前的几种解决方案,并提供简单的示例代码注: 本文仅涉及附近的人这一业务场景的解决方案讨论,并未涉及到相关的技术细节和方案优化,各位看官可以放心阅读。2|0基本套路和方案目前...

    Java 2021年01月07日 78 0
  • 可动态调节参数的线程池实现

    背景线程池是一种基于池化思想管理线程的工具,使用线程池可以减少创建销毁线程的开销,避免线程过多导致系统资源耗尽。在高并发的任务处理场景,线程池的使用是必不可少的。在双11主图价格表达项目中为了提升处理性能,很多地方使用到了线程池。随着线程池的使用,逐渐发现一个问题,线程池的参数如何设置?线程池参数中有三个比较关键的参数,分别是corePoolSize(核心线程数)、maximu...

    Java 2021年01月07日 66 0
  • API接口的安全设计验证—ticket,签名,时间戳

    概述与前端对接的API接口,如果被第三方抓包并进行恶意篡改参数,可能会导致数据泄露,甚至会被篡改数据,我主要围绕时间戳,token,签名三个部分来保证API接口的安全性1.用户成功登陆站点后,服务器会返回一个token,用户的任何操作都必须带了这个参数,可以将这个参数直接放到header里。2.客户端用需要发送的参数和token生成一个签名sign,作为参数一起发送给服务端,服...

    Java 2021年01月07日 108 0
  • java枚举类型,为什么强烈推荐使用?看看它的7种场景方法

    枚举是 JDK 1.5 新增的数据类型,使用枚举我们可以很好的描述一些特定的业务场景,比如一年中的春、夏、秋、冬,还有每周的周一到周天,还有各种颜色,以及可以用它来描述一些状态信息,比如错误码等。枚举类型不止存在在 Java 语言中,在其它语言中也都能找到它的身影,例如 C# 和 Python 等,但我发现在实际的项目中使用枚举的人很少,所以本文就来聊一聊枚举的相关内容,好让朋...

    Java 2021年01月07日 128 0
  • SpringBoot 集成小程序推送

    1、订阅消息包括两种一次性订阅消息一次性订阅消息用于解决用户使用小程序后,后续服务环节的通知问题。用户自主订阅后,开发者可不限时间地下发一条对应的服务消息;每条消息可单独订阅或退订。长期订阅消息一次性订阅消息可满足小程序的大部分服务场景需求,但线下公共服务领域存在一次性订阅无法满足的场景,如航班延误,需根据航班实时动态来多次发送消息提醒。为便于服务,我们提供了长期性订阅消息,用...

    Java 2021年01月06日 98 0
  • 善用HttpMessageConverter修改返回值

    近日,公司前台的小伙伴说我的返回值不对,处理起来太难了,他平白无故的增加了很多的工作量。我寻思:“纳尼?”。凑近一看,原来是接口的返回值,value为空的返回值都是null,增加了非空判断。例:{ "code": "1", "msg": "success", "data": { "orderId": "1313132", "address": null, "g...

    Java 2021年01月06日 73 0
  • 用Spring Boot实现https ssl免密登录

    要让项目实现 ssl 免密登录,首先需要开启 https 。所以先从 Spring Boot 如何开启 https 说起。创建服务端证书为了开启 https ,我们需要一份证书。实际开发中,会在网上申请一个机构颁发的证书。这里为了方便,我会使用 openssl 命令自己生成一个证书来使用。openssl req -x509 -sha256 -days 3650 -newkey ...

    Java 2021年01月06日 83 0
  • springboot 数据安全传输加密与解密

    环境:springboot2.2.6.RELEASE、Vue+axios通过继承RequestBodyAdviceAdapter实现对于请求的内容进行解密操作,实现ResponseBodyAdvice来对相应内容进行加密处理。定义加密解密的接口:SecretProcess.javapublic interface SecretProcess { /** * <...

    Java 2021年01月05日 85 0
  • 如何设计API接口,实现统一格式返回?

    目录前言接口交互返回格式控制层Controller美观优化优雅优化实现方案总结前言在移动互联网,分布式、微服务盛行的今天,现在项目绝大部分都采用的微服务框架,前后端分离方式,(题外话:前后端的工作职责越来越明确,现在的前端都称之为大前端,技术栈以及生态圈都已经非常成熟;以前后端人员瞧不起前端人员,那现在后端人员要重新认识一下前端,前端已经很成体系了)。一般系统的大致整体架构图如...

    Java 2021年01月03日 133 0
  • 轻量级的原生JavaScript的Excel插件——JExcel

    介绍jExcel是一个轻量级的原生javascript插件,用于创建与Excel或任何其他电子表格软件兼容的基于Web的交互式表格和电子表格。可以从JS数组,JSON,CSV或XSLX文件创建在线电子表格表。可以从excel复制并直接粘贴到jExcel电子表格,反之亦然。集成任何第三方javascript插件非常容易,可以创建自己的自定义列,自定义编辑器,并在应用程序中自定义任...

    Java 2021年01月02日 157 0
  • Spring Boot 启动事件和监听器,太强大了

    大家都知道,在 Spring 框架中事件和监听无处不在,打通了 Spring 框架的任督二脉,事件和监听也是 Spring 框架必学的核心知识之一。一般来说,我们很少会使用到应用程序事件,但我们也不要忘了它们的存在,比如说在 Spring 框架内部都使用了各种不同的事件来处理不同的任务。毫无疑问,在 Spring Boot 框架中,事件和监听也得到了发扬光大,除了常用的 Spr...

    Java 2021年01月01日 103 0
  • 查询附近范围的坐标点实现方案(java)

    需求说明需求来源于条友的一个项目,根据用户当前所在坐标,查询附近企业,并将距离进行倒排,这是个比价常见的需求,现在将实现过程简单描述一下。1、原方案从数据库中加载所有企业的坐标地址,数据量在万级,每个用户查询一次最近的企业,后台计算量就是数万次,N个用户每查询一次,就是N*数万次。2、优化方案先从数据库中查询出给定范围的企业,这样计算量就小很多,例如只需要查询1公里范围以内的企...

    Java 2020年12月31日 103 0
  • 我用Builder优雅地实现了对象的创建

    使用构造函数直接属性赋值Java的对象创建大家都知道,当对象创建完之后,我们可以有几种方式给对象的属性赋值。比如在new的时候给属性赋值。像这样:这样在创建对象时就将属性赋值,的确很方便。但是如果对象的属性很多,我们这么赋值就很不优雅了。使用setter属性赋值一般我们实际开发中,实体类会有很多属性。这时我们可以使用setter方法给属性赋值,如下代码:我们一般也是这么写的,但...

    Java 2020年12月26日 98 0
  • Spring Boot+CAS 单点登录,如何对接数据库?

    在前面和大家分享了松哥写的CAS Server 的搭建以及如何使用 Spring Security 搭建 CAS Client。但是前面的案例有一个问题,就是登录用户是在 CAS Server 配置文件中写死的,没有对接数据库,实际项目中,这里肯定要对接数据库,所以今天,松哥就来和大家聊一聊 CAS Server 如何对接数据库。松哥最近和 Spring Security 杠上...

    Java 2020年12月26日 94 0
  • kotlin web框架 Ktor 1.5.0发布

    我们很高兴地宣布Ktor 1.5.0的发布,它包含了新的功能,错误修复和新的文档!我们将继续努力。新功能1.5.0 是今年的第三个也是最后一个版本,按照我们的承诺,一年有三个主要或次要版本,每月至少发布一个补丁。我们很高兴地说,到目前为止,我们已经成功地或多或少地遵守了这个承诺,尽管有时会有一些延迟。在这次小更新中,我们有一系列的新功能,包括:新的开发模式Ktor提供了一系列针...

    Java 2020年12月23日 105 0
  • 为什么推荐try-with-resource处理java异常

    这篇文章是我近期看了《Effective java》一书中总结的,来自其中第九条。为了对其理解的更加透彻,因此重新分析了一下,并加入了一些其他点。本文的所有例子均在本地代码运行完毕基于JDK版本1.8,运行环境eclipse本文类名:TryWithResources,下文的堆栈信息也以此为基础在java开发中,一些网络链接或者是文件资源都需要程序员去手动调用close方法关闭,...

    Java 2020年12月23日 100 0
  • springboot 中使用JWT保护资源安全

    什么是JWT Json Web Token(JWT)是一个开放标准(RFC 7519),它定义了一种紧凑的、自包含的方式,用于在各方之间以JSON对象的形式安全地传输信息。此信息可以验证和信任,因为它是数字签名的。jwt可以使用密钥(使用HMAC算法)或使用RSA或ECDSA的公钥/私钥对进行签名。 尽管jwt可以被加密以提供双方之间的保密性,但我们将重点关注签名令牌。签名令牌...

    Java 2020年12月23日 121 0
  • 文件写入的6种方法,这种方法性能最好

    在 Java 中操作文件的方法本质上只有两种:字符流和字节流,而字节流和字符流的实现类又有很多,因此在文件写入时我们就可以选择各种各样的类来实现。我们本文就来盘点一下这些方法,顺便测试一下它们性能,以便为我们选出最优的写入方法。在正式开始之前,我们先来了解几个基本的概念:流、字节流和字符流的定义与区别。0.什么是流?Java 中的“流”是一种抽象的概念,也是一种比喻,就好比水流...

    Java 2020年12月22日 76 0
  • 如何写个分布式配置中心

    前言一位读者朋友跟我反馈,能不能写一篇比较全的配置中心的文章。自己最近在面试过程中有被面试官问:如何设计一个配置中心? 这个话题,由于自己在工作中也没实际使用过配置中心,所以对于如何去设计是完全没有概念的。今天就给大家写一篇去配置中心需要考虑的点,我也不是什么配置中心开源项目的参与者,所以写出来的仅供大家参考。有必要重复造轮子吗?当面试官问你:如果让你写一个配置中心,说说你的设...

    Java 2020年12月22日 123 0
  • Spring Boot @Condition 注解,组合条件你知道吗

    写在前面当我们构建一个 Spring 应用的时候,有时我们想在满足指定条件的时候才将某个 bean 加载到应用上下文中, 在Spring 4.0 时代,我们可以通过 @Conditional 注解来实现这类操作我们看到 @Conditional 注解接收的参数是 extends Condition 接口的泛型类,也就是说,我们要使用 @Conditional 注解,只需要实现 ...

    Java 2020年12月21日 85 0
  • 为什么选择 Netty?Netty 入门教程

    JDK 编程感受了上面的 java 中的 BIO/NIO/AIO 详解,不知道你是否觉得 jdk 直接编程非常麻烦?还有很多情况需要去考虑处理,还有性能相关的问题、稳定性问题,拓展性问题。不选择Java原生NIO编程的原因现在我们总结一下为什么不建议开发者直接使用JDK的NIO类库进行开发,具体原因如下。(1) NIO的类库和API繁杂,使用麻烦,你需要熟练掌握Selector...

    Java 2020年12月21日 103 0