Welcome 微信登录
编程资源 图片资源库 蚂蚁家优选 PDF转换器

首页 / 操作系统 / Linux

C++ 友元关系详解

C++ 友元关系详解

在C++中,在某些情况下,允许特定的非成员函数访问一个类的私有成员,同时仍然阻止一般的访问,这是很方便做到的。例如,被重载的操作符,如输入或输出操作符,经常需要访问类的私有数据成员。这些操作符不可能为类的成员。然而,尽管不是类的成员,它们仍是类的“接口的组成部分”。而友元机制,允许一个类将对其非公有成员的访问权授予指定的函数或类。友元的声明以关键字 friend 开始。它只能出现在类定义的内部。友元声明可以出现在类中的任何地方:友元...
Linux C编程实战之路

Linux C编程实战之路

由于C语言是进入Linux开发,尤其是Linux底层开发的必备技能,因此掌握C语言也成为很多想从事Linux相关开发工作的朋友的一道坎,C语言较之其他编程语言,特点是简洁高效,没有过多冗余鸡肋的概念,本博客打算用连载的方式,将Linux下的C语言编程所涉及的所有技术点一一剖析和展现,为了避免陷入教条式讲解的歧途,我将采用各个击破的方式,每一篇博客集中讨论关键点问题,让读者一目了然。打算用点时间将C语言梳理一下,分布在以下10个章节中:Linux-C成长之路...
深入剖析浮点存储及其运算规则

深入剖析浮点存储及其运算规则

对于浮点类型数据,首先我们需要明白的一点是:浮点数和整型数的编码方式是很不一样的,IEEE浮点标准采用V = (-1)s×M×2E的形式来表示一个数,其中符号s决定是负数(s=1)还是正数(s=0),由1位符号位表示。有效数M是一个二进制小数,它的范围在1~2-ε之间(当指数域E既不全为0也不全为1,即浮点数为规格化值时。ε为有效数M的精度误差,比如当有效数为23位时,ε为2-24),...
2014年腾讯实习生招聘笔试感受

2014年腾讯实习生招聘笔试感受

2014年腾讯实习生招聘考试安徽片区在科大举行,刚开始拿到试卷觉得试卷好长,题目好多。然后就开始做题,这次考试给我的感觉是腾讯的笔试题考察的范围很广,不仅有语言方面的考察,还有操作系统、计算机网络、数据结构、概率以及Mapreduce都考察了。给我的感觉还是操作系统考察的是最多的。都有:进程通信、内存管理等推荐阅读:百度2013校园招聘笔试题 http://www.linuxidc.com/Linux/2013-01/78272.htm百度2013校园招聘...
你可能没听过的 Java 8 中的 10 个新特性

你可能没听过的 Java 8 中的 10 个新特性

你以前听到的谈论关于Java8的所有都是围绕lambda表达式. 但它仅仅是Java8的一部分. Java 8 有许多新特性---一些强大的新类和语法, 还有其他的从一开始就应该具有的东西.我将要介绍我认为值得了解的10个精华特性. 它们中最少也会有一个或两个你想要试一试, 所以我们开始吧!--------------------------------------分割线 --------------------------------------Java...
使用epoll+时间堆实现高性能定时器

使用epoll+时间堆实现高性能定时器

在开发Linux网络程序时,通常需要维护多个定时器,如维护客户端心跳时间、检查多个数据包的超时重传等。如果采用Linux的SIGALARM信号实现,则会带来较大的系统开销,且不便于管理。本文在应用层实现了一个基于时间堆的高性能定时器,同时考虑到定时的粒度问题,由于通过alarm系统调用设置的SIGALARM信号只能以秒为单位触发,因此需要采用其它手段实现更细粒度的定时操作,当然,这里不考虑使用多线程+sleep的实现方法,理由性能太低。通常的做法还有采用基...
Linux通过改进的epoll实现对不同超时时间的数据包重传

Linux通过改进的epoll实现对不同超时时间的数据包重传

应用背景:epoll模型是当前Linux网络编程的主流模型,可以高效解决多个事件并发的问题。在进行网络编程时,往往要对每一个发出的数据包进行ACK确认,若在指定的时间内没有收到ACK,则需要重传或者丢弃该数据包。那么如果在epoll模型中实现该功能呢?先来看看传统的做法:程序维护一个“已发出但是没收到ACK”的数据包记录R,记录包括数据包内容、数据包发送的时间戳t以及超时时间T。当需要进行数据包发送时,在发出数据包的同时把该数据包加...
关于libevent的定时器

