小编bri*_*ist的帖子

如何知道变量是在寄存器中还是在堆栈中?

我正在阅读inline关于isocpp FAQ的这个问题,代码是给出的

void f()
{
  int x = /*...*/;
  int y = /*...*/;
  int z = /*...*/;
  // ...code that uses x, y and z...
  g(x, y, z);
  // ...more code that uses x, y and z...
 }
Run Code Online (Sandbox Code Playgroud)

然后它说

假设一个典型的C++实现具有寄存器和堆栈,寄存器和参数在调用之前就被写入堆栈g(),然后从堆栈内部g()读取参数 并再次读取以在g()返回时 恢复寄存器f().但是,这是一个很多不必要的阅读和写作的,尤其是当编译器能够使用寄存器变量的情况下x, yz:每个变量可以被写入两次(如寄存器,也可以作为一个参数)和出两次(在使用时g()和在返回期间恢复寄存器f()).

我很难理解上面的段落.我尝试列出我的问题如下:

  1. 对于计算机对驻留在主存储器中的某些数据执行某些操作,是否必须首先将数据加载到某些寄存器然后CPU才能对数据进行操作?(我知道这个问题与C++没有特别的关系,但理解这个问题将有助于理解C++的工作原理.)
  2. 我认为f()函数的功能与g(x, y, z)函数相同.x, y, z在调用之前如何进入g()寄存器,传入的参数g() …

c++ cpu-registers

42
推荐指数
4
解决办法
5595
查看次数

PowerShell PackageManagement,如何卸载软件包提供程序?

为了解决问题,我想我会尝试重新安装Chocolatey软件包提供程序.似乎没有用于删除或卸载程序包提供程序的cmdlet.我不是指删除包源或包.我在Windows 10上使用PowerShell 5.

有没有办法卸载包提供程序?

powershell package-management windows-10 powershell-5.0

17
推荐指数
1
解决办法
7685
查看次数

如何在Windows 10上的PowerShell中创建文件硬链接?

如何在Windows 10上的PowerShell中创建文件硬链接?

PSCX有New-Hardlink,但它仍然需要在Windows 10上?

你总是可以mklink使用powershell,但是需要你在命令前加上cmd /c,这是丑陋且难以记住的.

powershell hardlink windows-10 powershell-5.0

16
推荐指数
1
解决办法
7307
查看次数

Invoke-RestMethod - 忽略自签名证书

似乎这个问题已被提出并得到解答,但到目前为止,我遇到的每个解决方案都无济于事.我正在编写一个PowerShell脚本来运行一些REST API来获取使用信息.我的脚本只是在尝试与服务器通信时立即中断.为了测试,我做了一个非常简单的命令:

Invoke-RestMethod 'https://server:4443/login'
Run Code Online (Sandbox Code Playgroud)

它返回此错误:

Invoke-RestMethod : The underlying connection was closed: An unexpected error occurred on a send.
Run Code Online (Sandbox Code Playgroud)

我可以运行相同的命令,但使用URL google.com,我得到一个有效的返回,所以我知道该命令正在发挥作用.

如果我在服务器本身运行curl等效项,事情就会按预期完成.这是curl命令的详细输出的片段:

* SSLv3, TLS handshake, Client hello (1):
* SSLv3, TLS handshake, Server hello (2):
* SSLv3, TLS handshake, CERT (11):
* SSLv3, TLS handshake, Server key exchange (12):
* SSLv3, TLS handshake, Server finished (14):
* SSLv3, TLS handshake, Client key exchange (16):
* SSLv3, TLS change cipher, Client hello (1):
* SSLv3, TLS handshake, Finished (20):
* …
Run Code Online (Sandbox Code Playgroud)

rest powershell self-signed powershell-5.0

12
推荐指数
3
解决办法
3万
查看次数

Jenkins powershell插件运行32位Powershell,我需要64位

我对Jenkins中的PowerShell集成很新,我的脚本不会运行,因为(我相信)我需要PowerShell以64位执行.运行:

[Environment]::Is64BitProcess
Run Code Online (Sandbox Code Playgroud)

在我的执行序列中产生false一个cmdlet然后我使用(Get-WindowsFeature)显示为不被识别为cmdlet等.任何方式执行64位PowerShell脚本?谢谢!

powershell jenkins

9
推荐指数
2
解决办法
6238
查看次数

9
推荐指数
2
解决办法
1万
查看次数

在 Python 中,为什么控制台输出偶尔会暂停,直到按下 ctrl-c,我该如何停止?

