自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(55)
  • 收藏
  • 关注

原创 OAuth2.0 原理流程及其单点登录和权限控制

单点登录是多域名企业站点流行的登录方式。本文以现实生活场景辅助理解,力争彻底理清 OAuth2.0 实现单点登录的原理流程。同时总结了权限控制的实现方案,及其在微服务架构中的应用。 作者:王克锋 出处:https://kefeng.wang/2018/04/06/oauth2-sso/ 版权:自由转载-非商用-非衍生-保持署名,转载请标明作者和出处。1 什么是单点登录1....

2018-07-26 07:21:58 130025 33

原创 Jenkins 持续集成综合实战

Jenkins 是一款流行的开源持续集成(Continuous Integration)工具,广泛用于项目开发,具有自动化构建、测试和部署等功能。本文以 CentOS7 环境为例,总结了 Jenkins 的安装与配置、邮件功能使用,并接入阿里巴巴的著名开源项目 fastjson,以此演示 Java 项目(SVN+Maven)中 FindBugs 等常用插件的使用、单元测试及其覆盖率等报告,力求实战性强。

2017-01-08 13:59:30 81864 39

原创 一致性哈希算法的原理与实现

分布式系统中对象与节点的映射关系,传统方案是使用对象的哈希值,对节点个数取模,再映射到相应编号的节点,这种方案在节点个数变动时,绝大多数对象的映射关系会失效而需要迁移;而一致性哈希算法中,当节点个数变动时,映射关系失效的对象非常少,迁移成本也非常小。本文总结了一致性哈希的算法原理和Java实现,并列举了其应用。 作者:王克锋 出处:https://kefeng.wang/2018/08/1...

2018-08-13 14:08:29 57899 18

原创 分布式系统的 CAP 定理

CAP定理指出,在一个分布式系统中,对于一致性、可用性、分区容错这三个特性,不可能同时满足,而是必须有所舍弃。我们设计分布式系统时,必须在三者之间(尤其是一致性和可用性之间)有所取舍和平衡。 作者:王克锋 出处:https://kefeng.wang/2018/07/26/distributed-cap/ 版权:自由转载-非商用-非衍生-保持署名,转载请标明作者和出处。1 概述...

2018-08-07 17:17:49 15874 1

原创 高可用软件 Keepalived 的原理与实践

服务器架构中,经常会遇到服务的一个总入口(比如 Nginx/MyCAT)存在单点故障的隐患。Keepalived 正是解决此类问题的高可用软件,它使用单个虚拟IP(VIP),动态检测多个入口节点的可用性并切换 VIP 指向,从而达到高可用。本文总结了 Keepalived 的原理,并以 Nginx 为例,演示了 Keepalived 在高可用中的应用。 作者:王克锋 出处:https://...

2018-08-05 14:07:44 2024 2

原创 常用设计模式及其 Java 实现

设计模式是在不断出现的特定情境下,针对特定问题,可以重复使用的特定解决模式(套路)。本文按照创建型、结构型、行为型三大类,总结了常见的 24 种设计模式的使用要点,包括适用场景、解决方案、及其相应的 Java 实现。 作者:王克锋 出处:https://kefeng.wang/2018/04/16/design-patterns/ 版权:自由转载-非商用-非衍生-保持署名,转载请标明作者...

2018-08-05 14:06:05 4703

原创 HTTPS 协议原理和流程

HTTPS 是互联网上流行的安全超文本传输协议,它能保证数据传输过程中的保密性和完整性。谷歌、苹果等互联网巨头都在力推 HTTPS,其平台对于传统的 HTTP 展示警告,甚至拒绝接入,国内大型互联网公司也开始启用全站 HTTPS。本文对 HTTPS 相对于 HTTP 差异的 SSL/TLS 的原理和交互流程进行梳理,以便理解 HTTPS 的原理流程。 作者:王克锋 出处:https://k...

2018-07-26 14:10:45 6602

原创 MySQL 分库分表及其平滑扩容方案

