自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(559)
  • 收藏
  • 关注

原创 python搭建简易HTTPServer服务

有时需要在电脑间(不同os也可以)共享文件,用python搭建一个web server是一个不错的选择。只需要安装python即可。比如,我在IP为192.168.191.128的主机上需要共享一个目录叫做riacn-code,执行如下命令:cd riacn-codepython -m SimpleHTTPServer得到结果: 这时,在本机浏览器输入:http://0.0.0.0:8000即可

2017-04-19 22:14:44 23150 2

原创 redis数据库介绍和常用操作

内容来自《redis实战》。一、redis介绍Redis是一个速度非常快的非关系数据库,它可以存储键(key)与5种不同类型的值(value)之间的映射(mapping),可以将存储在内存的键值对数据持久化到硬盘,可以使用复制特性来扩展读性能,还可以使用客户端分片来扩展写性能。Redis是一个远程内存数据库。1、与memcached比较memcached是高性能键值缓存服务器,这两者都可用于存储键值

2017-04-17 15:18:10 1161

原创 redis主从模式配置与使用

一、实验环境VMware创建两个虚拟机A(192.168.191.128)、B(192.168.191.130),在两个虚拟机上分别安装好redis。并将redis.conf文件的daemonize no改为daemonize yes,以便redis服务在后台运行。 如果要A作为master,B作为slave,则A无需额外处理,B需对其redis.conf文件做如下配置:(1)将port 6379

2017-04-11 19:23:28 1398

原创 linux下使用c++创建守护进程

#include<stdio.h> #include<stdlib.h>#include<string>#include<iostream

2017-01-03 11:50:59 4573

原创 c++中ifstream,ofstream和fstream的使用方法

一、C++中IO库类型c++中的IO库类型和头文件如下: 各种IO库类型对应的继承关系为:类型ifsream和istringstream都继承自istream;类型ofsream和ostringstream都继承自ostream;类型fsream和stringstream都继承自iostream;继承机制的特点就是可以讲一个派生类对象当作基类对象来使用。因此我们可以像使用istream对象

2016-12-22 17:45:00 47308 3

原创 自己写makefile

首先,准备好三个文件:file1.h,file1.cpp,file2.cpp。file1.h代码:#ifndef FILE1_H_#define FILE1_H_#ifdef __cplusplus extern "C" { #endif void File1Print(); #ifdef __cplusplus } #endif

2016-12-20 11:56:58 462

原创 MySQL正则表达式-使用REGEXP

建立数据库test以及compute_nodes表: 1、REGEXP的使用正则模式: (1)找出以“n”开头的hypervisor_hostname,使用“^”匹配hypervisor_hostname的开始: 将node03,node04修改为NODE03,NODE04: (2)若要区分大小写,可搭配BINARY关键字: (3)找出以“03”结尾的hypervisor_hostname

2016-12-18 20:25:48 772

原创 k-vim常用操作

k-vim安装地址: https://github.com/wklken/k-vim1、常用操作(1)F2:行号开关,用于鼠标复制代码用(2)可以自己修改k-vim文件夹下的vimrc决定是否使用方向键进行上下左右移动,默认关闭,hjkl代表上下左右,若要使用方向键,可以注释掉两个地方:"map <Left> <Nop>"map <Right> <Nop>"map <Up> <Nop>"m

2016-12-05 22:34:13 2839

原创 域名和网络地址结构体---struct hostent

