自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 后端核心技术知识导航

面试旺季笔者也收到很多读者的私信,所以笔者就对近期不断更新迭代补充的Java核心知识点进行一个导航汇总。,实时获取笔者最新的技术推文同时还能和笔者进行深入交流。,同时我的公众号也有我精心整理的。

2024-03-02 15:11:50 751 1

原创 JVM进阶专栏汇总(周更)

这里面会有笔者精心挑选的并发、JVM、MySQL数据库专栏,也有笔者日常分享的硬核技术小文。,同时我的公众号也有我精心整理的。

2024-01-28 11:17:51 999

原创 MySQL进阶专栏(周更)

这是截至今日写过的文章汇总,对于关注笔者公众号有一段时间的读者都知道,笔者会每周对自己写过的文章整理至相关专栏,以便读者可以按需进行检索阅读。,这里面会有笔者精心挑选的并发、JVM、MySQL数据库专栏,也有笔者日常分享的硬核技术小文。,同时我的公众号也有我精心整理的。

2024-01-27 11:23:58 496

原创 Java并发编程进阶面试题专栏导航(周更)

这是笔者目前为止整理的并发编程,笔者后续会在每个周末进行周期性的补充和迭代,欢迎读者进行补充指正。,这里面会有笔者精心挑选的并发、JVM、MySQL数据库专栏,也有笔者日常分享的硬核技术小文。,同时我的公众号也有我精心整理的。

2024-01-07 16:20:19 1243

原创 记Windows环境下JDK安装配置

因为近期收到很多读者的私信,所以也专门创建了一个交流群,感兴趣的读者可以通过上方的公众号获取笔者的联系方式完成好友添加,点击备注。因为近期收到很多读者的私信,所以也专门创建了一个交流群,感兴趣的读者可以通过上方的公众号获取笔者的联系方式完成好友添加,点击备注。解压版之后,步入其文件夹内部即可看到JDK的一系列文章夹,这其我们唯一需要了解的就是。的环境变量,键入我们的JDK8的安装目录,以笔者为例对应的路径就是。的配置了,该决定指向基本类库的文件夹路径,我们手动创建。环境变量的配置,我们点击。

2024-06-14 08:52:51 385 1

原创 内网环境MySQL操作非正常耗时问题排查小结

当网络操作出现非正常耗时时,我们就需要从网络连接通信过程的角度进行覆盖式排查,即从客户端连接、网络路由、端口或者防火墙配置、当前网络服务程序配置等顺序进行逐一排查。因为近期收到很多读者的私信,所以也专门创建了一个交流群,感兴趣的读者可以通过上方的公众号获取笔者的联系方式完成好友添加,点击备注。因为近期收到很多读者的私信,所以也专门创建了一个交流群,感兴趣的读者可以通过上方的公众号获取笔者的联系方式完成好友添加,点击备注。服务器配置进行反向解析,正是这样一个不可达的操作直至超时,等待长时间后的。

2024-06-12 08:13:53 882

原创 为什么使用Java8中的并行流运算耗时变长了?

近期对迭代的功能进行压测检查,发现某些使用并发技术的线程任务耗时非常漫长,结合监控排查定位到的并行流使用上的不恰当,遂以此文分享一下笔者发现的问题。这里笔者先简单介绍一下当前功能的使用背景,当前功能是一些大数据量的计算密集型任务定时执行,在常规优化效率有限的情况下,考虑到复用性,笔者通过。去提升线程数并不会带来提升,所以在笔者结合业务场景通过压测计算出每个定时任务的耗时,大约是5分钟,所以笔者通过调整定时任务的执行间隔由原来的。创建定量的线程,后续的我们的并行流运算的执行都会提交到该线程池中。

2024-06-11 09:00:24 845

原创 基于Gdb快速上手调试Redis

因为近期收到很多读者的私信,所以也专门创建了一个交流群,感兴趣的读者可以通过上方的公众号获取笔者的联系方式完成好友添加,点击备注。因为近期收到很多读者的私信,所以也专门创建了一个交流群,感兴趣的读者可以通过上方的公众号获取笔者的联系方式完成好友添加,点击备注。对于不需要的断点,我们可以用d指令进行删除,例如断点2即对swap函数的断点我们不需要,可直接键入。工具不同,终端调试工具无法一眼看到所有的代码,如果我们希望看到当前的代码信息,需要通过l即。

2024-06-07 09:04:42 595

原创 详解redis单线程设计思路

