你居然还去服务器上捞日志,搭个日志收集系统难道不香么!
ELK 日志收集系统进阶使用,本文主要讲解如何打造一个线上环境真实可用的日志收集系统。有了它,你就可以和去服务器上捞日志说再见了!
#ELK环境安装
ELK是指Elasticsearch、Kibana、Logstash这三种服务搭建的日志收集系统,具体搭建方式可以参考《SpringBoot应用整合ELK实现日志收集》。这里仅提供最新版本的docker-compose脚本和一些安装要点。
#docker-compose脚本1234567891011121314151617181920212223242526272829303132333435363738394041424344version: '3'services: elasticsearch: image: elasticsearch:6.4.0 container_name: elasticsearch environment: - "cluster.name=elasticsearch" #设置集群名称为elasticsearch - &quo ...
连RabbitMQ的5种核心消息模式都不懂,也敢说自己会用消息队列!
以前看过的关于 RabbitMQ 核心消息模式的文章都是基于 Java API 的,最近看了下官方文档,发现这些核心消息模式都可以通过 Spring AMQP 来实现。于是总结了下 RabbitMQ 的核心知识点,包括 RabbitMQ 在 Windows 和 Linux 下的安装、5种核心消息模式的 Spring AMQP 实现,相信对于想要学习和回顾 RabbitMQ 的朋友都会有所帮助。
#简介RabbitMQ是最受欢迎的开源消息中间件之一,在全球范围内被广泛应用。RabbitMQ是轻量级且易于部署的,能支持多种消息协议。RabbitMQ可以部署在分布式系统中,以满足大规模、高可用的要求。
#相关概念我们先来了解下RabbitMQ中的相关概念,这里以5种消息模式中的路由模式为例。
标志
中文名
英文名
描述
P
生产者
Producer
消息的发送者,可以将消息发送到交换机
C
消费者
Consumer
消息的接收者,从队列中获取消息并进行消费
X
交换机
Exchange
接收生产者发送的消息,并根据路由键发送给指定队列
Q
队列
Queue
存储 ...
开发者必备MySQL命令
开发者必备 Mysql 常用命令,涵盖了数据定义语句、数据操纵语句及数据控制语句,基于 Mysql5.7。
#数据定义语句(DDL)#数据库操作
登录数据库:
1mysql -uroot -proot
创建数据库:
1create database test
查看所有数据库:
1show databases
选择数据库并使用:
1use test
查看所有数据表:
1show tables
删除数据库:
1drop database test
#表操作
创建表:
1create table emp(ename varchar(10),hiredate date,sal decimal(10,2),deptno int(2))
1create table dept(deptno int(2),deptname varchar(10))
查看表的定义:
1desc emp
查看表定义(详细):
1show create table emp \G
删除表:
1drop table emp
修改表字段:
1alter ...
居然有人想白嫖我的日志,赶紧开启安全保护压压惊!
在 《你居然还去服务器上捞日志,搭个日志收集系统难道不香么!》一文中我们介绍过 ELK 日志收集系统的搭建,由于我们的 Kibana 没有任何安全保护机制,如果部署到公网上去的话,任何人都可以查看你的日志了。日志暴露在网络上可不是件好事情,今天教大家如何给 Kibana 设置登录认证来保护它。
#实现原理由于Kibana的日志信息都存储在Elasticsearch中,所以只要给Elasticsearch开启X-PACK中的安全功能,并给预置的账号设置好密码即可。Elasticsearch设置好之后,就可以在Kibana中对用户、角色、权限进行管理了,本文使用的ELK组件版本均为7.6.2。
#Elasticsearch设置密码
修改Elasticsearch的配置文件并开启X-PACK中的安全功能,该配置文件在安装目录的config文件夹下面,例如elasticsearch-7.6.2\config\elasticsearch.yml;
12345http.cors.enabled: truehttp.cors.allow-origin: "*"http.co ...
解放双手!MyBatis官方代码生成工具给力!
在我们使用 MyBatis 的过程中,如果所有实体类和单表 CRUD 代码都需要手写,那将会是一件相当麻烦的事情。MyBatis 官方代码生成器 MyBatis Generator 可以帮助我们解决这个问题,在我的开源项目 mall 中也是使用的这个代码生成器,用习惯了也挺不错的。本文将介绍 MyBatis Generator 的使用方法及使用技巧,希望对大家有所帮助!
#简介MyBatis Generator(简称MBG)是MyBatis官方提供的代码生成工具。可以通过数据库表直接生成实体类、单表CRUD代码、mapper.xml文件,从而解放我们的双手!
#开始使用
首先我们通过一个入门示例将MBG用起来,该示例会包含基础的CRUD操作。
#集成MBG
在pom.xml中添加如下依赖,主要添加了MyBatis、PageHelper、Druid、MBG和MySQL驱动等依赖;
1234567891011121314151617181920212223242526272829303132<dependencies> <!--SpringBoot整合MyB ...
还在手动整合Swagger?Swagger官方Starter是真的香!
之前项目中整合 Swagger 都是直接通过依赖 springfox-swagger、springfox-swagger-ui 两个 jar 包来实现的,最近发现 springfox 3.0.0版本已经有了自己的 SpringBoot Starter,使用起来更契合 SpringBoot 项目,非常方便,推荐给大家!
#使用官方Starter
我们先使用官方Starter来整合Swagger看看是否够简单!
首先在pom.xml中添加springfox官方Swagger依赖;
123456<!--springfox swagger官方Starter--><dependency> <groupId>io.springfox</groupId> <artifactId>springfox-boot-starter</artifactId> <version>3.0.0</version></dependency>
添加Swagger的Java配置,配置 ...
还在百度Linux命令?推荐一套我用起来特顺手的命令!
作为一位 Java 后端开发,怎能不会点 Linux 命令?总结了一套非常实用的 Linux 命令(基于 CentOS 7.6),希望对大家有所帮助!
#系统服务管理#systemctl
systemctl命令是service和chkconfig命令的组合体,可用于管理系统。
输出系统中各个服务的状态:
1systemctl list-units --type=service
查看服务的运行状态:
1systemctl status firewalld
关闭服务:
1systemctl stop firewalld
启动服务:
1systemctl start firewalld
重新启动服务(不管当前服务是启动还是关闭):
1systemctl restart firewalld
重新载入配置信息而不中断服务:
1systemctl reload firewalld
禁止服务开机自启动:
1systemctl disable firewalld
设置服务开机自启动:
1systemctl enable firewalld
...
还在百度Docker命令?推荐一套我用起来特顺手的命令!
平时经常使用 Docker 来搭建各种环境,简单又好用!但是有时候往往会忘记命令,总结了一套非常实用的 Docker 命令,对于 Java 开发来说基本上够用了,希望对大家有所帮助!
#Docker简介Docker是一个开源的应用容器引擎,让开发者可以打包应用及依赖包到一个可移植的镜像中,然后发布到任何流行的Linux或Windows机器上。使用Docker可以更方便地打包、测试以及部署应用程序。
#Docker环境安装
安装yum-utils;
1yum install -y yum-utils device-mapper-persistent-data lvm2
为yum源添加docker仓库位置;
1yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
安装docker服务;
1yum install docker-ce
启动docker服务。
1systemctl start docker
#Docker镜像常用命令#搜索镜像1dock ...
给Swagger换了个新皮肤,瞬间高大上了!
Swagger 作为一款 API 文档生成工具,虽然功能已经很完善了,但是还是有些不足的地方。偶然发现 knife4j 弥补了这些不足,赋予了 Swagger 更多的功能,今天我们来讲下它的使用方法。
#knife4j简介knife4j是springfox-swagger的增强UI实现,为Java开发者在使用Swagger的时候,提供了简洁、强大的接口文档体验。knife4j完全遵循了springfox-swagger中的使用方式,并在此基础上做了增强功能,如果你用过Swagger,你就可以无缝切换到knife4j。
#快速开始
接下来我们来介绍下如何在SpringBoot中使用knife4j,仅需两步即可!
在pom.xml中增加knife4j的相关依赖;
123456<!--整合Knife4j--><dependency> <groupId>com.github.xiaoymin</groupId> <artifactId>knife4j-spring-boot-starter</artifac ...
肝了一周总结的SpringBoot实战教程,太实用了!
天天在用 SpringBoot,但有些 SpringBoot 的实用知识点却不是很清楚!最近又对 SpringBoot 中的实用知识点做了个总结,相信对从 Spring 过渡到 SpringBoot 的朋友会很有帮助!
#前言首先我们来了解下为什么要有SpringBoot?
Spring作为J2EE的轻量级代替品,让我们无需开发重量级的Enterprise JavaBean(EJB),通过依赖注入和面向切面编程,使用简单的Java对象(POJO)即可实现EJB的功能。
虽然Spring的组件代码是轻量级的,但它的配置却是重量级的。即使后来Spring引入了基于注解的组件扫描和基于Java的配置,让它看上去简洁不少,但Spring还是需要不少配置。除此之外,项目的依赖管理也很麻烦,我们无法确保各个版本的依赖都能兼容。
为了简化Spring中的配置和统一各种依赖的版本,SpringBoot诞生了!
#简介SpringBoot从本质上来说就是Spring,它通过了一些自己的特性帮助我们简化了Spring应用程序的开发。主要有以下三个核心特性:
自动配置:对于很多Spring应用程序常见 ...
