Sunnylunch-blog

介绍c/c++基础知识,介绍一些项目。

排序:
默认
按更新时间
按访问量

lua学习笔记——文件I/O

1、lua中的文件I/O lua的文件I/O有两种模式,分别是简单模式和完全模式,他们的区别如下: 简单模式:只有一个默认输入文件和一个默认输出文件,并且提供对这些文件的操作。 完全模式:使用外部的文件句柄来实现。它以一种面向对象的形式,将所有文件操作定义为文件句柄的方法。完全模式...

2017-11-19 16:12:20

阅读数:667

评论数:0

lua学习笔记——coroutine

1、什么是协同程序 Lua中的协同程序(coroutine)与线程比较类似,拥有独立的堆栈,独立的局部变量,独立的指令指针,同时又与其它协同程序共享全局变量和其他大部分东西。 协同程序与线程的区别: 线程与协同程序的主要区别在于,一个具有多个线程的程序可以同时运行几个线程,而...

2017-11-15 15:49:48

阅读数:368

评论数:0

lua学习笔记——元表(Metatable)

1、什么是元表 table是lua中一个重要的数据结构,我们可以访问table内的值,但是却无法对两个table进行操作。因此lua提供了元表(Metatable),允许我们改变table的行为,每个行为关联了对应的元方法。 元表就类似于C++中的运算符重载,可以对类对象进行操...

2017-11-07 17:38:18

阅读数:847

评论数:0

lua学习笔记—table

1、什么是table table是lua的一种数据结构,可以用来创建数组或映射。lua中的table使用的是关联型数组。关联数组的key值可以是除过nil之外任意类型的值。table的大小是不固定的,可以自己进行扩容。2、如何构造table 可以使用”{}”来构造一个空表,...

2017-10-28 17:44:08

阅读数:508

评论数:0

lua学习笔记(1)

一、table Table=数组+映射 在lua中,table是数组和映射为一体的数据类型,table既可以当做数组使用,也可以当做映射来使用。1、声明一个table类型 用花括弧{}来声明一个table 例:a={}2、table的赋值 table可以在定义的时候直接赋值,例...

2017-10-27 20:56:04

阅读数:861

评论数:0

lua中的闭包

1、在了解lua中的闭包之前,我们先来看一个栗子!!! 在上述例子当中,我们用lua的闭包实现了一个计数器。如果之前没有了解过闭包的概念的话,你一定会对上述代码的结果感到奇怪,下面我们就来详细的解释一下闭包。2、第一类值(First class value ) lua中的函数就是所谓的”第...

2017-10-19 21:17:21

阅读数:799

评论数:1

require和dofile的区别

1在lua中require和dofile都是用来加载和执行模块的,那么他们有什么不同呢???差异: 在加载一个.lua文件的时候,require会先在package.loaded中查找此模块是否存在,如果存在则直接返回模块,如果不存在,则加载此模块。 dofile会对读入的模块编译执...

2017-10-18 14:35:15

阅读数:803

评论数:0

session和cookie学习

1、什么是cookie和session http协议是一种无状态的协议,浏览器对服务器的每一次请求都是独立的。为了使得web能够产生一些动态信息,就需要保存”状态”,而cookie和session机制就是为了解决http协议无状态而产生。cookie是一种在客户端保存状态的方案,sess...

2017-08-03 21:44:03

阅读数:584

评论数:0

跳表分析与实现

