Java web小项目_个人主页(1)—— 云环境搭建与项目部署

2023-10-26

摘自:Java web小项目_个人主页(1)—— 云环境搭建与项目部署
作者:丶PURSUING
发布时间: 2021-03-26 23:59:39
网址:https://blog.csdn.net/weixin_44742824/article/details/115104493?spm=1001.2014.3001.5501

本文为学习笔记,复习前几天开课吧的李伟杰老师讲的公开课:java网络小项目:让面试官眼前一亮的个人主页

李伟杰老师的教学流程:

【租云服务器】>【使用阿里云的polarDB数据库】>【最终项目的部署】>【项目访问加速】>【编码分析】

作为公开课,老师站在大家零基础的角度上,拆分解析了这些繁琐的步骤。第一天先把项目成品部署上去,能让我们先看到最后的成品效果,然后再进行编码的解析。总体上感觉非常好理解,思路很清晰。

项目完成结果一睹为快:

在这里插入图片描述

课程资源包 提取码:th1z

下面是对知识的一些补充

云环境搭建与项目部署

README:布局一览

在这里插入图片描述

一、阿里云的ecs服务器搭建

在阿里云上租一台主机,在主机上部署最终完成的项目内容

阿里云ecs服务器搭建流程

所做操作的补充解释:

(1)服务器配置网络安全组:谁可以访问服务器

端口范围:8888;授权对象:本机的公网IP

8888为后续用到的云服务器管理软件(宝塔)默认的端口号,意思是只有在这个IP下的计算机,并且是8888端口下的软件才能够访问到这个服务器。

我间隔一段时间后再去登录宝塔软件,死活进不去。原来是公网IP(百度搜索IP出来的那个)发生了变化,需要重新加入安全组中。

端口范围:80;授权对象:0.0.0.0/0

IP都是0表示任何的IP都可以访问,即开放所有人访问个人主页项目的权限。

(2)宝塔控制面板:云电脑管家

因为我们在选择服务器镜像源的时候选择的是linux操作系统,可能你并不熟悉这个操作系统的使用,但是人家商家都给你做好了,给你做得简单了。

这个宝塔控制面板相当于一个电脑管家,用图形化的界面,方便你管理电脑,监控电脑的运行状态,方便软件的下载和安装等等。

(3)为什么中小型企业都喜欢上云?

因为企业对程序员的要求越来越高了,你既要会开发,还要懂测试,还得会运维,具备这三个能力后才能说自己是合格的后端开发工程师。想把运维拿下,很难,还不如花钱买服务器,这些企业也省了运维人员的工资。

(4)tomcat服务器中间件

个人主页项目能够被别人访问,电脑(虚拟主机)上就必须有个软件可以把项目暴露出去,供别人访问。这个软件就是java web 开发中用的非常多的:tomcat 服务器中间件。

把电脑中某个文件夹里的某些文件暴露出去,让别人可以通过网址的方式去使用访问这个文件夹。

(5)为什么在tomcat设置中,把tomcat原为8080的端口号改为80呢?

tomcat原来使用的端口号是8080,而80表示使用了HTTP协议默认的端口号。当别人在访问这个网址的时候,就不需要输入“网址+:8080

80端口是为HTTP 开放的,此为上网使用次数最多的协议,可以通过网址加“: 80”来访问网站,但因为浏览网页服务默认的端口号都是80,因此只需输入网址即可,不用输入“: 80”了。

(6)网址就是一个文件夹

理解这个网址其实就是一个文件夹,通过访问文件夹的地址,就能访问到文件。

比如:

在这里插入图片描述
在一个新的网页中打开Root路径下的source下的img下的图片1.img

在这里插入图片描述

可以看到,到了这一步就我们已经能够把服务器的资源共享给别人,别人就可以通过这样的一个网址访问到我们上传的东西。

(7)索引文件中的utf-8

索引文件中,有一行pageEncoding="UTF-8"是进行编码设置的,你暂且先理解为支持中文显示的编码。

计算机本身不能存储任何文字,计算机只能存储二进制都是0和1,计算机想普及到民用的话就要认识这些文字,才能更好地帮助大家改变生活。

