- 博客(97)
- 收藏
- 关注
原创 Rocket MQ入门与集群搭建
Producer:消息的发送者Consumer:消息接收者Broker:暂存和传输消息NameServer:管理BrokerTopic:区分消息的种类,一个发送者可以发送消息给一个或者多个Topic;一个消息的接收者可以订阅一个或者多个Topic消息。Message Queue:相当于是Topic的分区,用于并行发送和接收消息几乎所有命令都需要配置-n表示NameServer地址,格式为ip:port几乎所有命令都可以通过-h获取帮助。
2022-09-19 15:59:50
511
1
原创 Express
Express 是基于 Node.js 平台,快速、开放、极简的 Web 开发框架。通俗的理解:Express 的作用和 Node.js 内置的 http 模块类似,是专门用来创建 Web 服务器的。Express 的本质:就是一个 npm 上的第三方包,提供了快速创建 Web 服务器的便捷方法。Express 的中文官网Web 网站服务器:专门对外提供 Web 网页资源的服务器。API 接口服务器:专门对外提供 API 接口的服务器。
2022-09-01 20:27:07
441
1
原创 Node.js的入门及模块化
在网络节点中,负责消费资源的电脑,叫客户端,负责对外提供网络资源的电脑,叫做服务器http模块是Node.js官方提供的,用来创建web服务器的模块,通过http模块提供的方法,就能把一台普通的电脑,变成一台Web服务器,从而对外提供Web资源服务,导入模块使用 require() 加载自定义模块时,必须指定以 ./ 或 …/ 开头的路径标识符。在加载自定义模块时,如果没有指定 ./ 或 …/这样的路径标识符,则 node 会把它当作内置模块或第三方模块进行加载。
2022-08-22 20:55:06
610
原创 Redis深入
Redis缓存相关问题缓存穿透缓存穿透是指查询一个数据库一定不存在的数据。我们正常的使用Redis缓存的流程大致为:1、数据查询首先进行缓存查询2、如果数据存在则直接返回缓存数据3、如果数据不存在,就对数据库进行查询,并把查询到的数据放到缓存4、如果数据库查询数据为空,则不放进缓存(但此时已经消耗了服务器性能) 。例如我们的数据表中主键是自增产生的,所有的主键值都大于0。此时如果用户传入的参数为-1,会是怎么样?这个-1,就是一定不存在的对象。程序就会每次都去查询数据库,而每次查询都是空,每
2022-05-16 17:55:48
191
原创 RabbitMQ
初识MQ同步和异步通讯微服务间通讯有同步和异步两种方式:同步通讯:就像打电话,需要实时响应。异步通讯:就像发邮件,不需要马上回复。两种方式各有优劣,打电话可以立即得到响应,但是你却不能跟多个人同时通话。发送邮件可以同时与多个人收发邮件,但是往往响应会有延迟。同步通讯Feign调用就属于同步方式,虽然调用可以实时得到结果,但存在下面的问题:同步通讯的优缺点优点:时效性较强,可以立即得到结果缺点:耦合度高:每次加入新的需求,都要修改原来的代码性能下降:调用者需要等待服务提供者响应,如果
2022-05-15 19:13:59
244
原创 Apache POI操作Excel文件
Apache POI是用Java编写的免费开源的跨平台的Java API,Apache POI提供API给Java程序对Microsoft Office格式档案读和写的功能,其中使用最多的就是使用POI操作Excel文件。maven坐标:<dependency> <groupId>org.apache.poi</groupId> <artifactId>poi</artifactId> <version>3.14<
2022-04-16 11:13:29
189
原创 Docker部署及常见问题
初始Docker什么是DockerDocker和虚拟机的区别Docker架构安装DockerDocker的基本操作Dockerfile自定义镜像Docker-ComposeDocker镜像仓库
2022-04-04 19:11:32
3515
1
原创 Gateway服务网关
Spring Cloud Gateway 是 Spring Cloud 的一个全新项目,该项目是基于 Spring 5.0,Spring Boot 2.0 和 Project Reactor 等响应式编程和事件流技术开发的网关,它旨在为微服务架构提供一种简单有效的统一的 API 路由管理方式。Gateway简介Gateway网关是我们服务的守门神,所有微服务的统一入口。网关的核心功能特性:路由请求、权限控制、限流权限控制:网关作为微服务入口,需要校验用户是是否有请求资格,如果没有则进行拦截。路由
2022-04-01 03:07:45
414
原创 Feign的远程调用及性能优化和最佳实践
Feign替代RestTemplateRestTemplate方式调用存在的问题通过url地址指名要访问的地址名称,请求路径和请求的参数信息,请求方式和返回值类型,然后由restTemplate向指定位置发起请求,在把结果转为对应类型存在的问题1、代码可读性差,编程体验不统一2、参数复杂URL难以维护Feign的介绍Feign是一个声明式的http客户端,官方地址:https://github.com/OpenFeign/feign,其作用就是帮助我们优雅的实现http请求的发送,解决上面提
2022-03-31 15:39:01
4102
原创 Nacos注册中心及配置管理服务
Nacos安装下载安装包在Nacos的GitHub页面,提供有下载链接,可以下载编译好的Nacos服务端或者源代码GitHub主页:https://github.com/alibaba/nacosGitHub的Release下载页:https://github.com/alibaba/nacos/releases点击tags显示各种版本,进行下载即可在点击tags后,在页面的最下方是下载的安装包windows版本安装1、解压缩到任意非中文目录下,bin:启动脚本 conf:配置文件
2022-03-30 19:47:51
1509
原创 SpringCloud入门之Eureka注册中心远程调用及Ribbon负载均衡原理
认识微服务服务架构演变单体架构:将业务的所有功能集中在一个项目中开发,打成一个包部署优点:架构简单、部署成本低缺点:耦合度高分布式架构:根据业务功能对系统进行拆分,每个业务模块作为独立项目开发,称为一个服务优点:降低耦合度、有利于服务升级拓展微服务:微服务是一种经过良好架构设计的分布式架构案例微服务架构特征:1、单一职责:微服务拆分力度更小,每一个服务都对应唯一的业务能力,做到单一职责,避免重复业务开发2、面向服务:微服务对外暴露业务接口3、自治:团队独立、技术独立、数据独立、部署
2022-03-29 19:11:52
922
原创 Dubbo
分布式系统中的相关概念传统项目:OA系统、HR系统(用户数量少,单体项目)互联网项目:用户多、流量大,高并发、海量数据、易受攻击、功能繁琐、变更快大型互联网项目架构目标衡量网站的性能指标:响应时间:执行一个请求从开始到最后收到响应数据所花费的总体时间并发数:指系统同时能处理的请求数量并发连接数:指的是客户端向服务器发起请求,并建立了TCP连接,每秒服务器连接接的总的TCP数量请求数:也成为QPS(Query Per Second)指每秒多少请求并发用户数:单位时间内有多少用户吞吐量:指单
2022-03-26 15:28:48
726
原创 Zookeeper安装、配置管理、分布式锁及服务器集群
Zookeeper概念zookeeper是 Apache Hadoop 项目下的一个子项目,是一个树形目录服务。Zookeeper翻译过来就是动物园管理员,他是用来管Hadoop (大象)、Hive(蜜蜂)、Pig(小猪)的管理员。简称zkZookeeper是一个分布式的、开源的分布式应用程序的协调服务。Zookeeper 提供的主要功能包括:配置管理:例如有ABC三个业务程序,每个业务服务中都有一些配置文件的信息(数据库的配置信息),如果配置信息有改动,ABC都需要去改动配置信息要重新上线,因
2022-03-25 13:26:44
2287
原创 Oracle基础学习和安装过程
Oracle简介什么是OracleORACLE数据库系统是美国ORACLE公司(甲骨文)提供的以分布式数据库为核心的一组软件产品,是目前最流行的客户/服务器(CLIENT/SERVER)或B/S体系结构的数据库之一。ORACLE通常应用于大型系统的数据库产品。ORACLE 数据库是目前世界上使用最为广泛的数据库管理系统,作为一个通用的数据库系统,它具有完整的数据管理功能;作为一个关系数据库,它是一个完备关系的产品;作为分布式数据库它实现了分布式处理功能。ORACLE 数据库具有以下特点:(1)
2021-12-12 18:12:14
493
原创 Linux系统安装Nginx并使用
什么是NginxNginx 是一款高性能的 http 服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器。由俄罗斯的程序设计师伊戈尔·西索夫(Igor Sysoev)所开发,官方测试 nginx 能够支支撑 5 万并发链接,并且 cpu、内存等资源消耗却非常低,运行非常稳定。应用场景1、http 服务器。Nginx 是一个 http 服务可以独立提供 http 服务。可以做网页静态服务器。2、虚拟主机。可以实现在一台服务器虚拟出多个网站。例如个人网站使用的虚拟主机。3、反向代理,负载
2021-12-07 17:25:17
449
原创 Linux安装jdk、Mysql、Tomcat和Redis等Java项目必须软件详解
Linux上的软件安装有以下几种常见方式二进制发布包软件已经针对具体平台编译打包发布,只要解压,修改配置即可RPM包软件已经按照redhat的包管理工具规范RPM进行打包发布,需要获取到相应的软件RPM发布包,然后用RPM命令进行安装Yum在线安装软件已经以RPM规范打包,但发布在了网络上的一些服务器上,可用yum在线安装服务器上的rpm软件,并且会自动解决软件安装过程中的库依赖问题源码编译安装软件以源码工程的形式发布,需要获取到源码工程后用相应开发工具进行编译打包部署。上传与下载工具介绍
2021-12-03 14:51:53
1905
原创 项目部署必要的Linux基础命令
一、Linux的概述:学习Linux之前先了解UnixUnix是一个强大的多用户、多任务操作系统。于1969年在AT&T的贝尔实验室开发。UNIX的商标权由国际开放标准组织(The Open Group)所拥有。UNIX操作系统是商业版,需要收费,价格比Microsoft Windows正版要贵一些。Linux的概述Linux是基于Unix的Linux是一种自由和开放源码的操作系统,存在着许多不同的Linux版本,但它们都使用了Linux内核。Linux可安装在各种计算机硬件设备中,比如手
2021-11-30 18:52:01
338
原创 SpringBoot整合JUnit、Mybatis、Mybatis-Plus、Druid
整合JUnit@SpringBootTest定义 Springboot04JunitApplicationTests是一个测试类,里边支持注入对象,一旦注入后这个对象就可以参与到@Test中了。名称:@SpringBootTest类型:测试类注解位置:测试类定义上方作用:设置JUnit加载的SpringBoot启动类范例:@SpringBootTestclass Springboot04JunitApplicationTests总结:1、导入测试对应的starter,在创建工程的时候
2021-11-29 16:30:50
1950
1
原创 MyBatis-Plus配置
在Mybatis-Plus中有大量配置,其中有一部分是Mybatis原生的配置,另一部分是Mybatis-Plus的配置基本配置configLocationMyBatis配置文件位置,如果有单独单独的MyBatis配置,请将其路径配置到configLocation中。MyBatisConfiguration的具体内容请参考MyBatis官方文档Spring Bootmybatis-plus.config-location=classpath:mybatis-config.xmlSpring
2021-11-28 21:53:55
18724
1
原创 MyBatis-Plus的CRUD操作
通用CRUD通过Mybatis-Plus与MyBatis、Spring、SpringBoot框架的简单整合的学习,我们了解到通过继承BaseMapper就可以获取到各种各样的单表操作,接下来我们继续深入学习MyBatis-Plus的通用CRUD操作数据插入测试用例这里使用的环境是SpringBoot+MyBatis-Plus中的代码环境插入一条数据package com.zg.mp;import com.zg.mp.mapper.UserMapper;import com.zg.mp.po
2021-11-23 19:24:22
408
原创 Mybatis-Plus与MyBatis、Spring、SpringBoot框架的简单整合SelectList版
了解Mybatis-PlusMybatis-Plus介绍MyBatis-Plus (简称MP)是一个MyBatis的增强工具,在MyBatis的基础上只做增强不做改变,为简化开发、提高效率而生。特性:无侵入:只做增强不做改变,引入它不会对现有工程产生影响,如丝般顺滑损耗小:启动即会自动注入基本 CURD,性能基本无损耗,直接面向对象操作强大的 CRUD 操作:内置通用 Mapper、通用 Service,仅仅通过少量配置即可实现单表大部分 CRUD 操作,更有强大的条件构造器,满足各类使用需求
2021-11-23 11:29:39
821
原创 Maven高级
分模块开发设计工程模块与模块划分ssm_pojo拆分新建模块拷贝原始项目中对应的相关内容到ssm_pojo模块中实体类(User)配置文件(无)ssm_dao拆分新建模块拷贝原始项目中对应的相关内容到ssm_dao模块中数据层接口(UserDao)配置文件:保留与数据层相关配置文件(3个)注意:分页插件在配置中与SqlSessionFactoryBean绑定,需要保留pom.xml:引入数据层相关坐标即可,删除springmvc相关坐标springmybatisspring整
2021-11-22 00:05:57
419
1
原创 GIT学习
版本控制器的方式集中控制器的方式集中式版本控制工具,版本库是集中存放在中央服务器的,团队中每个人工作时从中央服务器下载代码,是必须联网才能操作,局域网或者互联网,个人修改后提交到中央版本库(SVN和CVS)分布式版本控制工具分布式版本控制系统没有“中央服务器”,每个人的电脑上都是一个完整的版本库,这样工作时,无需联网,因为版本库就在自己电脑上,多人协作只需要各自修改推送给对方,就能互相看到对方的修改了(Git)SVN图例Git Git是分布式的,Git不需要有中心服务器,我们每台电脑拥有的东
2021-11-20 22:02:33
489
原创 SpringBoot基础配置
复制工程1、保留工程基础结构 2、抹掉原始工程痕迹步骤:1、将创建好的文件夹进行复制成为一个springboot_0x_xxxxxxx的文件夹2、进入springboot_0x_xxxxxxx在pom.xml文件中将artifactId修改63、删除不需要的文件,仅剩src和pom.xml文件4、然后springboot_0x_xxxxxxx就可以作为模板5、在将springboot_0x_xxxxxxx复制一份,修改artifactId为要使用的模块名称6、进入IDEA,进入模块管理,添加
2021-11-19 23:19:24
333
原创 SpringBoot入门案例解析
SpringBoot简介SpringBoot是由Pivotal团队提供的全新框架,其设计目的是用来简化Spring应用的初始化搭建以及开发过程Spring程序缺点:依赖设置繁琐、配置繁琐SpringBoot程序优点:起步依赖(简化依赖配置)自动配置(简化常用工程相关配置)辅助功能(内置服务器…)parent依赖冲突我们做程序的过程中避免不了的会导入相同的坐标,比如在俩个工程中,我们都会用到两份相同的坐标,这样往往会因为坐标冲突而引发一系列问题。但可以使用一个坐标,也可以做成两个文件坐标集中管理,
2021-11-17 19:10:20
828
原创 Spring Boot项目的四种创建方式
Spring Boot入门开发SpringBoot是由Pivotal团队提供的全新框架,其设计目的是用来简化Spring应用的初始化搭建以及开发过程。创建环境1、首先创建一个空工程2、File–>settings–>输入Maven查看Maven的版本3、点击file–>Project Settings–>Module–>new Module–>Spring Initializr,然后一路next4、然后创建成功一个web项目5、剩下还是一路next,
2021-11-16 18:23:06
1926
1
原创 SSM框架整合
原始方式整合创建数据库的表编写实体类package com.zg.domain;public class Account { private Integer id; private String name; private Double money; public Integer getId() { return id; } public void setId(Integer id) { this.id = i
2021-11-16 00:22:55
1125
原创 MyBatis注解开发
MyBatis的常用注解MyBatis也可使用注解开发方式,这样就可以减少编写Mappper映射文件注解说明@Insert实现新增@Update实现更新@Delete实现删除@Select实现查询@Result实现结果集封装@Results可以与@Result一起使用,封装多个结果集@One实现一对一结果集封装@Many实现一对多结果集封装使用XML方式UserMapper.xml<?xml version="
2021-11-13 21:35:09
2089
1
原创 MyBatis多表操作
一对一查询用户表和订单表的关系为,一个用户多个订单,一个订单只从属一个用户一对一查询的需求:查询一个订单,与此同时查询出该订单所属的用户在只查询order表的时候,也要查询user表,所以需要将所有数据全部查出进行封装SELECT *,o.id oid FROM orders o,USER u WHERE o.uid=u.id创建Order和User实体orderpublic class Order { private int id; private Date orderti
2021-11-11 23:54:54
1799
1
原创 MyBatis核心配置文件深入
typeHandlers标签无论是MyBatis在预处理语句(PreparedStatement)中设置一个参数时,还是从结果集中取出一个值时,都会用类型处理器将获得的值以合适的方式转换为Java类型,下表描述了一些默认的类型处理器(截取部分)你可以重写类型处理器或创建你自己的类型处理器来处理不支持的或非标准的类型,具体做法为:实现org.apache.ibatis.type.TypeHandler接口,或继承一个很便利的类org.apache.ibatis.type.BaseTypeHandler,
2021-11-11 14:13:42
947
原创 MyBatis映射文件深入
动态sql语句MyBatis的映射文件中,前面我们的SQL都是比较简单的,有些时候业务逻辑复杂时,我们的SQL是动态变化的,此时在前面的学习中我们的SQL就不能满足要求了。先使用之前的进行精准查询UserMapper.xml<?xml version="1.0" encoding="UTF-8" ?><!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybati
2021-11-10 16:28:10
611
原创 MyBatis的Dao层实现
传统开发方式创建dao接口和dao的实现,将mybatis的代码写入dao实现中,然后使用业务层进行调用dao层的实现的方法即可完成相应的实现编写UserDao接口package com.zg.dao;import com.zg.domain.User;import java.io.IOException;import java.util.List;public interface UserMapper { public List<User> findAll() t
2021-11-10 01:39:37
340
原创 MyBatis入门
MyBatis简介原始jdbc操作(查询数据库)原始jdbc操作(插入数据)原始jdbc操作的分析原始jdbc开发存在的问题如下:1、数据库连接创建、释放频繁造成系统资源浪费从而影响系统功能2、sql语句在代码中硬编码,造成代码补一维护,实际应用sql变化的可能较大,sql变动需要改变Java代码3、查询操作时,需要手动将结果集中的数据手动封装到实体中,插入操作时,需要手动将实体的数据设置到sql语句的占位符位置应对上述问题给出的解决方案:1、使用数据库连接池初始化连接资源2、将sq
2021-11-09 19:12:23
603
原创 声明式事务控制
编程式事务控制相关对象编程式是自己使用Java的API写代码,声明式是以配置的方式进行配置一些东西PlatformTransactionManagerPlatformTransactionManager接口是spring的事务管理器,它里面提供了我们常用的操作事务的方法,即事务是如何控制的方法说明TransactionStatus getTransaction(TransactionDefination defination)获取事务的状态信息void commit(T
2021-11-08 23:17:05
353
原创 面向切面编程AOP
Spring的AOP简介什么是AOPAspect Oriented Programming,意为面向切面编程,是通过预编译方式和运行期动态代理实现程序功能的统一维护的一种技术AOP是OOP的延续,是软件开发中的一个热点,也是Spring框架中的一个重要内容,是函数式编程的一种衍生范型,利用AOP可以对业务逻辑的各个部分进行隔离,从而使得业务逻辑各部分之间的耦合性降低,提高程序的可重用性,同时提高了开发的效率AOP的作用及其优势作用:在程序运行期间,在不修改源码的情况下对方法进行功能的增强优势:减
2021-11-08 13:52:31
389
原创 SpringMVC异常处理机制
异常处理的思路系统中异常包括两类:预期异常和运行时异常RuntimeException,前者通过捕获异常从而获取异常信息,后者主要通过规范代码开发、测试等手段减少运行时异常的发生系统的Dao、Service、Controller出现都通过throws Exception向上抛出,最后由SpringMVC前端控制器交由异常处理器进行异常处理异常处理两种方式使用Spring MVC提供的简单异常处理器SimpleMappingExceptionResolver实现Spring的异常处理接口Handl
2021-11-06 17:11:14
173
原创 SpringMVC拦截器
拦截器(Interceptor)的作用Spring MVC的拦截器类似于Servlet开发中的Filter,用于对处理器进行预处理和后处理将拦截器按一定的顺序联结成一条链,这条链称为拦截器链(Interceptor Chain)在访问被拦截的方法或字段时,拦截器链中的拦截器就会按其之前定义的顺序被调用。拦截器也是AOP思想的具体实现拦截器和过滤器区别区别过滤器(Filter)拦截器(Interceptor)使用范围是servlet规范中的一部分,任何Java Web工程都可用
2021-11-06 10:43:46
112
原创 SSM练习1-角色创建
环境搭建1、创建工程2、导入静态页面3、导入需要的坐标4、创建包结构5、导入数据库脚本6、创建POJO类7、创建配置文件spring-mvc.xml<?xml version="1.0" encoding="UTF-8"?><beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
2021-11-05 16:15:31
158
原创 Spring整合数据库
Spring JdbcTemplate基本使用JdbcTemplate概述它是spring框架中提供的一个对象,是对原始繁琐的Jdbc API对象的简单封装,spring框架为我们提供了很多的操作模板类,例如:操作关系型数据库JdbcTemplate和Hibernate Template,操作nosql数据库的RedistTemplate,操作消息队列的JmsTemplate等等JdbcTemplate开发步骤1、导入spring-jdbc和spring-tx坐标 <dependency&g
2021-11-03 23:43:13
357
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人