返回值

百万年薪python之路 -- 并发编程之 多线程 三

老子叫甜甜 提交于 2019-11-28 17:19:22
1. 阻塞,非阻塞,同步,异步 进程运行的三个状态: 运行,就绪,阻塞. 从执行的角度: ​ 阻塞: 进程运行时,遇到IO了,进程挂起,CPU被切走. ​ 非阻塞: 进程没有遇到IO 当进程遇到IO,但我通过某种手段,让CPU强行运行我的进程 提交任务的角度: ​ 同步: 提交一个任务,自任务开始运行直到此任务结束(可能有IO),返回一个返回值之后,我在提交下一个任务. ​ 异步: 一次提交多个任务,然后我就直接执行下一行代码. 返回的结果,应该如何回收? eg: 给三个老师发布任务: ​ 同步: 先告知第一个老师完成写书的任务,然后我在原地等待,等他两天之后完成了,告知我完事了,我才发布下一个任务........ ​ 异步: 直接将三个任务告知三个老师,我就忙我的,知道三个老师完成之后,告知我. 2. 同步调用,异步调用 同步调用: # 同步调用 from concurrent.futures import ProcessPoolExecutor, ThreadPoolExecutor import time import random import os def task(i): print(f"{os.getpid()} 开始任务") time.sleep(random.randint(1,3)) print(f"{os.getpid()} 任务结束") return i

MessageBox 参数说明

≡放荡痞女 提交于 2019-11-28 15:28:34
MessageBox in comm use: MessageBox("...."); 输出字符" .....". int result = MessageBox("Are you want to save context before Exit ?","AlertDialog",MB_ICONINFORMATION|MB_YESNOCANCEL); MB_YESNOCANCEL 代表有三个按键,参数定义如下: 1 #define MB_OK 0x00000000L 2 #define MB_OKCANCEL 0x00000001L 3 #define MB_ABORTRETRYIGNORE 0x00000002L 4 #define MB_YESNOCANCEL 0x00000003L 5 #define MB_YESNO 0x00000004L 6 #define MB_RETRYCANCEL 0x00000005L 返回值参数定义如下: 1 /* 2 * Dialog Box Command IDs 3 */ 4 #define IDOK 1 5 #define IDCANCEL 2 6 #define IDABORT 3 7 #define IDRETRY 4 8 #define IDIGNORE 5 9 #define IDYES 6 10 #define IDNO 7

javaScript中数组方法重构

不想你离开。 提交于 2019-11-28 14:54:49
1.push(p1,p2...);入栈,在数组最后面添加元素   参数:要入栈的元素   返回值:数组长度; 2.pop();出栈 最后一个元素出栈   参数:none;   返回值:出栈元素 结果: shift();出队,第一个元素出队   参数:none   返回值:出队元素 运行结果: sort(comparator);排队   comparator为一个比较器函数,函数可以接受两个值a,b;当a位于b之前的时候返回   comparator(a,b);   用 最少代码,完成可以自由选择按照对象id/name/age/grade来升序或者降序排列          排序后结果:      重构sort();   利用冒泡排序    来源: https://www.cnblogs.com/ys199610/p/11411001.html

Java 方法使用

こ雲淡風輕ζ 提交于 2019-11-28 13:36:29
那么什么是方法呢? Java方法是语句的集合,它们在一起执行一个功能。 方法是解决一类问题的步骤的有序组合 方法包含于类或对象中 方法在程序中被创建,在其他地方被引用 方法的优点 1. 使程序变得更简短而清晰。 2. 有利于程序维护。 3. 可以提高程序开发的效率。 4. 提高了代码的重用性。 方法的命名规则 1.方法的名字的第一个单词应以小写字母作为开头,后面的单词则用大写字母开头写,不使用连接符。例如: addPerson。 2.下划线可能出现在 JUnit 测试方法名称中用以分隔名称的逻辑组件。一个典型的模式是: test<MethodUnderTest>_<state>,例如 testPop_emptyStack。 方法的定义 一般情况下,定义一个方法包含以下语法: 修饰符 返回值类型 方法名(参数类型 参数名){ ... 方法体 ... return 返回值; } 方法包含一个方法头和一个方法体。下面是一个方法的所有部分: 修饰符: 修饰符,这是可选的,告诉编译器如何调用该方法。定义了该方法的访问类型。 返回值类型 : 方法可能会返回值。returnValueType 是方法返回值的数据类型。有些方法执行所需的操作,但没有返回值。在这种情况下,returnValueType 是关键字 void 。 方法名: 是方法的实际名称。方法名和参数表共同构成方法签名。 参数类型:

<每日 1 OJ> -内存文件系统

白昼怎懂夜的黑 提交于 2019-11-28 13:21:28
蛮有意思的,主要考查链表和树结构的知识。 代码如下: ******************************************************************************/ #include "FileManager.h" //#include <stdafx.h> #include "stdio.h" #include "string.h" #include "map" #include "malloc.h" #define NO 0 #define OK 1 //文件定义 链表结构 //文件定义 struct file { char filename[300]; struct file *nextf;//p310 链表 *nextf 是指针变量,指向结构体变量,存放下一个节点的地址 }; // struct dir { char dirName[300]; struct dir* subDir; //子目录 struct dir* borDir; //兄弟目录 struct dir* parDir; //父目录 struct file* fhead;//当前目录的文件 }; //全局根目录初始化 struct dir root={"root",NULL,NULL,NULL,NULL}; /* 功能描述:根据目录名获得目录指针 参数描述

