自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(108)
  • 收藏
  • 关注

原创 TCP连接建立时三次握手详解

1、概述 TCP连接建立过程中要解决以下三个问题: (1)要使每一方能够确知对方的存在。 (2)要允许双方协商一些参数(如最大报文段长度,最大窗口大小,服务质量等)。 (3)能够对运输实体资源(如缓存大小,连接表中的项目等)进行分配。 TCP 连接的建立都是采用客户服务器方式。主动发起连接建立的应用进程叫做客户(client)。被动等待连接建立的应用进程叫做服务器(server)。 2、三次握手过程...

2020-05-14 12:27:35 1660

原创 TCP报文段首部格式介绍

1、TCP报文段首部格式tu2、头部各个字段介绍(1) 源端口和目的端口: 源端口和目的端口字段各占 2 字节。端口是运输层与应用层的服务接口。运输层的复用和分用功能都要通过端口才能实现。 (2)序号字段 序号字段占 4 字节。要明确的是:TCP是面向字节流的(UDP是面向报文的),也就是说TCP 连接中传送的数据流中每一个字节都编上一个序号。序号字段的值则指的是本报文段所发送的数据的第一个字节的序号。 (3)确认号 确认号字段占 4..

2020-05-14 10:44:57 2798

原创 基于springboot+redis+rabbitmq的高并发秒杀系统实现-5