关于libevent的定时器

对于定时器事件,Libevent采用两种方法处理定时器:1、定时器尾队列2、时间堆在event结构体中,定义了联合体类型ev_timeout_pos来指明定时器的位置//仅用于定时事件处理器:当为通过定时器时,ev_next_with_common_timeout指向定时器队列中的位置//当为其它定时器时,min_heap_idx为指向时间堆中的索引union { TAILQ_ENTRY(event) ev_next_with_common_timeout...
Python 并发编程之使用多线程和多处理器

Python 并发编程之使用多线程和多处理器

在Python编码中我们经常讨论的一个方面就是如何优化模拟执行的性能。尽管在考虑量化代码时NumPy、SciPy和pandas在这方面已然非常有用,但在构建事件驱动系统时我们无法有效地使用这些工具。有没有可以加速我们代码的其他办法?答案是肯定的,但需要留意!在这篇文章中,我们看一种不同的模型-并发,我们可以将它引入我们Python程序中。这种模型在模拟中工作地特别好,它不需要共享状态。Monte Carlo模拟器可以用来做期权定价以及检验算法交易等类型的各...
C++11多线程编程之互斥量

C++11多线程编程之互斥量

一、互斥量互斥量或者互斥锁(Mutex)是一种实现线程间对资源互斥访问的机制。操作互斥锁的时间和空间开销相对比较低,因而常用于高频使用的关键共享数据和程序段。互斥锁有两种状态,开锁(unlock)和关锁(lock)。我们就是通过这种线程同步手段在多线程编程中来防止多个线程同时操作共享资源。一旦线程锁住了互斥量,那么其他线程就必须等待它解锁互斥量才能再访问共享资源。推荐阅读:C++ Primer Plus 第6版 中文版 清晰有书签PDF+源代码 http:...
《C++ Primer》 对象、数组、基于对象设计、泛型设计

《C++ Primer》 对象、数组、基于对象设计、泛型设计

数组C++ 不支持数组的抽象 abstraction 也不支持对整个数组的操作我们有时会希望对整个数组进行操作例如把一个数组赋值给另外一个数组对两个数组进行相等比较或者想知道数组的大小 size 例如给出两个数组我们不能用赋值操作符把一个数组拷贝到另一个中去。int array0[ 10 ], array1[ 10 ];array0 = array1; // error数组类型本身没有自我意识它不知道自己的长度我们必须另外记录数组本身的这些信息。数组和指针...
C++11中的指针空值nullptr

C++11中的指针空值nullptr

一、为什么要有指针空值nullptr在良好的编码习惯中,声明一个指针并对其进行初始化非常重要,未初始化的悬挂指针常导致一些难以调试的错误。往常,我们常这样初始化指针变量:int* my_ptr1=0;int* my_ptr2=NULL;但我们知道,NULL其实是一个宏定义,字面常量为0,即上述两种方式本质上是一样的。于是,这样就有了一些麻烦,比如函数重载时,我们定义了如下两个版本的函数:#include<iostream>using names...
函数对象的函数适配器

函数对象的函数适配器

一。标准库定义的函数对象:标准库定义了一组用于算术、关系、逻辑运算的函数对象类,他们都是类模板,定义在头文件functional中;1. 在这里举一个算术函数对象类型的例子:plus<Type> 对2个给定元素进行 + 运算,它定义了调用操作符的类模板,所以是二元函数对象;要对数值1和2进行加法运算,可以写如下代码:plus<int> add; //定义加法运算的类模板的实例;int sum = add(1, 2); //调用了类模...
Linux下C语言url请求

Linux下C语言url请求

任何代码只有你写过,才能深刻理解,有的时候看文档看的很茫然的时候,尽量找点别人的源码,在别人源码上更改,在调试,可能会达到事半功倍的效果。近来项目需要Linux中访问一个url接口传参数及获取返回值,看了很多方法,知道用socket,但是没接触过,感觉很茫然,就在网上找实例,看看了,有了一点感觉,又在别人的实例上改动之后竟然可以用了,当时就卡在了http的格式上,下面写个demo,只要在我的代码上吧url换了,肯定可以成功。注意url不要http://Li...
<< 3611 3612 3613 3614 3615 3616 3617 3618 3619 3620 >>