的设计者就采用单线程来处理十万级别的内存操作,通过单线程极致的压榨和利用多路复用机制,简化的实现的复杂度确保redis的实现更专注的数据结构设计的单个动作操作的优化,也保证后续的问题追踪和排查难度大大降低,后续也可以针对性的对单个慢操作点进行针对性定位和优化,由此思路实现一个综合性的网络内存数据库最佳方案。因为近期收到很多读者的私信,所以也专门创建了一个交流群,感兴趣的读者可以通过上方的公众号获取笔者的联系方式完成好友添加,点击备注。和键值对读写操作的内存数据库,本文将从源码的角度剖析一下。

2024-06-04 08:41:38 30

原创 来聊聊Redis中的字符串对象的设计

因为近期收到很多读者的私信,所以也专门创建了一个交流群,感兴趣的读者可以通过上方的公众号获取笔者的联系方式完成好友添加,点击备注。因为近期收到很多读者的私信,所以也专门创建了一个交流群,感兴趣的读者可以通过上方的公众号获取笔者的联系方式完成好友添加,点击备注。这种编码格式的字符串就是专门用于存储这种短字符串的,进行字符串足够小,所以在进行内存空间分配时,类型的字符串,进行内存空间时需要两次的分配过程,无论在内存管理还是对象操作上都没有。进行了详细的介绍了,而本文我将从顶层的视角来聊聊。

2024-05-31 09:18:17 23

原创 来聊聊Redis简单动态字符串SDS

sds数组自身通过buf字段记录字符数组,通过len记录当前字符串长度,以及通过free记录当前buf数组的空闲空间,那么问题来了为什么会有free这个字段呢?假设我们使用sds创建一个空间为5的数组,操作过程中修改了字符串内容将字符串Redis改为Res,sds的做法除了修改buf数组的字符串以外,还会同步的维护长度len和free字段,通过free字段的维护确保后续分配2个字符串可以直接利用现有内存而无需在创建全新的数组存放字符的操作,这也就是所谓的惰性释放的设计思想:对于这段结构的定义,我们可以。

2024-05-29 09:05:45 28

原创 聊聊我是如何调试redis源码的

因为近期收到很多读者的私信,所以也专门创建了一个交流群,感兴趣的读者可以通过上方的公众号获取笔者的联系方式完成好友添加,点击备注。因为近期收到很多读者的私信,所以也专门创建了一个交流群,感兴趣的读者可以通过上方的公众号获取笔者的联系方式完成好友添加,点击备注。官方仓库给出的提示,redis默认情况下采用jemalloc 进行编译和链接,所以对于上述问题我们可以直接采用指令。源码解读系列的开篇,感兴趣的读者可以按照笔者的配置步骤搭建一套。两个文件配置,tasks.json配置如下,只需指定编译的。

2024-05-28 09:55:39 902

原创 用go语言实现一个有界协程池

基于上图我们给出worker的接口定义,按照我们的实现每一个任务都是一个worker,协程池的协程可以从channel中得到对应的Worker并执行其TaskTask()

2024-05-27 08:30:00 665

原创 聊聊go语言对于socket的抽象

因为近期收到很多读者的私信,所以也专门创建了一个交流群,感兴趣的读者可以通过上方的公众号获取笔者的联系方式完成好友添加,点击备注。因为近期收到很多读者的私信,所以也专门创建了一个交流群,感兴趣的读者可以通过上方的公众号获取笔者的联系方式完成好友添加,点击备注。的对应协程挂起,反之若收到新连接则基于内核函数封装成一个。的实现,其本质就是调用accept方法获取就绪的。即可和笔者和笔者的朋友们进行深入交流。

2024-05-23 08:59:57 806

原创 聊聊Go语言中的networkpoller工作机制

因为近期收到很多读者的私信,所以也专门创建了一个交流群,感兴趣的读者可以通过上方的公众号获取笔者的联系方式完成好友添加,点击备注。因为近期收到很多读者的私信,所以也专门创建了一个交流群,感兴趣的读者可以通过上方的公众号获取笔者的联系方式完成好友添加,点击备注。自此我们完整的将Go语言中的networkpoller的设计和源码都分析完成了,希望对你有帮助。方法,就可以看到我们上图所说明的状态修改和协程入队的操作,它通过。当我们和客户端建立连接之后,我们的客户端协程就会调用连接对象的。

2024-05-22 10:55:18 928

原创 基于sharding-jdbc拓展点实现复杂分库分表算法

