<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[醒目的博客]]></title><description><![CDATA[IT]]></description><link>https://blog.youkuaiyun.com/m0_37067296</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; m0_37067296]]></copyright><item><title><![CDATA[多进程和进程间的通信]]></title><link>https://blog.youkuaiyun.com/m0_37067296/article/details/78913615</link><guid>https://blog.youkuaiyun.com/m0_37067296/article/details/78913615</guid><author>m0_37067296</author><pubDate>Wed, 27 Dec 2017 16:24:35 +0800</pubDate><description><![CDATA[一、多进程
多进程合适计算密集型的应用，以下给出python中两个模块：subprocess和multiprocessing。
1、subprocess
subprocess是用来执行其他的可执行程序的，即执行外部命令。 它是os.fork() 和 os.execve()
 的封装。 它启动的进程不会把父进程的模块加载一遍。使用subprocess的通信机制比较少，通过管道或者信号机制。]]></description><category></category></item><item><title><![CDATA[多线程和线程的同步]]></title><link>https://blog.youkuaiyun.com/m0_37067296/article/details/78909787</link><guid>https://blog.youkuaiyun.com/m0_37067296/article/details/78909787</guid><author>m0_37067296</author><pubDate>Wed, 27 Dec 2017 10:53:29 +0800</pubDate><description><![CDATA[一、线程同步的目的？
有一些特定的代码或者数据不希望被多个线程执行，比如：一个全局变量被多个线程同时做自增操作时，可能会造成逾期结果和实现结果不一致的问题。
二、线程同步的几种方法
线程同步有很多种方法，以下介绍三种方法：锁同步、信号量、Events事件。
三、锁同步
1、基本原理

锁是Python的threading模块提供的最基本的同步机制。在任一时刻，一个锁对象可能被一个线程]]></description><category></category></item><item><title><![CDATA[进程与线程的理解]]></title><link>https://blog.youkuaiyun.com/m0_37067296/article/details/78906313</link><guid>https://blog.youkuaiyun.com/m0_37067296/article/details/78906313</guid><author>m0_37067296</author><pubDate>Tue, 26 Dec 2017 20:45:42 +0800</pubDate><description><![CDATA[一、进程与线程的区别
1、进程
进程是一个执行中的程序，每个进程有自己的地址空间、内存和数据栈等，进程和进程之间是相互独立的吗，每个进程都有自己的PCB，所以只能采用进程间通信（IPC）实现数据共享。
2、线程
线程可以理解为进程中的一条条指令，每一个进程中都有一个主线程，各个线程和主线程之间共享一片数据空间；因此相比与独立的进程而言，线程间的信息共享和通信更加容易实现。]]></description><category></category></item><item><title><![CDATA[基于SocketServer,实现一个FTP传输协议]]></title><link>https://blog.youkuaiyun.com/m0_37067296/article/details/78856206</link><guid>https://blog.youkuaiyun.com/m0_37067296/article/details/78856206</guid><author>m0_37067296</author><pubDate>Wed, 20 Dec 2017 18:23:50 +0800</pubDate><description><![CDATA[一、为了实现一个FTP协议（大型文件的传输协议），这里引入了Python中的SocketServer模块，可以处理不同的任务请求，即上传和下载功能。
二，SocketServer模块底层的实现细节可以查看下面链接的博客，讲的十分详细：
点击打开链接

这里说明一下自己的理解。
首先，该模块在实例化的过程中，通过层层的继承关系，创建套接字socket，绑定到服务端口，再监听客户端；如果有链]]></description><category></category></item><item><title><![CDATA[浅谈自己理解的socket（2）]]></title><link>https://blog.youkuaiyun.com/m0_37067296/article/details/78851701</link><guid>https://blog.youkuaiyun.com/m0_37067296/article/details/78851701</guid><author>m0_37067296</author><pubDate>Wed, 20 Dec 2017 12:04:27 +0800</pubDate><description><![CDATA[一、我们在启动服务器端之后，由于只有一个进程可以为客户端提供服务，当有多个客户端链接j进来的时候，服务器将无法为每个客户端提供服务。
我们解决的方法有以下一种办法：
1、进来一个客户端链接，启动一个子进程为其服务。
2、进来一个客户端链接，启动一个子线程为其服务。
3、只有一个主进程，就排队为客户端服务，即进来一个客户端，建立一个socket套接字，与该链接进行数据交换，直到该服务结束，关]]></description><category></category></item><item><title><![CDATA[浅谈自己理解的socket（1）]]></title><link>https://blog.youkuaiyun.com/m0_37067296/article/details/78849569</link><guid>https://blog.youkuaiyun.com/m0_37067296/article/details/78849569</guid><author>m0_37067296</author><pubDate>Wed, 20 Dec 2017 09:33:37 +0800</pubDate><description><![CDATA[一、socket是什么？
Socket是进程通讯的一种方式，即调用这个网络库的一些API函数实现分布在不同主机的相关进程之间的数据交换。