众所周知,数据库很容易成为应用系统的瓶颈。单机数据库的资源和处理能力有限,在高并发的分布式系统中,可采用分库分表突破单机局限。本文总结了分库分表的相关概念、全局ID的生成策略、分片策略、平滑扩容方案、以及流行的方案。 作者:王克锋 出处:https://kefeng.wang/2018/07/22/mysql-sharding/ 版权:自由转载-非商用-非衍生-保持署名,转载请标明作者和...

2018-07-26 07:38:52 17882 6

原创 Docker 安装与使用概要

Docker 是世界领先的软件容器化平台,它极大地方便了应用程序的构建、发布和运行。本文总结了 Docker 架构原理及其作用,并以 CentOS 7 环境为例,总结了 Docker 的环境搭建,镜像和容器的常用操作方法。 作者:王克锋 出处:https://kefeng.wang/2018/07/12/docker/ 版权:自由转载-非商用-非衍生-保持署名,转载请标明作者和出处。...

2018-07-26 07:31:53 769

原创 美团 CAT 集群的搭建与集成

CAT 是大众点评开源的实时监控系统,它侧重于 Java 应用监控,可与各种流行的中间件框架集成(MVC框架、RPC框架、数据库框架、缓存框架等),实现应用各层级系统的运行状况监控。本文总结了 CAT 服务器集群的搭建、Java 应用的集成、以其控制台的使用。 作者:王克锋 出处:https://kefeng.wang/2018/07/06/tracing-cat/ 版权:自由转载-非商...

2018-07-26 07:28:47 6800

原创 美团 OCTO 分布式服务治理系统

OCTO 是美团千亿调用量的分布式服务通信框架及服务治理的系统,可实现服务注册、服务自动发现、服务管理、容错处理、数据可视化、服务监控报警、服务分组等。本文总结了 OCTO 架构原理、Java 应用的集成方法、以其控制台的使用。 作者:王克锋 出处:https://kefeng.wang/2018/06/29/distributed-octo/ 版权:自由转载-非商用-非衍生-保持署名,...

2018-07-26 07:27:14 13250 1

原创 SpringBoot 集成 Thymeleaf

Java 开发可分为两种情况:前后端分离,适合于生命期长、迭代频繁的企业应用开发;后端不分离,则适合于短期的、演示性小项目,此时服务端可采用 Spring 官方推荐的模板 Thymeleaf。本文总结了 SpringBoot 整合 Thymeleaf 的开发要点。 作者:王克锋 出处:https://kefeng.wang/2018/03/23/spring-boot-thymeleaf/...

2018-07-26 07:19:16 629

原创 SpringBoot 集成 Mybatis

SpringBoot 是快速开发 Spring 项目的流行框架,而 MyBatis 是 Spring 中数据库操作的流行方案。本文以 MySQL 为例,总结了 SpringBoot 项目中借助 MyBatis Generator 的生成实体类和Mapper,并使用它们操作数据库的开发要点。 作者:王克锋 出处:https://kefeng.wang/2018/03/15/spring-bo...

2018-07-26 07:17:26 298

原创 IDEA 远程调试

IDEA 远程调试,像运行本地代码一样调试远程主机上的程序,以排查远程程序的BUG或代码执行流程。 作者:王克锋 出处:https://kefeng.wang/2018/03/06/idea-remote-debug/ 版权:自由转载-非商用-非衍生-保持署名,转载请标明作者和出处。1 概述原理:本机和远程主机的两个 VM 之间使用 Debug 协议通过 Socket 通信,...

2018-07-26 07:16:21 61205 5

原创 分布式事务的解决方案

数据库事务是多个SQL构成一个业务整体,必须同时提交或同时回滚。而分布式事务中,一个大操作由多个小操作组成,各个小操作处于不同的物理节点(或进程),这些小操作必须作为一个整体,同时提交或同时回滚。本文总结了事务的特性,以及 MySQL/Redis/MQ 的分布式事务的具体解决方案。 作者:王克锋 出处:https://kefeng.wang/2018/03/01/distributed-t...

2018-07-25 09:09:14 1781

原创 Linux 下 Git 服务器搭建

Github 只对开源的项目免费,非开源项目必须付费。为了不付费,也为了代码安全,我们需要搭建自己的 Git 服务器,而且国内访问速度更快。Git 的远程仓库和本地仓库没有本质区别,远程仓库只是保证永远在运行。 作者:王克锋 出处:https://kefeng.wang/2018/01/20/git-server/ 版权:自由转载-非商用-非衍生-保持署名,转载请标明作者和出处。...