我们的案例是为了采集不同地区的电话号码用户的信息,希望相同号头的电话号码会落到同一张分表上,例如我们现在有分表3张,有一个电话号码10658888,我们必须截取到1065和分表数进行取模运算得到分表名user_0。

2024-05-21 08:33:35 869

原创 聊聊go语言基于epoll的网络并发实现

处理,而边缘触发为避免这种频繁在用户态到内核态的开销,如果当前IO数据没处理完,则等待下一次IO数据就绪后再处理,所以这种模式就要求应用程序必须一次性将数据读取完成,在应用层面进行处理。因为近期收到很多读者的私信,所以也专门创建了一个交流群,感兴趣的读者可以通过上方的公众号获取笔者的联系方式完成好友添加,点击备注。因为近期收到很多读者的私信,所以也专门创建了一个交流群,感兴趣的读者可以通过上方的公众号获取笔者的联系方式完成好友添加,点击备注。获取就绪的事件,基于这些事件定位到对应的。

2024-05-20 08:30:00 870

原创 协程是否越多越好

协程设计的初衷就是线程用后即焚,所以从业角度考虑,假设我们开大量协程执行耗时任务,这就会导致单位时间内有大量的协程都活跃与内存中,无法做到即用即毁,随着时间的推移就看你会把内存资源耗尽。从一个Java程序员的角度出发,大部分都认为协程应该可以向线程一样通过池化进行复用,但是我们不推荐这种做法,因为go语言本身就内置对协程池化的管理机制,并且协程的使用初衷就是即用即毁,避免池化,所以这个方案我们不推荐。以上便是笔者对于协程创建的量的问题的思考和总结,希望对你有帮助。即可和笔者和笔者的朋友们进行深入交流。

2024-05-16 08:29:11 468

原创 聊一聊Spring为什么需要三级缓存

我们可以在:即单例缓存Map,其内部存储的都是以bean的名称为key,已经完全创建的bean作为value的Map。:该缓存都bean的工厂方法,可能有些读者不太理解,我们就以上文的AService为例,在Spring进行每一个bean初始化时,都会为这个bean封装一个工厂方法用于bean的创建,这一点笔者也会在后续的代码中提及,这里我们只需要知道这个缓存是以bean的名称作为key,创建该bean的工厂方法为value的Map即可。:其内部缓存的都是未完全完成创建的bean,就比如某个。

2024-05-15 08:43:07 317

原创 安利一个轻量级流程引擎compileflow

经评审后得出明确复杂系统的实现思路,由此绘制出流程图,但真正落地时因为每个开发不同的习惯总会导致实现会有所偏差,使得系统流程串联时会出现各种各样的问题,通过流程引擎界定业务边界后并约定开发规范,以及业务逻辑的可视化,大大降低了业务设计和开发的成本。接下来我们再来看看每个节点的配置,先来看看循环节点,它定义了集合变量的变量名和类型等信息,后续我们调用该流程引擎时,传入的集合就需要是。几种比较常见的使用,先来一个比较基础的平方根计算,流程比较简单,传入一个参数后,给出对应的开平方结果。

2024-05-14 09:41:03 956

原创 sharding-jdbc如何实现分页查询

但由于每个结果集的记录是有序的,因此ShardingSphere每次比较仅获取各个分片的当前结果集记录,驻留在内存中的记录仅为当前路由到的分片的结果集的当前游标指向而已。分表分页查询则比较粗暴,它会将对应分页及之前的数据全部查询来,然后进行排序,跳过对应页码的数据后,再取出对应量级的数据返回。数据的深分页查询发现,它的做法和我们上文源码所说的一致,就是将当前页以及之前的结果全部加载到内存中,所以笔者认为使用。逻辑和之前差不多,就是通过轮询优先队列中的每一组分表对象的队首元素,将其存到。

2024-05-10 09:54:33 1127

原创 聊聊go语言对于协程并发的设计

为了保证全局队列中新建的协程能够被及时执行,它设定了从全局队列获取协程的时机,从而保证执行一段时间后会主动到全局队列获取最新协程,这一点笔者会在后文的源码分析中再次提及,这里读者先了解的这个设计思路即可。因为近期收到很多读者的私信,所以也专门创建了一个交流群,感兴趣的读者可以通过上方的公众号获取笔者的联系方式完成好友添加,点击备注。因为近期收到很多读者的私信,所以也专门创建了一个交流群,感兴趣的读者可以通过上方的公众号获取笔者的联系方式完成好友添加,点击备注。我们先来说说上文所说的主动挂起,对应的源码在。

