冷知识
文章平均质量分 79
spring_root
学海无涯
展开
-
Java 中的 7 种重试机制
如果是基于 Spring 的项目,使用 Spring Retry 的注解方式已经可以解决大部分问题如果项目没有使用 Spring 相关框架,则适合使用 Google guava-retrying:自成体系,使用起来更加灵活强大。原创 2023-08-04 21:30:00 · 452 阅读 · 0 评论 -
Spring Data JPA 报 HOUR_OF_DAY: 0 -> 1异常的解决过程和方案
HOUR_OF_DAY: 0 -> 1 解决方案原创 2023-06-26 11:20:07 · 1359 阅读 · 0 评论 -
SpringBoot内置工具类应有尽有,建议收藏!!
别再自己瞎写工具类了原创 2022-06-22 10:52:41 · 327 阅读 · 1 评论 -
最坑的SQL错误用法,你有没有踩过?
1、LIMIT 语句2、隐式转换3、关联更新、删除4、混合排序5、EXISTS语句6、条件下推7、提前缩小范围8、中间结果集下推总结sql语句的执行顺序:FROM<left_table>ON<join_condition><join_type>JOIN<right_table>WHERE<where_condition>GROUPBY<group_by_list>..原创 2022-04-08 17:20:40 · 145 阅读 · 0 评论 -
Java属性为什么不能是is开头的boolean
通常定义Java实体类时,对于boolean属性,阿里规约中明确要求不能使用is开头。至于为什么,我们稍后再讲。这里先讲一下前几天在工作中,项目遇到的一个问题。库表中某个字段存入了一个实体类的json字符串,在查询库表后,需要将json字符串转为实体类对象进行更改后再转为json字符串后返回给前端。在这当中就出现了一个问题,库表中存入的数据明明是isUpdate的字段,可是在返回到前端后的代码就是update。这个问题,起初并没有想到是字段定义的问题,通过一步一步的debug,最后才发现是原创 2021-12-01 11:24:43 · 6486 阅读 · 0 评论 -
原来 Lamda 表达式是这样写的
Lamda 表达式非常方便,在项目中一般在 stream 编程中用的比较多。List<Student>studentList=gen();Map<String,Student>map=studentList.stream().collect(Collectors.toMap(Student::getId,a->a,(a,b)->a));理解一个 Lamda 表达式就三步:1. 确认 Lamda 表达式的类型...原创 2021-11-10 10:24:02 · 258 阅读 · 0 评论 -
看起来满是bug的程序,居然是对的
程序bug也能负负得正吗?还真可以。比如程序员们再熟悉不过的排序算法,通过两个“bug”居然能歪打正着,实在令人匪夷所思。请看这位程序员写的数组升序排序代码:for i = 1 to n dofor j = 1 to n doif A[i] < A[j] thenswap A[i] and A[j]今天这串代码在Hacker News论坛上突然火了起来,引来大批程序员围观。乍一看这段代码,你的反应会是什么?会不会觉得这个程序员水平太差了,连基本的冒泡算法都写不好:原创 2021-11-03 09:55:10 · 487 阅读 · 0 评论 -
零前端代码,几行 Java 注解,快速搭建后台管理系统!
Erupt Framework是一个通用后台管理框架。Erupt 可快速的构建管理页面,零前端代码、零CURD、自动建表,仅需单个类文件 + 简洁的注解配置,即可快速开发企业级Admin管理后台!后台管理系统非常重要,但开发存在一定的痛点,如:开发效率低、界面不美观、交互不理想、工作量重复、存在安全漏洞、后端研发被迫写前端代码等。Erupt提供企业级中后台管理系统的全栈解决方案,提供超多业务组件,简洁美观的后台页面,支持23类数据组件,多种数据源支持,严密的安全策略,压缩研发周期,降低研发成本。.原创 2021-04-12 13:30:55 · 690 阅读 · 0 评论 -
Java中的 Switch 是如何支持 String 的?为什么不支持 long?
我们知道 Java Switch 支持byte、short、int 类型,在 JDK 1.5 时,支持了枚举类型,在 JDK 1.7 时,又支持了 String类型。那么它为什么就不能支持 long 类型呢,明明它跟 byte、short、int 一样都是数值型,它又是咋支持 String 类型的呢?一、结论switch 底层是使用 int 型 来进行判断的,即使是枚举、String类型,最终也是转变成 int 型。由于 long 型表示范围大于 int 型,因此不支持 long 类型。下面原创 2021-01-25 17:19:07 · 117 阅读 · 0 评论 -
写了个日志切面,甩锅更方便了!
最近项目进入联调阶段,服务层的接口需要和协议层进行交互,协议层需要将入参 [json 字符串] 组装成服务层所需的 json 字符串,组装的过程中很容易出错。入参出错导致接口调试失败问题在联调中出现很多次,因此就想写一个请求日志切面把入参信息打印一下,同时协议层调用服务层接口名称对不上也出现了几次,通过请求日志切面就可以知道上层是否有没有发起调用,方便前后端甩锅还能拿出证据。写在前面本篇文章是实战性的,对于切面的原理不会讲解,只会简单介绍一下切面的知识点切面介绍面向切面编程是一种编.原创 2020-10-30 11:05:33 · 127 阅读 · 0 评论 -
SQL之T-SQL
1、变量要动态的写sql语句,就不能没有变量。声明变量并赋值: declare @i as int;--定义一个 int 类型的 变量 (as可以省略) print @i;--这注意:没有赋值之前,程序不会报错,而且输出一个 空 set @i=3; print @i;在sql server 2008之后就可以对变量 在声明的同时进行赋值declare @a int=3; print @a;在变量的使用过程中,一定要注意nvarcahr 和nch...原创 2020-10-30 08:43:28 · 266 阅读 · 0 评论 -
Spring Boot 实现定时任务的动态增删启停!
添加执行定时任务的线程池配置类 添加定时任务示例类 定时任务数据库表设计 添加定时任务实体类 新增定时任务 在spring boot项目中,可以通过@EnableScheduling注解和@Scheduled注解实现定时任务,也可以通过SchedulingConfigurer接口来实现定时任务。但是这两种方式不能动态添加、删除、启动、停止任务。要实现动态增删启停定时任务功能,比较广泛的做法是集成Quartz框架。但是本人的开发原则是:在满足项目需求的情况下..原创 2020-08-26 11:03:46 · 137 阅读 · 1 评论 -
还在用AOP做操作日志吗?!
前言用户在操作我们系统的过程中,针对一些重要的业务数据进行增删改查的时候,我们希望记录一下用户的操作行为,以便发生问题时能及时的找到依据,这种日志就是业务系统的操作日志。本篇我们来探讨下常见操作日志的实现方案和可行性常见的操作日志类型用户登录日志 重要数据查询日志 (但电商可能不重要的数据也做埋点,比如在淘宝上你搜索什么商品,即使不买,一段时间内首页也会给你推荐类似的东西) 重要数据变更日志 (如密码变更,权限变更,数据修改等) 数据删除日志 ......总结来说,就是重要的增删改原创 2020-05-12 16:48:22 · 635 阅读 · 0 评论 -
spring boot实现动态增删启停定时任务
在spring boot项目中,可以通过@EnableScheduling注解和@Scheduled注解实现定时任务,也可以通过SchedulingConfigurer接口来实现定时任务。但是这两种方式不能动态添加、删除、启动、停止任务。要实现动态增删启停定时任务功能,比较广泛的做法是集成Quartz框架。但是本人的开发原则是:在满足项目需求的情况下,尽量少的依赖其它框架,避免项目过于臃肿和复杂。...原创 2020-03-11 20:58:17 · 756 阅读 · 0 评论 -
终于放弃了单调的swagger-ui了,选择了这款神器—knife4j
一、介绍knife4j是为Java MVC框架集成Swagger生成Api文档的增强解决方案(在非Java项目中也提供了前端UI的增强解决方案),前身是swagger-bootstrap-ui,取名knife4j是希望她能像一把匕首一样小巧,轻量,并且功能强悍!二、功能特性简洁基于左右菜单式的布局方式,是更符合国人的操作习惯吧.文档更清晰...个性化配置个性化配...原创 2020-03-02 19:09:22 · 1653 阅读 · 0 评论 -
面试题:如何理解 Linux 的零拷贝技术?
本文讲解 Linux 的零拷贝技术,云计算是一门很庞大的技术学科,融合了很多技术,Linux 算是比较基础的技术,所以,学好 Linux 对于云计算的学习会有比较大的帮助。本文借鉴并总结了几种比较常见的 Linux 下的零拷贝技术。为什么需要零拷贝传统的 Linux 系统的标准 I/O 接口(read、write)是基于数据拷贝的,也就是数据都是 copy_to_user 或者 copy_...原创 2020-02-25 10:28:21 · 112 阅读 · 0 评论 -
IO 多路复用是什么意思?
假设你是一个机场的空管, 你需要管理到你机场的所有的航线, 包括进港,出港, 有些航班需要放到停机坪等待,有些航班需要去登机口接乘客。你会怎么做?最简单的做法,就是你去招一大批空管员,然后每人盯一架飞机, 从进港,接客,排位,出港,航线监控,直至交接给下一个空港,全程监控。那么问题就来了:很快你就发现空管塔里面聚集起来一大票的空管员,交通稍微繁忙一点,新的空管员就已经挤不进来了。...原创 2020-02-24 10:37:30 · 250 阅读 · 0 评论 -
Jdk14 都要出了,Jdk9 的新特性还不了解一下?
Java 新特性系列已经从 Java 7 开始补充到 Java 9 了,每一篇的反馈都还不错。这个系列会持续更新到 Java 13 版本,然后在每个 Java 新版本发布时同步更新这个系列。你可以在文末找到这个系列的其他文章。Java 9中最大的亮点是Java 平台模块化的引入,以及模块化 JDK。但是Java 9还有很多其他新功能,这篇文字会将重点介绍开发人员特别感兴趣的几种功能。...转载 2020-02-19 12:09:26 · 146 阅读 · 0 评论 -
深度介绍分布式系统原理,一文入魂
1 概念1.1 模型节点在具体的工程项目中,一个节点往往是一个操作系统上的进程。在本文的模型中,认为节点是一个完整的、不可分的整体,如果某个程序进程实际上由若干相对独立部分构成,则在模型中可以将一个进程划分为多个节点。异常机器宕机:机器宕机是最常见的异常之一。在大型集群中每日宕机发生的概率为千分之一左右,在实践中,一台宕机的机器恢复的时间通常认为是24 小时,一般需要人工介入重...转载 2020-02-17 13:55:01 · 261 阅读 · 0 评论 -
Arthas - Java 线上问题定位处理的终极利器
前言在使用Arthas之前,当遇到 Java 线上问题时,如 CPU 飙升、负载突高、内存溢出等问题,你需要查命令,查网络,然后 jps、jstack、jmap、jhat、jstat、hprof 等一通操作。最终焦头烂额,还不一定能查出问题所在。而现在,大多数的常见问题你都可以使用Arthas轻松定位,迅速解决,及时止损,准时下班。1、Arthas 介绍Arthas是A...转载 2020-02-17 12:52:43 · 658 阅读 · 0 评论 -
超好用的自带火焰图的 Java 性能分析工具 Async-profiler 了解一下
如果你经常遇到 Java 线上性能问题束手无策,看着线上服务 CPU 飙升一筹莫展,发现内存不断泄露满脸茫然。别慌,这里有一款低开销、自带火焰图、让你大呼好用的 Java 性能分析工具 -async-profiler。最近 Arthas 性能分析工具上线了火焰图分析功能,Arthas 使用async-profiler生成 CPU/内存火焰图进行性能分析,弥补了之前内存分析的不足。在 ...转载 2020-02-17 12:48:18 · 774 阅读 · 0 评论 -
Java并发探索之final探秘
众所周知,final 关键字在 java 语言中可以用来修饰类、方法和成员变量:final 关键字修饰一个类,表示这个类不能被继承;final 关键字修饰的方法不能被重写;final 关键字修饰的成员变量必须要赋初始值,而且是只能初始化一次。不过本文的重点并不在这,而是讲解 final 在并发领域中的应用,总结起来就是两个关键词:重排序和逸出。tips:Java 中有两个词叫做发布(publ...原创 2019-11-21 08:58:44 · 233 阅读 · 0 评论 -
还看不懂同事的代码?超强的 Stream 流操作姿势还不学习一下
Java 8 新特性系列文章索引。Jdk14都要出了,还不会使用 Optional优雅的处理空指针? Jdk14 都要出了,Jdk8 的时间处理姿势还不了解一下? 还看不懂同事的代码?Lambda 表达式、函数接口了解一下前言我们都知道Lambda和 Stream 是 Java 8 的两大亮点功能,在前面的文章里已经介绍过Lambda相关知识,这次介绍下 Java 8 的...转载 2020-01-22 14:29:14 · 83 阅读 · 0 评论 -
Jdk14都要出了,还不能使用 Optional优雅的处理空指针?
1. 前言如果你没有处理过空指针,那么你不是一位真正的 Java 程序员。空指针确实会产生很多问题,我们经常遇到空的引用,然后又想从这个空的引用上去获取其他的值,接着理所当然的碰到了NullPointException。这是你可能会想,这报错很好处理,然后你看了眼报错行数,对比了下代码。脑海里瞬间闪过 ”对对对,这里有可能为空“,然后加上null check轻松处理。然而你不知道这...转载 2020-01-22 14:28:34 · 142 阅读 · 0 评论 -
还看不懂同事的代码?Lambda 表达式、函数接口了解一下
当前时间:2019年 11月 14日,距离 JDK 14 发布时间(2020年3月17日)还有多少天?//距离JDK 14 发布还有多少天?LocalDatejdk14=LocalDate.of(2020,3,17);LocalDatenowDate=LocalDate.now();System.out.println("距离JDK 14 发布还有:"+nowDate...转载 2020-01-22 14:29:01 · 168 阅读 · 1 评论 -
Jdk14 都要出了,Jdk8 的时间处理姿势还不了解一下?
当前时间:2019年10月24日。距离 JDK 14 发布时间(2020年3月17日)还有多少天?//距离JDK 14 发布还有多少天?LocalDatejdk14=LocalDate.of(2020,3,17);LocalDatenowDate=LocalDate.now();System.out.println("距离JDK 14 发布还有:"+nowDate.u...转载 2020-01-22 14:27:51 · 257 阅读 · 0 评论 -
Tomcat 的单机多实例配置
多实例有时候需要在一个服务器上部署多个Tomcat,通过不同的端口进行区分,比如,反向代理。但是不想简单的通过复制Tomcat来实现,这样既不方便以后的升级也不方便管理,那么这时候就需要配置Tomcat的单机多实例了。Tomcat 下载Tomcat 的下载可以直接到Tomcat官方网站下载自己需要的版本,我这里下载的Tomcat8.5.32。//解压tar-zxvfa...转载 2020-01-22 14:27:11 · 132 阅读 · 0 评论 -
网络协议之HTTP
HTTP的简介超文本传输协议(HTTP,HyperText Transfer Protocol)是互联网上应用最为广泛的一种网络协议。所有的WWW文件都必须遵守这个标准。HTTP是一个基于TCP/IP通信协议来传递数据(HTML 文件, 图片文件, 查询结果等)。HTTP是一个属于应用层的面向对象的协议,由于其简捷、快速的方式,适用于分布式超媒体信息系统。它于1990年提出,经过几...转载 2020-01-22 14:26:49 · 326 阅读 · 0 评论 -
原来热加载如此简单,手动写一个 Java 热加载吧
1. 什么是热加载热加载是指可以在不重启服务的情况下让更改的代码生效,热加载可以显著的提升开发以及调试的效率,它是基于 Java 的类加载器实现的,但是由于热加载的不安全性,一般不会用于正式的生产环境。2. 热加载与热部署的区别首先,不管是热加载还是热部署,都可以在不重启服务的情况下编译/部署项目,都是基于 Java 的类加载器实现的。那么两者到底有什么区别呢?在部署方式上...转载 2020-01-22 14:26:19 · 131 阅读 · 0 评论 -
Arthas - Java 线上问题定位处理的终极利器
前言在使用Arthas之前,当遇到 Java 线上问题时,如 CPU 飙升、负载突高、内存溢出等问题,你需要查命令,查网络,然后 jps、jstack、jmap、jhat、jstat、hprof 等一通操作。最终焦头烂额,还不一定能查出问题所在。而现在,大多数的常见问题你都可以使用Arthas轻松定位,迅速解决,及时止损,准时下班。1、Arthas 介绍Arthas是A...转载 2020-01-22 14:25:31 · 195 阅读 · 0 评论