自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

原创 从0开始服务化-0-调用链-Zipkin

Zipkin Zipkin 是一个分布式跟踪系统,用于收集、管理和查找跟踪数据。它可以把分布式链路调用的顺序串起来,并计算链路中每个 RPC 调用的耗时,可以很直观的看出在整个调用链路中延迟问题。 Zipkin 的设计基于 GoogleDapper 论文实现的。 ZipkinServer 提供了 ...

2019-12-12 16:39:54 86 0

原创 CAP原则

Overview CAP 原则又称 CAP 定理,指的是在一个分布式系统中, Consistency(一致性)、Availability(可用性)、Partition tolerance(分区容错性),三者不可得兼,最多只能同时满足其中的 2 个。 一致性(Consistency) 在分布式...

2019-12-12 11:25:01 39 0

原创 Spring-cloud-feign添加统一的Header

Overview Spring Cloud OpenFeign Doc Github 业务需求 请求某些机密服务,需要做加密操作,所以需要添加统一的签名 Header 。 Code @Slf4j @Component public class testFeignInterceptor impl...

2019-12-10 15:04:23 178 0

原创 不同的对象占用内存大小问题

对象头 对象头默认 16 bytes 对齐填充 Java对象占用空间是8字节对齐的,即所有Java对象占用bytes数必须是8的倍数。 2w个有10个属性 属性全是 String public final class String implements java.io.Serializ...

2019-11-15 10:33:16 46 0

转载 现代网络负载均衡与代理

现代网络负载均衡与代理 什么是网络负载均衡与代理? 负载均衡 vs 代理 L4(连接 /session)负载均衡 L7(应用层)负载均衡 L7 负载均衡和 OSI 模型 负载均衡器的功能 服务发现 健康检查 负载均衡 粘性 session TLS 终端 观测性 安全性和 DoS 防御 配...

2019-10-17 11:59:21 88 0

原创 从0到1,完整的CI-CD流程

1. 项目的基本配置 OverView 项目使用 dev , qa , prod 三套不同的环境,具体可以参考项目代码。 2. 完整的Build脚本 2.1. 使用maven打包 docker-compose-maven.yml version: "3.7" net...

2019-09-20 16:08:07 89 0

原创 使用Jenkins实现自动部署

