文章列表 | 月光中的污点

文章列表

分类: 后端

当前位置: 首页 / 分类 / 后端

Spring AOP 实现读写分离

上一篇《MySQL 实现主从复制》 文章中介绍了 MySQL 主从复制的搭建,为了在项目上契合数据库的主从架构,本篇将介绍在应用层实现对数据库的读写分离。 配置主从数据源,当接收请求时,执行具体方法之前(拦截),判断请求具体操作(读或写),最终确定从哪个数据源获取连接访问数据库。 在 JavaWeb 开发中,有 3 种方式可以对请求进行拦截:

Java 多线程开发之 Callable 与线程池(三)

我们常见的创建线程的方式有 2 种:继承 Thread 和 实现 Runnable 接口。 其实,在 JDK 中还提供了另外 2 种 API 让开发者使用。 Java 5.0 在 java.util.concurrent 提供了一个新的创建执行线程的方式: 实现 Callable 接口。

Dubbo 基础教程

当服务越来越多时,容量的评估,小服务资源的浪费等问题逐渐显现,此时需要增加一个调度中心基于访问压力实时管理集群容量,提供集群利用率。其中,用于提高机器利用率的资源调度和治理中心是关键。 Dubbo 是阿里巴巴开源项目的一个分布式服务框架。其致力于提供高性能和透明化的 RPC 远程调用方案,以及 SOA 服务治理方案。

Lua 简单入门

Lua 是一种轻量小巧的脚本语言,用标准 C 语言编写并以源代码形式开放,其设计目的是为了嵌入应用程序中,从而为应用程序提供灵活的扩展和定制功能。 Lua 可以应用在游戏开发、独立应用脚本、Web 应用脚本、扩展和数据库插件、安全系统等场景。 笔者学习的目的主要是为了能在 Web 应用(Nginx、Redis)中使用到 Lua 脚本。

Spring Boot 入门之消息中间件篇(五)

在消息中间件中有 2 个重要的概念:消息代理和目的地。当消息发送者发送消息后,消息就被消息代理接管,消息代理保证消息传递到指定目的地。 我们常用的消息代理有 JMS 和 AMQP 规范。对应地,它们常见的实现分别是 ActiveMQ 和 RabbitMQ。 上篇文章 《Spring Boot 入门之缓存和 NoSQL 篇(四)》 。

RabbitMQ 工作模式介绍

之前,笔者写过 《 CentOS 7.2 安装 RabbitMQ》 这篇文章,今天整理一下 RabbitMQ 相关的笔记便于以后复习。 在 RabbitMQ 官网上提供了 6 中工作模式:简单模式、工作队列模式、发布/订阅模式、路由模式、主题模式 和 RPC 模式。 本篇只对前 5 种工作方式进行介绍。

Maven 实现环境隔离

通常,一个项目在本地开发完成后,需要提交到测试环境进行测试,测试完成后最终放到生成环境运行。但是,这 3 个运行环境的配置必然有所不同。当每次提交到不同的环境都需要修改项目的配置,这些操作显得非常繁琐且容易出错。 本文将介绍使用 Maven 实现环境隔离的小技巧来避免人工修改出错,解决上述问题。 演示环境:IDEA

Lombok 简单入门

Lombok 是一个 Java 库,它作为插件安装至编辑器中,其作用是通过简单注解来精简代码,以此达到消除冗长代码的目的。 通过注解自动生成成员变量的 getter、setter 等方法,使代码简洁 修改类变量名时,无需关注其 getter、setter 等方法

Java 多线程开发之原子变量与 CAS 算法(二)

在上篇《Java 多线程开发之 volatile(一)》文章中介绍了 volatile 的相关内容,它是一个轻量级的锁,但不支持原子操作。 本篇将介绍原子操作相关内容。 CAS (Compare-And-Swap) 是一种硬件对并发的支持,针对多处理器操作而设计的处理器中的一种特殊指令,用于管理对共享数据的并发访问。

Java 多线程开发之 volatile(一)

Java 提供了一种稍弱的同步机制,即 volatile 变量,用来确保将变量的更新操作通知到其他线程。 我们可以将 volatile 看做一个轻量级的锁,但是又与锁有些不同: Java 内存模型规定了所有的变量(此处的变量是指成员变量和静态变量)都存储在主内存中,每条线程都有自己的工作内存。