GW Blog

Never stop thinking, never stop moving.

字节二面凉经

社招广告数据平台——后端开发Java岗

不知不觉一年没更新了,简直懒得飞起,更一次面试凉经。 一面 先自我介绍,简单讲下经历和项目,我严重怀疑是HR完成KPI,我都一年多没更新简历了,面试官听完自我介绍表示这简历上的内容严重过时了。 算法题: 第一个是手写,1-n的数字字典排序,第k大。先描述下思路给面试官,然后开始写,做法是字典树前序的递归遍历。后面两个题是描述思路,两个栈实现队列,运用另一个栈翻转顺序简单。第三题是两个...

分式session实现单点登录

基于zookeeper和cookieID实现分布式sso session

快三个月没更新了,最近忙于新工作上手时期强度比以前大很多,下班了非常摸鱼。后续准备开始写一些简单的应用和尝试分析一些常用中间件源码。 对于常见的前后端分离web应用来说,单点登录是非常常见的功能点。尤其是对于企业的众多应用来说,如果说我先去百度贴吧要登录,再去百度网盘又要输密码,再去百度知道答题还要重新登录,体验之差是显而易见的。 一种可选的做法是,所有应用统一采用同一个登录服务进行验证...

访问者模式

《大话设计模式》第28章读书笔记,介绍访问者模式

访问者模式(Visitor)表示一个作用于某个对象结构中的各元素的操作。它使你可以在不改变个元素的类的前提下定义作用于这些元素的新操作。 Visitor类,为该对象结果中ConcreteElement的每一个类声明一个Visit操作 public interface Visitor { public void visitConcreteElementA(ConcreteElemen...

解释器模式

《大话设计模式》第27章读书笔记,介绍解释器模式

解释器模式(Interpreter)给定一个语言,定义它的文法的一种表示,并定义一个解释器,这个解释器使用该表示来解释语言中的句子。解释器模式需要解决的是,如果一种特定类型的问题发生的频率足够高,那么可能就值得将该问题的各个实例表述为一个简单语言中的句子。这样就可以构建一个解释器,该解释器通过解释这些句子来解决该问题。比如,解释器为正则表达式定义了一个文法,如何表示一个特定的正则表达式,以及...

享元模式

《大话设计模式》第26章读书笔记,介绍享元模式

享元模式(Flyweight)运用共享技术有效地支持大量细粒度的对象。 Flyweight类,所有具体享元类的超类或接口,通过这个接口,Flyweight可以接受并作用于外部状态 public interface Flyweight { public void operation(int extrinsicstate); } ConcreteFlyweight继承Flyweig...

职责链模式

《大话设计模式》第24章读书笔记,介绍职责链模式

职责链模式(Chain of Responsibility)使多个对象都有机会处理请求,从而避免请求的发送者和接收者之间的耦合关系。将这个对象连成一条炼,并沿着这条链传递该请求,直到有一个对象处理它为止。 Handler类,定义一个处理请示的接口 public abstract class Handler { protected Handler successor; // 设置...

中介者模式

《大话设计模式》第25章读书笔记,介绍中介者模式

中介者模式(Mediator)用一个中介对象来封装一系列的对象交互。中介者使各对象不需要显示地相互引用,从而使其耦合松散,而且可以独立地改变它们之间的交互。 Mediator类,抽象中介者类,定义个抽象的发生消息方法,得到同事对象和发送消息 public interface Mediator { public void send(String message, Colleague ...

桥接模式

《大话设计模式》第22章读书笔记,介绍桥接模式

继承的误区 现在有两个手机品牌M和N,它们都有游戏和通讯录功能,设计它们的代码结构图 方案一:父类是手机品牌,下有手机品牌M和手机品牌N,每个子类下各有通讯录和游戏子类 方案二:父类是手机软件,下面是子类通讯录和游戏,每个子类下面是不同手机品牌的具体软件 但是,我们发现,对于上面两种设计,如果要增加新的手机品牌S或者新增新的软件音乐播放器都需要大幅修改已有的结构。 继承的误...

命令模式

《大话设计模式》第23章读书笔记,介绍命令模式

命令模式(Command)将一个请求封装为一个对象,从而使得你可以用不同的请求对客户进行参数化;对请求排队或记录请求日志,以及支持可撤销的操作。 Command类,用来声明执行操作的接口 public interface Command { public void execute(); } ConcreteCommand类,将一个接收者对象绑定于一个动作,调用接收者相应的操作,...

迭代器模式

《大话设计模式》第20章读书笔记,介绍迭代器模式

迭代器模式(Iterator)提供一种方法顺序访问一个聚合对象中各个元素,而又不暴露该对象的内部表示。当你需要访问一个聚集对象,而且不管这些对象是什么都需要遍历的时候,就应该考虑使用迭代器模式。另外,需要对聚集有多种方式遍历时,可以考虑使用迭代器模式。迭代器模式可以为遍历不同的聚集结构提供如开始、下一个、是否结束、当前哪一项等统一的接口。 但是,因为目前Java等语言本身已经把这个模式做在...