该结构体定义如下:struct hostent{ char *h_name; //主机名,即官方域名 char **h_aliases; //主机所有别名构成的字符串数组,同一IP可绑定多个域名 int h_addrtype; //主机IP地址的类型,例如IPV4(AF_INET)还是IPV6 int h_length; //主机IP地址长度,IPV4地址为4

2016-11-30 21:20:40 8944 1

转载 sockaddr和sockaddr_in详解

struct sockaddr和struct sockaddr_in这两个结构体用来处理网络通信的地址。一、sockaddrsockaddr在头文件#include <sys/socket.h>中定义,sockaddr的缺陷是:sa_data把目标地址和端口信息混在一起了,如下:struct sockaddr { sa_family_t sin_family;//地址族   cha

2016-11-24 21:58:18 160634 5

原创 海量数据中找出出现次数最多的前10个URL

#include<iostream>#include<string>#include<map>#include<vector>using namespace std;int main(void){ //海量数据 string a[5]={"ab","b","ccc","ab","ccc"}; int n=sizeof(a)/sizeof(a[0]); cou

2016-09-19 22:34:20 7551

原创 c++读取以逗号为分隔符的一串数字

#include<iostream>#include<vector>#include<sstream>using namespace std;int main(){ string s; vector<int> v; getline(cin, s); istringstream is(s); int inter; char ch; whi

2016-09-17 22:09:00 19682

原创 餐桌问题

题目:有n张桌子,m批人,每张桌子容纳的最大人数为h,每批人的人数为a,预计消费为c,每张桌子坐的人数不能大于h,不能拼桌和分桌,同一张桌子只能容纳同一批人,求怎么样消费是餐馆获利最高。#include <iostream>#include <set>#include <vector>#include <algorithm>using namespace std;struct Person

2016-09-08 23:54:07 825

原创 堆排序

#include<iostream>using namespace std;void maxHeapfy(int a[], int i, int heapsize){//大顶堆 int left=2*i+1, right=2*i+2; int largest=i; //注意都是和a[largest]比较!!! if(left<heapsize && a[left]

2016-08-31 15:58:58 648

原创 阿拉伯数字转换为英语

题目描述Jessi初学英语,为了快速读出一串数字,编写程序将数字转换成英文: 如22:twenty two,123:one hundred and twenty three。说明: 数字为正整数,长度不超过九位,不考虑小数,转化结果为英文小写; 输出格式为twenty two; 非法数据请返回“error”; 关键字提示:and,billion,million,thousand,hundr

2016-08-28 21:19:35 4487

原创 剑指offer面试题36-数组中的逆序对

问题描述:在数组中的两个数字,如果前面一个数字大于后面的数字,则这两个数字组成一个逆序对。输入一个数组,求出这个数组中的逆序对的总数。例如, 在数组{7,5,6,4}中,一共存在5个逆序对,分别是(7,6),(7,5),(7,4),(6,4)和(5,4),输出5.问题求解:归并排序以数组{7, 5, 6, 4}为例来分析统计逆序对的过程。每次扫描到一个数字的时候,我们不能拿它和后面的每一个数字作比较

2016-06-11 21:32:39 656 1

原创 leetcode-Ugly Number(丑数)

问题描述:我们把只包含因子2,3,5的数称为丑数。求第n个丑数。通常,把1称为第一个丑数。问题求解:方法一:挨个判断每个数是不是丑数,即使不是丑数也会对它求余数和除法操作。算法效率不是很高,leetcode会超时。class Solution {public: int nthUglyNumber(int n) { if(n<=0) return 0; int

2016-06-11 15:16:20 468

原创 leetcode179-Largest Number(把数组排成最大的数)

问题描述:输入一个正整数数组,把数组里的所有数字拼接起来排成一个数,打印能拼接出的所有数字中最大的一个。例如输入数组{3,32,321},则打印出332321.问题求解:这道题和剑指offer面试题33:把数组排成最小的数一样思路。就是要找到一种排序规则,数组根据这个规则排序之后能排成一个最大的数字。要确定这个规则,就要比较2个数字:给出m和n,我们需要确定规则来判断m和n那个应该排在前面,而不仅仅

2016-06-11 11:52:22 5765 1

原创 《Exceptional c++》和《提高c++性能的编程技术》学习笔记

1、c++临时对象创建对象是一个费时,费空间的操作,会产生临时对象的几种情况:1)以值的方式给函数传参 按值传递时,首先将需要传给函数的参数,调用拷贝构造函数创建一个副本,所有在函数里的操作都是针对这个副本的,也正是因为这个原因,在函数体里对该副本进行任何操作,都不会影响原参数。指导原则:在传递函数参数时,选择以常量引用的方式,而不是传值方式。2)类型转换 我们在做类型转换时,转换后的对象通常

2016-06-10 12:19:51 806

原创 《深度探索c++对象模型》学习笔记

1、c++的布局和存取时间成本?封装并未给c++带来任何的空间或执行期的不良后果,c++在布局和存取时间上的主要额外负担由虚拟化引起。包括: 1)virtual function机制。用以支持一个有效率的“执行期绑定”。 2)virtual base class机制。用以实现“多次出现在继承体系中的base class,有一个的单一而被共享的实例”。2、虚拟继承虚拟继承是多重继承中特有的概念。虚

