BigDecimal是Java中的一个类,用于处理任意精度的十进制数字。与基本数据类型double和float不同,BigDecimal类可以保留任意位数的小数,并支持高精度的数学运算。但是,由于BigDecimal处理的数字非常大,因此在使用时需要注意一些事项,否则可能会引发一些问题。本文将介绍使用BigDecimal时需要注意的点,并提供一些示例代码来说明问题。 1避免使用BigDecimal(doubleval)构造方法 BigDecimal(doubleval)构造方法接受一个double类型的参数,并返回一个BigDecimal对象。这个构造方法看起来很方便,但是实际上会导致精...

  dCbTYEDZNmEM   2023年11月02日   29   0   0 构造方法Systemdouble类型

前言 大家都知道,SpringBoot应用最终会打出一个​​FatJar​​​,里面包含了用到的全部依赖,启动也非常简单,​​java-jarxxx.jar​​即可。 但是我们公司打出的最终包,将依赖包挪到了外部,然后启动的时候通过​​loader.path​​​指定依赖包的位置,如​​java-Dloader.path=libs-jarxxxx​​的方式启动,也能够启动成功。 这样做最大的一个好处就是如果发现某个依赖出现问题,那么我只需要在libs替换其中某个依赖,影响范围可以减小很多。 那大家是不是很好奇是怎么做到的呢? 打包方式详解 主要是通过两个maven插件打出这样的结...

  dCbTYEDZNmEM   2023年11月02日   14   0   0 Javajarspring

ThreadLocal相信大家都有用过的,一般用作存取一些全局的信息。比如用户信息,流程信息,甚至在Spring框架里面通过事务注解Transactional去获取数据库连接的实现上,也有它的一份功劳。 ThreadLocal作为一个进阶必会知识点,而且还是面试高频考点。网上博客对它的解读也必然不会少,但是网上博客解读水平良莠不齐,看多了难免会绕。不如自己亲自再梳理一遍,顺便记录下自己的解读。 ThreadLocal的线程隔离性Demo 先来看一个小的demo staticThreadLocal<Student>threadLocal=newThreadLocal<St...

  dCbTYEDZNmEM   2023年11月02日   39   0   0 set方法弱引用线程池

1.前言 在看到此文章之前,想必你已经知道如何启动一个​​springboot​​应用,知道如何通过​​docker​​运行你的​​springboot​​服务。 你可能会有这样得疑问,已经了解如上部署方式,是否还有必须去了解如何通过​​k8s​​部署​​springboot​​应用? 如果你有这样的疑问,那么请继续往下看。 2.创建SpringBoot应用 在介绍​​k8s​​部署​​springboot​​应用之前,我们需要创建一个​​springboot​​应用。 2.1编写pom.xml <?xmlversion="1.0"encoding="UTF-8"?><...

  dCbTYEDZNmEM   2023年11月02日   22   0   0 Dockerjarspring

你还在为开通ChatGPT账号苦恼吗你还在为不能访问的问题苦恼吗你还在为访问次数及速度苦恼吗 今天推荐的这个工具对于这些问题都不是问题,基于GPT-4(官网是这样介绍的,但是有人通过对话让它回答模型,它的回答却不是,运行中也有一定的错误率,实际大家需要自行判断),分分钟即可体验,不需要注册账号,没有Q的问题,没有访问次数的限制。专为开发者设计,针对你的代码逐行分析,优化代码,书写代码。以下是引用官网的一句话: Write,edit,andchataboutyourcodewithGPT-4inanewtypeofeditor 使用非常简单,进入官网的首页点击下载,安装软件,软件不大很快就...

  dCbTYEDZNmEM   2023年11月02日   26   0   0 开发者开发工具官网

微服务后端开发的最大痛点之一就是调试困难,非常影响我们的开发效率。 如果我们想与其他微服务进行联动调试,则需要在本地环境中启动对应的微服务模块,这可能需要大量的配置和构建时间,同时也会占用我们本地很多资源,可能还会出现”带不动“的情况。 虽然说我们可以在测试服务器上进行调试,但整个流程也是比较漫长,提交代码->触发CI/CD->等待构建成功,可能简单的BUG我们提交代码打个日志就能解决问题,当遇到复杂的BUG时通过这个方式在服务器上调试就非常难受了,太浪费时间了,提交->等待,反反复复,始终没有本地开发工具直接调试的方便。 下面介绍的工具将远程和本地融为一体,让本地开发更加流...

  dCbTYEDZNmEM   2023年11月02日   19   0   0 微服务Deployment本地开发

