精华内容
下载资源
问答
  • 在一个公司,尝试很难得到的东西以正确的方式完成工作,它只是悲哀地有时会发现一些在这篇文章中我们的代码库共享代码。... 以下代码示例仅是为了说明问题,我们的生产代码也有类似的一般问题。 假设我...

    php 并发代码同步代码

    在一个公司,尝试很难得到的东西以正确的方式完成工作,它只是悲哀地有时会发现一些在这篇文章中我们的代码库共享代码。 我们实际上是在尝试纠正以下一些问题,因此我从并发开始,为新人们( 总是有新人们 )分享这一点。 即使这些示例都是基于Java的,但完全相同的想法也适用于您选择的编程语言。

    以下代码示例仅是为了说明问题,我们的生产代码也有类似的一般问题。

    假设我们要从URL下载内容。 我们可以简单地使用以下功能。 此代码同步运行。

    下面的功能可以用具有同步执行功能的其他任何东西代替,例如访问数据库或将某些内容保存到文件系统。 基于此,可悲的是,在我们的代码库中发现了以下内容。

    如我们所见,这确实是下载内容的非常糟糕的方式。 它绝对不会异步执行任何操作。 当我们查看函数getContenAsyncBadWay的签名时,甚至更糟,因为所有人都表明它将异步运行。

    通过执行以下代码,我们可以验证它是否正在串行运行。

    输出将是。

    hello
    ...
    done
    waiting

    正如我们所观察到的,即使我们不认为,所有事情都是线性发生的。

    我们正在尝试训练我们的一些资源(人员)不要这样做,而写以下内容。

    我们正在努力避免这些愚蠢的错误。

    请注意,我们都包裹.getContent内部通话supplyAsync 我们可以通过执行与之前类似的代码来再次对其进行测试。

    哪个可以正确输出我们的期望。

    hello
    waiting
    ...
    done

    请注意输出中的顺序,它确实表明一切正常。

    早期阻止和链接

    我们在代码库中发现的另一个问题是,我们阻塞了异步操作以访问其结果,在大多数情况下,这是完全不必要的。

    以下示例显示了我们遇到的相同问题。

    这非常糟糕,因为您可以认为操作正在异步进行,但这并不比 以同步方式 调用 .getContent 更好 ,因为我们在调用之后立即阻塞。

    其结果将是。

    hello
    !=293
    "=25
    #=406
    $=33
    &=5
    '=79
    (=21
    )=117
    *=117
    ...
    waiting

    同样,此代码被CompletableStage污染,即使使用正确的实现.getContentAsyncBetterWay ,它也仍然非常同步。

    相反,我们应该执行以下操作。

    注意我们如何将计算阶段链接到.countWords ,然后打印结果。

    运行此版本将为我们提供以下内容。

    hello
    waiting
    !=293
    "=25
    #=406
    $=33
    &=5
    '=79
    (=21
    )=117
    *=117
    +=1
    ,=24
    ...

    再一次注意输出顺序,该顺序指示事物的运行方式。

    由于某些原因,有些人很难理解这些概念。

    有时您绝对需要结果

    为了继续我们的示例,让我们添加以下支持功能。

    现在,我们可以运行先前示例的修改版本。

    在这里,尽管我们.join ING,我们正在推迟,直到快结束的时候,所以我们允许其他操作执行, AsyncOps.sumAsync在这种情况下。 该程序的输出将是。

    hello
    waiting
    Summing -1974445143 + -1585876417
    !=293
    "=25
    #=406
    $=33
    &=5
    '=79
    (=21
    )=117
    *=117
    ...

    但是,使用同一程序的以下版本,我们仍然可以做得更好。

    在这种情况下, .forEach将在计算值之后发生, .join将等待它。 看起来似乎相同,但要考虑很大的计算值。 在第一个版本中,只有在打印(或处理)之前,什么都不会执行。 在此版本中,对计算值的处理实际上是异步运行的。

    多个异步操作正在运行

    在许多情况下,我们需要同时运行两个或多个异步操作,并且在许多情况下它们彼此独立。 由于我们的代码库受到.join污染,因此我们无法在应有的情况下处理多处理问题,因此请编写类似以下内容的代码。

    不要加入.join很重要,因为在大多数情况下,我们希望在此之后运行其他操作。 如果这些操作是同步的,则使用CompletionStage提供的单子操作。 如果操作是不同的,独立的计算,则对第一个进行阻塞将阻止第二个运行,这会大大降低性能。

    尝试使用Async / Await编写更好的并发代码

    这是C#和.NET多年来使用的范例,由于大多数代码看起来非常串行,因此减少了考虑并发的时间。 但是,该模型在大多数情况下提高了速度,同时增加了所执行操作的清晰度。

    让我们看一个示例,它可以帮助我们了解其工作原理。

    假设我们要运行执行以下操作的异步操作:

    1. 从URL下载内容
    2. 打印内容
    3. 计算一个字符出现在下载内容中的次数。
    4. 打印柜台
    5. 归还柜台

    首先,让我们看看如何使用经典的Java Async API来完成此操作。

    我们可能会争辩说这已经足够好了,但是还有另一种使用异步等待的方法胜过这种方法。

    很少注意的事情。 首先,此功能是完全异步的,内部没有任何阻塞。 其次,对await的函数调用将控制流返回给函数getContentTotalSizeFor的调用者,直到完成等待函数为止。 每次此函数等待其依赖项工作完成时,这将允许执行更多工作。 而且,该代码非常易于理解和编写,并且不需要考虑它。

    我们可以使用以下方法进行测试。

    输出将是。

    hello
    waiting
    ...
    59

    请注意,即使在getContentTotalSizeFor内部await ,它也不会阻塞。 第一次单击await ,控件返回到调用方(在本例中为main),因此它将继续执行工作( System.out.println("waiting"); )。 一旦函数等待结束, getContentTotalSizeFor将从其所在位置继续执行。

    让我们回过头来,在代码上放一些数字以跟踪执行情况。

    请注意,每次await都完成后,从该点开始恢复控制。 如果找到一个新的await ,控件将返回到调用方。 同时,所有这些都是异步的,并且不会阻止调用方函数的工作。

    在编译时, async/await代码被转换为类似的字节代码,就像我们在第一个示例中编写常规CompletableFuture代码一样。

    如果您现在还不确定,那么让我们看一些更有趣的例子。

    要么

    下面是一个更复杂的示例。

    或者我们可以将其编写如下。

    请注意, squarescubes的计算是两个独立的计算,它们是同时异步运行的。

    结论

    首先,我们需要充分了解代码库中当前存在的问题,以便我们与编写该代码的人员一起工作并解决问题。 这会影响不同级别的性能。

    另外,对于那些不熟悉并发的人,请尽量不要阻塞异步操作,在大多数情况下,阻塞是不必要的,会降低性能,并且可能有一种完全不阻塞的方法。

    最后,通过使用更高的抽象来管理并发性,正如我们通过使用async/await所看到的那样,我们可以编写更好的并发代码而不会遇到太多麻烦。 并发自然很难,但是有一些方法可以使并发变得更简单,充分利用并使用它们。

    如果您喜欢这个故事并认为其他人可以从中受益,请单击“喜欢”按钮,以便其他人也可以看到它。

    翻译自: https://hackernoon.com/a-sad-story-about-concurrency-346990a9a3fe

    php 并发代码同步代码

    展开全文
  • 请教问题:整个软件的架构,是通过两个中断进行收发,但是在调试过程中感觉软件架构有问题,485接收后打开网络(uart)处理标志位,处理完成之后将内容发出去,以下关于代码的截图,想咨询一下,这样处理收发是否...
  • "的提示如 ///  /// 设置计时器的状态 ///  这个注释说明会变成 ///  /// 设置计时器的状态 ///  这样的话在编译的时候就会有很多的警告信息,提示注释没有放在正确。  原因分析:可能是写代码...

    谁的机器从VSS上获取代码后用Visastudio打开报错如下错误时也请按照下方修正掉"以下文件中的行尾不一致,要将行尾标准化吗?"

    解决vs.netIDE报"以下文件中的行尾不一致,要将行尾标准化吗?"的提示

    如 
    /// <summary> 
    /// 设置计时器的状态 /// </summary> 
    这个注释说明会变成 
     
    /// <summary> 
    /// 设置计时器的状态 
     
    /// </summary> 
    这样的话在编译的时候就会有很多的警告信息,提示注释没有放在正确。 
     

    原因分析:可能是写代码的时候行尾的标识可能不一样造成的

    解决方案:1)去掉行尾检查的配置:在选项里->环境->文档中有一个"加载时检查一致的行尾"钩去掉就不会检查了。

     

    2)启用自动检测UTF-8:在工具->选项->文本编辑器->自动检测不带签名的UTF-8编码,加上勾选。

     

     

     
    展开全文
  • 在Visual Basic立即窗口内输入以下语句 X=65更多相关问题被保险人...品种正确关于风湿热实验室检查结果判定,下列哪项是错误A.抗链"O"增高,只能说明近期有过链球菌感染B.2A.He photographed her house.B...

    在Visual Basic的立即窗口内输入以下语句 X=65

    更多相关问题

    被保险人或者投保人只能指定一人为受益人,指定多人的以最后指定人为受益人。()A.正确B.错误

    保证中药质量的前提是A.栽培条件B.采收加工C.产地D.土壤E.品种正确

    关于风湿热实验室检查结果的判定,下列哪项是错误的A.抗链"O"增高,只能说明近期有过链球菌感染B.2

    A.He photographed her house.B.He photographed her paintings.C.He gave

    葛根总黄酮的生物活性是A.抗菌消炎作用B.增加冠脉血流量及降低心肌耗氧量作用C.增加白细胞作用D.

    决策型会计电算化系统是()。A.完成事中控制B.完成事后核算C.完成事前辅助决

    雨季开挖岩石路堑时,爆破的炮眼应尽量()设置。A.向上倾斜30°B.向下倾斜30°C.水平D.垂直

    糖尿病诊断标准为A.空腹血糖≥7.0mmol/LB.空腹血糖≥6.0mmol/LC.空腹血糖≥11.1mmol/LD.餐后血糖≥7.

    女,50岁,已闭经,体态肥胖,近年来,出现不明原因全身无力,易疲劳;查血压17.2/12.0kPa(129/90mmHg),

    药物炒焦多用()A、文火B、中火 C、武火D、先文火后武火 E、先武火后文火

    内部会计控制的基本结构包括()。A.控制环境B.控制程序C.控制方法D.会计系统

    年度结账后,对于发生额很少的总账,不必更换新账。 ()

    自我胎动计数,哪项为异常A.>3次/小时B.>5次/小时C.<10次/12小时D.>20次/12小时E.>30次/12小时

    ECC合同条件具有()的特点。A.国际性B.灵活性C.通用性D.简洁性E.严谨性

    被保险人或者投保人只能指定一人为受益人,指定多人的以最后指定人为受益人。()A.正确B.错误

    收回货款1 500元存人银行,记账凭证误填为15 000元,并已人账。正确的更正方法是()。 A.采用划线

    雷公藤的功效为()A、祛风湿,通经络,消痰水,治骨鲠 B、祛风湿,舒筋络,清虚热,利湿退黄 C、祛风湿,通

    Rh阴性红细胞没有的抗原是A.A抗原 B.B抗原 C.D抗原 D.H抗原 E.C抗原

    在通信网中不属于交换节点主要功能的有()。

    ECC合同条件具有()的特点。A.国际性B.灵活性C.通用性D.简洁性E.严谨性

    网络图能对某工作总体制订详细计划,保证计划的严密性,了解某项工作工期延误对总体的影响以及()。A

    一般而言价格波动越大,期权的价格就越高。A.正确B.错误

    女,50岁,已闭经,体态肥胖,近年来,出现不明原因全身无力,易疲劳;查血压17.2/12.0kPa(129/90mmHg),

    保证中药质量的前提是A.栽培条件B.采收加工C.产地D.土壤E.品种正确

    年度结账后,对于发生额很少的总账,不必更换新账。 ()

    构成教育活动的基本要素包括()。A.教育者B.受教育者C.教材D.教育措

    影响消费者行为的因素中,属于消费者自身因素的有()。A.家庭经济状况B.年龄与性别C.风俗习惯D.职业

    糖尿病诊断标准为A.空腹血糖≥7.0mmol/LB.空腹血糖≥6.0mmol/LC.空腹血糖≥11.1mmol/LD.餐后血糖≥7.

    子肿气滞证的用方是

    为了规避、防范这种风险,房地产经纪人在带客户看房之前,应对客户的()进行详细的登记。A.身份资料

    Rh阴性红细胞没有的抗原是A.A抗原 B.B抗原 C.D抗原 D.H抗原 E.C抗原

    女,50岁,已闭经,体态肥胖,近年来,出现不明原因全身无力,易疲劳;查血压17.2/12.0kPa(129/90mmHg),

    在健康保险中,专门向被保险人提供医疗费用保障的保险被称为()。A.补偿保险B.给付保险C.医疗保险D

    下列诗篇,表达诗人重游故地时眷恋、珍惜而又略带忧郁情怀的是 () A.闻一多《一句话》B.

    雨季开挖岩石路堑时,爆破的炮眼应尽量()设置。A.向上倾斜30°B.向下倾斜30°C.水平D.垂直

    展开全文
  • .i..w.1关于递归函数的描述,以下选项中正确的是A函数部包含对本函数的再次调用B函数比较复杂C包含一个循环结构D函数名称作为返回值正确答案:A2关于递归函数基例的说明以下选项中错误的是A递归函数必须有基例B每...

    .

    i.

    .w.

    1

    关于递归函数的描述,以下选项中正确的是

    A

    函数部包含对本函数的再次调用

    B

    函数比较复杂

    C

    包含一个循环结构

    D

    函数名称作为返回值

    正确答案:

    A

    2

    关于递归函数基例的说明,以下选项中错误的是

    A

    递归函数必须有基例

    B

    每个递归函数都只能有一个基例

    C

    递归函数的基例决定递归的深度

    D

    递归函数的基例不再进行递归

    正确答案:

    B

    3

    以下选项中,不属于函数的作用的是

    A

    复用代码

    B

    提高代码执行速度

    C

    降低编程复杂度

    D

    增强代码可读性

    正确答案:

    B

    4

    假设函数中不包括

    global

    保留字,对于改变参数值的方法,以下选项中错误的是

    A

    参数是整数类型时,不改变原参数的值

    B

    参数是组合类型(可变对象)时,改变原参数的值

    C

    参数是列表类型时,改变原参数的值

    D

    参数的值是否改变与函数中对变量的操作有关,与参数类型无关

    正确答案:

    D

    5

    Python

    中,关于函数的描述,以下选项中正确的是

    .

    A Python

    函数定义中没有对参数指定类型,这说明,参数在函数中可以当作任意类型使用

    B

    函数

    eval()

    可以用于数值表达式求值,例如

    eval("2*3+1")

    C

    一个函数中只允许有一条

    return

    语句

    D Python

    中,

    def

    return

    是函数必须使用的保留字

    正确答案:

    B

    6

    给出如下代码:

    def func(a,b):

    c=a**2+b

    b=a

    return c

    a=10

    b=100

    c=func(a,b)+a

    以下选项中描述错误的是

    A

    执行该函数后,变量

    c

    的值为

    200

    B

    执行该函数后,变量

    a

    的值为

    10

    C

    执行该函数后,变量

    b

    的值为

    100

    D

    该函数名称为

    func

    展开全文
  • 关于并发的代码片段

    1970-01-01 08:25:31
    在一个公司,尝试很难得到的东西以正确的方式完成工作,它只是悲哀地有时会发现一些在这篇文章中... 以下代码示例仅是为了说明问题,我们的生产代码也有类似的一般问题。 假设我们要从URL下载内容。 我们可以简单...
  • 关于静态变量引用

    千次阅读 2018-03-21 23:17:18
    关于以下程序代码的说明正确的是( D )1.class HasStatic{2. private static int x=100;3. public static void main(String args[ ]){4. HasStatic hs1=new HasStatic( );5. hs1.x++;6. ...
  • 1、关于递归函数的描述,以下选项中正确的是A.包含一个循环结构B.函数比较复杂C.函数内部包含对本函数的再次调用D.函数名称作为返回值答案:D答案解析:递归函数是指函数内部包含对本函数的再次调用。2、关于递归...
  • 今天整理了论坛很多关于dotnet(C#)试题,大家共享一下 1....以下代码能否通过编译?如果不能,请改成正确代码,并说明原因。 int subtract(int num1, int num2) { return num1-num2; } %> int
  • 关于递归函数的描述以下选项中正确的是 函数内部包含对本函数的再次调用 函数比较复杂 包含一个循环结构 函数名称作为返回值正确答案 A 2关于递归函数基例的说明以下选项中错误的是 递归函数必须有基例 每个递归...
  • 1关于递归函数的描述以下选项中正确的是 A 函数内部包含对本函数的再次调用 B 函数比较复杂 C 包含一个循环结构 D 函数名称作为返回值 正确答案 A 2关于递归函数基例的说明以下选项中错误的是 A 递归函数必须有基例 ...
  • 这个存储库是我关于代码的注释/博客 试图说明cpython实现的每个细节 # based on version 3.8.0a0 cd cpython git reset --hard ab54b9a130c88f708077c2ef6c4963b632c132b3 以下内容适合具有python编程经验并且对...
  • Node.js关于Stream理解

    2020-12-08 19:35:53
    注意到上述代码的注释的地方,一般不推荐使用这种方式为可读流填充数据,而是重写<code>_read()方法,在该方法中实现数据的填充读取。需要注意的是<code>_read方法是不能手动调用的,由流...
  • 1、关于递归函数的描述,以下选项中正确的是A.包含一个循环结构B.函数比较复杂C.函数内部包含对本函数的再次调用D.函数名称作为返回值答案:D答案解析:递归函数是指函数内部包含对本函数的再次调用。2、关于递归...
  • 函数和代码复用

    万次阅读 2019-06-06 16:31:41
    1、关于递归函数的描述,以下选项中正确的是 A.包含一个循环结构 B.函数比较复杂 C.函数内部包含对本函数的再次调用 D.函数名称作为返回值 答案:D 答案解析:递归函数是指函数内部包含对本函数的再次调用。 ...
  • 但当我通过以下的裁剪代码进行裁剪后,却出现了我不能理解结果,裁剪代码以及裁剪结果如下图: ``` GLfloat outSidePts[5][2] = { {0.0f, 0.0f} ,{1.0f, 0.0f}, {1.0f, 1.0f},{0.0f, 1.0f}, {0.0f, 0.0f} }...
  • 这个是甲方webService接口里的说明(浏览器打开.asmx地址)![图片说明](https://img-ask.csdn.net/upload/202007/14/1594710114_163549.jpg) 我在postman里面按照同样的格式去请求可以得到正确的响应 ![图片说明]...
  • 此外,我们还提供工具/检查程序的代码和数据以及设置工作环境的说明以下是每个部分包含的详细信息: 有组织的数据库 表III(手动研究部分)的结果可以通过这种有组织的数据库来复制。 它包含: 使用Google / ...
  • 前提:各种设置已经按极光的说明文档进行正确的配置,调试的时候可以正常使用。 问题:为何就是无法打包程序签名包导出呢?有些网站说多操作几次就可以了,我操作了一个上午还是不行呢?还是报以下的错误呢? ...
  • HBM S核技术GIT 对于1.12分支,请检查以下链接: : ...源代码已更正了guild.gradle和gradle包装器版本,如果正确完成,它应该可以正常运行。 build.gradle文件将引用以下文件: compile files('lib/CodeChicken
  • ..1关于递归函数的描述,以下选项中正确的是A函数内部包含对本函数的再次调用B函数比较复杂C包含一个循环结构D函数名称作为返回值正确答案:A2关于递归函数基例的说明以下选项中错误的是A递归函数必须有基例B每个...
  • 期末复习资料一、单选题1、关于可以独立运行的Java应用程序,下列说法哪个是正确的()?A.无须main方法B.必须有两个main方法C.可以有多个或0个main方法D....,以下哪项说明正确的?()A.x[4]为0B....
  • Python:函数和代码复用

    千次阅读 2019-12-29 16:16:21
    1、关于递归函数的描述,以下选项中正确的是 A.包含一个循环结构 B.函数比较复杂 C.函数内部包含对本函数的再次调用 D.函数名称作为返回值 答案:D 答案解析:递归函数是指函数内部包含对本函数的再次调用。 ...
  • 得到一张正确的灰度图像,是否说明写的FFT和IFFT算法没问题? <p>2、频谱图的像素值是由FFT结果数据的实部值生成吗? <p>3、代码中的中心化方法FFT2Shift()是我这样写的吗(不确定对公式...
  • 1、关于递归函数的描述,以下选项中正确的是 A.包含一个循环结构 B.函数比较复杂 C.函数内部包含对本函数的再次调用 D.函数名称作为返回值 答案:D 答案解析:递归函数是指函数内部包含对本函数的再次调用。 2、关于...
  • 1. 和 有什么区别?表示绑定数据源是服务器端...以下代码能否通过编译?如果不能,请改成正确代码,并说明原因。 int subtract(int num1, int num2) { return num1-num2; } %> int number = 100; while (numbe
  • 以下是部分代码: ``` PROCESS_THREAD(udp_sender_process, ev, data) { static struct uip_ds6_notification n; static struct udp_socket s; PROCESS_BEGIN(); leds_on(LEDS_ALL); set_...
  • 1、关于递归函数的描述,以下选项中正确的是A.包含一个循环结构B.函数比较复杂C.函数内部包含对本函数的再次调用D.函数名称作为返回值答案:D答案解析:递归函数是指函数内部包含对本函数的再次调用。2、关于递归...
  • <p>9、Javascript中制作图片代替按钮的提交效果需要手动提交方法submit(),以下调用正确的是 <input type="radio" name="score9" value="1"/>A.submit();  <input type="radio" name="score9" value="2"/>B....

空空如也

空空如也

1 2 3 4 5 ... 12
收藏数 240
精华内容 96
关键字:

关于以下代码的说明正确的是