设计模式 六月 03, 2021

代理模式

文章字数 6.5k 阅读约需 6 mins.

遇到一个“复杂的对象”的创建工作,该对象由一定各个部分的子对象用一定的算法构成,由于需求的变化,复杂对象的各个部分经常面临剧烈的变化,但将它们组合在一起的算法相对稳定。

提供一种“封装机制”来隔离“复...

查看全文

设计模式 六月 03, 2021

代理模式

文章字数 6.5k 阅读约需 6 mins.

遇到一个“复杂的对象”的创建工作,该对象由一定各个部分的子对象用一定的算法构成,由于需求的变化,复杂对象的各个部分经常面临剧烈的变化,但将它们组合在一起的算法相对稳定。

提供一种“封装机制”来隔离“复杂对象的各个部”的变化,从而保持系统中的“稳定构建算法.

将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。

  • 抽象建造者角色(Builder):为创建一个Product对象的各个部件指定抽象接口,以规范产品对象的各个组成成分的建造。一般而言,此角色规定要实现复杂对象的哪些...

查看全文

设计模式 六月 03, 2021

原型模式

文章字数 5.4k 阅读约需 5 mins.

当对象的构造函数非常复杂,在生成新对象的时候非常耗时间、耗资源的情况,怎么来创建.

通过复制(克隆、拷贝)一个指定类型的对象来创建更多同类型的对象。这个指定的对象可被称为“原型”对象,也就是通过复制原型对象来得到更多同类型的对象。

客户(Client)角色:使用原型对象的客户程序
抽象原型(Prototype)角色:规定了具体原型对象必须实现的接口(如果要提供深拷贝,则必须具有实现clone的规定)
具体原型(Concrete Prototype):从抽象原型派生而来,是客户程序使用的对象,即被复...

查看全文

设计模式 六月 03, 2021

中介者模式

文章字数 3.8k 阅读约需 3 mins.

面对一系列的相交互对象。怎么样保证使各对象不需要显式地相互引用,使其耦合松散.

用一个中介对象来封装一系列的对象交互。中介者使各对象不需要显式地相互引用,从而使其耦合松散,而且可以独立地改变它们之间的交互。

  • 抽象中介者(Mediator):中介者定义一个接口用于与各同事(Colleague)对象通信。
  • 具体中介者(ConcreteMediator): 具体中介者通过协调各同事对象实现协作行为。了解并维护它的各个同事。
  • 抽象同事类(Colleague class): 定义同事类接口,定义各同事...
查看全文

设计模式 六月 03, 2021

门面模式

文章字数 3.3k 阅读约需 3 mins.

想要办理一些业务的时候,由于程序复杂,需要跑很多地方才能完成一项业务.这时候就想着能不能有个统一的窗口,能按照流程帮我办理好这些业务.这也是政府当下推广的”最多跑一次”服务.

提供一个统一的接口去访问多个子系统的多个不同的接口,它为子系统中的一组接口提供一个统一的高层接口。使用子系统更容易使用。

  • 门面角色:客户端调用这个角色的方法。此角色知晓相关的子系统的功能和责任。正常情况下,本角色会将所有从客户端发来的请求委派到相应的子系统中去。

  • 子系统角色:可以同时有一个或者多个子系统。每个子系统都...

查看全文

设计模式 六月 03, 2021

代理模式

文章字数 15k 阅读约需 14 mins.

​ 在不直接操作对象的情况下,对此对象进行访问.

​ 可以通过引入一个新的对象,来实现对真实对象的操作或者将新的对象作为真实对象的一个替身。即代理对象。它可以在客户端和目标对象之间起到中介的作用,并且可以通过代理对象去掉客户不能看到的内容和服务或者添加客户需要的额外服务.

代理可以提供延迟实例化(lazy instantiation),控制访问, 等等,包括只在调用中传递。

​ 一个处理纯本地资源的代理有时被称作虚拟代理。

​ 远程服务的代理常常称为远程代理。

​ 强制 控制访问的代理称为保护...

查看全文

HELLOWORD 四月 08, 2021

Hello World

文章字数 1.5k 阅读约需 1 mins.

Welcome to Hexo! This is your very first post. Check documentation for more info. If you get any problems when using Hexo, you can find the answer in troubleshooting or you can ask me on GitHub.

Create a new post

$ hexo new "My New Post"

More...

查看全文

JVM 四月 08, 2021

jvm

文章字数 17k 阅读约需 15 mins.

  1. calss loading 加载

  2. calss linking连接

    1. verification 验证:验证文件是否符合jvm规范
    2. perparation准备 :静态成员变量赋初始值
    3. resloution解析:将类、方法、属性等符号引用解析为直接引用 常量池中的各种符号引用解析为指针、偏移量等内存地址的直接引用
  3. class initializing 初始化: 将类的静态变量设置初始值,调用静态代码块

  4. 申请对象内存.

  5. 成员变量赋默认值

  6. 调用构造方法

    6.1 成员变量顺序赋初始值

    6...

查看全文

概念 三月 30, 2021

Oauth2 理解

文章字数 3.2k 阅读约需 3 mins.

​ Oauth是一套开放授权的标准/协议. 旨在让用户允许第三方应用去访问该用户存储在另外服务提供者上的用户信息,而不需要将用户名与密码提供给第三方应用. OAuth 2.0是OAuth协议的下一版本, 但不向后兼容OAuth 1.0.

用一句话来讲:

​ Oauth解决的问题是使用授权服务器提供一个访问凭据给到第三方应用,让第三方应用可以在不知道资源所有者资源服务器上的账号和密码的情况下,能获取到资源所有者资源服务器上的受保护资源.

第三方应用授权登录: 当app或者网页接入一些第三方应...

查看全文

OPENRESTY 三月 30, 2021

openresty 入门

文章字数 5.2k 阅读约需 5 mins.

Nginx 是一个主进程配合多个工作进程的工作模式.每个进程由单个线程来处理多个连接.

通过将cpu内核绑定到工作进程上,来提升性能.

预编译安装

参照: http://openresty.org/cn/installation.html

先在centos系统中添加openresty仓库.

  • yum install yum-utils 管理repository及扩展包的工具 (主要是针对repository)
  • yum-config-manager --add-repo https://openresty...
查看全文

SPRING 三月 30, 2021

spring源码下载编译阅读

文章字数 5k 阅读约需 5 mins.

​ 经过了两年多的工作沉淀, 该掌握的技术体系已经能过熟练运用了.但很多时候,都是知道具体的解决方法,至于为什么可以用此方法解决问题却一知半解.

​ 之前也有尝试着看过源码,但debug模式,一步步执行下去后,就被绕晕了.执行到哪了都不知道,有时候又感觉绕回了原来的地方.当然,没有添加自己的注释也是一个很大的原因.给自己当时理解了的地方打上注释,等下次运行到时查看注释帮助理解,再去理解下一步执行的代码.稳扎稳打才是更有效的学习方法.

2.1. 下载spring源码

​ github源码地址: https...

查看全文
加载更多
0%