![](https://img-blog.csdnimg.cn/20201014180756916.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
基础知识
文章平均质量分 81
spring_root
学海无涯
展开
-
java 8 stream流之大数据篇
如果你会任意一门语言的stream流,没道理不会大数据开发。俗话说男追女隔座山,女追男隔层纱。如果说零基础学大数据,感觉前面是一座山,那么只要你会java或者任意一门语言的stream流,那大数据就只隔了一层纱。本文以java stream流计算为例,讲解一些基础的spark操作。另一个流行的大数据框架flink同理。原创 2023-07-05 09:33:38 · 270 阅读 · 0 评论 -
SpringBoot内置工具类应有尽有,建议收藏!!
别再自己瞎写工具类了原创 2022-06-22 10:52:41 · 332 阅读 · 1 评论 -
非常实用的12条 SQL 优化方案
非常实用原创 2022-06-15 16:46:03 · 388 阅读 · 0 评论 -
Java8 Lambda 表达式中的 forEach 如何提前终止?
1原创 2022-06-14 17:27:08 · 481 阅读 · 0 评论 -
@RequestBody 接收数组、List 参数、@Deprecated 标记废弃方法
@RequestBody 接收数组、List 参数、@Deprecated 标记废弃方法原创 2022-05-31 21:04:50 · 1781 阅读 · 0 评论 -
玩转Java8 Stream,代码效率飞升
概述Stream原创 2022-05-31 20:36:26 · 311 阅读 · 0 评论 -
Java中的 BigDecimal如何使用
目录一、BigDecimal概述二、BigDecimal常用构造函数2.1、常用构造函数2.2、使用问题分析三、BigDecimal常用方法详解3.1、常用方法3.2、BigDecimal大小比较四、BigDecimal格式化五、BigDecimal常见异常5.1、除法的时候出现异常六、BigDecimal总结6.1、总结6.2、工具类推荐一、BigDecimal概述Java在java.math包中提供的API类BigDecimal,用来对超过原创 2022-04-12 14:20:29 · 763 阅读 · 0 评论 -
SpringBoot 的@Value注解
一、前言在日常开发中,经常会遇到需要在配置文件中,存储List或是Map这种类型的数据。Spring 原生是支持这种数据类型的,以配置List类型为例,对于.yml文件配置如下:test:list:-aaa-bbb-ccc对于.properties文件配置如下所示:test.list[0]=aaatest.list[1]=bbbtest.list[2]=ccc当我们想要在程序中使用时候,想当然的使用@Valu...原创 2021-07-20 17:03:54 · 282 阅读 · 0 评论 -
如何优雅处理重复请求/并发请求?
前言一些用户请求在某些情况下是可能重复发送的,如果是查询类操作并无大碍,但其中有些涉及写入操作,一旦重复了,可能会导致很严重的后果。例如交易接口如果重复请求,可能会重复下单。重复的场景有可能是: 黑客拦截了请求,重放; 前端/客户端因为某些原因请求重复发送了,或者用户在很短的时间内重复点击了; 网关重发; 本文讨论的是如何在服务端优雅地统一处理这种情况,如何禁止用户重复点击等客户端操作不在本文的讨论范畴。利用唯一请求编号去重你可能会想到,只要..原创 2021-07-19 16:21:17 · 190 阅读 · 0 评论 -
为什么不建议在 MySQL 中使用 UTF-8?
目录一、报错回顾二、MySQL中utf8的趣事1. utf8mb4 才是真正的UTF-82. utf8 的简史三、总结记得去年我在往MySQL存入emoji表情????????时,一直出错,无法导入。后来找到办法 -- 通过把 utf8 改成 utf8mb4 就可以了,并没有深究。一年后,我看到一篇文章讲到emoji文字占4个字节,通常要用utf-8去接收才行,其他编码可能会出错。我突然想到去年操作MySQL把utf8改成utf8mb4的事儿。嗯?他本身不就是utf8编码么!转载 2021-01-28 17:04:22 · 89 阅读 · 0 评论 -
@Autowire和@Resource注解使用的正确姿势,别再用错的了!!
介绍今天使用Idea写代码的时候,看到之前的项目中显示有warning的提示,去看了下,是如下代码?@AutowireprivateJdbcTemplatejdbcTemplate;提示的警告信息Field injection is not recommended Inspection info: Spring Team recommends: "Always use constructor based dependency injection in your beans. Al..原创 2021-01-25 17:40:31 · 299 阅读 · 0 评论 -
Java 反射是什么?
目录一.概念二.常用方法三.典型例题四.Method类五.数组的反射六.结束语一.概念反射就是把Java的各种成分映射成相应的Java类。Class类的构造方法是private,由JVM创建。反射是java语言的一个特性,它允程序在运行时(注意不是编译的时候)来进行自我检查并且对内部的成员进行操作。例如它允许一个java的类获取他所有的成员变量和方法并且显示出来。Java 的这一能力在实际应用中也许用得不是很多,但是在其它的程序设计语言中根本就不存在这一特性。例如,原创 2021-01-25 17:31:13 · 80 阅读 · 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 · 120 阅读 · 0 评论 -
基于 Spring + Spring MVC + Mybatis 的分布式敏捷开发系统架构
本项目不仅仅是一个开发架构,而是努力打造一套从前端模板-基础框架-分布式架构-开源项目-持续集成-自动化部署-系统监测-无缝升级的全方位J2EE企业级开发解决方案。项目介绍基于Spring+SpringMVC+Mybatis分布式敏捷开发系统架构,提供整套公共微服务服务模块:内容管理、支付中心、用户管理(包括第三方)、微信平台、存储系统、配置中心、日志分析、任务和通知等,支持服务治理、监控和追踪,努力为中小型企业打造全方位J2EE企业级开发解决方案。组织结构...原创 2020-12-10 16:57:17 · 176 阅读 · 0 评论 -
Spring Cloud 每个组件的原理详解
我们先认识一下SpringCloud的各个组件,然后知其所以然。关注微信公众号 Java后端,后台输入命令 666 下载技术手册。原理讲解前,先看一个最经典的业务场景,如开发一个电商网站,要实现支付订单的功能,流程如下:1、创建一个订单之后,如果用户立刻支付了这个订单,我们需要将订单状态更新为“已支付”2、扣减相应的商品库存3、通知仓储中心,进行发货4、给用户的这次购物增加相应的积分如上,微服务的应用场景和核心竞争力:降低耦合:每一个微服务专注于单一功能,并通过定义良好的原创 2020-12-10 16:20:16 · 475 阅读 · 0 评论 -
写了个日志切面,甩锅更方便了!
最近项目进入联调阶段,服务层的接口需要和协议层进行交互,协议层需要将入参 [json 字符串] 组装成服务层所需的 json 字符串,组装的过程中很容易出错。入参出错导致接口调试失败问题在联调中出现很多次,因此就想写一个请求日志切面把入参信息打印一下,同时协议层调用服务层接口名称对不上也出现了几次,通过请求日志切面就可以知道上层是否有没有发起调用,方便前后端甩锅还能拿出证据。写在前面本篇文章是实战性的,对于切面的原理不会讲解,只会简单介绍一下切面的知识点切面介绍面向切面编程是一种编.原创 2020-10-30 11:05:33 · 128 阅读 · 0 评论 -
SQL 语句大全
一、基础1、说明:创建数据库CREATE DATABASE database-name2、说明:删除数据库drop database dbname3、说明:备份sql server---创建 备份数据的deviceUSE masterEXEC sp_addumpdevice 'disk', 'testBack', 'c:\mssql7backup\MyNwind_1.dat'---开始 备份BACKUP DATABASE pubs TO testBack4、说明:...原创 2020-08-20 11:25:30 · 487 阅读 · 0 评论 -
5种IO模型、阻塞IO和非阻塞IO、同步IO和异步IO
本文是在《UNIX网络编程 卷1:套接字联网API》6.2节"I/O 模型 "的基础上,即UNIX/LINUX环境下的网络 IO环境下的理解,它里面给出的例子是读取(接收)网络UDP数据。下面简单写写自己对这些IO模型的理解。1、IOIO (Input/Output,输入/输出)即数据的读取(接收)或写入(发送)操作,通常用户进程中的一个完整IO分为两阶段:用户进程空间<-->内核空间、内核空间<-->设备空间(磁盘、网络等)。IO有内存IO、网络IO和磁盘IO三种,通常原创 2020-08-20 11:02:14 · 203 阅读 · 0 评论 -
Java实现文件批量导入导出实践(兼容xls,xlsx)
1、介绍java实现文件的导入导出数据库,目前在大部分系统中是比较常见的功能了,今天写个小demo来理解其原理,没接触过的同学也可以看看参考下。目前我所接触过的导入导出技术主要有POI和iReport,poi主要作为一些数据批量导入数据库,iReport做报表导出。另外还有jxl类似poi的方式,不过貌似很久没跟新了,2007之后的office好像也不支持,这里就不说了。2、POI使用...原创 2020-03-19 09:17:00 · 272 阅读 · 0 评论 -
spring boot实现动态增删启停定时任务
在spring boot项目中,可以通过@EnableScheduling注解和@Scheduled注解实现定时任务,也可以通过SchedulingConfigurer接口来实现定时任务。但是这两种方式不能动态添加、删除、启动、停止任务。要实现动态增删启停定时任务功能,比较广泛的做法是集成Quartz框架。但是本人的开发原则是:在满足项目需求的情况下,尽量少的依赖其它框架,避免项目过于臃肿和复杂。...原创 2020-03-11 20:58:17 · 760 阅读 · 0 评论 -
彻底消灭if-else,你需要这8种方案!
代码中如果 if-else 比较多,阅读起来比较困难,维护起来也比较困难,很容易出 Bug,接下来,本文将介绍优化 if-else 代码的八种方案。优化方案 1:提前 return,去除不必要的 else如果 if-else 代码块包含 return 语句,可以考虑通过提前 return,把多余 else 干掉,使代码更加优雅。优化前:if(condition...原创 2020-03-10 18:44:02 · 1128 阅读 · 1 评论 -
Spring Boot 最最最常用的注解梳理
一、注解(annotations)列表@SpringBootApplication:包含了@ComponentScan、@Configuration和@EnableAutoConfiguration注解。其中@ComponentScan让spring Boot扫描到Configuration类并把它加入到程序上下文。@Configuration等同于spring的XML配置文件;使用J...原创 2020-03-04 17:23:24 · 174 阅读 · 0 评论 -
SpringBoot缓存应用实践
缓存是最直接有效提升系统性能的手段之一。个人认为用好用对缓存是优秀程序员的必备基本素质。本文结合实际开发经验,从简单概念原理和代码入手,一步一步搭建一个简单的二级缓存系统。一、通用缓存接口1、缓存基础算法FIFO(First In First Out),先进先出,和OS里的FIFO思路相同,如果一个数据最先进入缓存中,当缓存满的时候,应当把最先进入缓存的数据给移除掉。 LFU(L...原创 2020-02-25 11:20:43 · 269 阅读 · 0 评论 -
Spring Boot RabbitMQ - 交换器
1fanout exchange发送到该交换器的所有消息,会被路由到其绑定的所有队列。不处理路由键。你只需要简单的将队列绑定到交换机上。一个发送到交换机的消息都会被转发到与该交换机绑定的所有队列上。很像子网广播,每台子网内的主机都获得了一份复制的消息。Fanout交换机转发消息是最快的。如图所示,所有发送到fanout exchange的消息都会路由到QUEUE-1和Q...原创 2020-02-25 11:15:24 · 421 阅读 · 0 评论 -
SpringBoot中异步请求和异步调用
一、SpringBoot中异步请求的使用1、异步请求与同步请求特点:可以先释放容器分配给请求的线程与相关资源,减轻系统负担,释放了容器所分配线程的请求,其响应将被延后,可以在耗时处理完成(例如长时间的运算)时再对客户端进行响应。一句话:增加了服务器对客户端请求的吞吐量(实际生产上我们用的比较少,如果并发请求量很大的情况下,我们会通过nginx把请求负载到集群服务的各个节点上...原创 2020-02-25 11:11:06 · 207 阅读 · 0 评论 -
17 个方面,综合对比 Kafka、RabbitMQ、RocketMQ、ActiveMQ
本文将从,Kafka、RabbitMQ、ZeroMQ、RocketMQ、ActiveMQ 17 个方面综合对比作为消息队列使用时的差异。一、资料文档Kafka:中。有kafka作者自己写的书,网上资料也有一些。rabbitmq:多。有一些不错的书,网上资料多。zeromq:少。没有专门写zeromq的书,网上的资料多是一些代码的实现和简单介绍。rocketmq:少。没有专门写rocketm...原创 2020-02-25 11:04:46 · 170 阅读 · 0 评论 -
Netty、Kafka中的零拷贝技术到底有多牛?
我们也经常在 Java NIO,Netty,Kafka,RocketMQ 等框架中听到零拷贝,它经常作为其提升性能的一大亮点;下面从 I/O 的几个概念开始,进而再分析零拷贝。I/O 概念缓冲区缓冲区是所有 I/O 的基础,I/O 讲的无非就是把数据移进或移出缓冲区;进程执行 I/O 操作,就是向操作系统发出请求,让它要么把缓冲区的数据排干(写),要么填充缓冲区(读)...原创 2020-02-25 10:17:31 · 958 阅读 · 0 评论 -
String.format()详细用法
String.format()字符串常规类型格式化的两种重载方式format(String format, Object… args) 新字符串使用本地语言环境,制定字符串格式和参数生成格式化的新字符串。 format(Locale locale, String format, Object… args) 使用指定的语言环境,制定字符串格式和参数生成格式化的字符串。上个栗子有用到了字符类型...原创 2020-02-24 17:23:34 · 1093 阅读 · 0 评论 -
IO 多路复用是什么意思?
假设你是一个机场的空管, 你需要管理到你机场的所有的航线, 包括进港,出港, 有些航班需要放到停机坪等待,有些航班需要去登机口接乘客。你会怎么做?最简单的做法,就是你去招一大批空管员,然后每人盯一架飞机, 从进港,接客,排位,出港,航线监控,直至交接给下一个空港,全程监控。那么问题就来了:很快你就发现空管塔里面聚集起来一大票的空管员,交通稍微繁忙一点,新的空管员就已经挤不进来了。...原创 2020-02-24 10:37:30 · 251 阅读 · 0 评论 -
@NotEmpty,@NotNull和@NotBlank的区别
@NotEmpty :不能为null,且Size>0@NotNull:不能为null,但可以为empty,没有Size的约束@NotBlank:只用于String,不能为null且trim()之后size>原创 2019-12-16 15:40:58 · 68 阅读 · 0 评论 -
Java并发探索之final探秘
众所周知,final 关键字在 java 语言中可以用来修饰类、方法和成员变量:final 关键字修饰一个类,表示这个类不能被继承;final 关键字修饰的方法不能被重写;final 关键字修饰的成员变量必须要赋初始值,而且是只能初始化一次。不过本文的重点并不在这,而是讲解 final 在并发领域中的应用,总结起来就是两个关键词:重排序和逸出。tips:Java 中有两个词叫做发布(publ...原创 2019-11-21 08:58:44 · 234 阅读 · 0 评论 -
NoSuchMethodError 的发生原因和解决办法
当应用程序试图调用类(静态或实例)的指定方法,而该类已不再具有该方法的定义时,就会抛出 java.lang.NoSuchMethodError 错误。简单地说,就是同一个 Class 有多个版本的实现,并且在运行时调用了缺少方法的那个版本。本文总结了 NoSuchMethodError 常见原因及其解决方法,如有遗漏或错误,欢迎补充指正。运行时抛出 NoSuchMethodError 的...原创 2019-11-08 09:04:25 · 1971 阅读 · 0 评论 -
if else?大神教你用策略+工厂彻底干掉了他们!
对于业务开发来说,业务逻辑的复杂是必然的,随着业务发展,需求只会越来越复杂,为了考虑到各种各样的情况,代码中不可避免的会出现很多if-else。一旦代码中if-else过多,就会大大的影响其可读性和可维护性。首先可读性,不言而喻,过多的if-else代码和嵌套,会使阅读代码的人很难理解到底是什么意思。尤其是那些没有注释的代码。其次是可维护性,因为if-else特别多,想要新加一个分...原创 2019-10-31 14:02:16 · 296 阅读 · 0 评论 -
详解TCP
TCP 三次握手和四次挥手过程对于面试是必考的一个,其中有些小细节也更受到面试官的青睐。对于这部分的掌握我将会以动画的形式呈现给每个人,这样将复杂的知识简单化,理解起来也容易了很多,尤其对于一个初学者来说。TCP 三次握手思维导图如下:TCP 是什么TCP(Transmission Control Protocol 传输控制协议)是一种面向连接的、可靠...原创 2019-10-25 10:59:34 · 2760 阅读 · 1 评论 -
SpringBoot注解梳理
一、注解(annotations)列表@SpringBootApplication:包含了@ComponentScan、@Configuration和@EnableAutoConfiguration注解。其中@ComponentScan让spring Boot扫描到Configuration类并把它加入到程序上下文。@Configuration等同于spring的XML配置文件;使用Ja...原创 2019-10-15 15:00:48 · 113 阅读 · 0 评论 -
MySql索引基础总结
索引类型分为普通索引、唯一索引、主键索引、全文索引。1.创建索引普通索引类型 详细说明基本语法 alter table 表 add index(字段)示例 ALTER TABLE money ADD INDEX(username);示例解释 为money表的username字段增加索引唯一索引类型 详细说明基本语法 alter table 表 add UNIQUE(字段)...原创 2019-08-29 15:47:27 · 106 阅读 · 0 评论 -
MySql索引深入学习
1.数据库中索引概念在关系数据库中,索引是一种单独的、物理的对数据库表中一列或多列的值进行排序的一种存储结构,它是某个表中一列或若干列值的集合和相应的指向表中物理标识这些值的数据页的逻辑指针清单。索引的作用相当于图书的目录,可以根据目录中的页码快速找到所需的内容。2.索引优点和缺点1>优点索引可以避免全表扫描,加快查询速度。多数查询可以仅扫描少量索引页及数据页,而不是遍历所有...原创 2019-08-29 15:51:32 · 225 阅读 · 0 评论 -
Java基础知识30问
1. 面向对象和面向过程的区别面向过程优点: 性能比面向对象高,因为类调用时需要实例化,开销比较大,比较消耗资源;比如单片机、嵌入式开发、Linux/Unix等一般采用面向过程开发,性能是最重要的因素。缺点: 没有面向对象易维护、易复用、易扩展面向对象优点: 易维护、易复用、易扩展,由于面向对象有封装、继承、多态性的特性,可以设计出低耦合的系统,使系统更加灵活、更加易于维护...原创 2019-08-30 17:11:26 · 103 阅读 · 0 评论 -
多线程实现的方式
实现多线程有以下方式:1. 继承Thread类,重写run()方法。然后直接new这个对象的实例,创建一个线程的实例,再调用start()方法启动线程。(其实本质上Thread是实现了Runnable接口的一个实例,Thread源文件:public class Thread implements Runnable)2.实现Runnable接口,重写run()方法。然后调用new Threa...原创 2019-08-31 15:57:47 · 491 阅读 · 0 评论 -
解决多线程安全问题的方式
用于解决多线程安全问题的方式:1. 同步代码块(隐式锁)2. 同步方法(隐式锁)3. 同步锁 Lock(jdk 1.5 后)注意:是一个显示锁,需要通过 lock() 方法上锁,必须通过 unlock() 方法进行释放锁下面举一个售票例子:1)同步代码块package com.root.thread; public class TestSync { pub...原创 2019-08-31 16:38:39 · 143 阅读 · 0 评论