2016-05-31 15:48:51 2374

原创 设计模式总结:概念、原则、23种模式分析

1、什么是设计模式设计模式从本质上讲,是针对过去某种经验的总结。每种设计模式都是为了在特定条件下去解决某种问题。设计模式中的每一个模式描述了一个在我们周围不断重复发生的问题,以及该问题的解决方案的核心。这样,你就能一次又一次地使用该方案而不必做重复劳动。它是可复用面向对象软件的基础。设计模式解决的是系统设计问题,设计模式是“术”,设计模式背后的用意才是“道”。GoF提出了23中设计模式,是对日常用到

2016-05-29 23:31:17 3633 1

原创 Unix网络编程-同步

1、互斥锁(量)和条件变量默认情况下互斥锁和条件变量用于线程间同步,若将它们放在共享内存区,也能用于进程间同步。1.1 互斥锁1、概述: 互斥锁(Mutex,也称互斥量),防止多个线程对一个公共资源做读写操作的机制,以保证共享数据的完整性。用以保护临界区,以保证任何时候只有一个线程(或进程)在访问共享资源(如代码段)。保护临界区的代码形式:lock_the_mutex(...);临界区unlo

2016-05-29 11:20:05 9324

原创 I/O复用和I/O模型

由《Unix网络编程卷1》总结而来。1、I/O复用同时监视多个I/O条件,在其中任意一个就绪时通知进程,这样的能力称为I/O复用。由select和poll函数支持,较新的还有Posix中的pselect函数。(Linux中还有epoll)。I/O复用应用场合:1)客户同时处理多个描述符时,必须使用I/O复用。2)客户同时处理多个套接字时(比较少见)。3)一个TCP服务器既要处理监听套接字,又要处

2016-05-27 18:39:00 542

原创 Linux网络编程和套接字

1、套接字概述套接字的本意是插座,在网络中用来描述计算机中不同程序与其他计算机程序的通信方式。 常用的套接字类型有3种: 1)流套接字(SOCK——STREAM):使用了面向连接的可靠的数据通信方式,即TCP套接字; 2)数据报套接字(Raw Sockets):使用了不面向连接的数据传输方式,即UDP套接字; 3)原始套接字(SOCK——RAW):没有经过处理的IP数据包,可以根据自己程序的

2016-05-26 22:25:52 10073

转载 多线程如何实现同步

在多个线程并发执行访问同一个数据时,如果不采取相应的措施,将会是非常危险的。所谓同步(synchronization)就是指一个线程访问数据时,其它线程不得对同一个数据进行访问,即同一时刻只能有一个线程访问该数据,当这一线程访问结束时其它线程才能对这它进行访问。同步最常见的方式就是使用锁(Lock),也称为线程锁。锁是一种非强制机制,每一个线程在访问数据或资源之前,首先试图获取(Acquire)锁,

2016-05-26 17:37:04 2520

转载 C++11 多线程

C++11开始支持多线程编程,之前多线程编程都需要系统的支持,在不同的系统下创建线程需要不同的API如pthread_create(),Createthread(),beginthread()等,使用起来都比较复杂,C++11提供了新头文件<thread>、<mutex>、<atomic>、<future>等用于支持多线程。使用C++11开启一个线程是比较简单的,下面来看一个简单的例子:#inclu