除了操作集合、限流和缓存,Guava还有另一个隐秘的功能:事件总线EventBus机制——是发布-订阅模式的实现,不需要显式地注册回调——比观察者模式更灵活。 EventBus是在单体架构内实现松耦合的一种很好的手段,通过它可以实现与业务逻辑无关的事件监听和消费。Guava提供的事件总线EventBus分为两种: 1、同步事件EventBus,主要用于单线程环境; 2、异步事件AsyncEventBus,主要用于多线程环境。 可以稍稍回顾一下观察者模式。 在支付系统的设计模式中,当完成交易后,需要给用户发送通知时就使用到了观察者模式,怎么做的呢? 1、定义账户观察者接口及其子接口支付观察者和积...

  dCbTYEDZNmEM   2023年11月02日   19   0   0 System观察者模式事件总线

什么是死信队列? 死信队列,英文缩写DLX,DeadLetterExchange(死信交换机),当消息成为Deadmessage(消息过期)后,可以被重新发送到另一个交换机,这个交换机就算是DLX,其实死信交换机(队列)和正常交换机(队列)没有什么区别 为什么叫死信队列但是翻译过来叫死信交换机呢,因为RabbitMQ比较特殊,其他MQ只有队列没有交换机这个概念的 正常来说,队列设置了过期时间,当消息到了队列之后,在过期时间内没有被消费,那么这个消息就被丢弃了,但是如果这个队列绑定了一个DLX死信队列(交换机),那么就算消息过期了也不会被直接丢弃掉,而是会发送给死信交换机,那么死信交换机又可以绑...

  dCbTYEDZNmEM   2023年11月02日   36   0   0 回调函数xmlspring