2018-07-25 09:08:18 280

原创 Maven 私服搭建

Maven 私服通常采用 Nexus 搭建,本文以 CentOS 为例,总结了 Nexus 搭建方法。搭建 Maven 私服的必要性有:(1)整个公司只需把因特网上的公共仓库缓存至局域网私服一次,公司内所有开发人员直接从局域网私服下载,速度很快;(2)公司内部开发的组件,上传至私服,供整个公司使用。 作者:王克锋 出处:https://kefeng.wang/2018/02/10/mave...

2018-07-25 09:07:35 351

原创 SpringCloud 开发与部署概要

Alibaba Dubbo 是国内流行的微服务框架,而 SpringCloud 是国外流行的微服务框架。SpringCloud 为微服务提供一站式完整的解决方案,具有独特的优势和发展前景。本文讲述了 SpringCloud 的历史和版本号规则、与同类产品相比的优势,并基于 SpringBoot 演示了服务注册中心、服务提供者和消费者的实现方法,并说明了高可用注册中心的部署思路。 作者:王克锋...

2018-07-25 09:06:25 13402 4

原创 SpringBoot 项目启动和部署总结

默认情况下,SpringBoot 内置 Tomcat,可以直接在 Java IDE 中启动,也可以打成 jar 包,用 java -jar 命令启动。但是,如果要用外部 Tomcat 管理多个项目,就要打成 war 包。本文以 Maven 项目为例,总结了 SpringBoot 各种部署方法和相关事项。为便于演示,我使用的环境是 Windows,而 Linux 下方法大同小异。 作者:王克锋...

2018-07-25 09:05:34 6143

原创 SpringBoot 开发概要

SpringBoot 是 Spring 官方当前力推的开发框架,它以合理的默认值,开发者以极少的配置即可快捷地搭建应用,足以让传统的 Spring 开发者拍案叫绝!本文简述了 SpringBoot 的原理和作用,并以实例演示常见 WEB 项目的构建方法,其中包括数据库和 Redis 的接入方法。 作者:王克锋 出处:https://kefeng.wang/2017/12/16/spring...

2018-07-25 09:04:54 751

原创 Dubbo 提供者与消费者的实现

上篇文章 Dubbo 原理与部署 讲述了 Dubbo 注册中心(ZooKeeper)的搭建,但其中的服务提供者和消费者需要开发者实现,本文详述两者的实现方法。各方部署完毕后,一个基本的微服务架构就完成了。传统上是以 Spring 实现,现在也有 starter 帮助以 SpringBoot 的方式实现。 作者:王克锋 出处:https://kefeng.wang/2017/12/12/du...

2018-07-25 09:03:55 5600

原创 Dubbo 原理与部署

微服务架构在企业开发中应用越来越广泛,而 Alibaba Dubbo 代表国内微服务框架的最高成就,在国内有广泛的应用。本文讲述了 Dubbo 要解决的问题、现状和架构原理,注册中心/提供者/消费者的实现方法,以及服务治理控制台的部署与使用。 作者:王克锋 出处:https://kefeng.wang/2017/12/10/dubbo-deploy/ 版权:自由转载-非商用-非衍生-保持...

2018-07-25 09:02:57 1758

原创 Kafka 消息可靠性

在 Kafka 工作机制 一文提及了 Kafka 消息的不可靠性。本文就 Kafka 消息的三种不可靠性(重复、丢失、乱序),分析它们出现的内部原因和解决办法。 作者:王克锋 出处:https://kefeng.wang/2017/11/22/kafka-reliability/ 版权:自由转载-非商用-非衍生-保持署名,转载请标明作者和出处。1 Kafka 消息的问题Kaf...

2018-07-25 08:50:03 6372

原创 Kafka 客户端开发

前两篇文章讲述了 Kafka 的 工作机制 和 服务器集群部署。至此,Kafka 服务器已就绪,本文分别以官方API、Spring、SpringBoot三种构建方式,讲述了 Kafka 消费生产者和消费者的开发。 作者:王克锋 出处:https://kefeng.wang/2017/11/18/kafka-development/ 版权:自由转载-非商用-非衍生-保持署名,转载请标明作者...

