前端项目部署
若依前端项目部署1.打包正式环境12345# 打包正式环境npm run build:prod# 打包预发布环境npm run build:stage
构建打包成功之后,会在根目录生成 dist 文件夹,里面就是构建打包好的文件,通常是 ***.js 、***.css、index.html 等静态文件。
通常情况下 dist 文件夹的静态文件发布到你的 nginx 或者静态服务器即可,其中的 index.html 是后台服务的入口页面。
2.使用nginx进行前端代理把前端打包生成的静态文件拷贝到nginx的html目录下
下方是一个自己部署的nginx配置
12345678910111213141516171819202122232425262728293031323334353637worker_processes 1;events { worker_connections 1024;}http { include mime.types; default_type application/octet-stream; ...
Linux上软件部署
实战章节:在Linux上部署各类软件前言为什么学习各类软件在Linux上的部署在前面,我们学习了许多的Linux命令和高级技巧,这些知识点比较零散,同学们跟随着课程的内容进行练习虽然可以基础掌握这些命令和技巧的使用,但是并没有一些具体的实操能够串联起来这些知识点。
所以,现在我们设计了各类软件在Linux上部署安装的实战章节,可以让同学们:
对前面学习的各类操作命令进行复习和练习,从而深度掌握它们
本章节中演示部署的软件,包含了IT行业各类岗位中所必须使用的,如:Java后台、大数据开发、运维开发、测试、AI等。无论学习Linux后从事什么岗位,这些内容都会给你带来帮助
对于零基础学员,实战课程中所讲解的软件大概率多数大家并不了解。
所以,课程仅涉及到安装部署,不对软件的使用做详细说明。
同学们在这个过程中,可能会遇到各种各样的错误,不要怕,解决它,将会给你带来极大的提升。
学习目标对于本部分的内容学习,我们设计两个目标:
对于零基础或未从业的学员,不要求深入理解所安装部署的软件是什么,仅仅能够跟随课程成功的将其部署安装并运行成功即可
在这个过程中,主要锻炼大家对Linux操 ...
Linux基础命令
Linux基础命令Linux的目录结构
/,根目录是最顶级的目录了
Linux只有一个顶级目录:/
路径描述的层次关系同样适用/来表示
/home/itheima/a.txt,表示根目录下的home文件夹内有itheima文件夹,内有a.txt
ls命令功能:列出文件夹信息
语法:ls [-l -h -a] [参数]
参数:被查看的文件夹,不提供参数,表示查看当前工作目录
-l,以列表形式查看
-h,配合-l,以更加人性化的方式显示文件大小
-a,显示隐藏文件
对应的权限细节
权限共10位 eg: lrwxrwxrwx
r—可读
w—可写
x—可执行
无权限-
第一位:代表文件类型
‘-‘代表普通文件
d 代表目录文件
l 代表链接文件
2~4 代表归属用户权限
5~7代表归属组权限
8~10代表其他用户权限
权限位数字表示 权限位数字表示法(8进制数)
rw- 110 —>6 用户位
r— 100 —>4 组权限位
r— 100 —>4 其他权限位
前面补0
最后表示为 0644
隐藏文件、文件夹在Linux中以. ...
面试专题-消息中间件
消息中间件面试题-参考回答
面试官:RabbitMQ-如何保证消息不丢失
候选人:
嗯!我们当时MYSQL和Redis的数据双写一致性就是采用RabbitMQ实现同步的,这里面就要求了消息的高可用性,我们要保证消息的不丢失。主要从三个层面考虑
第一个是开启生产者确认机制,确保生产者的消息能到达队列,如果报错可以先记录到日志中,再去修复数据
第二个是开启持久化功能,确保消息未消费前在队列中不会丢失,其中的交换机、队列、和消息都要做持久化
第三个是开启消费者确认机制为auto,由spring确认消息处理成功后完成ack,当然也需要设置一定的重试次数,我们当时设置了3次,如果重试3次还没有收到消息,就将失败后的消息投递到异常交换机,交由人工处理
面试官:RabbitMQ消息的重复消费问题如何解决的
候选人:
嗯,这个我们还真遇到过,是这样的,我们当时消费者是设置了自动确认机制,当服务还没来得及给MQ确认的时候,服务宕机了,导致服务重启之后,又消费了一次消息。这样就重复消费了
因为我们当时处理的支付(订单|业务唯一标识),它有一个业务的唯一标识,我们再处理消息时,先到数据库查询一下,这个数据是 ...
面试专题-微服务
微服务面试题
面试官:Spring Cloud 5大组件有哪些?
候选人:
早期我们一般认为的Spring Cloud五大组件是
Eureka : 注册中心
Ribbon : 负载均衡
Feign : 远程调用
Hystrix : 服务熔断
Zuul/Gateway : 网关
随着SpringCloudAlibba在国内兴起 , 我们项目中使用了一些阿里巴巴的组件
注册中心/配置中心 Nacos
负载均衡 Ribbon
服务调用 Feign
服务保护 sentinel
服务网关 Gateway
面试官:服务注册和发现是什么意思?Spring Cloud 如何实现服务注册发现?
候选人:
我理解的是主要三块大功能,分别是服务注册 、服务发现、服务状态监控
我们当时项目采用的eureka作为注册中心,这个也是spring cloud体系中的一个核心组件
服务注册:服务提供者需要把自己的信息注册到eureka,由eureka来保存这些信息,比如服务名称、ip、端口等等
服务发现:消费者向eureka拉取服务列表信息,如果服务提供者有集群,则消费者会利用 ...
面试专题-Redis相关
Redis相关面试题
面试官:什么是缓存穿透 ? 怎么解决 ?
候选人:
嗯~~,我想一下
缓存穿透是指查询一个一定不存在的数据,如果从存储层查不到数据则不写入缓存,这将导致这个不存在的数据每次请求都要到 DB 去查询,可能导致 DB 挂掉。这种情况大概率是遭到了攻击。
解决方案的话,我们通常都会用布隆过滤器来解决它
面试官:好的,你能介绍一下布隆过滤器吗?
候选人:
嗯,是这样~
布隆过滤器主要是用于检索一个元素是否在一个集合中。我们当时使用的是redisson实现的布隆过滤器。
它的底层主要是先去初始化一个比较大数组,里面存放的二进制0或1。在一开始都是0,当一个key来了之后经过3次hash计算,模于数组长度找到数据的下标然后把数组中原来的0改为1,这样的话,三个数组的位置就能标明一个key的存在。查找的过程也是一样的。
当然是有缺点的,布隆过滤器有可能会产生一定的误判,我们一般可以设置这个误判率,大概不会超过5%,其实这个误判是必然存在的,要不就得增加数组的长度,其实已经算是很划分了,5%以内的误判率一般的项目也能接受,不至于高并发下压倒数据库。
面试官:什么是缓存击穿 ? 怎 ...