自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 多进程和进程间的通信

一、多进程多进程合适计算密集型的应用,以下给出python中两个模块:subprocess和multiprocessing。1、subprocesssubprocess是用来执行其他的可执行程序的,即执行外部命令。 它是os.fork() 和 os.execve() 的封装。 它启动的进程不会把父进程的模块加载一遍。使用subprocess的通信机制比较少,通过管道或者信号机制。

2017-12-27 16:24:35 327

原创 多线程和线程的同步

一、线程同步的目的?有一些特定的代码或者数据不希望被多个线程执行,比如:一个全局变量被多个线程同时做自增操作时,可能会造成逾期结果和实现结果不一致的问题。二、线程同步的几种方法线程同步有很多种方法,以下介绍三种方法:锁同步、信号量、Events事件。三、锁同步1、基本原理锁是Python的threading模块提供的最基本的同步机制。在任一时刻,一个锁对象可能被一个线程

2017-12-27 10:53:29 191

原创 进程与线程的理解

一、进程与线程的区别1、进程进程是一个执行中的程序,每个进程有自己的地址空间、内存和数据栈等,进程和进程之间是相互独立的吗,每个进程都有自己的PCB,所以只能采用进程间通信(IPC)实现数据共享。2、线程线程可以理解为进程中的一条条指令,每一个进程中都有一个主线程,各个线程和主线程之间共享一片数据空间;因此相比与独立的进程而言,线程间的信息共享和通信更加容易实现。

2017-12-26 20:45:42 160

原创 基于SocketServer,实现一个FTP传输协议

一、为了实现一个FTP协议(大型文件的传输协议),这里引入了Python中的SocketServer模块,可以处理不同的任务请求,即上传和下载功能。二,SocketServer模块底层的实现细节可以查看下面链接的博客,讲的十分详细:点击打开链接这里说明一下自己的理解。首先,该模块在实例化的过程中,通过层层的继承关系,创建套接字socket,绑定到服务端口,再监听客户端;如果有链

2017-12-20 18:23:50 2245

原创 浅谈自己理解的socket(2)

一、我们在启动服务器端之后,由于只有一个进程可以为客户端提供服务,当有多个客户端链接j进来的时候,服务器将无法为每个客户端提供服务。我们解决的方法有以下一种办法:1、进来一个客户端链接,启动一个子进程为其服务。2、进来一个客户端链接,启动一个子线程为其服务。3、只有一个主进程,就排队为客户端服务,即进来一个客户端,建立一个socket套接字,与该链接进行数据交换,直到该服务结束,关

2017-12-20 12:04:27 394

原创 浅谈自己理解的socket(1)

一、socket是什么?Socket是进程通讯的一种方式,即调用这个网络库的一些API函数实现分布在不同主机的相关进程之间的数据交换。因此可以socket这种方式实现进程间的通信。二、客户端服务端模式1、在TCP/IP网络应用中,通信的两个进程间相互作用的主要模式是客户/服务器(Client/Server,C/S)模式,即客户向服务器发出服务请求,服务器接收到请求后,提供相

2017-12-20 09:33:37 993

原创 列表、元组、字典、集合

最近学习了Python爬虫,有的时候对列表、元组、字典和集合这些数据结构会搞混乱,以下针对上述四种数据结构进行区别。列表(List):初始化:list1=[1,"小甲鱼",3.14,[1,2,3]]; 可以利用中括号进行初始化,同时可以对列表中的数据进行操作。元组(tuple):初始化: tuple1=(1,2,3,4,5,6); 可以利用小括号进行初始化,不能过对元组中的数据进行

2017-11-21 19:52:33 1197

原创 二叉搜索树

二叉搜索树是一个二叉树来组织的,二叉搜索树父节点的左孩子的关键字不大于它的关键字,父节点的右孩子的关键字不小于父节点的关键字。二叉树的遍历有前序遍历、中序遍历、后序遍历,其中中序遍历输出的关键字按照从小到大的顺序。我们定义的二叉搜索树类具有查询关键字、返回最大最小关键字、返回某个节点的前驱和后继、插入和删除二叉树某个节点等功能。以下是二叉树的类定义://name:BST.h#if

2017-11-10 22:18:37 132

原创 最小堆及基于最小堆的最小优先队列

最小堆具有的性质:最小堆的父亲节点比子节点的值小在最小堆的类中我们定义的函数主要有:维护最小堆、建立最小堆和利用最小堆进行排序以下是最小堆的定义://name:myMinHeap.h#ifndef MY_MIN_HEAP_H#define MY_MIN_HEAP_H#include#includeusing namespace std;using std::vector

2017-11-10 21:47:21 562

原创 最大堆及基于最大堆的最大优先队列

堆也是一类特殊的数据结构最大堆具有的性质:父节点的值大于子节点的值在最大堆的类中我们定义了主要函数有:维护最大堆,建立最大堆,利用最大堆进行排序以下是最大堆类的定义://name:myMaxHeap.h//最大堆,利用vector存储其中的元素#ifndef MY_MAX_STACK1_H#define MY_MAX_STACK1_H#include#include

2017-11-10 21:35:48 410

原创 算法导论之栈

栈的结构特点就是先进后出,在一些算法中会用到该数据结构,比如:进行二叉树的层序遍历的时候等。下面给出栈的代码,代码使用vector存储栈中的元素。头文件://name:myStack1.h#ifndef MY_STACK1_H#define MY_STACK1_H#include#include//#define MAX_SIZE_S 1000using names

2017-11-05 21:38:09 153

原创 算法导论之链表

最近在学习算法导论,为了督促自己能够持久的学习下去,就把自己学习过程中的代码记录一下,希望看到的人可以一同随我学习。就先从最简单的链表写起,准确的说应该是双链表。大致先简单的介绍一下链表的优缺点,以便在后面对应的数据结构中使用该结构。优点:链表在内存中存储并不是连续的,可以很方便的进行插入和删除操作。缺点:由于链表的不连续存储特性,导致索引操作不能使用下标进行,因此对链表进行搜索操作时

2017-11-05 20:29:26 246

原创 23. Merge k Sorted Lists

题目描述:对K个有序的链表进行合并,合并成一个有序的链表该题目需要思考的问题:1、如何将有序的多个链表合并成为一个链表。解决该问题的思路:1、首先对两个有序的链表进行归并;2、由于该问题的解决方案就是其子问题的解决方案,再利用递归的思想进行多次归并。具体的代码如下:/** * Definition for singly-linked list. * struct

2017-06-04 19:20:40 149

原创 215. Kth Largest Element in an Array

此问题,最简单的解决方法就是排序:1、如果使用排序算法,有很多:快排、堆排序、归并排序等,它们的时间复杂度都是n*log(n)级别的;2、这里可以使用堆排序进行优化,首先对初始数组进行最大堆初始化,之后每次都用数组最后的元素覆盖堆顶的元素,循环(k-1)次后堆顶元素即为答案。

2017-06-04 19:03:24 136

原创 Add to List 451. Sort Characters By Frequency

解决上述问题,需要思考两个问题:1、如何统计string字符串中的每个字符出现的频率;2、如何按照字符出现的频率从高到底的输出每个字符。以下是解决上述问题的两个方法:1、使用hash_map哈希表来统计每个字符出现的频率;2、使用最大优先队列将字符出现的频率依次入队,并排序。class Solution {public: string frequen

2017-06-04 18:38:16 202

空空如也

空空如也

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

TA关注的人

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