接着上一篇的golang分布式存储 读书笔记(1)——流操作之GetStream封装,这次要讲的是上传文件并保存,使用restful的PUT方法,书中封装了PutStream...
接着上一篇的golang分布式存储 读书笔记(1)——流操作之GetStream封装,这次要讲的是上传文件并保存,使用restful的PUT方法,书中封装了PutStream...
C#、Java、python和go等语言中都有垃圾自动回收机制,在对象失去引用的时候自动回收,而且基本上没有指针的概念,而C++语言不一样,C++充分信任程序员,让程序员自己...
简易HTTP服务器的实现 先看一个使用net/http包实现的简单服务器程序示例。 运行程序,打开浏览器,访问http://localhost:8080,可以看到浏览器上显示...
接口使用疑问 golang中的接口可以轻松实现C++中的多态,而且没有继承自同一父类的限制,感觉方便很多。但是在使用的时候,如果没有理解,也可能会遇到"坑"。比如《Go语言实...
引言 大家都知道new了一个变量,需要使用delete释放内存,而new出了一个数组,需要使用对应的delete[]释放内存。但我好像在哪看见过一种说法:针对系统内置类型,使...
动机 保证一个类仅有一个实例,并提供一个该实例的全局访问点。 ——《设计模式》GoF 在软件系统中,经常有这样一些特殊的类,必须保证他们在系统中只存在一个实例,才能确保它们的...
题目 题目:在数组中的两个数字,如果前面一个数字大于后面的数字,则这两个数字组成一个逆序对。输入一个数组,求出这个数组中的逆序对的总数P。并将P对1000000007取模的结...
题目 题目:有n个人,围成一个环,编号为 0、1、2、3、、、n-1,从第一个人开始循环报数(从1开始),假设数到m的那个人出列,然后从下一个人继续数数,数到m出列,以此循环...
基本思想 归并排序采用的是分治算法的思想,其中最重要的操作就是归并操作。 主要思想是,将数组平分为A,B两部分,分别将A,B两部分排好序,然后再合并,对A排序的时候,也是同样...
引言 快速排序是应用最广泛的排序算法(C++中的sort函数内部就是快排),优点是实现简单,速度快(时间复杂度NlogN),原地排序(只需要很小的辅助栈),缺点就是写的不好性...
题目描述 题目 : 请实现一个函数用来匹配包括.和*的正则表达式。模式中的字符.表示任意一个字符,而*表示它前面的字符可以出现任意次(包含0次)。 在本题中,匹配是指字符串的...
为什么需要条件变量 有了前面提到的互斥锁,为什么还需要条件变量呢,当然是由于有些复杂问题互斥锁搞不定了。Python提供的Condition对象提供了对复杂线程同步问题的支持...
用处 信号量semaphore 是用于控制进入数量的锁。有哪些应用场景呢,比如说在读写文件的时候,一般只能只有一个线程在写,而读可以有多个线程同时进行,如果需要限制同时读文件...
初识 Python中已经有了threading模块,为什么还需要线程池呢,线程池又是什么东西呢?在介绍线程同步的信号量机制的时候,举得例子是爬虫的例子,需要控制同时爬取的线程...
为什么需要同步 同样举之前的例子,两个线程分别对同一个全局变量进行加减,得不到预期结果,代码如下: 原因就是因为 += 和 -=并不是原子操作。可以使用dis模块查看字节码:...
为什么要通信 如果各个线程之间各干各的,确实不需要通信,这样的代码也十分的简单。但这一般是不可能的,至少线程要和主线程进行通信,不然计算结果等内容无法取回。而实际情况中要复杂...
GIL是什么 GIL并不是Python的特性,它是在实现Python解析器(CPython)时所引入的一个概念,而CPython是大部分环境下默认的Python执行环境。GI...
背景 对于IO操作来说,多线程和多进程差别不大,甚至多线程比多进程效率更高,因为对于操作系统来说,线程的调度比多进程更加轻量。 下面从简单的爬虫例子对多线程进行说明,比如要爬...
题目描述输入某二叉树的前序遍历和中序遍历的结果,请重建出该二叉树。假设输入的前序遍历和中序遍历的结果中都不含重复的数字。例如输入前序遍历序列{1,2,4,7,3,5,6,8}...