码农架构

LV2
发表了文章

为什么说堆排序没有快速排序快?

我们今天讲另外一种特殊的树,“堆”(Heap)。堆这种数据结构的应用场景非常多,最经典的莫过于堆排序了。堆排序是一种原地的、时间复杂度为 O(nlogn) 的排...

码农架构
Java微服务架构架构设计系统架构
发表了文章

里式替换(LSP)跟多态有何区别?哪些代码违背了LSP?

整体上来讲,这个设计原则是比较简单、容易理解和掌握的。今天我主要通过几个反例,带你看看,哪些代码是违反里式替换原则的?我们该如何将它们改造成满足里式替换原则?除...

码农架构
发表了文章

业务开发常用的基于贫血模型的MVC架构违背OOP吗?

我们学习了面向对象的一些理论知识,比如,面向对象四大特性、接口和抽象类、面向对象和面向过程编程风格、基于接口而非实现编程和多用组合少用继承设计思想等等。接下来,...

码农架构
Java
发表了文章

为何说要多用组合少用继承?如何决定该用组合还是继承?

继承是面向对象的四大特性之一,用来表示类之间的 is-a 关系,可以解决代码复用的问题。虽然继承有诸多作用,但继承层次过深、过复杂,也会影响到代码的可维护性。所...

码农架构
Java
发表了文章

为什么基于接口而非实现编程?有必要为每个类都定义接口吗?

“基于接口而非实现编程”这条原则的英文描述是:“Program to an interface, not an implementation”。我们理解这条原则...

码农架构
Java
发表了文章

接口vs抽象类的区别?如何用普通的类模拟抽象类和接口?

在面向对象编程中,抽象类和接口是两个经常被用到的语法概念,是面向对象四大特性,以及很多设计模式、设计思想、设计原则编程实现的基础。比如,我们可以使用接口来实现面...

码农架构
Java架构设计
发表了文章

哪些代码设计看似是面向对象,实际是面向过程的?

在用面向对象编程语言进行软件开发的时候,我们有时候会写出面向过程风格的代码。有些是有意为之,并无不妥;而有些是无意为之,会影响到代码的质量。下面我就通过三个典型...

码农架构
Java架构设计
发表了文章

面向对象相比面向过程有哪些优势?面向过程真的过时了吗?

如果你是一名比较资深的程序员,最开始学习编程的时候,接触的是 Basic、Pascal、C 等面向过程的编程语言,那你对这两个概念肯定不陌生。但如果你是新生代的...

码农架构
Java
发表了文章

封装、抽象、继承、多态分别可以解决哪些编程问题?

首先,我们来看封装特性。封装也叫作信息隐藏或者数据访问保护。类通过暴露有限的访问接口,授权外部仅能通过类提供的方式(或者叫函数)来访问内部信息或者数据。这句话怎...

码农架构
Java
发表了文章

当谈论面向对象的时候,我们到底在谈论什么

面向对象编程的英文缩写是 OOP,全称是 Object Oriented Programming。对应地,面向对象编程语言的英文缩写是 OOPL,全称是 Obj...

码农架构
发表了文章

面向对象、设计原则、设计模式、编程规范、重构,这五者有何关系?

现在,主流的编程范式或者是编程风格有三种,它们分别是面向过程、面向对象和函数式编程。面向对象这种编程风格又是这其中最主流的。现在比较流行的编程语言大部分都是面向...

码农架构
发表了文章

从哪些维度评判代码质量的好坏?如何具备写出高质量代码的能力?

在我的工作经历中,每当同事评论起项目代码质量的时候,听到的最多的评语就是:“代码写得很烂”或者“代码写得很好”。用“好”“烂”这样的字眼来描述,非常地笼统。当我...

码农架构
发表了文章

为什么说每个程序员都要尽早地学习并掌握设计模式相关知识?

我相信,很多程序员都已经意识到基础知识的重要性,觉得要夯实基础,才能走得更远,但同时对于如何将基础知识转化成开发“生产力”仍然有些疑惑。所以,你可能看了很多基础...

码农架构
发表了文章

Nginx 最常用的两个功能:负载均衡和缓存

负载均衡和缓存功能是 Nginx 最常用的两个功能,这两个功能都属于高性能的调优手段,也和后端人员的关系比较密切,只有了解并会使用它们才能更好地调试和运行自己的...

码农架构
Nginx负载均衡负载均衡缓存
发表了文章

没有源码调试!生产环境如何排除和优化 JVM?

生产环境中直接排查 JVM 的话,最简单的做法就是使用 JDK 自带的 6 个非常实用的命令行工具来排查。它们分别是:jps、jstat、jinfo、jmap、...

码农架构
JVM
发表了文章

Nginx 的负载均衡模式有哪些?它的实现原理是什么?

Nginx 是后端工程师和运维工程师,以及前端工程师必须要掌握的必备技能,尤其在分布式系统应用越来越广泛的今天,Nginx 已经占据了 Web 服务器的大壁江山...

码农架构
Nginx负载均衡负载均衡缓存NAT 网关
发表了文章

数组阻塞队列(ArrayBlockingQueue)源码解读与分析

生产者消费者模式最核心的部分是生产者与消费者之间的特殊容器,而阻塞队列是特殊容器最常见的实现。JDK中定义了阻塞队列接口BlockingQueue,JDK通过该...

码农架构
JDKJava
发表了文章

并发阻塞队列(BlockingQueue)— 生产者消费者模式核心部件

在分析阻塞队列之前我们先看生产者消费者模式,这是一个很常见的模式,生产者负责数据的生产,而消费者则负数据的消费。一般来说生产者与消费者的数量比例是m:n,该模式...

码农架构
JDKJava
发表了文章

为什么建议没事不要随便用工厂模式创建对象?

一般情况下,工厂模式分为三种更加细分的类型:简单工厂、工厂方法和抽象工厂。在这三种细分的工厂模式中,简单工厂、工厂方法原理比较简单,在实际的项目中也比较常用。而...

码农架构
Java
发表了文章

如何利用策略模式避免冗长的 if-else/switch 分支判断代码?

策略模式。在实际的项目开发中,这个模式也比较常用。最常见的应用场景是,利用它来避免冗长的 if-else 或 switch 分支判断。不过,它的作用还不止如此。...

码农架构
Java云+社区

个人简介

个人成就

扫码关注云+社区

领取腾讯云代金券