- 博客(18)
- 资源 (4)
- 收藏
- 关注
原创 Python中的函数详解
声明:转载自伯乐在线Python中的函数,无论是命名函数,还是匿名函数,都是语句和表达式的集合。在Python中,函数是第一个类对象,这意味着函数的用法并没有限制。Python函数的使用方式就像Python中其他值一样,例如字符串和数字等。Python函数拥有一些属性,通过使用Python内置函数dir就能查看这些属性,如下代码所示:def square(x): return x**2>>>
2015-06-30 10:57:24 1068 1
原创 C++11并发编程-条件变量(condition_variable)详解
<condition_variable >头文件主要包含了与条件变量相关的类和函数。相关的类包括 std::condition_variable和 std::condition_variable_any,还有枚举类型std::cv_status。另外还包括函数 std::notify_all_at_thread_exit(),下面分别介绍一下以上几种类型。std::condition_variabl
2015-06-25 16:34:22 2988
原创 Linux作业管理
在介绍作业管理之前需要先知道,作业管理是在bash环境下使用的。也就是说“当登入系统获取bash shell之后,在单一终端界面下,同时管理多个作业”。这样应该了解到:管理作业时,其实每个作业都是当前bash的子程序,即彼此之间是有关联的。我们无法以作业管理的方式由tty1的环境去管理tty2的bash。直接将命令放到后台“执行”的&在bash的环境下, 前台指:你可以控制的作业。后台指:在内存可以
2015-06-17 10:28:48 1255
原创 原始字符串字面量
原始字符串字面量(raw string literal)是可以横跨多行代码的字符串字面量,不需要转义嵌入的双引号,像\t和\n这种转义序列不按照转义序列的方式处理,而是按照普通文本的方式处理。如果像下面这样编写普通的字符串字面量,那么会收到一个编译器错误,因为字符串包含了未转义的引号:string str = "Hello "World"!"; // Error! 对于普通的字符串,必须转义双
2015-06-17 08:53:26 1287
原创 为包含指针的关联容器指定比较类型
错误是怎么来的?我写下这样的代码: set<string*> ssp; ssp.insert(new string("Ant")); ssp.insert(new string("Wom")); ssp.insert(new string("Lem")); ssp.insert(new string("Pen")); for (set<string*>:
2015-06-16 15:43:00 583
原创 使用C++11中的遍历工具
处理日期和时间的chromo库duration表示一段时间间隔,表示几秒、几分钟等。typedef duration<Rep, ratio<60,1>> minutes;typedef duration<Rep, ratio<1,1>> seconeds;typedef duration<Rep, ratio<1,1000>> milliseconds;Rep表示时间数值,ratio表示时
2015-06-16 11:14:49 854
原创 半同步半异步线程池的实现(C++11)
简介处理大量并发任务时,一个请求对应一个线程来处理任务,线程的创建和销毁将消耗过多的系统资源,并增加上下文切换代价。线程池技术通过在系统中预先创建一定数量的线程(通常和cpu核数相同),当任务到达时,从线程池中分配一个线程进行处理,线程在处理完任务之后不用销毁,等待重用。线程池包括半同步半异步和领导者追随者两种实现方式。线程池包括三部分,第一层是同步服务层,它处理来自上层的任务请求。第二层是同步队列
2015-06-16 09:19:04 1068 2
原创 知乎C++问题整理
如何兼顾性能,合理选择C++STL容器?ANSER:首先要搞清楚,如果STL有性能问题,那么问题出在哪里?STL可以简单地认为就是算法+数据结构,所有容器的算法选择和实现都是经过精心设计和严格测试的,几个主流STL实现都不会有大问题。性能问题通常都出在内存数据操作上,内存操作有三种,内存读取、内存复制和内存分配。所以选择合适容器的依据就是要尽量减少内存操作尤其是复制操作,比如频繁中间插入删除就不要选
2015-06-15 11:33:43 1251
原创 随机洗牌算法---我们一起谈谈
看到这个问题是在知乎上, 一个回答:实现一下#include <iostream>#include <vector>#include <string>#include <algorithm>using namespace std;const int RAND_MAXNUM = 100;int bigRand(){ return RAND_MAXNUM*rand() + rand(
2015-06-12 20:42:23 822
原创 mov指令详解
MOV指令可以在CPU内或CPU和存储器之间传送字或字节,它传送的信息可以从寄存器到寄存器,立即数到寄存器,立即数到存储单元,从存储单元到寄存器,从寄存器到存储单元,从寄存器或存储单元到除CS外的段寄存器(注意立即数不能直接送段寄存器),从段寄存器到寄存器或存储单元。 但是注意(1) MOV指令中的源操作数绝对不能是立即数和代码段CS寄存器; (2) MOV指令中
2015-06-12 17:02:56 15992 1
原创 600字读懂 Git
原文地址设想你现在位于 alpha/ 目录下,这里有一个文本文件 number.txt,里面的内容只有一个词:“first”。现在执行 git init 将这个 alpha 文件夹初始化为 Git 仓库。执行 git add number.txt 会将 number.txt 添加到 Git 的索引(index)中。这个索引记录了所有 Git 保持追踪的文件,现在它有了一个映射记录 number.tx
2015-06-11 19:37:21 761
原创 什么是垃圾回收
乍一看,垃圾回收所做的事情应当恰如其名——查找并清除垃圾。事实上却恰恰相反。垃圾回收会跟踪所有仍在使用的对象,然后将剩余的对象标记为垃圾。牢记了这点之后,我们再来深入地了解下这个被称为“垃圾回收”的自动化内存回收在JVM中到底是如何实现的。手动管理内存在介绍现代版的垃圾回收之前,我们先来简单地回顾下需要手动地显式分配及释放内存的那些日子。如果你忘了去释放内存,那么这块内存就无法重用了。这块内存被占有
2015-06-11 09:12:44 922 1
原创 判断大小端序的C程序
概念大端格式:字数据的高字节存储在低地址中,而字数据的低字节则存放在高地址中。 小端格式:与大端存储格式相反,在小端存储格式中,低地址中存放的是字数据的低字节,高地址存放的是字数据的高字节。如5A6C中5A是高字节、6C是低字节,在大端序机器中,高字节位于低地址中,即在大端序中按照5A6C存储,在小端序中按照6C5A存储。为什么存在这种模式因为在计算机系统中,我们是以字节为单位的,每个地址单元都对
2015-06-10 17:18:26 905
原创 字符串全排列的递归实现
#include "stdafx.h"#include <iostream>#include <assert.h>using namespace std;void permutation(char *pStr, char* pBegin){ assert(pStr&&pBegin); if (*pBegin == '\0') cout << pStr << e
2015-06-10 15:52:23 749
原创 构造函数为什么不能是虚函数
从存储空间角度看虚函数对应一个指向vtable虚函数表的指针,这大家都知道,可是这个指向vtable的指针其实是存储在对象的内存空间的。问题出来了,如果构造函数是虚的,就需要通过 vtable来调用,可是对象还没有实例化,也就是内存空间还没有,怎么找vtable呢?所以构造函数不能是虚函数。从使用角度虚函数主要用于在信息不全的情况下,能使重载的函数得到对应的调用。构造函数本身就是要初始化实例,那使用
2015-06-08 23:00:30 963
原创 C++中的虚析构函数、纯虚析构函数详解
C++中析构函数可以为纯虚函数吗?众所周知,在实现多态的过程中,一般将基类的析构函数设为virtual,以便在delete的时候能够多态的链式调用。那么析构函数是否可以设为纯虚呢?class CBase{ public: CBase() { printf("CBase()\n"); } virtual ~CBase
2015-06-08 22:03:48 3520
原创 看懂大数据的技术生态圈 Hadoop,hive,spark(转载)
先给出原文链接: 原文链接大数据本身是个很宽泛的概念,Hadoop生态圈(或者泛生态圈)基本上都是为了处理超过单机尺度的数据处理而诞生的。你可以把它比作一个厨房所以需要的各种工具。锅碗瓢盆,各有各的用处,互相之间又有重合。你可以用汤锅直接当碗吃饭喝汤,你可以用小刀或者刨子去皮。但是每个工具有自己的特性,虽然奇怪的组合也能工作,但是未必是最佳选择。大数据,首先你要能存的下大数据。传统的文件系统是单机的
2015-06-04 11:16:45 833
原创 Make 命令教程详解
make是工程构建的必要工具。Make的概念Make这个词,英语的意思是”制作”。Make命令直接用了这个意思,就是要做出某个文件。比如,要做出文件a.txt,就可以执行下面的命令。$ make a.txt但是,如果你真的输入这条命令,它并不会起作用。因为Make命令本身并不知道,如何做出a.txt,需要有人告诉它,如何调用其他命令完成这个目标。比如,假设文件a.txt 依赖于b.txt 和 c.t
2015-06-01 19:59:49 1056
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人