谈谈1974
码龄3年
  • 246,638
    被访问
  • 228
    原创
  • 6,277
    排名
  • 226
    粉丝
  • 8
    铁粉
关注
提问 私信

个人简介:火萎了,我也准备走了

  • 加入CSDN时间: 2019-08-08
博客简介:

谈谈1974

博客描述:
空就是空,没有佛系不成猿
查看详细资料
  • 5
    领奖
    总分 1,013 当月 85
个人成就
  • 获得318次点赞
  • 内容获得116次评论
  • 获得585次收藏
创作历程
  • 25篇
    2022年
  • 49篇
    2021年
  • 69篇
    2020年
  • 85篇
    2019年
成就勋章
TA的专栏
  • Kafka 源码笔记
    12篇
  • Java 并发
    7篇
  • Spring 使用及备忘
    8篇
  • Spring 源码分析
    21篇
  • 规范设计
    4篇
  • Tomcat 源码分析
    5篇
  • Apollo 配置中心源码分析
    2篇
  • Redis 源码阅读笔记
    13篇
  • Netty 源码分析
    6篇
  • 响应式编程
    1篇
  • MyBatis
    11篇
  • JVM
    16篇
  • Java 基础
    31篇
  • Linux
    7篇
  • Redis
    19篇
  • 分布式
    12篇
  • 数据库
    11篇
  • 工具配置
    12篇
  • Web 基础
    16篇
  • 细节备忘
    6篇
  • 随笔
    10篇
  • IDEA
    7篇
  • 网络安全
    1篇
  • 缓存
    4篇
  • 树
    5篇
  • Android Telephony
    5篇
  • 算法
    36篇
  • 数组
    15篇
  • 双指针
    9篇
  • 字符串
    4篇
  • 动态规划
    6篇
  • 回溯
    3篇
  • 排序
    5篇
  • 链表
    7篇
  • 栈
    3篇
兴趣领域 设置
  • Java
    javaspring
  • 数据结构与算法
    推荐算法
  • 大数据
    mysqlredis
  • 后端
    spring
  • 人工智能
    tensorflow聚类分类
  • 服务器
    linux
  • 最近
  • 文章
  • 资源
  • 问答
  • 帖子
  • 视频
  • 课程
  • 关注/订阅/互动
  • 收藏
搜TA的内容
搜索 取消

SkyWalking 实现跨线程 Trace 传递

在进程内采用异步多线程时,如果不做任何处理,SkyWalking 追踪执行链路的 trace 信息必然会出现中断。一般来说保证执行链路信息的完整是刚性需求,这时候为了实现 trace 信息的跨线程传递,就需要使用 SkyWalking 的异步任务包装类SkyWalking 的 Java 客户端提供了异步任务包装类用于完成多线程下 trace 的跨线程传递功能,目前有如下几个实现:以 为例,其使用示例如下:1.2 跨线程包装类的原理1.2.1 @TraceCrossThread 注解以下为 Suppl
原创
发布博客 2022.06.22 ·
87 阅读 ·
0 点赞 ·
0 评论

Java 同步锁性能优化方案

性能优化的需求实现中,如果使用了多线程并行来提高程序运行效率,那么一个很难绕开的部分就是。同步锁会将多线程并行执行强制合流为串行执行,通常会成为整个程序的性能瓶颈所在,所以锁性能的优化必不可少。一般来说,优化锁性能的关键如下:要降低锁竞争发生的概率,一个非常直观的思路是,核心思想是将大的全局锁分割为一个个范围精确的小锁,使线程的竞争对象从全局锁变更为小锁,从而减少锁竞争发生这种思想的典型实践就是通常所说的,实现上就是将全部数据分割成多个部分,为每个部分分配一把锁,而不是使用一把锁锁住全部数据。分段锁应用场景
原创
发布博客 2022.06.21 ·
94 阅读 ·
0 点赞 ·
0 评论

Java 关于 Lock#lock() 的加锁位置

最近在做项目的性能优化,需要将原本单线程跑的程序改造成多线程并行以提高性能。然而业务资源池子是定量的,多线程并行势必涉及到共享资源抢占的问题,。这种需求采用同步锁是毋庸置疑的,但是在加锁的位置上却有一些细节,例如加锁操作是否可以放在 try 代码块里面呢?先给出结论,加锁操作推荐放在 try 代码块外部第一行,以下是 JDK 文档 给出的 Lock 使用示例,可以注意到两点:2.1 加锁在 try 内部可能的问题以下是将加锁操作放在 try 内部的代码示例,仔细考虑就能发现问题点:2.2 加锁在 tr
原创
发布博客 2022.06.11 ·
118 阅读 ·
0 点赞 ·
1 评论

