SF
玛奇朵加点糖
玛奇朵加点糖
注册登录
关注博客
注册登录
主页
关于
RSS
网站分布式改造
Phil
2019-09-12
阅读 15 分钟
2.2k
一个创业公司起步时很可能就两台机器,一台 Web 服务器,一台数据库服务器,在一个应用系统中集成了所有的功能模块。但随着业务的发展和流量的增长,单应用已不能满足业务需求,分布式成为必由之路。
MySQL深入学习总结
Phil
2019-09-09
阅读 28 分钟
3.1k
关于MySQL发音的官方答案:The official way to pronounce “MySQL” is “My Ess Que Ell” (not “my sequel”), but we do not mind if you pronounce it as “my sequel” or in some other localized way.
如何设计一个秒杀系统
Phil
2019-09-06
阅读 5 分钟
1.8k
开篇词 | 秒杀系统架构设计都有哪些关键点? 秒杀主要解决两个问题,一个是并发读,一个是并发写 秒杀的整体架构需要做到:稳、准、快。 01 | 设计秒杀系统时应该注意的5个架构原则 架构原则:“4 要 1 不要” 数据要尽量少 请求数要尽量少 路径要尽量短 依赖要尽量少 不要有单点 架构是一种平衡的艺术,而最好的架构一旦...
观察者模式 Observer
Phil
2019-03-24
阅读 1 分钟
989
在软件构建过程中,我们需要为某些对象建立一种“通知依赖关系”——一个对象(目标对象)的状态发生改变,所有的依赖对象(观察者对象)都将得到通知。如果这样的依赖关系过于紧密,将使软件不能很好地抵御变化。
策略模式 Stratetgy
Phil
2019-03-24
阅读 1 分钟
1k
在软件构建过程中,某些对象使用的算法可能多种多样,经常改变,如果将这些算法都编码到对象中,将会使对象变得异常复杂;而且有时候支持不使用的算法也是一个性能负担。
模板方法模式 Template Method
Phil
2019-03-24
阅读 1 分钟
1.6k
模板方法模式 Template Method 模式定义 {代码...} 动机 {代码...} 适用性 {代码...} 模式类图(Structure) 要点总结 {代码...} 代码实现 模拟场景:我和女朋友的日常生活 日常生活模板类:AbstractDailyLife.java 我的日常生活类:MyDailyLife.java 女朋友日常生活类:MyGirlDailyLife.java 场景测试类:AbstractDailyLi...
装饰器模式 Decorator
Phil
2019-03-24
阅读 3 分钟
1.3k
在某些情况下,我们可能会过度地使用继承来扩展对象的功能,由于继承为类型引入的静态特质,使得这种扩展方式缺乏灵活性;并且随着子类的增多(扩展功能的增多),各种子类的组合(扩展功能的组合)会导致更多子类的膨胀。
桥接模式 Bridge
Phil
2019-03-24
阅读 1 分钟
1.2k
桥接模式 Bridge 动机(Motivation) 由于某些类型的固有的实现逻辑,使得它们具有两个变化的维度,乃至多个维度的变化。 如何应对这种“多维度的变化”?如何利用面向对象技术来使得类型可以轻松地沿着两个乃至多个方向变化,而不引入额外的复杂度? 模式定义 将抽象部分(业务功能)与实现部分(平台实现)分离,使它们都...
适配器模式 Adapter
Phil
2019-03-24
阅读 1 分钟
1.1k
适配器模式 Adapter 动机(Motivation) 在软件系统中,由于应用环境的变化,常常需要将“一些现存的对象”放在新的环境中应用,但是新环境要求的接口是这些现存对象所不满足的。 如何应对这种“迁移的变化”?如何既能利用现有对象的良好实现,同时又能满足新的应用环境所要求的接口? 我们身边的 Adapter 水龙头转换器 VGA ...
代理模式 Proxy
Phil
2019-03-24
阅读 1 分钟
898
在面向对象系统中,有些对象由于某种原因(比如对象创建的开销很大,或者某些操作需要安全控制,或者需要进程外的访问等),直接访问会给使用者、或者系统结构带来很多麻烦。
建造者模式 Builder
Phil
2019-03-24
阅读 1 分钟
1.1k
在软件系统中,有时候面临着“一个复杂对象”的创建工作,其通常由各个部分的子对象用一定的算法构成;由于需求的变化,这个复杂对象的各个部分经常面临着剧烈的变化,但是将它们组合在一起的算法却相对稳定。
抽象工厂模式 Abstract Factory
Phil
2019-03-24
阅读 1 分钟
998
抽象工厂模式 Abstract Factory 动机(Motivation) 在软件系统中,经常面临着“一系列相互依赖的对象”的创建工作;同时,由于需求的变化,往往存在更多系列对象的创建工作。 如何应对这种变化?如何绕过常规的对象创建方法(new),提供一种“封装机制”来避免客户程序和这种“多系列具体对象创建工作”的紧耦合? 模式定义 提供...
工厂方法模式 Factory Method
Phil
2019-03-24
阅读 1 分钟
1.1k
定义一个用于创建对象的接口,让子类决定实例化哪一个类。Factory Method 使得一个类的实例化延迟(目的:解耦;手段:虚函数)到子类。——《设计模式》GoF
原型模式 Prototype
Phil
2019-03-24
阅读 1 分钟
1k
如何应对这种变化?如何向“客户程序(使用这些对象的程序)”隔离出“这些易变对象”,从而使得“依赖这些易变对象的客户程序”不随着需求改变而改变?
单例模式 Singleton
Phil
2019-03-24
阅读 1 分钟
1.5k
单例模式 Singleton 动机 在软件系统中,经常有这样一些特殊的类,必须保证它们在系统中只存在一个实例,才能确保它们的逻辑正确性、以及良好的效率。 如何绕过常规的构造器,提供一种机制来保证一个类只有一个实例? 这应该是类设计者的责任,而不是使用者的责任。 百度百科定义 {代码...} Java中单例定义 {代码...} 单...
Object类深入研究
Phil
2019-03-02
阅读 3 分钟
1.8k
Object类深入研究 Object类有哪些方法 registerNatives()【底层实现、不研究】 hashCode() equals(Object obj) clone() toString() notify() notifyAll() wait(long timeout)【还有重载了两个】 finalize() Object一共有11个方法,其中一个为底层的实现registerNatives(),其中两个wait()和wait(long timeout, int nanos...
Java锁机制
Phil
2019-03-02
阅读 3 分钟
1.3k
synchronized 简介 synchronized是Java的一个关键字,它能够将代码块(方法)锁起来 synchronized是一种互斥锁 一次只能允许一个线程进入被锁住的代码块
COW机制以及相关类
Phil
2019-03-02
阅读 2 分钟
1.6k
Vector和SynchronizedList 我们知道ArrayList是用于替代Vector的,Vector是线程安全的容器。因为它几乎在每个方法声明处都加了synchronized关键字来使容器安全。
AtomicInteger 原子类的作用
Phil
2019-03-02
阅读 3 分钟
2.9k
多线程操作,Synchronized 性能开销太大count++并不是原子操作。因为count++需要经过读取-修改-写入三个步骤。 count++并不是原子操作。因为count++需要经过读取-修改-写入三个步骤。