自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(129)
  • 收藏
  • 关注

原创 Redis 之 布隆过滤器 与 布谷鸟过滤器

大家都知道,在计算机中IO一直是一个瓶颈,很多框架以及技术甚至硬件都是为了降低IO操作而生,今天聊一聊过滤器,先说一个场景:我们业务后端涉及数据库,当请求消息查询某些信息时,可能先检查缓存中是否有相关信息,有的话返回,如果没有的话可能就要去数据库里面查询,这时候有一个问题,如果很多请求是在请求数据库根本不存在的数据,那么数据库就要频繁响应这种不必要的IO查询,如果再多一些,数据库大多数IO都在响应这种毫无意义的请求操作,那么如何将这些请求阻挡在外呢?

2024-05-07 09:20:52 507

原创 MySQL 日期时间类型怎么选?千万不要乱用

timestamp 记录经常变化的更新 / 创建 / 发布 / 日志时间 / 购买时间 / 登录时间 / 注册时间等,并且是近来的时间,够用,时区自动处理,比如说做海外购或者业务可能拓展到海外datetime 记录固定时间如服务器执行计划任务时间 / 健身锻炼计划时间等,在任何时区都是需要一个固定的时间要做某个事情。超出 timestamp 的时间,如果需要时区必须记得时区处理UNIX timestamps 使用起来并不是很方便,至于说比较取范围什么的,timestamp 和 datetime 都能干。

2024-05-07 09:17:53 216

原创 ISBN查询图书api接口

"bookDesc": "《超级漫画素描技法:头身比篇素描》中强调素描要在一开始的时候就做好决定。要把什么东西画成什么样子呢?“把这个东西画成这个样子。"bookName": "超级漫画素描技法.基础篇","author": "林晃,松本刚彦,森田和明","clcName": "素描、速写技法","format": "16开-胶版纸","press": "中国青年出版社","pressPlace": "北京","binding": "平装","pages": "416页",伽薇 809137232。

2024-05-06 09:02:46 625

原创 如何使用 Java 读取 Excel、docx、pdf 和 txt 文件?

如何使用 Java 读取 Excel、"doc"、"docx"、"pdf" 和 "txt" 文件。在 Java 开发中,我们经常需要读取不同类型的文件,包括 Excel 表格文件、"doc" 和 "docx" 文档文件、PDF 文件以及纯文本文件。其中最常用的是 Apache POI 库。Apache POI 是一个流行的 Java 库,提供了许多 API 来读取和写入 Microsoft Office 文档,包括 Excel、Word 和 PowerPoint 等。

2024-05-06 09:01:24 636 1

原创 分布式链路追踪:TraceIdFilter + MDC + Skywalking

发起服务间调用时,需要将 MDC 中的 traceId 传递到被调用服务。对象,在原生 Runnable 对象执行前,将父线程的 MDC 设置到子线程中,在原生 Runnable 对象执行结束后,清除子线程 MDC 中的内容。在子线程执行任务前,将父线程的 MDC 内容设置到子线程的 MDC 中;会解析用户配置的 pattern 表达式,得到 pattern 中需要动态解析的占位符,比如。包中,MDC 是 slf4j 的规范,对 MDC 的所有操作都会落到。,在 logback pattern 中使用。

2024-05-06 08:58:22 736

原创 8种分布式ID生成方案汇总

对于单体系统来说,主键ID可能会常用主键自动的方式进行设置,这种ID生成方法在单体项目是可行的,但是对于分布式系统,分库分表之后,就不适应了,比如订单表数据量太大了,分成了多个库,如果还采用数据库主键自增的方式,就会出现在不同库id一致的情况,虽然是不符合业务的。

2024-04-30 09:23:13 725

原创 SQL 优化的万能小妙招!

在应用开发的早期,数据量少,开发人员开发功能时更重视功能上的实现,随着生产数据的增长,很多SQL语句开始暴露出性能问题,对生产的影响也越来越大,有时可能这些有问题的SQL就是整个系统性能的瓶颈。

2024-04-30 09:20:51 476

原创 ISBN查询图书api接口

