- 博客(36)
- 资源 (12)
- 收藏
- 关注
原创 常量指针与指针常量的区别
一、”const int” 与 “int const” 我们需要明白,const放在数据类型(int)前面和数据类型(int)后面是一样的。所以 const int *ptr 与 int const *ptr 是等价的二、简单理解“const int *ptr”, “const int * const ptr”, “int * const ptr”的本质含义 在
2016-09-25 21:31:27 651 1
转载 全栈必备Linux 基础
Linux 几乎无处不在,不论是服务器构建,还是客户端开发,操作系统的基础技能对全栈来说都是必备的。系统的选择Linux发行版本可以大体分为两类,一类是商业公司维护的发行版本,一类是社区组织维护的发行版本,前者以著名的Redhat(RHEL)为代表,后者以Debian为代表。Redhat,应该称为Redhat系列,包括RHEL、Fedora、CentOS(RHEL的社区克隆
2016-09-21 20:56:56 508
原创 拓扑排序C++实现
一.定义对一个有向无环图(Directed Acyclic Graph, DAG)G进行拓扑排序,是将G中所有顶点排成一个线性序列,使得图中任意一对顶点u和v,若 ∈E(G),则u在线性序列中出现在v之前。通常,这样的线性序列称为满足拓扑次序(Topological Order)的序列,简称拓扑序列。注意:1)只有有向无环图才存在拓扑序列;2)对于一个DAG
2016-09-21 16:00:30 18043 3
原创 Linux C/C++多线程学习:生产者消费者问题
生产者消费者问题多个生产者和多个生产者的问题。生产者不断的向仓库放入产品,消费者不断的从仓库取出产品,仓库的容量是有限的。因此,当仓库处于满状态时,生产者必须等待消费者取出 1 个或多个产品后才能继续生产;同理,当仓库处于空状态时,消费者必须等待生产者将产品放入仓库后才能消费(取出)产品。使用数组模拟仓库,需要记录下一次生产和消费在数组中的位置。 用生产和消费在数组中的位置判断
2016-09-20 18:55:17 5699 1
转载 Bit field
Bit fieldFrom Wikipedia, the free encyclopediaIt has been suggested that Bit array be merged into this article. (Discuss) Proposed since May 2016.A bit field is a
2016-09-19 18:15:43 575
转载 C\C++代码优化的27个建议
1. 记住阿姆达尔定律:funccost是函数func运行时间百分比,funcspeedup是你优化函数的运行的系数。所以,如果你优化了函数TriangleIntersect执行40%的运行时间,使它运行快了近两倍,而你的程序会运行快25%。这意味着不经常使用的代码不需要做较多优化考虑(或者完全不优化)。这里有句俗语:让经常执行的路径运行更加高效,而运行稀少的路径正
2016-09-19 15:35:37 404
原创 Fast Modular Exponentiation
算法分析First, it is required that the exponent e be converted to binary notation. That is, e can be written as:{\displaystyle e=\sum _{i=0}^{n-1}a_{i}2^{i}}In such notation, the length
2016-09-17 22:48:34 1165
转载 POSIX thread (pthread) libraries
POSIX thread (pthread) librariesThe POSIX thread libraries are a standards based thread API for C/C++. It allows one to spawn a new concurrent process flow. It is most effective on multi-processor o
2016-09-16 21:42:45 1507
原创 内存池、进程池、线程池介绍及线程池C++实现
内存池平常我们使用new、malloc在堆区申请一块内存,但由于每次申请的内存大小不一样就会产生很多内存碎片,造成不好管理与浪费的情况。内存池则是在真正使用内存之前,先申请分配一定数量的、大小相等(一般情况下)的内存块留作备用。当有新的内存需求时,就从内存池中分出一部分内存块,若内存块不够再继续申请新的内存。这样做的一个显著优点是尽量避免了内存碎片,使得内存分配效率得到提升。
2016-09-16 20:36:33 6184
转载 Linux系统调用和库函数调用的区别
Linux下对文件操作有两种方式:系统调用(system call)和库函数调用(Library functions)。可以参考《Linux程序设计》(英文原版为《Beginning Linux Programming》,作者是Neil Matthew和Richard Stones)第三章: Working with files。系统调用实际上就是指最底层的一个调用,在linux程序设计里面就是底
2016-09-16 15:13:01 432
转载 Linux进程与线程的区别
进程与线程的区别,早已经成为了经典问题。自线程概念诞生起,关于这个问题的讨论就没有停止过。无论是初级程序员,还是资深专家,都应该考虑过这个问题,只是层次角度不同罢了。一般程序员而言,搞清楚二者的概念,在工作实际中去运用成为了焦点。而资深工程师则在考虑系统层面如何实现两种技术及其各自的性能和实现代价。以至于到今天,Linux内核还在持续更新完善(关于进程和线程的实现模块也是内核完善的任务之一)。
2016-09-16 14:41:48 579
转载 Unix / Linux 线程的实质
线 程线程与进程的比较概述:进程是具有一定独立功能的程序关于某个数据集合上的一次运行活动,进程是系统进行资源分配和调度的一个独立单位.线程是进程的一个实体,是CPU调度和分派的基本单位,它是比进程更小的能独立运行的基本单位.线程自己基本上不拥有系统资源,只拥有一点在运行中必不可少的资源(如程序计数器,一组寄存器和栈),但是它可与同属一个进程的其他的线程共享进程所拥有的全部
2016-09-16 13:41:11 477
转载 谈VC++对象模型
——谈VC++对象模型(美)简.格雷程化 译译者前言一个C++程序员,想要进一步提升技术水平的话,应该多了解一些语言的语意细节。对于使用VC++的程序员来说,还应该了解一些VC++对于C++的诠释。 Inside the C++ Object Model虽然是一本好书,然而,书的篇幅多一些,又和具体的VC++关系小一些。因此,从篇幅和内容来看,译者认为本文是深入理解C
2016-09-15 20:40:19 685
转载 C++虚函数表解析
前言 C++中的虚函数的作用主要是实现了多态的机制。关于多态,简而言之就是用父类型别的指针指向其子类的实例,然后通过父类的指针调用实际子类的成员函数。这种技术可以让父类的指针有“多种形态”,这是一种泛型技术。所谓泛型技术,说白了就是试图使用不变的代码来实现可变的算法。比如:模板技术,RTTI技术,虚函数技术,要么是试图做到在编译时决议,要么试图做到运行时决议。 关于虚函数的使用方法
2016-09-15 20:19:01 434
转载 使用Visual Studio查看C++类内存分布
书上类继承相关章节到这里就结束了,这里不妨说下C++内存分布结构,我们来看看编译器是怎么处理类成员内存分布的,特别是在继承、虚函数存在的情况下。工欲善其事,必先利其器,我们先用好Visual Studio工具,像下面这样一步一步来: 先选择左侧的C/C++->命令行,然后在其他选项这里写上/d1 reportAllClassLayout,它可以看到
2016-09-15 19:04:39 6526 3
转载 C++构造函数和析构函数中抛出异常的注意事项
从语法上来说,构造函数和析构函数都可以抛出异常。但从逻辑上和风险控制上,构造函数和析构函数中尽量不要抛出异常,万不得已,一定要注意防止资源泄露。在析构函数中抛出异常还要注意栈展开带来的程序崩溃。1.构造函数中抛出异常在C++构造函数中,既需要分配内存,又需要抛出异常时要特别注意防止内存泄露的情况发生。因为在构造函数中抛出异常,在概念上将被视为该对象没有被成功构造,因此当前对象的析构
2016-09-15 00:13:39 2264
转载 C++虚析构函数及纯虚析构函数
C++中析构函数可以为纯虚吗?众所周知,在实现多态的过程中,一般将基类的析构函数设为virtual,以便在delete的时候能够多态的链式调用。那么析构函数是否可以设为纯虚呢?class CBase{public: CBase() { printf("CBase()\n"); } virtual ~CBase() = 0;};答案是可以
2016-09-14 23:40:49 1265
转载 Linux IO模式及 select、poll、epoll详解
同步IO和异步IO,阻塞IO和非阻塞IO分别是什么,到底有什么区别?不同的人在不同的上下文下给出的答案是不同的。所以先限定一下本文的上下文。本文讨论的背景是Linux环境下的network IO。一 概念说明在进行解释之前,首先要说明几个概念:- 用户空间和内核空间- 进程切换- 进程的阻塞- 文件描述符- 缓存 I/O用户空间与内核空间现
2016-09-14 18:57:51 509
转载 C++模板之特化与偏特化详解
前言说到C++模板,这个已经不是什么新东西了,自己在实际开发中也用过;对于C++模板特化和偏特化,对于别人来说,已经不是什么新东西了,但是对于我来说,的确是我的盲区,那天在群里讨论这个问题,自己对于这部分确实没有掌握,又联想到在《STL源码剖析》一书中,对于此也是有着介绍。所以,今天就对此进行详细的总结,以备后忘。C++模板说到C++模板特化与偏特化,就不得不简要的先说说C
2016-09-14 18:51:24 1635
原创 C++开发者都应该使用的10个C++11特性
在C++11新标准中,语言本身和标准库都增加了很多新内容,本文只涉及了一些皮毛。不过我相信这些新特性当中有一些,应该成为所有C++开发者的常规装备。你也许看到过许多类似介绍各种C++11特性的文章。下面是我总结的,C++开发者都需要学习和使用的C++11新特性。auto在C++11之前,auto关键字用来指定存储期。在新标准中,它的功能变为类型推断。auto现在成了一个类型的占位符
2016-09-14 15:25:56 2214
转载 C++11新特性简介
什么是C++11C++11是曾经被叫做C++0x,是对目前C++语言的扩展和修正,C++11不仅包含核心语言的新机能,而且扩展了C++的标准程序库(STL),并入了大部分的C++ Technical Report 1(TR1)程序库(数学的特殊函数除外)。C++11包括大量的新特性:包括lambda表达式,类型推导关键字auto、decltype,和模板的大量改进。本文将对
2016-09-14 12:19:44 375
转载 TCP的流量控制和拥塞控制
TCP的流量控制1. 利用滑动窗口实现流量控制 如果发送方把数据发送得过快,接收方可能会来不及接收,这就会造成数据的丢失。所谓流量控制就是让发送方的发送速率不要太快,要让接收方来得及接收。 利用滑动窗口机制可以很方便地在TCP连接上实现对发送方的流量控制。 设A向B发送数据。在连接建立时,B告诉了A:“我的接收窗口是 rwnd = 400 ”(这里
2016-09-13 20:45:23 543
转载 在浏览器地址栏输入一个URL后回车,执行的全部过程
作为一个软件开发者,你一定会对网络应用如何工作有一个完整的层次化的认知,同样这里也包括这些应用所用到的技术:像浏览器,HTTP,HTML,网络服务器,需求处理等等。本文将更深入的研究当你输入一个网址的时候,后台到底发生了一件件什么样的事~1. 首先嘛,你得在浏览器里输入要网址:<img src="https://pic4.zhimg.com/5d495eb96b
2016-09-13 15:32:40 13933
转载 详细介绍C++中的类对象内存模型
内存模型描述的是程序中各变量(实例域、静态域和数组元素)之间的关系,以及在实际计算机系统中将变量存储到内存和从内存取出变量这样的低层细节.不同平台间的处理器架构将直接影响内存模型的结构.首先介绍一下C++中有继承关系的类对象内存的布局:在C++中,如果类中有虚函数,那么它就会有一个虚函数表的指针__vfptr,在类对象最开始的内存数据中。之后是类中的成员变量的内存数据。对于
2016-09-12 23:14:23 6552 1
原创 计算机网络面试题总结
1. OSI参考模型及各层作用。开放式系统互联通信参考模型(英语:Open System Interconnection Reference Model,缩写为 OSI),简称为OSI模型(OSI model),一种概念模型,由国际标准化组织(ISO)提出,一个试图使各种计算机在世界范围内互连为网络的标准框架。定义于ISO/IEC 7498-1。OSI是一个定义良好的协议规范集,并有许多可
2016-09-12 14:28:23 6944
原创 八大排序算法总结及C/C++实现
概述排序有内部排序和外部排序,内部排序是数据记录在内存中进行排序,而外部排序是因排序的数据很大,一次不能容纳全部的排序记录,在排序过程中需要访问外存。我们这里说说八大排序就是内部排序。 当n较大,则应采用时间复杂度为O(nlog2n)的排序方法:快速排序、堆排序或归并排序序。快速排序:是目前基于比较的内部排序中被认为是最好的方法,当待排
2016-09-10 16:22:51 6715 2
原创 Linux进程间通信各种方式的总结
一个大型的应用系统,往往需要众多进程协作,进程间通信的重要性显而易见。本系列文章阐述了Linux环境下的几种主要进程间通信手段,并针对每个通信手段关键技术环节给出详细实例。为达到阐明问题的目的,本文还对某些通信手段的内部实现机制进行了分析。序:Linux下的进程通信手段基本上是从Unix平台上的进程通信手段继承而来的。而对Unix发展做出重大贡献的两大主力AT&T的贝尔实验室及BS
2016-09-10 15:51:45 968
原创 Linux下进程创建与修改
前言函数fork()用来创建一个新的进程,该进程几乎是当前进程的一个完全拷贝,继承了了父进程整个进程的地址空间(代码段、堆栈段、数据段),包括:进程上下文、进程堆栈、内存信息、打开的文件描述符、信号控制设置、进程优先级、进程组号、当前工作目录、根目录、资源限制、控制终端等。当父子进程中对共有的数据段进行重新设值或调用不同方法时,才会导致数据段及堆栈段的不同。函数族exec()用来启动另外的
2016-09-09 17:25:38 2838
原创 寻找第(前)k大的数的方法总结
问题描述给定一个包含n个数的乱序数组,寻找其中第k大的数。方法总结解法1:先将乱序数组按照从大到小排序,然后取出第k大的数。时间复杂度为O(n*logn)。解法2:利用选择排序,k次选择后即可得到第k大的数。时间复杂度为O(n*k)。解法3:利用快速排序的思想,从数组S中随机找出一个元素X,把数组分为两部分Sa和Sb。Sa中的元素大于等于X,Sb中元素小于X。这时有两种
2016-09-08 23:00:32 2378
原创 atoi在glibc 2.24中的实现的相关源代码
glibc 2.24atoi.c 1 /* Copyright (C) 1991-2016 Free Software Foundation, Inc. 2 This file is part of the GNU C Library. 3 4 The GNU C Library is free software; you can
2016-09-08 00:09:41 1209
转载 typedef specifier
typedef specifiertypedef - creates an alias that can be used anywhere in place of a (possibly complex) type name.ExplanationThe typedef specifier, when used in a declar
2016-09-08 00:02:39 732
转载 Exception safety
Exception safetyException safety guarantees, originally formalized by David Abrahams,[1][2] are a set of contractual guidelines that class library implementers and clients can use when reaso
2016-09-02 17:39:47 574
原创 C++四种强制类型转换运算符总结
强制转换运算符有几种特定于 C++ 语言的转换运算符。这些运算符用于删除旧式 C 语言转换中的一些多义性和危险继承。这些运算符是:dynamic_cast 用于多态类型的转换。static_cast 用于非多态类型的转换。const_cast 用于删除 const、volatile 和 __unaligned 特性。reint
2016-09-01 22:58:42 7332
原创 Google面试题详解(0~n之间1的个数,f(n)=n)
0. 问题描述Consider a function which, for a given whole number n, returns the number of ones required when writing out all numbers between 0 and n. For example, f(13)=6. Notice that f(1)=1. What is the
2016-09-01 00:13:21 1868
opencv_contrib-3.4.13_boostdesc_bgm.i等.zip
2021-02-07
hrnet_w32-36af842e.pth
2020-07-23
Fusing Multi-Stream Deep Networks for Video Classification
2016-06-08
Human Parsing with Contextualized Convolutional Neural Network
2016-04-17
Algorithms on Strings, Trees and Sequences
2014-11-27
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人