每日一题之2的幂

2的幂

给定一个整数,编写一个函数来判断它是否是 2 的幂次方。

示例 1:

1
2
3
输入: 1
输出: true
解释: 20 = 1

示例 2:

1
2
3
输入: 16
输出: true
解释: 24 = 16

示例 3:

1
2
输入: 218
输出: false
阅读全文
设计模式十九之观察者模式

观察者模式

观察者模式定义了一个一对多的依赖关系,让多个观察者对象同时监听同一个主题对象。当这个主题状态发生改变时,会通知所有观察者对象,让它们自动更新自己。

场景

  • 聊天室程序的创建。服务器创建好后,A、B、C三个客户端连接好公开聊天。A向服务器发送数据,服务器在将数据分别发送给其他在线客户。也就是说,每个客户端需要更新服务器端的数据。
  • 网站上,很多人订阅了“Java主题”的新闻。当有这个主题新闻时,就会将这些新闻发给所有订阅的人。
  • 大家在玩CS游戏时,服务器需要将每个人的方位变化发给所有的客户。

上面这些场景,我们都可以使用观察者模式来处理。我们可以把多个订阅者、客户称之为观察者;需要同步给多个订阅者的数据封装到对对象中,称之为目标

阅读全文
每日一题之翻转二叉树

翻转二叉树

翻转一棵二叉树。

示例:

输入:

1
2
3
4
5
     4
/ \
2 7
/ \ / \
1 3 6 9

输出:

1
2
3
4
5
     4
/ \
7 2
/ \ / \
9 6 3 1

备注:
这个问题是受到 Max Howell 原问题 启发的 :

谷歌:我们90%的工程师使用您编写的软件(Homebrew),但是您却无法在面试时在白板上写出翻转二叉树这道题,这太糟糕了。

阅读全文
Nginx服务器配置

Nginx服务器配置

Nginx配置文件的整体结构

图1

阅读全文
设计模式十八之状态模式

状态模式

状态(State)模式又称为状态对象模式(Pattern of Objects for State),状态模式是对象的行为模式。状态模式允许一个对象在其内部状态改变时改变其行为,用于解决系统中复杂对象的状态装换以及不同状态下行为的封装问题。

状态和行为

  所谓对象的状态,通常指的就是对象实例的属性的值;而行为指的就是对象的功能,再具体点说,行为大多可以对应到方法上。

​ 状态模式的功能就是分离状态的行为,通过维护状态的变化,来调用不同状态对应的不同功能。也就是说,状态和行为是相关联的,它们的关系可以描述为:状态决定行为

​ 由于状态是在运行期被改变的,因此行为也会在运行期根据状态的改变而改变。

阅读全文
每日一题之用队列实现栈

用队列实现栈

使用队列实现栈的下列操作:

  • push(x) - 元素x入栈
  • pop() - 移除栈顶元素
  • top() - 获取栈顶元素
  • empty() - 返回栈是否为空
阅读全文
Nginx简单使用

Nginx简单使用

简介

​ Nginx是高性能的轻量级WEB服务器,由于其提供HTTP代理和反向代理、负载均衡、缓存等一系列重要特性,从而广泛应用于当今的WEB服务之中。

阅读全文
Docker部署Nginx

Docker部署Nginx

什么是Nginx

​ Nginx(发音为“engine-x”)是用于HTTP,HTTPS,SMTP,POP3和IMAP协议的开源反向代理服务器,以及负载均衡器,HTTP缓存和Web服务器(源服务器)。nginx项目首先关注高并发性,高性能和低内存使用率。它根据类似BSD的2条款许可,可在Linux,BSD变体,Mac OS X,Solaris,AIX,HP-UX以及其他* nix版本上运行。它还具有Microsoft Windows的概念验证端口。

阅读全文
Algolia