- 博客(36)
- 收藏
- 关注
原创 GateWay学习笔记
什么是GateWay Gateway是在Spring生态系统之上构建的API网关服务,基于Spring 5,Spring Boot 2和 Project Reactor等技术。 Gateway旨在提供一种简单而有效的方式来对API进行路由,以及提供一些强大的过滤器功能, 例如:熔断、限流、重试等SpringCloud Gateway 是 Spring Cloud 的一个全新项目,它旨在为微服务架构提供一种简单有效的统一的 API 路由管理方式。 SpringCloud Gateway是基于WebFlu
2022-05-11 11:21:47
172
原创 Hystrix学习笔记
什么是HystrixHystrix 具有服务降级、服务熔断、线程隔离、请求缓存、请求合并以及实时故障监控等强大功能。# 服务降级微服务架构中的熔断器能够在某个服务发生故障后,向服务调用方返回一个符合预期的、可处理的降级响应(FallBack),而不是长时间的等待或者抛出调用方无法处理的异常http://c.biancheng.net/springcloud/hystrix.html重要概念1.服务降级:提供一个兜底的响应(Fallback) 出现情况:程序运行异常、超时、服务熔断触发服务降
2022-05-10 20:04:56
66
原创 OpenFeign
什么是openFeign在实际开发中,由于对服务依赖的调用可能不止一处,往往一个接口会被多处调用,所以通常都会针对每个微服务自行封装一些客户端类来包装这些依赖服务的调用。所以,Feign在此基础上做了进一步封装,由他来帮助我们定义和实现依赖服务接口的定义。在Feign的实现下,我们只需创建一个接口并使用注解的方式来配置它(以前是Dao接口上面标注Mapper注解,现在是一个微服务接口上面标注一个Feign注解即可),即可完成对服务提供方的接口绑定,简化了使用Spring cloud Ribbon时,自动封
2022-05-07 14:54:19
251
原创 Ribbon学习笔记
Ribbon本地负载均衡和Nginx服务端负载均衡的区别集中式LB 即在服务的消费方和提供方之间使用独立的LB设施(可以是硬件,如F5, 也可以是软件,如nginx), 由该设施负责把访问请求通过某种策略转发至服务的提供方;进程内LB 将LB逻辑集成到消费方,消费方从服务注册中心获知有哪些地址可用,然后自己再从这些地址中选择出一个合适的服务器。 Ribbon就属于进程内LB,它只是一个类库,集成于消费方进程,消费方通过它来获取到服务提供方的地址。 新Eureka依赖引入了ribbon依赖r
2022-05-07 13:41:42
418
原创 Consul学习笔记
简介Go语言开发,提供了服务治理,配置中心,服务总线等功能,每个功能都可以单独使用也可以一起使用https://www.consul.io/docs/intro开发模式启动consul agent -dev访问http://localhost:8500/注册server: port: 8006spring: application: name: consul-provider-payment ####consul注册中心地址 cloud: consu
2022-05-07 11:46:37
115
原创 Eureka学习
什么是服务治理管理服务之间的依赖关系,方便实现服务调用、负载均衡、容错等,实现服务注册与发现Eureka两组件 Eureka包含两个组件:Eureka Server和Eureka Client Eureka Server提供服务注册服务各个微服务节点通过配置启动后,会在EurekaServer中进行注册,这样EurekaServer中的服务注册表中将会存储所有可用服务节点的信息,服务节点的信息可以在界面中直观看到。 EurekaClient通过注册中心进行访问是一个Java客户端,用于简
2022-05-07 10:13:34
124
原创 数据结构之单链表合并
分析1.传递两个链表参数2.创建辅助变量存储第一个链表,防止第一个链表的头节点发生变化3.创建辅助变量存储第二个链表的下一个节点,防止在改变当前节点的指针时,导致后续节点失效4.遍历第二个链表,在遍历过程中遍历第一个链表,判断节点的排序代码实现 /** * 合并两个单链表,合并之后仍然有序 * @return */ public static HeroNode betweenLinkedList(HeroNode start,HeroNode end){
2022-02-21 21:34:46
1391
原创 数据结构之单链表反转
public void reverseNode(){ //判断链表是否有节点,或者只有一个节点 if (head.next == null || head.next.next == null){ return; } //创建一个辅助变量存储节点 HeroNode cur = head.next; //创建一个辅助变量存储原始链表的下一个节点 HeroNode next =.
2022-02-21 21:30:51
228
原创 数据结构之单链表
介绍1.链表是有序的列表,但是链表在内存中是分散存储的2.可以根据实际需求决定是否带头节点head应用实例使用带head头指针的单向链表实现-水浒英雄排行榜管理1.完成对英雄人物的增删改查操作2.第一种方法在添加英雄时,直接添加到链表的尾部3.第二种方式在添加英雄时,根据排名将英雄插入到指定位置(如果有这个排名,则添加失败)添加(创建)1.先创建一个head头节点,作用就是表示单链表的头2.后面我们每添加一个节点,就直接加入到链表的最后遍历代码实现package demo
2022-02-21 15:14:15
212
原创 数据结构之队列(数组实现)
使用场景银行排队,头部的人先完成业务,给每个人一个编号先进先出,通过指针指定到编号介绍1.队列是一个有序列表,可以用数组或是链表来实现2.遵循先入先出原则数组模拟队列思路分析1.队列本身是有序列表,若使用数组来存储队列数据,则maxSize是该队列的最大容量2.因为队列的输出、输出是分别从前后端来处理,因此需要两个变量front、rear分别记录队列前后端的下标,front会随着数据输出变化,rear则是对着数据输入变化3.当我们将数据存入队列时,称为addQueue 1)将尾
2022-02-20 17:20:17
411
原创 数据结构之稀疏数组
应用场景五子棋游戏中存盘问题,完成续上盘的功能 # 使用二维数组保存的问题,没有棋子数据的位置都是 0介绍1.当一个数组中大部分元素为0,或者为同一个值的数组时,可以使用稀疏数组来保存数据稀疏数组的处理方法 1.记录数组一共有几行几列,有多少个不同的值 2.把具有不同值的元素的行列及值记录在一个小规模的数组中,从而缩小程序的规模# 稀疏数组记录方式 第一行表示原始二维数组的规模是多大,值有几个 剩余行表示值的位置和具体值转换思路# 原始数组转稀疏数组1.遍历原始的二维数
2022-02-20 15:28:12
80
原创 Docker学习
概念1.开源的应用容器引擎,go语言实现2.Docker可以让开发者打包他们的应用以及依赖到一个轻量级、可移植的容器中,然后发布到任何流行的Linux机器上3.容器完全使用沙箱机制,相互隔离4.容器性能开销极低 -- Docker是一种容器技术,解决软件跨环境迁移的问题安装# 1.yum包更新到最新 yum update# 安装需要的软件包,yum-utils 提供 yum-config-manager功能 另外两个是devicemapper驱动依赖的 yum install -y
2022-02-19 23:59:52
1114
原创 Mysql高级(索引+调优)
存储引擎MySQL体系结构存储引擎简介存储引擎就是存储数据、建立索引、更新/查询数据等技术的实现方式,存储引擎是基于表的,而不是基于库的,所以引擎也可被称为表类型# 查询所有的存储引擎show engines存储引擎特点1.InnoDB InnoDB是一种兼顾高可靠性和高性能的通用存储引擎,在MySQL5.5之后,InnoDB是MySQL的默认存储引擎 特点: DML操作遵循ACID模型,支持事务 行级锁,提高并发访问性能 支持外键约束,保证数据的完整性和正确性 文件:
2022-02-19 18:02:01
490
原创 Mysql基础复习
SQL语言DDL数据库操作(对库的操作)1.show databases # 查询所有数据库2.create database [if not exists] [databaseName] [default charset 字符集] [collate 排序规则] # 创建数据库3.select database() # 查询当前数据库4.drop database [if exists] [databaseName] # 删除数据库5.use [databaseName] # 使用对应数据库
2022-02-18 21:30:47
266
原创 多线程学习笔记
线程,进程,多线程1.进程:每个应用程序都是一个进程2.线程:每个进程至少包含一个线程,线程接受CPU的调度Threadpackage com.zwj.thread;/** * @author zwj * @date 2022/2/18 - 11:03 */public class MyThread extends Thread{ @Override public void run() { for (int i = 0; i < 100; i+
2022-02-18 14:04:19
177
原创 SpringMVC复习笔记
配置因为DispatcherServlet的本质是servlet所以需要在web.xml中配置servlet<?xml version="1.0" encoding="UTF-8"?><web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http:/
2022-02-17 15:43:20
188
原创 Mybatis复习笔记(缓存)
一级缓存本地缓存(Map): 与数据库同一次会话期间查询到的数据会放在本地缓存中 如果需要获取相同的数据,直接从缓存中拿,没必要再去查询数据库 (类似于在同一个“事务”中多次查询不会多次查询数据库) 失效情况: 1.多个sqlSession对象查询(多个会话会创建自己的本地缓存) 2.查询不同的条件 3.两次查询之间执行了增删改操作 4.手动清除了本地缓存 sqlSession.clearCache()二级缓存全局缓存:本地缓存的局限性,多次会话不能共享数据(多个sqlSes
2022-02-17 13:14:34
188
原创 Mybatis复习笔记(sql)
Mapperinsert1.parameterType: 参数类型,对象和可以直接取内部属性2.useGeneratedKeys: 使用自增主键3.keyProperty="id" : 返回自增主键 id, id为返回对象属性键名4.selectKey返回非自增主键 使用mysql的uuid()函数生成主键,需要修改表中di字段类型为String,长度设置成35位。 执行顺序: 先通过UUID()查询到主键,将主键输入到sql语句中 执行uuid()顺序相对于insert语句之前执行
2022-02-16 22:34:29
258
原创 Spring基本操作和原理(复习笔记之AOP)
概念面向切面编程(方面),将业务逻辑各个部分隔离,降低耦合度,提高开发效率底层原理1.AOP底层使用动态代理 两种情况的动态代理 1.有接口,使用JDK动态代理 2.没有接口,使用CGLIB动态代理动态代理实现理解: 在不修改接口和代理类的情况下增加功能,静态代理只能代理一个类,如果多个类同时需要相同的功能,不方便添加,动态代理可以根据不同的类添加功能# 实现过程Proxy.newProxyInstance方法解析接口中的method放到自己的变量中,然后调用handl
2022-02-15 21:30:49
204
原创 Spring基本操作和原理(复习笔记之IOC)
概念针对bean的生命周期进行管理的轻量级容器,提供了功能强大IOC、AOP及Web MVC等功能IOC控制反转,DI依赖注入,将创建对象的过程交给spring管理AOP动态代理,在不修改源码的情况下修改或添加功能特点1.方便解耦,简化开发2.Aop编程支持3.方便测试4.方便整合各种框架5.方便进行事务操作6.降低javaEE API开发难度(例如jdbc)入门创建实体类package com.zwj.bean;/** * @author zwj * @date
2022-02-15 15:12:04
202
原创 发布确认和高级发布确认的理解
发布确认amqp-client自带的发布确认机制,这里只讲异步确认,同步确认请转接rabbitMQ官网https://www.rabbitmq.com/confirms.html即channel.confirmSelect()方法,使用后会开启发布确认机制,增加确认监听器,内置成功和失败的回调方法,如下:经过测试,得出以下几点总结:1.当publish发布消息时,如果exchange交换机不存在,控制台会报错无法找到交换机,而不会调用监听器2.当routingKey不存在时,不会导致监听器消息确
2022-02-14 15:56:04
1491
1
原创 RabbitMQ学习总结(含java代码)
MQ的概念MQ(message queue) 本质是一个队列,先进先出MQ的作用1.流量削峰 流量高峰期,将请求订单分多次进行处理,防止服务器崩溃,但是会影响一定的用户体验2.应用解耦 在多模块系统中,一个应用有多个模块系统,当一个系统出现故障时,就会造成操作异常, 使用消息队列来等待系统修复,不会将故障传送给客户3.异步处理 两个系统可以使用消息队列进行监听消息,不需要进行等待,让mq进行监听即可,可以自己做自己的事RabbitMQ四大核心通俗的讲: &n
2022-02-13 22:00:02
1137
原创 腾讯云短信服务接口代码
public static boolean sendMessage(String phone, String code){ String secretId = "*****"; //accessID String secretKey= "*****"; //accessKey //短信应用 ID String appid = "14*******"; //短信签名内容 String sign = "*****";
2022-02-10 13:35:34
365
原创 事务产生的问题和锁的理解
事务会产生的问题脏读当A修改数据库数据时,数据库数据已经修改,但事务还未完成之前,B查询到修改的数据,A事务突然发生错误回滚,导致B查询出的数据和数据库数据不符,导致脏读解决方式1.加排他锁2.mysql的事务隔离级别 读已提交(Read committed)不可重复读当A事务中有两次相同的查询并且两次查询间隔时间比较长,在期间,B事务将数据库数据更改,导致两次查询数据不相同,导致不可重复读,因为重复读取的数据不相符解决方式1.加共享锁2.mysql事务隔离级别 可重复读(Repe
2022-02-05 16:32:42
956
原创 Redis学习总结
Redis学习总结(一)Redis下载1.将tar.gz压缩包放到服务器2.使用tar -zxvf 命令解压压缩包3.进入redis文件夹查看conf文件4.安装基本环境 yum install gcc-c++5.make命令 安装6.0.1版本报错解决 升级gcc centos7默认gcc版本为4.8.5 #升级到 5.3及以上版本 yum -y install centos-release-scl yum -y install devtoolset-
2022-02-05 16:15:14
551
原创 Redis对处理高并发的理解
redis缓存处理高并发redis的处理高并发的本质redis处理高并发的本质是利用缓存磁盘和内存的理解磁盘的访问速度是以毫秒为单位的,会按照扇区挨个扫描,耗费时间长内存的访问速度是以纳秒为单位的,内存空间小,访问时间快redis是储存在内存中的非关系型数据库,以K-V值保存,访问速度快,每秒可以处理很多的访问量,来解决一定的并发问题。再通过使用redis的锁机制来处理访问中容易出现的缓存问题(缓存穿透,缓存雪崩,缓存击穿),保证高并发下的数据完整性缓存穿透:查询一个一定不存在的数据,数据库一
2021-08-18 17:48:59
334
原创 ajax put请求
尝试了好几种方式,找到了一种能用的一、在web.xml文件中创建HiddenHttpMethodFilter过滤器<filter> <filter-name>hiddenHttpMethodFilter</filter-name> <filter-class>org.springframework.web.filter.HiddenHttpMethodFilter</filter-class></filter><fil
2021-04-05 17:57:10
722
原创 SSM整合+代码
通过一个月的学习,整合一下一个月所学(基于xml)一、搭建环境1.使用ideamysql8.0maven2.创建数据库表3.创建包结构entitymapperservicecontroller4.创建entity实体类对应数据库表5.maven引入所有需要依赖spring-mvcmybatisservlet等等二、mybatis层整合1.创建mybatis-config.xml配置文件开启驼峰命名转换数据库中的名称<?xml version="1.0" enco
2021-03-28 21:23:22
288
原创 基本数据类型和包装类2.0
简单来说,基本数据类型不是对象,而包装类是对象。通过对数组以及对数组方法asList()的深入了解,对对象这一概念又有的更深刻的认识。每一个对象都会拥有属于自己的属性和方法,这一点基本数据类型是没有的。今天在学习asList()方法的时候,在输出基本数据类型数组和包装类数组的时候出现了不同,经各种了解,明白了其中含义。下面是代码和输出结果public class collectionText2 { public static void main(String[] args) {
2021-02-10 19:40:19
99
原创 centOS8中安装mysql
centOS8中自带mysql安装包,MySQL 是世界上最流行的开源关系型数据库管理系统。在默认的 CentOS 8 系统源仓库里,MySQL 数据库服务器最新可用的版本是 8.0。一、在 CentOS 8 上安装 MySQL 8.0以 root 或者其他有 sudo 权限的用户身份,通过使用 CentOS 包管理器来安装 MySQL 8.0 服务器:sudo dnf install @mysql二、安装完成后重启控制台...
2021-01-28 21:57:10
2029
1
原创 “==“的那些坑之一
小敬初来乍到,以下言论有不足之处,请各位大神多多指教。各位入坑Java的Java友们,想必都经历过的"=="坑,下面见代码。//Integer包装类 创建的对象赋相同的值Integer a = 1234;Integer b = 1234;//对a,b进行比较System.out.println(a==b);System.out.println(a.equals(b));输出:falsetrueInteger创建的是对象,即使所赋值一样,但并不是同一个对象,就相当于两个人叫相同的名字,
2020-12-26 20:51:35
79
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人