Zer0e's Blog

Zer0e's Blog

Facing the ideal and the reality.

设计模式之观察者模式
前言本篇谈谈观察者模式。 正文概念我们在开发的时候,常常会有这样的需求场景:一个对象的某个状态更新了,与这个对象相关的所有对象都要跟着更新。但这些相关对象又不能直接写在类中,这时候我们就需要一个观察者帮助我们在一个对象更新后,通知其他对象跟着更新。常见的场景有:发布订阅模型,例如公众号的发布就属于被观察者,而用户属于观察者。再比如游...
设计模式之单例模式
前言今天就来谈谈常见的设计模式——单例模式。 正文概念单例模式属于创建型模式,这个设计模式涉及到一个单一的类,这个类负责创建自己的对象,又确保只有单个对象被创建,提供了一个全局唯一的实例化对象。它的目的是为了控制实例的数目,又或者是实例是单一的情况下,例如一个设备同时只能有一个对象进行操作。而实现单例模式的关键代码就是将构造函数...
谈谈Spring IoC
前言IoC本身来说并不是一种技术,而是一种思想。在spring开发中我们常常使用,但有时候想起来这个概念时,却不知道从何说起。本文就来谈谈spring中的核心概念——IoC。 正文IoC概念IoC(Inversion of Control)中文名“控制反转”,它是一种设计的思想。Ioc代表着你将对象交给容器来控制,而不是自己控制对象...
浅谈Java线程池
前言本篇来讲讲Java中线程池的使用与分析。 正文阿里巴巴Java开发手册中强调,线程资源必须通过线程池来提供,不允许显式创建线程。首先我们讲讲普通的线程创建方式。 Java线程创建方式在Java语言中,我们通过两种方式创建一个新线程,分别是继承Thread类或者实现Runnable接口。 继承Thread类Thread类本质上...
浅谈动态规划Ⅲ
前言最近准备秋招感觉自己还是蛮菜的,啥都不会。但学习还是得继续,偶尔趁着休息时间来写写文章。这篇大概是最后一篇整理动态规划题目,感觉整理多了也没用,只有自己去理解才真正有用。话不多说,开始正文。 实践地下城游戏 一些恶魔抓住了公主(P)并将她关在了地下城的右下角。地下城是由 M x N 个房间组成的二维网格。我们英勇的骑士(K)最初...
浅谈数据库主从复制
前言之前陆陆续续写了几篇高并发架构的文章,本篇文章是浅谈高并发架构系列的最后一篇。前面说过,单点故障是影响整个高并发系统的重要原因,在单点的服务出现故障时有可能影响整个系统的运行。而数据库作为数据存放的服务,是最底层的服务,使用的频率也是非常高的。因此有必要将单点数据库系统进行多节点复制,以至于在一个节点出现故障时,另一个节点能够提...
常见的负载均衡算法
前言上一篇文章讲了负载均衡的几种实现方式,这期就重点讲讲当请求到达负载均衡服务器时,服务器可以根据哪些算法来进行分配请求。 正文轮询法这种方法很简单,就是按照顺序轮流将请求分配到各个服务器上,对服务器的状态和负载情况并不关注。由于需要对pos变量进行操作,如果是高并发场景必须加写锁,并且会导致并发吞吐量的明显下降。以下代码实现了一...
浅谈负载均衡
前言面对大量的访问请求与海量的数据,我们可以通过加大单机的性能来实现服务的稳定,还可以考虑拆分系统来防止单机故障。负载均衡(Load Balance)是指将负载(例如访问请求,任务等等)进行平衡分摊到多个服务器或组件上执行,以提高性能,作为单点故障的解决方案。本文将讨论常见的负载均衡分类。 负载均衡分类从实现方式不同,可以分为软件实...
浅谈高并发引起的问题
前言其实在学生时代,基本上是遇不到高并发的架构,真正遇到高并发的问题,往往是在工作之后,我在学生时代所写的很多项目其实跟高并发是一点边都沾不上,但是我依旧学习了许多高并发的知识,希望以后能派上用场。当然,其实脱离了实际去讲述高并发并不是正确的,因为不同的系统架构是不一致的,分析高并发与高可用性需要先分析整体架构再来定夺。本篇文章就是...
浅谈动态规划Ⅱ
前言上次简单讲了动态规划的概念与如何分析,本篇文章就理一理几道常见的典型的动态规划题目。 实践接雨水给定 n 个非负整数表示每个宽度为 1 的柱子的高度图,计算按此排列的柱子,下雨之后能接多少雨水。来自leetcode 42题。这道题目有两种大思路,一种是按行求,一种是按列求。由于我们只讨论动态规划,并且让理解相对简单,我们使用按列...
avatar
Zer0e
耿直的现实主义者 / 喜爱安全的web狗 / 无情的bug制造机器