2016-05-26 16:32:26 400

转载 当析构函数遇到多线程 ── C++中线程安全的对象回调

编写线程安全的类不是难事,用同步原语保护内部状态即可。但是对象的生与死不能由对象自身拥有的互斥器来保护。如何保证即将析构对象 x 的时候,不会有另一个线程正在调用 x 的成员函数?或者说,如何保证在执行 x 的成员函数期间,对象 x 不会在另一个线程被析构?如何避免这种竞态条件是 C++ 多线程编程面临的基本问题,可以借助 boost的shared_ptr 和 weak_ptr 完美解决。这也是实现

2016-05-26 15:13:40 3525

原创 《图解HTTP》学习笔记(六)-确保Web安全的HTTPS

在 HTTP 协议中有可能存在信息窃听或身份伪装等安全问题。使用 HTTPS 通信机制可以有效地防止这些问题。1、HTTP缺点事物皆有两面,HTTP也有其不足之处:1)通信使用明文,不加密,内容可能会被窃听;2)不验证通信方的身份,因此有可能遭遇伪装;3)无法证明报文的完整性,所以有可能已遭篡改。1、通信使用明文可能会被窃听 由于 HTTP 本身不具备加密的功能,所以也无法做到对通信整体(使用

2016-05-25 09:58:03 1024

原创 《图解HTTP》学习笔记(六)-HTTP首部

1、HTTP 报文首部HTTP 协议的请求和响应报文中必定包含 HTTP 首部。首部内容为客户端和服务器分别处理请求和响应提供所需要的信息。1)HTTP请求报文:在请求中,HTTP报文由方法、URI、HTTP版本、HTTP首部字段等部分组成。 2)HTTP响应报文:在响应中,HTTP报文由HTTP版本、状态码(数字和原因短语)、HTTP首部字段3部分组成。 在报文众多的字段当中,HTTP 首部

2016-05-25 00:15:20 3598

原创 《图解HTTP》学习笔记(五)-与HTTP协作的Web服务器

1、用单台虚拟主机实现多个域名一台Web服务器可搭建多个独立域名的Web网站,也可以作为通信路径上的中转服务器提升传输效率。即使物理层面只有一台服务器,但只要使用虚拟主机的功能,则可以联想已具有多台服务器。另外,在互联网上,域名通过DNS服务映射到IP地址(域名解析)之后访问目标网站。在相同的IP地址下,由于虚拟主机可以寄存多个不同主机名和域名的Web网站,因此在发送HTTP请求时,必须在Host首

2016-05-24 21:13:11 634

原创 《图解HTTP》学习笔记(四)-返回结果的HTTP状态码

1、状态码告知从服务器端返回的请求结果HTTP 状态码负责表示客户端 HTTP 请求的返回结果、标记服务器端的处理是否正常、通知出现的错误等工作。借助状态码,用户可以知道服务器端是正常处理了请求,还是出现了错误。状态码由3位数字+原因短语组成,如 200 OK。数字中的第一位指定了响应类别,后两位无分类。响应类别有以下 5 种。 2、2××成功2××的响应结果表明请求被正常处理。1)200 OK:

2016-05-24 20:51:40 1189

原创 《图解HTTP》学习笔记(三)-HTTP报文内的HTTP信息

1、HTTP报文用于HTTP协议交互的信息被称为HTTP报文,请求端的称之为请求报文,响应端的称之为响应报文。组成:HTTP报文本身是由多行(用CR+LF作换行符)数据结构构成的字符串文本,大致可以分为报文首部和报文主体两块。 请求报文和响应报文的首部内容由以下数据组成: 1)请求行:包含用于请求的方法,请求URI和HTTP版本2)状态行:包含表明响应结果的状态码,原因短语和HTTP版本3)首部

2016-05-24 18:00:57 1875 1

原创 《图解HTTP》学习笔记(二)-简单的HTTP协议

