攻城狮不是猫
码龄11年
关注
提问 私信
  • 博客:673,192
    673,192
    总访问量
  • 208
    原创
  • 79,329
    排名
  • 3,029
    粉丝
  • 45
    铁粉

个人简介:公众号:攻城狮不是猫,分享各种编程语言、开发技术、分布式与微服务架构、分布式数据库、分布式事务、 云原生、大数据与云计算技术和渗透技术。另外,还会分字各种视频资源,面试题和面试技巧。

IP属地以运营商信息为准,境内显示到省(区、市),境外显示到国家(地区)
IP 属地:安徽省
  • 加入CSDN时间: 2013-10-29
博客简介:

攻城狮不是猫

博客描述:
随便记录,分享
查看详细资料
  • 原力等级
    当前等级
    5
    当前总分
    1,212
    当月
    4
个人成就
  • 获得2,742次点赞
  • 内容获得95次评论
  • 获得2,633次收藏
  • 代码片获得1,144次分享
创作历程
  • 127篇
    2024年
  • 1篇
    2023年
  • 6篇
    2020年
  • 25篇
    2019年
  • 91篇
    2018年
  • 5篇
    2017年
成就勋章
TA的专栏
  • Java 面试知识汇总
    14篇
  • Java 核心知识整理
    47篇
  • Spring Boot 入门到精通
    2篇
  • Java并发多线程
    12篇
  • 分布式系统
    14篇
  • tomcat
    5篇
  • MyBatis 源码分析
    7篇
  • Redis
    5篇
  • 架构
    7篇
  • Spring
    16篇
  • linux
    7篇
  • 数据库
    5篇
  • 其他
    5篇
  • Spring Boot
    2篇
  • 数据结构算法
    3篇
  • 设计模式
TA的推广
兴趣领域 设置
  • 大数据
    mysqlredis
  • 后端
    spring架构
  • 搜索
    elasticsearch
  • 服务器
    linux
创作活动更多

2024 博客之星年度评选报名已开启

博主的专属年度盛宴,一年仅有一次!MAC mini、大疆无人机、华为手表等精美奖品等你来拿!

去参加
  • 最近
  • 文章
  • 代码仓
  • 资源
  • 问答
  • 帖子
  • 视频
  • 课程
  • 关注/订阅/互动
  • 收藏
搜TA的内容
搜索 取消

Java 开发面试题精选:Mysql 一篇全搞定

在高级Java开发工程师的面试中,MySQL作为常见的数据库技术,其掌握程度往往是评估候选人综合能力的重要组成部分。在这篇文章中,我精选了一些最可能被问到的与MySQL相关的面试题目,这些题目可以全面考察候选人的理论知识、实战经验和问题解决能力,不管你是准备求职的小伙伴,还是一名面试官,相信都能从这篇文章获取一些经验。
原创
发布博客 2024.06.11 ·
978 阅读 ·
18 点赞 ·
0 评论 ·
13 收藏

Java 开发面试题精选:Kafka 一篇全搞定

在Java开发工程师面试中,特别是涉及到Apache Kafka的部分,面试官可能会从基础知识、架构理解、实际应用、故障排查和性能优化等多个维度来考察您的能力。
原创
发布博客 2024.06.11 ·
509 阅读 ·
3 点赞 ·
0 评论 ·
6 收藏

Java 开发面试题精选:分布式锁相关一篇全搞定

例如,两个进程试图通过通信来协调它们的行为,每个进程都基于对方的行为来决定自己的下一步操作,结果可能因为同步策略不当,双方都在不停改变状态以适应对方,但实际上没有一方能够完成自己的任务。实现方式:此场景下,使用Redis作为分布式锁服务是较为常见的做法,因为它能提供快速的锁获取与释放操作,并且支持设置锁的自动过期功能,以防锁因为某些原因未被正确释放而造成死锁。解决方案:使用分布式锁,在更新配置时锁定配置项,确保所有服务实例在配置更新完成并解锁前看到的是旧配置,更新后看到的是新配置,从而维护配置的一致性。
原创
发布博客 2024.06.07 ·
506 阅读 ·
3 点赞 ·
0 评论 ·
9 收藏