"bookDesc": "《超级漫画素描技法:头身比篇素描》中强调素描要在一开始的时候就做好决定。要把什么东西画成什么样子呢?“把这个东西画成这个样子。"bookName": "超级漫画素描技法.基础篇","author": "林晃,松本刚彦,森田和明","clcName": "素描、速写技法","format": "16开-胶版纸","press": "中国青年出版社","pressPlace": "北京","binding": "平装","pages": "416页",伽薇 809137232。

2024-04-29 09:52:02 1028

原创 不建议你用去a.equals(b)判断是否相等!

比较时, 若a 和 b 都是null, 则返回 true, 如果a 和 b 其中一个是null, 另一个不是null, 则返回false。a 和 b 如果都是空值字符串:"", 则 a.equals(b), 返回的值是true, 如果a和b其中有一个不是空值字符串,则返回false;如果不为空,地址不同,就重要的是判断a.equals(b)。如果不相等,后面的表达式的意思是,先判断a不为空,然后根据上面的知识点,就不会再出现空指针。首先,进行了对象地址的判断,如果是真,则不再继续判断。

2024-04-29 09:50:20 358

原创 改造BeanUtils,优雅实现List数据拷贝

如果 source 或者 targetSupplier 只要有一个为 null,本工具类不像 BeanUtils 一样抛出异常,而是返回 null,因为笔者认为调用方如果把 null 进行准换,那就是想转换为 null,为不为空应该由调用方自己负责。. 这种拷贝方式是没有返回值的,jdk8 支持 stream() 操作之后,支持不是很友好,不方便 lambda 表达式的使用,因此我们决定通过集成 BeanUtils 类,自己造一个方便用的轮子。可还是有一些不够完美的地方。

2024-04-29 09:48:26 1062

原创 MySQL 巨坑:永远不要在 MySQL 中使用 UTF-8!!

UTF-8可以节省空间,在UTF-8中,字符“C”只需要8位,一些不常用的字符,比如“”需要32位。那些希望在空间和速度上双赢的用户,当他们在使用“utf8”的CHAR列时,实际上使用的空间比预期的更大,速度也比预期的慢。如果插入的字符少于定义的数量,MySQL就会在后面填充空格,如果插入的字符超过了定义的数量,后面超出部分会被截断。最简单的编码是UTF-32,每个字符使用32位。我用的是UTF-8编码的客户端,服务器也是UTF-8编码的,数据库也是,就连要保存的这个字符串“😃”也是合法的UTF-8。

2024-04-28 09:20:51 340

原创 警报炸锅了,FastJson 又立功了

前段时间新增一个特别简单的功能,晚上上线前review代码时想到公司拼搏进取的价值观临时加一行log日志,觉得就一行简单的日志基本上没啥问题,结果刚上完线后一堆报警,赶紧回滚了代码,找到问题删除了添加日志的代码,重新上线完毕。定义了一个 CountryDTO定义测试类 FastJonTest运行时报空指针错误:通过报错信息可以看出来是 序列化的过程中执行了 isChinaName()方法,这时候this.country变量为空, 那么问题来了:序列化为什么会执行isChinaName()呢。

2024-04-28 09:20:00 893

原创 为什么要手动关闭文件流?

