Git分布式版本控制工具
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354#常用命令汇总# 1. 克隆git clone https://gitee.com/xxx.gitcd 克隆的目录# 2. 切换到主线分支,拉取最新代码(保证开发分支基于最新代码)git checkout mastergit pull origin master#检出到指定提交哈希值 git log #来查看提交记录的哈希值git checkout 哈希值 #如果只是查看历史代码可以直接用git checkout -b 新分支名 哈希值 #如果要基于历史提交改代码,必须基于这个哈希创建新分支# 3. 创建并切换到开发分支git checkout -b 新分支名# 4. 开始开发、提交git add .git commit -m "提交说明" # 补充:仅修改已有文件时,可以用简写(新增文件不生效)# git commit -am "提交说明"...
Web后端基础(数据库)
05-Web后端基础(数据库) 前言 引言 在我们讲解 SpringBootWeb 基础知识(IOC、DI 等)的时候,我们讲到在 web 开发中,为了应用程序职责单一,方便维护,我们一般将 web 应用程序分为三层,即:Controller、Service、Dao 。 之前我们的案例中,是这样子的请求流程:浏览器发起请求,先请求 Controller;Controller 接收到请求之后,调用 Service 进行业务逻辑处理;Service 再调用 Dao,Dao 再解析 user.txt 中所存储的数据。 txt 文件中可以存储数据,但是在企业项目开发中一般不会使用文本文件存储项目数据,因为不便管理维护,操作难度大。 在真实的企业开发中呢,都会采用数据库来存储和管理数据,那此时,web 开发调用流程图如下所示: 那么今天我们就要来学习数据库技术。 相关概念 首先来了解一下什么是数据库。 **数据库:英文为 DataBase,简称 DB,**它是存储和管理数据的仓库。 像我们日常访问的电商网站京东,企业内部的管理系统 OA、ERP、CRM 这类的系统,以及大家每天都会...
RabbitMQ
微服务一旦拆分,必然涉及到服务之间的相互调用,目前我们服务之间调用采用的都是基于OpenFeign的调用。这种调用中,调用者发起请求后需要等待服务提供者执行业务返回结果后,才能继续执行后面的业务。也就是说调用者在调用过程中处于阻塞状态,因此我们成这种调用方式为同步调用,也可以叫同步通讯。但在很多场景下,我们可能需要采用异步通讯的方式,为什么呢? 我们先来看看什么是同步通讯和异步通讯。如图: 解读: 同步通讯:就如同打视频电话,双方的交互都是实时的。因此同一时刻你只能跟一个人打视频电话。 异步通讯:就如同发微信聊天,双方的交互不是实时的,你不需要立刻给对方回应。因此你可以多线操作,同时跟多人聊天。 两种方式各有优劣,打电话可以立即得到响应,但是你却不能跟多个人同时通话。发微信可以同时与多个人收发微信,但是往往响应会有延迟。 所以,如果我们的业务需要实时得到服务提供方的响应,则应该选择同步通讯(同步调用)。而如果我们追求更高的效率,并且不需要实时响应,则应该选择异步通讯(异步调用)。 同步调用的方式我们已经学过了,之前的OpenFeign调用就是。但是: 异步调用又该如何实现...
项目部署(Docker)
20-项目部署(Docker) 在昨天的课程中,我们学习了 Linux 操作系统的常见命令,在 Linux 上安装软件,以及如何在 Linux 上部署一个单体项目。大家想一想自己最大的感受是什么? 我相信,除了个别天赋异禀的同学以外,大多数同学都会有相同的感受,那就是麻烦。核心体现在三点: 命令太多了,记不住 软件安装包名字复杂,不知道去哪里找 安装和部署步骤复杂,容易出错 其实上述问题不仅仅是新手,即便是运维在安装、部署的时候一样会觉得麻烦、容易出错 。 特别是我们即将进入项目阶段的学习,项目动辄就是几台、几十台、甚至上百台服务需要部署,有些大型项目甚至达到成千上万台服务。而由于每台服务器的运行环境不同,你写好的安装流程、部署脚本并不一定在每个服务器都能正常运行,经常会出错。这就给系统的部署运维带来了很多困难 。 那么,有没有一种技术能够避免部署对服务器环境的依赖,减少复杂的部署流程呢? 答案是肯定的,这就是我们今天要学习的 Docker 技术。你会发现,有了 Docker 以后项目的部署如丝般顺滑,大大减少了运维工作量。 即便你对 Linux 不熟悉,你也能轻松部署各种常...
项目部署(Linux)
19-项目部署(Linux) Linux 是一套免费使用和自由传播的操作系统。说到操作系统,大家比较熟知的应该就是 Windows 和 MacOS 操作系统,我们今天所学习的 Linux 也是一款操作系统。 我们作为 javaEE 开发工程师,将来在企业中开发时会涉及到很多的数据库、中间件等技术,比如 MySQL、Redis、MQ 等技术,而这些应用软件大多都是需要安装在 Linux 系统中使用的。我们做为开发人员,是需要通过远程工具连接 Linux 操作系统,然后来操作这些软件的。而且一些小公司,可能还需要我们自己在服务器上安装这些软件。 所以,不管从企业的用人需求层面,还是个人发展需要层面来讲,我们作为服务端开发工程师,Linux 的基本使用是我们必不可少的技能。 对于 Linux 的常用指令的学习,最好的学习方法就是:多敲 [!TIP] 课程内容: Linux 概述 Linux 常用命令 Linux 软件安装 项目部署 Linux 概述 主流操作系统 不同领域的主流操作系统,主要分为以下这么几类: 桌面操作系统、服务器操作系统、移动设备操作系统、嵌入式操作系统。接...
Typora安装&激活&主题配置(保姆级教程)
Typora安装&激活&主题配置(保姆级教程) 方式一 1. 安装nodejs(自行解决) 2. 安装Typroa [!Tip] 安装好后打开Tyroa,选择输入序列号->选择离线激活->复制机器码到记事本->关闭程序 复制下面的脚本到安装目录下D:\Typora\resources文件夹内创建pj.js文件 修改209行的路径为自己的安装路径const Typora_Installation_Path = “D:\Typora”; 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221...
Maven 基础
Maven 基础篇 [!TIP] 课程内容: 初始 Maven Maven 概述 Maven 模型 Maven 仓库介绍 Maven 安装与配置 IDEA 集成 Maven 依赖管理 单元测试 初始 Maven 介绍 Maven 是一款用于管理和构建 Java 项目的工具,是 Apache 旗下的一个开源项目 。 Apache 软件基金会,成立于 1999 年 7 月,是目前世界上最大的最受欢迎的开源软件基金会,也是一个专门为支持开源项目而生的非盈利性组织。 开源项目:https://www.apache.org/index.html#projects-list 那我们之前在 JavaSE 阶段,没有使用 Maven,依然可以构建 Java 项目。 我们为什么现在还要学习 Maven 呢 ? 那接下来,我们就来聊聊 Maven 的作用。 Maven 的作用 依赖管理 方便快捷的管理项目依赖的资源(jar 包),避免版本冲突问题。 1). 使用 maven 前 我们项目中要想使用某一个 jar 包,就需要把这个 jar 包从官方网站下载下来,然后再导入到项目中...
Web前端开发
01-前端 Web 开发(HTML+CSS) 初识 Web 前端 介绍 我们介绍 Web 网站工作流程的时候提到,前端开发,主要的职责就是将数据以好看的样式呈现出来。说白了,就是开发网页程序,如下图所示: 主要明确以下三个问题: 1). 网页由哪些部分组成 ? 文字、图片、音频、视频、超链接、表格等等。 2). 我们看到的网页,背后的本质是什么 ? 前端程序员写的前端代码 (备注:在前后端分离的开发模式中) 3). 前端的代码是如何转换成用户眼中的网页的 ? 通过浏览器转化(解析和渲染)成用户看到的网页 浏览器中对代码进行解析和渲染的部分,称为 浏览器内核 而市面上的浏览器非常多,比如:IE、火狐 Firefox、苹果 safari、欧朋、谷歌 Chrome、QQ 浏览器、360 浏览器等等。 而且我们电脑上安装的浏览器可能都不止一个,有很多。 但是呢,需要大家注意的是,不同的浏览器,内核不同,对于相同的前端代码解析的效果也会存在差异。 那这就会造成一个问题,同一段前端程序,不同浏览器展示出来的效果是不一样的,这个用户体验就很差了。而我们想达到的效果则是,即使用户...
Web后端基础
04-Web 后端基础(基础知识) 在此非常感谢黑马的涛哥! SpringBootWeb 入门 Http 协议 SpringBootWeb 案例 分层解耦 那在前面讲解 Web 前端开发的时候,我们学习了前端网页开发的三剑客 HTML、CSS、JS,通过这三项技术,我们就可以制作前端页面了。 那最终,这些个页面资料,我们就可以部署在服务器上,然后打开浏览器就可以直接访问服务器上部署的前端页面了。 而像 HTML、CSS、JS 以及图片、音频、视频等这些资源,我们都称为静态资源。 所谓静态资源,就是指在服务器上存储的不会改变的数据,通常不会根据用户的请求而变化。 那与静态资源对应的还有一类资源,就是动态资源。那所谓动态资源,就是指在服务器端上存储的,会根据用户请求和其他数据动态生成的,内容可能会在每次请求时都发生变化。比如:Servlet、JSP 等(负责逻辑处理)。而 Servlet、JSP 这些技术现在早都被企业淘汰了,现在在企业项目开发中,都是直接基于 Spring 框架来构建动态资源。 而对于我们 java 程序开发的动态资源来说,我们通常会将这些动态资源部署在...
Redis最佳实践
Redis高级篇之最佳实践 今日内容 Redis键值设计 批处理优化 服务端优化 集群最佳实践 1、Redis键值设计 1.1、优雅的key结构 Redis的Key虽然可以自定义,但最好遵循下面的几个最佳实践约定: 遵循基本格式:[业务名称]:[数据名]:[id] 长度不超过44字节 不包含特殊字符 例如:我们的登录业务,保存用户信息,其key可以设计成如下格式: 这样设计的好处: 可读性强 避免key冲突 方便管理 更节省内存: key是string类型,底层编码包含int、embstr和raw三种。embstr在小于44字节使用,采用连续内存空间,内存占用更小。当字节数大于44字节时,会转为raw模式存储,在raw模式下,内存空间不是连续的,而是采用一个指针指向了另外一段内存空间,在这段空间里存储SDS内容,这样空间不连续,访问的时候性能也就会收到影响,还有可能产生内存碎片 1.2、拒绝BigKey BigKey通常以Key的大小和Key中成员的数量来综合判定,例如: Key本身的数据量过大:一个String类型的Key,它的值为5 MB Key中的成员...