ansible笔记(14):变量(三)

巧了我就是萌 提交于 2019-11-28 13:09:28
一、注册变量(register)       ansible的模块在运行之后,其实都会返回一些“返回值”,只是默认情况下,这些“返回值”并不会显示而已,我们可以把这些返回值写入到某个变量中,这样我们就能够通过引用对应的变量从而获取到这些返回值了, 这种将模块的返回值写入到变量中的方法被称为“注册变量” ,那么怎样将返回值注册到变量中呢?我们来看一个playbook示例: --- - hosts: 192.168.10.3 remote_user: root tasks: - name: test shell shell: "echo test > /test/testfile" register: testvar - name: shell moudule return values debug: var: testvar 上例中共有两个任务,第一个任务使用shell模块在192.168.10.3主机中创建了一个测试文件 /test/testfile,将字符“test&”输入到了测试文件中,然后使用“register”关键字将当前shell任务的返回值写入了名为“testvar”的变量中,第二个任务使用debug模块输出了第一个任务中的注册变量的值,没错,注册变量就是这么简单,使用register关键字指定对应的变量名即可。 上述playbook执行后,可以在控制台中看到名为“

Java基本语法

我与影子孤独终老i 提交于 2019-11-28 12:46:54
原文: http://blog.gqylpy.com/gqy/456 置顶:来自一名75后老程序员的武林秘籍——必读 (博主推荐) 来,先呈上武林秘籍链接: http://blog.gqylpy.com/gqy/401/ 你好,我是一名极客!一个 75 后的老工程师! 我将花两分钟,表述清楚我让你读这段文字的目的! 如果你看过武侠小说,你可以把这个经历理解为,你失足落入一个山洞遇到了一位垂暮的老者!而这位老者打算传你一套武功秘籍! 没错,我就是这个老者! 干研发 20 多年了!我也年轻过,奋斗过!我会画原理图,会画 PCB,会模拟,会数字!玩过 PLC,玩过单片机,会用汇编,会用 C!玩过 ARM,比如 PLC,STM32,和时下正在起飞的 NXP RT1052!搞过 DSP,比如 TMS320F28335!搞过 FPGA,不管 Xilinx 还是 Altera,也不管是 Verilog 还是 VHDL,或者直接画数字电路图!我懂嵌入式系统,比如 uCOS 和 Linux!我懂开源的硬件,比如 Arduino 和树莓派!我也搞软件,学了一堆上位机的语言C#,JAVA,Python,Kotlin,Swift!会写爬虫工具,又自学写APP,不管Android 还是 IOS! 可是这一切有什么用呢?土鸡瓦狗!不值一提!干技术的永远就是最苦逼的那个人! 我相信看到这里的你,应该是个 IT

第一章 Scala基础篇

无人久伴 提交于 2019-11-28 12:25:50
目录 一、Scala基础语法 (一) 变量、类型、操作符 1.变量申明 2.字符串 3.数据类型 4.操作符 (二)循环判断 1.块表达式 2.条件表达式 3.循环表达式 (三)方法和函数 1.方法 2.函数 3.方法和函数的区别 4.总结 二、Scala常用数据结构/集合 (一)Scala集合分类和继承体系 1.分类 2.继承体系 (二)数组 (三)元组 (四)List (五)队列 (六)Set (七)Map 一、Scala基础语法 === (一) 变量、类型、操作符 1.变量申明 ●Java中: //数据类型 变量名 = 值; final int b = 2; b = 23; //错误!!! final修饰的变量不可变 int a = 1; a = 22; ●在Scala中: //val/var 变量名:变量类型 = 变量值 val a:Int = 1 a =2 //错误!!!! val修饰的变量不可以被重新赋值,类似于Java中的final var b:Int = 1 b = 2 ●说明 var声明的变量 可以 重新赋值 val声明的变量 不可以 重新赋值,或称之为不可变变量/只读变量。相当于java里用final修饰的变量 ●注意: Scala中变量声明类型 可以省略 ,解析器会根据值进行推断 Scala中语句最后 不需要添加分号 val和var 声明变量时都 必须初始化

带返回值的线程

吃可爱长大的小学妹 提交于 2019-11-28 11:12:58
  创建一个线程有几种方式,很容易想到的就是集成Thread类,实现Runnable接口,还有一种方式就是自己定义的线程类实现Callable接口,这种方式相较于实现Runnable接口具有带有返回值的特点,大家都知道在java中主线程中创建的线程可以独立于主线程执行,也就是说main函数结束了。在main函数中产生的线程还在继续执行,如果希望主线程在所有子线程都结束再结束,该怎么做呢?可以试想这样一种场景:创建了50个线程,每个线程计算10000个数字之和,最后计算出总和。如果线程继承了Runnable接口,每个线程就无法把结果返回,或许回想到使用全局变量,每个线程对全局进行操作,并通过锁机制控制线程安全。这种方式还需要考虑一个问题就是,最后的结果怎么输出?可以在主线程输出嘛~,但是此时就涉及到主线程等待子线程的问题了?但是使用实现了Callable接口的线程类,就可以很优美的解决以上问题,让每个线程类计算自己负责的部分,然后得出自己的结果,刚才又说,实现了Callable接口的线程可以返回结果,这样我们就可以在主线程中将结果取出,此时取出结果的方法是个阻塞的方法,也就是该子线程如果没有获得结果会一直等待在那,这样我们把每个线程的值取出后在主线程中计算出总和,最后输出,这样简单明了。下面一个简单的例子可以看出Callable如何使用,Callable还有其他特点