关于用指针交换两个数 西邮Linux 兴趣小组又到了纳新季,作为一个老学长,面试学弟学妹们的时候,必然要然他们感受到小组的关怀(受尽折磨),这一届孩子还是挺强的,但是一到指针上就栽了坑,在加上我们小组的陈年老题swap屡试不爽。所以在这里总结一下关于用一级 二级指针交换两个数字的问题。 一级指针交换 #include<stdio.h> int swap(int *c , int *d) { int *q; q = c; c = d; d = q; printf("%d %d\n", *c, *d); } int main () { int a=5, b=10; swap(&a, &b); printf("%d %d\n" , a, b); return 0; } /* 这个得出结果是 10 5 5 10 */ 由结果来看的话,是在 swap 里边是交换成功了的。 这个原因是因为 继续阅读 >>


刘嘉辉 18/12/14 12:08:30
前言: 基于: csdn1 娄神的描述 其实看上面两位大佬的博客就已经ojbk了.写的目地主要是自己总结学习一下. 基础: 1.基础的 WebServer应该支持客户端请求静态文件和动态文件. 2. 浏览器是不能够解析动态的php文件的!那么我们编写服务器程序时候如果遇到请求.php动态文件时就应该将php文件翻译为html文件. 3. php-fpm就能够将php文件翻译为html文件.所以我们的webserver将通过进程间通信把php文件交给php-fpm,然后把php-fpm翻译过后的html文件发给客户端即可,(php-fpm)就等价于一个CGI 服务器. 4.那么我们如何才能让php-fpm帮我们解析我们想要翻译成.html文件的.php文件呢?通过**fastcgi协议,其实就是WebServer与php-fpm之间通信的规则(或者说是'语言')** 1. fastcgi 协议 (1) 请求头    和’任何协议一样,fastcgi协议也有一个消息头或者叫做请求头.其格式是固定的.用以表示 继续阅读 >>


刘生玺 18/12/12 22:34:11
文章目录EventLoop::runInLoop 函数功能eventfd 的使用创建eventfd 示例代码EventLoop::runInLoop源码分析 EventLoop::runInLoop 函数功能 在上一篇博客介绍了 muduo 的核心主循环EventLoop::loop函数, 在 muduo 中, 还有一个十分好用的功能: 可以执行其他线程的任务, 因为平时 IO 线程都阻塞在EventLoop::loop函数的poll函数中, 为了让空闲的 IO 线程也能利用起来, 某一个(IO线程或者其他)线程可以执行一个任务调用EventLoop::runInLoop这个函数, 判断如果当前线程是不是 IO 线程, 如果是就直接执行任务, 不是就添加进任务队列, 并唤醒 IO 线程, 让他执行任务 因为在唤醒 IO 线程时, 用到了 eventfd, 先介绍一下 eventfd eventfd 的使用 eventfd 是linux 2.6.22后系统提供的一个轻量级的进程间通信的系统调用, 可以进 继续阅读 >>


吕子健 18/12/12 21:29:38
文章目录muduo 的 Reactor 模式大概逻辑EventLoop classEventLoop.hEventLoop::loopChannel classChannel.hChannel.ccEpollPoller classPoller class初始化EpollPoller.hEpollPoller.cc 日后的学习中必然会有新的认识, 保持更新系列 muduo 的 Reactor 模式 muduo 中构成 reactor 模式的最核心的三个类是 Channel class, EpollPoller class, EventLoop class, 这三个类负责将 IO 复用拿到的各个类型的事件分发给各个文件描述符对应的事件处理函数 本文假设是在默认使用 epoll 的情况下分析的 大概逻辑 首先调用 EventLoop::loop 函数, 该函数循环调用 EpollPoller::poll 函数, 在poll 函数中会调用epoll_wait函数, 然后EventLoop::lo 继续阅读 >>


吕子健 18/12/12 11:24:53
壹、sds (SDS)Simple Dynamic String, 从字面意思上来简单理解就是简单的动态字符,其为具有动态增加空间的能力,扩容不需要使用者担心。 好的咱们来看一下他的数据结构吧 这个版本是黄所注释的3.0版本 typedef char *sds; //注意,sds其实不是一个结构体类型,而是被typedef的char*,好处见下文 struct sdshdr { unsigned int len; //记录buf中已经使用的长度 等于SDS所保存的字符串的长度 unsigned int free; //buf中未使用的长度 char buf[]; //柔性数组buf }; sds遵循c字符串以空字符结尾的惯例,但是保存空字符的一字节空间不计算在sds的len属性之中,并且为空字符分配额外的一字节空间,使用这一惯例的好处是可直接重用c字符串函数库里面的额函数,这也符合软件工程的思想。 此处应有图(没图你说个毛) 但是在 继续阅读 >>


