摘要:分析一个软件的整体框架,我认为应该从静态和动态两方面入手。静态方面,看它有哪些用例,即有哪些功能模块;动态方面,看主流程如何连接上这些模块 静态方面:分View、Model、Template、Session、Auth、Middleware、Url等几大模块。 动态方面:流程图如下, 这里只包括dja
阅读全文
摘要:sql优化最重要的一点就是要建立合适的索引,据说50%以上的效率问题都是通过这个方法解决。引用国内一位资深的ORACLE专家的话:"我其实只懂点(挨踢)知识,IT里面其实只懂点甲骨文,甲骨文里面其实只懂点数据库,数据库里面其实只懂点SQL,SQL里面其实只懂点索引"sql优化思路:一、从设计上贴近业...
阅读全文
摘要:数据库的设计过程很像程序设计过程,分 需求分析、逻辑设计、物理设计、具体实现四步其中,需求分析和逻辑设计是通用的,而物理设计、实现是跟具体使用的数据库相关。一、需求分析 不细说二、逻辑设计 主要包括 E-R模型图 -〉 表 -〉 范式化 如何画E-R模型图? 1、找出全部实体和属性(名词表示...
阅读全文
摘要:写sql的思路不同于常规编程语言(C、python)等等。前者,考虑如何一步步地得到最终答案;后者,考虑如何一步步地收缩数据范围。简而言之,前者是面向过程化(for each row do x),后者是面向集合(do all -> another all)。具体来讲,写sql从两种角度考虑:一、集合...
阅读全文
摘要:python中支持多继承。当用派生类对象调用函数时,如果派生类有定义该函数,那么它就覆盖基类中的函数class X(object): def __init__(self): print('X')class Z(X): def __init__(self): p...
阅读全文
摘要:生成器是generator,就是指带有关键字yield的函数。它与一般函数不同点在于: 1、函数调用返回迭代子iterator,迭代子可以理解为一系列的值>>> def func():... yield 1...>>> a = func()>>> a 2、迭代子每次只能拿到一个值,若想拿...
阅读全文
摘要:构造函数与普通函数的唯一区别,就在于调用方式。任何函数通过new形式调用,就都是构造函数。原型对象,只要创建了一个函数,那么一定会为这个函数创建一个prototype属性。而这个属性指向的就是原型对象。实例,是new构造函数之后的结果。它会包含一个[[prototype]]属性(该属性无法直接访问)...
阅读全文
摘要:Javascript的变量类型分为 基本类型 和 引用类型。基本类型包括:null、undefined、Boolean、string、number;引用类型就是object基本类型和引用类型的访问方式不同,前者访问的是实实在在的内存地址;后者访问到的是内存地址的引用。var num1 = 5;var...
阅读全文
摘要:VIM的相关字符编码主要有三个参数fencs: 它是一个编码格式的猜测列表。当用vim打开某个文件时,会依次取这里面的编码进行解码,如果某个编码格式从头至尾解码正确,那么就用那个编码fenc:它是指当前文件/新创建文件在磁盘中放置时的文件编码。我们可以用set fenc='xxx'; :w 来修改文...
阅读全文
摘要:_x是一种弱表示,它用在类中的属性或方法,表示是private属性,希望外部使用者不要直接调用它。但它只是暗示,没有任何限制性措施。private属性主要推荐的还是这种方式,因为Python的设计理念有一条 “We are all adults here”__x是会被实现时,会被替换_A__x形式。...
阅读全文
摘要:io函数一般分为两大类:系统(不带缓存)调用: 如read、write、open标准(带缓存)调用: fread、fwrite、fopen上面说的带缓存/不带缓存是针对用户态的,内核态本身都是带缓存的(由操作系统实现)系统调用的流程:当对文件/套接字进行write时,都会先写到内核所设的缓冲存储器。...
阅读全文
摘要:主要依据《HTTP权威指南》总结的。一、http请求流程用户:填写要请求的参数(url、method等等)浏览器:补充部分http关键参数(cookie)、浏览器能力参数(Accept、Accept-Encoding、User-Agent)以及用户未填写参数的默认值(cache-control、pr...
阅读全文