我们深知在操作 Java 流对象后要将流进行关闭,但是现实的情况却往往不尽人意,原因是每个开发者的写法可能不尽相同,不同的写法导致出现各种千奇百怪的问题,下面我们一起来看看几种关闭流的代码案例!try {// ...操作流代码// 依次关闭流try {try {// 此处会报 java.io.IOException: Stream Closed 错误按照先后顺序关闭文件流,这种写法下,有可能会报错误。原因是依赖于,如果直接关闭流,再次关闭。

2024-04-26 09:12:06 775

原创 SpringBoot的核心内容之自动装配

不面试不知道,现在面试的问题真的是五花八门的,最近就有读者说,在面试的过程中,面试官还提到了关于最初版本的 Spring 还有 SpringMVC 以及现在的 SpringBoot 中的一些相关问题,比如他提到了这个 SpringBoot 的自动装配是什么,你是怎么理解的,今天了不起就和大家一起来看看这个关于 SpringBoot 的自动装配。

2024-04-26 09:07:55 977 1

原创 浅谈本地缓存的几种方案选型

说到缓存,面试官基本上会绕不开以下几个话题!项目中哪些地方用到了缓存?为什么要使用缓存?怎么使用它的?引入缓存后会带来哪些问题?这些问题,基本上是互联网公司面试时必问的一些问题,如果面试的时候,连缓存都不清楚,那确实多少显的有些尴尬!项目里面为什么要引入缓存?这个问题还得结合项目中的业务来回答!高性能高并发!

2024-04-25 08:52:24 670

原创 Java的栈帧和动态链接是什么?

在 Java 的面试过程中,不可避免的一个面试题那就是 JVM ,而 JVM 的面试题中,有各种,比如在堆中会被问到的关于垃圾回收机制的相关问题,在栈中会被问到入栈以及出栈的过程,今天我们就来聊一下关于栈的相关问题,比如,栈帧和动态链接指的是什么?

2024-04-25 08:50:46 791 2

原创 MyBatis 关于${}、#{}, 这个坑真不小~

对象,那么在执行第3步时,你既然已经传入了sql,则相当于这条sql会被数据库编译(数据库对sql语句的编译也是相当复杂的),所以在第4步执行的时候就不用再传入sql了,因为数据库已经知道你要执行的sql了,你只需要传入参数即可;对象的好处是,sql已经提前编译好,剩下的工作就是传入参数即可,编译好的sql可以复用,传入不同的参数,则数据库就将相应的参数填入编译好的sql。此时sql可以正确运行,但是带上传入的参数就不行了,要理解你传入的真的仅仅是参数,不要和前面的sql混了。

2024-04-24 11:16:24 759

原创 聊聊MySQL的10大经典错误,大部分人都踩过...

今天就给大家列举 MySQL 数据库中,最经典的十大错误案例,并附有处理问题的解决思路和方法,希望能给刚入行,或数据库爱好者一些帮助,今后再遇到任何报错,我们都可以很淡定地去处理。学习任何一门技术的同时,其实就是自我修炼的过程。沉下心,尝试去拥抱数据的世界!

2024-04-24 11:15:37 456

原创 微服务架构中10个常用的设计模式,建议收藏!

在现代大规模企业软件开发中,微服务架构能够帮助开发扩展规模并带来很多长期收益。但是微服务架构并不是随处可用的银弹,如果应用在错误的应用程序类型,微服务架构将弊大于利。希望采用微服务架构的开发团队应该遵循最佳实践,并使用一系列可重用的、久经锤炼的设计模式。微服务架构中至关重要的设计模式是独享数据库。实现这种设计模式具有挑战性,需要其他几种密切相关的设计模式(事件驱动、 CQRS、 Saga)来支持。

2024-04-23 17:16:33 487

原创 SpringBoot + 事务钩子函数,打造高效支付系统!

经过前面对Spring AOP、事务的总结,我们已经对它们有了一个比较感性的认知了。Spring 事务的钩子函数。单纯的讲技术可能比较枯燥乏味。接下来,我将以一个实际的案例来描述Spring事务钩子函数的正确使用姿势。/***/if (!这里又使用到了线程变量,我们在判断是否存在事务时,就是判断这个线程变量内部是否有值。那我们现在想在事务提交后触发自定义逻辑和这个有什么关系呢?我们在上面构建流水落地api的伪代码中有向内部添加了一个,内部并重写了@Override。

2024-04-23 17:15:37 886

原创 三方接口调用方案设计

为每个三方应用生成唯一的API密钥对(AK/SK),其中AK用于标识应用,SK用于进行签名和加密。AK:Access Key Id,用于标示用户。SK:Secret Access Key,是用户用于加密认证字符串和用来验证认证字符串的密钥,其中SK必须保密。通过使用Access Key Id / Secret Access Key加密的方法来验证某个请求的发送者身份。在进行接口调用时,客户端需要使用AK和请求参数生成签名,并将其放入请求头或参数中以进行身份验证。

2024-04-22 09:00:50 1011

原创 ISBN信息查询api接口

"bookDesc": "《超级漫画素描技法:头身比篇素描》中强调素描要在一开始的时候就做好决定。要把什么东西画成什么样子呢?“把这个东西画成这个样子。"bookName": "超级漫画素描技法.基础篇","author": "林晃,松本刚彦,森田和明","clcName": "素描、速写技法","format": "16开-胶版纸","press": "中国青年出版社","pressPlace": "北京","binding": "平装","pages": "416页",伽薇 809137232。

2024-04-22 08:57:45 1820

原创 Spring Boot 实现接口幂等性的 4 种方案

简单的说就是调用方在调用接口的时候先向后端请求一个全局 ID(Token),请求的时候携带这个全局 ID 一起请求(Token 最好将其放到 Headers 中),后端需要对这个 Token 作为 Key,用户信息作为 Value 到 Redis 中进行键值内容校验,如果 Key 存在且 Value 匹配就执行删除命令,然后正常执行后面的业务逻辑。这里使用防重 Token 令牌方案,该方案能保证在不同请求动作下的幂等性,实现逻辑可以看上面写的”防重 Token 令牌”方案,接下来写下实现这个逻辑的代码。

2024-04-20 09:32:58 1021

原创 Spring Boot 动态加载jar包,动态配置太强了!

同时定义了类加载器的卸载方法,卸载方法中,将已加载的类的集合中移除该类。目前数据治理服务中有众多治理任务,当其中任一治理任务有改动需要升级或新增一个治理任务时,都需要将数据治理服务重启,会影响其他治理任务的正常运行。自定义类加载器中,为了方便类的卸载,定义一个map保存已加载的类信息。为了支持业务代码尽量的解耦,把部分业务功能通过动态加载的方式加载到主程序中,以满足可插拔式的加载、组合式的部署。使用动态加载时,为了避免服务重新启动后丢失已加载的任务包,使用动态配置的方式,加载后动态更新初始化加载配置。

2024-04-20 09:30:36 335

原创 还在 MySQL 中使用枚举?小心有坑~

enum类型的字段对于0与‘0’有非常大的区别,如果你是用0当角标做操作,因它没有这个角标,所要会报错;如果你使用‘0’这个值去取枚举值,并做插入操作,你会发现它竟然会成功,但是插入的结果是一个“空”(不是null)enum类型对于php等弱语言类型的支持很差,弱语言类型打引号和不打引号的值可能是同一类型,但是对于mysql中enum类型的字段来说,那就不一定是一回事了。1.超级不推荐在mysql中设置某一字段类型为enum,但是存的值为数字,比如‘0’,‘1’,‘2’;Java代码中,枚举类。

2024-04-19 09:22:29 294

原创 你见过哪些目瞪口呆的 Java 代码技巧?

Java 是一个大体系,今天讨论并未涉及框架和架构相关知识,只是讨论如何写好代码。本文从写 Java 程序的小方面一直写到大方面,来阐述了如何才能写好 Java 程序,并告诉读者们如何才能提高自身的编码水平。我希望看到这篇文章的各位都能做一个优秀的 Java 程序员。

2024-04-19 09:21:17 961

原创 SpringBoot 监控 SQL 运行情况(实战教程)

这个过滤器的作用就是统计 web 应用请求中所有的数据库信息,比如 发出的 sql 语句,sql 执行的时间、请求次数、请求的 url 地址、以及seesion 监控、数据库表的访问次数 等等。)这个过滤器,作用就是统计 web 应用请求中所有的数据库信息,比如 发出的 sql 语句,sql 执行的时间、请求次数、请求的 url 地址、以及seesion 监控、数据库表的访问次数 等等。Druid 可以很好的监控 DB 池连接和 SQL 的执行情况,天生就是针对监控而生的 DB 连接池。

2024-04-18 08:42:28 1448

原创 Java 变得越来越像 Rust?

由于 OpenJDK 项目致力于提高开发人员的工作效率,Java 在过去 28 年中一直占据着重要的市场份额,即使不能在未来 28 年中重新夺回重要的市场份额,也有望保持这一地位。不过,多亏了现代 Java,记录类简化了这一过程,并考虑到了不变性,我们的代码也就不那么冗长了。在 Rust 中,数据默认是不可变的。我想展示两个 Rust 特性,它们是 Rust 优秀之处的一部分,然后将它们与 Java 的最新创新进行比较。随着编程技术的增强和复杂性的提升,许多编程语言也纷纷效仿,Java 也不例外。

2024-04-18 08:40:18 828

原创 微服务架构中常用的多级缓存设计,建议收藏!

今天我们来聊聊缓存这个话题,看看在微服务环境下如何设计有效的多级缓存架构。主要涉及三方面内容:Web 应用的客户端缓存;应用层静态资源缓存;服务层多级缓存。首先,咱们先讲解微服务架构的多级缓存设计。

2024-04-17 08:56:15 745

原创 浅谈几款XML文档解析工具以及优缺点

<name>博客网站</name><desc>技术学习网站</desc>

2024-04-17 08:54:01 888

原创 如何设计一个排行榜?

日常开发中,我们经常需要涉及设计排行榜的需求,如礼物排行榜、微信运动排行、王者荣耀段位排行榜等等。今天我带大家聊聊,排行榜如何设计。

2024-04-16 08:56:08 615

原创 表设计的18条军规

对于后端开发同学来说,访问数据库,是代码中必不可少的一个环节。系统中收集到用户的核心数据,为了安全性,我们一般会存储到数据库,比如:mysql,oracle等。后端开发的日常工作,需要不断的建库和建表,来满足业务需求。通常情况下,建库的频率比建表要低很多,所以,我们这篇文章主要讨论建表相关的内容。如果我们在建表的时候不注意细节,等后面系统上线之后,表的维护成本变得非常高,而且很容易踩坑。今天就跟大家一起聊聊,数据库建表的18个小技巧。

2024-04-16 08:54:43 394

原创 ISBN信息查询api接口

"bookDesc": "《超级漫画素描技法:头身比篇素描》中强调素描要在一开始的时候就做好决定。要把什么东西画成什么样子呢?“把这个东西画成这个样子。"bookName": "超级漫画素描技法.基础篇","author": "林晃,松本刚彦,森田和明","clcName": "素描、速写技法","format": "16开-胶版纸","press": "中国青年出版社","pressPlace": "北京","binding": "平装","pages": "416页",伽薇 809137232。

2024-04-15 08:59:49 1864

原创 18 张图手把手教你使用 Canal Adapter 同步 MySQL 数据到 ES8,建议收藏!

今天给大家完成的演示了一下如何将MySQL的数据通过同步到ES,功能很强大,但是实操的过程中还是会遇到很多问题的,感兴趣的小伙伴一定要自己动手实操一下,相信会有收获的。

2024-04-15 08:58:08 889 2

原创 如何检测和避免线程死锁?

线程死锁描述的是这样一种情况:多个线程同时被阻塞,它们中的一个或者全部都在等待某个资源被释放。由于线程被无限期地阻塞,因此程序不可能正常终止。如下图所示,线程 A 持有资源 2,线程 B 持有资源 1,他们同时都想申请对方的资源,所以这两个线程就会互相等待而进入死锁状态。线程死锁示意图//资源 1//资源 2try {}, "线程 1").start();try {}, "线程 2").start();Output。

2024-04-13 09:35:09 778

原创 SpringBoot:一个注解就能帮你下载任意对象

下载功能应该是比较常见的功能了,虽然一个项目里面可能出现的不多,但是基本上每个项目都会有,而且有些下载功能其实还是比较繁杂的,倒不是难,而是麻烦。所以结合之前的下载需求,我写了一个库来简化下载功能的实现❝传送门:https://github.com/Linyuzai/concept/wiki/Concept-Download❞如果我说现在只需要一个注解就能帮你下载任意的对象,是不是觉得非常的方便。

2024-04-13 09:34:11 429

原创 SpringBoot 优雅实现超大文件上传,通用方案

断点续传是在下载或上传时,将下载或上传任务(一个文件或一个压缩包)人为的划分为几个部分,每一个部分采用一个线程进行上传或下载,如果碰到网络故障,可以从已经上传或下载的部分开始继续上传或者下载未完成的部分,而没有必要从头开始上传或者下载。文件上传是一个老生常谈的话题了,在文件相对比较小的情况下,可以直接把文件转化为字节流上传到服务器,但在文件比较大的情况下,用普通的方式进行上传,这可不是一个好的办法,毕竟很少有人会忍受,当文件上传到一半中断后,继续上传却只能重头开始上传,这种让人不爽的体验。

2024-04-12 08:55:55 799

原创 面试的我 VS 真实的我,真是服了...

0203040506技术篇010203040506老板篇0102030405

2024-04-12 08:52:42 136

原创 代码是如何被被编译的?

最近需要写一个编辑扩展组件,主要功能类似于Excel的单元格编辑框,主要针对单元格输入内容的处理。要知道在Excel中,每个单元格除了可以输入文本内容(包括字符、数字、日期等)外,还有包括函数。那么在输入函数时,如果聚焦到函数(比如IF VLOOKUP)或单元格(比如A1 A2)上,都会有对应的响应,那么我们输入的文本,是如何识别到其中的函数,常量,单元格的呢?并且在被聚焦后能够做出对应的响应?

2024-04-11 09:00:39 874

原创 又踩坑了!BigDecimal使用的5个坑!

在日常开发中,BigDecimal类被广泛用于精确的数值、金额的计算。但是在使用BigDecimal的过程中,存在以下这几个坑,大家要注意一下哈~~

2024-04-11 08:59:30 417

ISBN图书基础数据资源12

图书基础数据,包含字段(ISBN、书名、作者、封面、中图法分类、价格、版次、页数、出版社、出版日期、装订、语言、字数、开本等等)

2024-04-25

ISBN图书基础数据资源11

图书基础数据,包含字段(ISBN、书名、作者、封面、中图法分类、价格、版次、页数、出版社、出版日期、装订、语言、字数、开本等等) ,

2024-04-25

ISBN图书基础数据资源10

图书基础数据,包含字段(ISBN、书名、作者、封面、中图法分类、价格、版次、页数、出版社、出版日期、装订、开本等等) 表格中含1w条图书数据

2023-07-20

ISBN图书基础数据资源9

图书基础数据,包含字段(ISBN、书名、作者、封面、中图法分类、价格、版次、页数、出版社、出版日期、装订、开本等等) 表格中含1w条图书数据

2023-07-20

ISBN图书基础数据资源8

图书基础数据,包含字段(ISBN、书名、作者、封面、中图法分类、价格、版次、页数、出版社、出版日期、装订、开本等等) 表格中含1w条图书数据

2023-07-20

ISBN图书基础数据资源7

图书基础数据,包含字段(ISBN、书名、作者、封面、中图法分类、价格、版次、页数、出版社、出版日期、装订、开本等等) 表格中含1w条图书数据

2023-07-20

ISBN图书基础数据资源6

图书基础数据,包含字段(ISBN、书名、作者、封面、中图法分类、价格、版次、页数、出版社、出版日期、装订、开本等等) 表格中含1w条图书数据

2023-07-20

ISBN图书基础数据资源5

图书基础数据,包含字段(ISBN、书名、作者、封面、中图法分类、价格、版次、页数、出版社、出版日期、装订、开本等等)

2023-07-20

ISBN图书基础数据资源4

图书基础数据,包含字段(ISBN、书名、作者、封面、中图法分类、价格、版次、页数、出版社、出版日期、装订、开本等等)

2023-07-20

ISBN图书基础数据资源3

图书基础数据,包含字段(ISBN、书名、作者、封面、中图法分类、价格、版次、页数、出版社、出版日期、装订、开本等等)

2023-07-20

ISBN图书基础数据资源2

图书基础数据,包含字段(ISBN、书名、作者、封面、中图法分类、价格、版次、页数、出版社、出版日期、装订、开本等等)

2023-07-20

ISBN图书基础数据资源1

图书基础数据,包含字段(ISBN、书名、作者、封面、中图法分类、价格、版次、页数、出版社、出版日期、装订、开本等等)

2023-07-20

空空如也

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

TA关注的人

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