- 博客(32)
- 收藏
- 关注
原创 单向链表的常见操作
一、单向链表反转/** * 这里要注意,我的head不能作为开始的第一个结点,我的head只是一个起点的哨兵标识 * 如果将head作为第一个结点开始计算, * 假如单向链表结构为: head -> a -> b -> c lest = c; * 那么第一次运算之后head -> null * 第二次运算 a -> head * 第三次运算 b -> a
2020-11-04 22:07:46
824
原创 基于单向链表实现LRU缓存淘汰算法
准备工作思考:链表是由一个一个结点单向连接而成,因此我们需要创建一个结点类,该类包含结点数据,以及下一个结点的位置信息!一、结点类:package com.linkTest;public class Node<E> { private Node<E> next;//指向下一个节点 private E e;//存储数据 public Node(E e){ this.e = e; this.next = null;
2020-10-31 02:15:28
431
2
原创 java流的底层原理(二)
Stream的结构以下是我从jdk8中拷贝下来的代码public interface Stream<T> extends BaseStream<T, Stream<T>> public interface BaseStream<T, S extends BaseStream<T, S>> extends AutoCloseable {public interface AutoCloseable通过以上代码我们可以看
2020-08-28 02:15:30
672
原创 java流的基本认识和底层原理(一)
Stream的基本认识java和Stream相关的类都在java.util.stream包下。java提供stream的目的:是为了更好的操作集合!stream简单介绍stream的基本构成:1、源。2、零个或者多个中间操作。3、终止操作stream的特性:惰性求值、及早求值。这句话怎么理解呢?stream中可能有多个中间操作,但是如果没有遇到终止操作,那么不管多少个中间操作都不会执行,只有遇到终止操作才会执行这些中间操作。stream的创建方式1、 Stream s = str
2020-08-27 00:33:55
1449
原创 java之函数式编程
函数式编程和面向对象编程百度百科上定义函数式编程:函数式编程是种编程方式,它将电脑运算视为函数的计算。函数编程语言最重要的基础是λ演算(lambda calculus),而且λ演算的函数可以接受函数当作输入(参数)和输出(返回值)。 [1]和指令式编程相比,函数式编程强调函数的计算比指令的执行重要。和过程化编程相比,函数式编程里函数的计算可随时调用。以此我们可以判断函数式编程和面向对象编程的区别是:面向对象编程参数接收的是对象,而函数式编程参数接受的是动作。刚开始接触java函数式编程可能不太好理
2020-08-25 23:50:40
346
原创 如何玩Dockerfile和Docker网络
如何构建自己的镜像?如何让别人获取我们的镜像?如何实现容器之间通信?今天这篇博客就从解决这3个如何开始No.one如何构建自己的镜像?我目前知道的有2种形式。第一种,如果我们下载了一个官网的镜像,通过镜像生成容器,我们修改容器内的配置文件或者不修改也行,然后我们通过commit命令就可以实现,这时镜像的层数: 官网镜像的层数 + 我们的容器层 = 这个镜像的层数。例如docker commit -m=”提交的描述信息” -a=”作者” 容器id 目标镜像名 [TAG](TAG版本信息)第二
2020-07-19 23:36:54
977
原创 如何理解docker联合文件系统、分层、数据卷、数据卷容器。
Docker 镜像讲解镜像是一种轻量级、可执行的独立软件包,用来打包软件运行环境和基于运行环境开发的软件,它包含运行某个软件所需的所有内容,包括代码、运行时、库、环境变量和配置文件。所有的应用,直接打包docker镜像,就可以直接跑起来!如何得到镜像:从远程仓库下载、朋友拷贝、自己制作一个镜像dockerfileUninoFS(联合文件系统)UninoFS:是一种分层、轻量级并且高性能的文件系统,它支持对文件系统的修改作为一次提交来一层层的叠加,同时可以将不同目录挂载到同一个虚拟文件系统下,Uni
2020-07-18 23:50:16
1167
原创 Docker 安装及常用命令详解
Dokcer 常用命令详解及构建前言:docker历史:环境配置系统注意:安装docker常用命令演示查看日志的时候遇到一个非常坑的地方,docker中的时间比目前时间慢8小时,如果我们按照docker中的时间查看某个时间段的日志,会发现找不到日志,如果我们按照我们目前的时间去查日志,那么就可以查看日志。如图:注意看打印日志的时间和我查看日志的时间段!扯淡环节VMware和docker的对比DevOps好处(使用docker部署项目)docker的基本组成前言:Docker 是一个开源的应用容器引擎,可
2020-07-12 02:04:43
349
原创 程序员节日快乐
节日快乐!今天这个博客没有技术内容,因为我最近在找工作,新的技术暂时没有时间研究了。简单谈谈这几年的工作经历,第一份工作是我印象最深刻的一家公司,包括同事,虽然现在离职了,但是挺想念那个公司。然后发现毕业之后很多事情是身不由己的,不是我想怎样就能怎样,但是毕业之后我的朋友选择就可以按照自己的内心,不想工作上不能选择,所以朋友要选择处的比较舒适的,至少我可以做自己!再来谈谈第二份工作,其实这家公司...
2019-10-24 11:04:30
1704
原创 spring cloud Eureka高级特性--分区
1.准备1.首先,在C:\WINDOWS\System32\drivers\etc\hosts文件里面添加一下映射,如果不添加也没关系,只是如果是单机环境,在eureka首页中的replicas那一项看到的其它注册中心都是localhost,我这里为了方便理解就添加了映射。2.为了方便理解,我这里是单个application用一个module,没有采用通过多个profile开启多个appli...
2019-09-25 17:59:14
2299
原创 一篇搞定base64编码
维基百科说base64Base64是一种基于64个可打印字符来表示二进制数据的表示方法。由于2的6次方等于64,所以每6个比特为一个单元,对应某个可打印字符。三个字节有24个比特,对应于4个Base64单元,即3个字节需要用4个可打印字符来表示。它可用来作为电子邮件的传输编码。在Base64中的可打印字符包括字母A-Z、a-z、数字0-9,这样共有62个字符,此外两个可打印符号在不同的系统中而不...
2019-09-25 15:46:11
2286
原创 idea 报错Process finished with exit code 1
根据这段时间的使用,idea启动项目出现Process finished with exit code 1常见的原因有以下几种:1、跟controller有关查看controller文件是否新添加的接口和以前的接口名称重复!注意要区分请求方式,这是一个很考验耐心的一个检查方式。2、和引用包有关maven的生命周期如图:这个检查过程比较简单,可以先clean一下,然后通过package打...
2019-09-20 16:31:17
98482
6
原创 spring cloud gateway过滤器及执行顺序
一、图谱在Spring-Cloud-Gateway之请求处理流程中最终网关是将请求交给过滤器链表进行处理。核心接口:GatewayFilter(网关过滤器),GlobalFilter(全局过滤器),GatewayFilterChain(过滤器链)。类关联图:二、为什么使用网关过滤器现在流行的微服务,整个项目包含很多个服务,如果没有网关这层,那么我们通过什么方式来限制访问呢?难道在每个服...
2019-09-19 17:17:29
16289
1
原创 java 同步非阻塞的nio中包含阻塞的selector的理解
nio与selector的联系:NIO自从JDK1.4版本以来就添加的一个非阻塞I/O框架,NIO是Java为解决网络通讯中高并发问题的一个类库,Selector是java NIO的一个组件,用于检查一个或多个NIO Channel的状态是否处于可读、可写。如此可以实现单线程管理多个channels,也就是可以管理多个网络链接,所以Selecotr是实现了多路复用的关键。纠结点:java n...
2019-09-19 11:32:07
1102
转载 Spring Cloud Gateway-ServerWebExchange修改请求和响应内容
前提本文编写的时候使用的Spring Cloud Gateway版本为当时最新的版本Greenwich.SR1。我们在使用Spring Cloud Gateway的时候,注意到过滤器(包括GatewayFilter、GlobalFilter和过滤器链GatewayFilterChain),都依赖到ServerWebExchange:public interface GlobalFilter ...
2019-09-18 17:11:43
19178
转载 spring cloud gateway实现token校验
需求:对访问网关的请求进行token校验,只有当token校验通过时,才转发到后端服务,否则直接返回401本文适用场景:token存放在redis中, key为用户的uid开始依赖的pom.xml<?xml version="1.0" encoding="UTF-8"?><project xmlns="http://maven.apache.org/POM/4.0....
2019-09-18 15:42:05
4053
原创 Spring Security Oauth2 刷新token源码分析
刷新token请求接口(/oauth/token)参数:grant_type、refresh_token、client_id、client_secret源码解析:1、grant_type为固定值:grant_type=refresh_token源码中会根据grant_type是否为refresh_token且refresh_token字段不能为空来判断这个请求是刷新token还是获取to...
2019-09-17 18:09:06
2317
转载 一篇文章搞定JAVA NIO
现在使用NIO的场景越来越多,很多网上的技术框架或多或少的使用NIO技术,譬如Tomcat,Jetty。学习和掌握NIO技术已经不是一个JAVA攻城狮的加分技能,而是一个必备技能。在前面2篇文章《什么是Zero-Copy?》和《NIO相关基础篇》中我们学习了NIO的相关理论知识,而在本篇中我们一起来学习一下Java NIO的实战知识。全文较长,建议先马后看(记得关注不迷路)。一、概述NIO主要...
2019-09-16 15:54:10
332
原创 JAVA NIO
什么是NIO :在 JDK 1. 4 中 新 加入 了 NIO( New Input/ Output) 类, 引入了一种基于通道和缓冲区的 I/O 方式,它可以使用 Native 函数库直接分配堆外内存,然后通过一个存储在 Java 堆的 DirectByteBuffer 对象作为这块内存的引用进行操作,避免了在 Java 堆和 Native 堆中来回复制数据。NIO 是一种同步非阻塞的 IO...
2019-09-16 10:57:13
294
原创 spring security oauth2 实现微信登陆(授权回调域、前端重定向、微信解绑、获取用户信息中文乱码等相关问题解析)
OAuth 的核心OAuth 的核心就是向第三方应用颁发令牌。OAuth提供了四种获取令牌的授权方式授权码(authorization-code)、隐藏式(implicit)、密码式(password)、客户端凭证(client credentials)。而微信登陆采用的是授权码模式。背景目前项目大多都是采用前后端分离模式开发。本文前端采用 vue ,后端采用spring boot + ...
2019-08-26 15:31:02
7743
2
原创 spring cloud: TX-LCN解决分布式事务
分布式事务预备知识1、本地事务的ACIDA:原子性(Atomicity) 一个事务(transaction)中的所有操作,要么全部完成,要么全部不完成,不会结束在中间某个环节。事务在执行过程中发生错误,会被回滚(Rollback)到事务开始前的状态,就像这个事务从来没有执行过一样。C:一致性(Consistency) 事务的一致性指的是在一个事务执行之前和执行之后数据库都必须处于一致性状...
2019-08-13 17:31:34
1522
原创 史上最全面的基于JWT token登陆验证
介绍JWT1、什么是JWT:JWT(Json web token), 是为了在网络应用环境间传递声明而执行的一种基于JSON的开放标准((RFC 7519)。2、JWT的组成:jwt由header(头部),playload(载荷)、signature(签名三部分组成)头部部分header{“alg”: “HS256”,“typ”: “JWT”}alg描述的是签名算法。默认值是HS...
2019-07-18 21:17:44
3534
原创 spring cloud Bus + RabbitMQ实现配置中心动态加载
一、简单介绍一下spring cloud Bus在微服务架构的系统中,我们通常会使用轻量级的消息代理来构建一个共用的消息主题让系统中所有微服务实例都连接上来,由于该主题中产生的消息会被所有实例监听和消费,所以我们称它为消息总线。在总线上的各个实例都可以方便地广播一些需要让其他连接在该主题上的实例都知道的消息,例如配置信息的变更或者其他一些管理操作等。由于消息总线在微服务架构系统中被广泛使用,所...
2019-07-16 16:59:29
1121
原创 全面解析spring cloud config 分布式配置中心
一、为什么会有spring cloud config1、微服务意味着要将单体应用中的业务拆分成一个个子服务,每个服务的粒度相对较小,因此系统中会出现大量的服务,由于每个服务都需要必要的配置信息才能运行,所以一套集中式的、动态的配置管理是必不可少的。2、当我们系统业务扩展到一定程度的时候;免不了会增加很多的配置文件和信息,例如证书文件、接口对接的参数信息、数据库连接信息等;传统的单体式架构系统,...
2019-07-15 18:16:45
446
原创 spring cloud gateway之限流原理、实战详解
1、限流的原理:1.1、计算器算法计数器算法采用计数器实现限流有点简单粗暴,一般我们会限制一秒钟的能够通过的请求数,比如限流qps为100,算法的实现思路就是从第一个请求进来开始计时,在接下去的1s内,每来一个请求,就把计数加1,如果累加的数字达到了100,那么后续的请求就会被全部拒绝。等到1s结束后,把计数恢复成0,重新开始计数。具体的实现可以是这样的:对于每次服务调用,可以通过Atomic...
2019-07-09 10:16:38
2594
原创 Jmeter下载安装配置及使用(一站式解决Jmeter的困扰)
1、Jmeter下载1.1下载地址Jmeter下载地址本文选择下载的是jmeter的最新版本。官网还是很贴心的提示我们Requires Java 8+,下载完之后,我们对其进行解压解压完成之后,再添加环境变量就可以使用了,因此您可以提前选择将这个Jemeter放在那个路径下。2、添加环境变量2.1环境变量路径:电脑桌面:“计算机”图标---->鼠标右键选择“属性”---...
2019-07-08 16:29:42
482
原创 spring cloud gateway 实现熔断降级攻略(原来gateway还集成Netty)
理解gatewaySpring Cloud Gateway是Spring官方基于Spring 5.0,Spring Boot 2.0和Project Reactor等技术开发的网关,Spring Cloud Gateway旨在为微服务架构提供一种简单而有效的统一的API路由管理方式。注意:gateway是使用的webflux实现的(这里有一个大坑)为什么要实现熔断降级?在分布式系统中,网关...
2019-07-05 16:06:36
16709
16
原创 spring cloud 端口号ERR_UNSAFE_PORT
写作背景今天在搭建gateway服务的时候,此时心情愉悦,感觉钱途一片坦荡,于是便使用了端口6666,搭建完毕启动各个服务。测试访问服务是否可以从gateway转发,突然页面报错,犹如晴天霹雳般把我电醒(这么简单的东西,为什么不可以实现呢,我的钱途啊!!!)附图:解决问题:一个404,或者502等等提示都没有,但是提示了ERR_UNSAFE_PORT,port很重要的提示信息!度娘告诉...
2019-07-03 17:46:49
998
3
原创 Spring Cloud Feign调用bean找不到
我的理解Feign:在实际项目中经常会用到服务之间的调用,并且一个接口会被多处调用,所以我们通常会在各个服务中自行封装一下客户端类来包装这些依赖服务的调用,因此Feign应运而生。@FeignClient绑定的接口,其他服务找不到当我们把需要需要用的接口注入到服务消费者中,服务消费者启动的时候报错(找不到bean)如图:...
2019-07-02 18:20:56
8825
7
原创 解决:Eureka 服务管理页面,点击服务报错404
解决:Eureka 服务管理页面,点击服务报错404在Eureka管理页面点击服务报404问题这个问题在CSDN中有好多解决方案,但是都不太适合我!我就开始回忆我创建服务时的过程(因为我以前创建服务,并且在Eureka的管理页面点击服务不会报404)。中午睡觉醒来,满脸口水的我,感觉神力附身!突然我想到我创建服务的时候是有区别的。1、这种情况下访问是会报404!这种情况下pom.xml...
2019-07-02 14:24:14
10555
5
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人