2024-05-09 08:30:00 992

原创 来聊聊Java项目分层规范

因为近期收到很多读者的私信,所以也专门创建了一个交流群,感兴趣的读者可以通过上方的公众号获取笔者的联系方式完成好友添加,点击备注。因为近期收到很多读者的私信,所以也专门创建了一个交流群,感兴趣的读者可以通过上方的公众号获取笔者的联系方式完成好友添加,点击备注。很明显,这种做法虽然保证了层级分明,但是为了所谓的规范却耗费开发大量精力进行对象转化,明显降低了开发的效率。近期和读者交流聊到项目规范,借着这个机会我们不妨聊聊主流Java项目是如何进行分层的。以上便是笔者对于项目分层规范的总结,希望对你有帮助。

2024-05-08 08:30:00 625

原创 一文快速掌握高性能内存队列Disruptor

通过数组构成一个循环队列,它在初始化时就固定了存储空间,按照局部性原理,一次即可加载批量的元素到缓存行中,结合CPU的分支预测机制,因为数组的顺序加载规律分支预测器可以非常高效的预测并缓存下一条指令从而快速获取到数组中的下一个元素,这就是。因为近期收到很多读者的私信,所以也专门创建了一个交流群,感兴趣的读者可以通过上方的公众号获取笔者的联系方式完成好友添加,点击备注。的所有创建和配置工作,注入环形队列,我们的服务就可以投递的消息了,这里我们给出对应的。此时基于等待策略等待就绪事件的对应的。

2024-05-07 11:22:15 866

原创 用Go实现一个无界资源池

因为近期收到很多读者的私信,所以也专门创建了一个交流群,感兴趣的读者可以通过上方的公众号获取笔者的联系方式完成好友添加,点击备注。因为近期收到很多读者的私信,所以也专门创建了一个交流群,感兴趣的读者可以通过上方的公众号获取笔者的联系方式完成好友添加,点击备注。听起来很像是Java的无界线程池,接下来我们就基于这个需求实现一个版本。以上便是笔者对于无界资源池的实现思路,希望对你有帮助。即可和笔者和笔者的朋友们进行深入交流。即可和笔者和笔者的朋友们进行深入交流。,是个不断在硬核技术上作死的。

2024-05-06 08:30:00 692

原创 用Go语言实现一个单协程消费者模型

本文会给基于我们之前所学的知识进行一个综合的实践,通过单个协程实现一个生产者生产者模式,希望能够让你对go语言的开发有着更深刻的理解和掌握。因为近期收到很多读者的私信,所以也专门创建了一个交流群,感兴趣的读者可以通过上方的公众号获取笔者的联系方式完成好友添加,点击备注。因为近期收到很多读者的私信,所以也专门创建了一个交流群,感兴趣的读者可以通过上方的公众号获取笔者的联系方式完成好友添加,点击备注。提供给外部启动的我们的消费者,该方法会直接监听操作系统的中断信号,并启动协程开始执行。

2024-04-28 08:30:00 909

原创 基于Go语言的网络IO扫盲

自此我们完成了对于网络IO模型的扫盲,接下来我们就基于go语言的API实现一个简单的高性能网络交互程序,代码如下,可以看到只需我们进行连接监听和读写操作都是采用go语言封装好的上层函数,对于epoll等IO模型go语言会在编译时根据操作系统信息自行决定,而我们只需基于这些函数获取连接,并将连接交给协程处理即可实现一个高性能的。很明显这种一连接一线程的设计如果遇到建立连接后很少进行数据收发的连接的情况,不仅会导致宝贵的线程资源浪费,在高并发的场景还会导致。对网络交互进行的高度的抽象,这使得我们进行。

2024-04-26 09:32:18 975

原创 一文快速上手Sharding-JDBC

是一款比较轻量级的分库分表框架,它使用客户端直连数据库,通过jar包形式提供服务,通过对数据源进行增强实现分库分表逻辑实现,同时它也很市面上的各种ORM框架完全兼容,所以就会以一个简单的用户查询的给出。的数据源信息,可以看到除了必要的账号密码以外,还有就是分库分表算法了,以笔者本次的示例来说,仅需要分表算法,所以仅仅通过通过。对应我们的也给出对应的核心代码示例,自此我们就将。

2024-04-25 09:22:28 820

原创 聊聊go语言中的GMP模型