2018-07-25 08:49:00 1196

原创 Kafka 服务器集群部署

上篇文章 Kafka 工作机制 讲述了 Kafka 的各组件(包括配置中心、Broker、消息生产者和消费者)的作用,分区与复制的机制等。有了这些概念,本文以三个 Broker 为例,讲述了 Kafka 集群的搭建步骤和方法,并以官方自带的命令行脚本进行消息的生产、消费、查看等操作。 作者:王克锋 出处:https://kefeng.wang/2017/11/16/kafka-deploy...

2018-07-24 06:49:19 743

原创 Kafka 工作机制

Kafka 是 Apache 的子项目,是一个高性能跨语言的分布式发布/订阅消息队列系统(没有严格实现 JMS 规范的点对点模型,但可以实现其效果),在企业开发中有广泛的应用。高性能是其最大优势,劣势是消息的可靠性(丢失或重复),这个劣势是为了换取高性能,开发者可以以稍降低性能,来换取消息的可靠性。 作者:王克锋 出处:https://kefeng.wang/2017/11/15/kafk...

2018-07-24 06:48:13 2819

原创 ZooKeeper 客户端开发

上篇文章 ZooKeeper 原理与服务器集群部署 完成了 ZooKeeper 服务器集群的部署,本文以官方 API 和 zkClient 两种方式,演示了 ZooKeeper 数据的修改和状态监视。并以代码模拟了 ZooKeeper 在 Dubbo 中的作用。 作者:王克锋 出处:https://kefeng.wang/2017/11/10/zookeeper-development/ ...

2018-07-24 06:47:30 769

原创 ZooKeeper 原理与服务器集群部署

ZooKeeper 是大型分布式系统中可靠的协调系统,它以树状结构存储数据,以领导选举和信息同步机制保证了集群的高可用性,以事件通知机制协助事件订阅者及时捕获数据的变化,可协助实现 Dubbo、Kafka 等架构。本文以 CentOS 和 Windows 为例,总结了 ZooKeeper 集群的部署操作,并以自带的脚本命令操作其数据。 作者:王克锋 出处:https://kefeng.wa...

2018-07-24 06:46:21 398

原创 ActiveMQ 客户端的开发

上篇文章 ActiveMQ 服务器的部署 实现了 ActiveMQ 服务器的部署,本文分别以官方 API、Spring、SpringBoot 三种方式,实现 ActiveMQ 消息的生成者和消费者。 作者:王克锋 出处:https://kefeng.wang/2017/10/18/activemq-development/ 版权:自由转载-非商用-非衍生-保持署名,转载请标明作者和出处。...

2018-07-24 06:45:11 1334

原创 ActiveMQ 服务器的部署

ActiveMQ 是 Apache 流行、强大的开源消息传递和集成模式服务器,它完全支持 JMS 1.1(严格实现“点对点”和“发布/订阅”两种消息模型) 和 J2EE 1.4。作为实验,本文实现了 ActiveMQ 单服务器的安装及其管理,并概述了集群部署的方法。 作者:王克锋 出处:https://kefeng.wang/2017/10/16/activemq-deploy/ 版权:...

2018-07-24 06:43:49 3207

原创 消息队列概述

消息中间件是大型分布式应用中重要的组成部分,它可以实现关联系统在业务和部署上的解耦,各方无需相互等待,只需根据自身能力投递或消费。本文总结了JMS各元素、两种消息模型、主流的消息中间件 (Kafka/ActiveMQ/RabbitMQ/RocketMQ)各自的特点。 作者:王克锋 出处:https://kefeng.wang/2017/10/12/message-queue/ 版权:自由...

2018-07-24 06:42:45 362

原创 Redis 客户端的开发

上篇文章 Redis 服务器的安装部署 讲述了 Redis 服务器的部署。本文则从 Redis 客户端角度,讲述 Java 代码访问 Redis 的三种方式(基于官方 API、基于 Spring、基于 SpringBoot),开发者可根据自己项目所采用的框架选择。 作者:王克锋 出处:https://kefeng.wang/2017/08/22/redis-development/ 版权...