刘嘉辉 18/12/12 10:44:08
—要配置好一个网络环境,使计算机顺利可以顺利Internet,那么计算机里一定要有IP、netmask、network、broadcast、getway、DNS IP等网络参数才行。 其中 IP、network、netmask、broadcast、gateway、都可以在/etc/sysconfig/netmask-scrips/ifcfg-eth[0-n]这个文件中定义。 DNS服务器的地址则可以在/etc/resolv.conf文件中定义。 那么如果有很多台电脑都需要配置一个网络环境,每台电脑都需要手动如上述配置是否会累死人呢? 我觉得大概不会吧。但是吧,很多很多就不一定了,毕竟懒人推动世界。不胡扯了,开始正文。 DHCP(Dynamic Host Configuration Protocol)服务器配置。 服务器主要的作用,就是实现自动地将网络参数正确的分配给网络中的每台计算机 ,让客户端的计算机可以在开机时就立即自动分配好网络的参数值,这些参数可以是如上网络参数。 DHCP协议的工作方式 其实, 继续阅读 >>


胡锦雲 18/12/11 02:03:10
文章目录前言一、Kaptcha简介二、在项目中使用Kaptcha三、相关参数配置 前言 验证码是防止批量操作和恶意登录最有效的方式之一。所以一个成熟的web项目怎么能少了验证码呢?不过自己编写实现好像对我来说,有点困难阿。不过没关系,我们也可以使用一些比较方便的验证码工具,省时省力。在网上收集一些资料之后,决定使用Kaptcha组件。 一、Kaptcha简介 Kaptcha是一个基于SimpleCaptcha的验证码开源项目,是一个非常实用的验证码生成工具。我们可以利用这个工具根据我们的需求来定制生成各种样式的验证码,真是很人性化了~ 它的工作原理是调用com.google.code.kaptcha.servlet.KaptchaServlet,生成一个验证码图片,响应到客户端,同时将生成的验证码字符串放到HttpSession中。 详情可戳下方链接~ 官方网站:https://code.google.com/archive/p/kaptcha/ github源码地址:https://github.co 继续阅读 >>


贺含悦 18/12/11 01:49:34
前言之前的前言 本文作于11月初,因为开始学车以及跳舞的原因一直静静躺在草稿箱里。最近不那么忙了,赶紧补上了,不然。。。2018就要过去啦~ 前言 最近疯狂刷了几本书,我校图书馆也还是有点东西的,趁着还在学校,趁着最近稍微没有那么忙,有大块的时间看一看闲书。 然而,闲书也不能白读,还是稍微记录下心得体会。 正文 简介 这本书可以看作是作者保罗·格雷厄姆(paul graham)的一系列文章合集,每篇文章相对独立,可以看作是paul的一系列观点。 因为主要是paul的个人观点,所以不得不提到他的个人生平。 他拥有哈佛大学应用科学(计算机方向)博士学位,并在罗德岛设计学院和佛罗伦萨绘画艺术学院学习过绘画。他是第一个互联网应用viaweb的创始人之一,后来被yahoo收购。创立Y Combinator(嘿,如果你不知道这个公司,我建议你查查)。同时,他也是一个Lisp的忠实粉丝。 下面我就以印象最深的几个关键词来展开了 书呆子 这是paul描述学生(大学前)时代的一章,在美国的中学里,最受欢迎的是橄榄球运动员 继续阅读 >>


康艺杰 18/12/10 17:04:10
  单链表以及逆置是什么就不说了,就简单说一下思想: 链表的初始状态: 具体的方法就是将头节点后面的节点,依次通过指针指向,插入head头节点之后,即可完成逆置过程.  示意图(这里我写一下中间处理流程,因为这样比较直观.第一次的处理与正常处理雷同): 需要注意的主要有两点: 1. 逆置之后的链表的尾部要NULL.在这里就是刚开始的时候的pHead->next->next = nullptr,具体可参考实现代码. 2. 当curr指向最后一个节点时,需要特殊处理一下. 实现代码: #include <iostream> using namespace std; template <typename T> struct Node { Node(T t) { data = t; } T data; Node *next; }; template <typename T> class List { 继续阅读 >>


刘生玺 18/12/10 16:39:22
新博客地址:H.Y’s BLOG。 CSDN有可能弃用,最后欢迎大家访问我的小站~ 作者:championhengyi 发表于 2018/12/08 18:41:56 原文链接 https://blog.csdn.net/championhengyi/article/details/84895991 阅读:30 评论:1 查看评论 继续阅读 >>


董恒毅 18/12/08 18:41:56