C++常用编程技术

[TOC] C++常用编程技术函数 函数定义 函数重载 C++允许同一函数名定义多个函数,但这些函数必须参数个数不同或类型不同,这就是函数重载 123456789int min (int a, int b) { return a < b ? a:b;}int min (long long a, long long b) { return a < b ? a:b;}int min (int a, int b, int c) { // something}

Continue Reading →

数据库系统原理

[TOC] 数据库系统原理事务事务指满足ACID特性的一组操作,可以通过commit 提交,也可以通过rollback回滚 事务的ACID特性 原子性(Atomicity) 事务被视为不可分割的最小单元,事务的所有操作要么全部成功提交,要么全部失败回滚,回归可以使用回滚日志来实现,回滚事务记录着执行的修改操作,回滚时反向执行即可 一致性(Consistency) 数据在事务的执行前后都保持一致性状态,在一致性状态下,所有事务对一个数据的读取结构都是相同的 隔离性(Isolation) 一个事务所做的修改在最终提交以前对其他事务不可见 持久性(Durability) 一旦事务提交,则其所做修改会永远保存到数据库中,即使系统崩溃事务执行结果也不能丢失,使用重做日志来保障持久性

Continue Reading →

操作系统之文件

[TOC] 内存部分虚拟内存虚拟内存的概念内存管理中进程有如下特征: 一次性:作业必须一次性全部装入内存后才能开始运行 驻留性:作业被装入内存后驻留在内存中,任何部分都不会被唤出直至作业结束 局部性原理 高速缓存是计算机科学中唯一重要的思想。事实上告诉缓存技术极大的影响了计算机系统的设计 -- Bill Joy「SUN 公司 CEO」 时间局部性: 如果程序某条指令一旦执行,不久之后可能会再次被执行;如果某个数据被访问过,不久以后它可能再次被访问 空间局部性:一旦程序访问某个储存单元,不久之后其附近的单元也将被访问。

Continue Reading →

数据库之SQL

[TOC] SQL初级SQL概览SQL最早版本是由IBM开发的,最初被叫做Sequel。其发展至今被称为SQL(结构化查询语言),最新的SQL标准是SQL:2008 SQL语言有以下部分: 数据定义语言(DDL) 数据操纵语言(DML) 完整性 保存在数据库中的数据必须满足完整性约束 视图定义 事务控制 嵌入SQL和动态SQL 授权

Continue Reading →

操作系统之进程

[TOC] Introduction本节总结了操作系统的相关概念,操作系统的知识点基本上是围绕着进程展开。 进程进程的概念与特征 进程是程序的一次执行 进程是一个程序及数据在处理机上顺序执行时所发生的活动 进程是系统进行资源分配和调度的一个独立单位。进程的独立运行由进程控制块(PCB)控制和管理。程序段、相关数据、PCB三部分构成了进程映像。进程映像是静态的进程。 进程具有动态性(有着创建、活动、暂停、终止等过程,具有生命周期)、并发性(多个进程在一段时间内同时运行)、独立性(进程是一个独立运行、获得资源和接收调度的基本单位)、异步性(进程按照独自的、不可预知的速度前进)、结构性(每个进程都有一个PCB对其描述)

Continue Reading →

HTTP

HTTPHTTP方法客户端发送的请求报文第一行包含了方法字段 GET 获取资源,绝大多数请求是GET方法 HEAD 获取报文首部,和get方法一样但是不返回报文实体部分。主要用户URL有效性及资源更新日期时间 POST POST主要用来传输数据 PUT 上传文件(由于本身不带验证机制,存在安全机制一般不用) PATCH 部分修改资源 DELETE 与PUT功能相反,同样不带验证机制 OPTIONS 查询URL支持的方法 CONNECT 要求在与代理服务器通信时建立隧道,使用SSl和TSL TRACE 追踪路径,服务器会把通信路径返回客户端(通常不会用,易受攻击)

Continue Reading →

Python测试

测试测试指通过运行程序以确定它是否按预期工作。我们通常需要将代码和规范结合起来,进行各种路径探索,并在基础上探究一种启发式方法。基于代码探索的路径启发式方法称为白盒测试,基于规范路径的启发式方法称为黑盒测试 测试一般分为两个阶段。第一个阶段称为单元测试。这个阶段测试者构建并执行测试,来确定代码每个独立单元是否正常工作。第二个阶段称为集成测试,用来确定整个程序是否能按预期进行。实际工作中需要不断重复这两个阶段 调试是一种需要学习的技能,好消息是学会调试并不难 人们至少花费了40年建立被称为‘调试器’的工具,所有流行的Python IDE中都带有调试器工具,这些调试工具帮助人们找到程序中的错误,但事实上帮助并不大。更重要的是接近问题,经验丰富的程序员可能根本不用调试工具,也许他们认为最重要的调试工具是 print()

Continue Reading →