因此可以socket这种方式实现进程间的通信。
二、客户端服务端模式
1、在TCP/IP网络应用中，通信的两个进程间相互作用的主要模式是客户/服务器（Client/Server,
C/S）模式，即客户向服务器发出服务请求，服务器接收到请求后，提供相]]></description><category></category></item><item><title><![CDATA[列表、元组、字典、集合]]></title><link>https://blog.youkuaiyun.com/m0_37067296/article/details/78596067</link><guid>https://blog.youkuaiyun.com/m0_37067296/article/details/78596067</guid><author>m0_37067296</author><pubDate>Tue, 21 Nov 2017 19:52:33 +0800</pubDate><description><![CDATA[最近学习了Python爬虫，有的时候对列表、元组、字典和集合这些数据结构会搞混乱，以下针对上述四种数据结构进行区别。
列表（List）：
初始化：list1=[1,"小甲鱼",3.14,[1,2,3]]; 可以利用中括号进行初始化，同时可以对列表中的数据进行操作。
元组（tuple）:
初始化： tuple1=(1,2,3,4,5,6); 可以利用小括号进行初始化，不能过对元组中的数据进行]]></description><category></category></item><item><title><![CDATA[二叉搜索树]]></title><link>https://blog.youkuaiyun.com/m0_37067296/article/details/78503780</link><guid>https://blog.youkuaiyun.com/m0_37067296/article/details/78503780</guid><author>m0_37067296</author><pubDate>Fri, 10 Nov 2017 22:18:37 +0800</pubDate><description><![CDATA[二叉搜索树是一个二叉树来组织的，二叉搜索树父节点的左孩子的关键字不大于它的关键字，父节点的右孩子的关键字不小于父节点的关键字。
二叉树的遍历有前序遍历、中序遍历、后序遍历，其中中序遍历输出的关键字按照从小到大的顺序。
我们定义的二叉搜索树类具有查询关键字、返回最大最小关键字、返回某个节点的前驱和后继、插入和删除二叉树某个节点等功能。
以下是二叉树的类定义：
//name:BST.h
#if]]></description><category></category></item><item><title><![CDATA[最小堆及基于最小堆的最小优先队列]]></title><link>https://blog.youkuaiyun.com/m0_37067296/article/details/78503594</link><guid>https://blog.youkuaiyun.com/m0_37067296/article/details/78503594</guid><author>m0_37067296</author><pubDate>Fri, 10 Nov 2017 21:47:21 +0800</pubDate><description><![CDATA[最小堆具有的性质：最小堆的父亲节点比子节点的值小
在最小堆的类中我们定义的函数主要有：维护最小堆、建立最小堆和利用最小堆进行排序
以下是最小堆的定义：
//name:myMinHeap.h
#ifndef MY_MIN_HEAP_H
#define MY_MIN_HEAP_H

#include
#include

using namespace std;
using std::vector]]></description><category></category></item><item><title><![CDATA[最大堆及基于最大堆的最大优先队列]]></title><link>https://blog.youkuaiyun.com/m0_37067296/article/details/78503517</link><guid>https://blog.youkuaiyun.com/m0_37067296/article/details/78503517</guid><author>m0_37067296</author><pubDate>Fri, 10 Nov 2017 21:35:48 +0800</pubDate><description><![CDATA[堆也是一类特殊的数据结构
最大堆具有的性质：父节点的值大于子节点的值
在最大堆的类中我们定义了主要函数有：维护最大堆，建立最大堆，利用最大堆进行排序
以下是最大堆类的定义：
//name:myMaxHeap.h
//最大堆，利用vector存储其中的元素

