<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[SuperBins的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/SuperBins</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; SuperBins]]></copyright><item><title><![CDATA[读取excel数据的方式整理]]></title><link>https://blog.youkuaiyun.com/SuperBins/article/details/126304767</link><guid>https://blog.youkuaiyun.com/SuperBins/article/details/126304767</guid><author>SuperBins</author><pubDate>Fri, 12 Aug 2022 15:24:57 +0800</pubDate><description><![CDATA[导出excel无从下手，那就从一下几种方式种选择一个吧]]></description><category></category></item><item><title><![CDATA[单向链表的常见操作]]></title><link>https://blog.youkuaiyun.com/SuperBins/article/details/109500191</link><guid>https://blog.youkuaiyun.com/SuperBins/article/details/109500191</guid><author>SuperBins</author><pubDate>Wed, 04 Nov 2020 22:07:46 +0800</pubDate><description><![CDATA[一、单向链表反转
/**
         * 这里要注意，我的head不能作为开始的第一个结点，我的head只是一个起点的哨兵标识
         * 如果将head作为第一个结点开始计算，
         * 假如单向链表结构为：  head -&gt; a -&gt; b -&gt; c   lest = c;
         * 那么第一次运算之后head -&gt; null
         * 第二次运算  a -&gt; head
         * 第三次运算  b -&gt; a]]></description><category></category></item><item><title><![CDATA[基于单向链表实现LRU缓存淘汰算法]]></title><link>https://blog.youkuaiyun.com/SuperBins/article/details/109397027</link><guid>https://blog.youkuaiyun.com/SuperBins/article/details/109397027</guid><author>SuperBins</author><pubDate>Sat, 31 Oct 2020 02:15:28 +0800</pubDate><description><![CDATA[准备工作
思考：链表是由一个一个结点单向连接而成，因此我们需要创建一个结点类，该类包含结点数据，以及下一个结点的位置信息！
一、结点类：
package com.linkTest;

public class Node&lt;E&gt; {

    private Node&lt;E&gt; next;//指向下一个节点
    private E e;//存储数据

    public Node(E e){
        this.e = e;
        this.next = null;
 ]]></description><category></category></item><item><title><![CDATA[java流的底层原理（二）]]></title><link>https://blog.youkuaiyun.com/SuperBins/article/details/108270887</link><guid>https://blog.youkuaiyun.com/SuperBins/article/details/108270887</guid><author>SuperBins</author><pubDate>Fri, 28 Aug 2020 02:15:30 +0800</pubDate><description><![CDATA[Stream的结构
以下是我从jdk8中拷贝下来的代码
public interface Stream&lt;T&gt; extends BaseStream&lt;T, Stream&lt;T&gt;&gt; 

public interface BaseStream&lt;T, S extends BaseStream&lt;T, S&gt;&gt;
        extends AutoCloseable {

public interface AutoCloseable


通过以上代码我们可以看]]></description><category></category></item><item><title><![CDATA[java流的基本认识和底层原理（一）]]></title><link>https://blog.youkuaiyun.com/SuperBins/article/details/108231518</link><guid>https://blog.youkuaiyun.com/SuperBins/article/details/108231518</guid><author>SuperBins</author><pubDate>Thu, 27 Aug 2020 00:33:55 +0800</pubDate><description><![CDATA[Stream的基本认识
java和Stream相关的类都在java.util.stream包下。
java提供stream的目的：是为了更好的操作集合！
stream简单介绍
stream的基本构成：
1、源。
2、零个或者多个中间操作。
3、终止操作
stream的特性：
惰性求值、及早求值。
这句话怎么理解呢？stream中可能有多个中间操作，但是如果没有遇到终止操作，那么不管多少个中间操作都不会执行，只有遇到终止操作才会执行这些中间操作。
stream的创建方式
1、
		Stream s = str]]></description><category></category></item><item><title><![CDATA[java之函数式编程]]></title><link>https://blog.youkuaiyun.com/SuperBins/article/details/108230043</link><guid>https://blog.youkuaiyun.com/SuperBins/article/details/108230043</guid><author>SuperBins</author><pubDate>Tue, 25 Aug 2020 23:50:40 +0800</pubDate><description><![CDATA[函数式编程和面向对象编程
百度百科上定义函数式编程：
函数式编程是种编程方式，它将电脑运算视为函数的计算。函数编程语言最重要的基础是λ演算（lambda calculus），而且λ演算的函数可以接受函数当作输入（参数）和输出（返回值）。 [1]
和指令式编程相比，函数式编程强调函数的计算比指令的执行重要。
和过程化编程相比，函数式编程里函数的计算可随时调用。
以此我们可以判断函数式编程和面向对象编程的区别是：面向对象编程参数接收的是对象，而函数式编程参数接受的是动作。刚开始接触java函数式编程可能不太好理]]></description><category></category></item><item><title><![CDATA[如何玩Dockerfile和Docker网络]]></title><link>https://blog.youkuaiyun.com/SuperBins/article/details/107452179</link><guid>https://blog.youkuaiyun.com/SuperBins/article/details/107452179</guid><author>SuperBins</author><pubDate>Sun, 19 Jul 2020 23:36:54 +0800</pubDate><description><![CDATA[如何构建自己的镜像？如何让别人获取我们的镜像？如何实现容器之间通信？
今天这篇博客就从解决这3个如何开始
No.one
如何构建自己的镜像？
我目前知道的有2种形式。
第一种，如果我们下载了一个官网的镜像，通过镜像生成容器，我们修改容器内的配置文件或者不修改也行，然后我们通过commit命令就可以实现，这时镜像的层数： 官网镜像的层数 + 我们的容器层 = 这个镜像的层数。
例如
docker commit -m=”提交的描述信息” -a=”作者” 容器id 目标镜像名 [TAG]（TAG版本信息）

第二]]></description><category></category></item><item><title><![CDATA[如何理解docker联合文件系统、分层、数据卷、数据卷容器。]]></title><link>https://blog.youkuaiyun.com/SuperBins/article/details/107436880</link><guid>https://blog.youkuaiyun.com/SuperBins/article/details/107436880</guid><author>SuperBins</author><pubDate>Sat, 18 Jul 2020 23:50:16 +0800</pubDate><description><![CDATA[Docker 镜像讲解
镜像是一种轻量级、可执行的独立软件包，用来打包软件运行环境和基于运行环境开发的软件，它包含运行某个软件所需的所有内容，包括代码、运行时、库、环境变量和配置文件。
所有的应用，直接打包docker镜像，就可以直接跑起来！
如何得到镜像：从远程仓库下载、朋友拷贝、自己制作一个镜像dockerfile
UninoFS（联合文件系统）
UninoFS：是一种分层、轻量级并且高性能的文件系统，它支持对文件系统的修改作为一次提交来一层层的叠加，同时可以将不同目录挂载到同一个虚拟文件系统下，Uni]]></description><category></category></item><item><title><![CDATA[Docker 安装及常用命令详解]]></title><link>https://blog.youkuaiyun.com/SuperBins/article/details/107294245</link><guid>https://blog.youkuaiyun.com/SuperBins/article/details/107294245</guid><author>SuperBins</author><pubDate>Sun, 12 Jul 2020 02:04:43 +0800</pubDate><description><![CDATA[Dokcer 常用命令详解及构建前言：docker历史：环境配置系统注意：安装docker常用命令演示查看日志的时候遇到一个非常坑的地方，docker中的时间比目前时间慢8小时，如果我们按照docker中的时间查看某个时间段的日志，会发现找不到日志，如果我们按照我们目前的时间去查日志，那么就可以查看日志。如图：注意看打印日志的时间和我查看日志的时间段！扯淡环节VMware和docker的对比DevOps好处（使用docker部署项目）docker的基本组成
前言：
Docker 是一个开源的应用容器引擎，可]]></description><category></category></item><item><title><![CDATA[程序员节日快乐]]></title><link>https://blog.youkuaiyun.com/SuperBins/article/details/102718734</link><guid>https://blog.youkuaiyun.com/SuperBins/article/details/102718734</guid><author>SuperBins</author><pubDate>Thu, 24 Oct 2019 11:04:30 +0800</pubDate><description><![CDATA[节日快乐！
今天这个博客没有技术内容，因为我最近在找工作，新的技术暂时没有时间研究了。简单谈谈这几年的工作经历，第一份工作是我印象最深刻的一家公司，包括同事，虽然现在离职了，但是挺想念那个公司。然后发现毕业之后很多事情是身不由己的，不是我想怎样就能怎样，但是毕业之后我的朋友选择就可以按照自己的内心，不想工作上不能选择，所以朋友要选择处的比较舒适的，至少我可以做自己！再来谈谈第二份工作，其实这家公司...]]></description><category></category></item><item><title><![CDATA[spring cloud Eureka高级特性--分区]]></title><link>https://blog.youkuaiyun.com/SuperBins/article/details/101376604</link><guid>https://blog.youkuaiyun.com/SuperBins/article/details/101376604</guid><author>SuperBins</author><pubDate>Wed, 25 Sep 2019 17:59:14 +0800</pubDate><description><![CDATA[1.准备
1.首先，在C:\WINDOWS\System32\drivers\etc\hosts文件里面添加一下映射，如果不添加也没关系，只是如果是单机环境，在eureka首页中的replicas那一项看到的其它注册中心都是localhost，我这里为了方便理解就添加了映射。

2.为了方便理解，我这里是单个application用一个module，没有采用通过多个profile开启多个appli...]]></description><category></category></item><item><title><![CDATA[一篇搞定base64编码]]></title><link>https://blog.youkuaiyun.com/SuperBins/article/details/101367374</link><guid>https://blog.youkuaiyun.com/SuperBins/article/details/101367374</guid><author>SuperBins</author><pubDate>Wed, 25 Sep 2019 15:46:11 +0800</pubDate><description><![CDATA[维基百科说base64
Base64是一种基于64个可打印字符来表示二进制数据的表示方法。由于2的6次方等于64，所以每6个比特为一个单元，对应某个可打印字符。三个字节有24个比特，对应于4个Base64单元，即3个字节需要用4个可打印字符来表示。它可用来作为电子邮件的传输编码。在Base64中的可打印字符包括字母A-Z、a-z、数字0-9，这样共有62个字符，此外两个可打印符号在不同的系统中而不...]]></description><category></category></item><item><title><![CDATA[idea 报错Process finished with exit code 1]]></title><link>https://blog.youkuaiyun.com/SuperBins/article/details/101064691</link><guid>https://blog.youkuaiyun.com/SuperBins/article/details/101064691</guid><author>SuperBins</author><pubDate>Fri, 20 Sep 2019 16:31:17 +0800</pubDate><description><![CDATA[根据这段时间的使用，idea启动项目出现Process finished with exit code 1常见的原因有以下几种：
1、跟controller有关
查看controller文件是否新添加的接口和以前的接口名称重复！注意要区分请求方式，这是一个很考验耐心的一个检查方式。
2、和引用包有关
maven的生命周期如图：

这个检查过程比较简单，可以先clean一下，然后通过package打...]]></description><category></category></item><item><title><![CDATA[spring cloud gateway过滤器及执行顺序]]></title><link>https://blog.youkuaiyun.com/SuperBins/article/details/101026307</link><guid>https://blog.youkuaiyun.com/SuperBins/article/details/101026307</guid><author>SuperBins</author><pubDate>Thu, 19 Sep 2019 17:17:29 +0800</pubDate><description><![CDATA[一、图谱
在Spring-Cloud-Gateway之请求处理流程中最终网关是将请求交给过滤器链表进行处理。
核心接口：GatewayFilter（网关过滤器），GlobalFilter（全局过滤器），GatewayFilterChain（过滤器链）。
类关联图：

二、为什么使用网关过滤器
现在流行的微服务，整个项目包含很多个服务，如果没有网关这层，那么我们通过什么方式来限制访问呢？难道在每个服...]]></description><category></category></item><item><title><![CDATA[java 同步非阻塞的nio中包含阻塞的selector的理解]]></title><link>https://blog.youkuaiyun.com/SuperBins/article/details/101015887</link><guid>https://blog.youkuaiyun.com/SuperBins/article/details/101015887</guid><author>SuperBins</author><pubDate>Thu, 19 Sep 2019 11:32:07 +0800</pubDate><description><![CDATA[nio与selector的联系：
NIO自从JDK1.4版本以来就添加的一个非阻塞I/O框架，NIO是Java为解决网络通讯中高并发问题的一个类库，Selector是java NIO的一个组件，用于检查一个或多个NIO Channel的状态是否处于可读、可写。如此可以实现单线程管理多个channels,也就是可以管理多个网络链接，所以Selecotr是实现了多路复用的关键。
纠结点：
java n...]]></description><category></category></item><item><title><![CDATA[Spring Cloud Gateway-ServerWebExchange修改请求和响应内容]]></title><link>https://blog.youkuaiyun.com/SuperBins/article/details/100989063</link><guid>https://blog.youkuaiyun.com/SuperBins/article/details/100989063</guid><author>SuperBins</author><pubDate>Wed, 18 Sep 2019 17:11:43 +0800</pubDate><description><![CDATA[前提
本文编写的时候使用的Spring Cloud Gateway版本为当时最新的版本Greenwich.SR1。
我们在使用Spring Cloud Gateway的时候，注意到过滤器（包括GatewayFilter、GlobalFilter和过滤器链GatewayFilterChain），都依赖到ServerWebExchange：
public interface GlobalFilter ...]]></description><category></category></item><item><title><![CDATA[spring cloud gateway实现token校验]]></title><link>https://blog.youkuaiyun.com/SuperBins/article/details/100985127</link><guid>https://blog.youkuaiyun.com/SuperBins/article/details/100985127</guid><author>SuperBins</author><pubDate>Wed, 18 Sep 2019 15:42:05 +0800</pubDate><description><![CDATA[需求：
对访问网关的请求进行token校验，只有当token校验通过时，才转发到后端服务，否则直接返回401
本文适用场景：
token存放在redis中, key为用户的uid
开始
依赖的pom.xml
&lt;?xml version="1.0" encoding="UTF-8"?&gt;
&lt;project xmlns="http://maven.apache.org/POM/4.0....]]></description><category></category></item><item><title><![CDATA[Spring Security Oauth2 刷新token源码分析]]></title><link>https://blog.youkuaiyun.com/SuperBins/article/details/100933290</link><guid>https://blog.youkuaiyun.com/SuperBins/article/details/100933290</guid><author>SuperBins</author><pubDate>Tue, 17 Sep 2019 18:09:06 +0800</pubDate><description><![CDATA[刷新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...]]></description><category></category></item><item><title><![CDATA[一篇文章搞定JAVA NIO]]></title><link>https://blog.youkuaiyun.com/SuperBins/article/details/100889730</link><guid>https://blog.youkuaiyun.com/SuperBins/article/details/100889730</guid><author>SuperBins</author><pubDate>Mon, 16 Sep 2019 15:54:10 +0800</pubDate><description><![CDATA[现在使用NIO的场景越来越多，很多网上的技术框架或多或少的使用NIO技术，譬如Tomcat，Jetty。学习和掌握NIO技术已经不是一个JAVA攻城狮的加分技能，而是一个必备技能。在前面2篇文章《什么是Zero-Copy?》和《NIO相关基础篇》中我们学习了NIO的相关理论知识，而在本篇中我们一起来学习一下Java NIO的实战知识。全文较长，建议先马后看（记得关注不迷路）。
一、概述
NIO主要...]]></description><category></category></item><item><title><![CDATA[JAVA NIO]]></title><link>https://blog.youkuaiyun.com/SuperBins/article/details/100880570</link><guid>https://blog.youkuaiyun.com/SuperBins/article/details/100880570</guid><author>SuperBins</author><pubDate>Mon, 16 Sep 2019 10:57:13 +0800</pubDate><description><![CDATA[什么是NIO ：
在 JDK 1. 4 中 新 加入 了 NIO( New Input/ Output) 类, 引入了一种基于通道和缓冲区的 I/O 方式，它可以使用 Native 函数库直接分配堆外内存，然后通过一个存储在 Java 堆的 DirectByteBuffer 对象作为这块内存的引用进行操作，避免了在 Java 堆和 Native 堆中来回复制数据。
NIO 是一种同步非阻塞的 IO...]]></description><category></category></item></channel></rss>