Maven笔记
Maven介绍(1)Maven 是 Apache 提供的一款自动化构建工具,用于自动化构建和依赖管理。 (2)Maven的本质是一个项目管理工具,将项目开发和管理过程抽象成一个项目对象模型(POM) (3)Maven的作用 作用 简介 项目构建 项目依赖管理,软件项目持续集成 版本管理 项目的站点描述信息管理 项目构建 提供标准的、跨平台的自动化项目构建方式 依赖管理 方便快捷的管理项目依赖的资源(jar包),避免资源间的版本冲突问题 Maven仓库(1)仓库用于存储资源,包含各种jar包 (2)仓库分类 分类 简介 本地仓库 自己电脑上存储资源的仓库,连接远程仓库获取资源 远程仓库 非本机电脑上的仓库,为本地仓库提供资源 中央仓库:Maven团队维护,存储所有资源的仓库 私服:部门/公司范围内存储资源的仓库,从中央仓库获取资源 (3)三种仓库关系 Maven坐标(1)坐标是Jar包的唯一标识,Maven通过坐标在仓库中找到项目所需的Jar包 (2)Maven坐标示例 12345678<dependency ...
Git笔记
版本控制 版本控制是指对软件开发过程中各种程序代码、配置文件及说明文档等文件变更的管理,是软件配置管理的核心思想之一 版本控制最重要的是可以记录文件修改历史记录,从而让用户能够查看历史版本, 方便版本切换 集中式版本控制工具 (1)集中化的版本控制系统诸如CVS、SVN(Subversion)、VSS……等,都有一个单一的集中管理的服务器,保存所有文件的修订版本, 而协同工作的人们都通过客户端连到这台服务器,取出最新的文件或者提交更新 (2)多年以来,这已成为版本控制系统的标准做法, 每个人都可以在一定程度上看到项目中的其他人正在做些什么,管理员可以轻松掌控每个开发者的权限,并且管理一个集中化的版本控制系统,远比在各个客户端上维护本地数据库来得轻松容易 (3)缺点是中央服务器的单点故障,如果服务器宕机一小时,那么在这一小时内,谁都无法提交更新,也就无法协同工作。 分布式版本控制工具(1)分布式版本控制工具如Git、Mercurial、Bazaar、Darcs…… 这种,客户端提取的不是最新版本的文件快照,而是把代码仓库完整地镜像下来(本地库)。 (2)这样任何一处协同工作用 ...
Nginx笔记
Nginx基础什么是Nginx?Nginx 是一款常用的轻量级、高性能的反向代理服务器软件,主要用于 HTTP、HTTPS、SMTP、POP3 和 IMAP 等协议。它的优势在于高效的反向代理和负载均衡能力,可以处理大量并发连接。大概可以处理2-3万并发连接数,官方监测能支持5万并发 Nginx有什么优点? 高性能:Nginx 使用事件驱动的异步架构,能够支持大量并发连接,处理效率高 反向代理:Nginx 可以作为反向代理,将请求转发到后端服务器,提供负载均衡和缓存等功能。 高可用性:Nginx 支持热部署和动态配置,不需要重启即可生效,提供了高可用性和灵活性。 高扩展性:Nginx 支持模块化架构,可以通过添加第三方扩展来满足不同需求。 轻量级:Nginx 的代码设计简单,内存占用少,适合用于资源受限的环境。 为什么Nginx性能高? 事件处理机制:Nginx 使用基于事件驱动的处理模型,采用异步非阻塞 IO 操作,充分利用系统资源,提高并发能力。 高效的网络模块:Nginx 内置了高效的网络模块,包括 TCP/UDP 监听、HTTP 解析和缓存等,提升网络处理性能。 轻 ...
Redis笔记
Redis基础Redis简介Redis是一个开源的高性能键值对存储系统,其使用了单线程加多路IO复用的技术来提供快速且高效的数据处理能力 Redis应用场景 应用场景 描述 缓存 Redis 可以作为高性能缓存系统使用,将常用的数据缓存在内存中,提供快速的读写操作。 会话存储 用于存储用户会话数据,例如登录状态、购物车信息等,在分布式环境下可以提供共享会话功能。 计数器 Redis支持原子操作,可以用来实现计数器功能,如网站访问量统计、文章点赞数、粉丝数等 排行榜 Redis 的有序集合(Sorted Set)可以实现排行榜功能,有序集合可以存储多个元素,并且每个元素都关联一个分数,通过分数来进行排序,如热门文章排行、用户积分排行等。 分布式锁 Redis 可以用于实现分布式锁,确保在分布式环境下对共享资源的互斥访问,避免并发冲突。 分布式缓存 Redis 可以作为分布式缓存系统使用,通过多个节点组成集群,提供高可用性和扩展性。 消息队列 Redis 提供 List 和 Pub/Sub 功能,可以实现简单的消息队列系统,用于异步任务处理、事件 ...
RabbitMQ笔记
消息队列消息队列简介消息队列(MessageQueue)简称MQ,是一种在应用系统之间发送消息、存储消息并异步处理消息的技术 常见消息队列协议 MQTT(Message Queuing Telemetry Transport):是一种轻量级的发布/订阅协议,特别适用于物联网和低带宽、不稳定网络环境下的通信 JMS(Java Message Service):是Java平台上定义的消息队列API标准,它提供了发送、接收和处理消息的功能,JMS本身并不是一种协议,而是一种API规范,可以与多种消息中间件的协议进行交互,如ActiveMQ、RabbitMQ等 AMQP(Advanced Message Queuing Protocol):是一种开放的、标准化的消息队列协议,它提供了一套统一的机制来进行异步通信 常见的MQ实现比较常见的MQ实现:ActiveMQ、RabbitMQ、RocketMQ、Kafka 对比 RabbitMQ ActiveMQ RocketMQ Kafka 公司/社区 Rabbit Apache 阿里 Apache 开发语言 Erl ...
Elasticsearch笔记
Elasticsearch概括ELK简介ELK是以Elasticsearch为核心的技术栈,包括Elasticsearch、Logstash、Kibana、Beats ELK 简介 Elasticsearch 存储,计算,搜索,实时的分布式搜索和分析引擎,可以用于全文搜索,结构化搜索以及分析 Logstash+Beats 数据抓取,具有实时渠道能力的数据收集引擎 Kibana 数据可视化,分析和可视化的 Web 平台 Elasticsearch简介(1)Elasticsearch是一个开源的分布式的RESTful 风格的搜索和数据分析引擎 (2)Elasticsearch可以用来实现搜索、日志统计、分析、系统监控等功能 (3)Elasticsearch底层是基于Lucene搜索引擎构建的,利用了Lucene的核心代码来实现全文搜索和分析,对Lucene进行了进一步的封装和优化,提供了更加简单和易用的RESTful API,从而能够更方便地进行搜索和分析操作(Lucene是一款使用Java语言编写的功能强大的全文索引和搜索引擎,是Apache公司的顶级项目 ...
Docker笔记
Docker概括Docker简介(1)Docker是一个开源的应用容器引擎,解决了依赖兼容问题、解决了操作系统环境差异 (2)分布式系统中,依赖的组件非常多,不同组件之间部署时往往会产生一些冲突。在数百上千台服务中重复部署,环境不一定一致,会遇到各种问题 Docker和虚拟机的区别 对比 Docker容器 虚拟机(VM) 操作系统 与宿主机共享OS,系统的进程 宿主机OS上运行虚拟机OS,操作系统中的操作系统 存储大小 镜像小,便于存储与传输 镜像庞大(vmdk、vdi等) 运行性能 几乎无额外性能损失 操作系统额外的CPU、内存消耗 移植性 轻便、灵活、适应于linux 笨重、与虚拟化技术耦合度高 硬件亲和性 面向软件开发者 面向硬件运维者 部署速度 快速,秒级 较慢,10S以上 系统支持 单机支持上千个容器 一般几十个 Docker架构 概念 说明 Docker 镜像(Images) 容器镜像是轻量级的、可执行的独立软件包,包含软件运行所需要的所有内容(代码、运行时环境、系统工具、系统库和设置) 相当于是一个root文件系统,用于 ...
Kubernetes笔记
应用部署方式演变 传统部署—>虚拟化部署—>容器化部署 传统部署传统部署方式是将应用程序直接安装在物理服务器上。每个应用程序都需要独立的硬件资源和操作系统环境。 优点:部署简单,无需额外技术和工具支持。 缺点:资源利用率低,隔离性差,部署和扩展困难。 虚拟化部署为了解决传统部署方式的问题,虚拟化技术被引入。虚拟化通过软件层面的抽象,将一个物理服务器划分为多个虚拟机(VM)。每个虚拟机(VM)是一台完整的计算机,可以运行一个或多个应用程序,包括其自己的操作系统。 优点:提高硬件资源利用率,改善应用之间的隔离性,实现虚拟机迁移。 缺点:引入额外开销,启动时间较长,资源隔离并不完全。 容器化部署容器化部署简介容器化部署是近年来的新兴趋势。容器化使用容器技术(如Docker)将应用程序及其所有依赖项打包为一个独立的容器。每个容器都运行在共享的操作系统内核上,相比于虚拟化,容器化更加轻量级和快速启动。 优点:轻量且快速启动,资源利用率高,良好的隔离性,快速扩展和自动化管理。 缺点:容器间共享操作系统可能带来安全和稳定性问题,依赖额外的容器编排工具。 容器化部署存在的问 ...
Jenkins笔记
Jenkins是一个开源的持续集成和持续交付工具,用于自动化构建、测试和部署软件。它提供了一个可扩展的插件系统,支持各种不同的构建工具、测试框架和版本控制系统。
计算机网络笔记
计算机网络概括网络、互联网、因特网、万维网 互联网 > 因特网 > 万维网 概念 简介 网络(Network) 由若干节点(Node)和连接这些节点的链路(Link)组成, 结点可以是计算机、集线器、交换机或路由器等 互联网(internet) 泛指多个计算机网络按照一定通信协议相互连接而成的一个大型计算机网络。 因特网(Internet) 特指在ARPA网基础上发展而来的、世界上最大的、全球性互联网 万维网(World Wide Web) 万维网(WWW)是基于因特网,是一个大规模的、联机式的信息存储所, 只要应用层使用了HTTP协议,就称为万维网,所看到的网站基本都使用的万维网技术 计算机网络定义 计算机网络的精确定义并未统一 最简单的定义一些互相连接的、自治的的计算机的集合 概念 简介 互连 指计算机之间可以通过无线,或有限的方式进行数据通信 自治 指独立的计算机,有自己的硬件和软件,可以单独运行使用 集合 指至少需要两台计算机 较好的定义计算机网络主要是由一些通用的、可编程的硬件互连而成的,而这些硬件井非专 ...
数据结构与算法笔记
常见八大数据结构数据结构指的是组织和存储数据的方式,它可以帮助我们有效地管理和操作数据。常见的数据结构有以下八种 数据结构 简介 数组(Array) 线性数据结构,将相同类型的元素按照一定顺序排列。 链表(Linked List) 线性数据结构,由一系列节点组成,每个节点都包含一个数据元素和一个指向下一个节点的指针。 栈(Stock) 特殊的线性数据结构,遵循先进后出(LIFO)原则,仅一端能够进出,先进的元素进入栈底,取元素的时先从栈顶获取。 队列(Queue) 线性数据结构,遵循先进先出(FIFO)的原则。一端只能进,一端只能出,只能在队尾插入元素,在队头删除元素。 树(Tree) 非线性数据结构,由一系列节点以层次关系组成,每个节点可以有多个子节点。 图(Graph) 非线性数据结构,由一组节点和节点之间的边组成。 哈希表(Hash Table) 也叫散列表, 是一种使用哈希函数将键映射到存储桶的数据结构。 堆(Heap) 特殊的树结构,可以被看成一个树的数组对象,分为最大堆和最小堆。 算法复杂度算法 ...
设计模式笔记
设计模式简介设计模式是软件开发领域中常用的解决问题的可复用方案。它们提供了一种在特定情境下解决特定问题的方法和指导原则,可以帮助开发者编写可靠、可维护和可扩展的代码。设计模式可以分为三大类: 创建型模式(Creational Patterns):用于创建对象的模式。 单例模式(Singleton Pattern):确保一个类只有一个实例,并提供全局访问点以使其他对象可以访问该实例。 工厂方法模式(Factory Method Pattern):定义一个用于创建对象的接口,但由子类决定要实例化的类是哪一个。 抽象工厂模式(Abstract Factory Pattern):提供一个创建相关或依赖对象的接口,而无需指定具体类。 建造者模式(Builder Pattern):将对象的构建过程与其表示分离,以便相同的构建过程可以创建不同的表示。 原型模式(Prototype Pattern):通过克隆现有对象来创建新对象,避免了使用多个类进行实例化。 结构型模式(Structural Patterns):用于处理类和对象之间的关系。 适配器模式(Adapter Pattern):将一个类 ...

















