自定义博客皮肤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)
  • 收藏
  • 关注

原创 Linux系统中Nginx反向代理之配置动静分离

一、什么是动静分离Nginx动静分离简单来说就是把动态跟静态请求分开,不能理解成只是单纯的把动态页面和静态页面物理分离。严格意义上说应该是动态请求跟静态请求分开,可以理解成使用Nginx处理静态页面,Tomcat处理动态页面。动静分离从目前实现角度来讲大概分为两种。一种是纯粹把静态文件独立成单独的域名,放在独立的服务器上,也是目前主流推崇的方案;另外一种方法就是动态跟静态文件混合在一起发布,通过Nginx来分开。通过location指定不同的后缀名实现不同的请求转发。通过expires参数设置,可.

2020-11-28 18:00:53 2

原创 Nginx负载均衡四种分配策略

Nginx提供了几种分配方式(策略)1、轮询(默认)每个请求按时间顺序逐一分配到不同的后端服务器,如果后端服务器宕机,能自动剔除掉。2、weightweight代表权重,默认为1,权重越高被分配的客户端越多。指定轮询几率,weight和访问比率成正比,用户后端服务器性能不均的情况。例如:upstream myserver { server 123.56.241.139:8080 weight=5; server 123.56.241.139:8081 we

2020-11-28 17:13:55 4

原创 Linux中Nginx反向代理之负载均衡实现

一、什么是负载均衡单个服务器解决不了,我们增加服务器数量,然后将请求分发到各个服务器上,将原先请求集中到单个服务器上的情况改为将请求分发到多个服务器上,将负载分发到不同的服务器上,也就是我们所说的负载均衡。二、Nginx实现负载均衡1、实现效果(1)浏览器地址栏中输入地址 http://123.56.241.139/index/index.html,通过负载均衡,请求平均分配到8080和8081服务端口中。2、准备工作(1)Linux系统中准备两台tomcat服务器,一台tom.

2020-11-28 17:01:23 3

原创 Linux中Nginx反向代理实现不同路径访问不同的页面

实现效果使用nginx反向代理,根据访问的路径跳转到不同端口的服务中,nginx监听端口为9001访问 http://123.56.241.139:9001/zhao/ 直接跳转到127.0.0.1:8080访问 http://123.56.241.139:9001/hao/ 直接跳转到127.0.0.1:8081第一步:准备工作(1)在Linux系统中准备两个tomcat服务器,一个tomcat服务器是8080端口,一个tomcat服务器是8081端口8080端口的tomc..

2020-11-28 13:03:32 17

原创 Linux中Nginx反向代理实现访问Tomcat首页

Linux系统中通过Nginx反向代理实现在浏览器中输入网址访问tomcat首页访问过程逻辑图分析图最终实现效果:如果不清楚Linux中安装Nginx和Tomcat的可以看下我另外两篇关于Linux中安装Nginx和Tomcat的博客Linxu中安装配置Nginx博客地址:https://blog.csdn.net/qq_26420601/article/details/110148854Linux中安装配置Tomcat博客地址:https://blog.csdn.net/qq_

2020-11-27 22:47:25 9

原创 Linux系统中安装Tomcat及启动访问

第一步:下载Tomcat并上传至Linux服务器对应目录中Tomcat官网地址:https://tomcat.apache.org/下载对应的Tomcat版本第二步:解压Tomcat并启动解压:tar -zxvfapache-tomcat-9.0.40.tar.gz启动tomcat:进入到apache-tomcat-9.0.40的bin目录中,执行命令:./startup.sh然后可以查看一下启动日志,进入到apache-tomcat-9.0.40的bin..

2020-11-27 21:21:29 5

原创 Linux系统中安装Nginx

1、步骤一nginx官网(http://nginx.org/en/download.html)下载nginx版本下载的nginx将nginx放到Linux系统目录中2、步骤二在安装nginx之前需要先安装nginx相关的依赖,如下列出的三个依赖pcre-8.37.tar.gzopenssl-1.0.1t.tar.gzzlib-1.2.8.tar.gz...

2020-11-26 21:16:15 9

原创 Linux中安装docker

Docker(yum安装)Docker官网地址:https://docs.docker.com/engine/install/centos/Linux系统下安装,一定要联网,yum在线安装。1、首先先检查一下Centos版本信息rpm -q centos-release2、安装我们的准备环境yum -y install 包名 # yum install 安装命令,-y 意指所有的提示都为 yyum -y install gcc # 安装c相关信息yu...

2020-11-24 21:51:06 13

原创 Linux中安装jdk及环境变量配置

这里以VMware上的CentOS为例来进行jdk的安装。先查看一下Linux中是否已经安装了jdk,并检查版本命令:java -version检查后发现Linux中已经默认安装了一个jdk(openjdk version "1.8.0_212"),这个jdk版本是VMware上虚拟机自带的jdk,这时我们需要把openjdk卸载掉,然后来安装java jdk版本卸载openjdk命令:rpm -qa|grep java或jdk找出所有和java或jdk相关的,然后执行删除命

2020-11-15 21:33:31 26

原创 Linux基础知识点

Linux基本概述Linux 内核最初只是由芬兰人林纳斯·托瓦兹(Linus Torvalds)在赫尔辛基大学上学时出于个人爱好而编写的。(说实话真特么羡慕这类人)类 Unix 操作系统,基于 POSIX 和 UNIX 的多用户、多任务、支持多线程和多 CPU 的操作系统。支持 32 位和 64 位硬件继承了 Unix 以网络为核心的设计思想,是一个性能稳定的多用户网络操作系统。发行版Linux 的发行版说简单点就是将 Linux 内核与应用软件做一个打包。应用领域通常服..

2020-11-10 21:45:36 58

原创 windows操作快捷键

快速开启运行窗口快捷键:windows键+R快速打开Windows开始菜单:windows键+X打开记事本快捷键:windows键+R,然后输入 notepad连接远程桌面快捷键:windows键+R,然后输入 mstsc打开画图工具快捷键:windows键+R,然后输入 mspaint打开计算器快捷键:windows键+R,然后输入 calc返回桌面快捷键:windows键+D打开我的电脑快捷键:windows键+E关闭浏览器页签快捷键:windows键+W电脑锁屏快捷

2020-11-10 20:47:08 14

原创 JVM快速入门

JVM探究请谈谈你对jvm的理解?java8虚拟机和之前的变化更新? 什么是OOM?什么是栈溢出StackOverFlowError?怎么分析? JVM的常用调优参数有哪些? 内存快照如何抓取?怎么分析Dump文件? 谈谈JVM中,你对类加载器的认识?JVM的位置 JVM的体系结构 类加载器 双亲委派机制 沙箱安全机制 Native PC寄存器 方法区 栈 三种JVM 堆 新生区、老年区 永久区 堆内存调优 GC垃圾回收器(常用算法) JMMJVM的位置..

2020-11-01 16:44:27 19

原创 Response重定向

什么是重定向?B一个web资源收到客户端A请求后,B它会通知A客户端去访问另外一个web资源C,这个过程及叫做重定向。常见场景:用户登录void sendRedirect(String var) throws IOException;测试:@Overrideprotected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException,IOException{ .

2020-09-27 22:39:25 35

原创 vue-ant-design实现<a-table>表格行合并

// 动态计算需要合并的单元格的行 const temp = {}; // 当前重复的值,支持多列 const mergeCells = (text, array, columns) => { let i = 0; if (text !== temp[columns]) { temp[columns] = text; array.forEach((item) => { .

2020-09-26 22:00:12 237

原创 理解Session Cookie Token

CookieCookie是一个非常具体的东西,指的就是浏览器中可以永久存存储的一种数据,仅仅是浏览器实现的一种数据存储功能。Cookie由服务器生成,发送给浏览器,浏览器把cookie以key-value键值对的形式保存到某个目录下的文本文件内,下一次请求同一个网站时会把该cookie发送给服务器。由于cookie是存在于客户端上的,所以浏览器加入了一些限制来确保cookie不会被恶意使用,同时不会占据太多的磁盘空间,所以每个域的cookie数量是有限的。Sessionsession从字面上

2020-09-23 23:36:49 21

原创 StringUtils工具类

import java.util.ArrayList;import java.util.List;import java.util.regex.Matcher;import java.util.regex.Pattern;/** * @author zhh * @description * @date 2020/9/23 */public class StringUtils { /** * 判断ip合法性 * * @param ip *..

2020-09-23 11:35:45 24

原创 ==和equals()

==“ == ” 基本类型比较(运算符所进行的是所引用对象的内存地址是否一致)。equals()equals()对象之间的比较(方法是String类中的方法,其所进行的是两个对象引用所指的内容是否相同的比较)。示例:public static void main(String[] args) { String a = "hello"; String b = "hello"; System.out.println(a.equals(b));

2020-09-23 10:23:56 11

原创 Servlet之ServletContext

ServletContextWeb容器在启动的时候,它会为每个Web程序创建一个对应的ServletContext对象,它代表了当前的web应用。共享数据,可以实现servlet之间的通信。HelloServletpackage com.yntravelsky.servlet;import javax.servlet.ServletContext;import javax.servlet.ServletException;import javax.servlet.http.Http.

2020-09-22 23:54:56 675

原创 Http --> 超文本传输协议

什么是Http超文本传输协议(英文:HyperText Transfer Protocol,缩写:HTTP)是一种用于分布式、协作式和超媒体信息系统的应用层协议。HTTP是万维网的数据通信的基础。HTTP是一个客户端终端(用户)和服务器端(网站)请求和应答的标准(TCP)。通过使用网页浏览器、网络爬虫或者其它的工具,客户端发起一个HTTP请求到服务器上指定端口(默认端口为80)。我们称这个客户端为用户代理程序(user agent)。应答的服务器上存储着一些资源,比如HTML文件和图像。我们称这个应答服

2020-09-21 00:52:11 22

原创 Servlet实现小Demo

1、IDEA中创建一Javaweb项目2、删除src文件,并在pom.xml中引入servlet相关的依赖pom.xml<?xml version="1.0" encoding="UTF-8"?><project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLoc.

2020-09-20 00:24:04 28

原创 Java工具类DateUtil

import org.apache.commons.lang3.StringUtils;import java.text.ParseException;import java.text.SimpleDateFormat;import java.util.Calendar;import java.util.Date;import java.util.GregorianCalendar;/** * 功能描述:日期工具 */public final class DateUtil { .

2020-09-18 23:50:01 86

原创 springcloud+springboot微服务架构

微服务架构4个核心问题:服务这么多,客户端该怎么来访问? 这么多服务,那么服务之间是如何通信的? 这么多服务,那么服务该如何治理? 这么多服务,服务挂了怎么办?

2020-09-18 15:21:40 45

原创 springboot+mybatis

第一步:新建springboot项目第二步:pom.xml文件中引入相关的依赖pom.xml<?xml version="1.0" encoding="UTF-8"?><project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://m...

2020-09-18 12:18:58 28

原创 springboot+shiro实现授权和认证

1、新建springboot项目第二步:pom.xml文件中引入依赖相关的基础依赖及shiro依赖<?xml version="1.0" encoding="UTF-8"?><project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://ma...

2020-09-18 00:16:48 24

原创 多线程lock锁

package com.haohao.test;import java.util.concurrent.locks.ReentrantLock;/** * @author zhh * @description * @date 2020/9/16 */public class TestLock { public static void main(String[] args) { MyLock lock = new MyLock(); new Th.

2020-09-16 16:39:19 16

原创 线程优先级

Java提供一个线程调度器来监控程序中启动后进入就绪状态的所有线程,线程调度器按照优先级决定应该调度哪个线程来执行。线程的优先级用数据表示,范围从1~10Thread.MIN_PRIORITY = 1;Thread.MAX_PRIORITY = 10;Thread.NORM_PRIORITY = 5;使用以下方式改变或获取优先级getPriority() setPriority(int xx)优先级低只是意味着获得调度的概率低,并不是优先级低就不会被调用了,这都是看CPU的调度。pa.

2020-09-16 15:34:22 14

原创 Thread.yield() 插队

package com.haohao.test;/** * @author zhh * @description join合并线程,待此线程执行完成后,再执行其他线程,其他线程阻塞 * 可以理解为插队 * @date 2020/9/16 */public class TestJoin implements Runnable { @Override public void run() { for (int i = 0; i < 50; i++) { .

2020-09-16 14:55:49 11

原创 Thread.yield()线程礼让

package com.haohao.test;/** * @author zhh * @description 测试礼让线程 * @date 2020/9/16 */public class TestYield { public static void main(String[] args) { MyYield yield = new MyYield(); new Thread(yield, "A线程").start(); new .

2020-09-16 14:42:16 5

原创 Thread.sleep()模拟倒计时

package com.haohao.test;/** * @author zhh * @description 模拟倒计时 * @date 2020/9/16 */public class TestSleep { public static void down() throws InterruptedException { int num = 10; while (true) { Thread.sleep(1000);// .

2020-09-16 14:27:32 33

原创 如果让线程停止

package com.haohao.test;/** * @author zhh * @description 线程停止 * 1、建议线程正常停止---利用次数,不建议死循环 * 2、建议使用标记位---设置一个标记位 * 3、不要使用stop或者destory等过时或者JDK不推荐使用的方法 * @date 2020/9/16 */public class TestStop implements Runnable { private boolean flag = true.

2020-09-16 14:12:31 21

原创 lamda表达式演进

Java8新特性 lamba1.lambda表达式是匿名函数,只不过长得不太像而已,可以看成是进化版。2.lambda表达式是用来创建委托或者目录树的匿名函数。package com.haohao.test;/** * @author zhh * @description * @date 2020/9/16 */public class Test3 { public static void main(String[] args) { ILike l...

2020-09-16 12:26:07 52

原创 多线程实现龟兔赛跑

package com.haohao.test;/** * @author zhh * @description 多线程模拟龟兔赛跑 * @date 2020/9/16 */public class Test2 implements Runnable { // 胜利者 private static String winner; @Override public void run() { for (int i = 0; i <= 100.

2020-09-16 11:39:02 30

原创 Springboot加载thymeleaf模板引擎

第一步:pom文件引入thymeleaf模板引擎依赖。第二步:在resources目录中的templates目录中变现html页面。第三步:通过编写的Controller类来执行html页面的跳转,注意:在templates目录下的所有页面,只能通过controller来跳转。第四步:浏览器中访问获得页面。...

2020-09-15 11:30:47 9

原创 Springboot加载yml配置文件中的数据

Springboot加载yml配置文件中的数据第一种方式:定义一个实体类,加载定义在实体变量上的数据。第二种方式:在application.yml文件中定义数据,然后在实体类中引入并加载yml配置文件中定义的数据...

2020-09-14 16:55:42 17

原创 Springboot打Jar包并运行

第一步:pom.xml文件中添加 <build> <!-- 打jar包插件 --> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artif

2020-09-14 16:02:42 6

原创 Springboot自动装配原理

@SpringBootApplication:标识是springboot应用@SpringBootConfiguration@EnableAutoConfiguration:自动导入包@ComponentScan:扫描当前主启动类下同级的包

2020-09-14 15:03:05 33

原创 消息中间件MQ

1、MQ中如何保证消息不会被重复消费?(1)如果消息是要存入到数据库里面的话,可以用主键来表示,如果已经消费了的消息并存入了数据库中,那么这条消息再次消费的时候,数据库就会提示主键冲突,直接抛出异常,那么,这是只需要update一下就可以了,同时也避免了把脏数据写入到数据库中去。(2)可以依托第三方来做消息记录,比如redis,可以将消费的消息保存到redis中,已key-value的形式保存到redis缓存中,那么在消费者消费之前,可以先去redis里面查询一次,如果已经存在,则不需要进行消费了,

2020-09-04 22:10:55 20

原创 SpringMVC工作原理

SpringMVC工作原理用户发起请求到前端控制器(DispatcherServlet)。 前端控制器请求处理器映射器(HandlerMappering)去查找处理器(Handle):通过xml配置或者注解进行查找。 找到以后处理器映射器(HandlerMappering)向前端控制器返回执行链(HandlerExecutionChain)。 前端控制器(DispatcherServlet)调用处理器适配器(HandlerAdapter)去执行处理器(Handler)。 处理器适配器去执行Han

2020-09-03 15:11:33 16

原创 Request请求转发

请求转发和请求重定向用户向服务器发送了一次HTTP请求,该请求肯能会经过多个信息资源处理以后才返回给用户,各个信息资源使用请求转发机制相互转发请求,但是用户是感觉不到请求转发的。根据转发方式的不同,可以区分为直接请求转发(Forward)和间接请求转发(Redirect)两种。直接转发方式(Forward)客户端和浏览器只发出一次请求,Servlet、HTML、JSP或其它信息资源,由第二个信息资源响应该请求,在请求对象request中,保存的对象对于一个每个信息资源是共享的。直接转发方式用

2020-09-02 23:22:13 63

原创 Java设计模式

什么是设计模式设计模式是一套被反复使用的、多数人知晓的、经过分类编目的、代码设计经验的总结。使用设计模式是为了重用代码、让代码更容易被他人理解、保证代码可靠性。 毫无疑问,设计模式于己于他人于系统都是多赢的,设计模式使代码编制真正工程化,设计模式是软件工程的基石,如同大厦的一块块砖石一样。项目中合理地运用设计模式可以完美地解决很多问题,每种模式在现实中都有相应的原理来与之对应,每种模式都描述了一个在我们周围不断重复发生的问题,以及该问题的核心解决方案,这也是设计模式能被广泛应用的原因。什么是 GOF

2020-09-02 18:13:07 34

空空如也

空空如也

空空如也

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

TA关注的人 TA的粉丝

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