一、什么是跳表 跳表全称叫做跳跃表,简称跳表。跳表是一个随机化的数据结构,可以被看做二叉树的一个变种,它在性能上和红黑树,AVL树不相上下,但是跳表的原理非常简单,目前在Redis和LeveIDB中都有用到。 在对有序顺序表进行搜索时,使用二分查找时间复杂度是O(l...

2017-07-11 21:54:08

阅读数:3478

评论数:0

剖析tinyhttpd服务器

tinyhttpd是一个小型的http服务器,虽然小但是功能也多,剖析tinyhttpd有助于理解http服务器的工作流程,加深对web服务器的认识。 一、原理图 二、源码剖析 下面是tinyhttpd的源码,自己对它进行了剖析,并对绝大多数内容加上了注释。#include <stdi...

2017-07-07 13:09:27

阅读数:708

评论数:0

STL之set相关算法

STL一共提供了四种set相关的算法,分别是并集(union),交集(intersection),差集(difference),和对称差集(symmetric difference)。 STL的这四个算法所接受的set必须是有序区间,元素可以重复出现。即他们只能接受set/multiset容器作...

2017-07-06 21:53:41

阅读数:833

评论数:0

(socks5)服务器代理模型

一、什么是GFW 防火城墙(GFW)是由原北邮校长设计出来的,GFW将国内的网络屏蔽起来了,所以整个国内的网络就像一个大的局域网,我们是不能够直接访问墙外的网站的。 二、GFW的原理 GFW能够屏蔽网络主要从以下几个方面入手。 IP封锁:IP封锁是指GFW维护的一张...

2017-06-19 14:21:49

阅读数:1708

评论数:0

工厂模式

工厂模式大致可以分为三类: 1、简单工厂模式 2、工厂方法模式 3、抽象工厂模式。 这三种模式逐步抽象,并且更具有一般性。 工厂模式有一种非常形象的描述,建立对象的类就像一个工厂,而需要被建立的对象就是一个个产品,在工厂中加工产品,使用产品的人不用关心产品是如何生产出来的。在软件中使用工...

2017-06-12 21:31:17

阅读数:1109

评论数:0

单例模式

一、什么是单例模式 有时候我们会遇到这样一种情况,一个类只能有一个对象被实例化,这时我们就可以使用单例模式了。 单例模式通过类本身来管理其唯一实例。在设计这个类的时候,让他只能创建一个实例并提供对此实例的全局访问。因此单例模式有两个最基本的条件是,确保一个类只有一个实例被创建,...

2017-06-11 14:35:02

阅读数:563

评论数:0

ftp服务器实现

在模拟实现FTP服务器之前,我们先来了解一下有关FTP的功能以及工作原理。一、什么是FTP ftp(File Transfer Protocol)文件传输协议。ftp是应用层协议,基于C/S结构,底层使用TCP/IP协议来保证可靠性。 ftp使得主机间可以共享文件,简单来说就是...

2017-06-09 22:59:36

阅读数:2536

评论数:2

LRU缓存策略设计

一、什么是LRU缓存策略 LRU(Least Recently Used)近期最少使用算法。它的原理就是,缓存一定量的数据,当缓存数量超过设置的阈值时就删除一部分旧的数据。 那么我们怎样判定旧数据呢???根据局部性原理,距离当前最久没有被访问过的数据应该被淘汰。二、LRU缓...

2017-06-02 11:53:28

阅读数:1152

评论数:2

大数运算

一、为什么要有大数运算 在C/C++编程语言中,整型的最大存储类型是long long类型,大小是8个字节,一但超出这个范围,则就无法用编程语言的内置类型存储。因为编程语言的存储范围有限,所以它不能满足较大规模的高精度的计算,于是就产生了大数运算这种方法。二、大数运算原理 由...

2017-05-31 18:47:14

阅读数:874

评论数:0

半同步/半反应堆线程池

一、什么是线程池 线程池是服务器预先创建的一组线程,这些线程运行着相同的代码,并具有相同的属性。当有新的任务到来的时候,主线程通过某种方式选择线程池中的某一个线程来为之服务,服务完之后又放回线程池中。二、为什么要有线程池 相比于动态创建线程来说,线程池可以提高速度。因为线程的...

2017-05-28 21:21:04

阅读数:956

评论数:0

两种高效的并发模式

并发编程的目的是让程序”同时”执行多个任务。如果程序是计算密集型的,并发编程并没有什么优势,反而由于任务的切换使效率降低。但如果程序是I/O密集型的,那就不同了。 I/O操作通常分为两个阶段,即等待和数据搬迁,通常等待所花费的时间比较多。而I/O操作的速度远远低于CPU的计算速度,所以...

2017-05-25 15:01:07

阅读数:1007

评论数:0

Reactor模式和Proactor模式

一、Reactor模式(反应器模式) 1、Reactor模式的特点 Reactor用于同步I/O,同步是指用户进程触发IO操作并等待或去轮询的查看I/O操作是否就绪,如果事件就绪的话需要应用程序自己读取或写入数据。(Reactor模式需要用户自己进行I/O操作)。 并发系统常...

2017-05-25 09:41:18

阅读数:798

评论数:0

提示
确定要删除当前文章?
取消 删除
关闭
关闭