相同点: 两者都是接口;(废话) 两者都可用来编写多线程程序; 两者都需要调用Thread.start()启动线程; 不同点: 两者最大的不同点是:实现Callable接口的任务线程能返回执行结果;而实现Runnable接口的任务线程不能返回结果; Callable接口的call()方法允许抛出异常 ...
分类:
其他好文 时间:
2020-06-01 01:04:45
阅读次数:
77
读了flask的源码和werkzeug的官方文档后用类似的原理写了这个框架,算是重复造轮子,增加理解吧。 GitHub地址:https://github.com/gamdwk/myflame werkzeug是一个WSGI工具包,算是比较底层的东西。 WSGI是python的web服务器网关接口,W ...
分类:
编程语言 时间:
2020-06-01 00:42:21
阅读次数:
124
一、线程池概念 1.1 线程池,其实就是一个容纳多个线程的容器,其中的线程可以反复使用,省去了频繁创建线程对象的操作,无需反复创建线程而消耗过多资源。 1.2 我们详细的解释一下为什么要使用线程池? 在java中,如果每个请求到达就创建一个新线程,开销是相当大的。在实际使用中,创建和销毁线程花费的时 ...
分类:
编程语言 时间:
2020-05-31 19:57:50
阅读次数:
54
线性结构与切片 线性结构 列表、元组、字符串、bytes, bytearray 共同点:都是顺序存储, 顺序访问的, 都是可迭代对象, 都可以通过索引访问 线性结构特征 可迭代 len获取长度 可以使用下标操作符通过索引访问 可以切片 例如:可迭代的表现形式 In [1]: for i in [1, ...
分类:
其他好文 时间:
2020-05-28 23:49:04
阅读次数:
69
回到装饰器上的概念上来,装饰器要求接受一个callable对象,并返回一个callable对象(不太严谨,详见后文)。 那么用类来实现也是也可以的。我们可以让类的构造函数__init__()接受一个函数,然后重载__call__()并返回一个函数,也可以达到装饰器函数的效果。 基本类装饰器 clas ...
分类:
编程语言 时间:
2020-05-24 11:41:47
阅读次数:
68
1、什么是JUC JUC大家可能听说过,它实际上 Java 提供的用于并发处理的工具包。如官方文档所示: 回顾以前 在以前的业务中,我们使用的代码: 1、Thread 2、Runnable:没有返回值、无法抛出异常、效率相比 Callable 较低! 3、Callable 4、还有Locked锁 这 ...
分类:
编程语言 时间:
2020-05-23 18:20:08
阅读次数:
51
iter: def iter(source, sentinel=None): # known special case of iter """ iter(iterable) -> iterator iter(callable, sentinel) -> iterator Get an iterato ...
分类:
编程语言 时间:
2020-05-21 21:16:23
阅读次数:
88
回调函数就是在主进程执行过程中,满足某个条件后,跳转到预先设置好的函数中去执行的一种函数。 举例说明: 张三到一个水果店买苹果,刚好苹果卖完了,于是张三在店员那里留下了自己的电话,一个小时后店里有货了,店员就打了张三的电话,张三接到电话后就到水果店里去取货。 在这个例子里,张三的电话号码就叫 回调函 ...
分类:
Web程序 时间:
2020-05-19 18:17:54
阅读次数:
54
1、继承Thread 2、实现Runnable接口 3、实现Callable<V>接口 4、线程池 import java.util.concurrent.*; public class Test { public static void main(String[] args) throws Exe ...
分类:
编程语言 时间:
2020-05-17 01:00:00
阅读次数:
52
8.5 Compile-Time if8.5 编译期if Partial specialization, SFINAE, and std::enable_if allow us to enable or disable templates as a whole. C++17 additionally ...
分类:
其他好文 时间:
2020-05-16 18:51:10
阅读次数:
57