自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

原创 g++ 编译选项

g++ 编译参数详解介绍代码编译过程分为: 预处理,生成.i文件 编译,转换成汇编语言, 生成.s文件 将汇编代码转换成机器码,生成.o文件 链接目标代码,生成可执行程序 总体选项-E只激活预处理,这个不生成文件,你需要把它重定向到一个输出文件里面. gcc -E hello.c > p...

2015-08-26 14:06:53 1755 0

原创 C++的反思(知乎精华)

转载地址:c++的反思最近两年 C++又有很多人出来追捧,并且追捧者充满了各种优越感,似乎不写 C++你就一辈子是低端程序员了,面对这种现象,要不要出来适时的黑一下 C++呢?咱们要有点娱乐精神,关于 C++的笑话数都数不清:笑话:C++是一门不吉祥的语言,据说波音公司之前用ADA为飞机硬件编程,...

2015-07-21 11:23:01 6689 8

原创 最长公共子序列

一个字符串S,去掉零个或者多个元素所剩下的子串称为S的子序列。最长公共子序列就是寻找两个给定序列的子序列,该子序列在两个序列中以相同的顺序出现,但是不必要是连续的。例如序列X=ABCBDAB,Y=BDCABA。序列BCA是X和Y的一个公共子序列,但不是X和Y的最长公共子序列,子序列BCBA是X和Y...

2015-07-06 20:37:37 868 1

原创 快速排序-递归和非递归的实现

快速排序主要就是partition的操作。排序主体/* 递归的实现。A[] -->要排序的数组, s --> 开始位置, e --> 结束位置 */ void quickSort(int arr[], int s, int e) { if (s < e) ...

2015-07-06 17:40:53 808 0

原创 二分查找求解equal_range区间

总觉得二分查找很简单,可实现起来却发现一个小错误会导致程序结果出错,本题是解决眼高手低的利题。eaual_range返回的一对指针,指向第一个等于key值得元素和指向第一个大于该值的元素。因此,除了常规的非重复元素的二分查找(重复元素可能查找到任意一个值),还可以实现equal_range的方式考...

2015-07-06 17:27:14 910 0

原创 大型网站的 HTTPS 实践(二)——HTTPS 对性能的影响

前言HTTPS在保护用户隐私,防止流量劫持方面发挥着非常关键的作用,但与此同时,HTTPS 也会降低用户访问速度,增加网站服务器的计算资源消耗。本文主要介绍 https 对用户体验的影响。HTTPS 对访问速度的影响在介绍速度优化策略之前,先来看下 HTTPS 对速度有什么影响。影响主要来自两方面...

2015-07-03 10:22:32 715 0

原创 大型网站的 HTTPS 实践(一)—— HTTPS 协议和原理

声明:本系列文章(共约4篇)转发自酷勤网,中间有我个人的修改或者注释。前言百度已经于近日上线了全站 HTTPS 的安全搜索,默认会将 HTTP请求跳转成HTTPS。本文重点介绍HTTPS协议, 并简单介绍部署全站HTTPS的意义。HTTPS 协议概述HTTPS可以认为是 HTTP + TLS。HT...

2015-07-03 10:13:47 893 0

原创 70个shell常用操作

1) 如何向脚本传递参数 ?./script argument例子: 显示文件名称脚本./show.sh file1.txt cat show.sh #!/bin/bash echo $12) 如何在脚本中使用参数 ?第一个参数 : $1,第二个参数 : $2例子 : 脚本会复制文件(arg1) ...

2015-07-01 14:35:48 1093 0

原创 Python中的函数详解

声明:转载自伯乐在线Python中的函数,无论是命名函数,还是匿名函数,都是语句和表达式的集合。在Python中,函数是第一个类对象,这意味着函数的用法并没有限制。Python函数的使用方式就像Python中其他值一样,例如字符串和数字等。Python函数拥有一些属性,通过使用Python内置函数...

2015-06-30 10:57:24 787 1

