杨辉三角蕴含的编程哲学

Pbulished On 十二月 07, 2017

这是一道非常妙的面试题,并没有涉及到动态规划等比较复杂的算法,但是通过手写代码却可以区分出面试者的水平,尤其是在工作中编程的素养。应届生往往会认为这是一道送分题,不假思索的给出答案,结果却漏洞百出;水平一般的程序员则会考虑到一些边界情况的处理,从而保证功能的正确性;而久经沙场的程序员,不仅知道哪里需要优化,还会考虑到程序在线上环境运行的健壮性。

源码地址

问题

我们从小学就接触过的杨辉三角,在国外被称为帕斯卡三角形(Pascal's …

Read more »


集群环境下安装python应用最佳实践

Pbulished On 十二月 05, 2017

在线上部署python应用,有两个难题,一是不同的应用依赖的环境不同,比如python版本,依赖包/模块/库的版本;二是要安装的服务器太多的话从pypi下载速度慢,并且容易失败。本文介绍我在工作中是如何解决这两个问题的,向大家分享批量安装python应用的一些经验。

注:以下操作的前提是保证测试环境和线上环境的操作系统相同。

将python应用制作成包

一个典型的python应用的目录结构如下:

» tree foo
.
├── foo
│   ├── __init__.py
│   └── app.py
└── setup.py

foo/app.py

from __future__ import print_function
import sys
import requests

def download …

Read more »


查看linux的配置

Pbulished On 十月 27, 2017

对于需要关注系统性能的运维或者测试者来说,了解linux环境的系统版本、内存、CPU、硬盘和网卡等各种配置信息至关重要,对于工作在linux平台上的开发者来说同样很有必要。本文盘点了linux上查看系统配置的常用命令,希望对大家有帮助。

系统版本

Linus Torvalds发明了linux内核并一直维护至今,我们所用的linux都是基于这个内核的某个发行版。linux有很多发行版 …

Read more »


python面向对象编程(OOP)

Pbulished On 十月 15, 2017
oop

本教程并不是泛泛地讲面向对象编程的概念,而是深入python中使用面向对象编程的技术,所以需要读者预先对面向对象有了解。 不需要使用类,python就可以做很多事情了。然而对于类库开发者,掌握面向对象编程的技术很有必要。 我们什么时候会使用面向对象编程?

  1. 当需要将某些数据和操作包装起来的时候
  2. 为了代码重用,避免冗余,易于维护

python是一门面向对象的编程语言,不仅如此,python里一切都是对象。整数、字符串、列表、函数、类都是对象,甚至模块(module)、类型(types)也是对象,像普通对象一样,它们有类型、方法和属性,可以作为函数的参数或表达式的操作数。

与c++相比,python作为动态类型的脚本语言,面向对象的使用要简单得多。与java这种纯面向对象的语言相比,python并不是只有面向对象这一种编程范式,在一个python项目中使用很少的面向对象机制也是完全可行的。例如python的模块就是天然的对象,提供了一种封装的功能,很多python项目就是由一个一个模块组成,模块内部直接定义函数和变量。

面向对象的三大特征分别是:封装、继承和多态,本文首先从这三个特征入手介绍python类编写的基础,然后深入类的组成,介绍属性和方法的高级用法,以及它们的访问控制,最后分别介绍了继承的高级特性和元类的用法。

Read more »


Newer →

qq email facebook github
© 2018 - 晏旭瑞. All rights reserved
Built using pelican