因为近期收到很多读者的私信,所以也专门创建了一个交流群,感兴趣的读者可以通过上方的公众号获取笔者的联系方式完成好友添加,点击备注。因为近期收到很多读者的私信,所以也专门创建了一个交流群,感兴趣的读者可以通过上方的公众号获取笔者的联系方式完成好友添加,点击备注。对每一个线程的利用都做到的极致的压榨,一旦线程对应协程队列为空时,且全局的协程队列也为空的时候,当前处理器p就会采取。的工作流程后,我们就可以通过源码的方式印证这个问题,首先来看看处理器模型的源码,通过。这里我们不妨看看从全局队列获取协程的源码。

2024-04-24 08:30:00 568

原创 go语言如何实现协程的抢占式调度的?

实现协程并发,为了避免单协程持续持有线程导致线程队列中的其他协程饥饿问题,设计者提出了一个抢占式调度机制,本文会基于一个简单的代码示例对抢占式调度过程进行深入讲解剖析。因为近期收到很多读者的私信,所以也专门创建了一个交流群,感兴趣的读者可以通过上方的公众号获取笔者的联系方式完成好友添加,点击备注。因为近期收到很多读者的私信,所以也专门创建了一个交流群,感兴趣的读者可以通过上方的公众号获取笔者的联系方式完成好友添加,点击备注。假设我们的协程没有进行额外的函数调用,是否就意味着当前协程的线程不能被抢占呢?

2024-04-23 08:30:00 820

原创 聊聊大厂面试中一道库存管理问题

以上便是笔者关于6个库存管理线程进行库存操作的设计思路,即通过将商品的互斥操作进行水平拆分,从而降低6个线程间的冲突以提升程序的执行性能,当然这个问题可能还会涉及内存操作的拓展,例如假如我们的商品操作会从多个维度查询定位,为保证查询和扣减的性能,我们可能会将商品信息加载到内存中,此时我们就需要通过。基于这个锁的方案我们给出新的一套代码示例,最终执行时间变成3秒,当然从目前来看性能提升不算是特别明显,因为当前管理的商品不是很多,随着库存商品的增加,我们的。假定我们认为商品是多个,且不定时新增,对应的库存表。

2024-04-22 08:30:00 29

原创 go语言是如何实现协程的

因为近期收到很多读者的私信,所以也专门创建了一个交流群,感兴趣的读者可以通过上方的公众号获取笔者的联系方式完成好友添加,点击备注。因为近期收到很多读者的私信,所以也专门创建了一个交流群,感兴趣的读者可以通过上方的公众号获取笔者的联系方式完成好友添加,点击备注。的精华就在于协程的设计,只有理解协程的设计思想和工作机制,才能确保我们能够完全的利用协程编写强大的并发程序。自此我们从go语言底层实现的角度完整的剖析的协程与线程的关系和实现,希望对你有帮助。记录整个foo1函数的高低地址,假设我们当前的协程。

2024-04-19 08:30:00 805

原创 聊聊go语言中的内存填充

在进行不同的内存填充的时候,不同类型变量都着不同的对齐系数,例如布尔和int32对应的内存系统为1和4,以下图为例,布尔的对齐系统为1就意味着它的内存空间首地址能被1整除,所以我们分配为。因为近期收到很多读者的私信,所以也专门创建了一个交流群,感兴趣的读者可以通过上方的公众号获取笔者的联系方式完成好友添加,点击备注。因为近期收到很多读者的私信,所以也专门创建了一个交流群,感兴趣的读者可以通过上方的公众号获取笔者的联系方式完成好友添加,点击备注。字节,原因很简单,bool为1字节,填充首位。

2024-04-18 09:08:24 668

原创 基于Windows打造属于个人的Linux子系统

总的来说WSL对于笔者的日常开发带来不少便利,通过在Windows系统下安装一个Linux子系统简化了一些个人日常的开发和部署调试工作,提高了笔者的生产力,也希望对你有帮助。因为近期收到很多读者的私信,所以也专门创建了一个交流群,感兴趣的读者可以通过上方的公众号获取笔者的联系方式完成好友添加,点击备注。因为近期收到很多读者的私信,所以也专门创建了一个交流群,感兴趣的读者可以通过上方的公众号获取笔者的联系方式完成好友添加,点击备注。即可和笔者和笔者的朋友们进行深入交流。即可和笔者和笔者的朋友们进行深入交流。

2024-04-17 08:30:00 915

