自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

多回头看一看

愿经历再多的失落,眼神依然闪烁

  • 博客(230)
  • 收藏
  • 关注

原创 2_第二章_ 应用层协议原理

应用层的目标:网络应用的原理:网络应用协议的概念和实现方面传输层的服务模型客户-服务器模式对等模式(peer-to-peer)内容分发网络网络应用的实例:互联网流行的应用层协议HTTPFTPSMTP / POP3 / IMAPDNS编程:网络应用程序Socket API一些网络应用的例子:E-mail、Web、文本消息、远程登录、P2P文件共享、即时通信、多用户网络游戏、流媒体(YouTube, Hulu, Netflix) 、Internet 电话、实时电视会议.

2021-05-20 08:54:13 359

原创 1_第一章_计算机网络概述

课程参考哔哩哔哩中科大郑老师:《计算机网络(自顶向下方法 第7版,James F.Kurose,Keith W.Ross)》课程PDF资源:链接: https://pan.baidu.com/s/1gvmX9CI0dS1P8_c2vYbxYQ 密码: 2dup什么是Internet从具体构成角度节点:主机及其上运行的应用程序路由器、交换机等网络交换设备边:通信链路接入网链路:主机连接到互联网的链路主干链路:路由器间的链路协议:什么是协议 ==> 对等层.

2021-05-17 08:50:48 924

转载 Mac上IntelliJ IDEA快捷键汇总

Mac上IntelliJ IDEA快捷键汇总参考:https://blog.csdn.net/qq_40944241/article/details/103010402

2021-03-16 15:48:23 266

原创 17_redis缓存过期淘汰策略

面试题问题1:生产上你们的redis内存设置多少?问题2:如何配置、修改redis的内存大小?问题3:redis清理内存的方式?定期删除和惰性删除了解过吗?问题4:redis缓存淘汰策略?问题5:redis的LRu了解过吗?可否手写一个LRu算法?redis默认内存多少?在哪里查看? 如何设置修改?查看Redis最大占用内存打开redis配置文件,设置maxmemory参数,maxmemory是bytes字节类型,注意转换。redis默认内存多少可以用?一

2021-02-04 14:32:22 251 1

原创 16_分布式锁

分布式锁的面试题问题1:Redis除了拿来做缓存,你还见过基于Redis的什么用法?答:传统五大数据类型的落地应用;做分布式锁问题2:Redis做分布式锁的时候有需要注意的问题?问题3:如果是Redis是单点部署的,会带来什么问题?​ 那你准备怎么解决单点问题呢?问题4:集群模式下,比如主从模式,有没有什么问题呢?问题5:那你简单的介绍一下Redlock吧?你简历上写redisson,你谈谈问题6:Redis分布式锁如何续期?看门狗知道吗?Base案例(boo

2021-02-04 14:29:30 262 2

原创 15_redis传统五大基本类型的落地应用

官网命令大全网址:http://www.redis.cn/commands.html8大类型:String(字符类型)Hash(散列类型)List(列表类型)Set(集合类型)SortedSet(有序集合类型,简称zset)Bitmap(位图)HyperLogLog(统计)GEO(地理)备注:命令不区分大小写,而key是区分大小写的help @类型名词String# 最常用set key valueget key# 同时设置/获取多个键值(m就是mor

2021-02-04 14:25:16 186

原创 14_Redis 分布式锁

是什么线程锁:主要用来给方法、代码块加锁。当某个方法或代码使用锁,在同一时刻仅有一个线程执行该方法或该代码段。线程锁只在同一JVM中有效果,因为线程锁的实现在根本上是依靠线程之间共享内存实现的,比如synchronized是共享对象头,显示锁Lock是共享某个变量(state)。进程锁:为了控制同一操作系统中多个进程访问某个共享资源,因为进程具有独立性,各个进程无法访问其他进程的资源,因此无法通过synchronized等线程锁实现进程锁。分布式锁:当多个进程不在同一个系统中,用分布式锁控制多个进程

2021-02-04 14:19:37 210

原创 13_缓存三大问题

是什么广义的缓存就是在第一次加载某些可能会复用数据的时候,在加载数据的同时,将数据放到一个指定的地点做保存。再下次加载的时候,从这个指定地点去取数据。这里加缓存是有一个前提的,就是从这个地方取数据,比从数据源取数据要快的多。Java狭义一些的缓存,主要是指三大类虚拟机缓存(ehcache,JBoss Cache)分布式缓存(redis,memcache)数据库缓存正常来说,速度由上到下依次减慢↓怎么做1)缓存雪崩由于原有缓存失效(或者数据未加载到缓存中),新缓存未