在进行 Python 开发时,这个问题似乎每周都会出现一次。无论是在 Linux 上的 Bash 还是 cmd.exe 或 Powershell 中,Python 脚本有时会暂停它们的输出,让人相信它们可能已经锁定。按下 ctrl-c 后,控制台输出将恢复,很明显脚本已在后台执行。好像滚动锁被按下了一样。

程序无关紧要,它只能随着时间的推移而重现。您可以运行以下代码片段:

import time

i = 0
while True:
    print i
    i++
    time.sleep(1)
Run Code Online (Sandbox Code Playgroud)

在接下来的一周左右,控制台将暂停,即使我仍在后台每秒增加。

这不仅仅是我的设计糟糕 - 我不止一次在 Celery 进程和 Django 测试服务器以及我自己的程序中发生过这种情况。通常我只会认为它是一个“麻烦事”,但如果程序实际上非常繁忙,ctrl-c 也可能会意外终止该程序。

我的同事也有这种行为,但似乎没有人知道该怎么做。

有没有人对此有解决方案?

谢谢!

python

7
推荐指数
1
解决办法
1012
查看次数

如何使用 PowerShell 多线程并通过 Pester Mocks 进行单元测试

我正在尝试在 Powershell 中执行简单的并行操作。我正在使用 PoshRSJobs 进行多线程处理,尽管我也尝试过 Invoke-Parallel 来解决同样的问题。我需要在作业的脚本主体中调用几个我自己的函数,但这不允许我模拟这些函数以进行单元测试(它们最终成为原始的非模拟函数)。此时,我只是想断言它们被调用的次数是正确的。

这是原始类(导入模块的功能无关 - 实际实现当前返回测试字符串)...

Import-Module $PSScriptRoot\Convert-DataTable
Import-Module $PSScriptRoot\Get-History
Import-Module $PSScriptRoot\Get-Assets
Import-Module $PSScriptRoot\Write-DataTable

function MyStuff (
    param(
        [string]$serverInstance = "localhost\SQLEXPRESS", 
        [string]$database = "PTLPowerShell",
        [string]$tableName = "Test"
    )
    $assets = Get-Assets
    $full_dt = New-Object System.Data.DataTable
    $assets | Start-RSJob -ModulesToImport $PSScriptRoot\Convert-FLToDataTable, $PSScriptRoot\Get-FLHistory {
        $history = Get-History $asset
        $history_dt = Convert-DataTable $history
        return $history_dt.Rows
    } | Wait-RSJob | Receive-RSJob | ForEach { 
        $full_dt.Rows.Add($_) 
    }
    Write-DataTable $serverInstance $database $tableName $full_dt
}
Run Code Online (Sandbox Code Playgroud)

这是 Pester 测试...

$here = Split-Path -Parent $MyInvocation.MyCommand.Path …
Run Code Online (Sandbox Code Playgroud)

powershell multithreading mocking pester

6
推荐指数
1
解决办法
666
查看次数

PowerShell Out-file -width 导出到文件时不会截断内容

我有 Windows 7 和 PowerShell 4.0。将内容导出到文件时,-Width参数不会根据给定设置进行格式化。这是我正在尝试做的事情的示例:

"It is a nice hot sunny day" | Out-File -FilePath ".\output.txt" -Encoding ASCII -Width 10
Run Code Online (Sandbox Code Playgroud)

导出结果不会在第 10 个字符处被截断。它根本不会被截断。我不知道出了什么问题。

powershell powershell-4.0

5
推荐指数
1
解决办法
6493
查看次数

Powershell参数列表和double +空格

有人可以解释吗?我正在运行以下Powershell命令,两个“测试”之间的双倍空格将转换为一个空格。使用PS 3.0。

Start-Process Powershell -ArgumentList "-Command Write-Host test  test;pause"
Start-Process Powershell -ArgumentList "-Command Write-Host 'test  test';pause"
Start-Process Powershell -ArgumentList "Write-Host 'test  test';pause"
Run Code Online (Sandbox Code Playgroud)

下面的脚本调用(仅包含$ String参数和Write-Host $ String; pause)可以正常工作,但在同一会话中执行:

& C:\Test\Test.ps1 -String 'test  test'
Run Code Online (Sandbox Code Playgroud)

但是下面用单个空格代替了双精度空格:

Start-Process Powershell -ArgumentList "& C:\Test\Test.ps1 -String 'test  test'"
Run Code Online (Sandbox Code Playgroud)

我需要能够在当前会话之外运行另一个PS脚本,并将参数传递给可能包含此类双精度空格的脚本。谢谢!

string powershell arguments powershell-3.0

5
推荐指数
1
解决办法
2187
查看次数