IO模型

Linux下的系统调用recv ,用于从套接字上接收一个消息,调用时会从用户进程空间切换到内核空间运行一段时间再切换回来。

阻塞IO模型(bloking IO)

一直等数据直到拷贝到用户空间,这段时间内进程始终阻塞。这种方式是同步的。

同步非阻塞IO(non-blocking IO)

不管有没有数据都直接返回,防止进程阻塞,如果没有数据可用的情况过一段时间之后再进行尝试

IO复用模型(multiplexing IO)

信号驱动式IO(signal-driven IO)

异步IO(asynchronous IO)

文章链接 https://fangzongzhou.github.io/2018/07/10/计算机/操作系统/IO模型/

标准库概览2

第二部分涵盖了更高阶的模块,支持更专业的编程需求,这些模块很少出现在小的脚本中。

格式化输出

reprlib 提供一系列repr() 对很大或深度层叠的容器进行定制化的压缩展示。

1
2
import reprlib
reprlib.repr(set('supercalifragilisticexpialidocious'))

pprint 提供更成熟的控制,将内建对象和用户定义对象更易读地打印出来,当结果长于一行时,”pretty printer”添加行数和缩进来将数据结构更清楚地展现出来。

1
2
3
4
5
import pprint
t = [[[['black', 'cyan'], 'white', ['green', 'red']], [['magenta',
'yellow'], 'blue']]]

pprint.pprint(t, width=30)

Read More

标准库概览

操作系统接口

os 模块提供一系列与操作系统进行交互的函数。

1
2
3
4
5
6
import os
os.getcwd() # 返回当前工作目录

os.chdir('/server/accesslogs') # 修改当前工作目录
os.system('mkdir today') # 在系统shell中运行mkdir命令

确保使用 import os 而不是 from os import * .它将导致os.open()覆盖隐式内建函数open(),它们是完全不同的.

诸如os等大模块工作时,一些内建函数dir() , help()的交互式帮助是很有用的.

1
2
3
4
import os
dir(os)

help(os)

Read More

npm

info

1
2
3
4
5
6
7
8
npm -v //查看版本
sudo npm install npm@latest -g 更新
npm login
npm whoami




install local packages

1
2
3
npm install npm@next -g
npm install <package_name>
require('qr-image');

package.json

必要参数

  • name
  • version

create

1
npm init

modify

1
2
3
npm set init.author.email "wombat@npmjs.com"
npm set init.author.name "ag_dubs"
npm set init.license "MIT"

.npm-init.js

1
2
3
4
5
6
~/.npm-init.js

module.exports = {
customField: 'Custom Field',
otherCustomField: 'This field is really cool'
}

Running npm init with this file in your home directory would output a package.json that included these lines:

1
2
3
4
{
customField: 'Custom Field',
otherCustomField: 'This field is really cool'
}

-

dependencies

These packages are required by your application in production.

1
npm install <package_name> [--save-prod]

-

devDependencies

These packages are only needed for development and testing.

1
npm install <package_name> --save-dev

update local package

1
run npm update in the same directory as the package.json file of the application that you want to update

Uninstall Local Packages

1
2
npm uninstall lodash
npm uninstall --save lodash

Global Packages

1
2
3
4
5
6
7
8
9
npm install -g <package>
npm update -g <package>
// 查看需要升级的全局包
npm outdated -g --depth=0
//更新所有包
npm update -g

npm install npm@latest -g
npm uninstall -g <package>

create nodejs model

  • creating a package.json file

Publish & Update a Package

1
2
npm publish
npm version patch|minor|major

Update the Read Me File

before Update the readme file , must update version ,it mean your version is a Snapshot

文章链接 https://fangzongzhou.github.io/2018/07/05/计算机/技术栈/前端/npm/

用户激活

产品生命周期

很多时候用户的流失仅仅就是因为遗忘,小到一个活动,大到一个品牌,一个产品被大多数人遗忘就代表着生命周期的结束。