2021-02-04 14:17:35 171

原创 12_Redis集群

是什么集群架构:所有的redis节点彼此互联(PING-PONG机制),内部使用二进制协议优化传输速度和带宽节点的fail是通过集群中超过半数的节点检测有效时整个集群才生效.客户端与redis节点直连,不需要中间proxy层.客户端不需要连接集群所有节点,连接集群中任何一个可用节点即可redis-cluster把所有的物理节点映射到[0-16383]slot上,cluster 负责维护node<->slot<->value Redis 集群中内置了 16384 个哈

2021-02-04 14:12:04 150

原创 11_Redis 哨兵模式

是什么主从模式下,主机宕机,需要手动提升从机为主机,主机恢复后,也需要手动设置。比较麻烦,容易出错哨兵模式:给集群分配一个站岗的哨兵的作用:是对Redis系统的运行情况监控它是一个独立进程,它的功能:监控主数据库和从数据库是否运行正常主数据出现故障后自动将从数据库转化为主数据库如果主机宕,开启选举工作,选择一个从做主机怎么做虽然哨兵(sentinel) 释出为一个单独的可执行文件 redis-sentinel ,但实际上它只是一个运行在特殊模式下的Redis 服务器,你可

2021-02-04 14:04:24 211

原创 10_Redis主从复制

是什么持久化保证了即使redis服务重启也不会丢失数据,但是当redis服务器的硬盘损坏了可能会导致数据丢失,通过redis的主从复制机制就可以避免这种单点故障(单台服务器的故障)。特点:主redis中的数据和从上的数据保持实时同步,当主redis写入数据时通过主从复制机制复制到两个从服务上主从复制不会阻塞master,在同步数据时,master 可以继续处理client 请求主机master配置:无需配置怎么做工作中一般选用:一主两从或一主一从数据会同步到从服务器。在这个集群

2021-02-04 13:58:51 133

原创 9_Redis持久化方式

是什么由于redis的值放在内存中,为防止突然断电等特殊情况的发生,需要对数据进行持久化备份。即将内存数据保存到硬盘怎么做1、RDB持久化(默认开启方式)RDB 是以二进制文件,是在某个时间点将数据写入一个临时文件,持久化结束后,用这个临时文件替换上次持久化的文件,达到数据恢复。优点:使用单独子进程来进行持久化,主进程不会进行任何 IO 操作,保证了 redis 的高性能。缺点:RDB 是间隔一段时间进行持久化,如果持久化之间 redis 发生故障,会发生数据丢失。所以这

2021-02-04 13:53:22 121

原创 8_jedis连接Redis

是什么Jedis 是 Redis 官方首选的 Java 客户端开发包。怎么做1、创建项目:导入依赖<dependency> <groupId>redis.clients</groupId> <artifactId>jedis</artifactId> <version>2.7.2</version></dependency>注意:# 确认远程服务器是否可以ping通:pi

2021-02-04 13:49:08 145

原创 7_Redis 发布订阅模式

Redis 发布订阅(pub/sub)是一种消息通信模式:发送者(pub)发送消息,订阅者(sub)接收消息。Redis 客户端可以订阅任意数量的频道。客户端订阅频道:新消息通过 PUBLISH 命令发送给频道 channel1:# 1)客户端订阅消息:订阅频道名为message1192.168.77.130:6379> subscribe message1Reading messages... (press Ctrl-C to quit)1) "subscribe"2) .