Java 最优雅方式校验时间段重叠

项目开发过程中经常碰到需要校验一连串时间段是否有重叠的问题,通常直观的解决方式是采用两层循环,从头至尾依次将集合中的时间段元素两两比较即可得出结果。这种方式虽然可行,但从实现上来看着实算不上优雅,只是能 work 而已。笔者花了一些时间分析,发现要校验时间段是否重叠其实只需要一点反向思维,即。基于此,以下用两个时间段 和 为例子进行分析:2. 解决方案经过上一节分析,3 种情况在笔者脑海中想到的处理方式是,于是最终有了以下方案:.........
原创
发布博客 2022.06.10 ·
204 阅读 ·
0 点赞 ·
2 评论

Docker 使用-常用命令备忘

Docker 中比较关键的概念是与,容器基于镜像而创建,但是一旦容器创建运行之后与镜像就没有太大依赖了,二者的关系可理解如下:执行 命令可搜索 nginx 的镜像,示例如下执行 默认拉最新版本的 nginx 镜像,示例如下 命令用于管理本地的镜像,常用 OPTIONS 参数如下表格在已有镜像的基础上进行修改更新,这部分读者如感兴趣可参考 Docker 使用-将容器打成镜像 ,此处不再赘述获取到镜像文件后,需要使用 命令基于镜像创建容器才能使程序运行起来,以下是创建一个 nginx 容器并启动的示例,该
原创
发布博客 2022.05.31 ·
125 阅读 ·
0 点赞 ·
0 评论

Docker 使用-将容器打成镜像

文章目录前言1. 容器打成镜像过程示例2. 镜像打包2.1 镜像打包为 tar 文件示例使用2.2 从 tar 文件载入镜像示例使用前言工作中遇到三方闭源的中间件运行起来某项特性不符合需求,但是镜像提供方偏偏又没有将配置文件挂载出来以供修改,这就导致要使软件符合需求地运行只能进入到容器内部修改配置文件后重启,可谓非常之蛋疼。笔者平时对 Docker 接触不多,好在有同事提到 Docker 支持将运行中的容器重新打包为镜像,于是网上搜索资料,大致整理出以下步骤解决上面的问题,故有本文聊作记录进入运
原创
发布博客 2022.05.28 ·
223 阅读 ·
0 点赞 ·
0 评论

算法-移除目标元素

文章目录1. 原地移除元素2. 解法1. 原地移除元素给定一个数组 nums 和一个值 val,原地移除所有数值等于 val 的元素,并返回移除后数组的新长度,leetcode 链接不要使用额外的数组空间,必须仅使用 O(1) 额外空间并原地修改输入数组。元素的顺序可以改变,不需要考虑原数组中超出新长度后面的元素2. 解法使用双指针遍历目标数组,慢指针只在 nums[i] != val 的时候才向前移动,并将快指针指向的元素赋值到慢指针位置,最终返回慢指针指向的下标位置即为新数组长度pu
原创
发布博客 2022.05.22 ·
111 阅读 ·
0 点赞 ·
0 评论

Kafka 3.0 源码笔记(12)-Kafka 服务端分区异常恢复机制的源码分析

文章目录1. HW 同步机制的问题1.1 数据丢失问题1.2 主从数据不一致2. Kafka 的异常恢复机制2.1 解决数据丢失问题2.2 解决数据不一致问题3. 异常恢复原理源码分析3.1 LeaderEpoch 的维护更新3.1.1 分区 Leader 当选时的更新3.1.2 消息写入时的维护3.2 异常恢复的处理1. HW 同步机制的问题在 Kafka 3.0 源码笔记(10)-Kafka 服务端消息数据的主从同步源码分析 中,笔者介绍了消息数据在主从副本之间同步的流程,从中可以知道主从同步的核心
原创
发布博客 2022.05.16 ·
305 阅读 ·
1 点赞 ·
0 评论

算法-搜索插入位置

