自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(842)
  • 资源 (1)
  • 收藏
  • 关注

原创 HTTP请求工具类

【代码】HTTP请求工具类。

2024-09-15 05:15:00 79

原创 随机数工具类

【代码】随机数工具类。

2024-09-14 05:00:00 110

原创 通用文件强制下载

【代码】通用文件强制下载。

2024-09-13 05:15:00 444

原创 文件操作工具类

【代码】文件操作工具类。

2024-09-12 05:15:00 168

原创 时间日期工具类

【代码】时间日期工具类。

2024-09-11 05:30:00 182

原创 字符串处理工具类

【代码】字符串处理工具类。

2024-09-10 19:51:19 203

原创 加密解密工具类

【代码】加密解密工具类。

2024-09-07 05:30:00 235

原创 Spring Base64Utils:编码解码小助手

Base64Utils作为Spring框架中的一个实用工具类,简化了Base64编码和解码的操作。开发者可以通过简单的API调用,轻松实现二进制数据与Base64字符串之间的转换。在数据传输和存储时,使用Base64编码可以确保数据的完整性和可读性,而Base64Utils则提供了高效、简便的编码解码方法。无论是常规编码还是URL安全编码,Base64Utils都能满足开发者的需求,是Spring应用中处理Base64编码的得力助手。

2024-09-06 05:30:00 1401

原创 Executors 封装的四种线程池 各自有何特点,如何使用 超详细 代码动图演示

一种线程使用模式。线程过多会带来调度开销,进而影响缓存局部性和整体性能。而线程池维护着多个线程,等待着监督管理者分配可并发执行的任务。这避免了在处理短时间任务时创建与销毁线程的代价。线程池不仅能够保证内核的充分利用,还能防止过分调度。可用线程数量应该取决于可用的并发处理器、处理器内核、内存、网络sockets等的数量。例如,线程数一般取cpu数量+2比较合适,线程数过多会导致额外的线程切换开销。

2024-09-05 05:30:00 829

原创 epoll详解(使用、原理、实验)

执行epoll_create时,创建了红黑树和就绪链表,执行epoll_ctl时,如果增加socket句柄,则检查在红黑树中是否存在,存在立即返回,不存在则添加到树干上,然后向内核注册回调函数,用于当中断事件来临时向准备就绪链表中插入数据。所以进程A被阻塞,不会往下执行代码,也不会占用cpu资源。epoll_wait在调用时,在给定的timeout时间内,当在监控的所有句柄中有事件发生时,就返回用户态的进程,不用传递socket句柄给内核,因为内核已经在epoll_ctl中拿到了要监控的句柄列表。

2024-09-03 05:30:00 1328

原创 一文搞懂select、poll和epoll区别

单个进程就可以同时处理多个网络连接的 io 请求(同时阻塞多个 io 操作)。基本原理就是程序呼叫 select,然后整个程序就阻塞状态,这时候,kernel 内核就会轮询检查所有 select 负责的文件描述符 fd,当找到其中那个的数据准备好了文件描述符,会返回给 select,select 通知系统调用,将数据从 kernel 内核复制到进程缓冲区(用户空间)。虽然[服务器]进程会被 select 阻塞,但是 select 会利用内核不断轮询监听其他客户端的 io 操作是否完成。

2024-09-02 05:30:00 682

原创 java epoll网络编程

中断可以看作是一种信号,当cpu接收到该信号后,就会停止当前运行的进程,转而去执行预先设置好的中断处理程序。好比在学生时代,当你正专心的神游太虚,突然被老师点名,不得不结束当前的遐想,并立刻站起来接受老师的灵魂拷问。在计算机系统中,中断不仅控制者进程间的轮转,平常我们通过鼠标、键盘与计算机进行交互,也是通过中断机制完成的,包括上文提到的计算机通信,cpu亦是通过中断机制得知网卡接收到了数据。按照中断的产生来源,一般可将中断分为两类——硬中断和软中断。

2024-09-01 18:55:30 2394

原创 java定义通用返回结果类ResultVO使用示例详解

通过封装ResultVO通用返回结果对象之后,保证了后端跟前端视图对象(VO)的统一。

2024-08-30 05:00:00 992

原创 详解MyBatis延迟加载是如何实现的

结果映射: 在结果映射时,对于配置了延迟加载的关联属性,MyBatis 不会立即执行关联查询,而是为该属性创建一个代理对象。代理触发: 当访问这个属性的方法时,比如get方法,代理对象会触发实际的关联查询。查询加载: 代理对象执行关联查询,并将查询结果设置到目标对象的属性中,替换掉自身。MyBatis的延迟加载特性通过动态代理和配置控制,实现了按需加载关联数据的能力。通过延迟加载,可以优化应用程序的性能,特别是在处理复杂关系和大量数据时。

2024-08-29 05:00:00 1029

