- 博客(48)
- 资源 (3)
- 收藏
- 关注
原创 OAuth2(一):理解OAuth2授权方式,入门项目搭建
[最近工作需要,了解了一些OAuth2,并进行了实际操作,网上资料比较乱,这里总结一下,本地一共记录了6篇,这里做适当删减,便于理解,更新会有点慢!][完整代码我会上传到我的github,点击直达,有需要的可以自行参考!]OAuth2OAuth2.0 是目前最流行的授权机制,用来授权第三方应用,获取用户数据,是一种协议规范。数据的所有者告诉系统,同意授权第三方应用进入系统,获取这些数据。系统从而产生一个短期的进入令牌(token),用来代替密码,供第三方应用使用。OAuth2是一个关于授权的
2021-04-02 17:56:21 924
原创 Observer (观察者) 模式
17.1 Observer模式 Observer 的意思是 “进行观察的嗯”,也就是 “观察者” 的意思。 在 Observer 模式中,当观察对象的状态发生变化时,会通知观察者。Observer 模式适用于根据对象状态进行相应处理的场景。17.2 示例程序 这是一段简单的示例程序,观测者将观察一个会生成数值的对象,并将它生成的数值结果显示出来。不过,不同的观测者的显示方式不一样。DigitObserver 会以数字形式显示数值,而 GraphObserver 则会以简单的图示形式来显示数值。
2020-09-08 14:49:50 1450
原创 Mediator(仲裁者)模式
16.1 Mediator 模式 大家想象一下一个乱糟糟的开发小组的工作状态。小组中的 10 个成员虽然一起协同工作,但是意见难以统一,总是互相指挥,导致工作进度始终滞后。他们还都十分在意编码细节,经常为此争执不下。这时,我们就需要一个中立的仲裁者站出来说:“各位,请大家将情况报告给我,我来负责仲裁。我会从团队整体出发进行考虑,然后下达指示。但我不会评价大家的工作细节。” 这样,当出现争执时大...
2020-01-08 14:54:07 1011
原创 Facade (外观)模式
15.1 Facade 模式 程序总是会变得越来越大。随着时间的推移,程序中的类会越来越多,而且它们之间相互关联,这会导致程序结构也会变得越来越复杂。我们在使用这些类之前,必须先弄清楚它们之间的关系,注意正确的调用顺序。 不过与其这么做,不如为这个大型程序准备一个“窗口”。这样,我们就不必单独地关注每个类了,只需简单地对 “窗口” 提出请求即可。 使用 Facade 模式可以为互相关联...
2019-12-31 10:31:09 436
原创 Chain of Responsibility (责任链)模式
(一段时间没更新了,坚持了100天考研^^)14.1 Chain of Responsibility (责任链)模式 “推卸责任” 有贬义的意思,但是有时候也需要 “推卸责任”的情况。例如,当外部请求程序进行某个处理,但程序暂时无法之间决定由哪个对象负责处理时,就需要推卸责任。这种情况下,我们可以考虑将多个对象组成一条责任链,然后按照他们在责任链上的顺序一个个地找出到底谁来负责处理。 这...
2019-12-25 10:25:45 466
原创 Visitor(访问者) 模式
13.1 Visitor 模式 在数据结构中保存着许多元素,我们会对元素进行 “处理”。这时, “处理” 代码放在哪里比较好呢?通常的做法是将它们放在表示数据结构的类中。但是,如果 “处理” 有许多种呢?这种情况下,每当增加一种处理,我们就不得不去修改表示数据结构的类。 在 Visitor 模式中,数据结构与处理被分离开来。我们编写一个表示 “访问者” 的类来访问数据结构中的元素,并把对各...
2019-08-25 20:39:42 1143
原创 Decorator(装饰器) 模式
12.1 Decorator 模式 假如有一块蛋糕,如果只涂上奶油,其他什么也不加,就是奶油蛋糕。如果加上草莓,就是草莓奶油蛋糕。如果再加上一块黑色巧克力板,上面用白色巧克力写上姓名,然后插上蜡烛,就变成了一块生日蛋糕。 不论是蛋糕、奶油蛋糕、草莓奶油蛋糕,他们的核心都是蛋糕。不过,经过一系列装饰后,蛋糕的味道变得更加甜美了,目的也变得更加明确了。 程序中的对象与蛋糕十分相似。首先有一...
2019-08-11 16:10:10 482
原创 Composite(容器与内容一致性)模式
11.1 Composite 模式 在计算机的文件系统中,有“文件夹”的概念。文件夹里面既可以放入文件,也可以放入其他文件夹(子文件夹)。以此类推,文件夹是形成了一种容器结构、递归结构。 虽然文件夹与文件是不同类型的对象,但是它们都“可以被放入到文件夹中”。文件夹和文件有时也被称为“目录条目”。在目录条目中,文件夹和文件被当作是同一种对象看待(即一致性)。 有时,与将文件夹和文件都作为...
2019-07-21 16:16:49 878
原创 Strategy (策略)模式
10.1 策略模式 Strategy 的意思是 “策略”,指的是与敌军对垒时行军作战的方法。在编程中,我们可以将其理解为 “算法”。 无论什么程序,其目的都是解决问题。而为了解决问题,我们需要编写特定的算法。使用 Stratety 模式可以整体地替换算法的实现部分。能够整体地替换算法,能让我们轻松地以不同的算法去解决同一个问题,这种模式就是 Stratety 模式。10.2 示例程序 ...
2019-07-13 19:55:05 710
原创 Bridge (桥梁)模式
9.1 Bridge 模式 Bridge 的意思是 “桥梁”。就像在现实中,桥梁的功能是将河流的两侧连接起来一样,Bridge 模式的作用也是将两样东西连接起来,它们分别是 类的功能层次结构 和 类的实现层次结构。 Bridge 模式的作用是在 “类的功能层次结构” 和 “类的实现层次结构” 之间搭建桥梁。|| 类的层次结构的两个作用 ◆ 希望增加新功能时 假设现在有一个类 So...
2019-06-30 20:21:35 3032
原创 Abstract Factory(抽象工厂) 模式
8.1 Abstract Factory 模式 通常,我们不会将 “抽象的” 这个词与 “工厂” 这个词联系到一起。所谓工厂,就是将零件组装成产品的地方,这是一项具体的工作。大在 Abstract Factory 模式中,不仅有 “抽象工厂” ,还有 “抽象零件” 和 “抽象产品” 。抽象工厂的工作是将 “抽象零件” 组装为 “抽象产品”。 在面向对象的编程中 “抽象” 这个词的具体含义指...
2019-06-15 13:03:57 1259
原创 Builder (建造者)模式
7.1 Builder 模式 在建造大楼时,需要先打牢地基,搭建框架,然后自下而上地一层层盖起来。通常,在建造这种具有复杂结构的物体时,很难一气呵成。我们需要首先建造组成这个物体的各个部分,然后分阶段将它们组装起来。 这里,我们将要学习用于组装具有复杂结构的实例的 Builder 模式。7.2 示例程序 作用:使用 Builder 模式编写 “文档” 的程序,具有以下结构。含有一...
2019-05-26 13:36:37 1494
原创 Prototype (原型)模式
6.1 Prototype 模式 通常,我们使用 new 方式来生成类的实例。 new Something(); 像这样 new 的方式来生成实例时,是必须指定类名的。但是,有时也需要 “不指定类名的前提下生成实例” 的需求。 (1) 对象种类繁多,无法将他们整合到一个类中时 此时需要要编写多个类文件来处理。 (2) 难以根据类生成实例时 生成实例的过程太过复杂,很难根...
2019-05-25 17:42:44 2403
原创 Singleton(单例) 模式
5.1 Singleton 模式 程序在运行时,通常会生成很多实例。但是,当我们想在程序中表示某个东西只会存在一个时,就会有 “只创建一个实例” 的需求。 当然,只要我们在编写程序时多加注意,确保只调用了一次 new MyClass(),就可以达到值生成一个实例的目的。当如果要达到以下目的:确保任何情况下都绝对只有1个实例想在程序上表现出“只存在一个实例” 像这样的确保只生成一...
2019-05-12 15:47:56 255
原创 FactoryMethod (工厂方法) 模式
4.1 Factory Method 模式 在 Template Method 模式中,我们在父类中规定处理的流程,在子类中实现具体的处理。如果我们将该模式用于生成实例,它就演变为这里我们将学习的 Factroy Method 模式。 Factory 有 “工厂” 的意思。用 Template Method 模式来构建生成实例的工厂,这就是 Factory Method 模式。在该模式中,...
2019-05-11 13:08:44 643
原创 Template-Method (模板方法) 模式
3.1 Template Method 模式|| 什么是模板 模板的原意是指带有镂空文字的薄薄的塑料板。只要用笔在模板的镂空处进行临摹,即使是手写也能写出整齐的文字。虽然只要看到镂空的洞,就可以指定能写出哪些文字,但具体写出的文字是什么感觉则依赖于所用的笔。如果是签字笔,则写出签字似的文字;如果是彩色笔,则可以写出彩色的字。但无论什么笔,文字的形状都会与模板上镂空处的形状一致。|| 什么是...
2019-04-21 21:19:04 424
原创 Adapter (设配器)模式
2.1 Adapter 模式 如果想让额定工作电压是直流12伏特的笔记本电脑在交流 100 伏特的 AC 电源下工作,通常我们会使用 AC 适配器,将家庭用的 100 伏特电压转换成我们需要的直流 12 伏特电压。这就是适配器的工作,它位于实际情况与需求之间,填补两者之间的差异。适配器的英文是 Adapter,“使…互相适合的东西”。 在程序世界中,经常会存在现有的程序无法直接使用,需要做...
2019-04-14 12:37:20 380
原创 Iterator (迭代器)模式
1.1 Iterator 模式 Iterator 模式用于在数据集合中按照顺序遍历集合。单词 Iterate 有反复做某件事情的医生,汉语称为“迭代器”。1.2 示例程序 作用:将书放置到书架(BookShelf)上,并将书的名字按顺序显示出来。Iterator 示例程序类图...
2019-03-24 19:05:06 366
原创 《图解设计模式》-各章节的划分/学习设计模式之前
《图解设计模式》中各章节的划分与 GoF 的分类不同,详情如下:第1部分“适应设计模式”,比较容易理解的设计模式 Iterator(迭代器)模式 Adapter(适配器)模式第2部分“交给子类”,与类继承相关的设计模式 Template Method(模板方法)模式 Factory Method(工程方法)模式第3部分“生成实例”,与生成实例相关的设计模式 Singleton(单...
2019-03-22 17:00:59 293
原创 Redis Cluster 高可用集群(Docker 实现)
本文使用Docker部署实现于同一台服务器,Redis 版本 5.0.3单机存在的问题机器故障:导致Redis失效容量瓶颈:容量不能水平扩展OPS( operation per second 每秒处理指令数):一台及其的网络带宽是有限的,如果有多台机器,可以有效解决QOSRedis ClusterRedis 集群是一个可以在多个 Redis 节点之间进行数据共享的设施install...
2019-03-18 15:10:27 12054 7
原创 API 网关服务:Spring Cloud Zuul(二):路由详解、Cookie 与头信息
实践出于《Spring Cloud 微服务实战》 - 瞿永超 著路由详解传统路由配置 传统路由配置就是在不依赖于服务发现机制的情况下,通过在配置文件中具体指定每个路由表达式与服务实例的映射关系来实现 API 网关对外部请求路由。单实例配置:通过zuul.routes..path 与 zuul.routes..url参数对的方式进行配置,比如之前介绍的:zuul: route...
2019-03-06 13:49:15 1517 1
原创 API 网关服务:Spring Cloud Zuul(一):背景和快速入门程序
《Spring Cloud 微服务实战》 - 瞿永超 著缺少一些之前的关于Ribbon、Hystrix、Feign 的文章,有机会来补全为什么需要API 网关? 利用之前的几个组件,我们已经可以搭建起一个简单的微服务架构系统,比如,通过使用Spring Cloud Eureka 实现高可用的服务注册中心以及实现微服务的注册与发现;通过 Spring Cloud Ribbon 或 Fei...
2019-01-24 16:20:24 228
原创 Mina基础(七):Mina整合Spring服务端、Spring boot 客户端
Spring 作为服务端将类交给Spring管理,通过配置文件注入所需要的Bean,通过配置文件绑定端口启动Mina服务端。项目整体代码目录结构(见上一篇): 1. 设置I/O接收器 <!-- 设置I/O接收器,指定接收到请求后交给handler处理 --> <!-- 此部分被 NioSocketAcceptor 隐式使用,无此则会...
2018-07-31 09:23:11 7909 13
原创 Mina基础(六):Mina整合Spring之前的准备工作——统一通信类、扩展Session及其管理、服务端handler细化、心跳机制及处理
此章节比较零散,主要为与Spring整合及业务处理做准备,没有涉及到具体的配置,都是一些工具类的实现。具体的整合Spring,使用的一下的这些类,下面的一章描述了如何使用这些类,看的比较晕的,可以多看看直接的配置,了解mina的运行流程。完整的项目架构:统一通信类 规范消息类型 目的:使用统一的封装类型,服务端接收固定的消息对象,服务端发送固定的消息对象,规范客...
2018-07-28 15:26:45 1850
原创 Mina基础(五):编写自定义协议及编解码器
为什么要制定协议呢? 我们知道,底层传输的都是二进制数据,服务端和客户端建立连接后进行数据的交互,接受这对方发送来的消息,如何判定发送的请求或者响应的数据结束了呢?总不能一直傻等着,或者随意的就结束消息接收吧。这就需要一个规则!比如QQ聊天工具,当输入完一个消息后,点击发送按钮向对方发送时,此时系统就会在在你的消息后添加一个文本换行符,接收方看到这个文本换行符就认为这是一个完整的...
2018-07-25 09:32:27 4313 5
原创 Mina基础(四):理解IoSession、I/O Processor、IoBuffer
Session会话 Session会话处于 MINA 的核心位置:每当一个客户端连接到服务器,一个新的会话会被创建,并会在客户端关掉连接前一直保存在内存中。会话用于保存连接的持久信息,以及在请求处理过程中、会话的生命周期中服务器可能需要用到的任何信息。IoSession:主要描述我们的网络通信双方所建立的连接之间的描述。 作用:可以完成一些对于连接...
2018-07-25 08:56:44 1779
原创 Mina基础(二):基础服务端、客户端搭建
Apache Mina是一个能够帮助用户开发高性能和高伸缩性网络应用程序的框架。它通过Java nio技术基于TCP/IP和UDP/IP协议提供了抽象的、事件驱动的、异步的API。当前发行的 MINA 版本支持基于 Java NIO 技术的 TCP/UDP应用程序开发、串口通讯程序(只在最新的预览版中提供),MINA 所支持的功能也在进一步的扩展中。API文档:http://tool.os...
2018-07-19 16:52:48 2242
原创 Mina基础(三):IOFilter、自定义过滤器、日志过滤器
Mina最主要的工作就是把底层传输的字节码转换为Java对象,提供给应用程序;或者把应用程序返回的结果转换为字节码,交给底层传输。完成转换功能,则需要相应的编解码器,这些都是由IoFilter完成的,因此IoFilter是Mina的精髓所在。 Filter,过滤器的意思。IoFilter,I/O操作的过滤器。IoFilter和Servlet中的过滤器一样,主要用于拦...
2018-07-19 16:45:11 2195
原创 Mina基础(一):基本结构分析、长短连接、IOService
这两天有需要研究一下Mina的基本使用方法,文章自己在网络笔记中先好的好,复制过来后排版可能不太好,多多包涵。1、在应用程序中的地位 主要屏蔽了网络通信的一些细节,对Socket进行封装,并且是NIO的一个实现架构,可以帮助我们快速的开发网络通信,常用于游戏的开发、中间件服务端的程序中。 Mina最主要的工作就是把底层传输的字节码转换为Java对象,提供给...
2018-07-19 16:33:27 1838 6
原创 Java 8系列之Lambda表达式(一)
Java 8 (又称为 jdk 1.8) 是 Java 语言开发的一个主要版本。 Oracle 公司于 2014 年 3 月 18 日发布 Java 8 ,它支持函数式编程,新的 JavaScript 引擎,新的日期 API,新的Stream API 等。 Lambda 表达式 − Lambda允许把函数作为一个方法的参数(函数作为参数传递进方法中) 更多的新特性可以参阅官网...
2018-07-17 11:50:34 425
转载 百度云下载速度过慢,使用aria2解决
参考了第一篇的文章,自己操作了下,发现需要注意以下: 1. 拓展程序github地址更换为:https://github.com/acgotaku/BaiduExporter 2. 直接导入拓展程序,Chrome会报危险,无法使用,此时将拓展程序后缀名改为rar,解压缩,在扩展程序中选择加载已解压的扩展程序 选择刚才的解压缩后的文件夹,即可成功安装。...
2018-07-13 17:14:12 8590
原创 服务治理:Spring Cloud Eureka(三)之服务发现与消费
目的:发现注册中心的服务,且进行消费。服务发现的任务是由Eureka客户端完成,服务消费由Ribbon完成。Ribbon简单介绍: Ribbon是基于HTTP和TCP的客户端负载均衡器,可以在通过客户端配置的ribbonServerList服务端列表去轮询访问达到均衡负载的作用。当其与Ribbon联合使用时,其ribbonServerList会被DiscoveryEnalbedNIW...
2018-06-04 15:30:55 525
原创 服务治理:Spring Cloud Eureka(二)之高可用注册中心
需要充分考虑发生故障的情况下,构建高可用的服务注册中心以增强系统的可用性。 在Eureka的服务治理设计中,所有的节点既是服务的提供方,也是服务的消费方,包括服务注册中心。上一步我们将服务注册中心的自我注册关闭了,Eureka Server的高可用实际上就是将自己作为服务向其他的服务注册中心注册自己,这样就形成了一组互相注册的服务注册中心,实现清单的互相同步,达到高可用的效果。1、搭建高可用...
2018-06-04 15:28:31 223
原创 服务治理:Spring Cloud Eureka(一)
Eureka 是 Spring Cloud Netflix 套件中的一部分,基于Netflix做了二次封装,主要负责完成微服务架构中的服务治理功能。Spring Cloud 已经为Eureka增加了Spring Boot风格自动化配置,只需简单的引入依赖和注解配置即可整合。服务治理:主要用来实现各个微服务实例的自动化注册与发现,是微服务架构中最为核心和基础的模块。目的:解决微服务架构中的服务实例维...
2018-06-04 15:25:06 254
原创 Mybatis初步一--4.29号
//昨天和今天一起写了1.传统的jdbc存在的问题:对数据库频繁的开启关闭,影响数据库性能;sql语句,Statement,ResultSet中都存在硬性的编码,修改时,要重新编译,不利于维护。2. Mybatis是一个持久层的框架,它让程序员把精力放在sql语句上,通过映射的方式,自由灵活的生成半自动的sql语句,将statement中的输入参数自动进行输入映射,查询的结果自动映
2017-04-29 22:43:48 204
原创 四种分页的写法--4月27号
1.连接数据库,写sql语句(sql server)。获得总记录数:rs = statement.executeQuery(select count(*) from article where pid =0) ;rs.next();int totalrecord = rs.getInt(1);获得总页数 totalpage = totalrecord % pageSize ==
2017-04-28 23:14:13 485
原创 小型BBS项目--4月26号学习总结
//早上复习了部分javase,在牛客网上做了30道选择题,发现掌握的还是不够牢固,还是需要不断的复习,做题,记忆。因为在学着写BBS,所有并没有多少总结。1.删除回复,要点:选择你要删除的帖子id,删除的时候需要连带这它的跟帖也要一起删除,所以此处需要调用递归来写。 你删除的帖子,如果它是别的帖子的跟帖,你需要判断它的父贴是否还要别的跟帖,如果没有别的跟帖,就需要把它的叶子节点改回
2017-04-26 23:26:18 330
原创 小型BBS项目1--4月25号学习总结
//上午复习了部分javase,看了多个视频,觉得还是有必要做个这个小项目熟练一下BBS要求:掌握递归的用法,分页的写法,html-css-jsp-JSP-Servlet的综合初步应用。包含:树形展现,平板型展现,能够回复跟帖,初步的管理。1.树形结构,递归调用。用1)开头定义的String str =“”,不能置为null,百度后发现,PrinterStream中规定了,如果
2017-04-25 22:53:55 507
原创 JSP初步2--4月24号学习总结
1.Action (动作指令),包含include,forward,useBean//运行期间,被请求时才会被系统编译1)//写入参数名,值,就可以动态的传入参数 与 不同,2) 将一个jsp的内容传到page所指向的那个jsp或者servlet进行处理,可以设置指定的参数,URL地址不会发生改变,与后者有同一个request ,此跳转是在服务器内部进行的
2017-04-24 22:26:47 231
poi导出excel支持xls、xlsx格式大数据导出java工具类
2018-03-30
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人