自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

转载 numpy的ndarray与pandas的series和dataframe之间互转

在大数据分析中,比较常用的两个数据分析包就是numpy和pandas,而pandas正是基于numpy构建的含有更高级数据结构和工具的数据分析包,在金融领域应用更是广泛。在实际的工程中,经常遇到的问题就是numpy的ndarray数据结构与pandas的series和dataframe数据结构之间的互相转换问题。现在我分3种情况,在python程序中列一下互转的情况,应该比较全面了。情况1:输入的...

2018-05-01 17:25:15 1804

原创 基于TCP协议的简易C/S通信

通信流程一、建立连接服务器调⽤socket()、bind()、listen() 完成初始化后,调⽤accept()阻塞等待,处于监听端口的状态;客户端调⽤socket()初始化后,调⽤connect()发出SYN段并阻塞等待服务器应答;服务器应答⼀个SYN-ACK段,客户端收到后从connect()返回,同时应答⼀个ACK段,服务器收到后从accept()返回,即三次握手的过程。二、数据传输

2017-09-04 19:18:31 786

转载 进程间通信——管道

一.管道容量:管道容量分为pipi capacity 和 pipe_buf .这两者的区别在于pipe_buf定义的是内核管道缓冲区的大小,这个值的大小是由内核设定的,这个值仅需一条命令就可以查到;而pipe capacity指的是管道的最大值,即容量,是内核内存中的一个缓冲区。pipe_buf: 命令:ulimit -a在终端输入该命令就会出现如下一表:管道容量 si

2017-08-27 15:40:28 382

转载 线程安全与可重入函数

线程安全的概念比较直观。一般说来,一个函数被称为线程安全的,当且仅当被多个并发线程反复调用时,它会一直产生正确的结果。 确保线程安全: 要确保函数线程安全,主要需要考虑的是线程之间的共享变量。属于同一进程的不同线程会共享进程内存空间中的全局区和堆,而私有的线程空间则主要包括栈和寄存

2017-08-27 15:05:10 286

原创 实现sleep函数