2021-02-04 13:45:45 126

原创 6_Redis事务

Redis 事务可以一次执行多个命令, 并且带有以下两个重要的保证:事务是一个单独的隔离操作:事务中的所有命令都会序列化、按顺序地执行。事务在执行的过程中,不会被其他客户端发送来的命令请求所打断。事务是一个原子操作:事务中的命令要么全部被执行,要么全部都不执行。一个事务从开始到执行会经历以下三个阶段:开始事务。命令入队。执行事务。实例:以下是一个事务的例子, 它先以MULTI开始一个事务, 然后将多个命令入队到事务中, 最后由EXEC命令触发事务, 一并执行事务中的所.

2021-02-04 13:43:14 118 1

原创 5_Redis常用指令

Redis是一种基于内存的数据库,并且提供一定的持久化功能,它是一种键值(key-value)数据库,使用 key 作为索引找到当前缓存的数据,并且返回给程序调用者。当前的 Redis 支持 6 种数据类型:字符串(String)、列表(List)、集合(set)、哈希结构(hash)、有序集合(zset)和基数(HyperLogLog)命令学习网站:http://doc.redisfans.com/index.html1. String类型1) 赋值_单个语法: SET key .

2021-02-04 13:41:07 168

原创 4_安装Redis[Linux环境]

1、下载安装包官网地址:# 英文地址Http://redis.io/ # 中文地址Http://www.redis.cn/ 百度网盘:链接:https://pan.baidu.com/s/1YSzRtU-aRKH-IrBvbSJ5uQ 提取码:1111 2、配置 Redis的编译环境Redis是C语言开发的,安装redis需要先去官网下载源码进行编译,编译需要依赖于GCC编译环境,如果CentOS上没有安装gcc编译环境,需要提前安装# 安装gcc编译环境(这里我们使用r

2021-02-04 13:36:50 134

原创 25_垃圾收集器

问题5:GC垃圾回收算法和垃圾收集器关系?分别是什么请你谈谈?天上飞的理念,要有落地的实现(垃圾收集器就是GC垃圾回收算法的实现)GC算法是内存回收的方法论,垃圾收集器就是算法的落地实现GC算法主要有以下几种:引用计数(几乎不用,无法解决循环引用的问题)复制拷贝(用于新生代)标记清除(用于老年代)标记整理(用于老年代)因为目前为止还没有完美的收集器出现,更没有万能的收集器,只是针对具体应用最合适的收集器,进行;四种主要的垃圾收集器:Serial:串行回收 -XX:+Use.

2021-01-29 16:38:38 262

原创 24_Java内存溢出OOM

JVM中常见的两个错误StackoverFlowError :栈溢出OutofMemoryError: java heap space:堆溢出除此之外,还有以下的错误java.lang.StackOverflowErrorjava.lang.OutOfMemoryError:java heap spacejava.lang.OutOfMemoryError:GC overhead limit exceeededjava.lang.OutOfMemoryError:Direct buffer

2021-01-29 16:33:24 197

原创 23_Java中的引用

在原来的时候,我们谈到一个类的实例化Person p = new Person()在等号的左边,就是一个对象的引用,存储在栈中而等号右边,就是实例化的对象,存储在堆中其实这样的一个引用关系,就被称为强引用整体架构强引用当内存不足的时候,JVM开始垃圾回收,对于强引用的对象,就算是出现了OOM也不会对该对象进行回收,打死也不回收~!强引用是我们最常见的普通对象引用,只要还有一个强引用指向一个对象,就能表明对象还“活着”,垃圾收集器不会碰这种对象。在Java中最常见的就是强引用,把

2021-01-29 16:30:23 169

原创 22_JVM参数调优

