![](https://img-blog.csdnimg.cn/20201014180756780.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
技术类
文章平均质量分 78
嗨,您好
往前走,凭着信心,而不是眼睛。
展开
-
如何让SpringBoot项目启动时执行特定代码
(其实直接在main方法里写也不是执行不了) 如果只是简单的一些语句,写在main中可能会方便一些但如果需要调用spring容器中的对象可能会要吃瘪,因为main方法是static的,而获取ioc对象不能使用static直接获取(会报错) 当调用@AutoWired获得ioc容器中的对象时@Autowiredprivate static TestService testService;Exception in thread "main" java.lang.NullPointerExcep原创 2022-01-26 09:30:37 · 224 阅读 · 0 评论 -
分布式系统中很常见的负载均衡方案
HTTP 重定向负载均衡这种负载均衡方式仅适合WEB 服务器。用户发出请求时,负载均衡服务器会根据HTTP请求,重新计算出实际的WEB服务器地址,通过302重定向响应发送给用户浏览器。用户浏览器再根据302响应信息,对实际的WEB服务器发出请求。HTTP重定向方案优点是比较简单,缺点是性能比较差,需要2次请求才能返回实际结果,还有就是仅适合HTTP服务器使用。重定向服务器也很容易成为单点故障问题。DNS 域名解析负载均衡在DNS中存储了一个域名的多个主机地址,每次域名解析请求,都可以原创 2022-01-26 09:26:36 · 242 阅读 · 0 评论 -
使用linux脚本监控Tomcat服务器是否宕机和宕机后自动重启
第一步:创建脚本#!/bin/bash# func:自动监控tomcat脚本并且执行重启操作# 获取tomcat进程ID(其中[grep -w 'tomcat']代码中的tomcat需要替换为你的tomcat文件夹名)TomcatID=$(ps -ef |grep tomcat |grep -w 'apache-tomcat-7.0.96'|grep -v 'grep'|awk '{print $2}')# tomcat启动程序(这里注意tomcat实际安装的路径)StartTomcat原创 2021-11-23 08:51:59 · 345 阅读 · 0 评论 -
线程CPU占用100%的问题怎么定位
上上周生产出现问题,记录一下定位问题的方案,原创不易,欢迎关注测试代码:@RestController@RequestMapping("/test")public class TestController { private static Logger log = LoggerFactory.getLogger(TestController.class); @GetMapping("/test") public boolean test(){ Thread .原创 2021-11-22 17:45:51 · 409 阅读 · 0 评论 -
如何开启Nginx的SSL模块
一、开启Nginx的SSL模块1.1 Nginx如果未开启SSL模块,配置Https时提示错误原因也很简单,nginx缺少http_ssl_module模块,编译安装的时候带上--with-http_ssl_module配置就行了,但是现在的情况是我的nginx已经安装过了,怎么添加模块,其实也很简单,往下看: 做个说明:我的nginx的安装目录是/usr/local/nginx这个目录,我的源码包在/usr/local/src/nginx-1.6.2目录 1 ngi原创 2021-11-22 17:18:14 · 877 阅读 · 0 评论 -
Linux安装nginx
Linux安装nginx在linux下安装nginx,首先需要安装 gcc-c++编译器。然后安装nginx依赖的pcre和zlib包。最后安装nginx即可。1.先安装gcc-c++编译器yum install gcc-c++yum install -y openssl openssl-devel2.再安装pcre包yum install -y pcre pcre-devel3.再安装zlib包yum install -y zlib zlib-devel原创 2021-11-22 17:09:19 · 75 阅读 · 0 评论 -
Nginx|Tomcat|一份http转换为https请求的珍藏配置
前置条件已申请域名包括备案成功 SSL证书已获得 Nginx部署方式为源码部署,不会的请参考Linux安装nginx - star-xin - 博客园 nginx已加载SSL模块,不会的请参考nginx: [emerg] the "ssl" parameter requires ngx_http_ssl_module in /usr/local/nginx/conf/nginx.conf:37 - ノGHJ - 博客园nginx.conf正文(直接复制粘贴)改成自己域名、要转发的http原创 2021-11-22 17:06:30 · 83 阅读 · 0 评论 -
如何一步一步搭建FTP服务器
如何搭建FTP的服务器方法有好多种,而我今天只给大家说一种方法即可,是通过一款软件xlight去搭建,下面看是如何实现的。软件介绍 Xlight软件非常的小巧,大小不到2M,根据电脑的配置选择32位还是64位的。安装步骤,非常简单,一直下一步就可以了。这是安装完成之后的页面如何使用软件以及如何创建站点分配空间注:我以我本地的电脑为例,正式情况下应该是将此软件安装到服务器上,但使用方法是一样的。1、点开左上角的增加虚拟服务器2、出现弹框之后找到IP地址下拉框原创 2021-11-17 15:44:35 · 438 阅读 · 0 评论 -
详解分布式和集群
分布式小明的公司有3个系统: 系统A、系统B和系统C ,这三个系统所做的业务不同,被部署在3个独立的机器上运行, 他们之间互相调用(当然是跨域网络的), 通力合作完成公司的业务流程。将不同的业务分布在不同的地方, 这就构成了一个分布式的系统,现在问题来了, 系统A是整个分布式系统的“脸面”, 用户直接访问,用户量访问大的时候要么是速度巨慢,要么直接挂掉, 怎么办?由于系统A只有一份, 所以会引起单点失败。集群(Cluster)小明的公司不差钱,就多买几台机器吧, 小明把系统A一下子部转载 2021-11-15 16:55:42 · 126 阅读 · 0 评论 -
SpringBoot接口规范设计
1.背景在后端编程中,通常关心接口的以下4个部分:接口地址(url)、接口请求方式(method)、请求数据(parameter)、响应数据(response)本项目对后端接口的请求和响应数据进行规范,实现统一接口规范创建SpringBoot项目,导入web依赖包<?xml version="1.0" encoding="UTF-8"?><project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:x原创 2021-11-15 16:36:52 · 456 阅读 · 0 评论 -
深度解读什么是Maven和POM.XML
概念什么是MavenMaven 是 Apache 软件基金会组织维护的一款自动化构建工具,专注服务于 Java 平台的项目构建和依赖管理。Maven 这个单词的本意是:专家,内行。读音是[‘meɪv(ə)n]或[‘mevn]。什么是构建构建并不是创建,创建一个工程并不等于构建一个项目。要了解构建的含义我们应该由浅入深的从以下三个层面来看:纯 Java 代码大家都知道,我们 Java 是一门编译型语言,.java 扩展名的源文件需要编译成.class 扩展名的字节码文件才能够执行。所以原创 2021-10-29 14:13:55 · 256 阅读 · 0 评论 -
带你轻松入门Shiro
首先集成Spring、SpringMVC和Shiro<dependencies><dependency><groupId>org.springframework</groupId><artifactId>spring-context</artifactId><version>4.3.18.RELEASE</version&g...原创 2021-10-20 10:14:02 · 64 阅读 · 0 评论 -
SpringMVC-拦截器实战演练
1.概念Spring MVC中的拦截器(Interceptor)类似于Servlet中的过滤器(Filter),它主要用于拦截用户请求并作相应的处理。例如通过拦截器可以进行权限验证、记录请求信息的日志、判断用户是否登录等。要使用Spring MVC中的拦截器,就需要对拦截器类进行定义和配置。2.拦截器原理拦截器它是链式调用,一个应用中可以同时存在多个拦截器Interceptor, 一个请求也可以触发多个拦截器 ,而每个拦截器的调用会依据它的声明顺序依次执行。需要注意的是如上...原创 2021-09-26 09:51:47 · 103 阅读 · 0 评论 -
基于docker 部署redis cluster 生产集群
开始之前我们提出几个问题:什么是redis cluster ?keyHashSlot函数用来计算给定键应该被分配到哪个槽采用分片取模算法实现节点分配,节点数据存储。/* --------------cluster.c--------------------------------------------------------------- * Key space handling * ---------------------------------------------------.原创 2021-09-24 17:46:59 · 80 阅读 · 0 评论 -
Nginx同时支持Http和Https的配置
现在的网站支持Https几乎是标配功能,Nginx能很好的支持Https功能。下面列举一个配置同时支持Http和Https的功能。需要注意的是:既然选择使用Https,就是为了保证通信安全,那么就没必要再用Http进行通信了。在URL中还支持Http的方式,主要是为了用户不知道网站支持Https,还是使用Http的方式进行访问。这时Nginx后台需要自动将Http请求转成Https的方式,这样就又能支持Http,又能保证通信安全了。废话不多说,下面直接贴一个Nginx支持Http和Https的配置,大家原创 2021-09-24 17:30:59 · 5634 阅读 · 0 评论 -
Centos 7安装jdk+部署springboot项目+搭建配置nginx小白基础流程
环境:Centos 7 两台干净的虚拟机(可上外网,相互之间可ping通)192.168.20.109 作为应用服务器部署java项目192.168.20.112 作为nginx代理服务器一、安装jdk(采用了一键安装(yum安装))查看:1.查看是否已安装JDK# yum list installed |grep java2.卸载CentOS系统Java环境# yum -y remove java-1.8.0-openjdk* *表示卸载所有openjdk相关文件输入原创 2021-09-24 16:56:22 · 221 阅读 · 0 评论 -
Nginx搭建前端静态服务器+文件服务器
一、Nginx的虚拟主机介绍大家可能被虚拟主机不太了解,那我们的解释一下,虚拟主机指在一台物理主机服务器上划分出多个磁盘空间,每个磁盘空间都是一个虚拟主机,每台虚拟主机都可以对外提供Web服务,并且互不干扰。就类似我们本地虚拟机,我们可以在window系统上面安装一个虚拟机,在虚拟机里面安装很多个系统。那这样的话我们就可以模拟很多个服务器。Nginx虚拟主机配置, 我们可以在一台机器上面配置很多个虚拟主机配置多个域名。那这样的话我们就可以靠虚拟主机转发到不同的应用,就不用每个系统都配置一个Ngi原创 2021-09-10 15:27:24 · 267 阅读 · 0 评论 -
CentOS下安装Nginx的操作步骤
CentOS下安装Nginx步骤如下1、下载nginx安装包http://nginx.org/en/download.html下载nginx-1.14.2稳定版本2、yum安装nginx基础依赖包pcre-devel,pcre,openssl,openssl-devel[root@localhost ~]# yum install -y pcre pcre-devel openssl openssl-devel3、上传nginx安装包并解压4、编译安装nginx[ro原创 2021-09-10 15:19:41 · 157 阅读 · 0 评论 -
springboot整合 Mybatis、JPA、Redis
引言在springboot 项目中,我们使用ORM 框架来操作数据库变得非常方便。下面我们分别整合mysql ,spring data jpa 以及redis 。让我们感受下快车道。我们首先创建一个springboot 项目,创建好之后,我们来一步步的实践。使用mybatis引入依赖:<dependency> <groupId>org.mybatis.spring.boot</groupId> <artifactId>my原创 2021-09-10 15:09:30 · 158 阅读 · 0 评论 -
10分钟搭建基于Spring Cloud的微服务框架
现如今,Spring Cloud已经非常成熟了。上面提到的相关组件与Spring Cloud已经可以无缝连接,如果你使用Maven作为构建工具的话,只需要引入你想要的依赖,并在代码上加上相关的注解,或者在配置文件中输入你想要的配置,可以说是分分钟搞定一个微服务的框架。今天小编就来介绍一下搭建基于Spring Cloud的微服务框架是多么简单。1、 搭建工程。1.1、任意位置创建一个目录spring-cloud,在此目录下创建一个文本文件,取名pom.xml。1.2、 IDEA打开spring..原创 2021-09-10 14:50:29 · 202 阅读 · 0 评论 -
中小团队如何做好敏捷开发
You can't manage what you don't measure. - Peter Drucker你如果无法度量它,就无法管理它。这是现代管理学之父,彼得·德鲁克的一句名言。项目管理、敏捷开发的前提,还是需要把数据串起来,进行可视化、数据化,这样才能看到它,管理它。本文将以公司SaaS产品为例,介绍下“小团队”是如何进行敏捷研发的落地的。一、为什么要实施敏捷需求的进展不透明,不知道现在到哪里了 需求延期发布成为了家常便饭,不知道什么时候会发布上线 需求发布上线后,心.原创 2021-09-03 10:10:27 · 158 阅读 · 0 评论 -
SpringBoot 结合 Spring Cache 操作 Redis 实现数据缓存
系统环境:Redis 版本:5.0.7 SpringBoot 版本:2.2.2.RELEASE参考地址:Redus 官方网址:https://redis.io/ 博文示例项目 Github 地址:https://github.com/my-dlq/blog-example/tree/master/springboot/springboot-redis-cache-example一、缓存概念知识1、是什么缓存我们日常生活中,经常会接触听到缓存这个词,例如,浏览器清空缓存,处理器缓存大小转载 2021-09-01 18:04:22 · 539 阅读 · 0 评论 -
Java容器详解
一、容器的概念1. 什么是容器在Java当中,有一个类专门用来存放其它类的对象,这个类就叫做容器,它就是将若干性质相同或相近的类对象组合在一起而形成的一个整体 。2. 常用的Java容器二、List,Map,Set,Queue1. List有序的 collection(也称为序列)。此接口的用户可以对列表中每个元素的插入位置进行精确地控制。用户可以根据元素的整数索引(在列表中的位置)访问元素,并搜索列表中的元素。与 set 不同,列表通常允许重复的元素。Arraylist:原创 2021-08-30 09:26:41 · 594 阅读 · 0 评论 -
Nginx反向代理、动静分离和负载均衡
反向代理反向代理可以理解为客服端和服务端沟通经过一个代理,代理来分发请求Nginx通常被用作后端服务器的反向代理,这样就可以很方便的实现动静分离,以及负载均衡,从而大大提高服务器的处理能力。常用配置或第二种配置方式用了upstream,可以为之后负载均衡做准备动静分离动静分离,动态内容如php,jsp的页面必须由服务端动态处理,就转发到tomcat之类的容器,静态内容如图片,html就直接访问文件Nginx实现动静分离,其实就是在反向队里的时候,如果是静态资源,那..原创 2021-08-30 09:06:15 · 93 阅读 · 0 评论 -
图解Java中那18 把锁
乐观锁和悲观锁 独占锁和共享锁 互斥锁和读写锁 公平锁和非公平锁 可重入锁 自旋锁 分段锁 锁升级(无锁|偏向锁|轻量级锁|重量级锁) 锁优化技术(锁粗化、锁消除)乐观锁和悲观锁悲观锁悲观锁对应于生活中悲观的人,悲观的人总是想着事情往坏的方向发展。举个生活中的例子,假设厕所只有一个坑位了,悲观锁上厕所会第一时间把门反锁上,这样其他人上厕所只能在门外等候,这种状态就是「阻塞」了。回到代码世界中,一个共享数据加了悲观锁,那线程每次想操作这个数据前都会假设其他线程也可能会操作这个转载 2021-08-25 16:42:00 · 446 阅读 · 1 评论 -
证书、根证书、CA、证书不受信任详解
上过网的朋友一定知道http和https之间的区别:http是未加密的,而https是加密的。而之所以http未加密、https加密,是因为http使用明文socket,而https则使用加密socket(Security Socket Layer,已发展到Transport Layer Security)。在大学本科学习《计算机网络》这门课的时候,我们练习网络编程,所写的程序的是明文socket,是不安全的通信方式。现在互联网安全通信基本上都是建立在SSL协议基础之上的(OpenSSL...原创 2021-08-25 16:35:39 · 2097 阅读 · 0 评论 -
Elasticsearch集群迁移架构实战
前言Elastic自身设计了集群分片的负载平衡机制,当有新数据节点加入集群或者离开集群,集群会自动平衡分片的负载分布。需求背景公司原有大数据平台基于公有云构建,由于种种原因,现在需要迁移到自建机房,Elasticsearch集群承担了大数据平台主要的对外查询需求,也有部分实时计算需求基于Elasticsearch实现,所以需要在不影响应用系统体验的情况下做到平滑的迁移。本次分享讲述我们如何进行平滑迁移以及如何避坑。需要迁移的主要有两部分:对外提供的服务AP...原创 2021-08-25 16:22:49 · 120 阅读 · 0 评论 -
Spring源码阅读:Spring依赖注入容器
依赖注入依赖注入是Spring框架最核心的能力,Spring框架提供的AOP,WebMVC等其它功能都是以依赖注入容器作为基础构建的,Spring依赖注入容器类似于一个用于组装对象的框架内核,任何应用或者基于Spring的框架都能从中受益核心概念理解一个项目,我习惯从它的领域模型开始,领域模型即项目中的核心概念,Spring的依赖注入容器中有哪些核心概念?bean是spring中的核心概念之一,是spring操作的实体,对于bean,spring中有BeanD...原创 2021-08-25 16:17:20 · 98 阅读 · 0 评论 -
spring boot和spring cloud插件相互引入时,双方版本如何选择
我们在搭建spring Cloud和spring boot项目时,经常会因为两种的版本冲突导致项目失败。比如你的spring boot项目依赖是:<parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>2.5.3</versio...原创 2021-08-25 15:57:59 · 390 阅读 · 0 评论 -
微服务架构优点和缺点对比
在介绍业务场景之前,我们先来谈谈对微服务的一些理解。一、单体式架构 VS 微服务架构为了快速理解单体式架构与微服务架构之间的区别,我们先来看一个新零售系统的例子。比如门店(门店分为自营店和加盟店)想研发一款新零售系统进行商品售卖,它需要包含订单、营销、门店、商品、加盟商、会员等功能模块。在搭建新零售系统架构时,如果我们使用单体式架构进行设计,它的架构图如下所示:从图中我们发现,单体式架构将所有模块的代码存放在一个应用中,所有模块的数据存放在一个数据库中。在这种架构模式下,当业务.转载 2021-08-23 14:01:27 · 710 阅读 · 0 评论 -
IDEA修改springboot目项的启动图标
1、首先我们在resource目录下新建一个banner.txt文件,springboot启动项目的时候就会优先启动这个文件中的内容。如下图:2、我们用在线生成字符图标工具,生成自己喜欢的图标。地址如下:http://patorjk.com/software/taag/。如下图。3、将生成的图标复制粘贴到banner.txt文件里面,然后重启springboot项目就会打印出新的图标了。如下图:3、我们还可以修改颜色,显示版本号,springboot提供了一个枚举类AnsiColo.原创 2021-08-23 08:56:41 · 746 阅读 · 0 评论 -
手把手教你,在CentOS上安装ELK,进行服务器日志收集
每当项目上线时,因为项目是集群部署的,所以,来回到不同的服务器上查看日志会变得很麻烦,你是不是也碰到这样类似的问题,那么ELK将能解决你遇到的问题!01、ELK Stack 简介ELK 不是一款软件,而是 Elasticsearch、Logstash 和 Kibana 三种软件产品的首字母缩写。这三者都是开源软件,通常配合使用,而且又先后归于 Elastic.co 公司名下,所以被简称为 ELK Stack。根据 Google Trend 的信息显示,ELK Stac...原创 2021-08-19 16:59:45 · 166 阅读 · 0 评论 -
Springboot接口幂等性基于token实现方案
什么是接口幂等幂等(idempotent、idempotence)是一个数学与计算机学概念,常见于抽象代数中,即f(f(x)) =f(x).简单的来说就是一个操作多次执行产生的结果与一次执行产生的结果一致。有些系统操作天生就具有幂等性例如数据库的select语句,但更多时候是需要程序员来做保证的,尤其是在分布式系统环境中,接口能不能做到保证幂等性对系统的影响可能是非常大的,例如很常见的支付下单等场景,由于分布式环境中网络的复杂性,用户误操作,网络抖动,消息重复,服务超时导致业务自动重试...原创 2021-08-19 16:49:29 · 183 阅读 · 0 评论 -
对API网关注册和接入的接口安全管理总结
今天谈下对API网关接入的接口服务进行安全管理方面的内容。在原来谈Kong网关的时候,曾经谈到Kong网关和安全相关的插件能力,其中包括了身份认证插件:Kong提供了Basic Authentication、Key authentication、OAuth2.0 authentication、HMAC authentication、JWT、LDAP authentication认证实现。安全控制插件:ACL(访问控制)、CORS(跨域资源共享)、动态SSL、IP限制、爬虫检测实现。...转载 2021-08-19 16:43:00 · 1678 阅读 · 0 评论 -
详解Spring两大核心之一的IOC容器
IOC是什么IOC是“Inversion of Control”的缩写,翻译过来就是“控制反转”。我们先不深究其在Spring中的含义,先从字面上进行分析。打个比方来说:结婚前你的工资完全由你来支配,想怎么花就怎么花。结婚后变了,你的钱要上交给你媳妇了,你想花的时候得申请。此时你对工资的控制转变了,由原来的你控制,变成了你媳妇控制。这就是“控制反转”,本来属于你控制的事情,交由别人来控制,而你只在需要的时候进行获取就可以了。相信通过这个比喻大家对“...转载 2021-08-19 16:36:05 · 114 阅读 · 0 评论 -
分布式系统中很常见的负载均衡方案
HTTP 重定向负载均衡这种负载均衡方式仅适合WEB 服务器。用户发出请求时,负载均衡服务器会根据HTTP请求,重新计算出实际的WEB服务器地址,通过302重定向响应发送给用户浏览器。用户浏览器再根据302响应信息,对实际的WEB服务器发出请求。HTTP重定向方案优点是比较简单,缺点是性能比较差,需要2次请求才能返回实际结果,还有就是仅适合HTTP服务器使用。重定向服务器也很容易成为单点故障问题。DNS 域名解析负载均衡在DNS中存储了一个域名...原创 2021-08-16 09:50:42 · 101 阅读 · 0 评论 -
最详细的一篇SpringCloud总结
什么是Spring cloud构建分布式系统不需要复杂和容易出错。Spring Cloud 为最常见的分布式系统模式提供了一种简单且易于接受的编程模型,帮助开发人员构建有弹性的、可靠的、协调的应用程序。Spring Cloud 构建于 Spring Boot 之上,使得开发者很容易入手并快速应用于生产中。官方果然官方,介绍都这么有板有眼的。我所理解的 Spring Cloud 就是微服务系统架构的一站式解决方案,在平时我们构建微服务的过程中需要做如服务发现注册、配置中心、消息总线、负...转载 2021-08-15 13:14:36 · 279 阅读 · 0 评论 -
微服务治理与统计分析
概论:微服务架构下,服务拆得越细,服务的粒度越小,可组装性就越好;与之相对的服务之间的调用关系就会变复杂,为了保证服务更好的运行,需要对这些服务进行监控和管理。本文大家介绍下EOS微服务平台如果对微服务进行日志查看、API调用统计、限流、熔断、负载均衡的管理。目录:1.EOS微服务平台简介2.微服务监控统计3.微服务治理1.EOS微服务平台简介1、域是平台中一组系统的统称,通常为一组系统定义成有业务含义的域,比如信贷域。一个域有多个系统,一个系统只能属...转载 2021-08-13 08:45:56 · 308 阅读 · 0 评论 -
分布式锁5种特性、4个雷区、三种对比及详细脑图总结
分布式锁总结分布式锁实现方式在分布式系统中,为了保证同一时间只能由一个客户端对共享资源操作,我们通常采用加锁来实现,常见有三种方式:基于数据库实现的分布式锁 基于ZK实现的分布式锁 基于redis实现的分布式锁对一个分布式锁的调研,我们可以从以下5种特性和4个雷区来考量,一个分布式锁没有绝对的好与坏,只有是否满足你的需求。分布式锁需具备5种特性互斥性:当一个线程/进程加锁成功后,其他线程/进程无法加锁,具有排他性。 锁失效机制:加锁成功后,应用服务器宕机导致锁未能释放,服务恢复后原创 2021-08-14 15:01:20 · 1092 阅读 · 0 评论 -
SpringBoot动态定时任务详解
前言 定时器是我们项目中经常会用到的,SpringBoot使用@Scheduled注解可以快速启用一个简单的定时器(详情请看我们之前的博客《SpringBoot系列——定时器》),然而这种方式的定时器缺乏灵活性,如果需要对定时器进行调整,需要重启项目才生效,本文记录SpringBoot如何灵活配置动态定时任务代码编写 首先先建表,重要字段:唯一表id、Runnable任务类、Cron表达式,其他的都是一些额外补充字段DROP TABLE IF EXISTS `tb_task`;CRE原创 2021-08-14 14:54:31 · 282 阅读 · 0 评论