布隆过滤器(BloomFilter)

布隆过滤器的使用场景 在架构设计中,通常会涉及这样的场景: 词典服务中,查询某个单词是否合法(即是否存在于保存有海量单词的词典文件中) 爬虫服务中,检查某个网页是否已经收录(即是否存在于海量的已爬取网页库中) 文章/商品推荐服务中,检查某篇文章/某个商品是否已经被推荐过(已推荐过的文章或商...

2019-06-15 22:55:39

阅读数 27

评论数 0

会员中心设计浅谈

背景 在JAVA工程架构中,会员中心是非常基础的服务,其主要是服务C端用户(对于电商行业而言就是终端消费者),是引客、用户运营、用户信息存储、用户画像建立中不可或缺的重要部分。会员中心的设计中,如何建立会员信息模型,如何与其他各服务,如营销服务、订单服务、履约服务、评论服务等完成可靠的数据交换,...

2019-01-13 16:33:26

阅读数 260

评论数 0

Semaphore浅析

背景 在之前的文章中介绍了ReentrantLock、Condition和CountDownLatch这些在JAVA多线程中常用的类,它们各有各的使用场景。ReentrantLock通常用于需要可重入锁定、带超时时间的获取锁等场景,Condition通常用于将线程加入条件等待队列/唤醒的场景,C...

2018-09-08 21:56:05

阅读数 356

评论数 0

CountDownLatch浅析

背景 前边的文章中已经介绍了JAVA多线程并发工程实践中一批常用的类,比如最为核心的AQS(AbstractQueuedSynchronizer),基本上JAVA多线程并发实践中的常用类的实现都与它能扯上关系;比如ReentrantLock,它实现了可重入的锁,一定程度上弥补了synchroni...

2018-09-08 18:40:13

阅读数 938

评论数 0

Condition浅析

背景 我们在谈到多线程并发访问临界资源的时候,通常会想到Object类的monitor锁和wait/notify(条件等待/通知)操作。很多同学会想问,既然有了加锁/解锁机制,为什么还要引入条件等待/通知操作呢?原因在于,当A线程对临界资源加锁后(排他锁),其他线程将无法再次获取该临界资源,直到...

2018-09-07 21:43:32

阅读数 47

评论数 0

ReentrantLock浅析

背景 在之前的文章中提到了多线程并行操作在工程实践中的重要作用,也提到了如何保持临界资源和串行代码段的线程安全性是十分必要的。在计算机领域,是采用锁来保证线程安全性的。JAVA提供了多种锁的机制,比如早期的synchronized关键字,以它的简单易用被很多早期代码所采纳。但是后来开发者们发现,...

2018-09-06 23:03:13

阅读数 49

评论数 0

synchronized关键字浅析

背景 在实际工程实践中,多线程并发执行场景十分常见。所谓线程安全性即是多线程并发执行场景中需要保证的基本要求,如果不能保证线程安全性,那么势必会在实际工程实践中产生错误数据、甚至严重且不易察觉的异常处理,导致最终结果的不确定性。对于临界资源,或者是必须串行操作的流程,势必需要保证多个线程中每次仅...

2018-08-31 22:38:31

阅读数 453

评论数 0

BlockingQueue浅析

背景 在设计任务处理系统的时候,很自然地想到使用生产/消费者模式。任务由生产者生产完成,然后交由消费者(通常是业务相关的处理器)进行消费,完成任务的处理。由于生产者和消费者的处理能力不可能完全一致,参考实际生活中生产线或工厂库存,可使用Queue来对二者进行隔离。生产者将任务生产完毕之后,不是直...

2018-08-28 16:19:34

阅读数 485

评论数 0

JAVA线程池浅析

线程池的概念 在谈到线程池之前,我们先说一说什么是线程与进程的区别与联系。 每一个JAVA程序都是一个进程,在某些场景下,为了获得更好的处理性能,缩短处理时间,可以启动多线程来并发执行任务。每一个进程包含一到多个线程,其中一个为主线程;一个线程从属于一个进程。 多线程概念的提出主要是为了充分...

2018-08-22 22:34:20

阅读数 39

评论数 0

Netty Server端常用组件分析

一、背景 在本专题的第一篇文章中,我们简单介绍了Netty网络I/O框架推出的必要性,并给出了一个十分简单的Netty Server端实例。虽然它可以直接运行,但是由于非常简陋,因此并不适宜在生产环境直接使用。从本文开始,我们将对Netty中涉及到的主要组件简单加以介绍,本文主要介绍Netty ...

2018-08-20 17:06:13

阅读数 53

评论数 0

Netty使用概述

一、网络I/O框架 谈到网络I/O框架,大家通常脑海里边第一个闪现出来的是JAVA BIO(Blocking I/O,阻塞I/O)、JAVA NIO(Non-blocking I/O,非阻塞I/O)和JAVA AIO(Asynchronized I/O,异步I/O)。但是基于原生JDK的I/O组...

2018-08-18 17:13:42

阅读数 459

评论数 0

如何保证架构设计的灵活性与可扩展性

近些天最为火爆的段子莫过于RD(工程师)与PM(产品经理)的拳打脚踢了,我们先不纠结事情的起因与谁对谁错,单从架构设计的角度漫谈一下如何保证与PM沟通的流畅性,以及如何做到架构设计的灵活性与可扩展性,以应对后续不可避免的需求变更,减少迭代开发工作量,保证迭代开发的可控和系统的可维护。 矛盾的产生...

2018-08-03 22:51:21

阅读数 1499

评论数 0

Spring框架浅析 -- 数据库事务处理

概述 在Spring框架浅析 -- 概述中,我们介绍过,Spring对于数据库操作及事务处理的支持,是Spring功能中较为重要的一环。那么数据库事务是什么?为什么要Spring需要对数据库操作及事务处理进行支持?Spring都提供了哪些方式对数据库事务处理进行支持?这些方式中又有哪种比较适合当...

2018-07-31 09:25:15

阅读数 970

评论数 0

Spring框架浅析 -- IoC容器与Bean的生命周期

为什么要使用IoC 在介绍Spring IoC容器之前,先让我们来回顾一下什么是IoC,权威的概念如下:https://en.wikipedia.org/wiki/Inversion_of_control 简单说就是,不要再手写代码来维护类与类的依赖关系了,而是将依赖关系配置化,交由容器去解析...

2018-07-31 09:24:43

阅读数 49

评论数 0

Spring框架浅析 -- AOP

什么是AOP AOP-Aspect Oriented Programming,通常翻译为面向切面编程。它的提出实际上是为了补充OOP-Object Oriented Programming的一些不足。 那么OOP有哪些不足呢?这里我谈谈自己的一些想法,我们知道OOP的思路通常是,将一个大型的功...

2018-07-30 15:00:40

阅读数 181

评论数 0

Spring框架浅析 -- SpringMVC

Spring MVC 使用过Spring用于建设Web服务工程的,都不可避免地要接触Spring MVC。 那么MVC究竟是什么?MVC是Model,View和Control的简称,用于标识Web工程中功能划分明晰、各自承担各自职责的模型层、视图层和控制层。如下图所示: 通常情况下,用户...

2018-07-30 14:59:20

阅读数 42

评论数 0

Spring框架浅析 -- 概述

作为JAVA后端开发者,Spring应该算是平时工作中最常用的框架了。可以这么说,在大多数互联网公司的后端JAVA服务中,Spring框架的使用占比都会非常高,因此对Spring框架的源码深入了解,从而了解其设计思路、组成原理,是十分有必要的。 Spring框架是什么 在此,我并没有从官网或者...

2018-07-30 14:49:08

阅读数 128

评论数 0

SpringBoot启动过程

指定SpringBoot的入口 通常我们使用Spring Boot的时候,会有一个作为程序主入口的类,并在其上标注SpringBootApplication。 首先我们来看一下这个SpringBootApplication标注,如下所示: @Target({ElementType.TYPE...

2018-07-30 14:47:40

阅读数 66

评论数 0

Spring Boot概述

什么是Spring Boot 在附上我自己对这个问题的理解之前,我们先看一下Spring官方对此的解释(源自https://spring.io/projects/spring-boot): Spring Boot makes it easy to create stand-alone, pro...

2018-07-30 14:46:32

阅读数 58

评论数 0

SOA概述

近些年来,SOA(Service Oriented Architecture)、微服务等概念发展得如火如荼,也在各大公司、各主流产品上得到了成功的实践,并积累了正反两方面的经验。SOA思想的关键,在我看来,主要可分为分、合、细三个维度。   分:是指将之前无比复杂、无比庞大的系统按照横向(按业...

2018-07-30 14:45:13

阅读数 32

评论数 0

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