题目2:你说你做过JVM调优和参数配置,请问如何盘点查看 JVM系统默认值?使用 jps 和 jinfo 进行查看# 调整JVM初始化参数(-Xms 和 -Xmx最好调整一致,防止JVM频繁进行收集和回收)-Xms:初始堆空间-Xmx:堆最大值-Xss:栈空间JVM参数类型标配参数从JDK1.0 - Java12都在,很稳定-version-helpjava -showversionX参数(了解)-Xint:解释执行-Xcomp:第一次使用就编译成本地代码.

2021-01-29 16:28:55 296

原创 21_GC Roots分析

题目1:JVM垃圾回收的时候如何确定垃圾?是否知道什么是GC Roots什么是垃圾简单来说就是:内存中已经不再被使用的空间就是垃圾如何判断一个对象是否可以被回收引用计数法Java中,引用和对象是有关联的。如果要操作对象则必须用引用进行。因此,很显然一个简单的办法就是通过引用计数来判断一个对象是否可以回收简单说,给对象中添加一个引用计数器,每当有一个地方引用它,计数器值加1,每当有一个引用失效,计数器值减1,任何时刻计数器值为零的对象就是不可能再被使用的,那么这个对象就是可回收对象。.

2021-01-29 16:22:47 188

原创 20_JVM体系结构

Java gc 主要回收的是 方法区 和 堆 中的内容类加载器常考考点:类加载器是什么双亲委派机制Java类加载的沙箱安全机制常见的垃圾回收算法引用计数复制算法复制算法在年轻代的时候,进行使用,复制时候有交换优点:没有内存碎片缺点:消耗内存标记清除先标记,后清除。用于老年代多一些优点:不会消耗那么多内存缺点:会产生内存碎片标记整理也叫标记清除整理,多用于老年代优点:不会消耗太多内存;不会有内存碎片缺点:比较耗时总结:没有完美的..

2021-01-29 16:20:36 144

原创 9_ GC 四大算法详解

GC垃圾收集机制对于GC垃圾收集机制,我们需要记住以下几点:次数上频繁收集Young区。次数上较少收集Old区。基本不动元空间。JVM在进行GC时,并非每次都对上面三个内存区域一起回收的,大部分时候回收的都是指新生代。因此GC按照回收的区域又分了两种类型:普通GC(minor GC): 只针对新生代区域的GC,指发生在新生代的垃圾收集动作,因为大多数Java对象存活率都不高,所以Minor GC非常频繁,一般回收速度也比较快。全局GC(major GC or Full GC): 指

2021-01-29 14:21:03 439

原创 8_Java堆

一个JVM实例只存在一个堆内存,堆内存的大小是可以调节的。堆体系结构JDK 1.7: 永久代使用的是堆空间内存类加载器读取了类文件之后,需要把类、方法、常量变量放到堆内存中,保持所以引用类型的真实信息,方便执行器执行。其中,堆内存分为3个部分:Young Generation Space,新生区、新生代Tenure Generation Space,老年区、老年代Permanent Space,永久区、元空间JDK 1.8: 将永久区变成了元空间,使用的是物理内存对象在.

2021-01-29 14:15:48 418

原创 7_方法区

所在位置:从线程共享与否的角度来看:栈、堆、方法区的交互关系:Person:存放在元空间,也可以说方法区person:存放在Java栈的局部变量表中new Person():存放在Java堆中是什么《Java虚拟机规范》中明确说明:“尽管所有的方法区在逻辑上是属于堆的一部分,但一些简单的实现可能不会选择去进行垃圾收集或者进行压缩。”但对于HotSpotJVM而言,方法区还有一个别名叫做Non-Heap(非堆)【物理上】,目的就是要和堆分开。所以,方法区看作是一块独立于 Java

2021-01-29 14:12:48 156

原创 Git版本控制

