
网络编程
YoungLeoo
生命不息 折腾不止!!!
展开
-
【面试题之算法部分】LCA最近公共祖先
问题描述:给定一棵二叉树T和两个节点u和v,找出u和v离根节点最近的公共祖先。首先我们将这个问题分成三种情况:情况一: 二叉树是二叉查找树。这种情况比较简单,将当前节点初始化为根节点,从当前节点开始,不断将当前节点的值和u节点的值、v节点的值作比较,如果当前节点值同时小于二者,则将当前节点的右孩子作为当前节点,继续比较;如果当前节点值同时大于二者,则将当前节点的左孩子作为当前节点,继续比较;如果当前原创 2015-08-24 16:28:23 · 983 阅读 · 0 评论 -
【Linux系统】内存管理(二)
内核如何管理内存?Linux的进程在内核中是由task_struct来实现的。该结构中有一个mm域指向这个进程所使用的进程描述符——mm_struct。进程描述符描述了虚拟内存的当前状态,它包含了我们感兴趣的两个字段:pgd和mmap,其中pgd指向第一级页表的基址,而mmap指向一个vm_area_struct(区域结构)的链表,其中每个vm_area_struct都描述了当前地址空间的一个区域。原创 2015-08-26 16:37:24 · 821 阅读 · 0 评论 -
【Linux系统】内存管理(一)
内存管理每个进程都有自己的虚拟内存地址空间,32位操作系统下是4GB的内存空间,这些虚拟内存通过页表映射到实际的物理内存,它们被操作系统的内核维护并被处理器使用。每个进程都有自己的页表,一旦虚拟地址被使用,它们会被所有运行在机器上的软件所使用,包括内核自身。因此虚拟地址空间必须留一些给内核专用(Linux下3G~4G的空间),这并不意味之内核使用如此多的物理内存,而只是意味着内核使用该段地址来映射它原创 2015-08-22 16:53:13 · 1394 阅读 · 0 评论 -
【网络编程】简单线程池的原理和实现
一. 什么是线程池?: 诸如web服务器、数据库服务器、文件服务器和邮件服务器等许多服务器应用都面向处理来自某些远程来源的大量短小的任务。构建服务器应用程序的一个过于简单的模型是:每当一个请求到达就创建一个新的服务对象,然后在新的服务对象中为请求服务。但当有大量请求并发访问时,服务器不断的创建和销毁对象的开销很大。所以提高服务器效率的一个手段就是尽可能减少创建和销毁对象的次数,特别是一些很耗资原创 2015-08-12 22:32:14 · 1109 阅读 · 0 评论 -
【网络编程】线程池中各线程的同步
使用pthread_cond_singal需要注意的地方:1,pthread_cond_signal在多处理器上可能同时唤醒多个线程,当你只能让一个线程处理某个任务时,其它被唤醒的线程就需要继续 wait,while循环的意义就体现在这里了,而且规范要求pthread_cond_signal至少唤醒一个pthread_cond_wait上 的线程,其实有些实现为了简单在单处理器上也会唤醒多个线原创 2015-08-14 15:34:06 · 672 阅读 · 0 评论 -
【面试题之算法部分】最长回文子串
暴力法:枚举中心位置 int LongestPalindrome(const char *s, int n){ if(s == NULL || n < 1) return -1; int i, j, k, max = 0; for(int i = 0; i < n; i++) { //回文子串为奇数的情况 for(int j = 0;原创 2015-08-20 23:26:34 · 827 阅读 · 0 评论 -
【Linux系统】进程管理
一.进程的定义和相关的概念进程就是出于执行期的程序和相关资源。包含:代码段、数据段、打开的文件、挂起的信号、内核内部数据、处理器状态、一个或多个具有内存映射的内存地址空间及一个或多个执行线程。线程是进程中活动的对象。每个线程拥有独立的程序计数器、进程栈、一组进程寄存器。操作系统提供两种虚拟机制: 1.虚拟处理器:让进程觉得自己在独享处理器 2.虚拟内存:让进程在分配和管理内存时觉得自己拥有整原创 2015-08-21 22:51:42 · 826 阅读 · 0 评论