#ifndef MY_MAX_STACK1_H
#define MY_MAX_STACK1_H

#include
#include
]]></description><category></category></item><item><title><![CDATA[算法导论之栈]]></title><link>https://blog.youkuaiyun.com/m0_37067296/article/details/78452735</link><guid>https://blog.youkuaiyun.com/m0_37067296/article/details/78452735</guid><author>m0_37067296</author><pubDate>Sun, 05 Nov 2017 21:38:09 +0800</pubDate><description><![CDATA[栈的结构特点就是先进后出，在一些算法中会用到该数据结构，比如：进行二叉树的层序遍历的时候等。
下面给出栈的代码，代码使用vector存储栈中的元素。
头文件：
//name:myStack1.h

#ifndef MY_STACK1_H
#define MY_STACK1_H

#include
#include

//#define MAX_SIZE_S 1000

using names]]></description><category></category></item><item><title><![CDATA[算法导论之链表]]></title><link>https://blog.youkuaiyun.com/m0_37067296/article/details/78452030</link><guid>https://blog.youkuaiyun.com/m0_37067296/article/details/78452030</guid><author>m0_37067296</author><pubDate>Sun, 05 Nov 2017 20:29:26 +0800</pubDate><description><![CDATA[最近在学习算法导论，为了督促自己能够持久的学习下去，就把自己学习过程中的代码记录一下，希望看到的人可以一同随我学习。
就先从最简单的链表写起，准确的说应该是双链表。大致先简单的介绍一下链表的优缺点，以便在后面对应的数据结构中使用该结构。
优点：链表在内存中存储并不是连续的，可以很方便的进行插入和删除操作。
缺点：由于链表的不连续存储特性，导致索引操作不能使用下标进行，因此对链表进行搜索操作时]]></description><category></category></item><item><title><![CDATA[23. Merge k Sorted Lists]]></title><link>https://blog.youkuaiyun.com/m0_37067296/article/details/72860786</link><guid>https://blog.youkuaiyun.com/m0_37067296/article/details/72860786</guid><author>m0_37067296</author><pubDate>Sun, 04 Jun 2017 19:20:40 +0800</pubDate><description><![CDATA[题目描述：
对K个有序的链表进行合并，合并成一个有序的链表
该题目需要思考的问题：
1、如何将有序的多个链表合并成为一个链表。
解决该问题的思路：
1、首先对两个有序的链表进行归并；
2、由于该问题的解决方案就是其子问题的解决方案，再利用递归的思想进行多次归并。
具体的代码如下：
/**
 * Definition for singly-linked list.
 * struct]]></description><category></category></item><item><title><![CDATA[215. Kth Largest Element in an Array]]></title><link>https://blog.youkuaiyun.com/m0_37067296/article/details/72860674</link><guid>https://blog.youkuaiyun.com/m0_37067296/article/details/72860674</guid><author>m0_37067296</author><pubDate>Sun, 04 Jun 2017 19:03:24 +0800</pubDate><description><![CDATA[此问题，最简单的解决方法就是排序：
1、如果使用排序算法，有很多：快排、堆排序、归并排序等，它们的时间复杂度都是n*log(n)级别的；
2、这里可以使用堆排序进行优化，首先对初始数组进行最大堆初始化，之后每次都用数组最后的元素覆盖堆顶的元素，循环（k-1）次后堆顶元素即为答案。]]></description><category></category></item><item><title><![CDATA[Add to List 451. Sort Characters By Frequency]]></title><link>https://blog.youkuaiyun.com/m0_37067296/article/details/72860582</link><guid>https://blog.youkuaiyun.com/m0_37067296/article/details/72860582</guid><author>m0_37067296</author><pubDate>Sun, 04 Jun 2017 18:38:16 +0800</pubDate><description><![CDATA[解决上述问题，需要思考两个问题：

1、如何统计string字符串中的每个字符出现的频率；

2、如何按照字符出现的频率从高到底的输出每个字符。

以下是解决上述问题的两个方法：

1、使用hash_map哈希表来统计每个字符出现的频率；
2、使用最大优先队列将字符出现的频率依次入队，并排序。


class Solution {public: string frequen]]></description><category></category></item></channel></rss>