文章目录1. 搜索插入位置2. 解法1. 搜索插入位置给定一个升序无重复元素的数组和一个目标值,在数组中找到目标值,并返回其索引下标。如果目标值不存在于数组中,返回它将会被按顺序插入的位置,必须使用时间复杂度为 O(log n) 的算法,leetcode 链接示例1输入: nums = [1,3,5,6],target = 5输出: 2示例 2输入: nums = [1,3,5,6], target = 2输出: 12. 解法这道题简单明了的解法其实就是有序数组二分查找
原创
发布博客 2022.04.30 ·
241 阅读 ·
0 点赞 ·
0 评论

Kafka 3.0 源码笔记(11)-Kafka 服务端分区副本失败选主的源码分析

文章目录1. 分区副本选主的流程2. 源码分析2.1 BrokerRegistration 请求的处理2.1.1 BrokerRegistration 请求的发起2.1.2 BrokerRegistration 请求的处理2.2 BrokerHeartbeat 请求的交互2.2.1 BrokerHeartbeat 请求的发起2.2.2 BrokerHeartbeat 请求的处理1. 分区副本选主的流程Kafka 为了保证某些集群节点宕机的情况下对外的消息生产消费功能的可用性,实现了一套失败转移机制,
原创
发布博客 2022.04.29 ·
1406 阅读 ·
0 点赞 ·
0 评论

Kafka 3.0 源码笔记(10)-Kafka 服务端消息数据的主从同步源码分析

文章目录前言1. 消息数据主从同步的流程2. 消息数据主从同步源码分析2.1 元数据变动的发布2.2 变动元数据的消费应用2.3 主从副本的消息数据同步前言Kafka 3.0 源码笔记(9)-Kafka 服务端元数据的主从同步 中笔者在文章的末尾提到了元数据主从同步完成后,元数据的变动被 broker 模块监听处理后才能对集群产生影响,本文实际上就是以创建 Topic 功能为引子,从消息数据分区副本主从同步的场景来分析这个过程。结合 Kafka 的整个设计实现来看,创建 Topic 后,整个消息生产消费
原创
发布博客 2022.04.08 ·
2136 阅读 ·
1 点赞 ·
0 评论

Kafka 3.0 源码笔记(9)-Kafka 服务端元数据的主从同步

文章目录前言1. 元数据主从同步的流程1.1 两次 Fetch 完成 HW 同步1.2 一次 Fetch 完成 HW 同步2. 元数据主从同步源码分析2.1 Follower 节点 Fetch 请求的发起2.2 Leader 节点对 Fetch 请求的处理2.3 Follower 节点对 Fetch 响应的处理前言在 Kafka 3.0 源码笔记(8)-Kafka 服务端对创建 Topic 请求的处理 中笔者分析介绍了 Kafka 集群的 Leader 节点更新保存元数据的流程,而元数据保存下来后必然要
原创
发布博客 2022.04.04 ·
2176 阅读 ·
1 点赞 ·
0 评论

Spring 设置跨源资源共享(CORS)

文章目录背景1. Spring 解决方式:设置 CORS2. CORS 的前世今生2.1 CSRF 跨站请求伪造漏洞2.2 浏览器同源策略的产生2.3 跨源资源共享 CORS 的实现2.3.1 简单请求2.3.2 预检请求背景新起的项目需要前后端对接,联调时前端在浏览器窗口请求后端接口出现异常,浏览器控制台报出以下信息。由于当前主流的前后端分离架构,前端项目和后端项目通常不在同一个站点,所以在浏览器上很容易出现这个问题has been blocked by CORS policy: No 'Acc
原创
发布博客 2022.03.27 ·
678 阅读 ·
1 点赞 ·
0 评论

Kafka 3.0 源码笔记(8)-Kafka 服务端集群 Leader 对 CreateTopics 请求的处理

文章目录前言1. Controller 处理请求的流程2. 源码分析2.1 事件生成2.2 事件消费2.3 创建 topic 时的分区分配2.4 业务执行结果处理前言在 Kafka 3.0 源码笔记(5)-Kafka 服务端 Controller 集群选举的流程 中笔者详细分析了 Controller 集群启动时的选主流程,而 Controller 的主节点在确定后需要对外提供服务,其中最重要的就是接受请求并维护集群的元数据。本文将以 Kafka 最常用的 Topic创建场景来分析 Controller
原创
发布博客 2022.03.26 ·
1487 阅读 ·
2 点赞 ·
0 评论

Linux 零拷贝机制的实现原理