Java 开发面试题精选:分布式事务一篇全搞定

总的来说,Seata 的工作原理是通过 TM 和 TC 来协调事务的执行和提交,通过 RM 来管理事务涉及的资源。总的来说,ACID 特性的本质是通过原子性、一致性、隔离性和持久性来确保事务处理的可靠性和完整性,从而保证数据的一致性和系统的稳定性,这些特性是关系型数据库管理系统(RDBMS)中事务处理的基础。需要注意的是ACID描述是单机事务场景下的事务特性,如果是在分布式场景,那么就超出了单机事务的处理范畴,需要引入分布式事务的处理机制来解决这个问题,事实上单机事务也是分布式事务的基础。
原创
发布博客 2024.06.07 ·
762 阅读 ·
13 点赞 ·
0 评论 ·
21 收藏

7. 链路日志打印实现设计

在前面的文章中,我们已经实现了一个Starter包,能够在使用作为客户端请求工具时,记录调用链路信息。在本文,将实现Jaeger框架下的链路日志打印,也就是提供一个来将Span的信息打印出来。相关版本依赖如下。0.33.04.1.01.8.1Springboot2.7.6github本文回顾了链路日志的打印格式,并定义了其对应的实体对象,最后实现了打印链路日志的Reporter。Starter包工程目录结构如下所示。
原创
发布博客 2024.05.10 ·
1090 阅读 ·
24 点赞 ·
0 评论 ·
26 收藏

6. 分布式链路追踪RestTemplate拦截器实现设计

本文将对4. 分布式链路追踪客户端工具包Starter设计一文中的的拦截器进行一个增强设计,以使得使用调用下游时,可以得到3. 分布式链路追踪的链路日志设计一文中所定义的链路日志的字段内容。相关版本依赖如下。0.33.04.1.01.8.1Springboot2.7.6github本文对的分布式链路追踪拦截器的实现进行了说明,并分析了如何提供装饰器进行功能扩展与增强。
原创
发布博客 2024.05.10 ·
1097 阅读 ·
7 点赞 ·
0 评论 ·
18 收藏

5. 分布式链路追踪TracingFilter改造增强设计

在4. 分布式链路追踪客户端工具包Starter设计一文中,我们实现了基础的Starter包,里面提供了我们自己定义的Servlet过滤器和拦截器,其中Servlet过滤器叫做,仅提供了提取,创建Span和开启Span的基础功能,所以本文将围绕如何增强Servlet过滤器展开讨论。相关版本依赖如下。0.33.04.1.01.8.1Springboot2.7.6github本文在4. 分布式链路追踪客户端工具包Starter设计的基础上,使用替换了我们自己实现的,并且基于和装饰器进行了扩展增强。
原创
发布博客 2024.05.09 ·
430 阅读 ·
4 点赞 ·
0 评论 ·
9 收藏

4. 分布式链路追踪客户端工具包Starter设计

本文将从零搭建分布式链路追踪客户端工具包的Starter,并将在后续文章中逐步丰富支持的场景。这里首先将搭建一个最基础的Starter,能提供的功能和1. 看完这篇文章我奶奶都懂Opentracing了一文中的示例demo类似。相关版本依赖如下。0.33.04.1.01.8.1Springboot2.7.6github在本文,首先实现了一个基础的Starter包,为分布式链路追踪提供了Servlet过滤器和拦截器,其次实现了一个demo,后续分布式链路追踪Starter的功能,将用该demo。
原创
发布博客 2024.05.09 ·
537 阅读 ·
5 点赞 ·
0 评论 ·
6 收藏

3. 分布式链路追踪的链路日志设计

分布式链路追踪的客户端实现中,我们会通过各种手段和规则得到一个又一个的Span,得到这些Span后,需要在分布式链路追踪的服务端这边汇总这些Span并拼接出一条请求链路,那么这里就存在一个问题,客户端得到的Span如何给到服务端,通常是会在每个Span调用finish()方法时将Span发送给服务端,这里的发送有多种形式,例如把Span主动的push到Kafka的Topic,还例如把Span当作一条日志打印出来再由Filebeat采集,我们的本系列文章中,就选择将Span以链路日志。
原创
发布博客 2024.05.08 ·
807 阅读 ·
11 点赞 ·
0 评论 ·
3 收藏

