- 博客(121)
- 资源 (2)
- 收藏
- 关注
原创 TCP协议和TCP连接
TCP(Transmission Control Protocol)传输控制协议是一种面向连接的、可靠的、基于字节流的传输层通信协议。当客户和服务器彼此交换数据前,必须先在双方之间建立一个TCP连接之后才能传输数据。TCP提供超时重发、丢弃重复数据、流量控制等功能,保证数据能从一端传输到另一端。IP数据报(IP数据包)由首部和数据两部分组成。IP数据报的数据部分封装了一个TCP报文段。TCP报文段分为首部和数据两部分。
2023-02-24 15:46:04
2242
原创 设计模式学习笔记 - 外观模式
外观模式(Facade Pattern),也叫“过程模式”。外观模式为子系统中的一组接口提供一个一致的界面,此模式定义了一个高层接口,这个接口使得这一子系统更加容易使用。外观模式通过定义一个一致的接口,用以屏蔽内部子系统的细节,使得调用端只需跟这个接口发生调用,而无需关心这个子系统的内部细节。外观模式可以理解为转换一群接口,客户只要调用一个接口,而不用调用多个接口才能达到目的。外观模式就是解决多个复杂接口带来的使用困难,起到简化用户操作的作用。
2023-02-23 21:33:23
757
原创 设计模式学习笔记 - 组合模式
组合模式(Composite Pattern),又叫部分整体模式,它创建了对象组的树形结构,将对象组合成树状结构以表示“整体-部分”的层次关系。组合模式属于结构型模式。组合模式依据树形结构来组合对象,用来表示部分以及整体层次。组合模式使得用户对单个对象和组合对象的访问具有一致性,即组合能让客户以一致的方式处理个别对象以及组合对象。
2022-11-20 21:32:19
530
原创 设计模式学习笔记 - 装饰者模式
动态的将新功能附加到对象上。在对象功能扩展方面,它比继承更有弹性,装饰者模式也体现了开闭原则(ocp原则)。装饰者模式就像打包一个快递(主体和包装):主体(被装饰者Component),比如陶瓷、衣服。包装(装饰者Decorator),比如报纸、塑料泡沫、纸板、木板。
2022-11-13 22:40:44
431
原创 设计模式学习笔记 - 桥接模式
桥接模式(Bridge模式):将实现与抽象放在两个不同的类层次中,使两个层次可以独立改变。桥接模式是一种结构型设计模式。桥接模式基于类的最小设计原则,通过使用封装、聚合及继承等行为让不同的类承担不同的职责。它的主要特点是把抽象(Abstraction)与行为实现(Implementation)分离开来,从而可以保持各部分的独立性以及应对它们的功能扩展。
2022-11-06 19:51:35
453
原创 设计模式学习笔记 - 适配器模式
适配器模式(Adapter Pattern)将某个类的接口转换成客户端期望的另一个接口表示,主的目的是兼容性,让原本因接口不匹配不能一起工作的两个类可以协同工作,其别名为包装器(Wrapper)。适配器模式属于结构型模式。类适配器模式、对象适配器模式、接口适配器模式。
2022-10-30 22:21:37
632
原创 设计模式学习笔记 - 建造者模式
建造者模式(Builder Pattern) 又叫生成器模式,是一种对象构建模式。它可以将复杂对象的建造过程抽象出来(抽象类别),使这个抽象过程的不同实现方法可以构造出不同表现(属性)的对象。
2022-10-23 22:41:26
203
原创 设计模式学习笔记 - 原型模式
原型模式(Prototype模式):用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象。原型模式是用于创建许多重复的对象,同时又能保证性能。原型模式是一种创建型设计模式,允许一个对象再创建另外一个可定制的对象,无需知道如何创建的细节。工作原理是通过将一个原型对象传给那个要发动创建的对象,这个要发动创建的对象通过请求原型对象拷贝它们自己来实施创建,即对象.clone()。
2022-10-15 12:23:52
328
原创 设计模式学习笔记 - 工厂模式
工厂模式的意义:将实例化对象的代码提取出来,放到一个类中统一管理和维护,达到和主项目的依赖关系的解耦,从而提高项目的扩展和维护性。(2)三种工厂模式,分别是简单工厂模式、工厂方法模式、抽象工厂模式。
2022-10-07 17:14:09
698
原创 设计模式学习笔记 - 单例设计模式
设计模式(Design pattern)是程序员在面对同类软件工程设计问题所总结出来的有用的经验,模式不是代码,而是某类问题的通用解决方案,设计模式代表了最佳的实践。这些解决方案是众多软件开发人员经过相当长的一段时间的试验和错误总结出来的。设计模式并不局限于某种语言,java、php、c++都有设计模式。设计模式的本质提高软件的维护性,通用性和扩展性,并降低软件的复杂度。
2022-10-01 17:34:24
899
原创 设计模式学习笔记 - UML类图
UML(Unified modeling language,统一建模语言),是一种用于软件系统分析和设计的语言工具,它用于帮助软件开发人员进行思考和记录思路的结果。UML本身是一套符号的规定,这些符号用于描述软件模型中的各个元素(类、接口)和它们之间的关系(依赖、泛化、实现、关联、组合、聚合)。使用UML来建模常用的工具有Rational Rose,也可以使用一些插件来建模,例如Eclipse插件AmaterasUML。
2022-09-24 23:19:53
545
原创 设计模式学习笔记 - 设计模式七大原则
软件工程中,设计模式(design pattern)是对软件设计中普遍存在(反复出现)的各种问题,所提出的解决方案。编写软件过程中,程序员面临着来自耦合性、内聚性以及可维护性、可扩展性、重用性、灵活性等多方面的挑战。
2022-09-18 14:29:50
322
1
原创 容器管理Rancher与容器监控
Rancher是一个开源的企业级全栈化容器部署及管理平台。Rancher为容器提供一系列基础架构服务:CNI兼容的网络服务、存储服务、主机管理、负载均衡、防护墙等等,Rancher让上述服务跨越公有云、私有云、虚拟机、物理机环境运行,真正实现一键式应用部署和管理。influxDB是一个分布式时间序列数据库。cAdvisor提供时序数据库用于存储cAdvisor组件所提供的监控信息。Grafana是一个可视化面板(Dashboard),有着非常漂亮的图表和布局展示,功能齐全的度量仪表盘和图形编辑器。
2022-09-02 23:21:57
4186
原创 微服务容器部署与持续集成(Jenkins)
对于数量众多的微服务,手动部署是非常麻烦的做法,并且容易出错,所以本博客使用自动部署方式。Dockerfile是由一系列命令和参数构成的脚本,这些命令应用于基础镜像并最终创建一个新的镜像。持续集成(Continuous integration)简称CI,持续集成中的任何一个环节都是自动完成的,无需太多的人工干预,有利于减少重复过程以节省时间、费用和工作量。............
2022-08-27 11:02:10
2584
1
原创 Git学习笔记 - 搭建GitLab服务器与Idea集成GitLab
GitLab 是由GitLabInc.开发,使用MIT 许可证的基于网络的Git 仓库管理工具,且具有wiki 和issue 跟踪功能。使用 Git 作为代码管理工具,并在此基础上搭建起来的web 服务。GitLab CE为社区版,GitLab EE为企业版。
2022-08-20 16:29:22
3188
2
原创 Git学习笔记 - Idea集成GitHub、Gitee
在Idea设置GitHub账号,进入Settings,查看Version control中是否有GitHub,如果没有的话则需要到Plugins的MarketPlace中搜索下载GitHub,下载成功后可以在Plugins的Installed中搜索到GitHub。
2022-08-13 10:33:38
1501
原创 Git学习笔记 - Idea集成Git
可以创建忽略规则文件(xxxx.ignore,命名建议使用 git.ignore)来忽略这些文件,忽略规则文件的可以存放在任意位置,但是为了便于让~/.gitconfig 文件引用,建议放在用户home目录下。
2022-08-07 23:25:21
290
原创 Git学习笔记 - Git基本操作和GitHub
Git是一个免费的、开源的分布式版本控制系统,可以快速高效地处理从小型到大型的各种项目。当版本进行切换时,工作区的文件内容会变成切换后的版本下的。
2022-07-31 12:15:18
812
原创 常见的认证机制
Java学习笔记 - 常见的认证机制一、HTTP Basic Auth二、Cookie Auth三、OAuth四、Token Auth1、Token Auth认证机制2、基于JWT的Token认证机制实现2.1、加密方式2.2、JWT组成 一、HTTP Basic Auth HTTP Basic Auth 就是每次请求API时都需要提供用户的账号和密码来验证用户身份,是配合 RESTful API 使用的最简单的认证方式(服务端不保存用户状态),但由于有把账号和密码暴露给第三方客户端的风险,因此在开
2022-03-19 21:39:47
1702
原创 Java学习笔记 - Spring Cloud Stream
Java学习笔记 - Spring Cloud Stream1、消息中间件迁移的问题2、Spring Cloud Stream概述3、核心概念4、入门案例4.1、消息生产者4.2、消息消费者4.3、启动工程5、自定义消息通道6、消息分组7、消息分区 1、消息中间件迁移的问题在实际的企业开发中,消息中间件是至关重要的组件之一。消息中间件主要解决应用解耦、异步消息、流量削锋等问题,实现高性能、高可用、可伸缩和最终一致性架构。不同的中间件其实现方式,内部结构是不一样的。如常见的RabbitMQ和Kafka,
2021-12-15 21:57:17
910
原创 Java学习笔记 - 微服务的链路追踪
Java学习笔记 - 微服务的链路追踪1、微服务架构下的问题2、Spring Cloud Sleuth2.1 Sleuth简介2.2 相关概念2.3 链路追踪Sleuth入门案例3、Zipkin的概述4、Zipkin Server的部署和配置5、客户端Zipkin+Sleuth整合6、基于消息中间件收集数据6.1 RabbitMQ的安装与启动6.2 服务端启动6.3 客户端配置7、存储跟踪数据7.1 准备数据库7.2 配置启动服务端 1、微服务架构下的问题在大型系统的微服务化构建中,一个系统会被拆分成
2021-12-14 23:12:23
4900
原创 Java学习笔记 - 微服务网关SpringCloudGateway
Java学习笔记 - 微服务网关SpringCloudGateway1.Spring Cloud Gateway简介2.核心概念3.案例4.路由规则5.动态路由6.重写转发路径7.微服务名称转发路径8.过滤器8.1 过滤器基础8.2 局部过滤器8.3 全局过滤器9.统一鉴权9.1 鉴权逻辑9.2 代码实现10.网关限流10.1 常见的限流算法10.2 基于Filter的限流10.3 基于Sentinel的限流10.4 网关高可用
2021-12-05 15:52:03
1262
原创 Java学习笔记 - Apollo分布式配置中心
一、Apollo概述 Apollo(阿波罗)是携程框架部门研发的开源配置管理中心,能够集中化管理应用不同环境、不同集群的配置,配置修改后能够实时推送到应用端,并且具备规范的权限、流程治理等特性。正是基于配置的特殊性,所以Apollo从设计之初就立志于成为一个有治理能力的配置发布平台,目前提供了以下的特性:统一管理不同环境、不同集群的配置Apollo提供了一个统一界面集中式管理不同环境(environment)、不同集群(cluster)、不同命名空间(namespace)的配置。同一
2021-10-05 19:02:58
967
原创 Java学习笔记 - 分布式系统的基础知识
一、分布式中的远程调用 在微服务架构中,通常存在多个服务之间的远程调用的需求。远程调用通常包含两个部分:序列化和通信协议。常见的序列化协议包括json、xml、hession、protobuf、thrift、text、bytes等,目前主流的远程调用技术有基于HTTP的RESTful接口以及基于TCP的RPC协议。 1、RESTful接口 REST(REpresentational State Transfer)这个概念,首次出现是在 2000 年Roy Thomas Fielding(他是
2021-10-03 23:50:44
300
原创 Java学习笔记-Day90 Spring Cloud框架
Java学习笔记-Day90 Spring Cloud框架一、Spring Cloud的简介二、Spring Cloud的优缺点三、集群和分布式四、服务注册与发现1、简单介绍2、实现流程 一、Spring Cloud的简介 Spring Cloud 是一套完整的微服务解决方案,基于 Spring Boot 框架,准确的说,它不是一个框架,而是一个大的容器,它将市面上较好的微服务框架集成进来,从而简化了开发者的代码量。微服务是一种架构风格,一个大型复杂软件应用由一个或多个微服务组成。系统中的各个微服
2021-05-26 15:59:30
333
1
原创 Java学习笔记-Day89 Mybatis-plus框架
Java学习笔记-Day89 Mybatis-plus框架一、Mybatis-plus的简介MyBatis-Plus(简称 MP)是一个 MyBatis的增强工具,在 MyBatis 的基础上只做增强不做改变,为简化开发、提高效率而生。支持任何能使用 mybatis 进行 crud,并且支持标准 sql 的数据库。
2021-04-05 15:29:56
408
2
原创 Java学习笔记-Day88 Spring Security安全框架
Java学习笔记-Day88 Spring Security一、Spring Security的简介二、Spring Security和Shiro比较三、Spring Security的使用 一、Spring Security的简介 Spring Security正是Spring 家族中的成员,Spring Security是一个能够为基于Spring的企业应用系统提供声明式的安全访问控制解决方案的安全框架。它提供了一组可以在Spring应用上下文中配置的Bean,充分利用了Spring IoC,D
2021-03-29 22:34:45
442
原创 Java学习笔记-Day87 Dubbo分布式服务框架
Java学习笔记-Day87 Spring Boot框架(七)一、应用系统架构演变二、Dubbo的简介三、Dubbo的架构四、Dubbo的优缺点五、Dubbo的使用1、搭建zookeeper注册中心2、创建服务者和消费者2.1、创建公共的类和接口的jar包2.2、创建Provider服务者2.2、创建Consumer消费者3、搭建 Dubbo Monitor 管理控制台 一、应用系统架构演变 技术为业务而生,架构也为业务而出现。随着业务的发展、用户量的增长,系统数量增多,调用依赖关系也变得复杂,为了
2021-03-28 20:49:52
370
原创 Java学习笔记-Day86 Spring Boot框架(六)
Java学习笔记-Day85 Spring Boot框架(六)一、Docker1、Docker简介2、Docke的三个概念3、Docker的安装3.1、前提条件3.2、使用 yum 安装(CentOS 7下)4、Docker的运行4.1、常用命令4.2、运行webapp镜像4.3、将jar文件制作成镜像并启动二、Spring Boot锁1、悲观锁2、乐观锁 一、Docker 1、Docker简介 Docker是一个开源的应用容器引擎,基于 Go 语言 并遵从Apache2.0协议开源。Dock
2021-03-26 23:31:52
293
原创 Java学习笔记-Day85 Spring Boot框架(五)
Java学习笔记-Day85 Spring Boot框架(五)一、Spring Boot整合Redis数据库(JPA)二、压力测试三、Spring Boot整合Swagger2四、热部署五、Docker 一、Spring Boot整合Redis数据库(JPA) (1)添加Redis的坐标到pom.xml文件中。<!--增加了redis的支持--><dependency> <groupId>org.springframework.boot</gro
2021-03-25 22:55:14
198
原创 Java学习笔记-Day84 Spring Boot框架(四)
Java学习笔记-Day84 Spring Boot框架(四)一、JPA1、简介1、JPA概念2、JPA优势2、JPA的使用3、JPQL语句4、分页和模糊查询 一、JPA 1、简介 1、JPA概念 JPA(Java Persistence API)是JDK 5.0注解或XML描述对象与关系表的映射关系,并将运行期的实体对象持久化到数据库中。 2、JPA优势 (1)标准化:JPA 是 JCP 组织发布的 Java EE 标准之一,因此任何声称符合 JPA 标准的框架都遵循同样的架构,
2021-03-25 00:00:04
344
1
原创 Java学习笔记-Day83 Spring Boot框架(三)
Java学习笔记-Day83 Spring Boot框架(三)一、Thymeleaf的使用1、Thymeleaf链接静态资源2、each循环2、Thymeleaf内置对象3、Thymeleaf全局对象二、yml文件1、简介2、基本语法3、yml文件的使用4、使用application.yml代替application.properties三、PageHelper分页的使用 一、Thymeleaf的使用 1、Thymeleaf链接静态资源 (1)在pom.xml文件的build标签中加入使用的静态
2021-03-23 23:58:01
181
原创 Java学习笔记-Day82 Spring Boot框架(二)
Java学习笔记-Day81 Spring Boot框架(二)一、Spring Boot的注解二、自定义banner三、Spring Boot整合SSM框架集四、@Mapper和@Repository在Dao层的应用五、Thymeleaf模板引擎六、端口被占用的解决方法 一、Spring Boot的注解 (1)@SpringBootApplication:用于标识Spring Boot应用程序,代表当前类是一个Spring Boot启动类,而一个Spring Boot项目内有且只能有一个@Sprin
2021-03-23 00:18:29
260
原创 Java学习笔记-Day81 Spring Boot框架(一)
Java学习笔记-Day81 Spring Boot框架(一)一、Spring Boot简介二、Spring Boot主要优点三、创建Spring Boot项目 一、Spring Boot简介 无论是SSH框架集,还是SSM框架集,Spring框架是必不可少。比较传统的模式都是以applicationContext.xml配置文件的形式存在,当然最难也是最繁琐的也是这些配置文件,初学者特别容易出错。Spring的组织对spring框架的全系列组件进行了内部封装。对外只提供maven(jar管理、项目
2021-03-22 00:12:32
199
2
原创 Java学习笔记-Day80 Maven项目部署到Linux
Java学习笔记-Day80 Maven项目部署到Linux一、linux yum命令二、安装JDK三、安装Tomcat四、安装Mysql五、部署项目 一、linux yum命令 yum( Yellow dog Updater, Modified)是一个在Fedora和RedHat以及SUSE中的Shell前端软件包管理器。基於RPM包管理,能够从指定的服务器自动下载RPM包并且安装,可以自动处理依赖性关系,并且一次安装所有依赖的软体包,无须繁琐地一次次下载、安装。yum提供了查找、安装、删除某
2021-03-21 21:53:26
394
原创 Java学习笔记-Day79 Maven(三)
Java学习笔记-Day79 Maven(三)一、Swagger21、Swagger2简介2、实现步骤二、Redis1、Redis简介2、Redis的特点3、Spring整合Redis 一、Swagger2 1、Swagger2简介 swagger2 是一个规范和完整的框架,用于生成、描述、调用和可视化RESTful 风格的Web 服务。它主要包含三部分:(1)swagger Codegen:通过Codegen 可以将描述文件生成html格式和cwiki形式的接口文档,同时也能生成多钟语言
2021-03-21 14:34:16
234
1
原创 Java学习笔记-Day78 Maven(二)
Java学习笔记-Day78 Maven(二)一、Spring单元测试二、配置log4j日志三、Druid数据库连接池四、Spring整合MyBatis实现事务管理 一、Spring单元测试 (1)测试文件要放在src/test/java的com.etc.test包中。(2)要将 junit5 和 spring-test jar包的坐标加入pom.xml文件中。 <!-- 添加spring-test包,方便进行单元测试 --> <dependency>
2021-03-21 00:49:15
174
原创 Java学习笔记-Day77 Maven(一)
Java学习笔记-Day77 Maven一、Maven的安装和配置二、Eclipse中配置Maven环境三、Eclipse创建Maven项目四、Maven项目包含SSM框架集1、Spring + SpringMVC+ Mybatis(使用Mybatis注解)2、Spring + SpringMVC+ Mybatis(使用Mybatis映射文件) 一、Maven的安装和配置 (1)安装 Apache Maven 在Windows 系统上,需要下载 apache maven 的压缩包,并解压到你想安
2021-03-06 00:32:15
181
2
原创 Java学习笔记-Day76 MyBatis 框架(三)
Java学习笔记-Day76 MyBatis 框架(三)一、类型别名二、MyBatis中的 # 和 $ 区别三、MyBatis的缓存1、一级缓存2、二级缓存四、Maven1、Maven的安装和配置2、Eclipse中配置Maven环境3、Eclipse创建Maven项目 一、类型别名 类型别名可为 Java 类型设置一个缩写名字。 它仅用于 XML 配置,意在降低冗余的全限定类名书写。要将<typeAliases>放在mybatis配置文件的<configuration>
2021-03-05 00:31:54
278
1
基于C++开发的仓库管理系统
2020-07-24
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人