那就给它一本字典,01数字的组合编码代表了文字。UTF-8是一种针对Unicode的可变长度字符编码,又称万国码。

如果出现了乱码,大概率是你的电脑和云端的电脑拿的不是同样的编码(字典不同)

二、PolarDB:阿里巴巴自研数据库

阿里巴巴自研PolarDB使用流程

在创建生成个人简历之前,我们需要获取用户输入的信息,然后放到数据库中统一编排与管理。

(1)用mysql它不香吗?

也香。但还需要搭建环境,需要下载各种各样的软件而且比较繁琐。

很多企业在用数据库的时候都喜欢用云数据库,节省了运维人员的工资,并且性能还比较高,跟开源的mysql相比是5倍性能的提升,并且完全支持mysql的操作。

对于我而言,就是学习有所侧重。

(2)数据库的数据规划

在这里插入图片描述

具体这个格式的结构如何建立,这是由DBA(数据库管理员(Database Administrator)来干的。

这里我们只要导入这个文件到数据库中,就能在里面建立相应的格式。

在这里插入图片描述

(3)管理数据库的工具:DMS

用什么工具去链接和管理这个数据库呢?用阿里云自带的,非常好用。(要有权限申请才能进行对数据库大的改动,我们是最高的管理者所以直接审批通过)

DMS集群是阿里云提供的图形化的数据管理工具,它是一种集数据管理,结构管理,访问安全,性能与优化等于一体的管理服务。

( 这个软件还有本地软件版的可以下载)

(4)设置数据库集群IP白名单:谁可以访问数据库

设置谁可以访问数据库:电脑(公网)可以去访问,和阿里云的云服务器(公网)

数据库还要申请可以被访问的公网网址,通过这个地址呢,我们就可以在tomcat中对数据库进行访问。

(5)用DMS登录数据库,部署数据格式

在heiheihei数据库中,又有5个库的列表,我们就创建数据库kkbdb。给kkbdb数据库进行数据格式的划分:【数据导入】>【 批量数据导入】

在这里插入图片描述

(6)部署代码,替换根里面的所有内容

替换完成后,还要修改数据库的配置。

下面这个文件是对数据仓库信息的配置:修改成自己的数据库地址、账号、密码

在这里插入图片描述
除了url,还要加上数据库的名称
在这里插入图片描述

注意:空格不要乱加,比如 密码前有个空格,则空格也会成为密码的一部分。

url 就是polarDB数据库集群的公网地址

在这里插入图片描述

三、开发模式的演变:大厂项目的开发流程

高效快速的通过自动化的工具协作和沟通来完成软件的生命周期管理。

现在的时代很多大的项目需求也越来越多,东西也越来越复杂。以前所说的大项目在现在看来都是小项目。

(1)瀑布式

二三线小企业依然在用的开发方式

在这里插入图片描述

在测试要是出问题了,这个模式就会有一个很大的弊端:很难修改。

当我们写了5万行代码,测试发现写的代码逻辑有问题,不对劲,要改。改的时候发现这个代码被50处地方调用了,零零散散加起来有5万行代码需要调整。

炸了,这时候的感受就是他妈的不想干了。感觉这个项目要推倒重来了。这时候开发的程序员就是最遭罪的那一个。

(2)敏捷开发模式

在这里插入图片描述

每两天交付一个小的功能,这个小的功能交给测试人员测试。测试完了有问题当时就改,及时更改。(持续交付概念)

多见于二线城市,也有弊端,到最后运维可能说你这种架构部署方式不合理。

当一个项目并发在万和百万级别的时候所用的架构就肯定不一样。相应的代码的编写方式也不一样。

(3)微服务的架构形态:DevOps开发模式

淘宝有很多各种各样的功能,后面分成的什么天猫,书店,飞猪都是淘宝慢慢延伸出的产品,最初都是在淘宝的。淘宝发展越来越大,就把项目中一个个功能抽分出来成为独立的应用软件。

同时,淘宝,天猫,飞猪等都共用一套账号系统,共用一套订单系统,把一个大的应用拆成n个小的应用去写,最终n个小应用像拼积木一样拼成一个大的软件。

又可以这样理解:

在这里插入图片描述

逻辑好理解,但是真正实施起来很复杂。这里就不做详细展开。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Java web小项目_个人主页(1)—— 云环境搭建与项目部署 的相关文章

  • 使用 Https 连接的 Java 应用程序:“连接被拒绝错误”

    我为我的 JavaAppliaction 创建了一个 jar 从这个应用程序中 我连接到 WebApplicaton 中的 servlet 我将名称和密码从 swing 传递到 servlet 这里我只是在 servlet 中显示名称和密码
  • Scala 相当于 Java 的 static 块吗?

    Scala 相当于 Java 的 static 块吗 伴生对象的构造函数 即主体 中的代码是not与 Java 类的静态初始化块中的代码完全相同 在下面的示例中 我创建了 A 的实例 但未进行初始化 scala gt object Test
  • java以一种方式绘制矩形而不是同时使用两种方式

    你好 我在java中有一些代码可以绘制一个矩形 但是它只会向右拖动 即使我向左拖动它也会向右拖动 这是代码我有什么帮助吗 public void mouseDragged MouseEvent e Point p e getPoint in
  • 单元测试应该默认使用“抛出异常”吗?

    换句话说 我应该附加throws Exception我的所有或大部分单元测试 当您使用 Android Studio 生成单元测试 命令 N gt 测试方法 时 它默认添加抛出异常 前任 Test public void someMetho
  • BigInteger 使用了多少空间?

    BigInteger 对象通常使用多少字节的内存 BigInteger 内部使用int 来表示您使用的巨大数字 因此它确实取决于您存储在其中的数字的大小 The int 如果当前数量不能动态适应 则会增长 要获取您的字节数BigIntege
  • Mono 与 CompletableFuture

    CompletableFuture在单独的线程上执行任务 使用线程池 并提供回调函数 假设我有一个 API 调用CompletableFuture 这是 API 调用阻塞吗 线程会被阻塞直到它没有从 API 得到响应吗 我知道主线程 tom
  • 错误:SPAN_EXCLUSIVE_EXCLUSIVE 跨度的长度不能为零

    我的 Android 应用程序出现问题 我有一个按钮和一个关联的事件 但是当我第一次单击时出现错误 跨度不能有零长度 但是当我第二次单击时 事件 onclick 运行良好 看看我的java代码 public class MainActivi
  • DELETE_ON_CLOSE 的用处

    互联网上有很多示例展示如何使用StandardOpenOption DELETE ON CLOSE 例如 Files write myTempFile StandardOpenOption DELETE ON CLOSE 其他例子类似地使用
  • 错误仍然存​​在~“fullscreen_content_controls 无法解析或不是字段”

    我是一名 Android 开发新手 在尝试创建一个打开新布局的按钮时遇到了一些障碍 当我这样做时 我遇到了一些错误 无论我如何尝试 这些错误都不会消失 作为回应 我复制了大部分从原始结构更改的 xml 文件和 java 文件 并将它们添加到
  • 如何在Tomcat 7.0.47启动时注册oracle jdbc驱动程序?

    我将ojdbc6 jar复制到tomcat安装文件夹中的lib文件夹中 当我部署在 JDBC 连接中使用 Oracle 驱动程序的 Web 应用程序时 服务器说找不到驱动程序类 我被迫手动执行 DriverManager registerD
  • 带有版本控制的 json 数据存储

    问题定义 有一个Java服务器存储JSON可以映射到 Java 类的数据 Java 类可能会发生变化 目标是能够更新 Java 类并且仍然能够解码JSON旧版本的数据到新版本的 Java 对象 应该有一个良好的版本控制系统 例如 能够向 J
  • 如何使用 Spring Security 和 Spring Session 从多个服务器获取相同的会话

    很抱歉我的英语还是不太好 请耐心等待 希望您能理解我的问题 我有两个网络服务器 每个网络应用程序都是相同的 Web 服务器共享一台 Redis 服务器 我使用 Spring Security 和 Spring Session 当我登录第一台
  • 使用递归求数组的最小值?

    好吧 所以我一直在尝试用 Java 来理解递归 我可以完成简单的任务 例如求和 反转等 但我一直在努力做这个练习 我试图使用递归找到数组中的最小数字 但始终得到 0 0 的答案 我对递归的理解是 我需要增加一个元素 然后提供一个结束递归的基
  • Spark 编码器:何时使用 beans()

    我在使用Spark的缓存机制时遇到了内存管理问题 我目前正在使用Encoder我正在使用 Kryo 想知道切换到 beans 是否可以帮助我减少缓存数据集的大小 基本上 在使用时使用 beans 相对于 Kryo 序列化有哪些优点和缺点En
  • 如何在JPA中反映“嵌套集”模型

    很好用嵌套集 http www evanpetersen com item nested sets html对于分层数据 但在这个设计中 如果删除或插入一些数据 您应该始终计算右侧和左侧节点 此外 您没有任何外键 我如何用 JPA 反映这个
  • MultipartFile 文件名中的特殊字符转换为?在春季启动

    我想知道为什么 spring boot 将 MultiPartFile 文件名特殊字符转换为 例如 pdf 转换为 pdf 我需要配置 Spring 来禁用此行为吗 我已经检查了我的 jvm 配置中的 file encoding 它已经设置
  • Java正则表达式匹配除

    匹配除特定字符之外的所有字符的正确语法是什么 例如我想匹配除字母之外的所有内容 A Z a z 和数字 0 9 I have string matches A Z a z 0 9 这是不正确的吗 是的 你不需要嵌套 像那样 使用这个代替 A
  • 如何在真实情况下模拟Web应用程序的120个并发用户?

    你如何模拟 gt 120 个并发用户使用负载测试框架 例如 JMeter 据我了解 如果我使用 120 台服务器或 120 个 CPU 核心 则真正的并发是可能的 您如何在真实条件下测试您的网络应用程序或服务 我发现 JMeter 工作得很
  • Ubuntu DEB 安装程序使所有 Java 应用程序具有相同的图标

    我已经为基于 Debian 的系统创建了 Java 应用程序的 DEB 安装程序 在我的 DEB 包中 我使用 desktop 文件 如下所示 Desktop Entry Encoding UTF 8 Version version Typ
  • 具有专用启动键的 DynamoDB 全球二级索引

    通过全局二级索引查询 DynamoDB 表时是否可以指定独占开始键 我正在使用 aws java sdk 版本 1 6 10 并使用QueryExpression and a DynamoDBMapper 这是我想做的事情的要点 Mappe

随机推荐

  • 哈夫曼编码设计(C)

    文章目录 前言 哈夫曼编码设计 总结 前言 大二 刚刚开始学数据结构与算法 写得不好 哈夫曼编码设计 现要求输入8个字符 a b c d e f g h 对应的权值 大于0的整数 然后设计哈夫曼编码实现输入对应8个字符组成的一串字符 字符串
  • centos 网络连接设置

    这里使用虚拟机 VirtualBox 来安装CentOS 6 3 32bit服务器版本 没有安装桌面 作为演示 所以全是命令操作 如何安装CentOS操作系统就不用我说的 虚拟机网络设置为桥接模式 Bridge 单独分配ip 不共享主机ip
  • 致命错误:Rdefines.h:没有那个文件或目录

    致命错误 Rdefines h 没有那个文件或目录 Rdefines h No such file or directory 关键词 CentOS 7 安装rpy2 pip3 install rpy2报错 python3 setup py
  • C#——字符串

    System String类 1 创建字符串 string s abcdefg 2 获取字符串长度 s Length 3 比较字符串是否一样 s abcd 4 字符串连接 s http s 5 使用类似索引器的语法来取得字符串中的某个字符
  • Android常见漏洞

    Android常见漏洞 漏洞名称 Log敏感信息泄露 漏洞描述 程序运行期间打印了用户的敏感信息 造成泄露 修改建议 建议禁止隐私信息的log 漏洞名称 web https校验错误忽略漏洞 漏洞描述 漏洞可导致中间人攻击 修改建议 建议不要
  • JAVA基础练习题

    1 生成两个1 10的随机数 分别作为两个数组的长度 2 向第一个数组中以循环键盘录入的方式添加元素 3 生成1 100之间的随机数 为第二个数组的每个元素赋值 4 将两个数组合并 为一个新的数组 5 去掉新数组的最大值和最小值 求平均值
  • vue之--使用TypeScript

    搭配 TypeScript 使用 Vue 像 TypeScript 这样的类型系统可以在编译时通过静态分析检测出很多常见错误 这减少了生产环境中的运行时错误 也让我们在重构大型项目的时候更有信心 通过 IDE 中基于类型的自动补全 Type
  • C++ 好用的日志库--spdlog

    背景 spdlog 是一个快速 异步的 header only 的 C 日志库 它提供了简单易用的 API 并具有高性能和可扩展性 下载和使用 下载 spdlog 库下载地址 github 链接 hello world 在使用时只需要 in
  • 设计模式:模板方法模式

    定义一个操作中算法的框架 而将一些步骤延迟到子类中 使得子类可以不改变算法的结构即可重定义该算法中的某些特定步骤 类图如下 事实上 模版方法是编程中一个经常用到的模式 先来看一个例子 某日 程序员A拿到一个任务 给定一个整数数组 把数组中的
  • 常用的函数式接口

    1 Supplier接口 仅包含一个无参的方法 T get 用来获取一个泛型参数指定类型的数据 2 Consumer接口 包含抽象方法 void accept T t 正好与Supplier相反 它不是生产一个数据 而是 消费一个数据 其数
  • web安全--环境搭建

    1 搭建环境 下载owasp靶机测试环境 login root password owaspbwa 下载kali linux攻击机也可以使用windows作为攻击机 我的是2020 login kaili password kali 其他版
  • typescript学习(二)——函数

    一 函数的定义 1 函数声明法 规定返回值必须为string类型 function run string return im string 2 匿名函数法 let run function string return im string 没
  • uniapp实现下拉加载更多 u-loadmore

    区别于官网教程 这里总结更为白话 要实现的需求是 比如起初有十条数据 下拉至底部 追加某数量的数据 比如我的项目中 我把它放在了数据展示的底部 上代码
  • 微信支付踩坑记-签名错误,请检查后再试

    注册商户号 使用微信支付功能 直接无脑设置v3密钥 然后配合wxjava这个包进行开发 结果试了很多遍 都报错 最后才发现 我一直使用的v2验证方式 之前都没有设置过v2密钥 最后把v2密钥设置成和v3一样 重新试了一下 解决问题 最后附上
  • Python3学习(六):函数

    Python3 函数 函数是组织好的 可重复使用的 用来实现单一 或相关联功能的代码段 函数能提高应用的模块性 和代码的重复利用率 你已经知道Python提供了许多内建函数 比如print 但你也可以自己创建函数 这被叫做用户自定义函数 可
  • 广度优先算法

    deque 即双端队列 是一种具有队列和栈的性质的数据结构 双端队列中的元素可以从两端弹出 其限定插入和删除操作在表的两端进行 最短路径问题的算法被称为广度优先搜索 广度优先搜索是一种用于图的查找算法 第一类问题 从节点A出发 有前往节点B
  • Pandas 写入 Excel 的几种情形与方式,覆盖,新增,追加,对齐

    Pandas 写入 Excel 的几种情形与方式 覆盖 新增 追加 对齐 以下代码默认已经导入 np pd import numpy as np import pandas as pd 执行下面示例之前 最好先删除 test xlsx 文件
  • 怎样去掉PATH中重复的项目

    在zsh shell 中输入 typeset U path 运行即可
  • IDEA中TDengine数据库连接

    过程描述 首先配置数据库连接信息 下载驱动jar包 配置驱动 Maven Repository com taosdata jdbc taos jdbcdriver mvnrepository com 下载 TDengine Client 安
  • Java web小项目_个人主页(1)—— 云环境搭建与项目部署

    摘自 Java web小项目 个人主页 1 云环境搭建与项目部署 作者 丶PURSUING 发布时间 2021 03 26 23 59 39 网址 https blog csdn net weixin 44742824 article de