2. 外婆都称赞的基于Jaeger的Span模型改造

我们的目标是基于Jaeger来实现分布式链路追踪的Java客户端工具包,实际就是一个Springboot的Starter,在1. 看完这篇文章我奶奶都懂Opentracing了一文中我们详细的学习了一下的相关概念以及阅读了相关的源码,同时特别重要的是我们还知道了为我们造了很多轮子,这些轮子大部分时候都是可以直接用的,我们只需要指定具体的实现框架例如Jaeger和提供相应的扩展点例如Span装饰器,我们就能够造出来我们自己的轮子。那么毫无疑问的,我们的分布式链路追踪的Java客户端工具包,会按照规范并使用。
原创
发布博客 2024.05.08 ·
1067 阅读 ·
34 点赞 ·
0 评论 ·
25 收藏

看完这篇文章我奶奶都懂Opentracing了 (三)

三. 扩展点分析通过前面的分析我们了解到,对分布式链路追踪中的各种概念进行了统一的定义,某种程度上,已经成为分布式链路追踪的规范。在语言中,定义了诸如和等概念对应的接口,不同的分布式链路实现方需要结合具体的实现方案来提供相应实现,例如本文选择的,其提供的实现了接口,实现了接口等。现在接口定义已经有了,具体的实现也有了,该怎么用起来呢。在本文的示例中,具体的使用案例就是我们提供的拦截器,以及过滤器,那么问题就来了,为什么我知道可以这么用,是因为我比较聪明吗,那必然不是,当然是。
原创
发布博客 2024.05.07 ·
672 阅读 ·
13 点赞 ·
0 评论 ·
19 收藏

看完这篇文章我奶奶都懂Opentracing了 (二)

二. 概念分析。
原创
发布博客 2024.05.07 ·
847 阅读 ·
8 点赞 ·
0 评论 ·
9 收藏

看完这篇文章我奶奶都懂Opentracing了(一)

如果要基于开发分布式链路追踪Java客户端工具包,首先肯定需要了解中的各种概念,包括但不限于Span和Scope等,其实这些概念在的官方文档中是有比较详尽的说明的,英文不好也能靠着机器翻译读得通,但是读得通不代表读得懂,从来没有接触过分布式链路追踪的人就算把官方文档通读完,整体的概念还是显得比较抽象,所以本文作为入门,旨在让从来没接触过分布式链路追踪的人也能理解中的各种概念,为后续阅读相关源码和自行实现分布式链路追踪客户端工具包打好基础。本文会从一个简单的例子入手,结合相关场景和源码实现,阐述中的。
原创
发布博客 2024.05.07 ·
1281 阅读 ·
9 点赞 ·
0 评论 ·
6 收藏

搞懂TomcatJdbc之连接池初始化

TomcatJdbc数据库连接池最初是设计来用于替代,但现在TomcatJdbc数据库连接池更多是与Druid和HikariCP数据库连接池进行比较,尽管扩展性不及Druid,性能不及HikariCP,但TomcatJdbc数据库连接池依旧有较为广泛的使用,这主要得益于其简单的配置和简洁的代码实现。本文将对TomcatJdbc数据库连接池的初始化源码进行分析,Tomcat版本为9.0.82。通过init()方法,我们可以总结如下几点。连接池的默认配置在中。TomcatJdbc。
原创
发布博客 2024.04.30 ·
576 阅读 ·
3 点赞 ·
0 评论 ·
7 收藏

搞懂TomcatJdbc之连接归还