如何激活用户

反馈

用户所进行的操作需要得到准确及时的反馈,通过延时方法妄想获取用户更多的留存时间是不明智的行为。即使是本身要进行等待的行为活动也需要通过推送等方式及时通知进度状态。我们要获取用户时间,而不是浪费用户时间。

Read More

修饰者模式

给一个类或对象增加行为

  • 继承机制,使用继承机制是给现有类添加功能的一种有效途径,通过继承一个现有类可以使得子类在拥有自身方法的同时还拥有父类的方法。但是这种方法是静态的,用户不能控制增加行为的方式和时机。
  • 关联机制,即将一个类的对象嵌入另一个对象中,由另一个对象来决定是否调用嵌入对象的行为以便扩展自己的行为,我们称这个嵌入的对象为装饰器(Decorator)

定义

装饰模式(Decorator Pattern) :动态地给一个对象增加一些额外的职责(Responsibility),就增加对象功能来说,装饰模式比生成子类实现更为灵活。其别名也可以称为包装器(Wrapper),与适配器模式的别名相同,但它们适用于不同的场合。根据翻译的不同,装饰模式也有人称之为“油漆工模式”,它是一种对象结构型模式。

结构

  • Component: 抽象构件
  • ConcreteComponent: 具体构件
  • Decorator: 抽象装饰类
  • ConcreteDecorator: 具体装饰类

使用场景:

  • 需要扩展一个类的功能,或给一个类增加附加功能
  • 需要动态地给一个对象增加功能,这些功能可以再动态地撤销
  • 需要为一批的兄弟类进行改装或加装功能,当然是首选装饰模式

文章链接 https://fangzongzhou.github.io/2018/07/05/计算机/设计模式/结构型模式/修饰者模式/

分时操作系统

使一台计算机同时为几个、几十个甚至几百个用户服务的一种操作系统。将系统处理机时间与内存空间按一定的时间间隔,轮流地切换给各终端用户的程序使用。

基本思想

  • 时间片 :是把计算机的系统资源(尤其是 CPU时间)进行时间上的分割,每个时间段称为一个时间片,每个用户依次轮流使用时间片。
  • 分时技术:把处理机的运行时间分为很短的时间片,按时间片轮流把处理机分给各联机作业使用。
  • 分时操作系统:是一种联机的多用户交互式的操作系统。一般采用时间片轮转的方式使一台计算机为多个终端服务。对每个用户能保证足够快的响应时间,并提供交互会话能力。
  • 设计目标: 对用户的请求及时响应,并在可能条件下尽量提高系统资源的利用率。

    Read More

工厂模式

定义:Defineaninterfaceforcreatinganobject,butletsubclassesdecidewhichclasstoinstantiate.FactoryMethodletsaclassdeferinstantiationtosubclasses.(定义一个用于创建对象的接口,让子类决定实例化哪一个类。工厂方法使一个类的实例化延迟到其子类。)

定义

简单工厂模式(Simple Factory Pattern):又称为静态工厂方法(Static Factory Method)模式,可以根据参数的不同返回不同类的实例。简单工厂模式专门定义一个类来负责创建其他类的实例,被创建的实例通常都具有共同的父类。

结构

Factory

负责实现创建实例对象

Product

抽象的对象,定义实例的公共部分

ConcreteProduct

具体的创建对象,所有需要Factory创建的对象都属于该部分。

优点

  • 简化业务方创建成本,简化创建流程
  • 独立化了对象的创建,实现了系统的责任分割

缺点

  • 拓展困难,一旦需要添加新的目标对象需要直接修改原有代码
  • 逻辑复杂,相关类创建的逻辑需要进行把控
  • 新的对象创建逻辑异常可能直接导致旧有对象创建失败

使用场景

  • 需要工厂创建的对象较少,不会导致创建逻辑太过复杂
  • 调用方不关心如何创建对象