- 博客(11)
- 资源 (2)
- 问答 (5)
- 收藏
- 关注
原创 大并发服务器架构 && 大型网站架构演变
服务器的三条要求:高性能:对于大量请求,及时快速的响应高可用:7*24 不间断,出现故障自动转移,这叫fail over(故障转移)伸缩性:使用跨机器的通信(TCP)另外任何网络系统结构都可以抽象成C/S架构,我们常说的B/S模式本质上也是C/S架构(浏览器看作客户端)。一个典型的服务器架构:注: epoll是linux下最高效的网络I/O由于服务器需要高效处理
2016-01-30 13:59:54 4515
原创 详解Boost库智能指针(shared_ptr && scoped_ptr && weak_ptr )
我们先来解释一下什么叫智能指针?智能指针是利用RAII(在对象的构造函数中执行资源的获取(指针的初始化),在析构函数中释放(delete 指针):这种技法把它称之为RAII(Resource Acquisition Is Initialization:资源获取即初始化))来管理资源。其本质思想是:将堆对象的生存期用栈对象(智能指针)来管理。也就是当new一个堆对象的时候,立刻用智能指针来接
2016-01-30 10:53:48 4023 1
原创 Linux下FTP服务器的实现(仿vsftpd)
继上一篇博文实现Linux下的shell后,我们进一步利用网络编程和系统编程的知识实现Linux下的FTP服务器。我们以vsftpd为原型并实现了其大部分的功能。由于篇幅和时间的关系,这里不再一一赘述具体的实现过程,而是简要概述功能实现思想和部分核心代码。(一)基本框架和流程先解决两个疑问:(1)为什么要使用nobody进程和服务进程两个进程? 在PORT模
2016-01-24 22:09:15 11447 13
原创 哈希表之开地址法解决冲突
在上一篇博文中,我们讲述了使用链地址法解决冲突的方法。这里我们介绍另一种方式:开地址法解决冲突。基本思想:当关键码key的哈希地址H0 = hash(key)出现冲突时,以H0为基础,产生另一个哈希地址H1 ,如果H1仍然冲突,再以H0为基础,产生另一个哈希地址H2 ,…,直到找出一个不冲突的哈希地址Hi ,将相应元素存入其中。根据增量序列的取值方式不同,相应的再散列方式也不同
2016-01-23 13:20:41 4132
原创 哈希查找之链地址法解决冲突(代码封装实现)
链地址法的基本思想是:将所有哈希地址为i 的元素构成一个称为同义词链的链表,并将链表的头指针存在哈希表的第i个单元中,因而查找、插入和删除主要在同义词链中进行。 该散列方法首先对关键码集合用某一个散列函数计算它们的存放位置。若设散列表地址空间的所有位置是从0到m-1,则关键码集合中的所有关键码被划分为m个子集,具有相同地址的关键码归于同一子集。我们称同一子集中的关键码互为同义词
2016-01-15 22:28:13 6326 1
原创 Linux多线程实践(六)使用Posix条件变量解决生产者消费者问题
前面的一片文章我们已经讲过使用信号量解决生产者消费者问题,那么什么情况下我们需要引入条件变量呢?这里借用 http://www.cnblogs.com/ngnetboy/p/3521547.html 的解释:假设有共享的资源sum,与之相关联的mutex 是lock_s.假设每个线程对sum的操作很简单的,与sum的状态无关,比如只是sum++.那么只用mutex足够了.程序员只要确
2016-01-15 18:03:22 3747
原创 单片机远程控制步进电机、LED灯和蜂鸣器
通过采用C#语言实现的上位机控制单片机的步进电机模块、LED灯和蜂鸣器模块,使步进电机进行正、反转和停止并控制转速;LED灯模块进行有选择的呼吸式表达;蜂鸣器模块的开始和终止。上位机通过串口和自定义的通信协议(8字节)控制单片机的步进电机、LED灯和蜂鸣器模块。其中在控制步进电机的过程中,为了使操作能够及时响应,使用了INT0中断来进行及时性速度响应;LED灯使用位运算控制灯的闪烁位置,合
2016-01-09 10:08:06 6111 1
原创 单片机: 基于SIM900A的温度报警通信系统
帮室友做的一个简单的单片机实验: 使用热敏电阻测温,当温度超过34摄氏度之后就会向指定手机拨打报警电话。硬件要求: STC89C52单片机,SIM900A GSM模块,价格都在60元左右;另外还需要3根杜邦线,一个SIM卡(移动/联通)仔细查看用户手册,按照下图连线:另外我们使用TTL电平,注意以下问题:好了,硬件连接完毕。单片机的代码没啥好说的,以前做
2016-01-04 20:47:58 6626 4
原创 Linux多线程实践(五 )Posix信号量和互斥锁解决生产者消费者问题
一点区别:system v 信号量只能用于进程间同步,而posix 信号量除了可以进程间同步,还可以线程间同步。system v 信号量每次PV操作可以是N,但Posix 信号量每次PV只能是1。除此之外,posix 信号量还有命名和匿名之分(man 7 sem_overview):Posix 信号量有名信号量无名信号量
2016-01-03 19:24:35 5335
原创 Linux多线程实践(四 )线程的特定数据
在单线程程序中,我们经常要用到"全局变量"以实现多个函数间共享数据, 然而在多线程环境下,由于数据空间是共享的,因此全局变量也为所有线程所共有。但有时应用程序设计中有必要提供线程私有的全局变量,仅在某个线程中有效,但却可以跨多个函数访问。POSIX线程库通过维护一定的数据结构来解决这个问题,这个些数据称为(Thread-specific-data或 TSD)。相关函数如下:int pthr
2016-01-02 21:30:56 13258 2
原创 Linux多线程实践(三)线程的基本属性设置API
POSIX 线程库定义了线程属性对象 pthread_attr_t ,它封装了线程的创建者可以访问和修改的线程属性。主要包括如下属性:1. 作用域(scope)2. 栈尺寸(stack size)3. 栈地址(stack address)4. 优先级(priority)5. 分离的状态(detached state)6. 调度策略和参数(sc
2016-01-01 18:14:59 3288
python的pandas模块画图时中文显示不完全
2016-05-06
研发工程师面试只问算法?
2016-01-17
多线程的疑问?????
2016-01-12
客户端和服务端的数据交互?
2015-11-25
Ftp服务器可以使用多线程吗?
2015-11-22
TA创建的收藏夹 TA关注的收藏夹
TA关注的人