是什么多个开发人员共同负责同一个软件或文档的开发,每个人在各自的机器上有整个软件文档的备份,并对之实施编程开发,在分别完成各自任务之后,再通过文本比对工具将各自机器上的不同版本的程序整合到一台机器上。实现开发团队并行开发、提高开发效率的基础。对软件开发进程中文件或目录的发展过程提供有效的追踪手段, 保证在需要时可回到旧的版本,避免文件的丢失、修改的丢失和相互覆盖,通过对版本库的访问控制避免未经授权的访和修改,达到有效保护企业软件资产和知识产权的目的。版本控制的功能在于跟踪记录整个软件

2021-01-29 11:28:24 223

原创 23_AQS源码分析

前置知识:公平锁和非公平锁可重入锁LockSupport自旋锁数据结构之链表设计模式之模板设计模式是什么字面意思:抽象的队列同步器源代码:AbstractQueuedSynchronizer 简称为AQS技术翻译:是用来构建锁或者其它同步器组件的重量级基础框架及整个JUC体系的基石,通过内置的FIFO队列来完成资源获取线程的排队工作,并通过一个int类变量表示持有锁的状态。这里的同步器组件指CountDownLatch、Semaphore、ReentrantLock、Re

2021-01-25 21:01:05 2248 14

原创 22_LockSupport

