Data Lab

Data Lab

前言

CSAPP 这本书买了好几年,最近抽出一些时间开始重头读这本书,发现这些基础知识比较重要,边看书边跟着视频课程过了一遍,有些东西还是比较模糊。本文开始做 CSAPP Lab 实验,加强巩固书的内容。

Read more
Spring 的复杂类型注入
深入理解 synchronized 关键字

深入理解 synchronized 关键字

如果某一个资源被多个线程共享,为了避免因为资源抢占导致资源数据错乱,我们需要对线程进行同步,那么synchronized就是实现线程同步的关键字,是用来保证被锁定了代码同一时间只能有一个线程执行,那么synchronized关键字的实现原理是怎样的呢?

Read more
DDD领域驱动设计|基础篇

DDD领域驱动设计|基础篇

前言

DDD 全称为 Domain-Driven Design,中文叫领域驱动设计,是一套应对复杂软件系统分析和设计的面向对象建模方法论。

基本概念

DDD 的核心知识体系概念特别多,具体包括:领域、子域、核心域、通用域、支撑域、限界上下文、实体、值对象、聚合和聚合根等概念。

软件架构模式的演进

Dubbo SPI源码分析

Dubbo SPI源码分析

对于一个优秀的框架需要很好的扩展性,给出一个接口,自己可以给出默认实现,同时也允许其他人实现拓展。即“对扩展开放,对修改封闭”的原则。Dubbo 采用微内核+插件的方式来实现,微内核架构中,内核通常采用 Factory、IoC、OSGi 等方式管理插件生命周期,Dubbo 最终决定采用 SPI 机制来加载插件,Dubbo SPI 参考 JDK 原生的 SPI 机制,进行了性能优化以及功能增强。

Read more
Understanding Object Oriented Programming

Understanding Object Oriented Programming

这是一篇很早的文章,讲的关于面向对象,原文地址:Understanding Object Oriented Programming。这里有关于这篇文章的评论如此理解面向对象编程,很有有趣。我觉得这篇作为一篇入门讲面向对象的例子还是很不错的,通过不同的例子讲述了不同人的实现想法。最后用策略模式+工厂模式来实现,来达到消除if-else。

Read more
Let's build a Full-Text Search engine

Let's build a Full-Text Search engine

这是一篇转载文章原文地址,原文讲述如何构建一个全文搜索引擎,用的 Go 实现的,本来想翻译一下,顺便用 Java 实现一下,由于翻译出来比较生硬,还是把原文放出来,顺便把我用 Java 实现的版本放在链接中Java实现版本

Read more
Go项目笔记

Go项目笔记

前言

最近在公司有开始接触 Go 的项目,想系统的学习一下。相对来说 Go 的语法还是比较简单,很容易上手。快速看完两本入门书,想找一些偏项目的书来看,发现目前国内还是比较少。然后翻了一下培训机构的教程,感觉也不是很好,偶然在油管上看到这个教程 Backend master class,感觉讲的不错,就把这个教程整理出来。

介绍

这是一个从设计、开发到部署的完整的 Go 项目,使用 PostgreSQL、Golang 和 Docker,这个项目主要来构建一个简单的银行系统,主要提供一下功能:

Read more
Apache RocketMQ开发者指南

Apache RocketMQ开发者指南

RocketMQ是一个分布式消息和流数据平台,具有低延迟、高性能、高可靠性、万亿级容量和灵活的可扩展性。RocketMQ是2012年阿里巴巴开源的第三代分布式消息中间件,2016年11月21日,阿里巴巴向Apache软件基金会捐赠了RocketMQ;第二年2月20日,Apache软件基金会宣布Apache RocketMQ成为顶级项目。

Read more
Go语言入门笔记

Go语言入门笔记

Go语言是Google开发的一种静态强类型、编译型、并发型,并具有垃圾回收功能的编程语言,它用批判吸收的眼光,融合C语言、Java等众家之长,将简洁、高效演绎得淋漓尽致。

Read more