正所谓有借有还,当业务线程从TomcatJdbc数据库连接池获取到连接并使用完毕后,随即就应该将借出的连接归还回去。本文将结合源码,分析TomcatJdbc数据库连接池的连接的归还实现。Tomcat版本为9.0.82。所谓借出连接,其实就是从TomcatJdbc的idle队列中获取一个连接,这个借出的连接在被业务线程使用的同时,也会同时被放在busy队列中。那么归还连接,其实就是把连接从busy队列移除然后再放回idle队列,我们也可以通过配置为true来让连接被归还到idle。
原创
发布博客 2024.04.30 ·
1008 阅读 ·
10 点赞 ·
0 评论 ·
30 收藏

搞懂TomcatJdbc之连接获取

当我们使用类似于MyBatis等ORM框架来执行一条SQL时,其中一步就是会从数据库连接池里获取一个连接,了解从数据库连接池获取连接的过程,对于排查SQL耗时问题具有很大的帮助。本文将针对TomcatJdbc数据库连接池获取连接的源码进行学习,Tomcat版本为9.0.82。TomcatJdbc接口访问超时引发的思考搞懂TomcatJdbc之连接池初始化TomcatJdbc获取连接的整个流程图示意如下。链接:https://juejin.cn/post/7309158089374335027。
原创
发布博客 2024.04.30 ·
238 阅读 ·
5 点赞 ·
0 评论 ·
8 收藏

搞懂TomcatJdbc之连接校验

TomcatJdbc数据库连接池中的连接,会在被使用的各个阶段进行校验,以确保连接是一个有效可用的连接。本文将结合TomcatJdbc连接校验相关配置和源码,对连接校验的原理进行学习,Tomcat版本为9.0.82。TomcatJdbc接口访问超时引发的思考搞懂TomcatJdbc之连接池初始化搞懂TomcatJdbc之连接获取TomcatJdbc有着较为完善且灵活的连接校验机制,在获取连接归还连接创建连接和连接空闲时都提供了配置来决定是否进行校验。对于获取连接校验,开启条件是配置为true。
原创
发布博客 2024.04.30 ·
868 阅读 ·
14 点赞 ·
0 评论 ·
22 收藏

SpringBoot统一结果返回,统一异常处理,大牛都这么玩

当实现统一结果返回时,需要创建一个通用的响应对象,定义成功和失败的返回情况,并确保在接口中使用这个通用返回对象。@Setter@Getter/*** 接口响应状态码*//*** 接口响应信息*//*** 接口响应的数据*/统一结果返回的关键之一是规定一套通用的状态码。这有助于客户端更容易地理解和处理 API 的响应,同时也为开发者提供了一致的标准。200 OK:表示成功处理请求。:表示成功创建资源。:表示成功处理请求,但没有返回任何内容。:客户端请求错误。:未授权访问。
原创
发布博客 2024.04.30 ·
2491 阅读 ·
46 点赞 ·
0 评论 ·
28 收藏

十年经验竟不懂Springboot日志

日志,是开发中熟悉又陌生的伙伴,熟悉是因为我们经常会在各种场合打印日志,陌生是因为大部分时候我们都不太关心日志是怎么打印出来的,因为打印一条日志,在我们看来是一件太平常不过的事情了,特别是在宇宙第一框架Springboot的加持下,日志打印是怎么工作的就更没人关注了。但是了解日志框架怎么工作,以及学会Springboot怎么和Log4j2或Logback等日志框架集成,对我们扩展日志功能以及优雅打印日志大有好处,甚至在有些场景,还能通过调整日志的打印策略来提升我们的系统吞吐量。所以本文将以。
原创
发布博客 2024.04.30 ·
580 阅读 ·
12 点赞 ·
0 评论 ·
29 收藏

一个 url 就把人家网站克隆了?

今天瞧见了一个开源库,,根据它的描述,这个简单的应用程序可以将屏幕截图转换为代码(HTML/Tailwind CSS、React、Bootstrap 或 Vue)。它使用 GPT-4 Vision 生成代码,并使用 DALL-E 3 生成外观相似的图像。更加逆天的是,现在是你只要输入一个 URL,他就给你把人家网站克隆了。
原创
发布博客 2024.04.29 ·
372 阅读 ·
5 点赞 ·
0 评论 ·
5 收藏
加载更多