原创 C++11并发编程-条件变量(condition_variable)详解

<condition_variable >头文件主要包含了与条件变量相关的类和函数。相关的类包括 std::condition_variable和 std::condition_variable_any,还有枚举类型std::cv_status。另外还包括函数 std::notify_...

2015-06-25 16:34:22 2164 0

原创 Linux作业管理

在介绍作业管理之前需要先知道,作业管理是在bash环境下使用的。也就是说“当登入系统获取bash shell之后,在单一终端界面下,同时管理多个作业”。这样应该了解到:管理作业时,其实每个作业都是当前bash的子程序,即彼此之间是有关联的。我们无法以作业管理的方式由tty1的环境去管理tty2的b...

2015-06-17 10:28:48 850 0

原创 原始字符串字面量

原始字符串字面量(raw string literal)是可以横跨多行代码的字符串字面量,不需要转义嵌入的双引号,像\t和\n这种转义序列不按照转义序列的方式处理,而是按照普通文本的方式处理。如果像下面这样编写普通的字符串字面量,那么会收到一个编译器错误,因为字符串包含了未转义的引号:string...

2015-06-17 08:53:26 794 0

原创 为包含指针的关联容器指定比较类型

错误是怎么来的?我写下这样的代码: set<string*> ssp; ssp.insert(new string("Ant")); ssp.insert(new string("Wom")); ssp.insert...

2015-06-16 15:43:00 496 0

原创 使用C++11中的遍历工具

处理日期和时间的chromo库duration表示一段时间间隔,表示几秒、几分钟等。typedef duration<Rep, ratio<60,1>> minutes; typedef duration<Rep, ratio<1,1>> sec...

2015-06-16 11:14:49 738 0

原创 半同步半异步线程池的实现(C++11)

简介处理大量并发任务时,一个请求对应一个线程来处理任务,线程的创建和销毁将消耗过多的系统资源,并增加上下文切换代价。线程池技术通过在系统中预先创建一定数量的线程(通常和cpu核数相同),当任务到达时,从线程池中分配一个线程进行处理,线程在处理完任务之后不用销毁,等待重用。线程池包括半同步半异步和领...

2015-06-16 09:19:04 848 0

原创 知乎C++问题整理

如何兼顾性能,合理选择C++STL容器?ANSER:首先要搞清楚,如果STL有性能问题,那么问题出在哪里?STL可以简单地认为就是算法+数据结构,所有容器的算法选择和实现都是经过精心设计和严格测试的,几个主流STL实现都不会有大问题。性能问题通常都出在内存数据操作上,内存操作有三种,内存读取、内存...

2015-06-15 11:33:43 1104 0

原创 随机洗牌算法---我们一起谈谈

看到这个问题是在知乎上, 一个回答:实现一下#include <iostream> #include <vector> #include <string> #include <algorithm> using namespace std;const...

2015-06-12 20:42:23 691 0

原创 mov指令详解

MOV指令可以在CPU内或CPU和存储器之间传送字或字节,它传送的信息可以从寄存器到寄存器,立即数到寄存器,立即数到存储单元,从存储单元到寄存器,从寄存器到存储单元,从寄存器或存储单元到除CS外的段寄存器(注意立即数不能直接送段寄存器),从段寄存器到寄存器或存储单元。 但是注意(1)...

2015-06-12 17:02:56 4940 1

原创 600字读懂 Git

原文地址设想你现在位于 alpha/ 目录下,这里有一个文本文件 number.txt,里面的内容只有一个词:“first”。现在执行 git init 将这个 alpha 文件夹初始化为 Git 仓库。执行 git add number.txt 会将 number.txt 添加到 Git 的索引...

2015-06-11 19:37:21 662 0

原创 什么是垃圾回收

乍一看,垃圾回收所做的事情应当恰如其名——查找并清除垃圾。事实上却恰恰相反。垃圾回收会跟踪所有仍在使用的对象,然后将剩余的对象标记为垃圾。牢记了这点之后,我们再来深入地了解下这个被称为“垃圾回收”的自动化内存回收在JVM中到底是如何实现的。手动管理内存在介绍现代版的垃圾回收之前,我们先来简单地回顾...