原创 深入理解go语言中的切片

本文通过切片的创建结合汇编码了解的切片底层数据结构和创建过程,再通过代码示例结合源码的方式了解了切片的动态扩容机制,了解切片在扩容时如何在空间和时间上实现折中,希望对你有帮助。都说切片会动态扩容,这里我们创建一个容量为10的切片,在容量以内添加元素,其容量和size都没有变化,一旦追加元素就会触发扩容,可以看到此时已用。因为近期收到很多读者的私信,所以也专门创建了一个交流群,感兴趣的读者可以通过上方的公众号获取笔者的联系方式完成好友添加,点击备注。若新的长度大于容量的2倍则判断旧的容量是否超。

2024-04-16 08:34:52 597

原创 来聊聊某大厂面试常聊的Spring生命周期

因为近期收到很多读者的私信,所以也专门创建了一个交流群,感兴趣的读者可以通过上方的公众号获取笔者的联系方式完成好友添加,点击备注。因为近期收到很多读者的私信,所以也专门创建了一个交流群,感兴趣的读者可以通过上方的公众号获取笔者的联系方式完成好友添加,点击备注。生命周期的文章,文章行为生涩,于是抽空再次进行复盘整理了这篇关于。对于源码的阅读,大部分答案其实都可以在注释中得到答案,所以对于。对应的我们也给出整个生命周期的核心图解,可以看到实例化会调用。即可和笔者和笔者的朋友们进行深入交流。

2024-04-15 09:23:55 3357

原创 解决IDEA打开java项目出现橙色j无法运行

近期看到很多新人接手一些上古老项目,打开看到的Java文件都是显示橙色J,不知道如何调整项目结构并完成编译启动,所以笔者就以此文章整理一下IDEA配置和启动老项目的方式。因为近期收到很多读者的私信,所以也专门创建了一个交流群,感兴趣的读者可以通过上方的公众号获取笔者的联系方式完成好友添加,点击备注。因为近期收到很多读者的私信,所以也专门创建了一个交流群,感兴趣的读者可以通过上方的公众号获取笔者的联系方式完成好友添加,点击备注。即可和笔者和笔者的朋友们进行深入交流。即可和笔者和笔者的朋友们进行深入交流。

2024-04-15 08:30:00 4338

原创 聊聊Go语言中的字符串

字符类型是开发中最常用到的类型,不同的语言有着不同的实现,这篇文章我们来聊聊go语言的字符串类型,本文会从go语言底层实现的角度分析字符串的设计与实现,相信读者通过对本文的阅读会对go语言中字符的实现有着不错的理解和掌握。因为近期收到很多读者的私信,所以也专门创建了一个交流群,感兴趣的读者可以通过上方的公众号获取笔者的联系方式完成好友添加,点击备注。因为近期收到很多读者的私信,所以也专门创建了一个交流群,感兴趣的读者可以通过上方的公众号获取笔者的联系方式完成好友添加,点击备注。

2024-04-12 08:44:03 981

原创 go语言是如何解决map并发安全问题的?

常说go语言是一门并发友好的语言,对于并发操作总会在编译期完成安全检查,所以这篇文章我们就来聊聊go语言是如何解决map这个数据结构的线程安全问题。Hi,我是 sharkChili ,是个不断在硬核技术上作死的 java coder ,是 CSDN的博客专家 ,也是开源项目 Java Guide 的维护者之一,熟悉 Java 也会一点 Go ,偶尔也会在 C源码 边缘徘徊。写过很多有意思的技术博客,也还在研究并输出技术的路上,希望我的文章对你有帮助,非常欢迎你关注我的公众号: 写代码的SharkChili

2024-04-11 08:41:28 846

原创 Go语言企业级日志管理

这里也补充一下为什么可以用异或运算符拼接配置的原因,因为这些日志参数的常量都会对应一个不同的二进制数,通过不同的二进制数对应到不同的配置项从而生成日志配置。即使系统没有任何表现,程序也可能会有一些潜藏的隐患,所以通过日志来监控程序的运行就显得尤为重要,对此笔者便基于此文来聊聊go语言中的日志的配置和使用。的三个配置决定日志的输出目的地,前缀、格式,如下所示,对应的日志就是不输出,且前缀为Trance,格式为。如果我们希望打印的错误显示异常的堆栈信息,我们可以通过。即可和笔者和笔者的朋友们进行深入交流。

2024-04-10 08:30:00 1021

空空如也

空空如也

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

TA关注的人

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