1. 1 无处安放 汪峰
  2. 2 平凡之路 朴树
  3. 3 往后余生 马良
  4. 4 牧马城市 毛不易
无处安放 - 汪峰
00:00 / 00:00

词:汪峰

曲:汪峰

我闻到初春的味道

那如同儿时梦境新鲜的芬芳

也尝到思念的苦涩

这回望远方秋雨般无垠的萧索

心爱的人啊

多年以后是否还记得我的惦念

我的忧愁和挣扎

你知不知道

没有你我那颗叮叮当当的心啊

总是这样 这样无处安放

我去到来时的路上

还是那躺在公路尽头的月亮

电台里放着披头士

可那在我身旁熟睡的你在哪里

思念的人啊

人们常说时间会让爱变得淡忘

变得模糊和破碎

可你知不知道

没有你我那颗叮叮当当的心啊

总是这样 这样无处安放

回望这纷乱的生活

有太多人在我心底匆匆掠过

可当我想念的时候

却只有你让我静静地流下眼泪

心爱的人啊

时光飞逝我们终究要渐渐老去

渐渐恐惧和放弃

可你知不知道

没有你我那颗叮叮当当的心啊

终将这样 这样无处安放

终将这样 这样无处安放

Clay 的技术空间

用进废退 | 艺不压身

大纲

前言

在传统的 SOA 架构体系中,系统调用层级不多,调用关系也不复杂,一旦出现问题,根据异常信息可以很快定位到问题模块并进行排查。但是在微服务的世界里,实例数目成百上千,实例之间的调用关系几乎是网状结构,靠人力去监控和排查问题已经不太可能。这种情况下,一个完善的调用链路监控框架对于运维和开发来说,都是不可或缺的。

阅读全文 »

ZooKeeper 的应用场景

命名服务

ZooKeeper 可以用来实现分布式命名服务。命名服务是指通过指定的名字来获取资源或者服务的地址,利用 ZooKeeper 创建一个全局的路径,这个路径就可以作为一个名字,指向集群中的节点、提供服务的地址、或者一个远程的对象等等。统一命名服务的命名结构如下图所示:

  • (1)在分布式环境下,经常需要对应用 / 服务进行统一命名,以便于识别不同的服务。
    • 类似于域名与 IP 之间对应关系,IP 不容易记住,而域名容易记住。
    • 通过名称来获取资源服务的地址、服务提供者等信息。
  • (2)按照层次结构组织应用 / 服务的名称。
    • 可将服务名称以及地址信息写到 ZooKeeper 上,客户端通过 ZooKeeper 获取可用服务列表。
阅读全文 »

大纲

前言

Swagger 是一系列 RESTful API 的工具,通过 Swagger 可以获得项目的⼀种交互式 API 文档。Swagger 的目标是为 RESTful API 定义一个标准的、与语⾔言无关的接口,使人和计算机在看不到源码、或者看不到文档、或者不能通过网络流量检测的情况下,能发现和理解各种服务的功能。当服务通过 Swagger 定义,用户就能通过少量的实现逻辑与远程的服务互动。

版本说明

Swagger 的版本发展历史

Swagger 从 3.0 版本开始更名为 OpenAPI,通常所说的 Swagger 一般指的是 Swagger 2.x 版本,而 OpenAPI 则指的是 Swagger 3.x 版本。简而言之,Swagger2 是 OpenAPI 规范的前身,Swagger3 是 OpenAPI 规范的官方正式版本。更具体地说,Swagger3 引入了对 OpenAPI 的支持,提供了更简洁的依赖引入方式,接口地址有所改变,注解系统进行了更新,并对 Docket 配置进行了优化。Swagger3 实现了零配置和自动配置支持,同时兼容旧版注解,但文档页面地址和接口地址在不同版本间不兼容。

阅读全文 »

前言

SpringBoot 配置文件中的数据库账户、密码等敏感数据不能明文展示,否则代码泄露的话,数据库的数据会被恶意利用。