1、HTTP概述HTTP协议用于客户端和服务器端之间的通信,并通过请求和响应的交换而达成通信。请求由客户端发出,而服务器回复响应。1. 请求报文:由请求方法、请求URI、协议版本、可选的请求首部字段和内容实体构成的。 2.响应报文:由协议版本、状态码(表示请求成功或失败的数字代码)、用以解释状态码的原因短语、可选的响应首部字段以及实体主体构成。 2、HTTP是不保存状态的协议1)HTTP是不保存

2016-05-24 17:01:03 1414

原创 《图解HTTP》学习笔记(一)-了解Web及网络基础

1、使用HTTP协议访问Web当我们在网页浏览器(Web brow ser)的地址栏中输入 URL 时,Web 页面是如何呈现的?根据 Web 浏览器地址栏中指定的 URL,Web 浏览器从 Web 服务器端获取文件资源(resource)等信息,从而显示出 Web 页面。Web 使用HTTP(Hy perT ex t Transfer Protocol,超文本传输协议)协议作为规范,完成从客户端到

2016-05-24 15:43:44 848

原创 二分查找-有重复数和无重复数

1、适用于无重复数的版本二分查找要求数组有序,时间复杂度为O(lgn)。适用于无重复数的版本如下:#include<iostream>using namespace std;int biSearch(int a[], int n, int key){//非递归 int low=0, high=n-1, mid; while(low<=high) { mid

2016-05-24 14:27:31 3095

转载 二叉树-四种遍历及其他应用

对于每一个节点而言,先不断的往其左孩子方向搜索。先序和中序的差别就是,先序搜索左孩子之前先把该节点访问到,而中序要先不断搜索完左孩子,再访问该节点。1、先序遍历先序遍历按照根结点->左孩子->右孩子的顺序进行访问。1.递归遍历void preOrder1(BiTree *root){ if(root != NULL) { cout<<root->key<<" ";

2016-05-24 10:47:05 3880

原创 《程序员面试笔试宝典》学习笔记(六)操作系统

一、进程管理1、进程与线程有什么区别1.定义: 1)进程是具有一定独立功能的程序关于某个数据集合上的一次运行活动,它是系统进行资源分配和调度的一个独立单位。 例如,用户运行自己的程序,系统就创建一个进程,并为它分配资源,包括各种表格、内存空间、磁盘空间、I/O设备等,然后,该进程被放入到进程的就绪队列,进程调度程序选中它,为它分配CPU及其它相关资源,该进程就被运行起来。2)线程是进程的一个实体

2016-05-22 10:12:11 3497

原创 leetcode8- String to Integer (atoi 字符串转整数)

实现字符串转为整数的功能:class Solution {public: int myAtoi(string str) { int n=str.size(); if(n==0) return 0; int i=0; while(i<n && str[i]==' ') {//(1)过滤掉前面的空格

2016-05-20 22:15:19 561

原创 《程序员面试笔试宝典》学习笔记(五)程序设计基础

十、变量1、全局变量和静态变量有什么异同全局变量的作用域是整个程序,它只需要在一个源文件中定义,就可以作用于所有的源文件,其他不包含全局变量定义的源文件需要用extern 关键字再次声明这个全局变量。若某一个局部重新定义了这个变量,则全局变量作用域是除了这个局部外的整个程序,它的生命期与程序生命期一样长。静态局部变量具有局部的作用域,只被初始化一次,自从第一次被初始化直到程序运行结束都一直存在。它和

2016-05-20 21:52:11 3928

原创 《程序员面试笔试宝典》学习笔记(四)程序设计基础

六、结构体与类1、C语言中struct 和union 的区别是什么struct (结构体)与union (联合体)是C语言中两种不同的复合型数据结构。区别: 1)联合体中所有成员共用一块地址空间,联合体的长度为其最长的成员的长度;而结构体中所有成员占用空间是累加的(需要考虑字节对齐)2)对于联合体的不同成员赋值,将会对它的其它成员重写,原来的值不复存在;而对结构体不同成员赋值

2016-05-20 16:08:58 660

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

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