原创 updateByPrimaryKey和updateByPrimaryKeySelective的区别

MyBatis Generator是一个专门为MyBatis框架使用者定制的代码生成器,它可以快速的根据表生成对应的映射文件、接口文件、POJO。而且,在自动生成的映射文件中支持基本的增删改查操作,开发人员可在此基础上依据实际需求添加多表联查、存储过程等复杂SQL操作。MyBatis Generator使用简单,通常只需要很少量的简单配置就可以完成大量的表到POJO生成工作,让开发人员解放出来更专注于业务逻辑的开发。

2024-08-28 05:30:00 1003

原创 Java实现数学工具ArithUtil-BigDecimal

【代码】Java实现数学工具ArithUtil-BigDecimal。

2024-08-27 05:15:00 101

原创 HttpUtils——助力高效网络通信

【代码】HttpUtils——助力高效网络通信。

2024-08-26 05:30:00 786

原创 全网最全的日期格式化工具类

【代码】全网最全的日期格式化工具类。

2024-08-25 05:30:00 88

原创 JavaJSON处理工具类JSONUtils

outputJSONObj():读取并输出 JSON 对象的键值对(不含嵌套)readJSONFile():从本地 JSON 文件读取出 JSON 字符串。generateMockJSON():生成含有的随机值 JSON 对象。以上方法笔者觉得没有必要再封装进工具类了,直接调用就行。而其他的处理可以参考笔者的 JSON 处理工具类。Fastjson 中 JSON 数组(astjson 中 JSON 对象(包,需先在 Maven 的。JSON 键对应的值获取。JSON 对象添加与获取。JSON 键值对添加。

2024-08-24 08:44:20 864

原创 面试必杀题:当发生OOM时,进程还能处理请求吗

面试官:那你知道什么是 OOM 吗?我:这个我在线上也碰到过好多次了,Java 的 OOM 通常指的是内存溢出(Out of Memory)异常。在 Java 应用程序中,每个对象都需要在内存中分配一定的空间。当应用程序需要分配更多内存空间来创建对象时,但可分配内存却不足以满足需求时,就会抛出 OOM 异常。面试官:你知道在我们的程序里,有可能会出现内存泄漏,你对它了解吗?我:对的,和内存溢出的情况不同,还有一种特殊场景,叫做内存泄漏(本质上还是内存溢出,只不过是错误的内存溢出。

2024-08-10 05:15:00 566

原创 Every derived table must have its own alias(sql语句错误解决方法)

的时候会出现这个错误:Every derived table must have its own alias(的时候就会出现Every derived table must have its own alias;就会产生一张新的表,和前面的表stock联合查询,但是mysql要求。

2024-08-09 05:15:00 1797

原创 记一次远程API调用失败

最近开发忙,项目紧,系统出现一些忽隐忽现的问题,本地也不能复现,当时也无法理解,就先搁置了,现在回想起来,这里还是明智的。

2024-08-08 05:15:00 908

原创 @ModelAttribute用法总结

当被@ModelAttribute注解的方法的返回值类型不同时也有区分。

2024-08-07 05:15:00 515

原创 vue中使用mui中的滑动组件时报错TypeError: ‘caller‘, ‘callee‘, and ‘arguments‘ properties may not be accessed

出现这个报错是因为mui中的tab-top-webview-main 滑动组件中的js,使用了非严格模式的语法,然而在webpack打包中默认使用了严格模式去打包。

2024-08-06 05:15:00 789

原创 你们的优雅停机真的优雅吗?

现有的springboot内置Tomcat能通过配置参数达到优雅停机的效果。但是因为业务系统中的代码中存在多种技术交叉应用,针对Tomcat和springmvc不同的应用确实需要花费时间研究底层原理来编写相关类实现同springboot配置参数托管的效果。

2024-08-05 05:15:00 549

原创 Typora导入功能使用详细

首次安装完typora,是没法导入的,需要安装pandoc,首先我们先在文件夹里面新建一个Typora文件,然后再找到导入功能点击就可以弹出安装的地址了。跳转到官网界面进行下载: [https://github.com/jgm/pandoc/releases/tag/3.3)链接:https://pan.baidu.com/s/1zQEQUz4QWGnsmL9toJqByA?我这里有加速器所以下载很快,我直接放到资源里面你们自行下载就好了。下载完成后是这样的,zip不用下载我们的是msi。

2024-08-04 10:40:50 360

原创 【JVM内存】系统性排查JVM内存问题的思路

Non-Heap Space 翻译为非堆内存,也被称为Off-Heap(堆外内存),大家习惯于叫这部分内存为堆外内存。查看了很多国内外文章,对于这块内存,没有很统一的定义。广义上的Non-Heap除开Heap以外的所有内存,包括MetaSpace、NativeMemory(JNI Memory、Direct Memory等)、Stack、Code Cache等。下面讲解的Non-Heap是针对于广义的定义。狭义上的Non-Heap只包含Metaspace、code_cache。

2024-08-04 05:00:00 1181

原创 DDD从入门到实践

通过3.9的例子,我们可以发现,仓储用于持久化的接口里,不但包含了写kv的操作,还包含了发布领域事件等操作,这就是因为仓储是从业务逻辑角度抽象出来的接口,领域层只需要理解save这个业务操作,而不应该理解save的过程包含了落存储、发布领域事件等具体流程。实现链路可以参考3.4的例子1,在商品域中,我们的防腐层是按照如下的目录方式实现的, 领域层来定义领域层需要的防腐接口,基础设施层继承并实现防腐接口,在基础设施层直接调用其他限界上下文。两个不同颜色的商品是指两个上下文中分别进行定义的不同的实体或值对象。

2024-08-03 15:20:58 823

原创 API 接口文档 Swagger 使用指南

swagger作为一款辅助性的工具,能大大提升我们的和前端的沟通效率,接口是一个非常重要的传递数据的媒介,每个接口的签名、方法参数都非常重要。一个良好的文档非常重要,如果采用手写的方式非常容易拼写错误,而swagger可以自动化生成参数文档,这一切都加快了我们的沟通效率。并且可以替代postman的作用。实在是开发编程必备良品啊。

2024-07-26 05:15:00 714

原创 Redis工具类

【代码】Redis工具类。

2024-07-25 05:00:00 120

原创 mysql视图建立MERGE算法和TEMPTABLE算法的区别(效率与表锁定问题)

可选的ALGORITHM子句是对标准SQL的MySQL扩展。ALGORITHM可取三个值:MERGE、TEMPTABLE或UNDEFINED。如果没有ALGORITHM子句,默认算法是UNDEFINED(未定义的)。算法会影响MySQL处理视图的方式。

2024-07-24 05:15:00 1537

原创 美团超1.5万台Kafka,抗下每秒数亿消息量的挑战

这种方案的优势是它的缓存策略充分考虑了Kafka的读写特性,确保近实时的数据消费请求全部落在SSD上,保证这部分请求处理的低延迟,同时从HDD读取的数据不回刷到SSD防止缓存污染,同时由于每个日志段都有唯一明确的状态,因此每次请求目的明确,不存在因Cache Miss带来的额外性能开销。在相同的时间内,原有的方案受阻于TP4没有完成,后续所有分区都没办法完成,在新的方案中,TP4分区已经迁移到TP11分区了。因为对于实时消费而言,它一直读的是最新的数据,最新的数据按正常来说时不应该触发磁盘读的。

2024-07-23 05:00:00 1180

原创 Mysql 自定义函数

declare default ;set =;-- 查看所有的自定义函数show create function ;-- 查看指定自定义函数删除是必修课,在任何一个DDL语句drop function [if exists] ;使用自定义函数和平时使用的内部函数一样,正常调用就行。# 自定义加法函数beginend;# 使用自定义的加法函数| 6 |union all。

2024-07-23 04:30:00 711

原创 SpringBoot自定义注解 + AOP 防止重复提交

开发的项目中可能会出现下面这些情况:前端下单按钮重复点击导致订单创建多次网速等原因造成页面卡顿,用户重复刷新提交请求黑客或恶意用户使用postman等http工具重复恶意提交表单从JDK 1.5开始, Java增加了对元数据(MetaData)的支持,也就是 Annotation(注解)。注解其实就是代码里的特殊标记,它用于替代配置文件,常见的很多,有 @Override、@Deprecated等。

2024-07-22 20:50:26 683

原创 Kafka配置参数详解

1024102410241000replica.socket.receive.buffer.bytes:备份时向leader发送网络请求时的socket receive buffer。默认64。

2024-07-22 05:15:00 1058

原创 KafkaUtils工具类(java)

【代码】KafkaUtils工具类(java)

2024-07-22 05:00:00 268

原创 @ConditionalOnClass注解详解

以上表示com.example.parent.model.Test类和 org.springframework.boot.autoconfigure.amqp.RabbitAutoConfiguration都存在类路径下时才是实例化TestConfig类。其中@ConditionalOnClass(name= {“com.example.parent.model.Test”})的效果与@ConditionalOnClass(value = {Test.class})一致。TestConfig类。

2024-07-21 05:00:00 973

原创 SpringUtils

【代码】SpringUtils。

2024-07-20 05:00:00 128

原创 Java 字节数组/字符串 工具类 BytesUtils

【代码】Java 字节数组/字符串 工具类 BytesUtils。

2024-07-19 05:30:00 267

原创 java 获取中文拼音首字母(缩写)

【代码】java 获取中文拼音首字母(缩写)

2024-07-18 05:00:00 1014

day01_项目介绍和工程搭建.md

day01_项目介绍和工程搭建.md

2021-09-04

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除