sleep()函数函数原型:unsigned int sleep(unsigned int seconds);函数功能: 使调用程序挂起等待seconds秒,或者直到有信号到达使之中断。函数返回值: 若程序挂起到参数所指定的时间则返回0;若有信号中断则返回剩余秒数。实现mysleep()版本1所需函数:1) int sigaction(int signo, const struct siga

2017-08-26 21:11:21 746

原创 gdb调试多进程多线程

gdb是非常强大的UNIX及UNIX-like下的程序调试工具 gdb的使用:在代码编译的时候加上-g选项在命令行输入gdb+文件名调试过程r或run:运行程序。 list/l 行号:显示文件源代码,接着上次的位置往下列,每次列10行。 list/l 函数名:列出某个函数的源代码。 s或step:进入函数调用 breaktrace(或bt):查看各级函数调⽤用及参数 inf

2017-08-25 22:04:13 365

原创 进程间通信——消息队列

消息队列的概念消息队列提供了一种从一个进程向另一个进程发送一个数据块的方法。 每个数据块都被认为是有一个类型,接收者进程接收的数据块可以有不同的类型值。我们可以通过发送消息来避免命名管道的同步和阻塞问题。消息队列与管道不同的是,消息队列是基于消息的,而管道是基于字节流的,且消息队列的读取不一定是先入先出。消息队列与命名管道有一样的不足,就是每个消息的最大长度是有上限的(MSGMAX),

2017-08-24 17:18:12 303

原创 编写一个支持重定向的shell

什么是shell?shell是Linux的“外壳”程序,用户是通过shell与Linux kernel打交道的。shell常被称为命令行解释器。它的功能有:将用户的命令翻译给kernel处理;将kernel的处理结果翻译给用户shell自身就是一个进程,当我们在Linux下打开一个终端时,系统就把shell这个进程加载到内存中了,对于用户输入的命令,shell本身并不去

2017-08-22 15:32:51 388

原创 模拟实现僵尸进程和孤儿进程

僵尸进程和孤儿进程的概念僵尸进程:一个子进程在其父进程没有调用wait()或waitpid()的情况下退出。这个子进程就是僵尸进程。进程在终止时,系统会回收所有内核分配给它的内存、关闭它打开的所有文件等等,但还会保留一些极少的信息,因为进程终止后有些信息对于父进程和内核还是很有用的,例如进程的ID号、进程的退出状态、进程运行的CPU时间等。父进程可以使用 wait/waitpid 等系

2017-08-20 23:23:04 355

原创 C语言模拟实现memcpy和memmove

memcpy和memmove的作用以区别memcpy和memmove都是C语言中的库函数,包含于头文件string.h中。要弄清它们的作用,可以查看一下它们的原型。 先来看看memcpy函数: void * memcpy ( void * destination, const void * source, size_t num );手册上对memcpy函数的说明如下: Copy bloc

2017-08-10 16:36:38 352

原创 MySQL出错问题解决

之前用yum安装过一次MySQL,后来用rpm卸载了,还删除了所有的配置文件什么的,总之就是MySQL在我的Linux中清理得毫!无!痕!迹!然后。。。最近要使用MySQL了,于是我又用yum安装了一遍,但是安装好后service mysqld start失败了。。。谁让我这么折腾呢! 报错信息是这样的:/usr/bin/mysqladmin: error while loading shared

2017-08-04 13:50:02 1298

原创 排序——归并排序

1.排序思路归并排序可以用分治算法的思想来解决。 分治算法的基本思想:当我们求解某些问题时,由于这些问题要处理的数据相当多,或求解过程相当复杂,使得直接求解法在时间上相当长,或者根本无法直接求出。对于这类问题,我们往往先把它分解成几个子问题,找到求出这几个子问题的解法后,再找到合适的方法,把它们组合成求整个问题的解法。如果这些子问题还较大,难以解决,可以再把它们分成几个更小的子问题,以此类推,直至

2017-08-02 22:40:09 300

原创 二叉树经典题目

1.判断一个节点是否在一棵二叉树中 先判断是否在左子树,若在,则不再去右子树中寻找;若不在,再去右子树中寻找。要注意递归的条件判断

2017-08-02 09:36:35 662

原创 排序——交换排序

冒泡排序和快速排序

2017-08-01 21:52:10 227

原创 排序——选择排序

基本思想每一趟从无序区中选出最小的元素,顺序放在有序区的最后,直到全部元素排序完毕。 由于选择排序每一趟总是从无序区中选出全局最小(或最大)的元素,所以适用于从大量元速度中选择一部分排序元素。例如,从10000个元素中选出最小的前10位元素。直接选择排序1.排序思路从第i趟开始,从当前无序区arr[i…n-1]中选出最小元素arr[k],将它与有序区的最后一个元素,也就是无序区的第一个元素交换。每

2017-07-31 21:17:20 248

原创 STL源码剖析——空间配置器

最近拜读了侯捷的《STL源码剖析》一书的前三章内容,很是受教,遂以博客记录之,愿与大家交流分享。碍于鄙人才疏学浅,加之目前水平有限,若有差错,还望不吝赐教。

2017-07-30 21:48:49 288

原创 排序——插入排序

基本思想每次将一个待排序的元素,按其大小插入到已经排好序的子序列的适当位置,知道全部元素插入完成为止。直接插入排序1.排序思路arr[0...i-1]为有序区(刚开始时i=1,有序区只有arr[0]一个元素),arr[i...size]为待排序区,每次将待排序区的第一个元素arr[i]插入到有序区中的适当位置,每趟操作都使有序区增加一个元素,待排序区减少一个元素。2.排序算

2017-07-30 21:46:31 242

原创 C++实现单例模式

一般在实际开发过程中,会专门有一个日志模块,负责写日志,由于在系统的任何地方,我们都有可能要调用日志模块中的函数,进行写日志。那么,如何构造一个日志模块的实例呢?难道,每次new一个日志模块实例,写完日志,再delete?在C++中,可以构造一个日志模块的全局变量,那么在任何地方就都可以用了,是的,不错。但是全局变量是一个定时炸弹,是一个不安全隐患,特别是在多线程程序中,会有很多的不可预测性,

2017-07-29 15:58:28 452

转载 C语言模拟实现继承和多态

面向过程编程与面向对象编程的区别 众所周知,C语言是一种典型的面向过程编程语言,而C++确实在它的基础上改进的一款面向对象编程语言,那么,面向过程与面向对象到底有什么样的区别呢?1.从设计方法角度看 面向过程程序设计方法采用函数(或过程)来描述对数据的操作,但又将函数与其操作的数据分离开来。 面向对象程序设计方法是将数据和对象的操作封装在一起,作为一个整体来

2017-07-28 18:36:43 289

原创 C++实现二叉树的基本操作

树是一种重要的非线性数据结构,二叉树是树型结构的一种重要类型。本学年论文介绍了二叉树的定义,二叉树的存储结构,二叉树的相关术语,以此引入二叉树这一概念,为展开二叉树的基本操作做好理论铺垫。二叉树的基本操作主要包含以下几个模块:二叉树的遍历方法,计算二叉树的结点个数,计算二叉树的叶子结点个数,二叉树深度的求解等内容。

2017-07-23 20:36:55 894

原创 链表翻转

给出一个链表和一个数k,比如链表1→2→3→4→5→6若k=2,翻转后2→1→4→3→6→5;若k=3,翻转后3→2→1→6→5→4;若k=4,翻转后4→3→2→1→5→6。分析可知链表翻转是链表逆置的升级变形,也可以说链表逆置是链表翻转的一个特殊情况,链表逆置相当于翻转整条链表,链表翻转相当于多次逆置部分链表,再把相应结点连接起来。pNode ReverseList(pNod

2017-07-23 16:16:51 273

原创 栈和队列经典题目汇总

1. 实现一个栈,要求实现Push(出栈)、Pop(入栈)、Min(返回最小值的操作)的时间复杂度为O(1) 2. 使用两个栈实现一个队列 3. 使用两个队列实现一个栈 4. 元素出栈、入栈顺序的合法性。如入栈的序列(1,2,3,4,5),出栈序列为(4,5,3,2,1) 5. 一个数组实现两个栈

2017-07-22 15:33:41 4961

原创 shell脚本编写彩色进度条

配色规则\033[0m 关闭所有属性 \033[1m 设置高亮度 \033[4m 下划线 \033[5m 闪烁 \033[7m 反显 \033[8m 消隐 \033[30m – \033[37m 设置前景色 \033[40m – \033[47m 设置背景色 \033[nA 光标上移n行 \033[nB 光标下移n行 \033[nC 光标右移n列 \

2017-07-18 17:24:16 462

原创 Linux下反引号``和$()的比较以及eval命令的调研

``和$()都起着命令代换的作用,Shell先执行其中的命令,然后将输出结果立刻代换到当前命令行中。分别用``和$()输出当前时间的Shell脚本如下它们的共同点是都可以命令转换,

2017-07-12 11:04:10 388

原创 单链表经典题目

顺序表便于理解,容易实现;链表不需要事先分配存储空间,每次插入和删除结点时动态的开辟和释放空间,便于存储空间的管理;顺序表事先开辟和随后增加的空间是一块存储位置相邻的连续存储空间,当存储的数据量很大时,内存可能无法找到一块足够大的连续空间予以分配;链表的结点之间是通过指针连接,在内存中可以分散存储,可提高存储空间利用率。

2017-07-10 22:16:06 1493

原创 关于crontab和crond

定时任务?顾名思义即固定一段时间执行一次的任务。crontab和crondcrontab,该词来源于希腊语chronos,原意是时间。在Linux下是一个命令,用于设置周期性被执行的指令。 crond,与crontab是不可分割的,是crontab的守护进程。

2017-06-30 11:49:20 372

原创 关于端口号

由于端口数量较多,为了对每个端口进行区分,将每个端口进行了编号,这就是端口号。物理端口指的是物理存在的端口,如ADSL Modem、集线器、交换机、路由器上用 于连接其他网络设备的接口,如RJ-45端口、SC端口等等。逻辑端口是指逻辑意义上用于区分服务的端口,如TCP/IP协议中的服务端口,端口号的范围从0到65535,比如用于浏览网页服务的80端口,用于FTP服务的21端口等。

2017-06-29 19:00:16 442

原创 守护进程以及fork两次的问题

守护进程? 守护进程也称“精灵进程”,一般而言,守护进程7*24h运行着,它不受用户登录与注销的影响。Linux中的很多系统服务进程就是守护进程。如何识别守护进程? 凡是TPGID为-1的进程都是守护进程,通常守护进程的命名以”d”结尾,表示daemon。

2017-06-28 19:48:00 506

原创 CRC校验

计算机网络中设计数据链路层的主要目的是采取差错检验、差错控制和流量控制等方法,将有差错的物理线路改进成无差错的数据链路。一般设计差错控制方法时常采取纠错码和检错码两种策略,纠错码能够发现并自动纠正传输差错;检错码可以发现错误,但是不能自动纠正,需通过重传机制达到纠错目的。

2017-06-28 14:10:32 2920

原创 走迷宫以及求迷宫最优解

走迷宫以及求迷宫最优解

2017-05-19 17:16:58 608

原创 STL中list的使用

STL中的list是一个双向链表容器,今天我准备研究一下它的使用方法。

2017-05-01 16:29:55 228

原创 C++模板类的类型萃取技术

模板是泛型编程的基础,所谓泛型编程就是指编写与类型无关的逻辑代码,是一种复用的方式。所以使用模板的目的就是方便程序员编写与类型无关的代码,减少相似代码在程序中出现的概率。假如我们要编写一个判断两个变量是否相等的函数,那么为了处理int,char,double等不同类型的变量,我们得一一写出这些类型的重载函数。这样不仅代码会显得十分冗余,也会增加程序员无谓的工作量。为了解决这个问题,C++中引入

2017-04-10 20:07:50 480

原创 C++实现双向链表

C++实现双向链表

2017-04-08 19:36:43 209

原创 C++实现顺序表

C++实现顺序表

2017-04-07 23:25:15 441

原创 用C++实现单链表

C++实现单链表

2017-04-07 15:19:04 450

原创 浅谈继承与多态

学习C++的人都知道面向对象程序设计有4个主要特点:抽象、封装、继承和多态性。可见继承和多态在C++中占据的分量不一般。本篇文章分别用阐述概念和举栗说明两种方式研究继承与多态,其中会穿插图片说明,望达到轻松理解C++中继承与多态机制的效果。继承的概念所谓继承就是在一个已有类的基础上建立一个新的类。以存在的类称为“基类”或“父类”,新建的类称为“派生类“或”子类”。继承机制可提

2017-04-03 18:01:33 274

原创 简单的vim配置及插件安装

vim是Linux系统中最常用的文本编辑器,我们可以通过修改配置文件.vimrc和下载插件来定制专属自己的vim IDE。1.常规配置设置行号:在.vimrc中输入set nu即可。设置高亮:输入syntax enable、syntax on设置自动缩进:输入set autoindent、set cindent设置tab键的宽度:set tabstop=4统一缩进为4:se

2017-03-27 19:33:02 473

原创 Linux中的粘滞位

众所周知,Linux系统中umask的默认权限掩码是0022创建目录的默认权限=777-022=755,创建文件的默认权限=666-022=644。权限运算的时候我们一般都是用三位数字,那么0022中第一个数字到底代表什么呢?在Linux中,除开写、读、执行三个权限,还包括suid、sgid、sticky这三种特殊权限,而0022中第一个0即代表特殊权限位。接下来,我打算研究一下s

2017-03-26 19:18:45 306

原创 Linux find指令

Linux下find命令在目录结构中搜索文件,并执行指定的操作,提供了相当多的查找条件,功能很强大。1.命令格式find pathname -options [-print -exec -ok ......]2.命令参数pathname:find命令所查找的目录路径。比如用.表示当前目录,用/来表示根目录。-print:find命令将匹配的文件输出到标准输出。-exec:f

2017-03-25 18:59:47 314

原创 Linux中有关目录的权限和用stat查看文件时三个时间点解析

Linux中有关目录的权限和用stat查看文件时三个时间点解析

2017-03-19 16:05:02 440

空空如也

空空如也

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

TA关注的人

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