Spring Cloud简单学习
Spring Cloud简述Spring Cloud微服务是由多功能模块组成的,每个模块实现耦合性降低。
注意微服务是多个模块进行组合,我们对版本的控制必须严谨。
通过url:
https://start.spring.io/actuator/info 获取json数据,查看版本对应关系。
或 https://spring.io/projects/spring-cloud#learn 自行查看版本对应关系。
Spring Cloud模块分布如下:
注册中心:Nacos、Eureka、Zookeeper、Consul
服务调用:LoadBalancer、Ribbon、OpenFeign(Feign)
服务熔断:Sentinel、Resilience4j、Hystrix
服务网关:Gateway、Zuul
服务配置:Nacos、Config
服务总线:Nacos、Bus
Spring Cloud Alibaba官网:https://github.com/alibaba/spring-cloud-alibaba/blob/master/README-zh.md
Spring Cloud ...
秽翼的尤斯蒂娅
秽翼的尤斯蒂娅因为自己玩过一些剧情作,所以感觉秽翼在剧情上并没有让人特别惊艳,但是秽翼在角色刻画以及整体世界观的构建上还是做的不错的。打完后最直接的感受就是这是一部佳作,适合萌新入坑,相信不那么完美的结局对萌新来说是一个美好的初体验(笑),特别是结尾CV放完后,我还以为有尾声剧情,没想到直接来了个经典CG,在伤口上撒盐了属于是。
个人感觉秽翼做成全年龄向食用更佳。
最后贴一个漫雨大大的杂谈,分析还是很到位的:https://www.bilibili.com/video/BV174411i73a
nginx简单学习
Nginx网络代理
正向代理(客户端):
即代理客户端的访问,VPN就是典型的正向代理,正向代理中客户端是知道请求的目标的,而服务器不知道客户端是通过中间商访问的,它会认为是VPN的节点在访问。
反向代理(服务端):
当我们访问大型网站时,肯定不是所有人都访问一个服务器,比如访问百度,我们使用外网访问固定url:www.baidu.com,而内网会通过反向代理,将访问请求转发到各地的服务器,是用来代理服务端的访问。
负载均衡根据服务器的情况进行分配,nginx负载均衡有两种策略:内置策略和扩展策略。
内置策略
轮询:均衡分配,一个一个来
加权轮询:按自定义的权重比例进行分配
ip hash:对客户端url请求的ip进行hash,然后根据hash结果分配给对应的服务器,可解决session不共享的问题。
外置策略:即自行设置算法分配
动静分离
相当于nginx对反向代理的实际应用,使用Nginx处理请求,动静分离节省服务器资源。
安装官网自行下载linux版本
http://nginx.org/en/download.html
12345678910# 解压tar -z ...
了解JVM(深入了解Java虚拟机浅读)
122021-12-1 更新记录周志明老师这本书讲的太深了,自己主要针对八股常问的一些点进行了阅读理解,发现网上的好多文章都是来自于此😂,相对于上次背八股的JVM记录,这次浅读对这些点有了一定的理解,确实很细,以后工作了可以再抽空深挖一下虚拟机的其他内容。
Java内存区域运行时数据区域
进程中线程共享:
堆
方法区
进程中线程私有:
程序计数器
虚拟机栈
本地方法栈
程序计数器(一块较小的内存空间)
java是编译成字节码运行,程序计数器可看作当前线程执行字节码的行号指示器。
多线程情况下,程序计数器用于记录当前线程的执行位置,当线程切换回来可知道线程上次运行的位置。
各线程之间程序计数器互不影响,独立存储,这一块内存是线程私有的内存。
虚拟机栈(Java方法)与程序计数器一样,Java虚拟机栈是线程私有的,用于描述Java方法执行的内存模型,每次方法调用数据都是通过栈传递。
虚拟机栈生命周期与线程一样,当方法被执行时,JVM会同步创建一个栈帧(用于存储局部变量表、操作数栈、动态链接、方法出口等信息),每一个方法执行的过程就相当于栈帧在虚拟机栈中入栈到出栈。
Java ...
Java八股文-容器
容器对比集合框架简述
Collection
List:有序,可重复。ArrayList、LinkedList
Set:无序,无重复。HashSet、TreeSet
Queue(Deque):队列,有序,可重复。LinkedList、PriorityQueue
Map:键值对key-value存储,一个键对应一个值。HashMap、TreeMap、HashTable、ConcurrentHashMap
ArrayList与LinkedList的区别
线程安全:二者都不保证线程安全,Vector可以实现线程安全。
底层数据结构:
ArrayList对应数组。
LinkedList对应双向链表,每个结点有前驱后继两个指针。
查找操作多使用ArrayList,插入、删除操作多使用LinkedList。
内存空间占用:
ArrayList由于是数组实现,会预留一定容量空间。整体空间占比高。
LinkedList每一个元素空间占比更高,因为有前驱后继两个指针。
实现RandomAccess接口
由于ArrayList具有快速随机访问的功能,所以它实现了RandomAccess接口,但 ...
RabbitMQ简单学习
安装RabbitMQ基于erlang,我们需要先安装erlang。
erlang:https://packagecloud.io/rabbitmq/erlang/packages/el/7/erlang-21.3.8.21-1.el7.x86_64.rpm
RabbitMQ:https://packagecloud.io/rabbitmq/rabbitmq-server/packages/el/7/rabbitmq-server-3.8.8-1.el7.noarch.rpm
也可以使用费其他版本,centos8就要使用el8,按自己情况来,然后进入界面右上角点击下载(最开始找半天,没看到下载按钮😂),然后可以使用xftp传到linux的文件夹中,我放在/usr/local/software。
安装命令,按序执行
123rpm -ivh erlang-21.3.8.21-1.el7.x86_64.rpmyum install socat -yrpm -ivh rabbitmq-server-3.8.8-1.el7.noarch.rpm
基本指令
1234chkconfig rabbi ...
Docker简单学习
安装https://docs.docker.com/engine/install/centos/
卸载旧版本
12345678sudo yum remove docker \ docker-client \ docker-client-latest \ docker-common \ docker-latest \ docker-latest-logrotate \ docker-logrotate \ docker-engine
安装包与镜像
12345678910# 安装包sudo yum install -y yum-utils# 镜像仓库,可使用官方文档或阿里云的镜像sudo yum-config-manager \ --add-repo \ https://download.docker.com/linux/centos/doc ...
MySQL八股文
基础语法增删改查12345678910# 添加insert into `表`(`字段`) values ('值')# 删除,truncate清全表delete from `表` where <条件>truncate table `表`# 修改update `表` set `字段` = '值' where <条件># 查询 后面可以使用很多的关键字辅助查询# select - from - where - group by - having - order byselect `字段` from `表` where···
distinct去重查询
1select distinct `字段`, `字段` from `表`
concat连接字段
1select concat('我的名字是:',`name`) as 学生姓名 from `users`
limitlimit一般有两个参数,第一个表示返回数据的起始位,第二个表示要返回的行数。若只有一个参数,即省去了第一个参数,使用默认值0。
1234# 返回 ...
计网八股文
计网模型
OSI七层
物理层、数据链路层、网络层、传输层、会话层、表示层、网络层
TCP/IP四层
网络接口层、网络层(IP)、传输层(TCP、UDP)、应用层
五层协议
物理层、数据链路层、网络层、传输层、应用层
TCP三次握手握手流程
A作为客户端,B作为服务端。SYN是同步序列编号,ACK是确认标志位。
B处于LISTEN,等待客户端的连接请求,A向B发送请求报文,SYN=1、ACK=0,并选择一个初始序号x,代表这是一个同步请求。
B收到请求报文,若同意建立连接,则B向A发送连接确认报文,SYN=1、ACK=1,且确认号是x+1,并选择一个初始序号y,这一步是对第一次握手的SYN同步进行确认。
A收到B的来连接确认报文后,还需A向B发出确认报文,ACK=1,确认号是y+1,序号是x+1,然后B收到A的确认报文后,连接成功建立。
为什么要三次握手三次握手是为了防止失效的连接请求到达服务器,让服务器错误打开连接。
客户端发送的连接请求若在网络中长时间滞留,那么间隔很长的时间才收到服务端的连接确认。但客户端在等待一个超时重传时间后,会重新请求连接。最后这个滞留的请求还是会 ...
Java八股文--并发
并发基础进程与线程
进程(资源管理最小单位):
程序的一次执行过程,运行程序的基本单位,进程是动态的。系统执行一个程序即进程从创建,运行到死亡的过程。
在Java中,启动main函数即启动了一个JVM的进程,main所在的线程是进程中的一个线程。
线程(任务调度最小单位):
线程是比进程更小的执行单位,一个进程在执行过程中可以产生多个线程,同类线程之间共享进程的堆和方法区资源,但每个线程有自己的程序计数器、虚拟机栈、本地方法栈。
系统在产生一个线程,或在多个线程之间切换工作时,其负担比操作进程小得多,因此线程也称为轻量级进程。
线程状态
新建(NEW):线程创建未启动,此时还未调用start。
可运行(RUNABLE):线程处于运行状态或等待资源调度进入运行状态。
阻塞(BLOCKED):线程等待获取锁。
无限期等待(WAITING):执行Object.wait()或Thread.join()进入,没有主动唤醒则一直等待。
限期等待(TIMED_WAITING):自动唤醒,即等待时设置了时间,sleep() 或 wait() 或 join()设置时间。
死亡(TERMINATED ...