2015-06-11 09:12:44 805 1

原创 判断大小端序的C程序

概念大端格式:字数据的高字节存储在低地址中,而字数据的低字节则存放在高地址中。 小端格式:与大端存储格式相反,在小端存储格式中,低地址中存放的是字数据的低字节,高地址存放的是字数据的高字节。如5A6C中5A是高字节、6C是低字节,在大端序机器中,高字节位于低地址中,即在大端序中按照5A6C存储,...

2015-06-10 17:18:26 750 0

原创 字符串全排列的递归实现

#include "stdafx.h" #include <iostream> #include <assert.h> using namespace std;void permutation(char *pStr, char* pBegin) { ...

2015-06-10 15:52:23 649 0

原创 构造函数为什么不能是虚函数

从存储空间角度看虚函数对应一个指向vtable虚函数表的指针,这大家都知道,可是这个指向vtable的指针其实是存储在对象的内存空间的。问题出来了,如果构造函数是虚的,就需要通过 vtable来调用,可是对象还没有实例化,也就是内存空间还没有,怎么找vtable呢?所以构造函数不能是虚函数。从使用...

2015-06-08 23:00:30 661 0

原创 C++中的虚析构函数、纯虚析构函数详解

C++中析构函数可以为纯虚函数吗?众所周知,在实现多态的过程中,一般将基类的析构函数设为virtual,以便在delete的时候能够多态的链式调用。那么析构函数是否可以设为纯虚呢?class CBase { public: CBase() { ...

2015-06-08 22:03:48 2038 0

原创 看懂大数据的技术生态圈 Hadoop,hive,spark(转载)

先给出原文链接: 原文链接大数据本身是个很宽泛的概念,Hadoop生态圈(或者泛生态圈)基本上都是为了处理超过单机尺度的数据处理而诞生的。你可以把它比作一个厨房所以需要的各种工具。锅碗瓢盆,各有各的用处,互相之间又有重合。你可以用汤锅直接当碗吃饭喝汤,你可以用小刀或者刨子去皮。但是每个工具有自己的...

2015-06-04 11:16:45 758 0

原创 Make 命令教程详解

make是工程构建的必要工具。Make的概念Make这个词,英语的意思是”制作”。Make命令直接用了这个意思,就是要做出某个文件。比如,要做出文件a.txt,就可以执行下面的命令。$ make a.txt但是,如果你真的输入这条命令,它并不会起作用。因为Make命令本身并不知道,如何做出a.tx...

2015-06-01 19:59:49 776 0

原创 重载,重写(覆盖)和隐藏的区别

重载重载从overload翻译过来,是指同一可访问区内被声明的几个具有不同参数列(参数的类型,个数,顺序不同)的同名函数,根据参数列表确定调用哪个函数,重载不关心函数返回类型。class A{ public: void test(int i); void test(double i...

2015-05-31 15:36:31 656 0

原创 笔记(const)

常量#include <iostream> using namespace std; int main() { int i = 12; const int ci = 12; const volatile int *ip2 = &i; cout &...

2015-05-31 11:24:54 558 0

原创 STL-map中的插入操作详解

首先,我们可以如下使用map://#include <map>map<string, int> simap; map[string("hou")] = 1; map[string("hou")] = 2; pair<string...

2015-05-22 10:40:40 1205 0

原创 Strlcpy和strlcat——一致的、安全的字符串拷贝和串接函数

概述随着流行的缓冲区溢出攻击的增加,越来越多程序员开始使用带有大小,即有长度限制的字符串函数,如strncpy() 和strncat() 。尽管这种趋势令人十分鼓舞,但通常的标准C 字符串函数并不是专为此而设计的。本文介绍另一种直观的,一致的,天生安全的字符串拷贝API 。当函数 strncpy(...

2015-05-20 20:28:23 834 0

原创 python中的引用和复制

>>> a = [1,2,3,4] >>> b = a >>> b is a True >>> b[2] = -100 >>> b [1, 2, -100, 4] >>> a [1, 2, ...

2015-05-20 10:33:01 571 0

原创 #详解C++中的指针与引用

指针和引用形式上很好区别,但是他们似乎有相同的功能,都能够直接引用对象,对其进行直接的操作。但是什么时候使用指针?什么时候使用引用呢?这两者很容易混淆,在此介绍一下指针和引用,力争将最真实的一面展现给大家。1、指针和引用的定义在深入介绍之前我们首先来看一下指针和引用的定义、指针和引用的区别,然后分...

2015-05-14 10:31:29 574 0

原创 python进阶(数据结构和算法[三])

在字典上将键映射到多个值上一键多值字典d = {'a':[1,2,3], 'b':[4,5]} e = {'a':{1,2,3}, 'b':{4,5}}可以使用from collections import defau...

2015-05-11 11:14:39 587 0

原创 python进阶(数据结构和算法[二])

找到最大或者最小的N个元素heapq模块有两个函数–nlargest()和nsmallest()正好能解决我们的问题。>>> print(heapq.nlargest(3, nums)) [43, 23, 8] >>> print(heapq.nsmallest...

2015-05-11 09:36:55 696 0

原创 python进阶(数据结构和算法[1])

将序列分解为单独的变量>>> p = (4,5) # 通过赋值分解元组或序列 >>> x,y = p >>> x 4 >>> y 5 >>> data = ['ACME', 50, 91....

2015-05-08 16:48:41 663 0

原创 图解TCP-IP协议

本文原文链接通过两个图来梳理TCP-IP协议相关知识。TCP通信过程包括三个步骤:建立TCP连接通道,传输数据,断开TCP连接通道。如图1所示,给出了TCP通信过程的示意图。图1主要包括三部分:建立连接、传输数据、断开连接。 建立TCP连接很简单,通过三次握手便可建立连接。 建立好连接后,开始传输...

2015-05-05 10:50:40 809 0

原创 写代码的步骤(正确解决问题的一种可行性方法)

1. 确保你理解这个问题你自己最初的假设或者面试官的解释是模糊的,请先确保你完全理解问题并和面试官保持一致。2. 尝试一个简单的例子一个特殊的例子可能引导出如何解决一般情况下的问题,或者消除剩余部分的误解。3. 专注于解决问题的算法和数据结构这一步可能会很麻烦,要和面试官进行交流,或许可以得到一些...

2015-05-04 15:13:53 722 0

原创 STL--迭代器--原理与实践

迭代器(iterator)是STL里面很基础也很重要的一个东西,迭代器的traits技术设计的很棒。 迭代器是一种行为类似指针的对象,因为指针最常用的是->和*两个操作符,因此迭代器最重要的编程工作也是对这两个操作符的重载的实现。初探traits技术假设现在定义了这样一个迭代器MyIter...

2015-05-03 11:35:29 939 0

原创 typedef和typename关键字

类型说明typedef类型说明的格式为:typedef 类型 定义名;类型说明只定义了一个数据类型的新名字而不是定义一种新的数据类型。定义名表示这个类型的新名字。例如: 用下面语句定义整型数的新名字:typedef int SIGNED_INT;使用说明后, SIGNED_INT就成为int的同...

2015-05-03 11:06:05 592 0

原创 Shell 中的 here 文档详解

我们知道平常在linux命令行的操作都可以放到文件里面,赋予可执行权限后,就可以将这文件变成一个shell脚本。但是如果我们跟有些程序交互时,shell脚本却帮不了我们太多。比如编辑一个文件和操作数据库。编辑一个文件一般用vi,进去后hjkl的aio的操作什么的,脚本怎么执行?mysql登陆输入m...

2015-04-27 15:34:59 763 0

提示
确定要删除当前文章?
取消 删除