加密算法

  • Jasypt Spring Boot 2.x 默认使用的加密算法是 PBEWithMD5AndDES,其中的 IV 生成器是 org.jasypt.iv.NoIvGenerator
  • Jasypt Spring Boot 3.x 默认使用的加密算法是 PBEWITHHMACSHA512ANDAES_256,其中的 IV 生成器是 org.jasypt.iv.RandomIvGenerator

添加 Maven 坐标

1
2
3
4
5
<dependency>
<groupId>com.github.ulisesbocchio</groupId>
<artifactId>jasypt-spring-boot-starter</artifactId>
<version>3.0.4</version>
</dependency>
阅读全文 »

前言

官方教程

ELK 介绍

ELK 简介

ELK 是 Elasticsearch + Logstash + Kibana 的简称。

  • Elasticsearch 是一个分布式的搜索和分析引擎,可以用于全文检索、结构化检索和分析,并能将这三者结合起来。Elasticsearch 基于 Lucene 开发,现在是使用最广的开源搜索引擎之一。
  • Logstash 简单来说就是一根具备实时数据传输能力的管道,负责将数据信息从管道的输入端传输到管道的输出端,与此同时这根管道还可以根据不同的需求在中间加上滤网,Logstash 提供了很多功能强大的滤网以满足各种应用场景。
  • Kibana 是一个开源的分析与可视化平台,设计出来用于和 Elasticsearch 一起使用的。开发者可以使用 Kibana 搜索、查看、交互存放在 Elasticsearch 索引里的数据,并使用各种不同的图标、表格、地图显示,Kibana 能够很轻易的展示高级数据分析与可视化。
阅读全文 »

持久化

什么是持久化

持久化(Persistence),即把数据(如内存中的对象)保存到可永久保存的存储设备中(如磁盘)。

持久化的实现方式

  • 快照方式持久化:在某时刻把所有数据进行完整备份,例如:MySQL 的 Dump 方式、Redis 的 RDB 方式
  • 写日志方式持久化:把用户执行的所有写指令(增删改)备份到文件中,还原数据时只需要把备份的所有指令重新执行一遍即可,例如:MySQL 的 Binlog、Redis 的 AOF、Hbase 的 HLog
阅读全文 »

优化生产环境中的 Tomcat 服务器涉及多个方面,包括性能调优、资源管理、安全性增强和稳定性保障。

性能调优

内存设置

  • 调整 JVM 内存参数

    • 设置合适的初始堆大小(-Xms)和最大堆大小(-Xmx),根据服务器的物理内存配置。典型设置如下:
      1
      2
      -Xms2048m
      -Xmx4096m
  • 调整方法区大小

    • 对于 Java 7 及以前版本,可以设置永久代大小(-XX:PermSize-XX:MaxPermSize)。
    • 对于 Java 8 及以后版本,可以调整元空间大小(-XX:MetaspaceSize-XX:MaxMetaspaceSize)。
阅读全文 »

安装环境介绍

环境名称版本
linuxCentOS Linux release 7.7.1908 (Core)
docker-ce19.03.8
docker-compose1.24.0-rc1
docker imagevimagick/privoxy:latest

初始目录结构

  • 目录结构
1
2
3
4
5
~/fig/privoxy/
├── docker-compose.yml
└── privoxy/
├── user.action
└── user.filter
阅读全文 »

前言

实现流程

创建钉钉群机器人后,得到 Webhook 与 Secret。Java 代码 实现 Admin 的 Notifier 接口,当监听到 Admin 服务状态变更后,直接调用 Webhook 发送消息给钉钉群机器人,群成员就可以收到报警消息通知,这个过程与 Github 的 Webhook 实现流程一致。

钉钉官方文档

值得一提的是,本文使用的是钉钉提供的 自定义机器人 接口,而不是 开发企业内部机器人 接口,同时 Webhook 里包含的 access_token 不存在有效期(永久有效),即不需要定时刷新 access_token

阅读全文 »