2018-07-24 06:41:35 424

原创 Redis 客户端命令参考

Redis 命令可以直接在 Redis 命令行中执行,用于管理员维护服务器或开发人员维护数据。Redis 命令很庞杂,本文把它们按用途分类并进行了关键说明,便于对比记忆,也便于管理人员和开发人员有选择地查阅,也便于开发人员掌握第三方 Redis 开发包提供的接口。 作者:王克锋 出处:https://kefeng.wang/2017/08/16/redis-command/ 版权:自由转...

2018-07-24 06:40:09 1622

原创 Redis 服务器常用配置参数

恰当地设定 Redis 服务器参数,才能保证服务器正确、高性能、安全地运转。通过这些参数,我们还能了解 Redis 服务器内部运转的机制和细节。同时,主从复制和 Redis 集群的部署也要掌握相关配置项。 作者:王克锋 出处:https://kefeng.wang/2017/08/12/redis-config/ 版权:自由转载-非商用-非衍生-保持署名,转载请标明作者和出处。1...

2018-07-24 06:38:31 10117 2

原创 Redis 服务器单机的安装

缓存在高性能的企业分布式应用中扮演着至关重要的作用,而 Redis 是缓存中间件中的佼佼者。本文总结了 Redis 服务器的安装(CentOS/Windows环境),Redis 常用命令及其界面工具的使用。 作者:王克锋 出处:https://kefeng.wang/2017/08/10/redis-installation/ 版权:自由转载-非商用-非衍生-保持署名,转载请标明作者和出...

2018-07-23 12:21:08 452

原创 图形验证码开源库 Tess4J 的使用

实际应用中,为了保护重要接口,防止用户恶意攻击或穷举破解,在发送业务请求时生成图片验证码,要求人工识别并填写,一并提交给后台验证,以确保是人为请求。图形验证码开源库 Tess4J 生成的图片验证码还有拉伸、扭曲、干扰等功能,同时它还有识别简单图片中验证码的功能。本文总结了 Tess4J 的用法。 作者:王克锋 出处:https://kefeng.wang/2017/04/22/tess4j...

2018-07-23 12:16:25 4131 3

原创 缩略图开源库 Thumbnailator 的使用

缩略图开源库 Thumbnailator 可根据已有图片,截取指定范围并缩放,还支持添加水印。本文总结了它的用法。 作者:王克锋 出处:https://kefeng.wang/2017/04/09/thumbnailator/ 版权:自由转载-非商用-非衍生-保持署名,转载请标明作者和出处。1 概述功能需求:对于特定的原始图片,要求输出为 480*360 的图片。算法为: ...

2018-07-23 12:15:02 883

原创 IDEA 创建 Maven 多模块项目

实际应用中,一个项目往往会包含多个模块,本文以三个模块为例演示了 IDEA 多模块项目的创建方法。 作者:王克锋 出处:https://kefeng.wang/2017/03/19/idea-modules/ 版权:自由转载-非商用-非衍生-保持署名,转载请标明作者和出处。1.概述一个项目会包括多个模块,比如典型的 WEB 项目可以划分为以下 utils / api / we...

2018-07-23 12:13:57 791

原创 Git 客户端的安装与使用

Git 是当前最流行的版本控制工具,使用率上早已超过了 SVN。本文总结了 Windows 环境下 Git 客户端的安装(包括命令行和界面工具),并以 Github/Gitlab 为例,在服务器上配置客户端公钥的方式认证客户端(而不是客户端指定用户名密码的传统方式),提高了安全性。 作者:王克锋 出处:https://kefeng.wang/2017/03/12/git-client/ ...

2018-07-23 12:12:39 3137 2

原创 Node.js 实践概要

Node.js 是一个基于 Chrome V8 引擎、跨平台、开源的 JavaScript 运行时。它使用高效、轻量级的事件驱动、非阻塞 I/O 模型,可使用 JavaScript 代码构建高效的 WEB 服务器端,或者磁盘文件操作等。本文总结了 Node.js 的安装、包管理工具 npm 的使用,以及代码示例。 作者:王克锋 出处:https://kefeng.wang/2017/02/...

2018-07-23 12:11:31 397

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

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