pgnozxzkp4mgq_社区达人页

个人头像照片
pgnozxzkp4mgq
已加入开发者社区782

勋章 更多

个人头像照片
专家博主
专家博主
个人头像照片
星级博主
星级博主
个人头像照片
技术博主
技术博主
个人头像照片
初入江湖
初入江湖

成就

已发布126篇文章
3条评论
已回答0个问题
0条评论
已发布0个视频
github地址

我关注的人 更多

技术能力

兴趣领域
擅长领域
技术认证

暂时未有相关云产品技术能力~

暂无个人介绍

暂无精选文章
暂无更多信息

2022年05月

  • 05.28 21:51:34
    发表了文章 2022-05-28 21:51:34

    设计模式系列2 - 工厂模式

    主要讲述工厂模式,以及实际应用的场景,基于java。 看这篇文章前,最好能先看完上一篇文章“设计模式系列1”,因为知识有依赖关系。
  • 05.28 21:48:43
    发表了文章 2022-05-28 21:48:43

    设计模式系列1 - 模板模式&策略模式

    之前一直做业务,写代码基本也都是if...else,设计模式虽然很早就知道(研究生期间把4人帮的那本《设计模式》都看了3遍),但是没有实际去写这块代码,所有总有一种雾里探花的感觉,然后时间一长,有的模式就忘记了,真遇到代码需要去重构时,或者看别人代码,还得查一下资料,“哦,原来是用的这个设计模式,对上号了”。所以这次我打算结合具体的业务场景,将常用的设计模式全部整理出来,主要是不想再眼高手低,以后代码重构时,各种设计模式能信手拈来,那么我的目的就达成了哈。
  • 05.28 21:45:28
    发表了文章 2022-05-28 21:45:28

    消息队列系列4 - 原理初探之RocketMQ

    RocketMQ是一个纯Java、分布式、队列模型的开源消息中间件,前身是MetaQ,是阿里参考Kafka特点研发的一个队列模型的消息中间件,后开源给apache基金会成为了apache的顶级开源项目,具有高性能、高可靠、高实时、分布式特点。
  • 05.28 21:38:48
    发表了文章 2022-05-28 21:38:48

    消息队列系列3 - 原理初探之RabbitMQ

    RabbitMQ是使用Erlang语言来编写的,并且RabbitMQ是基于AMQP协议的。Erlang语言在数据交互方面性能优秀,有着和原生Socket一样的延迟,这也是RabbitMQ高性能的原因所在。可谓“人如其名”,RabbitMQ像兔子一样迅速。
  • 05.28 21:32:24
    发表了文章 2022-05-28 21:32:24

    消息队列系列2 - 原理初探之Kafka

    Kafka 是由Linkedin公司开发的,它是一个分布式的,支持多分区、多副本,基于Zookeeper的分布式消息流平台,它同时也是一款开源的基于发布订阅模式的消息引擎系统。
  • 05.28 21:24:53
    发表了文章 2022-05-28 21:24:53

    消息队列系列1 - 如何选型

    消息队列目前主要2种模式,分别为“点对点模式”和“发布/订阅模式”。
  • 05.28 21:21:38
    发表了文章 2022-05-28 21:21:38

    多机分布式执行异步任务的实现姿势

    执行异步任务时,比如需要处理10W个订单,如果是PHP,我们一般会配置一个定时任务,然后该定时任务就会在单机上执行;如果是GO或者JAVA,我们也需要使用相应的策略,保证该任务只在单机上执行,比如分布式锁。可能有同学会问,我直接在多机上执行同一个任务不行么,我只想说,你胆子真大,当多机同时处理一条数据,你会死的很惨的。
  • 05.28 20:53:14
    发表了文章 2022-05-28 20:53:14

    ETCD教程-4.深入ETCD

    目前etcd主要经历了3个大的版本,分别为etcd 0.4版本、etcd 2.0版本和etcd 3.0版本。
  • 05.28 20:43:35
    发表了文章 2022-05-28 20:43:35

    如何用Redis实现分布式锁

    前面的文章都是理论知识,写多了头有点大,突然想写点实战方面的内容,刚好最近公司在做异步任务迁移,用到了分布式锁和任务分片,所以打算写2篇实战方面的文章,分别介绍分布式锁和任务分片的实现方式,这个在实际项目中,应该会经常用到,今天这篇文章就先讲解分布式锁的实现方式。
  • 05.28 20:40:09
    发表了文章 2022-05-28 20:40:09

    ETCD教程-3.ETCD体验

    以MAC系统为例,讲述2种按照方法,第一种很简单,是Mac自带的
  • 05.28 20:26:57
    发表了文章 2022-05-28 20:26:57

    ETCD教程-2.Raft协议

    脑裂情况其实只是异常情况的一种,当Leader通知Follower更新日志、Leader提交更新时,都存在各种异常情况导致的问题,这个我就不再详述了,具体可以参考《云原生分布式存储基石-etcd深入解析》书中的“1.4.3 异常情况”这一章,里面讲述的比较清楚。
  • 05.28 20:19:50
    发表了文章 2022-05-28 20:19:50

    ETCD教程-1.ETCD介绍

    etcd是一个Go言编写的分布式、高可用的一致性键值存储系统,用于提供可靠的分布式键值存储、配置共享和服务发现等功能
  • 05.28 20:18:38
    发表了文章 2022-05-28 20:18:38

    Go限流的常见方法

    最近做的项目需要对系统设计并发控制和流控,刚好趁这个时间,把Go的并发控制和限流策略整体梳理一下,因为篇幅原因,本章只整理限流方面的内容,后面再整理Go的并发控制内容。
  • 05.28 20:12:29
    发表了文章 2022-05-28 20:12:29

    Go语言核心手册-14.结语&参考文献

    对于该手册里面的很多内容,我是直接将不同地方的知识直接Copy过来,然后加上自己的理解,所以里面很多知识并非原创,但是这些重要知识,散落在不同的地方,我就把它们整体汇聚起来,当大家发现里面的相关知识是你之前看过的某篇文章,这个千万不要感到奇怪。最后,对于这个手册,希望学习Go的同学都可以看看,特别是刚工作不久的同学,应该会对你们有很大帮助。
  • 05.28 20:09:56
    发表了文章 2022-05-28 20:09:56

    Go语言核心手册-13.sync.Once

    在很多时候,我们需要依据Do方法的这两个特点来设计与之相关的流程,以避免不必要的程序阻塞和功能缺失。
  • 05.28 20:08:09
    发表了文章 2022-05-28 20:08:09

    Go语言核心手册-12.sync.Pool

    pool在掌握基础用法的同时,需要知道Get和Push方法的实现逻辑,其中最重要的一点,是需要将pool和GMP的调度原理结合起来,其中两者的P的原理其实是一样的,只是对于资源抢占这一块,GMP抢占的是G,pool抢占的是pool数据,对于这块,其实是自己个人的理解,如果理解的不对,还请大家帮忙指出。
  • 05.28 20:02:47
    发表了文章 2022-05-28 20:02:47

    Go语言核心手册-11.context.Context

    我们今天主要讨论的是context包中的函数和Context类型,该包中的函数都是用于产生新的Context类型值的,Context类型是一个可以帮助我们实现多goroutine 协作流程的同步工具,不但如此,我们还可以通过此类型的值传达撤销信号或传递数据。
  • 05.28 19:54:58
    发表了文章 2022-05-28 19:54:58

    Go语言核心手册-10.原子操作

    原子值类型的优势很明显,但它的使用规则也更多一些。首先,在首次真正使用后,原子值就不应该再被复制了。其次,原子值的Store方法对其参数值(也就是被存储值)有两个强制的约束。一个约束是参数值不能为nil。另一个约束是,参数值的类型不能与首个被存储值的类型不同。也就是说,一旦一个原子值存储了某个类型的值,那它以后就只能存储这个类型的值了。最后在扩展知识中,提出了几条使用建议,包括:不要对外暴露原子变量、不要传递原子值及其指针值、尽量不要在原子值中存储引用类型的值等。
  • 05.28 19:47:05
    发表了文章 2022-05-28 19:47:05

    Go语言核心手册-9.互斥锁

    本章的内容不多,主要需要注意互斥锁和读写锁的几条注意事项,读写锁其实就是更细粒度的锁划分,为了能让程序更好并发,上面已经讲述的非常清楚,这里就不再啰嗦。唯一再强调的一点,无论是互斥锁还是读写锁,我们都不要试图去解锁未锁定的锁,因为这样会引发不可恢复的 panic。
  • 05.28 19:45:00
    发表了文章 2022-05-28 19:45:00

    Go语言核心手册-8.sync.WaitGroup

    WaitGroup是开箱即用和并发安全的,可以通过它很方便地实现一对多goroutine协作流程,即:一个分发子任务的goroutine,和多个执行子任务的goroutine,共同来完成一个较大的任务。在使用WaitGroup值的时候,我们一定要注意,千万不要让其中的计数器的值小于0,否则就会引发 panic。另外,我们最好用“先统一Add,再并发Done,最后Wait”这种标准方式,来使用WaitGroup值, 尤其不要在调用Wait方法的同时,并发地通过调用Add方法去增加其计数器的值,因为这也有可能引发 panic。
  • 05.28 16:28:19
    发表了文章 2022-05-28 16:28:19

    Go语言核心手册-7.通道

    本章基本都是干货,上面总结的比较全面,这里就不再重复了,如果你能回答我提的这些问题,你应该就掌握了本章的内容: • 发送和接收时,分别有哪些情况会导致channel阻塞呢? • 对于发送和关闭channel,有哪些情况会导致panic呢? • 当channel关闭后,继续读取里面的数据,能读取到么?如何保证数据读取完毕呢? • 对于生产者和消费者模型,如何才能优雅关闭channel,避免写channel导致的panic呢? • for-range读取channel数据,对于channel关闭和未关闭的情况,是如何处理的呢?会存在阻塞情况么? • 使用select时,有哪些注意事项呢?你知道se
  • 05.28 15:30:48
    发表了文章 2022-05-28 15:30:48

    Go语言核心手册-6.GMP原理

    协程跟线程是有区别的,线程由CPU调度是抢占式的,协程由用户态调度是协作式的,一个协程让出CPU后,才执行下一个协程。
  • 05.28 15:21:08
    发表了文章 2022-05-28 15:21:08

    Go语言核心手册-5.接口

    一个接口类型定义了一套方法,如果一个具体类型要实现该接口,那么必须实现接口类型定义中的所有方法。
  • 05.26 22:54:40
    发表了文章 2022-05-26 22:54:40

    Go语言核心手册-4.结构体&方法

    对于这一章内容,“匿名字段”用的非常多,它是其声明中只有类型而没有名称的字段,可以以一种很自然的方式为被嵌入的类型带来新的属性和能力。不过,我们需要小心可能产生“屏蔽”现象的地方,尤其是当存在多个嵌入字段或者多层嵌入的时候,“屏蔽”现象可能会让你的实际引用与你的预期不符。另外,你一定要梳理清楚值方法和指针方法的不同之处,包括这两种方法各自能做什么、不能做什么以及会影响到其所属类型的哪些方面。这涉及值的修改、方法集合和接口实现。
  • 05.26 22:28:04
    发表了文章 2022-05-26 22:28:04

    Redis 6 的多线程

    昨天和同事聊Redis,他问我Redis学的怎么样,我说学的还行,然后他突然问一句“你知道Redis现在已经支持多线程了吗?”,我当时愣了一下,Redis不是一直是单线程么,怎么突然支持多线程了?瞬间感觉被秒,赶紧回来查阅一下相关资料,要不然以后都不敢说自己会Redis了
  • 05.26 21:01:27
    发表了文章 2022-05-26 21:01:27

    Go语言核心手册-3.字典

    对于map的使用,大家肯定都会,所以基础的知识讲解的不多,主要是对map的底层结构进行了详细的讲解,正所谓知其然,必知其所以然!对于map的底层结构设计,感觉有些意思,特别是对于它的hash方式(取前N位和后M位),再结合它的扩容和缩容,其实可以从中提炼一些共性的东西。然后对于Rehash,这个和Redis的Rehash原因一样,这块应该是业内的通用设计方法,感兴趣的同学可以看看redis的字典结构和它rehash的方法。
  • 05.26 20:58:13
    发表了文章 2022-05-26 20:58:13

    Go语言核心手册-2.数组和切片

    数组初始化方式常用的有3种,至于其它的用的很少,就不用管了
  • 05.26 20:54:18
    发表了文章 2022-05-26 20:54:18

    Go语言核心手册-1.字符串

    ASCII是英文“American Standard Code for Information Interchange”的缩写,中文译为美国信息交换标准代码,它是由美国国家标准学会(ANSI)制定的单字节字符编码方案,它使用单个字节(byte)的二进制数来编码一个字符。
  • 发表了文章 2022-05-30

    MySQL 主从,6 分钟带你掌握!

  • 发表了文章 2022-05-30

    肝了一个月的 DDD,一文带你掌握!(二)

  • 发表了文章 2022-05-30

    肝了一个月的 DDD,一文带你掌握!(一)

  • 发表了文章 2022-05-30

    缓存穿透、缓存击穿、缓存雪崩

  • 发表了文章 2022-05-30

    消息队列原理和选型:Kafka、RocketMQ 、RabbitMQ 和 ActiveMQ

  • 发表了文章 2022-05-30

    如何保障 MySQL 和 Redis 的数据一致性?

  • 发表了文章 2022-05-30

    拜托!面试请不要再问我 @Transactional

  • 发表了文章 2022-05-30

    Raft 协议原理详解,10 分钟带你掌握!

  • 发表了文章 2022-05-30

    只会单机执行定时任务?多机执行 yyds!

  • 发表了文章 2022-05-30

    只会用传统开发模式?10分钟教你玩转敏捷!

  • 发表了文章 2022-05-30

    配置中心原理和选型:Disconf、Apollo、Spring Cloud Config 和 Nacos

  • 发表了文章 2022-05-30

    注册中心原理和选型:Zookeeper、Eureka、Nacos、Consul和Etcd(二)

  • 发表了文章 2022-05-30

    注册中心原理和选型:Zookeeper、Eureka、Nacos、Consul和Etcd(一)

  • 发表了文章 2022-05-30

    如何啃下JVM这座大山,完结撒花!(三)

  • 发表了文章 2022-05-30

    如何啃下JVM这座大山,完结撒花!(二)

  • 发表了文章 2022-05-30

    如何啃下JVM这座大山,完结撒花!(一)

  • 发表了文章 2022-05-30

    Zookeeper用作注册中心的原理

  • 发表了文章 2022-05-30

    RPC框架:从原理到选型,一文带你搞懂RPC(三)

  • 发表了文章 2022-05-30

    RPC框架:从原理到选型,一文带你搞懂RPC(二)

  • 发表了文章 2022-05-30

    RPC框架:从原理到选型,一文带你搞懂RPC(一)

正在加载, 请稍后...
滑动查看更多
正在加载, 请稍后...
暂无更多信息
正在加载, 请稍后...
暂无更多信息