上一篇讲到秒杀过程,在后台的秒杀方法miaosha中通过sender.sendMiaoshaMessage(mm)向队列中发送了mm。1、上面的mm是封装类MiaoshaMessage的一个实例对象,此类中封装了user和商品goodsId。public class MiaoshaMessage { private MiaoshaUser user; private long goodsId; // set 和 get方法}2、sendMiaoshaMessage方法如下。通过rabb

2020-05-13 16:08:05 1124

原创 基于springboot+redis+rabbitmq的高并发秒杀系统实现-4

上篇讲述到了商品详情goods_detail.html页的展示问题,此篇开始讲述秒杀过程1、点击详情页中的“秒杀”按钮,会触发onclick事件getMiaosshaPath()。<button class="btn btn-primary" type="button" id="buyButton"onclick="getMiaoshaPath()">立即秒杀</button>2、getMiaosshaPath()方法如下。本秒杀系统在设计的时候,为了安全问题,隐藏了秒

2020-05-13 14:54:27 718

原创 基于springboot+redis+rabbitmq的高并发秒杀系统实现-3

上文讲到了登录成功,然后开始往后台/goods/to_list跳转。1、/goods/to_list方法如下。注意此处使用了thymeleaf模板引擎,通过引擎生成了html文件。@RequestMapping(value="/to_list", produces="text/html")中的produdes=“text/html”表示此方法将返回html格式的文件。在list方法中,先通过goodsSevice方法查询到商品列表数据。然后把列表数据存入到上下文SpringWebContxt中,最后再把

2020-05-13 11:10:43 1013

原创 基于springboot+redis+rabbitmq的高并发秒杀系统实现-2

,1、登录,在浏览器地址栏输入127.0.0.1:8080/login/to_login,会执行下面类LoginController中的toLogin方法,进而跳转到login.html界面 @RequestMapping("/to_login") public String toLogin() { return "login"; }2、login.html文件如下,首先是一个表单,两个输入框:请输入手好号码和请输入密码,还有两个按钮:重置和登录。<form name="

2020-05-13 08:37:52 773

原创 基于springboot+redis+rabbitmq的高并发秒杀系统实现-1

目录——项目简介——项目搭建——运行测试1、项目简介 本项目使用springboot框架构建一个秒杀系统,实现了商品列表查询、商品详情查看、商品秒杀功能和订单详情查看。重点在于秒杀功能。使用的技术栈包括:数据库:MySQL后台:SpringBoot前端:thymeleaf,jquery,javascript部署服务器:Linux其他技术:r...

2020-05-12 22:02:15 2077

原创 Linux中安装HAProxy

1、下载压缩包haproxy-1.8.25.tar.gz,然后上传到Linux服务器的usr/local目录下2、解压压缩文件后产生haproxy-1.7.8文件夹,命令:tar -zxvfhaproxy-1.8.25.tar.gz。3、为了方便,修改解压后的文件名。命令:mvhaproxy-1.7.8haproxy。4、编译安装,命令:makeTARGET=generic prefix=/usr/local/haproxy5、配置环境变量,命令:vim/etc/profile。...

2020-05-11 14:47:04 1429

原创 Linux中安装RabbitMQ(记录踩的坑)

1、感触(1)必要的总结是非常必要的。必要的总结是非常必要的。必要的总结是非常必要的。也踩了写坑,但是没有记录和总结,很长时间过去了,又要花大量时间去重新采坑,十分低效。(2)注意,注意,注意,此博文是基于我的“电脑生态”安装的,就是说,本博文记录的方法,是基于我的硬件、软件安装成功的,换个环境,可能就会出现问题,所以要有选择性的尝试。毕竟,大部分方法和步骤都是类似的。(3)不记录理论,直接记录操作过程。两个步骤,安装erlang(rabbitmq运行环境)和安装rabbitmq。(4)我的

2020-05-10 20:51:48 861

原创 MySQL数据库中的锁知识点梳理

1、概述锁是网络数据库中的一个非常重要的概念,当多个用户同时对数据库并发操作时,会带来数据不一致的问题。所以,锁的出现主要用于多用户环境下保证数据库完整性和一致性。并发控制的主要采用的技术手段:乐观锁、悲观锁和时间戳。2、锁的分类(1)从数据库系统角度分为三种:排他锁、共享锁、更新锁。(2)从开发人员角度分为两种:一种是悲观锁,一种乐观锁。顾名思义,悲观锁很悲观,每次去拿数...

2020-05-08 11:21:14 311

原创 MySQL中的两种存储引擎MyISAM和Innodb

本文目录: 1、概述 2、MyISAM 3、Innodb 4、区别 5、如何选择1、概述 数据库存储引擎是数据库底层软件组件,数据库管理系统使用数据引擎进行创建、查询、更新和删除数据操作。不同的存储引擎提供不同的存储机制、索引技巧、锁定水平等功能,使用不同的存储引擎还可以获得特定的功能。现在...

2020-05-08 10:44:22 426

原创 Java中equals()和hashCode()关系

1、equals和hashCode的作用(1)equals()equals方法是超类Object中的方法,用来判断两个对象是否相同,默认情况下是通过判断对象间的内存地址来决定是否相同。重写后,可以根据内容是否相同来决定对象是否相同。(2)hashCodea、概述 hashCode()方法返回的就是一个数值,也即哈希码。这个哈希码的作用是确定该对象在哈希表中的索引位置...

2020-05-07 16:45:06 476

原创 Java中equals和==详解

目录: 1、==作用 2、equals作用 3、小结1、==作用==是判断两个操作数是否相等。如果操作符两侧都是基本数据类型,比如是java中的8中基本数据类型byte,short,int,long,char,float,double和boolean之一的话,则比较的是数值是否相等。如果操作符两侧是引用类型(类)的话...

2020-05-07 15:03:19 256

转载 Java中接口与抽象类详解

1、抽象类在了解抽象类之前,先来了解一下抽象方法。抽象方法是一种特殊的方法:它只有声明,而没有具体的实现。抽象方法的声明格式为:abstractvoidfun();   抽象方法必须用abstract关键字进行修饰。如果一个类含有抽象方法,则称这个类为抽象类,抽象类必须在类前用abstract关键字修饰。因为抽象类中含有无具体实现的方法,所以不能用抽象类创建对象。  在《JAV...

2020-05-07 12:34:17 155

原创 Java中多态梳理以及代码示例

1、什么是多态所谓多态,就是指一个引用(类型)在不同的情况下的多种状态。也可以理解为,多态是指通过指向父类的指针,来调用在不同子类中实现的方法。详细来说,就是指程序中定义的引用变量所指向的具体类型和通过该引用变量发出的方法调用在编程时并不确定,而是在程序运行期间才确定,即一个引用变量倒底会指向哪个类的实例对象,该引用变量发出的方法调用到底是哪个类中实现的方法,必须在由程序运行期间才能决定。...

2020-05-07 09:17:27 305

原创 Java异常相关知识点和面经梳理

1、异常类在java中,异常对象都是派生于Throwable类的一个实例。当然,如果内置的异常类不能够满足需求的话,用户可以创建自己的异常类。下图是异常类的层次结构图:由图可知,所有的异常都是由Throwable继承而来,然后在下一层分解成两个分支:Error和Exception。Error类描述了Java运行时系统的内部错误和资源耗尽错误。应用程序不应该跑出这种类型的变量。开发人...

2020-05-06 20:22:38 290

原创 每日算法-1

1、LeetCode第46题:全排列给定一个没有重复数字的序列,返回其所有可能的全排列。示例:输入: [1,2,3]输出:[ [1,2,3], [1,3,2], [2,1,3], [2,3,1], [3,1,2], [3,2,1]](1)思路核心思想是在一个排列的基础上,1,2,3,按照规律交换位置,得到新的排列。比如1和2交换:2,1,3...

2020-05-06 17:06:53 135

原创 SpringBoot整合Redis集群

1、前提需要搭建好redis集群,并且远程可访问。此博文基于Linux环境搭建的redis集群,端口从7001到7006,一共6个redis实例。启动集群后,可以使用RedisDeskTopManager连接上。我踩的坑:Linux环境下,可以进入每个redis实例并进行操作。然后springboot整合好redis集群后,进行set和get操作时,一直显示:redis.clients.j...

2020-05-06 11:50:31 797

原创 Linux系统中搭建redis单机

1、redis单机(1)概述本教程使用redis3.0版本。3.0版本主要增加了redis集群功能。(2)前提准备 a、安装的前提条件:安装好了gcc b、下载redis的源码包(3)过程a、把源码包上传到linux服务器b、解压源码包,命令:tar -zxvf redis-3.0.0.tar.gz (z压缩格式、x解压、v显示进...

2020-05-06 10:52:43 226

原创 阿里大于短信服务以及与SpringBoot的整各

1、阿里大于概述 阿里大于是阿里云旗下产品,融合了三大运营商的通信能力,通过将传统通信业务和能力与互联网相结合,创新融合阿里巴巴生态内容,全力为中小企业和开发者提供优质服务阿里大于提供包括短信、语音、流量直充、私密专线、店铺手机号等个性化服务。通过阿里大于打通三大运营商通信能力,全面融合阿里巴巴生态,以开放API及SDK的方式向开发者提供通信和数据服务,更好地支撑企业业务发展和创新...

2020-05-05 18:29:23 542

原创 Linux一些面试题

1、怎么查看当前进程?怎么执行退出?怎么查看当前路径?(1)查看进程ps aux | grep redis 查看redis服务进程top 查看进程动态kill -9 进程id 终止指定的进程(数字9表示强制终止进程)(2)退出:exit(3)查看当前...

2020-05-05 15:23:33 212

原创 Linux常用命令梳理

1、ls命令:主要作用是显示目录下的内容语法:ls [选项][文件名或目录名]选项:-a:显示所有文件; -d:显示目录信息,而不是目录下的文件; -h:人性化显示,按照我们习惯的单位显示文件大小; -i:显示文件的 i 节点号; -l:长格式显示;2、cd命令:切换所在目录语法:cd [目录名];比如,cd /usr/local,表示切换到usr/local目录特殊...

2020-05-05 14:54:32 156

原创 Nginx之事件驱动架构

1、概述 由一些事件发生源来产生事件,由一个或多个事件收集器来收集、分发事件,然后许多事件处理器会注册自己感兴趣的事件,同时会消费这些事件。对于Nginx Web服务器而言,一般会由网卡、磁盘产生事件,事件模块将负责事件的收集、分发操作,而所有的模块都可能是事件消费者,它们首先需要向事件模块注册感兴趣的事件类型,在有事件产生时,事件模块会把事件分发到相应的模块中进行处理。 ...

2020-05-04 21:52:44 544

原创 Nginx面经梳理

1、Nginx是什么,有什么优势(1)是什么Nginx是一个高性能的 HTTP 和 反向代理服务器,也是一个 IMAP/POP3/SMTP 代理服务器。因它的稳定性、丰富的功能集和低系统资源的消耗而闻名。(2)优势更快表现在两个方面:一方面,在正常情况下,单次请求会得到更快的响应;另一方面,在高峰期(如有数以万计的并发请求),Nginx可以比其他Web服务器更快地响应请求。(高并...

2020-05-04 21:47:23 593

原创 Nginx配置文件梳理解释

######Nginx配置文件nginx.conf中文详解######定义Nginx运行的用户和用户组,nginx的Linux版本中:# user nobodyuser www www;#nginx进程数,建议设置为等于CPU总核心数。worker_processes 8;#全局错误日志定义类型,[ debug | info | notice | warn | error | c...

2020-05-04 20:53:15 122

原创 Nginx静态资源配置

1、概述本篇博文记录把静态资源放到Linux中搭建的Nginx服务的过程。2、资源准备(1)静态资源:搜索页面和购物车的静态html文件,以及css、js和图片等资源(2)上传到Nginx服务器的某目录可以使用3、Nginx配置(1)nginx.conf文件配置新增两个server模块,一个模块对应的是一个虚拟主机,此处采用端口和域名进行区分。购物...

2020-05-04 20:46:01 2327

原创 常用排序算法总结——java代码实现

1、冒泡排序(1)算法思想水中气泡密度小于水,所以水泡会往上去。密度小往上跑,密度大往下压。冒泡排序就是这个一个过程,每次排序中,大的数据往后放,小的数据相对往前放。反复执行这个过程,最终达到全部排序的目的。如何保证大的数据往后放,小的数据往前放呢?采用相邻元素之间做比较的方式,只有当前面元素大于下一个元素的时候才进行交换,每个元素都与相邻元素进行这样的比较和交换操作,最终最大的...

2020-05-04 12:26:01 159

原创 Java中Arrays的相关方法总结

1、Arrays.sort()方法sort方法是类Arrays中的静态方法,如同Collections中的静态方法sort一样,都是实现对元素的排序功能,Arrays.sort对数组中的元素进行排序。(1)Arrays.sort(int[] a)只传入一个数组作为参数时,作用是对一个数组的所有元素进行排序,并且是按从小到大的顺序。(2)Arrays.sort(int[] a, in...

2020-04-30 18:33:43 154

原创 java中线程池知识点和面经梳理

1、池化技术 池化技术应用广泛,线程池、数据库连接池、Http 连接池等等都是对这个技术的应用。池化技术的思想主要是为了减少每次获取资源的消耗,提高对资源的利用率。线程池提供了一种限制和管理资源(包括执行一个任务)。 每个线程池还维护一些基本统计信息,例如已完成任务的数量。 这里借用《Java 并发编程的艺术》提到的来说一下使用线程池的好处: ...

2020-04-30 10:40:25 362

原创 java中synchronized、ReentrantLock、volatile等锁相关知识点和面经梳理

1、synchronized 关键字(1)概述 synchronized关键字解决的是多个线程之间访问资源的同步性,synchronized关键字可以保证被它修饰的方法或者代码块在任意时刻只能有一个线程执行。另外,在 Java 早期版本中,synchronized属于重量级锁,效率低下,因为监视器锁(monitor)是依赖于底层的操作系统的 Mutex Lock 来实现的,J...

2020-04-30 09:58:08 332

原创 Java进程相关知识点和面经梳理

1、进程和线程(1)进程进程是程序的一次动态地执行过程,是系统运行程序的基本单位。进程是动态的,系统完整地运行一个程序就是一个进程从创建,运行到消亡的过程。在 Java 中,当我们启动 main 函数时其实就是启动了一个 JVM 的进程,而 main 函数所在的线程就是这个进程中的一个线程,也称主线程。如下图所示,在 windows 中通过查看任务管理器就可以清楚看到 window 当...

2020-04-30 09:14:07 197

原创 Redis的单线程模型、为什么redis单线程模型却可以支持高并发

1、单线程模型redis 的线程模型redis 内部使用文件事件处理器file event handler,这个文件事件处理器是单线程的,所以 redis 才叫做单线程的模型。它采用 IO 多路复用机制同时监听多个 socket,将产生事件的 socket 压入内存队列中,事件分派器根据 socket 上的事件类型来选择对应的事件处理器进行处理。文件事件处理器的结构包含 4 个部分:...

2020-04-29 15:06:54 495

原创 为什么使用redis、redis 和 memcached 的区别、redis支持的数据类型

1、为什么用redis使用redis缓存,主要是为了解决两个问题:高性能和高并发(1)高性能如果不使用缓存的话,对于一些需要后台程序经过复杂的计算、返回的数据相对稳定(不经常变化)、大量用户频繁访问的请求,对于这样类型请求的处理将会是十分低效的。既然数据相对稳定,变化很少,为什么每次请求的时候都要单独去查询呢?把之前已经查询出来的结果单独保存起来,获取的时候不用再去复杂的查询而是直接...

2020-04-29 14:46:20 691

原创 Redis中数据的过期策略和内存淘汰机制讲解

1、为什么要设置过期Redis是基于内存的非关系型数据库。既然基于内存,所以可知受到内存容量的限制,Redis中能够存储的数据量一般太大,所以可以为redis中的数据设置过期时间,到期后就可以按照设置的机制对这些过期的数据进行删除,从而腾出空间来存放接下来需要存储的新的数据。2、过期策略(1)定期删除所谓定期删除,指的是 redis 默认是每隔固定的时间就随机抽取一些设置了过期时间...

2020-04-29 10:09:45 443

原创 Java中PriorityQueue梳理和解析

1、概述PriorityQueue 一个基于优先级的优先级队列。队列中的元素按照其自然顺序(比如数值类型从小到大的顺序)进行排序,或者根据构造队列时提供的 Comparator 进行排序,具体取决于所使用的构造方法。该队列不允许使用 null 元素也不允许插入不可比较的对象(没有实现Comparable接口的对象)。根据排序规则不同,PriorityQueue 队列的头指向排序规则中的最值元素...

2020-04-29 09:39:39 289

原创 MQ相关面试题

1、为什么使用MQ也就是要明确MQ的使用场景,在什么情况下使用,而不是人云亦云,想当然的使用,MQ的使用是为了解决某些问题的消息队列主要解决如下问题:异步处理:多应用对消息队列中同一消息进行处理,应用间并发处理消息,相比串行处理,减少处理时间;应用耦合:多应用间通过消息队列对同一消息进行处理,避免调用接口失败导致整个过程失败;限流削峰:广泛应用于秒杀或抢购活动中,避免流量过大导...

2020-04-23 11:09:18 1949

原创 FastDFS理论讲解和入门案例

1、概述 是什么: FastDFS是一个开源的轻量级分布式文件系统,它对文件进行管理,功能包括:文件存储、文件同步、文件访问(文件上传、文件下载)等,解决了大容量存储和负载均衡的问题。特别适合以文件为载体的在线服务,如相册网站、视频网站等。 类型:FastDFS服务端有两个角色:跟踪器(tracker)和存储节点(storage)。Tracker server 作用...

2020-04-18 22:21:24 388

原创 SpringBoot整合RabbitMQ实战案例

1、环境搭建(1)pom依赖:要使用RabbitMQ,只需要额外如下依赖<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-amqp</artifactId> </depen...

2020-04-15 23:42:51 832

原创 回溯法——剑指offer案例

1、剑指offer——机器人的运动范围(1)题目 地上有一个m行和n列的方格。一个机器人从坐标0,0的格子开始移动,每一次只能向左,右,上,下四个方向移动一格,但是不能进入行坐标和列坐标的数位之和大于k的格子。 例如,当k为18时,机器人能够进入方格(35,37),因为3+5+3+7 = 18。但是,它不能进入方格(35,38),因为3+5+3+8 = 19。请问该机器人能够达...

2020-04-11 14:11:30 114

原创 找出最小的K个数——优先队列和选择算法(分治思想)两种方式

题目:设计一个算法,找出数组中最小的k个数。以任意顺序返回这k个数均可。1、优先队列解法(1)分析:定义一个PriorityQueue类型的优先队列queue,在初始化时指定队列为固定大小k,只能存储k个元素,同时自定义优先队列的优先规则(排序规则)(PriorityQueue用法单独写个博客来梳理)。从头到尾遍历数组元素,当queue中元素不等于k时,队列不满,数组中元素加入队列;当...

2020-04-10 22:35:19 785

空空如也

空空如也

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

TA关注的人

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