前言   Lambda表达式是一种在现代编程语言中越来越常见的特性,可以简化代码、提高生产力。这篇文章将介绍10个必须掌握的Lambda表达式,这些表达式涵盖了在实际编程中经常用到的常见场景,例如列表操作、函数组合、条件筛选等。通过学习这些Lambda表达式,你将更加深入地理解函数式编程的思想,能够更加高效地编写代码。 1.使用Lambda表达式进行集合遍历 未使用Lambda表达式: List<String>list=Arrays.asList("apple","banana","orange"); for(Stringfruit:list){ System.out.print...

  dCbTYEDZNmEM   2023年11月02日   81   0   0 System函数式接口List

前言 idea可以说是java开发者使用的最多的开发工具了,一写好的idea插件不仅仅能赏心悦目,更能帮助我们提升效率,有更多的时间去摸鱼。下面就推荐一些我经常用的idea插件。 Gradianto插件 支持idea的相关皮肤,是我用过比较好用,ui风格很好的一款插件 jclasslibBytecodeviewer插件 class文件反编译插件->jclasslibisabytecodeviewerforJavaclassfiles。可是反编译class文件,当然这针对于老版本的idea,新版本的idea已经自动集成该功能了。 GrepConsole插件 可以将控制台打印的日志分颜色显...

  dCbTYEDZNmEM   2023年11月02日   22   0   0 Javaidetomcat

概述 性能优化,反复被提起,想要做到性能优化,先要理解性能优化,知其然才知其所以然,所谓的高性能就是合理的运用服务器的硬件资源,主要是Cpu和内存,硬盘,用大量的测试和计算,合理的计算使用服务器的资源,提升响应速度,提高吞吐率,就是性能优化的知识点。 CPU的优化 提升Cpu缓存命中率 Cpu是电脑中最重要的组成的核心之一,Cpu是计算机的计算大脑,是优化中首先要考虑的地方,Cpu本身内部有缓存,一般所说的一级缓存、二级缓存、三级缓存,我们暂且把Cpu的缓存称为Cache。 三级缓存要比一、二级缓存大许多倍,这是因为当下的CPU都是多核心的,每个核心都有自己的一、二级缓存,但三级缓存却是一颗C...

  dCbTYEDZNmEM   2023年11月02日   29   0   0 客户端服务器TCP

1、前言 实际项目中我们会有很多地方需要判空校验,如果不做判空校验则可能产生NullPointerException异常。 针对异常的处理我们在上一篇有提及: 先来看一下实际项目中一些判空方式 通常我们判断一个对象是否为Null,可以使用java.util中的Objects.nonNull(obj)、hutool中的ObjectUtil或者直接null!=obj 2、List的判空 像List这种比较特殊的在项目中可能不仅仅是判断非空了。对于List来说不等于null和List.size()不等于0是两回事,公司也有实习生常常有把这两个混淆的情况,list不等于null说明已经初始化了,堆...

  dCbTYEDZNmEM   2023年11月02日   21   0   0 JavaList静态方法

前言 我们在写搬砖的过程中,少不了需要将A对象转成B对象,对对象进行对象的转换是一个操作重复且繁琐的工作。于是市面上就有许多的对象转换工具来解决这个问题,下面我们就来看看几个比较常用的工具(mapstruct,SpringBeanUtils,ApacheBeanUtils)使用方式及其性能。 用法介绍 mapstruct mapstruct基于注解+字节码生成的方式使用和运行。其支持的功能全面,运行时速度也很快(直接生成转换器类字节码)。示例如下: maven依赖 <dependency> <groupId>org.mapstruct</groupId> ...

  dCbTYEDZNmEM   2023年11月02日   22   0   0 User示例代码apache

一、确定范围 1.1限流   易波动或者对波动比较敏感;容易影响整体的;不能预测上游行为,或者不能预测下游行为,依赖的上下游有不可预测的行为体。要不要做熔断降级的核心点在于是否可控,有没有不可控因素。 1.1.1需要提前做限流的接口 1、容易出问题的,比如经常性能有大波动的; 2、速度慢的,速度慢会导致资源长时间不能释放; 3、单次请求消耗的资源多的; 4、请求量大占用总资源多的; 5、涉及到容易构成瓶颈的资源,比如会导致串行,避免长事务; 事务内调用了外部接口,为了避免连接不能释放应提前做好熔断,比如响应时间设置; 需要请求一个公共的锁,导致大量排队 6、请求量...

  dCbTYEDZNmEM   2023年11月02日   14   0   0 响应时间数据限流

开始准备 开始之前我们需要有Redis安装,我们采用本机Docker运行Redis,主要命令如下 dockerpullredis dockerrun--namemy_redis-d-p6379:6379redis dockerexec-itmy_redisbash redis-cli 前面两个命令是启动redisdocker,后两个是连接到docker,在使用redis-cli去查看redis里面的内容,主要查看我们存在redis里面的数据。 RedisTemplate 我们先从RedisTemplate开始,这个是最好理解的一种方式,我之前在工作中也使用过这种方式,先看代码示例我们先定义...

  dCbTYEDZNmEM   2023年11月02日   15   0   0 redis数据

大家好!我是sum墨,一个一线的底层码农,平时喜欢研究和思考一些技术相关的问题并整理成文,限于本人水平,如果文章和代码有表述不当之处,还请不吝赐教。 以下是正文! 先看问题 首先上一串代码 publicStringbuy(LonggoodsId,IntegergoodsNum){ //查询商品库存 Goodsgoods=goodsMapper.selectById(goodsId); //如果当前库存为0,提示商品已经卖光了 if(goods.getGoodsInventory()<=0){ return"商品已经卖光了!"; } //如果当前购买数量大于库存,提示库存不足 if(go...

  dCbTYEDZNmEM   2023年11月02日   62   0   0 redis分布式锁字段

SpringBoot是一款非常流行的Java框架,其注解用法复杂而丰富。在介绍SpringBoot的注解之前,我们需要先了解Spring框架中的AOP(面向切面编程)概念。Spring的AOP可以帮助开发者实现一些非业务功能的代码,如日志记录、性能监控等。这些功能可以通过定义一个Aspect(切面)类来实现。 在SpringBoot中,除了常规的AOP注解外,还有以下几类注解,这也是我看到一个脑图后的一点点收获,想要自己也能够总结总结所用到的注解,常记定能有所感悟。 核心注解 原型注解 SpringBoot注解 SpringCloud注解 缓存注解 测试注解 数据库访问注解 JPA注解 Sp...

  dCbTYEDZNmEM   2023年11月02日   27   0   0 应用程序缓存HTTP
关注 更多

空空如也 ~ ~

粉丝 更多

空空如也 ~ ~