- 博客(15)
- 收藏
- 关注
原创 XV6操作系统 学习笔记(源代码共9100行)
1. 说明: 此文用来记录学习xv6过程中收集的一些资料。2. 代码片段asm 伪指令define SEG_NULLASM \ .word 0, 0; \ .byte 0, 0, 0, 0说明:.word 就地生成一个指定长度的数, .byte就地生成一个字节的数。上述代码生成两个字长度的数,接着生成4个字节的数。3. 资料保护模式
2016-03-29 23:09:12 5535 2
原创 2016阿里云实习面经
0. 准备工作1. 一面一面加起来一共30+分钟, 主要是围绕项目问一些问题。面: 聊聊你做的第一个项目frog我: 主要说了 1. 做这个项目的原因(需求) 2. 项目中使用的相关技术 3. 自己通过做这个项目学到了什么东西 4. 认识到了自己的一些不足和开源的魅力。 注: frog 是笔者写的一个http 库,代码托管在 https://github.com/okingniko/fr
2016-03-26 11:41:56 4229 4
原创 轻松撰写功能规格书
0. 前言功能规格书从使用者的角度,完整描述了产品的行为。其中并不涉及具体的实现方式。它只介绍功能,描述界面、菜单和对话框等。1. 主体内容负责声明 完全出于自我保护的目的。作者使用场景 设计一个产品时,你需要对真实的使用场景,也就是人们怎样使用这个产品,做到心中有数。场景越是生动、逼真,你设计的产品就越适合用户使用。非目标 项目管理者必须从一开始就修剪功能特性,最好的方法就是在规格书
2016-03-22 22:14:06 1061
原创 排序算法之Bubble sorts and variants
0. 前言Simple Sorts包括两种排序算法: 选择排序(Selection sort) 和 插入排序(Insertion sort)。代码基于C++11编写,编译器使用g++4.9.2 版本。测试数据集使用导论中提供的程序生成。测试使用导论中提供的测试框架,加入相关的头文件,并进行相关算法调用(具体可参见插入排序中的测试源代码)。1. 冒泡排序(Bubble sorts)1.1
2016-03-17 15:52:52 355
转载 http_load的安装和使用
1. 简介http_load以并行复用的方式运行,用以测试web服务器的吞吐量与负载。但是它不同于大多数压力测试工具, 它可以以一个单一的进程运行,一般不会把客户机搞死。还可以测试HTTPS类的网站请求。下载:http://acme.com/software/http_load/2. 安装:解压后只要 make , make install 就行了环境: 需要gcc 如果是在服务器上安装的话还需
2016-03-12 12:24:00 656
原创 排序算法之Efficient sorts
0. 前言Efficient sorts包括两种排序算法: 归并排序(Merge sort) 、 堆排序(Heap sort) 、快速排序(Quick sort)。代码基于C++11编写,编译器使用g++4.9.2 版本。测试数据集使用导论中提供的程序生成。测试使用导论中提供的测试框架,加入相关的头文件,并进行相关算法调用(具体可参见插入排序中的测试源代码)。
2016-03-09 13:23:10 566
原创 排序算法之Simple Sorts
0. 前言Simple Sorts包括两种排序算法: 选择排序(Selection sort) 和 插入排序(Insertion sort)。代码基于C++11编写,编译器使用g++4.9.2 版本。测试数据集使用导论中提供的程序生成。测试使用导论中提供的测试框架,加入相关的头文件,并进行相关算法调用(具体可参见插入排序中的测试源代码)。1. 插入排序(Insertion sort)1.1
2016-03-08 21:21:22 489
原创 排序算法之导论
1. 概念在计算机科学与数学中,一个排序算法(Sorting algorithm)是一种能将一串数据依照特定排序方式进行排列的一种算法。最常用到的排序方式是数值顺序以及字典顺序。有效的排序算法在一些算法(例如搜索算法与合并算法)中是重要的,如此这些算法才能得到正确解答。排序算法也用在处理文字数据以及产生人类可读的输出结果。基本上,排序算法的输出必须遵守下列两个原则: 输出结果为递增序列(递增是针
2016-03-08 21:06:34 541
原创 实现一个同步的并发型TCP服务器
1. 相关定义同步: 使用会阻塞线程执行的I/O和控制操作,该阻塞会持续到相关操作完成或有错误产生并发型: 服务器可以同时处理多个客户端请求2. 基本流程分配一个acceptor套接字并将其绑定到一个特定的TCP端口上.服务器执行以下的循环直至停止: 等待客户端的连接请求接受客户端的连接请求(会发生tcp的三次握手)产生(spawn)一个控制线程,在这个线程的上下文中: 等待客户端
2016-03-06 10:00:30 536
原创 实现一个同步的迭代型TCP服务器
1. 相关定义迭代型服务器: 服务器每次只处理一个客户端,只有当完全处理完一个客户端的请求才去处理下一个客户端同步: 使用会阻塞线程执行的I/O和控制操作,该阻塞会持续到相关操作完成或有错误产生2. 基本流程分配一个acceptor套接字,并将其绑定到一个特定的TCP端口。执行以下循环直至服务器停止 等待客户端的连接请求(connect)当客户端的请求到达时,接受(acc
2016-03-05 23:16:26 504
原创 线程池的那些事儿
1. 什么是线程池线程池是一种多线程处理技术。线程池先创建好若干线程,并管理这些线程。当有新的任务到来时,将任务添加到一个已创建的空闲线程中执行。线程池所创建的线程优先级都是一样的,所以需要使用特定线程优先级的任务不宜使用线程池。2. 线程池的优点和应用线程池统一管理线程的方式减少了频繁创建和销毁线程的系统调度开销,很大程度上提高了服务器处理并发任务的性能。线程池适用于频繁的任务调度,如处理HT
2016-03-03 17:22:04 461
原创 死锁的那些事儿
关于死锁死锁的定义: 如果一个进程集合中的每个进程都在等待只能由该进程集合中的其他进程才能引发的事件,那么,该进程集合就是死锁的。产生死锁的四个必要条件 互斥条件: 每个资源要么已经分配给一个进程,要么就是可用的。占用和等待条件: 已经得到某个资源的进程可以再请求新的资源。 不可抢占条件: 已经分配给一个进程的资源不能强制性的被抢占,它只能被占有他的进程显式地释放。环路等待条件:
2016-03-03 10:22:12 557
原创 Effective C++ 条款总结
CHARPTER1. 让自己习惯C++条款01: 视C++为一个语言联邦条款02: 尽量以const, enum, inline 替换 #define条款03: 尽可能使用const条款04: 确定对象被使用前已先被初始化CHAPTER2. 构造/析构/赋值运算条款05: 了解C++默默编写并调用哪些函数条款06: 若不想使用编译器自动生成的函数,就该明确拒绝条款07: 为多态基类声明virtual
2016-03-02 13:26:03 533
原创 boost.asio之异步编程
异步的需求同步编程比异步编程简单很多。这是因为,线性的思考是很简单的(调用A,调用A结束,调用B,调用B结束,然后继续,这是以事件处理的方式来思考)。后面你会碰到这种情况,比如:五件事情,你不知道它们执行的顺序,也不知道他们是否会执行!尽管异步编程更难,但是你会更倾向于选择使用它,比如:写一个需要处理很多并发访问的服务端。并发访问越多,异步编程就比同步编程越简单。假设:你有一个需要处理1000个并发
2016-03-02 11:13:39 1909
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人