- r - 以节省内存的方式增长 data.frame
- ruby-on-rails - ruby/ruby on rails 内存泄漏检测
- android - 无法解析导入android.support.v7.app
- UNIX 域套接字与共享内存(映射文件)
我正在尝试使用 govmomi 库 ( https://github.com/vmware/govmomi ) 对 VM 进行一些自动更改,但我似乎无法解决过去几个小时第 134 行和第 136 行的 nil 指针异常。我让它在某一时刻工作,但后来我不确定我现在做错了什么,因为我尝试了很多组合,但现在似乎没有任何工作......
package main
import (
"context"
"flag"
"github.com/vmware/govmomi"
"github.com/vmware/govmomi/vim25"
"github.com/vmware/govmomi/vim25/soap"
"net/url"
"os"
"strings"
"fmt"
"github.com/vmware/govmomi/govc/flags"
"github.com/vmware/govmomi/vim25/types"
"log"
)
type change struct {
*flags.VirtualMachineFlag
}
const (
envURL = "GOVC_URL"
envUserName = "GOVC_USERNAME"
envPassword = "GOVC_PASSWORD"
envInsecure = "GOVC_INSECURE"
)
// getEnvString returns string from environment variable.
func getEnvString(v string, def string) string {
r := os.Getenv(v)
if r == "" {
return def
}
return r
}
// getEnvBool returns boolean from environment variable.
func getEnvBool(v string, def bool) bool {
r := os.Getenv(v)
if r == "" {
return def
}
switch strings.ToLower(r[0:1]) {
case "t", "y", "1":
return true
}
return false
}
var urlDescription = fmt.Sprintf("ESX or vCenter URL [%s]", envURL)
var urlFlag = flag.String("url", getEnvString(envURL, "https://username:password@host"+vim25.Path), urlDescription)
var insecureDescription = fmt.Sprintf("Don't verify the server's certificate chain [%s]", envInsecure)
var insecureFlag = flag.Bool("insecure", getEnvBool(envInsecure, false), insecureDescription)
func processOverride(u *url.URL) {
envUsername := os.Getenv(envUserName)
envPassword := os.Getenv(envPassword)
// Override username if provided
if envUsername != "" {
var password string
var ok bool
if u.User != nil {
password, ok = u.User.Password()
}
if ok {
u.User = url.UserPassword(envUsername, password)
} else {
u.User = url.User(envUsername)
}
}
// Override password if provided
if envPassword != "" {
var username string
if u.User != nil {
username = u.User.Username()
}
u.User = url.UserPassword(username, envPassword)
}
}
func NewClient(ctx context.Context) (*govmomi.Client, error) {
flag.Parse()
// Parse URL from string
u, err := soap.ParseURL(*urlFlag)
if err != nil {
return nil, err
}
// Override username and/or password as required
processOverride(u)
// Connect and log in to ESX or vCenter
return govmomi.NewClient(ctx, u, *insecureFlag)
}
func main() {
ctx := context.Background()
// Connect and login to ESX or vCenter
c, err := NewClient(ctx)
if err != nil {
log.Fatal(err)
}
defer c.Logout(ctx)
var spec *types.VirtualMachineConfigSpec
var cmd *change
var flip bool
flip = false
spec.VPMCEnabled = &flip
vm, err := cmd.VirtualMachine()
task, err := vm.Reconfigure(ctx, *spec)
if err != nil {
println(err)
}
fmt.Println(task.Wait(ctx))
}
抛出错误的两行是:
spec.VPMCEnabled = &flip
和
虚拟机,错误 := cmd.VirtualMachine()
两者似乎都抛出相同的 panic: runtime error: invalid memory address or nil pointer dereference
。如果我注释掉第一个抛出错误,第二个抛出错误。
我认为两者无关,但我不太清楚如何正确地进行取消引用。
----更新编辑 1----------------
我用下面的响应对此进行了一些更改,但仍然无法解决 task, err := vm.Reconfigure(ctx, *spec)
...
package main
import (
"context"
"flag"
"github.com/vmware/govmomi"
"github.com/vmware/govmomi/object"
"github.com/vmware/govmomi/vim25"
"github.com/vmware/govmomi/vim25/soap"
"net/url"
"os"
"strings"
"fmt"
"github.com/vmware/govmomi/vim25/types"
"log"
)
const (
envURL = "GOVC_URL"
envUserName = "GOVC_USERNAME"
envPassword = "GOVC_PASSWORD"
envInsecure = "GOVC_INSECURE"
)
// getEnvString returns string from environment variable.
func getEnvString(v string, def string) string {
r := os.Getenv(v)
if r == "" {
return def
}
return r
}
// getEnvBool returns boolean from environment variable.
func getEnvBool(v string, def bool) bool {
r := os.Getenv(v)
if r == "" {
return def
}
switch strings.ToLower(r[0:1]) {
case "t", "y", "1":
return true
}
return false
}
var urlDescription = fmt.Sprintf("ESX or vCenter URL [%s]", envURL)
var urlFlag = flag.String("url", getEnvString(envURL, "https://username:password@host"+vim25.Path), urlDescription)
var insecureDescription = fmt.Sprintf("Don't verify the server's certificate chain [%s]", envInsecure)
var insecureFlag = flag.Bool("insecure", getEnvBool(envInsecure, false), insecureDescription)
func processOverride(u *url.URL) {
envUsername := os.Getenv(envUserName)
envPassword := os.Getenv(envPassword)
// Override username if provided
if envUsername != "" {
var password string
var ok bool
if u.User != nil {
password, ok = u.User.Password()
}
if ok {
u.User = url.UserPassword(envUsername, password)
} else {
u.User = url.User(envUsername)
}
}
// Override password if provided
if envPassword != "" {
var username string
if u.User != nil {
username = u.User.Username()
}
u.User = url.UserPassword(username, envPassword)
}
}
func NewClient(ctx context.Context) (*govmomi.Client, error) {
flag.Parse()
// Parse URL from string
u, err := soap.ParseURL(*urlFlag)
if err != nil {
return nil, err
}
// Override username and/or password as required
processOverride(u)
// Connect and log in to ESX or vCenter
return govmomi.NewClient(ctx, u, *insecureFlag)
}
func main() {
ctx := context.Background()
// Connect and login to ESX or vCenter
c, err := NewClient(ctx)
if err != nil {
log.Fatal(err)
}
defer c.Logout(ctx)
var spec *types.VirtualMachineConfigSpec
spec = new(types.VirtualMachineConfigSpec)
var flip bool
flip = false
spec.VPMCEnabled = &flip
var vm *object.VirtualMachine
vm = new(object.VirtualMachine)
task, err := vm.Reconfigure(ctx, *spec)
if err != nil {
println(err)
}
fmt.Println(task.Wait(ctx))
}
我得到的完整错误是这样的:
panic: runtime error: invalid memory address or nil pointer dereference
[signal SIGSEGV: segmentation violation code=0x1 addr=0x280 pc=0x14e18f6]
goroutine 1 [running]:
github.com/vmware/govmomi/vim25.(*Client).RoundTrip(0x0, 0x1886f00, 0xc000016088, 0x1884140, 0xc000298720, 0x1884140, 0xc000298740, 0x300, 0x16e8ac0)
/Users/ronakpatel/go/src/github.com/vmware/govmomi/vim25/client.go:89 +0x26
github.com/vmware/govmomi/vim25/methods.ReconfigVM_Task(0x1886f00, 0xc000016088, 0x1884060, 0x0, 0xc0002d0000, 0xc000288000, 0xc000080400, 0x0)
/Users/ronakpatel/go/src/github.com/vmware/govmomi/vim25/methods/methods.go:10879 +0xb8
github.com/vmware/govmomi/object.VirtualMachine.Reconfigure(0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x1886f00, 0xc000016088, 0x0, ...)
/Users/ronakpatel/go/src/github.com/vmware/govmomi/object/virtual_machine.go:207 +0x19b
main.main()
/Users/ronakpatel/go/src/awesomeProject1/main.go:143 +0x1ec
exit status 2
----更新编辑2------------
我改变了一些东西并使用了下面提供的答案但现在我再次收到错误但在这部分:task, err := vm.Reconfigure(ctx, spec1)
错误:
panic: runtime error: invalid memory address or nil pointer dereference
[signal SIGSEGV: segmentation violation code=0x1 addr=0x0 pc=0x153d05a]
goroutine 1 [running]:
main.main()
/Users/ronakpatel/go/src/awesomeProject1/main.go:134 +0x19a
exit status 2
代码:
spec1 := types.VirtualMachineConfigSpec{
VPMCEnabled: &[]bool{false}[0],
}
var vm *object.VirtualMachine
var vmf *flags.VirtualMachineFlag
vmf, ctx = flags.NewVirtualMachineFlag(ctx)
vm, _ = vmf.VirtualMachine()
task, err := vm.Reconfigure(ctx, spec1)
if err != nil {
println(err)
}
fmt.Println(task.Wait(ctx))
最佳答案
var spec *types.VirtualMachineConfigSpec // error: spec is nil pointer
spec = new(types.VirtualMachineConfigSpec) // fix: spec is not nil
var cmd *change
var flip bool
flip = false
// used here
spec.VPMCEnabled = &flip
vm, err := cmd.VirtualMachine()
关于go - 使用 govmomi 库在 golang 中实现零点偏差,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55391608/
我正在用 Objective C 重写蒙特卡罗模拟,以便在 VBA/Excel 的 dll 中使用。计算中的“引擎”是创建 0 到 10001 之间的随机数,并将其与 5000-7000 附近的变量进
我目前正在尝试使用 Flask 创建一个简单的 Web 应用程序,用于交互式神经网络训练。我正在努力解决的是在训练前馈神经网络后检索隐藏层的权重 - 我的目标是为 Tensorflow's Playg
我知道如何找到手机当前所在位置的真实航向/磁航向,但是否有可能找到远程位置的磁偏差/磁偏角? 我想做的是能够在 map 上的一个地方放置一个图钉,然后找到真实的方位角和从该点开始有磁差的方位角。 谢谢
函数方法glTexImage2D将“level”作为参数,表示细节级别偏差。但是,可以使用 glTexParameteri 和 GL_TEXTURE_LOD_BIAS 目标来设置纹理的 LOD 偏差。
有没有一种简单的方法来显示我在训练后输入到使用 Neurolab 开发的 ANN 中的每个属性的偏差或权重? 最佳答案 是的,您可以看到所有图层的权重和偏差。通过使用 net.layers[i].np
我正在用我目前在 Metal 中使用的应用程序的 Android 版本重写一个 OpenGL 过滤器。它使用以下纹理查找函数:vec4 texture2D(sampler2D 采样器,vec2 坐标,
我有一个简单的算法,可以让对象在 Java 中以给定的最大速度跟随鼠标指针。该算法的关键在于: // Set up displacement trackers for later. // (These
我在我的 Android 应用程序中使用“HelveticaNeue.ttf”作为自定义字体;对于所有以前的 android 版本都很好,但是对于 lollipop,它比通常的字体拉伸(stretch
我正在寻找一种方法来生成一组具有指定均值和标准差的整数。偏差。 使用随机库,可以生成一组以高斯方式分布的随机 double ,这看起来像这样: #include std::tr1::normal_d
我正在尝试训练 LambdaMART 模型来对对象列表执行成对排序。我的训练数据集由 50,000 个 112 维特征向量组成。每个特征都由一个非负整数编码。 目标值是正整数(不连续)。给定两个新实例
我在名为“df”的数据框中有时间序列数据,并且计算 z 分数的代码如下: mean = df.mean() standard_dev = df.std() z_score = (df - mean)
关闭。此题需要details or clarity 。目前不接受答案。 想要改进这个问题吗?通过 editing this post 添加详细信息并澄清问题. 已关闭 3 年前。 Improve th
我正在尝试在 TensorFlow 中执行以下线性回归,但我的输出都是 Inf 和 NaN。 我的输入数据集必须是 Y=0.5*X + 2 + 噪声;其中 X 是大小 (1000) 的正态分布,噪声是
我是一名优秀的程序员,十分优秀!