十八张图带你入门实时监控系统HertzBeat
我们经常讲:研发人员有两只眼睛,一只是监控平台,另一只是日志平台。在对性能和高可用讲究的场景里,监控平台的重要性再怎么强调也不过分。
这篇文章,我们聊聊开源实时监控告警系统 HertzBeat 赫兹跳动。
1 产品特色
HertzBeat 有两个非常鲜明的特色:强大的监控模版和无需 Ag...[2024/2/7]
Java锁到底是个什么东西
一、java锁存在的必要性
要认识java锁,就必须对2个前置概念有一个深刻的理解:多线程和共享资源。
对于程序来说,数据就是资源。
在单个线程操作数据时,或快或慢不存在什么问题,一个人你爱干什么干什么。
多个线程操作各自操作不同的数据,各干各的,也不存在什么问题。
多个线程对共享数据进...[2024/2/7]
设计模式浅析(三) ·装饰者模式
设计模式浅析(三) ·装饰者模式
日常叨逼叨
java设计模式浅析,如果觉得对你有帮助,记得一键三连,谢谢各位观众老爷????
halo各位小伙伴们,今天我们一起来了解一下装饰者模式,首先还是先进入下面的案例,话不多说,我们开始吧!
案例介绍
蜜雪**是规模比较大的连锁饮品店,因为分店开...[2024/2/5]
解决缓存与数据库同步下的同步锁问题之分段锁
契子
在实际业务会我们会使用第三方的缓存例如:Reids、Memcache等;但是,并且我们在查询使用缓存时都得尽可能的保证缓存的一致性,在读取时得保证尽可能的保证缓存拿到的是数据库的最新数据,那么在实现的逻辑上一般都为这样:
1、请求线程先读取缓存实现
2、如果缓存没有数据的话触发读取数据...[2024/2/5]
设计模式浅析(二) ·观察者模式
设计模式浅析(二) ·观察者模式
日常叨逼叨
java设计模式浅析,如果觉得对你有帮助,记得一键三连,谢谢各位观众老爷????
案例介绍
假设存在下面这个场景:
你有一个监测空气湿度和温度的仪器,在该仪器获取到数值之后,你需要获取到一些数值,然后分别显示在一些显示设备(手机,平板,手环 ...[2024/2/5]
spring声明式事务(@Transactional)开发常犯的几个错误及解决办法
目前JAVA的微服务项目基本都是SSM结构(即:springCloud +springMVC+Mybatis),而其中Mybatis事务的管理也是交由spring来管理,大部份都是使用声明式事务(@Transactional)来进行事务一致性的管理,然后在实际日常开发过程中,发现很多开发同学都用...[2024/2/5]
【进阶篇】Java 实际开发中积累的几个小技巧(一)【进阶篇】Java 实际开发中积累的几个小技巧(一)
目录前言一、枚举类的注解二、RESTful 接口三、类属性转换四、Stream 流五、判空和断言5.1判空部分5.2断言部分文章小结
前言
笔者目前从事一线 Java 开发今年是第 3 个年头了,从 0-1的 SaaS、PaaS 的项目做过,多租户下定制化开发项目也做过,项目的 PM 也做过...[2024/2/5]
SpringBoot + LiteFlow:轻松应对复杂业务逻辑,简直不要太香!
LiteFlow简介
LiteFlow是什么?
LiteFlow是一款专注于逻辑驱动流程编排的轻量级框架,它以组件化方式快速构建和执行业务流程,有效解耦复杂业务逻辑。通过支持热加载规则配置,开发者能够即时调整流程步骤,将复杂的业务如价格计算、下单流程等拆分为独立且可复用的组件,从而实现系统的...[2024/2/5]
服了,一个ThreadLocal被问出了花
分享是最有效的学习方式。
博客:https: blog.ktdaddy.com/
故事
地铁上,小帅无力地倚靠着杆子,脑子里尽是刚才面试官的夺命连环问,“用过ThreadLocal么?ThreadLocal是如何解决共享变量访问的安全性的呢?你觉得啥场景下会用到ThreadLocal? ...[2024/2/5]
Collectors.toMap的暗坑与避免方式
使用Java的stream中的Collectors可以很方便地做容器间的转换,可以少写很多代码。但是其中有暗含的坑需要注意和避免,本文探讨Collectors.toMap(JDK8版本)。
Collectors.toMap可以将一个流转化成Map,常见于需要将List转换成Map以便于进一步操...[2024/2/5]
Java并发(二十三)----同步模式之保护性暂停Java并发(二十三)----同步模式之保护性暂停
1、定义
即 Guarded Suspension,用在一个线程等待另一个线程的执行结果
要点
有一个结果需要从一个线程传递到另一个线程,让他们关联同一个 GuardedObject
如果有结果不断从一个线程到另一个线程那么可以使用消息队列
JDK 中,join 的实现、Fu...[2024/2/5]
SpringBoot实现统一异常处理SpringBoot实现统一异常处理
目录前言实现步骤定义统一响应对象类定义业务异常枚举接口和实现定义业务异常基类定义全局异常处理切面测试和验证总结
前言
近日心血来潮想做一个开源项目,目标是做一款可以适配多端、功能完备的模板工程,包含后台管理系统和前台系统,开发者基于此项目进行裁剪和扩展来完成自己的功能开发。本项目为前后端...[2024/2/5]
阿里二面:SpringBoot可以同时处理多少个请求?当场懵了。。。。阿里二面:SpringBoot可以同时处理多少个请求?当场懵了。。。。
SpringBoot以其简洁高效的开发方式和强大的内嵌容器特性,为开发者提供了构建高性能后端服务的便利。然而,当面临高并发场景时,理解并合理配置Spring Boot应用以达到最佳的并发处理能力至关重要。在Spring Boot中,应用程序对HTTP请求的并发处理主要依赖于内嵌的Servlet容...[2024/2/5]
【踩坑指南】线程池使用不当的五个坑
线程池是 Java 多线程编程中的一个重要概念,它可以有效地管理和复用线程资源,提高系统的性能和稳定性。但是线程池的使用也有一些注意事项和常见的错误,如果不小心,就可能会导致一些严重的问题,比如内存泄漏、死锁、性能下降等。
本文将介绍线程池使用不当的五个坑,以及如何避免和解决它们,大纲如下,
...[2024/2/5]
HanLP — 词性标注
目录词性的用处词性标注词性标注模型联合模型流水线式词性标注语料库与标注集序列标注模型应用于词性标注自定义词性朴素实现标注语料总结
词性(Part-Of-Speech,POS)指的是单词的语法分类,也称为词类。同一个类别的词语具有相似的语法性质
所有词性的集合称为词性标注集。
词性的用处...[2024/2/2]
线程池参数千万不要这样设置,坑得我整篇文章都写错了,要注意!
你好呀,我是歪歪。
先给大家道个歉:
上周不是发布了这篇文章嘛:《三个烂怂八股文,变成两个场景题,打得我一脸懵逼。》
其中第一个关于线程池的场景,经过读者提醒可能有问题,我又一次用尽浑身解数分析了一波,发现之前确实分析的不对。
这个案例真的是再一次深入的刷新了我对于线程池运行过程的认知...[2024/2/2]
SpringBoot 整合多数据源的事务问题
代码
先贴代码:
核心就是:Spring给我们提供的一个类 AbstractRoutingDataSource,然后我们再写一个切面来切换数据源,肯定要有一个地方存储key还要保证上下文都可用,所以我们使用 ThreadLocal 来存储数据源的key
pom.xml
<de...[2024/2/2]
Spring自带的这11个工具类,真香!
前言
最近有些小伙伴,希望我分享一些好用的工具类,帮他们提升开发效率。
今天这篇文章专门跟大家一起总结一下,Spring框架本身自带的一些好用的工具类,希望对你会有所帮助。
1 A ert
很多时候,我们需要在代码中做判断:如果不满足条件,则抛异常。
有没有统一的封装呢?
其实Spr...[2024/2/2]
深入浅出Java多线程(五):线程间通信深入浅出Java多线程(五):线程间通信
引言
大家好,我是你们的老伙计秀才!今天带来的是[深入浅出Java多线程]系列的第五篇内容:线程间通信。大家觉得有用请点赞,喜欢请关注!秀才在此谢过大家了!!!
在现代编程实践中,多线程技术是提高程序并发性能、优化系统资源利用率的关键手段。Java作为主流的多线程支持语言,不仅提供了丰富的A...[2024/2/2]
java线程池实现多任务并发执行java线程池实现多任务并发执行
Java线程池实现多任务并发执行
1?? 创建一些任务来落地多任务并发执行
每一个数组里面的数据可以看成任务,或者是需要并发的业务接口,
数组与数组之间,可以看作为他们之间有血缘关系,简单来说就是:
taskJksj里面的10个任务执行完之后,才可以执行taskJxdx里面的4个任务,执行完tas...[2024/2/2]
深入剖析Java中的反射,由浅入深,层层剥离!
写在开头
之前更新了不少Java的基础知识,比如Java的类、对象、基础类型、关键字、序列化、泛型、值传递等等,今天要上点深度了,来聊一聊Java中的 反射 !
所谓反射,就是在运行时分析、检查和操作类、接口、方法、属性的行为!
简单感受一下反射
在开始详解反射之前,我们先通过一段代码,...[2024/2/2]
每日一道Java面试题:说一说Java中的异常
写在开头
任何一个程序都无法保证100%的正常运行,程序发生故障的场景,我们称之为:异常,在Java中对于异常的处理有一套完善的体系,今天我们就来一起学习一下。
老样子,用一段简单的代码开始今天的学习。
我:“小二,上代码!”
JavaBuild君:“好嘞!几位爷,里面请~”
【...[2024/2/2]
Spring WebSocket实现实时通信的详细教程
简介
WebSocket 是基于TCP/IP协议,独立于HTTP协议的通信协议。WebSocket 连接允许客户端和服务器之间的全双工通信,以便任何一方都可以通过已建立的连接将数据推送到另一方。
我们常用的HTTP是客户端通过「请求-响应」的方式与服务器建立通信的,必须是客户端主动触发的行为,...[2024/1/29]
Gin 框架之jwt 介绍与基本使用
目录一.JWT 介绍二.JWT认证与se ion认证的区别2.1 基于se ion认证流程图2.2 基于jwt认证流程图三. JWT 的构成3.1 header : 头部3.2 payload : 负载3.2.1 标准中注册的声明 (建议但不强制使用)3.2.2 公共的声明3.2.3 私有的声明...[2024/1/29]
springboot整合nacos的入门Demo
Nacos介绍
Nacos /nɑ:k?? 是 Dynamic Naming and Configuration Service的首字母简称,一个更易于构建云原生应用的动态服务发现、配置管理和服务管理平台。
Nacos 致力于帮助您发现、配置和管理微服务。Nacos 提供了一组简单易用的特...[2024/1/29]
事务提交之后再执行某些操作 → 引发对 TransactionSynchronizationManager 的探究
开心一刻
昨晚,小妹跟我妈聊天
小妹:妈,跟你商量个事,我想换车,资助我点呀
妈:哎呀,你那分扣的攒一堆都够考清华的,还换车资助点,有车开就不错了
小妹:你要是这么逼我,别说哪天我去学人家傍大款啊
妈:哎呀妈,你脸上那褶子比你人生规划都清晰,咋地,大款缺地图呀,找你?...[2024/1/29]
自定义httpServletRequestWrapper导致上传文件请求参数丢失 - 小小程序猿-DB
问题背景
项目是 SpringBoot 单体式,在项目中,为了实现调用 controller 请求的日志记录功能。因此做了以下配置:
创建自定义拦截器 LogInterceptor;
因为需要使用到流获取请求参数,解决流只能读一次问题,所以需要自定义 HttpServletRequestWra...[2024/1/29]
给你一颗“定心丸”——记一次由线上事故引发的Log4j2日志异步打印优化分析
一、内容提要
自知是人外有人,天外有天,相信对于Log4j2的异步日志打印早有老师或者同学已是熟稔于心,优化配置更是信手拈来,为了防止我在这里啰里八嗦的班门弄斧,我先将谜底在此公布:log4j2.asyncQueueFullPolicy=Discard & log4j2.discardT...[2024/1/29]
Spring Cloud 系列:基于Seata 实现 XA模式
https: eata.io/zh-cn/doc user/mode/xa
https: eata.io/zh-cn/doc dev/mode/xa-mode
XA 规范 是 X/Open 组织定义的分布式事务处理(DTP,Distributed Transaction Proce ing)...[2024/1/26]
每日一道Java面试题:方法重载与方法重写,这把指定让你明明白白!
写在开头
请聊一聊Java中方法的重写和重载?
这个问题应该是各大厂面试时问的最多的话题之一了,它们几乎贯穿了我们日常的开发工作,在过往的博客中我们多多少少都提到过重载与重写,而今天我们就一起来详细的学习一下这二者的功能与区别!
重载与重写的定义
重写: 类实现接口或者子类继承父类时,保...[2024/1/26]
【南大静态代码分析】作业 4:类层次结构分析与过程间常量传播
作业 4:类层次结构分析与过程间常量传播
实现类层次结构分析(CHA)
dispatch :根据方法调用者的类和方法签名寻找目标方法。
比较显然,是个递归算法。
递归的终止条件有两个,一个是如果一直找不到相应方法,不断递归到父类,最后递归到 Object 在向上递归就是 null ,O...[2024/1/24]
手把手带你上手swagger3
配置POM
只需要加一个依赖,并且要注意,swagger3在springboot2.5版本以上会出现问题
<dependency>
<groupId>io.springfox</groupId>
...[2024/1/24]
Java开发者的Python快速进修指南:探索15种独特的Python特殊方法Java开发者的Python快速进修指南:探索15种独特的Python特殊方法
概述
在Python中,特殊方法(也称为魔术方法)是由Python解释器自动调用的,我们不需要手动调用它们,而是使用内置函数来间接地使用它们。举个例子,我们可以实现特殊方法__len__(),然后通过使用内置函数len()来获取对象的长度。同样地,一些特殊方法的调用是隐式的,比如在使用for循环...[2024/1/24]
一文搞清楚Java中的方法、常量、变量、参数
写在开头
在上一篇文章:一文搞清楚Java中的包、类、接口
中我们讲了Java中的包、类和接口,今天继续将剩下的方法、常量、变量以及参数梳理完。
Java中的变量与常量
在JVM的运转中,承载的是数据,而数据的一种变现形式就是“量”,量分为:常量与变量,我们在数学和物理学中已经接触过变量的概...[2024/1/22]
一文搞清楚Java中的包、类、接口
写在开头
包、类、接口、方法、变量、参数、代码块,这些都是构成Java程序的核心部分,即便最简单的一段代码里都至少要包含里面的三四个内容,这两天花点时间梳理了一下,理解又深刻了几分。
Java中的包
Java 定义了一种名字空间,称之为包:package。一个类总是属于某个包,类名(比如Per...[2024/1/22]
Java开发者的Golang进修指南:从0->1带你实现协程池
在Java编程中,为了降低开销和优化程序的效率,我们常常使用线程池来管理线程的创建和销毁,并尽量复用已创建的对象。这样做不仅可以提高程序的运行效率,还能减少垃圾回收器对对象的回收次数。
在Golang中,我们知道协程(goroutine)由于其体积小且效率高,在高并发场景中扮演着重要的角色。然...[2024/1/22]
mysql和redis库存扣减和优化
前言
大流量情况下的库存是老生常谈的问题了,在这里我整理一下mysql和redis应对扣除库存的方案,采用jmeter进行压测。
JMETER设置
库存初始值50,线程数量1000个,1秒以内启动全部,一个线程循环2次,共2000个请求
MySQL方案
初始方案
<updat...[2024/1/19]
简单介绍JDK、JRE、JVM三者区别
简单介绍JDK vs JRE vs JVM三者区别
文编|JavaBuild
哈喽,大家好呀!我是JavaBuild,以后可以喊我鸟哥,嘿嘿!俺滴座右铭是不在沉默中爆发,就在沉默中灭亡,一起加油学习,珍惜现在来之不易的学习时光,等工作之后,你就会发现,想学习真的需要挤时间,厚积薄发啦!
...[2024/1/10]
为什么Java中“1000==1000”为false,而”100==100“为true?
在日常编程中,我们经常遇到一些看似简单却隐藏着复杂逻辑的问题。
比如,你是否想过为什么在 Java 中表达式1000==1000会返回 false,而 100==100 却返回 true 呢?
Integer a = 100;
Integer b = 100;
System.out.prin...[2024/1/10]
Java 新技术:虚拟线程使用指南(二)Java 新技术:虚拟线程使用指南(二)
虚拟线程是在 Java 21 版本中实现的一种轻量级线程。它由 JVM 进行创建以及管理。虚拟线程和传统线程(我们称之为平台线程)之间的主要区别在于,我们可以轻松地在一个 Java 程序中运行大量、甚至数百万个虚拟线程。
由于虚拟线程的数量众多,也就赋予了 Java 程序强大的力量。虚拟线程适...[2024/1/10]
JavaScript apply、call、bind 函数详解
apply和call
apply和call非常类似,都是用于改变函数中this的指向,只是传入的参数不同,等于间接调用一个函数,也等于将这个函数绑定到一个指定的对象上:
let name = ''window''
function getName(param1, param2) {
co...[2024/1/10]
2024年,在风云际会的编程世界里,窥探Java的前世今生,都说它穷途末路,我认为是柳暗花明!
2024年,在风云际会的编程世界里,窥探Java的前世今生,都说它穷途末路,我认为是柳暗花明!
文编|JavaBuild
哈喽,大家好呀!我是JavaBuild,以后可以喊我鸟哥,嘿嘿!俺滴座右铭是不在沉默中爆发,就在沉默中灭亡,一起加油学习,珍惜现在来之不易的学习时光,等工作之后,你就会发...[2024/1/10]
ActiveMQ RCE CVE-2023-46604分析
一、漏洞触发点
org.apache.activemq.openwire.v12包下BaseDataStreamMarshaller类的createThrowable方法。
package org.apache.activemq.openwire.v12;
BaseDataStreamMars...[2024/1/10]
面试官喜欢问Nacos原理?直接把这篇文章甩给他!面试官喜欢问Nacos原理?直接把这篇文章甩给他!
大家好,我是三友~~
今天就应某位小伙伴的要求,来讲一讲Nacos作为服务注册中心底层的实现原理
不知你是否跟我一样,在使用Nacos时有以下几点疑问:
临时实例和永久实例是什么?有什么区别?服务实例是如何注册到服务端的?服务实例和服务端之间是如何保活的?服务订阅是如何实现的?集群间数据是...[2024/1/5]
Guava Cache 异步刷新技巧,你值得拥有!
Guava Cache是一款非常优秀的本地缓存框架,提供简洁易用的 API 供开发者使用。
这篇文章,我们聊聊如何使用 Guava Cache 异步刷新技巧带飞系统性能 。
1 基本用法
首先,在 Java 应用中添加 maven 依赖:
<dependency>
...[2024/1/3]
Kernel Memory 入门系列:异步管道Kernel Memory 入门系列:异步管道
Kernel Memory 入门系列:异步管道
前面所介绍的处理流程都是基于同步管道的,即文档导入的时候,会等到文档处理完成之后才会返回。
但是在实际的应用中,文档很多,而且文档的处理时间也不确定,如果采用同步的方式,那么就会导致整个流程的处理时间过长,也会导致整个流程的阻塞。因此,我们需要一...[2024/1/3]
Java注解,看完就会用
一、什么是注解
定义:注解(Annotation),也叫元数据。一种代码级别的说明。
它是JDK1.5及以后版本引入的一个特性,与类、接口、枚举是在同一个层次。
它可以声明在包、类、字段、方法、局部变量、方法参数等的前面,用来对这些元素进行说明,注释。
二、内置注解
@Override: ...[2024/1/2]
基于源码去理解Iterator迭代器的Fail-Fast与Fail-Safe机制
原创/朱季谦
在Java编程当中,Iterator迭代器是一种用于遍历如List、Set、Map等集合的工具。这类集合部分存在线程安全的问题,例如ArrayList,若在多线程环境下,迭代遍历过程中存在其他线程对这类集合进行修改的话,就可能导致不一致或者修改异常问题,因此,针对这种情况,迭...[2023/12/29]
23年底,我出齐了Spring boot,Spring cloud和案例方面的书,正在写一本面试书(代年终总结)23年底,我出齐了Spring boot,Spring cloud和案例方面的书,正在写一本面试书(代年终总结)
年末了,再来总结一下吧,希望本人明年的年终总结文还能在博客园发。
这次总结的主题是本人出的java书。这几年本人出了不少书,其中有python、redis和Java方面的。
姑且不说其它,java方面,本人出了spring boot,spring cloud(第一代),spring clou...[2023/12/29]
Spring Boot 2.x 到 3.2 的全面升级指南
Spring Framework 是一种流行的开源企业级框架,用于创建在 Java Virtual Machine (JVM) 上运行的独立、生产级应用程序。而Spring Boot 是一个工具,可以让使用 Spring 框架更快、更轻松地开发 Web 应用程序和微服务。随着 Spring Bo...[2023/12/29]