创建一个简单的 Pipeline 新建任务 配置一个简单的 Pipeline node { stage('Clone') { echo "1.Clone Stage" } stage('Test&...

2019-08-09 20:27:55 149 0

原创 使用DockerCompose构建部署Yapi

OverView YApi 是一个可本地部署的、打通前后端及QA的、可视化的接口管理平台 https://hellosean1025.github.io/yapi 准备一个自己的 Mongo 因为这些数据都是要落地的,建议单独准备一个DB。 自己构建镜像 自己构建的镜像可以保证镜像的安全,或者可以...

2019-08-08 19:16:18 475 0

原创 SpringBoot-CAS在前后端分离中的实践

Cas CAS is an open and well-documented authentication protocol. The primary implementation of the protocol is an open-source Java server component by...

2019-04-24 15:49:37 4026 8

原创 SpringBoot缓存之Caffeine

SpringBoot缓存之Caffeine Springboot 对缓存的支持 Spring Framework 支持透明地向应用程序添加缓存。从本质上讲,抽象将缓存应用于方法,从而根据缓存中可用的信息减少执行次数。缓存逻辑是透明应用的,不会对调用者造成任何干扰。只要通过 @EnableCachi...

2019-04-11 12:00:56 1294 0

原创 Kafka-Streams-Wiondowing

Wiondowing 使您可以控制如何对具有相同键的记录进行分组以进行有状态操作。 Note 相关操作是分组,它将具有相同密钥的所有记录分组,以确保数据被正确分区(“键入”)以用于后续操作。分组后,窗口允许您进一步对键的记录进行子分组。 例如,在连接操作中,窗口状态存储用于存储到目前为止在定义的窗...

2018-11-30 18:34:53 445 0

原创 流式Json数据生成器

Overview 在看法流式应用处理时,经常需要一些流式数据来测试,自己生成这些数据比较麻烦,可以使用 json-data-generator 来帮助生成。 项目地址 Github 配置 Kafka 数据 jackieChan.config 需要生成的 kafka 数据配置。 { ...

2018-11-21 10:51:17 996 0

原创 Springboot+Kafka

1. Overview Kafka Documentation Spring for Apache Kafka 2. Kafka 搭建 Mac 安装 Kafka 3. 初试 依赖 <dependency> <groupId&gt...

2018-11-20 14:25:12 425 0

原创 Mac 安装 Kafka

brew 安装 brew install kafka 注意:安装会依赖 zookeeper zookeeper -> /usr/local/Cellar/zookeeper/3.4.13 kafka -> /usr/local/Cellar/ka...

2018-11-15 17:43:12 286 0

原创 SpringBoot 获取配置文件属性(全5种,附项目Demo)

一. 使用 @PropertySource + Environment @PropertySource 指定配置文件位置, Environment 读取配置文件属性。 @Configuration @PropertySource(value = {"classpath:test....

2018-10-30 21:21:34 5087 0

原创 SpringBoot2.x-Actutor-micrometer-自定义Mertics

前言 SpringBoot2.x使用Actuator来做应用监控 示例 注册 Metrics 实现 MeterBinder 接口的 bindTo 方法,将要采集的指标注册到 MeterRegistry @Component public class JobMetrics imp...

2018-08-17 17:40:00 3347 0

原创 SpringBoot2.x-定时任务

Timer Timer 是 jdk 1.3 之后自带的 java.util.Timer 类。 这个类允许你按一定的规则调度一个 java.util.TimerTask 任务。主要是按照一定速率去执行任务,不支持 cron 表达式。 示例 public class TimerTest { ...

2018-08-15 15:18:37 1765 0

原创 使用Docker-Compose组合多个镜像

Docker for Mac 官网安装 官网地址,直接下载 .dmg 文件安装即可,更多介绍。 使用 Homebrew 安装 brew cask install docker Check versions $ docker --version Docker version 18...

2018-08-02 21:49:53 3996 0

原创 Springboot-2.x-scaffold

SpringBoot2.x 脚手架,适用于新项目 init。 Overview SpringBoot 2.x 应用监控:Actuator Swagger 2.8 统一异常处理 数据库连接池:HikariCP Mybatis Redis MongoDB 基本概念 spring-bo...

2018-06-19 11:29:34 549 0

原创 HikariCP配置详解+多数据源

SpringBoot 2.0 开始推 HikariCP ,将默认的数据库连接池从 tomcat jdbc pool 改为了 hikari , HikariCP 在性能和并发方面确实表现不俗(号称最快的连接池)。 如果你使用 spring-boot-starter-jdbc 或 spring-bo...

2018-06-19 11:00:55 22865 0

原创 使用IDEA自带的 Editor REST Client 来测试 REST API

Overview 开发 REST API 的时候,必然少不了测试。测试 API 可以采用以下方式: Chrome 请求 不方便构造 POST 请求 Postman 等 Post 工具ß 需要下载工具,好处是可以记录请求,批量测试 Swagger 项目集成,方便操作,同时也提供给前端使用...

2018-06-13 11:39:29 6247 2

原创 SpringBoot2.x使用Actuator来做应用监控

Actuator Spring-boot-actuator module 可帮助您在将应用程序投入生产时监视和管理应用程序。您可以选择使用 HTTP 端点或 JMX 来管理和监控您的应用程序。Auditing, health, and metrics gathering 也可以自动应用于您的应用...

2018-06-12 20:16:13 7020 2

原创 SpringBoot2.x中的应用监控:Actuator+Prometheus+Grafana

Prometheus 是 Cloud Native Computing Foundation 项目之一,是一个系统和服务监控系统。它按给定的时间间隔从配置的目标收集指标,评估规则表达式,显示结果,并且如果观察到某些条件为真,则可触发警报。 特性 多维度 数据模型(由度量名称和键/值维度集定义...

2018-06-12 16:36:23 7360 3

转载 深入浅出分布式缓存的通用方法

深入浅出分布式缓存的通用方法 看到一篇好文,直接转载不方便,用 Markdown 重写了一遍。原文地址:https://mp.weixin.qq.com/s/vc2D2Nrj45Q2QbC00xt6RA 缓存编程的具体方法 各种分布式缓存如Redis,都提供了不同语言的客户端AP...

2018-05-20 16:30:00 334 0

原创 从0开始完成DApp(二)-深入篇

从0开始完成DApp(二)-深入篇 Step1:安装 MetaMask 钱包 智能合约的部署需要钱包的参与。 以太坊轻钱包MetaMask安装 Step2:通过 Remix 学习和尝试 Solidity 语言 DApp 的开发语言是 Solidity 使用Remix部署智能合约...

2018-05-17 17:18:40 204 0

原创 OpenZeppelin集成:编写健壮安全的智能合约

OpenZeppelin集成:编写健壮安全的智能合约 因为智能合约往往涉及金钱,保证Soldity代码没有错误,以及足够的安全是非常根本的。Zeppelin Solutions,一个智能合约审查服务商,已经意识到相关的需求。建立在他们的合约审查经验之上,他们把一些最佳实践整理到了OpenZepp...

2018-05-17 16:09:31 595 0

原创 Truffle框架和Ganache本地私链

Truffle框架和Ganache本地私链 安装Truffle Truffle是一个世界级的开发环境,测试框架,以太坊的资源管理通道,致力于让以太坊上的开发变得简单。 Github源码地址 https://github.com/trufflesuite/truffle ...

2018-05-16 17:23:07 2518 0

原创 使用remix-ide开发以太坊智能合约(代币发行)

使用remix-ide开发以太坊智能合约 Remix-ide 搭建 以太坊官方推荐的智能合约开发IDE,适合新手,可以在浏览器中快速部署测试智能合约。 在线编译 线上地址:https://remix.ethereum.org/ 本地安装 remix-ide 官方地...

2018-05-15 16:19:56 2830 0

原创 从0开始完成DApp(一)- 基础篇

从0开始完成DApp(一)- 基础篇 区块链基础 比特币白皮书 ethereum-overview 以太坊白皮书 以太坊黄皮书 Solidity语言 英文官方网站 代码库GitHub solidity中文翻译 Truffle框架 英文官方网站 代码库GitHub truffle中文翻译 ...

2018-05-14 15:56:27 383 0

原创 以太坊轻钱包MetaMask安装

以太坊轻钱包MetaMask安装 基本 官网地址 https://metamask.io 特性 MetaMask 是一款在谷歌浏览器 Chrome (也支持 Firefox 和 Opera)上使用的插件类型的以太坊钱包,该钱包不需要下载,非常的轻量级。 安装教程 ...

2018-05-14 15:48:09 1782 0

原创 Elasticsearch+Logstash+kibana搭建可视化日志分析平台

Elasticsearch+Logstash+kibana搭建可视化日志分析平台 Elasticsearch安装 关闭防火墙(开放对应端口也可以) systemctl stop firewalld 安装 JDK8 Elasticsearch 需要 Jav...

2018-05-11 16:23:53 853 0

原创 volatile关键字的作用和原理

volatile关键字的作用和原理 关键字作用 volatile 保证可见性 一旦一个共享变量(类的成员变量、类的静态成员变量)被volatile修饰之后,那么就具备了两层语义: 保证了不同线程对这个变量进行操作时的可见性,即一个线程修改了某个变量的值,这新值对其他线程来说是立即可见...

2018-04-18 17:19:10 1734 0

原创 缓存穿透、缓存击穿、缓存雪崩

缓存穿透、缓存击穿、缓存雪崩 缓存穿透 原因 缓存穿透指查询一个一定不存在的数据。由于缓存是命中时被动写的,并且出于容错考虑,如果从存储层查不到数据则不写入缓存,这将导致这个不存在的数据每次请求都要到存储层去查询,失去了缓存的意义。 在流量大时,可能 DB 就挂掉了,如果有人利用不存...

2018-04-12 15:06:56 217 0

原创 深入理解JVM:内存区域

深入理解JVM:内存区域 运行时数据区域 Java虚拟机在执行Java程序的过程中会把它所管理的内存划分为若干个不同的数据区域。 注:白色 区域为 线程私有(生命周期与线程相同),蓝色 区域为 线程共享。 程序计数器(Program Counter Register) ...

2018-03-29 11:55:17 187 0

原创 深入分析LinkedHashMap (JDK1.8)

深入分析LinkedHashMap (JDK1.8) 类名和继承关系 public class LinkedHashMap<K,V> extends HashMap<K,V> implements Map<...

2018-03-26 10:46:23 281 0

原创 Java内存模型(JMM)

Java内存模型(JMM) 原子性(Atomicity) 原子性是指一个操作是不可中断的。即使是多个线程一起执行的时候,一个操作一旦开始,就不会被其他线程干扰。 比如,一个静态全局变量 int i,两个线程同时对它赋值,线程A给他赋值1,线程B给它赋值-1。那么不管两个线程怎么工...

2018-03-26 10:44:32 113 0

原创 线程复用:线程池

线程复用:线程池 为了避免系统频繁地创建和销毁线程,我们可以让创建的线程进行复用。线程池中,总有几个活跃线程。当你需要使用线程时,可以从池中随便获取一个空闲线程,当工作完成时,线程不会关闭而是退回池中。 JDK 提供的线程池工厂方法 newFixedThreadPool 返回固定...

2018-03-19 17:27:13 558 0

原创 使用函数计算来构建小程序

使用函数计算来构建小程序 传统服务器架构 VS Serverless架构 Serverless架构 Login & Auth 微信登录状态维护 语音识别 音频格式转换 使用ffpmeg来实现音频转换 //使用ffmpeg将mp3转...

2018-03-15 17:33:55 469 0

原创 ArrayList、Vector、LinkedList分析

ArrayList、Vector、LinkedList分析 ArrayList 实质是包装了一个数组,遍历时很快,但是插入、删除时都需要移动后面的元素,效率略差些。 add()方法 public boolean add(E e) { ensureCapacityInt...

2018-03-14 10:53:12 136 0

原创 深入理解Spring AOP

深入理解Spring AOP 基本知识 面向切面编程 AOP AOP(Aspect-Oriented Programming), 即 面向切面编程。 AOP 术语 通知(Advice) Advice 定义了切面是什么以及何时使用 前置通知(Before)...

2018-03-09 10:05:06 211 1

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