是什么官方解释:LockSupport是用来创建锁和其他同步类的基本线程阻塞原语。一句话:LockSupport中的park()和unpark()的作用分别是阻塞线程和解除阻塞线程怎么玩线程等待唤醒机制(wait/notify)3种让线程等待和唤醒的方法方式1: 使用synchronized使用Object中的wait()方法让线程等待, 使用Object中的notify()方法唤醒线程正常情况:package com.aqs.locksupport;/** * @Aut

2021-01-25 20:50:00 354

原创 21_可重入锁

可重入锁: 又名递归锁,是指在同一个线程在外层方法获取锁的时候,再进入该线程的内层方法会自动获取锁(前提:锁对象得是同一个对象),不会因为之前已经获取过还没释放而阻塞。Java中ReentrantLock和synchronized都是可重入锁,可重入锁的一个优点是可一定程度避免死锁。类似于家里面的大门,进入之后可以进入厕所、厨房等“可重入锁”这四个字分开来解释:可:可以。重:再次。入:进入锁:同步锁进入什么:进入同步域(即同步代码块/方法或显式锁锁定的代码)一句话:一个线程中的.

2021-01-25 20:46:34 237

原创 13_支付解决方案

二维码支付:1)向支付平台下单,返回支付地址(返回支付二维码(支付宝)),生成二维码2)扫描支付即可微信支付二维码生成是由 js 来进行生成的。 微信支付平台仅仅负责返回支付地址即可支付宝支付后台生成二维码,前端不需要做任何事情...

2021-01-14 19:58:49 252

原创 12_订单解决方案

订单相关表设计首先用户浏览商品,将看中的商品加入到购物车,这里应该有一张购物车表:购物车表(order_cart)# 购物车表(order_cart)-- -- -- skuIdspuId 用户id店铺id 商品名称 商品数量 商品价格 状态(下单之后对应商品就不应该显示在购物车了)选中购物车中的某些商品,进行下单,订单表也就应运而生# 订单表(order_info)----订单编号(如果对编号格式没什么要求,可使用雪花算法idworker来生成)itemCount (商

2021-01-14 19:57:48 500

原创 11_购物车解决方案

1.购物车的几种实现方式购物车的实现方式有很多,但是最常见的就三种:Cookie,Session,数据库.三种方法各有优劣,适合的场景各不相同.Cookie方法:通过把购物车中的商品数据写入Cookie中,再通过浏览器进行读取.这个方法,适合在用户没有登录 的情况下使用,但是有个非常严重的缺点,即在用户禁用了Cookie的时候是无法使用的.Session方法:通过Session来保存商品信息,这确实是个好的方法,适合用户已经登录的情况,将数据放在Session 中,用户就能读取购物车中的商品信息,而

2021-01-14 19:55:49 503

原创 10_单点登录SSO

是什么在企业发展初期,企业使用的系统很少,通常一个或者两个,每个系统都有自己的登录模块,运营人员每天用自己 的账号登录,很方便。但随着企业的发展,用到的系统随之增多,运营人员在操作不同的系统时,需要多次登录, 而且每个系统的账号都不一样,这对于运营人员来说,很不方便。于是,就想到是不是可以在一个系统登录,其他系统就不用登录了呢?这就是单点登录要解决的问题。单点登录英文全称Single Sign On,简称就是SSO。它的解释是:在多个应用系统中,只需要登录一次,就可以访问其他相互信任的应用系统Coo

2021-01-14 19:52:25 484

原创 9_商品详情页面解决方案

需求分析当搜索商品时,显示商品的详细信息,同时选择不同的sku,进行不同的数据显示解决方案商家更改数据微服务,通过消息队列MQ监听到发生变化,微服务调用者使用Thymeleaf模板,生成相应的静态页面,储存在本地磁盘,当用户发送请求到微服务时,使用nginx技术进行相应页面的返回商品详情页面静态化1、建Module:supergo_page2、改pom<?xml version="1.0" encoding="UTF-8"?><project xmlns="http

2021-01-14 19:48:05 322

原创 8_搭建商城搜索微服务

搜索服务的父项目:supergo_search1、建Module:supergo_search2、删除src搜索服务的提供者:supergo_search_service90031、建Module:supergo_search_service90032、改pom<?xml version="1.0" encoding="UTF-8"?><project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi=

2021-01-14 19:41:38 178

原创 7_首页分类按级别展示

需求在首页展示商品分类列表属性值请求 urlhttp://{zuul:port}/api/portal/categorys/categorys请求方式GET参数无返回值HttpResult.ok(分类列表)实现1、pojo 实体类要展示商品分类信息,需要树形结构展示,所以需要在 Itemcat 类中增加一个 childern 属性表示子分类比如:我们查看一级目录有:家电、手机、服装,但在家电这个一级目录下,又有分类,我们称为二级目录,有:电视

2021-01-14 19:37:28 612

原创 6_商品 SPU 与 SKU

是什么SPU: 标准化产品单元SPU = Standard Product Unit (标准化产品单元),SPU是商品信息聚合的最小单位,是一组可复用、易检索的标准化信息的集合,该集合描述了一个产品的特性SKU: 库存量单位SKU=stock keeping unit(库存量单位) SKU即库存进出计量的单位(买家购买、商家进货、供应商备货、工厂生产都是依据SKU进行的)SKU是物理上不可分割的最小存货单元。也就是说一款商品,可以根据SKU来确定具体的货物存量。如一件M码(四个尺码:S码、M码、

2021-01-14 19:33:18 575

原创 5_zuul 集成 Swagger

为什么在微服务只能访问自己工程中的 api,如果要访问其他微服务提供的 api 那就需要更换 url比如,访问微服务提供者9001的 api 接口文档:http://localhost:9001/swagger-ui.html又想要访问微服务提供者9002的 api 接口文档,那就需要更换访问地址:http://localhost:9002/swagger-ui.html如果能在网关中直接查看 swaggerAPI 的话,那么所有微服务的 api 就都可以查看了怎么做1、改 pom&

2021-01-14 19:29:52 196

原创 4_生成 Swagger 接口文档

是什么Swagger 是最流行的 API 开发工具,它遵循 OpenAPI Specifification(OpenAPI 规范,也简称 OAS)。Swagger 可以贯穿于整个 API 生态,如 API 的设计、编写 API 文档、测试和部署。 Swagger 是一种通用的,和编程语言无关的 API 描述规范你可以用 Swagger-editor 来编写 API 文档( yaml 文件 或 json文件),然后通过 Swagger-ui 来渲染该文件,以非常美观的形式将你的 API 文档,展现给你的团

2021-01-14 19:25:41 458

空空如也

空空如也

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

TA关注的人

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