随笔分类 - 04-Java技术提升
摘要:MyBatis-Plus 实现按字段求和查询的通用方案 在使用 MyBatis-Plus 进行开发时,经常会遇到需要对查询数据按某个字段求和的需求,而 MyBatis-Plus 本身并不直接支持 SUM 函数。通常,开发者可能会选择在 XML 文件中编写 SQL 来解决这个问题,但本文将提供一种更便
阅读全文
摘要:在现实开发中,肯定会遇到这样一种情况,有几个业务场景,里面的大部分业务逻辑都一样,只有某些逻辑不同,而这些不同的逻辑又依赖于前面的逻辑,你会选择写重复代码去实现还是选择抽取公共方法,对那些不同的逻辑做单独处理?是不是理解起来比较抽象,简单就一句话,怎么把方法作为参数调用另一个方法,那就需要使用函数式
阅读全文
摘要:1.lambda方式查询 在使用Mybatis-plus进行查询时,我们正常的操作是创建一个QueryWrapper,然后根据字段去做查询操作(如下图) 那么就有一个问题,每个数据库的字段都需要写出来,遇到驼峰字段还需要转换为下划线形式,非常影响开发效率。而官方也考虑到这个问题,后续的版本已经提供了
阅读全文
摘要:1.前言 SOFABoot是蚂蚁金服开源的基于 Spring Boot 的研发框架,它在 Spring Boot 的基础上,提供了诸如 Readiness Check,类隔离,日志空间隔离等能力。在增强了 Spring Boot 的同时,SOFABoot 提供了让用户可以在 Spring Boot
阅读全文
摘要:我们都知道 @Async 是一个异步注解,用于在线程池异步执行任务,但是你真的了解其原理吗? 先来一个demo: 1)controller package com.zxh.controller; import com.zxh.service.TestService; import org.sprin
阅读全文
摘要:1.概述 1.1定义 MyCAT 是目前最流行的分布式数据库中间件之一,是一个开源的分布式数据库系统,是一个实现了 MySQL 协议的服务器。可把它看作一个数据库代理,可以使用 MySQL客户端访问,后端可以用 MySQL 原生协议与多个 MySQL 服务器通信,也可以用JDBC协议与大多数主流数据
阅读全文
摘要:1.前言 在项目上线之前一般都会进行安全审查及漏洞扫描,而Sonar qube就是一款市面上使用较为广泛的代码审查工具,经过Sonar scanner代码审查后把出现在代码里的问题都暴露出来并进行分类,开发人员根据严重程度解决排期,将问题数量降低,这样就可以创建并维护一个干净的代码基础,从而减少项目
阅读全文
摘要:很多业务数据在展示上需要进行脱敏处理,保护重要的敏感信息。如电话号码脱敏,期望展示的数据格式是156****7837;如身份证号码脱敏,期望展示的数据格式是420***********113X。 当然在记录操作日志时对密码等信息进行过滤,保证其安全。那么可以采用Fastjson进行配置(本文所用的是
阅读全文
摘要:对于HTTP客户端,其实有很多种,而SpringBoot也提供了一种方式叫Spring WebClient。它是在Spring 5中引入的异步、反应式HTTP客户端,用于取代较旧的RestTemplate,以便在使用Spring Boot框架构建的应用程序中进行REST API调用,它支持同步、异步
阅读全文
摘要:1.概述 在日常的开发过程中,日志也非常的重要。而当生产环境出现问题时,排查日志是一种非常有效的方式,那么如何快速精准的分析日志就显得尤为重要。 TLog是一款简单、易用、几乎零侵入、适合中小型公司使用的日志追踪框架,它提供了一种最简单的方式来解决日志追踪问题,会自动对日志进行打标签,自动生成tra
阅读全文
摘要:1.前言 Mybatis有四大核心对象,分别是Executor,StatementHandler,ParamterHandler,ResultSetHandler。 在很多时候,对表中的数据都需要记录插入时间,修改时间,插入人和修改人,若每次都在插入或修改代码中去设置这些信息,就显得有些冗余。那么此
阅读全文
摘要:1.跨站点请求伪造 在项目进行安全测试时,通过AppScan进行漏洞扫描,出现一下问题: 也就是说请求头中缺失"Referer"或未验证Referer的值。由于是前后端分离的项目,前端使用nginx代理,后端部署在tomcat上。因此在后端需要验证Referer的值,添加如下的过滤器: packag
阅读全文
摘要:在使用nginx进行反向代理时,有时需要使用别名,或者说需要进行路径的替换。听不懂?那直接看下面的需求: 1.代理静态资源 在目录"E:\test\data\upload\20221104"下有一张图片1.jpg,在目录"E:\test\data\temp\20221022"也下有一张图片2.jpg
阅读全文
摘要:当在使用mybatis进行查询时,会打印日志,但其参数和sql语句是分开的,如下图所示: 需要拿sql去执行时,必须手动把参数补进去,有一个插件,可以解决这个问题。 1)下载插件mybatis log free 2)从菜单栏打开Tools,再选择Mybatis log Plugin,就会在控制台位置
阅读全文
摘要:问题场景 需求如下:需要根据传入的单个字符串进行判断 select * <if test="type == '1'"> from user a </if> <if test="type == '2'"> from app-user a </if> 在此时物料type传递"1"还是"2",这个<if>
阅读全文
摘要:日志数据往往都非常的大,查询起来非常的慢,可进行分表。一种方式是在记录日志时进行按月分表,另一种是使用定时任务把前面的数据按月分表。本文介绍第二种方式(只展示关键代码): public void backupSystemLog() { log.info("开始进行日志备份..."); long st
阅读全文
摘要:它提供了多种访问远程http服务的方法,是一种简单便捷的访问restful服务模板类,是spring提供的用于访问Rest服务的客户端模板工具集。 1.搭建父模块 1)创建一个maven工程名为rest-template-demo,删除src目录 2)在pom中导入依赖 <properties> <
阅读全文
摘要:1.定义 1.1概述 XSS攻击通常指的是通过利用网页开发时留下的漏洞,通过巧妙的方法注入恶意指令代码到网页,使用户加载并执行攻击者恶意制造的网页程序。 这些恶意网页程序通常是JavaScript,但实际上也可以包括Java、 VBScript、ActiveX、 Flash 或者甚至是普通的HTML
阅读全文
摘要:1.概述 magic-api是一个基于Java的接口快速开发框架,编写接口将通过magic-api提供的UI界面完成,自动映射为HTTP接口,无需定义Controller、Service、Dao、Mapper、XML、VO等Java对象。 只不过这种方式虽然简单,但无法处理复制的业务逻辑。对于复杂的
阅读全文
摘要:1.概述 1.1定义 Apollo,称阿波罗,是携程研发的开源配置管理中心,能够集中化管理应用不同环境、不同集群的配置,配置修改后能够实时推送到应用端,并且具备规范的权限、流程治理等特性。它支持4个维度管理Key-Value格式的配置。 1.2特性 1)统一管理不同环境、不同集群的配置 Apollo
阅读全文