- 博客(31)
- 收藏
- 关注
原创 MongoDB 索引的创建注意事项、以及建索引导致锁库的解决方案
MongoDB索引的创建注意事项 在数据量超大的情形下,任何数据库系统在创建索引时都是一个耗时的大工程。MongoDB也不例外。因此,MongoDB索引的创建有两种选择,一个是前台方式,一个是后台方式。那这两种方式有什么差异呢,在创建索引时是否能观察到索引完成的进度呢。本文将是基于此的描述,同时也描述了索引创建相关的注意事项。...
2018-11-25 17:01:37
3091
转载 MongoDB 运行状态、性能监控,分析
这篇文章的目的是让你知道怎么了解你正在运行的Mongdb是否健康。转载自http://tech.lezi.com/archives/290mongostat详解mongostat是mongdb自带的状态检测工具,在命令行下使用。它会间隔固定时间获取mongodb的当前运行状态,并输出。如果你发现数据库突然变慢或者有其他问题的话,你第一手的操作就考虑采用mongostat来查看mongo的状...
2018-11-25 16:38:04
443
原创 MongoDB中Bson文档的创建
MongoDB中存储Bson文档的方式MongoDB中以bson的数据格式存储文档,C驱动程序使用LibsBon创建BSON文档。构建bson文档的主要方式如下:附加关键值对,使用BCON,或解析JSON。示例:创建如下所示的一个bson文档 { id: "9239-sakjh-8wej-ksh...
2018-08-06 23:13:22
3466
转载 海量数据面试题整理
1、给定a、b两个文件,各存放50亿个url,每个url各占64字节,内存限制是4G,让你找出a、b文件共同的url?方案1:可以估计每个文件的大小为5G×64=320G,远远大于内存限制的4G。所以不可能将其完全加载到内存中处理。考虑采取分而治之的方法。s 遍历文件a,对每个url求取,然后根据所取得的值将url分别存储到1000个小文件(记为)中。这样每个小文件的大约为300M。s
2016-11-12 11:42:26
616
原创 I/O多路转接之epoll
I/O多路转接之epollepoll:处理大批量句柄而做了改进的poll。工作模式:1、边缘触发(ET)当收到数据的时候,通知你读取数据。当你没有读取的时候,不会通知你,可能造成数据丢失。当你来读取数据的时候,就应该对这次的数据读取完毕。 LT(level triggered)是epoll缺省的工作方式,并且同时支持block和no-block socket.在这种
2016-08-10 23:31:25
884
原创 I/O多路转接之select
I/O多路转接之select 作用:是用来让我们的程序监视多个文件句柄的状态变化的。程序会停在select这里等待,直到被监视的文件句柄有一个或多个发生了状态改变。 函数原型: 中间的三个参数readset、writeset和exceptset指定我们要让内核测试读、写和异常条件的描述字。如果对某一个的条件不感兴趣,就可以把它设为空指针。st
2016-08-09 10:51:36
592
原创 TCP(传输控制协议)之端口分类
TCP的端口(用16位端口号来标示一个端口)复用:应用层所有的应用进程都可以通过运输层再传送到IP层,即复用。分用:运输层从IP层收到的数据后必须交付给指明的应用进程,即分用。注意:端口只具有本地意义,只是为标志本计算机应用层中的各个进程在和运输层交互时的层间接口,在因特网上不同主机中,相同的端口号没有关联。TCP的端口号可分为两大类:1、服务器端使
2016-08-07 00:09:36
4602
原创 TCP协议
TCP协议(传输控制协议)特点: 1、面向连接的传输层协议 2、每一条TCP连接只能有两个端点,及只能是一对一的 3、TCP提供可靠交付的服务 4、TCP提供全双工通信 5、面向字节流注意:TCP连接的两个端点,不是主机,不是主机的IP地址,不是应用进程,不是传输层的协议端口,而是套接字(socket)。
2016-08-06 17:38:11
2744
原创 AVL平衡搜索树
AVL树又称高度平衡的二叉搜索树。性质: 1. 左子树和右子树的高度之差的绝对值不超过1 2. 树中的每个左子树和右子树都是AVL树 3. 每个节点都有一个平衡因子(balance factor--bf),任一节点的平衡因子是-1,0,1。(每个节点的平衡因子等于右子树的高度减去左子树的高度 ) 当插入一个节点时,如果这个
2016-08-04 23:00:37
411
原创 IP数据报及其路由表
IP数据报格式16位标识: IP软件在存储器中维持一个计数器,每产生一个数据报,计数器就加1,并将此值赋给标识字段,但此标识并不是序号,因为IP是无连接服务,数据报不存在按序接受的问题。当数据报由于长度超过网络的MTU( MTU最大传输单元:数据帧中的有效载荷的最大长度,不包括首部的长度,若大于MTU,则需要分片,分片是由IP层完成的。组装也是由IP层自行完成。)而必须
2016-08-02 21:12:28
2264
原创 终端,作业控制与守护进程
进程组 概念:一个或多个进程的集合。 每一个进程除了有一个进程ID外,还属于一个进程组,同时也只能属于一个进程组。每个进程组都有一个唯一的进程组ID,且都可以有一个组长进程。一般在进程组中,第一个进程是组长进程。 为啥要创建进程组呢?为了方便对进程进行管理。假设要完成一个任务,需要同时并发10个进程,当用户处于某种原因要终止这个任务时,如若没有进程组,就需要手动的一个一个的去杀死这10
2016-08-02 01:13:24
1827
原创 平衡搜索树之B-树
B-树: 一种适合外查找的平衡多叉树(有些地方写的是B-树,注意不要误读 成"B减树") 。M阶的B树满足如下性质: 1、根节点至少有两个孩子; 2、每个非根节点有[[M/2],M]个孩子; 3、每个非根节点有[[M/2],M-1]个关键字,并且以升序排列; 4、key[i]和key[i+1]之间的孩子节点的
2016-08-01 19:05:39
713
原创 信号
信号的产生、阻塞以及捕捉用kill -l命令可以查看系统定义的信号列表:650) this.width=650;" src="/e/u261/themes/default/images/spacer.gif" style="background:url("/e/u261/lang/zh-cn/images/localimage.png") no-repeat center;border:1px s
2016-08-01 00:32:55
924
原创 死锁的产生以及处理
死锁的概念: 如果一组进程中的每一个进程都在等待仅由改组进程中的其他进程才能引发的事件,那么改组进程是死锁的。产生死锁的原因: 1、竞争资源引发进程死锁 1)可剥夺资源和不可剥夺资源 系统中的资源可以分为两类,一类是可剥夺资源,是指某进程在获得这类资源后,该资源可以再被其他进程或系统剥夺。例如,优先权高的进程可以剥夺优先权低的进程的处理机。又如,内存区可由存储器管理程序,把一
2016-08-01 00:32:52
530
原创 共享内存及其用mmap实现共享内存
一、什么是共享内存顾名思义,共享内存就是允许两个不相关的进程访问同一个逻辑内存。共享内存是在两个正在运行的进程之间共享和传递数据的一种非常有效的方式。不同进程之间共享的内存通常安排为同一段物理内存。进程可以将同一段共享内存连接到它们自己的地址空间中,所有进程都可以访问共享内存中的地址,就好像它们是由用C语言函数malloc分配的内存一样。如果某个进程向共享内存写入数据,所做的改动将立即影响到可以访
2016-08-01 00:32:49
6391
原创 linux下信号量及其SEM_UNDO标志
AT&T的贝尔实验室,对Unix早期的进程间通信进行了改进和扩充,形成了"system V IPC",其通信进程主要局限在单个计算机内。IPC对象指的是共享内存(share memory)、消息队列(message queue)和信号灯集(semaphore)。信号灯(semaphore),也叫信号量。本质;一种数据操作锁(本身是一个计数器,是对临界资源的保护),它本身不具有数据交换的功能,而是通
2016-08-01 00:32:47
1949
原创 进程间通信之管道
进程间通信之管道进程间通信:每个进程各自有不同的用户地址空间,任何一个进程的全局变量在另一个进程中都看不到,所以进程之间要交换数据必须通过内核(操作系统),在内核中开辟一块缓冲区,进程1把数据从用户空间拷到内核缓冲区,进程2再从内核缓冲区把数据读走,内核提供的这种机制称为进程间通信。650) this.width=650;" src="http://s4.51cto.com/wyfs02/M00/
2016-08-01 00:32:44
3078
原创 linux中make命令的简单使用以及Makefile文件的书写
Makefile 会不会写makele,从一个侧面说明了一个是否具备完成大型工程的能力。 一个工程中的源件不计数,其按类型、功能、模块分别放在若干个目录中,makele定义了一系列的规则来指定,哪些文件需要先编译,哪些文件需要后编译,哪些文件需要重新编译,甚至于进行更复杂的功能操作,因为makele就像一个Shell脚本一样,其中也可以执行操作系统的命令。makele带来的好处就
2016-08-01 00:32:41
8558
原创 ctags的简单配置及其使用
Tag文件简介: tags文件(标签文件)是由ctags程序产生的一个索引文件, ctags程序其是叫"Exuberant Ctags", 是Unix上面ctags程序的替代品, 并且比它功能强大, 是大多数Linux发行版上默认的ctags程序. 那么tags文件是做什么用的呢? 如果你在读程序时看了一个函数调用, 或者一个变量, 或者一个宏等等, 你想知道它们的定义在哪儿, 怎么办呢?
2016-08-01 00:32:38
1568
原创 vim的简单配置
配置文件的默认位置: 在目录/etc/下面,有个名为vimrc的文件,这是系统中公共的vim配置文件,对所有用户都有效。而在每个用户的主目录下,都可以建立私有的配置文件,命名为:“.vimrc”。 用户可以在自己主目录下建立私有的配置文件 步骤: 1、切换自己的登录名称su liu153(用户的登录名),输入密码即可 2、设置语法高亮 syntax on
2016-08-01 00:32:36
473
原创 vim(linux编辑器)的使用
vi/vim的区别: 1)相同:都是多模式编辑器 2)不同:vim是vi的升级版本,不仅兼容vi的所有指令,而且还有一些新的特性在里面,例如语法加亮,可视化操作不仅可以在终端运行,也可以运行于x window、macos、windows。vi的常见模式: 1)命令行模式 控制屏幕上光标的移动,字符、字或行的删除,移动复制某区段及进入Insert mode下,或者到last
2016-08-01 00:32:33
724
原创 有关字符串中的函数及其部分面试题
有关字符串的函数(strlen、strcat、strcpy、strcmp、strncat、strncpy、strncmp、 strchr、strrchr、strpbrk、strstr、strrstr、memcpy、memmove)#pragma once#include#include//求取字符串的长度//1. 利用递归方法实现 int my_strlen1(char* p){ if(*p !=
2016-08-01 00:32:30
488
原创 非递归实现二叉树的遍历(前序、中序、后序)
树的定义本是递归定义,所以采用递归的方法实现遍历算法,更加让人理解,且代码简单方便。若采用非递归的方法实现,须得利用栈模拟实现。 栈的特点(后进先出) 非递归实现二叉树的前序遍历: 原理如图所示:650) this.width=650;" src="http://s5.51cto.com/wyfs02/M01/7F/5A/wKiom1cbDDCjHd_EAAAl8V5hkCc60
2016-08-01 00:32:27
967
原创 复杂链表的复制
复杂链表的概念: 在复杂链表中,每个结点除了有一个_pnext指针指向下一个结点外,还有一个_pSibling指向链表中的任意结点或者NULL。如下图650) this.width=650;" src="http://s5.51cto.com/wyfs02/M01/7F/4B/wKiom1cY2x2gFuGTAAAWm0pVDaw768.png" title="QQ截图20160421215
2016-08-01 00:32:24
977
原创 二叉树的简单实现及其部分面试题
树的基本概念: 树是n(n>=0)个有限个数据的元素集合,形状像一颗倒过来的树。 结点:结点包含数据和指向其它结点的指针。 根节点:树第一个结点称为根节点。 结点的度:结点拥有的子节点个数。 叶节点:没有子节点的节点(度为0)。 父子节点:一个节点father指向另一个节点child,则child为孩子节点,father为父亲结点。 兄弟节点:具有相同父节
2016-08-01 00:32:21
502
原创 迷宫问题
基于栈实现解决迷宫问题 栈是一种非常常见的数据结构,在计算机领域被广泛应用,例如操作系统会给每个线程创建一个栈用来存储函数调用时各个函数的参数,返回地址及临时变量等,栈的特点是后进先出,即最后被压入(push)栈的元素会第一个被弹出(pop)。 如下所示给定一个迷宫(“1”表示此路不通,“0”表示此路通过),那么给定一个入口点,如何找到一条通路呢?如果一个迷宫的规模很大,又如
2016-08-01 00:32:18
524
原创 C语言实现单链表的基本操作及其部分面试题
//单链表的基本数据类型及其结构 typedef int DataType; typedef struct LinkNode { DataType data; struct LinkNode *next; }LinkNode,*pLinkNode,*pLinkList; //单链表的初始化 void InitLinkList(p
2016-08-01 00:32:15
587
原创 利用C语言实现动态顺序表
利用C语言实现动态顺序表1. 数据类型及动态分配顺序存储结构#define INIT_SIZE 10 //当前默认有效值#define DEFAULT_INC 10 //动态分配默认增长个数typedef int DataType;typedef struct SeqList{ DataType* d
2016-08-01 00:32:13
650
原创 利用C语言实现顺序表
利用C语言实现静态顺序表//---------- 头文件#include "SeqList.h" --------------------#pragma once#include#include#include#define MAX 100//------------------ 定义数据类型 ----------------------------typedef int DataType;//-
2016-08-01 00:32:10
497
原创 利用c语言实现在一个3*3棋盘游戏
在一个3*3矩阵中下棋,如有一方连续三颗棋子在一条直线上,则获胜。注:下棋时,输入的是棋子所对应矩阵的具体坐标。具体代码如下:#include#include#includechar a[3][3]={ 0 };int size =9;void qipan() //打印棋盘{ int i=0,j=0; printf(" | | \n"); for(i=0;i { printf("_
2016-08-01 00:32:07
1519
原创 在windows7系统上如何利用命令提示符(cmd)创建一个既安全又稳定的wifi
在如今的社会里,网络似乎已成为我们日常生活不可或缺的的一部分,现在很多人都会利用手机,ipad畅游在网络的世界里,当家里没有路由器的朋友会选择何种方式?用流量,貌似太贵!在这里,给大家分享一个在windows操作系统上利用命令提示符(CMD)创建无线wifi的方法。 前提:是应同时具备有线网卡和无线网卡,并通过有线网卡连接到internet方法与步骤: 第一步,用鼠标点击计算机
2016-08-01 00:32:04
1183
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人