
java
文章平均质量分 83
java相关知识
懵懵懂懂搬运工
这个作者很懒,什么都没留下…
展开
-
maven实战总结
Maven 与构建什么是 Maven翻译:知识的积累、专家、内行。跨平台的项目管理工具。Apache 组织的开源项目。主要服务于基于 Java 平台的项目构建、依赖管理和项目信息管理。类似于 linux 平台的 yum、apt,前端领域的 npm。Maven 前身为 Ant 目前 tomcat 的源码就是用 Ant 来构建和管理,更先进的工具有 Gradle, Spring 工程在用。什么是构建何为构建:编译、运行单元测试、生成文档、打包、部署的过程,这就是构建。构建的步骤:转载 2021-11-10 09:28:47 · 139 阅读 · 0 评论 -
linux 安装 maven
Linux安装maven(详细教程) - 付宗乐 - 博客园转载 2021-12-19 14:29:57 · 89 阅读 · 0 评论 -
几种技巧,帮你提升接口查询速度
来源:llc687.top/post/如何完成一次快速的查询哪个男孩不想完成一次快速的查询?1. MySQL查询慢是什么体验?谢邀,利益相关。大多数互联网应用场景都是读多写少,业务逻辑更多分布在写上。对读的要求大概就是要快。那么都有什么原因会导致我们完成一次出色的慢查询呢?1.1 索引在数据量不是很大时,大多慢查询可以用索引解决,大多慢查询也因为索引不合理而产生。MySQL 索引基于 B+ 树,这句话相信面试都背烂了,接着就可以问最左前缀索引、 B+ 树和各种树了。说到最左前转载 2022-01-12 14:40:02 · 320 阅读 · 0 评论 -
异步编程的几种方式
来源:http://ericfu.me/several-ways-to-aync近期尝试在搬砖专用语言 Java 上实现异步,起因和过程就不再详述了,总而言之,心中一万头草泥马奔过。但这个过程也没有白白浪费,趁机回顾了一下各种异步编程的实现。这篇文章会涉及到回调、Promise、反应式、async/await、用户态线程等异步编程的实现方案。如果你熟悉它们中的一两种,那应该也能很快理解其他几个。为什么需要异步?操作系统可以看作是个虚拟机(VM),进程生活在操作系统创造的虚拟世界里。进程不用知转载 2022-01-12 13:57:56 · 511 阅读 · 0 评论 -
四张图,读懂 BIO、NIO、AIO、多路复用 IO 的区别
作者:扛麻袋的少年blog.youkuaiyun.com/lzb348110175/article/details/98941378学习之前,我们先来了解一下IO模型:①同步阻塞IO(Blocking IO):即传统的IO模型。②同步非阻塞IO(Non-blocking IO):默认创建的socket都是阻塞的,非阻塞IO要求socket被设置为NONBLOCK。注意这里所说的NIO并非Java的NIO(New IO)库。③多路复用IO(IO Multiplexing):即经典的Reactor设计模转载 2022-01-12 13:32:14 · 205 阅读 · 1 评论 -
几种技巧,帮你提升接口查询速度
来源:llc687.top/post/如何完成一次快速的查询哪个男孩不想完成一次快速的查询?1. MySQL查询慢是什么体验?谢邀,利益相关。大多数互联网应用场景都是读多写少,业务逻辑更多分布在写上。对读的要求大概就是要快。那么都有什么原因会导致我们完成一次出色的慢查询呢?1.1 索引在数据量不是很大时,大多慢查询可以用索引解决,大多慢查询也因为索引不合理而产生。MySQL 索引基于 B+ 树,这句话相信面试都背烂了,接着就可以问最左前缀索引、 B+ 树和各种树了。说到最左前转载 2021-12-24 14:34:18 · 674 阅读 · 0 评论 -
异步编程的几种方式
来源:http://ericfu.me/several-ways-to-aync近期尝试在搬砖专用语言 Java 上实现异步,起因和过程就不再详述了,总而言之,心中一万头草泥马奔过。但这个过程也没有白白浪费,趁机回顾了一下各种异步编程的实现。这篇文章会涉及到回调、Promise、反应式、async/await、用户态线程等异步编程的实现方案。如果你熟悉它们中的一两种,那应该也能很快理解其他几个。为什么需要异步?操作系统可以看作是个虚拟机(VM),进程生活在操作系统创造的虚拟世界里。进程不用知转载 2021-12-24 14:32:35 · 184 阅读 · 0 评论 -
BIO、NIO、AIO、多路复用 IO 的区别
作者:扛麻袋的少年blog.youkuaiyun.com/lzb348110175/article/details/98941378学习之前,我们先来了解一下IO模型:①同步阻塞IO(Blocking IO):即传统的IO模型。②同步非阻塞IO(Non-blocking IO):默认创建的socket都是阻塞的,非阻塞IO要求socket被设置为NONBLOCK。注意这里所说的NIO并非Java的NIO(New IO)库。③多路复用IO(IO Multiplexing):即经典的Reactor设计模转载 2021-12-24 13:15:39 · 103 阅读 · 0 评论 -
了解这些坑
前言在高并发的情况下,你的程序是不是经常出现一些诡异的BUG,每次都是花费大量时间排查,但是你有没有思考过这一切罪恶的源头是什么呢?幕后那些事CPU、内存、I/O设备的速度差异越来越大,这也是程序性能的瓶颈,根据木桶理论,最终决定程序的整体性能取决于最慢的操作-读写I/O设备,单方面的提高CPU的性能是无用的。为了平衡三者的差距,大牛前辈们不断努力,最终做出了卓越的贡献: CPU增加了缓存,平衡与内存之间的速度差异 操作系统增加了进程、线程,以分时复用CPU,进而均衡CP..转载 2021-12-24 13:13:59 · 137 阅读 · 0 评论 -
数据校验工具
目录 前言 什么是 JSR-303? 添加依赖 内嵌的注解有哪些? 如何使用? 简单校验 分组校验 嵌套校验 如何接收校验结果? BindingResult 接收 全局异常捕捉 spring-boot-starter-validation做了什么? 如何自定义校验? 自定义校验注解 自定义校验器 演示转载 2021-11-09 09:39:26 · 567 阅读 · 0 评论 -
六种方式,教你在SpringBoot初始化时做其他事
前言在实际工作中总是需要在项目启动时做一些初始化的操作,比如初始化线程池、提前加载好加密证书.......那么经典问题来了,这也是面试官经常会问到的一个问题:有哪些手段在Spring Boot 项目启动的时候做一些事情?方法有很多种,下面介绍几种常见的方法。1、监听容器刷新完成扩展点ApplicationListener<ContextRefreshedEvent>ApplicationContext事件机制是观察者设计模式实现的,通过ApplicationEvent和App转载 2021-11-09 09:13:45 · 482 阅读 · 0 评论 -
Zipkin+Sleuth 链路追踪
本篇主要内容这篇主要是理论 + 实践相结合。实践部分涉及到如何把链路追踪组件Sleuth+Zipkin加到我的 Spring Cloud 《佳必过》开源项目上。本篇知识点: 链路追踪基本原理 如何在项目中轻松加入链路追踪中间件 如何使用链路追踪排查问题 一、为什么要用链路追踪?1.1 因:拆分服务单元微服务架构其实是一个分布式的架构,按照业务划分成了多个服务单元。由于服务单元的数量是很多的,有可能几千个,而且业务也会更复杂,如果出现了错误和异常,...转载 2021-11-08 09:23:27 · 777 阅读 · 0 评论 -
聊聊spring事务失效的12种场景
前言对于从事java开发工作的同学来说,spring的事务肯定再熟悉不过了。在某些业务场景下,如果一个请求中,需要同时写入多张表的数据。为了保证操作的原子性(要么同时成功,要么同时失败),避免数据不一致的情况,我们一般都会用到spring事务。确实,spring事务用起来贼爽,就用一个简单的注解:@Transactional,就能轻松搞定事务。我猜大部分小伙伴也是这样用的,而且一直用一直爽。但如果你使用不当,它也会坑你于无形。今天我们就一起聊聊,事务失效的一些场景,说不定你已经中招了。不转载 2021-11-04 09:24:49 · 256 阅读 · 0 评论 -
Nacos
前言Nacos是阿里巴巴开源的服务注册中心以及配置中心,致力于给开发者提供一款便捷、简单上手的开源框架。Nacos究竟有什么惊人的地方呢?看下图:从上图不难看出阿里巴巴的野心,一个Nacos干掉了Spring Cloud的三大组件,分别是注册中心Eureka、服务配置Config,服务总线Bus。本文目录结构如下图:为什么Nacos这么受欢迎?Nacos官方文档的介绍中有这么一句话,如下:Nacos 帮助您更敏捷和容易地构建、交付和管理微服务平台。Nacos 是构建以“转载 2021-11-04 09:21:28 · 333 阅读 · 0 评论 -
分布式ID(唯一性)的生成方法汇总
在软件研发工程中,经常会遇到系统主键的唯一性问题,尤其是在现如今比较火热的微服务架构中。分布式ID 具备唯一性、高可用性、有序增长等特性,其生成策略也较为复杂。目前生成ID的方法多种多样,所适用的需求、场景及其性能也不尽相同。选择一种适合自己需求的解决方案是十分重要的。下面我们将对分布式系统下主键的生成策略总结一下,列举出其适用场景、优缺点等,为后续学习、工作提供参考。1. JDK自带的UUID程序设计语言开发工具包中都有生成主键的策略,以java语言的UUID为例(图1),它有着全球唯一的特性转载 2021-11-03 09:25:32 · 343 阅读 · 0 评论 -
日志打印的15个建议
前言日志是快速定位问题的好帮手,是撕逼和甩锅的利器!打印好日志非常重要。今天我们来聊聊日志打印的15个好建议~推荐下自己做的 Spring Boot 的实战项目:https://github.com/YunaiV/ruoyi-vue-pro1. 选择恰当的日志级别常见的日志级别有5种,分别是error、warn、info、debug、trace。日常开发中,我们需要选择恰当的日志级别,不要反手就是打印info哈~ error:错误日志,指比较严重的错误,对正常业务有影响..转载 2021-11-03 09:22:14 · 190 阅读 · 0 评论 -
分布式系统互斥性与幂等性问题的分析与解决
随着互联网信息技术的飞速发展,数据量不断增大,业务逻辑也日趋复杂,对系统的高并发访问、海量数据处理的场景也越来越多。如何用较低成本实现系统的高可用、易伸缩、可扩展等目标就显得越发重要。为了解决这一系列问题,系统架构也在不断演进。传统的集中式系统已经逐渐无法满足要求,分布式系统被使用在更多的场景中。分布式系统由独立的服务器通过网络松散耦合组成。在这个系统中每个服务器都是一台独立的主机,服务器之间通过内部网络连接。分布式系统有以下几个特点: 可扩展性:可通过横向水平扩展提高系统的性能和吞吐量。转载 2021-11-02 14:04:19 · 125 阅读 · 0 评论 -
分布式事务方案
前言这篇文章主要介绍一些目前主流的几种分布式解决方案以及阿里开源的一站式分布式解决方案Seata。文章有点长,耐心看完,看完你还不懂分布式事务,欢迎来捶我......文章目录如下:什么是分布式事务?分布式对应的是单体架构,互联网早起单体架构是非常流行的,好像是一个家族企业,大家在一个家里劳作,单体架构如下图:但是随着业务的复杂度提高,大家族人手不够,此时不得不招人,这样逐渐演变出了分布式服务,互相协作,每个服务负责不同的业务,架构如下图:分布式架构因此需要服务与服转载 2021-11-02 09:20:39 · 241 阅读 · 0 评论 -
巧用 Stream 来优化代码
Java8的新特性主要是Lambda表达式和流,当流和Lambda表达式结合起来一起使用时,因为流申明式处理数据集合的特点,可以让代码变得简洁易读放大招,流如何简化代码如果有一个需求,需要对数据库查询到的菜肴进行一个处理: 筛选出卡路里小于400的菜肴 对筛选出的菜肴进行一个排序 获取排序后菜肴的名字 菜肴:Dish.javapublicclassDish{privateStringname;privatebooleanv...转载 2021-11-01 09:26:41 · 166 阅读 · 0 评论 -
聊一聊Java 泛型通配符 T,E,K,V,?
前言Java 泛型(generics)是 JDK 5 中引入的一个新特性, 泛型提供了编译时类型安全检测机制,该机制允许开发者在编译时检测到非法的类型。泛型的本质是参数化类型,也就是说所操作的数据类型被指定为一个参数。| 泛型带来的好处在没有泛型的情况的下,通过对类型 Object 的引用来实现参数的“任意化”,“任意化”带来的缺点是要做显式的强制类型转换,而这种转换是要求开发者对实际参数类型可以预知的情况下进行的。对于强制类型转换错误的情况,编译器可能不提示错误,在运行的时候才出现异常,这转载 2021-10-27 13:46:26 · 117 阅读 · 0 评论 -
Excel导入导出(easyexcel版)
环境搭建 读取excel文件 默认读取 指定读取 默认读取 指定读取 小于1000行数据 大于1000行数据 导出excle 无模型映射导出 模型映射导出 单个Sheet导出 多个Sheet导出 工具类 测试类 环境搭建 easyexcel 依赖(必须) springboot (不是必须..转载 2021-10-27 13:40:23 · 490 阅读 · 0 评论 -
Java必学的工具库,让你的代码量减少90%
工作很多年后,才发现有很多工具类库,可以大大简化代码量,提升开发效率,初级开发者却不知道。而这些类库早就成为了业界标准类库,大公司的内部也都在使用,如果刚工作的时候就有人告诉我使用这些工具类库,该多好!一块看一下有哪些工具类库你也用过。1. Java自带工具方法1.1 List集合拼接成以逗号分隔的字符串//如何把list集合拼接成以逗号分隔的字符串a,b,cList<String>list=Arrays.asList("a","b","c");//第一种方...转载 2021-10-27 09:40:29 · 221 阅读 · 0 评论 -
Java 性能优化的 55 个细节
一、优化条目 1. 尽量在合适的场合使用单例 2. 尽量避免随意使用静态变量 3. 尽量避免过多过常的创建Java对象 4. 尽量使用final修饰符 5. 尽量使用局部变量 6. 尽量处理好包装类型和基本类型两者的使用场所 7. 慎用synchronized,尽量减小synchronize的方法 9. 尽量不要使用finalize方法 10. 尽量使用基本数据类型代替对象 11. 多线程在未发生线程安全前提下应转载 2021-10-27 09:38:33 · 138 阅读 · 0 评论 -
JVM垃圾回收算法
jvm的垃圾回收算法有以下几种:标记-清除算法 复制算法 标记整理算法 分代收集算法一、标记-清除算法标记-清除(Mark-Sweep)算法可以分为两个阶段:标记阶段:标记出所有可以回收的对象 清除阶段:回收所有已被标记的对象,释放这部分空间。该算法存在如下不足:内存碎片。由于Java虚拟机的堆中对象必须是连续分布的,因此可能出现总空闲内存足够,但是无法分配的极端情况。无法找到足够的连续内存,而不得不提前触发一次垃圾收集动作。 分配效率较低。如果是一块连续的内存空间,那么...原创 2021-03-31 11:03:49 · 336 阅读 · 0 评论 -
JVM内存结构
JVM内存结构 Java虚拟机在执行Java程序的过程中会把它所管理的内存划分为若干个不同的数据区域。这些区域都有各自的用途,以及创建和销毁的时间,有的区域随着虚拟机进程的启动而存在,有些区域则依赖用户线程的启动和结束而建立和销毁。如下图:一、堆(Heap) 对于大多数应用来说,Java堆(Ja...原创 2021-03-30 21:55:07 · 213 阅读 · 0 评论