文章目录前言1. DMA 的引入1.1 早期的文件 IO 处理过程1.2 DMA 发挥的作用2. 文件传输场景的技术实现2.1 传统 read / write 文件传输实现2.2 文件传输实现的改进2.2.1 虚拟内存映射 mmap / write 传输实现2.2.2 sendfile 实现的文件传输2.2.3 sendfile 结合 SG-DMA 实现的零拷贝前言所谓零拷贝并不是不复制数据,而是减少不必要的数据复制,甚至杜绝 CPU 参与的数据复制,进而将 CPU 从数据传输的工作负载中释放出来,提
原创
发布博客 2022.03.18 ·
1205 阅读 ·
1 点赞 ·
0 评论

Kafka 3.0 源码笔记(7)-Kafka 服务端对客户端的 Produce 请求处理

文章目录1. 前言2. 源码分析1. 前言在Kafka 3.0 源码笔记(6)-Kafka 生产者的源码分析 中笔者分析了作为客户端的 Producer 生产消息的主要动作,本文则着重分析 Kafka 服务端对于客户端生产消息的 Produce 请求的处理。这部分实际上比较简单,笔者在 Kafka 3.0 源码笔记(4)-Kafka 服务端对客户端的 Fetch 请求处理 已经介绍了 Kafka 服务端的文件存储结构以及读取消息数据的主要脉络,服务端写入消息的流程与之相比没有太大出入2. 源码分析
原创
发布博客 2022.03.12 ·
2032 阅读 ·
1 点赞 ·
0 评论

算法-最大子数组和

文章目录1. 最大子数组和问题2. 解法1. 最大子数组和问题给定一个整数数组 nums ,找出一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和,leetCode 原题示例输入:nums = [-2,1,-3,4,-1,2,1,-5,4]输出:6解释:连续子数组 [4,-1,2,1] 的和最大,为 62. 解法动态规划法从左往右遍历数组,使用 dp[i] 表示直到当前下标的最大数组和,则可以简单推导出当 dp[i-1] <= 0 时,之前的累加和dp[i-1
原创
发布博客 2022.03.06 ·
151 阅读 ·
0 点赞 ·
0 评论

算法-查找单调元素

文章目录1. 无序数组查找单调元素2. 解法1. 无序数组查找单调元素在无序不重复的数组中寻找满足如下条件的元素:该值左边的数均小于它该值右边的数均大于它例如给定数组 {2,5,3,7,101,18},其中元素7 的左边元素都小于它,而右边的元素都大于它,故符合条件。如不存在符合条件的元素则返回 -12. 解法根据要求可将符合条件的元素作为锚点把数组分为两个部分,则这个元素不仅要是左半部分的最大值,还要是右半部分的最小值。 基于此,借助额外数组从右往左逆序记录目标数组截至每个下标的最
原创
发布博客 2022.02.27 ·
128 阅读 ·
0 点赞 ·
0 评论

算法-接雨水问题

1. 柱子接雨水问题给定 n 个非负整数表示每个宽度为 1 的柱子的高度图,计算按此排列的柱子,下雨之后能接多少雨水,leetcode 原题输入:height = [0,1,0,2,1,0,1,3,2,1,2,1]输出:6解释:上面是由数组 [0,1,0,2,1,0,1,3,2,1,2,1] 表示的高度图,在这种情况下,可以接 6 个单位的雨水(蓝色部分表示雨水)2. 解法2.1 双指针双指针分别指向数组两侧,取最小值作为水位值。此时忽略头尾中间的所有柱子,则头尾之间已经形成了坑洼,从
原创
发布博客 2022.02.23 ·
933 阅读 ·
1 点赞 ·
0 评论

2021,溯洄从之

文章目录前言1. 工作与生活2. 博客状况2.1 Kafka 源码分析2.2 Tomcat 框架相关2.3 MyBatis 相关源码分析2.4 Apollo 客户端源码学习3. 未来期许前言2021 年是笔者作为程序员工作的第四年,也是疫情时代的第三年。这一年其实也没有什么特别,印象深刻的是年底的时候深圳又出现了疫情病例,有点担心不能回家过年。人心真是矛盾,既讨厌回家过年走亲戚的应酬,又觉得不回家过年对家人过意不去,责任在肩。有时候笔者回望过去的时间,想着如果自己没有在 2019 年的九月份就裸辞到深
原创
发布博客 2022.02.19 ·
832 阅读 ·
1 点赞 ·
0 评论
加载更多