好吧,我承认这个标题有点放肆。我多告诉你一点:我爱肆意妄言的标题,它能够吸引注意力。不管怎样,在这篇博文中我会试图证明 Go 是一个设计得很糟糕的语言(剧透:事实上它是)。我已经摆弄 Go 有几个月了,而且,我想我在六月某个时候运行了第一个 helloworld 程序。虽然我的数学不太好,但在那之后已经有四个月了,并且我的 Github 上已经有了几个 package。不必多说,我仍完全没有在生产中使用 Go 的经验,所以把我说的有关 “编码支持”、“部署”以及相关内容当作不可尽信的吧。

我喜欢 Go语言。自从试用了它以后我就爱上了。我花了几天来接受 Go 的语言习惯,来克服没有泛型的困难,了解奇怪的错误处理和 Go 的所有典型问题。我读了 Effective Go,以及 Dave Cheney 的博客上的许多文章,而且注意与 Go 有关的一切动向等等。我可以说我是一个活跃的社区成员!我爱 Go 而且我无法自拔—Go 令人惊奇。然而依我拙见,与它所宣传的正好相反,Go 是一个设计糟糕、劣质的语言。

Go 被认为是一个简练的编程语言。根据 Rob Pike 所说,他们使出了浑身解数来使这个语言的规范简单明了。这门语言的这一方面是令人惊奇的:你可以在几小时内学会基础并且直接开始编写能运行的代码,大多数情况下 Go 会如所期待的那样工作。你会被激怒,但是希望它管用。现实并不一样,Go语言并不是一个简洁,它只是低劣。以下有一些论点来证明。

理由1. 切片(Slice)操作压根就不对!
切片很棒,我真的很喜欢这个概念和一些用法。但是让我们花一秒钟,想象一下我们真的想要去用切片写一些代码。显而易见,切片存在于这门语言的灵魂中,它让 Go 强大。但是,再一次,在“理论”讨论的间隙,让我们想象一下我们有时会写一些实实在在的代码。以下列出的代码展示了你在 Go 中如何做列表操作。

// 请给我一些数字!
numbers := []int{1, 2, 3, 4, 5}

log(numbers) // 1. [1 2 3 4 5]
log(numbers[2:]) // 2. [3 4 5]
log(numbers[1:3]) // 3. [2 3]

// 有趣的是,你不能使用负数索引
//
// 来自 Python 的 numbers[:-1] 并不能正确工作,相反的是,
// 你必须这样做:
//
log(numbers[:len(numbers)-1]) // 4. [1 2 3 4]

// 可读性真实“太好了”,Pike 先生!干的漂亮!
//
// 现在,让我们在尾部插入一个6:
//
numbers = append(numbers, 6)

log(numbers) // 5. [1 2 3 4 5 6]

// 把3从numbers中移除 :
//
numbers = append(numbers[:2], numbers[3:]…)

log(numbers) // 6. [1 2 4 5 6]

// 想要插入一些数?别急,这里是一个Go语言通用最佳实践
//
// 我特别喜欢。。。哈哈哈。
//
numbers = append(numbers[:2], append([]int{3}, numbers[2:]…)…)

log(numbers) // 7. [1 2 3 4 5 6]

// 为了拷贝一份切片,你需要这样做:
//
copiedNumbers := make([]int, len(numbers))
copy(copiedNumbers, numbers)

log(copiedNumbers) // 8. [1 2 3 4 5 6]

//还有一些其他操作。。。
信不信由你,这是 Go 程序员每天如何转换切片的真实写照。而且我们没有任何泛型机制,所以,哥们,你不能创造一个漂亮的 insert() 函数来掩盖这个痛苦。我在 playgroud 贴了这个,所以你不应该相信我:自己双击一下去亲自看看。

理由2. Nil 接口并不总是 nil 🙂
他们告诉我们“在 Go 中错误不只是字符串”,并且你不该把它们当字符串对待。比如,来自 Docker 的 spf13 在他精彩的“Go 中的7个失误以及如何避免”中如此讲过。

他们也说我应该总是返回 error 接口类型(为了一致性、可读性等等)。我在以下所列代码中就是这么做的。你会感到惊讶,但是这个程序真的会跟 Pike 先生 say hello,但是这是所期待的吗?

package main

import “fmt”

type MagicError struct{}

func (MagicError) Error() string {
return “[Magic]”
}

func Generate() *MagicError {
return nil
}

func Test() error {
return Generate()
}

func main() {
if Test() != nil {
fmt.Println(“Hello, Mr. Pike!”)
}
}
是的,我知道为什么这会发生,因为我阅读了一堆复杂的关于接口和接口在 Go 中如何工作的资料。但是对于一个新手……拜托哥们,这是当头一棒!实际上,这是一个常见的陷阱。如你所见,没有这些让人心烦意乱的特性的 Go 是一个直接易学的语言,它偶尔说 nil 接口并不是nil 😉

理由3. 可笑的变量覆盖
为了以防万一你对这个术语不熟悉,让我引用一下 Wikipedia:”当在某个作用域(判定块、方法或者内部类)中声明的一个变量与作用域外的一个变量有相同的名字,变量覆盖就会发生。“看上去挺合理,一个相当普遍的做法是,多数的语言支持变量覆盖而且这没有问题。Go 并不是例外,但是却不太一样。下面是覆盖如何工作的:

package main

import “fmt”

func Secret() (int, error) {
return 42, nil
}

func main() {
number := 0

fmt.Println("before", number) // 0{// meet the shadowingnumber, err := Secret()if err != nil {panic(err)}fmt.Println("inside", number) // 42
}fmt.Println("after", number) // 0

}
是的,我也认识到 := 操作符制造了一个新的变量并且赋了一个右值,所以根据语言规范这是一个完全合法的行为。但是这里有件有意思的事:试着去掉内部作用域——它会如期望的运行(”在42之后“)。否则,就跟变量覆盖问个好吧。

无需赘言,这不是什么我在午饭时想起来的一个好玩的例子,它是人们早晚会遇到的真实的东西。这周的早些时候我重构了一些 Go 代码,就遇到了整个问题两次。编译没问题,代码检查没问题,什么都没问题——代码就是不正常运行。

理由4. 你不能传递把 []struct 作为 []interface 传递
接口很棒,Pike&Co. 一直说它就是 Go 语言的一切:接口事关你如何处理泛型,如何做 mock 测试,它是多态的实现方法。让我告诉你吧,当我阅读“Effective Go”的时候我真心爱着接口,而且我一直爱着它。除了上面我提出的“nil 接口不是 nil”的问题外,这里有另一个令人讨厌的事让我认为接口在 Go 语言中没有得到头等支持。基本上,你不能传递一个结构的切片到一个接收接口类型切片的函数上:

package main

import (
“fmt”
“strconv”
)

type FancyInt int

func (x FancyInt) String() string {
return strconv.Itoa(int(x))
}

type FancyRune rune

func (x FancyRune) String() string {
return string(x)
}

// 实际上,任何具有String()方法的对象
type Stringy interface {
String() string
}

// String, made of string representations of items given.
func Join(items []Stringy) (joined string) {
for _, item := range items {
joined += item.String()
}

return

}

func main() {
numbers := []FancyInt{1, 2, 3, 4, 5}
runes := []FancyRune{‘a’, ‘b’, ‘c’}

// You can't do this!
//
// fmt.Println(Join(numbers))
// fmt.Println(Join(runes))
//
// prog.go:40: cannot use numbers (type []FancyInt) as type []Stringy in argument to Join
// prog.go:41: cannot use runes (type []FancyRune) as type []Stringy in argument to Join
//
// 相反,你应该这样做:
//properNumbers := make([]Stringy, len(numbers))
for i, number := range numbers {properNumbers[i] = number
}properRunes := make([]Stringy, len(runes))
for i, r := range runes {properRunes[i] = r
}fmt.Println(Join(properNumbers))
fmt.Println(Join(properRunes))

}
不出意外,这是个已知的根本没有被当作问题的问题。它只是 Go 的又一个可笑的事,对吧?我真的推荐你阅读一下相关的 wiki,你会发现为什么“传递结构切片作为借口切片”不可行。但是呀,好好想想!我们可以做到,这里没什么魔法,这只是编译器的问题。看,在 49-57行 我做了一个由 []struct 到 []interface的显式转换。为什么 Go 编译器不为我做这些?是的显示要比隐式好,但是WTF?

我只是无法忍受人们看着这种狗屁语言又一直说“好,挺好的”。并不是。这些让 Go 变成了一个糟糕的语言。

理由5. 不起眼的 range“按值”循环
这是我曾经遇到过的第一个语言问题。好吧,在 Go 中有一个 “for-range”循环,是用来遍历切片和监听 channel 的。它到处都用得到而且还不错。然而这里有一个小问题,大多数新手被坑在这上面:range 循环只是按值的,它只是值拷贝,你不能真的去做什么,它不是 C++ 中的 foreach。

package main

import “fmt”

func main() {
numbers := []int{0, 1, 2, 3, 4}

for _, number := range numbers {number++
}fmt.Println(numbers) // [0 1 2 3 4]for i, _ := range numbers {numbers[i]++
}fmt.Println(numbers) // [1 2 3 4 5]

}
请注意,我没有抱怨 Go 里没有按引用的 range,我抱怨的是 range 太不起眼。动词“range”有点像是说“遍历项目“,而不是”遍历项目的拷贝“。让我们看一眼”Effective Go“中的 For,它听起来一点也不像”遍历切片中的拷贝值“,一点也不。我同意这是个小问题,我很快(几分钟)就克服了它,但是没有经验的 gopher 也许会花上一些时间调试代码,惊讶于为什么值没有改变。你们至少可以在”Effective Go“里面把这点讲述明白。

理由6. 可疑的编译器严谨性
就如我之前已经告诉你的,Go被认为是一个有着严谨的编译器的,简单明了并且可读性高的语言。比如,你不能编译一个带有未使用的 import 的程序。为什么?只是因为 Pike 先生认为这是对的。信不信由你,未使用的 import 不是世界末日,我完全可以与其共存。我完全同意它不对而且编译器不惜打印出相关的警告,但是为什么你为了这么一个小事中止编译?就为了未使用的 import,当真?

Go1.5 引入了一个有趣的语言变化:现在你可以列出 map 字面量,而不必显示列出被包含的类型名。这花了他们五年(甚至更多)来认识到显示类型列出被滥用了。

另一个我在 Go 语言里非常享受的事情:逗号。你看,在 Go 中你可以自由地定义多行 import、const 或者 var 代码块:

import (
“fmt”
“math”
“github.com/some_guy/fancy”
)
const (
One int = iota
Two
Three
)
var (
VarName int = 35
)
好吧,这挺好的。但是一旦它涉及到“可读性”,Rob Pike 认为加上逗号会很棒。某一刻,在加上逗号以后,他决定你应该也把结尾的逗号留着!所以你并不这样写:

numbers := []Object{
Object{“bla bla”, 42}
Object(“hahauha”, 69}
}
你必须这样写:

numbers := []Object{
Object{“bla bla”, 42},
Object(“hahauha”, 69},
}
我仍然怀疑为什么我们在 import/var/consts 代码块中可以忽略逗号,但是在列表和映射中不能。无论如何,Rob Pike 比我清楚!可读性万岁!

理由7. Go generate 太诡异了
首先,你要知道我没有反对代码生成。对于 Go 这样一个粗劣的语言,这也许是仅有的可用来避免拷贝-粘贴一些常见的东西的途径。然而,Go:generate——一个 Go 用户到处都用的代码生成工具,现在仅仅是垃圾而已。好吧,公平来说,这个工具本身还好,我喜欢它。而整个的方式是错的。我们看看吧,你要通过使用特别的魔法命令来生成一些代码。对,通过代码注释中的一些神奇的字节序列来做代码生成。

注释是用来解释代码,而不是生成代码。不过神奇的注释在当今的 Go 中是一种现象了。非常有意思的是,没人在乎,大家觉得这就挺好的。依我愚见,这绝对比吓人的未使用的 import 要糟糕。

后记
如你所见,我没有抱怨泛型、错误处理、语法糖和其他 Go 相关的典型问题。我同意泛型不至关重要,但如果你去掉泛型,请给我们一些正常的代码生成工具而不是随机的乱七八糟的狗屎神奇注释。如果你去掉异常,请给我们安全地把接口与 nil 比较的能力。如果你去掉语法糖,请给我们一些能够如预期工作的代码,而不是一些像变量遮蔽这样的“哎呦卧槽“的东西。

总而言之,我会继续使用 Go。理由如下:因为我爱它。我恨它因为它就是堆垃圾,但是我爱它的社区,我爱它的工具,我爱巧妙的设计决定(接口你好)和整个生态。

嘿伙计,想尝试尝试 Go 吗?

查看全文
如若内容造成侵权/违法违规/事实不符,请联系编程学习网邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!

相关文章

  1. 2020起重机械电气安装维修复审模拟考试及起重机械电气安装维修作业模拟考试

    题库来源:安全生产模拟考试一点通公众号小程序 2020起重机械电气安装维修复审模拟考试及起重机械电气安装维修作业模拟考试,包含起重机械电气安装维修复审模拟考试答案解析及起重机械电气安装维修作业模拟考试练习。由安全生产模拟考试一点通公众号结合…...

    2024/4/21 14:04:13
  2. 搭建视频点播服务器

    nginx-rtmp-moudle 搭建视频点播服务器一、环境准备准备二、系统安装安装nginx1、安装编译工具2、安装 PCRE 包 PCRE 作用是让 Nginx 支持 Rewrite 功能。3、安装 Nginx4、安装nginx-rtmp-module三、配置 nginx.conf 文件1、配置完毕,搭建结束2、访问rtmp视频流地址…...

    2024/4/28 1:34:25
  3. 从进军空气消毒赛道看格兰仕的改变

    格兰仕又有新动作。 8月31日,格兰仕在北京举办“自由呼吸自在生活”健康生活解决方案全球首发会,发布了首款空气消毒机GZ20。 一、2020,健康成为共识 2020年席卷全球的严重疫情,引发了全世界人们对健康生活、健康环境的空前关注…...

    2024/4/27 10:31:21
  4. 2020非金属作业考试题库及非金属考试试题

    题库来源:安全生产模拟考试一点通公众号小程序 2020非金属作业考试题库及非金属考试试题,包含非金属作业考试题库答案解析及非金属考试试题练习。由安全生产模拟考试一点通公众号结合国家非金属考试最新大纲及非金属考试真题出具,有助于非金…...

    2024/4/28 10:08:31
  5. elementui 开关文字显示在开关里面

    效果图 在app.vue中直接添加一下代码即可 <style lang"scss">.el-switch__label--left {position: relative;left: 45px;color: #fff;z-index: -1111;}.el-switch__core{width: 50px !important;}.el-switch__label--right {position: relative;right: 46p…...

    2024/4/25 15:37:19
  6. python 用爬虫爬取的大量数据怎么保存到本地

    前言 用爬虫爬取的大量数据怎么保存到本地,本文以保存到Excel为例。 1.先导入爬虫所需的库 说明一下,引入xlsxwriter这个库,主要是为了将数据写入Excel;我这里用到的是xpath,当然了你也可以选择bs4或者正则。 2.选取你要爬取的url地址,将地址赋值给一个变量url,别忘了…...

    2024/4/27 16:34:23
  7. 2020搬运车牵引力推顶车司机作业考试题库及搬运车牵引力推顶车司机模拟考试题库

    题库来源&#xff1a;安全生产模拟考试一点通公众号小程序 2020搬运车牵引力推顶车司机作业考试题库及搬运车牵引力推顶车司机模拟考试题库&#xff0c;包含搬运车牵引力推顶车司机作业考试题库答案解析及搬运车牵引力推顶车司机模拟考试题库练习。由安全生产模拟考试一点通公…...

    2024/4/28 5:32:08
  8. 16 解释器模式

    原文转载&#xff1a;https://blog.csdn.net/sinat_21107433/article/details/102864850 看过《大明王朝1566》吗&#xff1f;这是Jungle所看过的历史剧当中最最喜欢和推崇的一部剧。看过这部剧的小伙伴们都知道&#xff0c;嘉靖皇帝说话从来不会明明白白说出来&#xff0c;而是…...

    2024/4/27 21:23:31
  9. 2020工具钳工(初级)模拟考试及工具钳工(初级)实操考试视频

    题库来源&#xff1a;安全生产模拟考试一点通公众号小程序 2020工具钳工&#xff08;初级&#xff09;模拟考试及工具钳工&#xff08;初级&#xff09;实操考试视频&#xff0c;包含工具钳工&#xff08;初级&#xff09;模拟考试答案解析及工具钳工&#xff08;初级&#xf…...

    2024/4/26 22:14:23
  10. 网络协议(TCP/IP、UDP)总结

    什么是协议 协议实际上就是一种约定。好比说&#xff0c;我们做一个石头剪刀布的游戏&#xff0c;我们约定好&#xff1a;石头>剪刀、剪刀>布、布>石头&#xff0c;以此作为游戏规则。我们所有人都遵循这个约定&#xff0c;那么就不需要任何的多余的沟通便可以完成这…...

    2024/4/25 2:04:24
  11. Springboot下使用redis踩过的坑:腾讯架构师心得

    分享一下我的腾讯架构师同事在spring boot下使用redis的心得~ 首先总结了redis服务端单线程工作模型&#xff0c;redis四种部署方式及使用场景&#xff0c;然后从源码的角度上&#xff0c;分析springboot在jedis和lettuce客户端下使用redis的一些坑~尤其是在集群模式下的一些不…...

    2024/4/23 12:01:33
  12. 2020三级锅炉司炉模拟考试及三级锅炉司炉证考试

    题库来源&#xff1a;安全生产模拟考试一点通公众号小程序 2020三级锅炉司炉模拟考试及三级锅炉司炉证考试&#xff0c;包含三级锅炉司炉模拟考试答案解析及三级锅炉司炉证考试练习。由安全生产模拟考试一点通公众号结合国家三级锅炉司炉考试最新大纲及三级锅炉司炉考试真题出…...

    2024/4/7 10:59:54
  13. 浙江大学工程师学院宁波分院2020年全日制(项目制)统考生招生简章

    浙江大学工程师学院宁波分院2020年全日制&#xff08;项目制&#xff09;统考生招生简章 宁波市是国家计划单列市、副省级城市&#xff0c;也是国家首个“中国制造2025”试点城市。浙江大学宁波校区是浙江大学与宁波市政府战略合作的办学机构&#xff0c;2018年8月1日&#xf…...

    2024/4/25 12:55:21
  14. 2020溶解乙炔气瓶充装证考试及溶解乙炔气瓶充装复审模拟考试

    题库来源&#xff1a;安全生产模拟考试一点通公众号小程序 2020溶解乙炔气瓶充装证考试及溶解乙炔气瓶充装复审模拟考试&#xff0c;包含溶解乙炔气瓶充装证考试答案解析及溶解乙炔气瓶充装复审模拟考试练习。由安全生产模拟考试一点通公众号结合国家溶解乙炔气瓶充装考试最新…...

    2024/4/14 9:29:40
  15. 实现协程的三种方式

    14&#xff0c;写出协程实现的三种方式 利用yield实现协程 import timedef work1():# 循环打印数字1 while True:print("-----1-----")# yield可以暂时挂起该函数,跳转到调用该函数的下方yield# 延迟一秒以便观察time.sleep(1)def work2():while True:print("-…...

    2024/4/26 18:41:18
  16. 2020压力管道巡检维护考试题库及压力管道巡检维护证考试

    题库来源&#xff1a;安全生产模拟考试一点通公众号小程序 2020压力管道巡检维护考试题库及压力管道巡检维护证考试&#xff0c;包含压力管道巡检维护考试题库答案解析及压力管道巡检维护证考试练习。由安全生产模拟考试一点通公众号结合国家压力管道巡检维护考试最新大纲及压…...

    2024/4/27 15:15:09
  17. 2020溶解乙炔气瓶充装考试题及溶解乙炔气瓶充装考试软件

    题库来源&#xff1a;安全生产模拟考试一点通公众号小程序 2020溶解乙炔气瓶充装考试题及溶解乙炔气瓶充装考试软件&#xff0c;包含溶解乙炔气瓶充装考试题答案解析及溶解乙炔气瓶充装考试软件练习。由安全生产模拟考试一点通公众号结合国家溶解乙炔气瓶充装考试最新大纲及溶…...

    2024/4/25 10:54:06
  18. 类加载过程及类初始化时机

    类加载过程及类初始化时机 package reflection;public class Test05 {static {System.out.println("Main初始化");}public static void main(String[] args) {//类加载过程 // A a new A(); // System.out.println(A.m);/*1.加载到内存&#xff0c;生…...

    2024/4/22 3:38:00
  19. leetcode算法题--从上到下打印二叉树 II

    原题链接&#xff1a;https://leetcode-cn.com/problems/cong-shang-dao-xia-da-yin-er-cha-shu-ii-lcof/ vector<vector<int>> levelOrder(TreeNode* root) {queue<TreeNode*> qe;vector<vector<int>> res;if (root ! NULL) qe.push(root);whi…...

    2024/4/27 12:38:20
  20. 14 职责链模式

    原文转载&#xff1a;https://blog.csdn.net/sinat_21107433/article/details/102790445 应项目需求&#xff0c;公司安排Jungle去成都出差一段时间。这不&#xff0c;Jungle刚结束出差生活&#xff0c;回到公司准备报销。算了一下&#xff0c;Jungle一共有大概50万的一笔小额票…...

    2024/4/28 12:17:46

最新文章

  1. 「笔试刷题」:大数加法

    一、题目 描述 以字符串的形式读入两个数字&#xff0c;编写一个函数计算它们的和&#xff0c;以字符串形式返回。 数据范围&#xff1a;&#x1d460;.&#x1d459;&#x1d452;&#x1d45b;&#x1d454;&#x1d461;ℎ, &#x1d461;.&#x1d459;&#x1d452;&…...

    2024/4/28 14:34:56
  2. 梯度消失和梯度爆炸的一些处理方法

    在这里是记录一下梯度消失或梯度爆炸的一些处理技巧。全当学习总结了如有错误还请留言&#xff0c;在此感激不尽。 权重和梯度的更新公式如下&#xff1a; w w − η ⋅ ∇ w w w - \eta \cdot \nabla w ww−η⋅∇w 个人通俗的理解梯度消失就是网络模型在反向求导的时候出…...

    2024/3/20 10:50:27
  3. 从头开发一个RISC-V的操作系统(二)RISC-V 指令集架构介绍

    文章目录 前提ISA的基本介绍ISA是什么CISC vs RISCISA的宽度 RISC-V指令集RISC-V ISA的命名规范模块化的ISA通用寄存器Hart特权级别内存管理与保护异常和中断 目标&#xff1a;通过这一个系列课程的学习&#xff0c;开发出一个简易的在RISC-V指令集架构上运行的操作系统。 前提…...

    2024/4/24 5:34:22
  4. 游戏引擎架构01__引擎架构图

    根据游戏引擎架构预设的引擎架构来构建运行时引擎架构 ​...

    2024/4/23 6:16:08
  5. 416. 分割等和子集问题(动态规划)

    题目 题解 class Solution:def canPartition(self, nums: List[int]) -> bool:# badcaseif not nums:return True# 不能被2整除if sum(nums) % 2 ! 0:return False# 状态定义&#xff1a;dp[i][j]表示当背包容量为j&#xff0c;用前i个物品是否正好可以将背包填满&#xff…...

    2024/4/28 4:04:40
  6. 【Java】ExcelWriter自适应宽度工具类(支持中文)

    工具类 import org.apache.poi.ss.usermodel.Cell; import org.apache.poi.ss.usermodel.CellType; import org.apache.poi.ss.usermodel.Row; import org.apache.poi.ss.usermodel.Sheet;/*** Excel工具类** author xiaoming* date 2023/11/17 10:40*/ public class ExcelUti…...

    2024/4/28 12:01:04
  7. Spring cloud负载均衡@LoadBalanced LoadBalancerClient

    LoadBalance vs Ribbon 由于Spring cloud2020之后移除了Ribbon&#xff0c;直接使用Spring Cloud LoadBalancer作为客户端负载均衡组件&#xff0c;我们讨论Spring负载均衡以Spring Cloud2020之后版本为主&#xff0c;学习Spring Cloud LoadBalance&#xff0c;暂不讨论Ribbon…...

    2024/4/27 12:24:35
  8. TSINGSEE青犀AI智能分析+视频监控工业园区周界安全防范方案

    一、背景需求分析 在工业产业园、化工园或生产制造园区中&#xff0c;周界防范意义重大&#xff0c;对园区的安全起到重要的作用。常规的安防方式是采用人员巡查&#xff0c;人力投入成本大而且效率低。周界一旦被破坏或入侵&#xff0c;会影响园区人员和资产安全&#xff0c;…...

    2024/4/27 12:24:46
  9. VB.net WebBrowser网页元素抓取分析方法

    在用WebBrowser编程实现网页操作自动化时&#xff0c;常要分析网页Html&#xff0c;例如网页在加载数据时&#xff0c;常会显示“系统处理中&#xff0c;请稍候..”&#xff0c;我们需要在数据加载完成后才能继续下一步操作&#xff0c;如何抓取这个信息的网页html元素变化&…...

    2024/4/28 12:01:03
  10. 【Objective-C】Objective-C汇总

    方法定义 参考&#xff1a;https://www.yiibai.com/objective_c/objective_c_functions.html Objective-C编程语言中方法定义的一般形式如下 - (return_type) method_name:( argumentType1 )argumentName1 joiningArgument2:( argumentType2 )argumentName2 ... joiningArgu…...

    2024/4/28 12:01:03
  11. 【洛谷算法题】P5713-洛谷团队系统【入门2分支结构】

    &#x1f468;‍&#x1f4bb;博客主页&#xff1a;花无缺 欢迎 点赞&#x1f44d; 收藏⭐ 留言&#x1f4dd; 加关注✅! 本文由 花无缺 原创 收录于专栏 【洛谷算法题】 文章目录 【洛谷算法题】P5713-洛谷团队系统【入门2分支结构】&#x1f30f;题目描述&#x1f30f;输入格…...

    2024/4/28 12:01:03
  12. 【ES6.0】- 扩展运算符(...)

    【ES6.0】- 扩展运算符... 文章目录 【ES6.0】- 扩展运算符...一、概述二、拷贝数组对象三、合并操作四、参数传递五、数组去重六、字符串转字符数组七、NodeList转数组八、解构变量九、打印日志十、总结 一、概述 **扩展运算符(...)**允许一个表达式在期望多个参数&#xff0…...

    2024/4/27 12:44:49
  13. 摩根看好的前智能硬件头部品牌双11交易数据极度异常!——是模式创新还是饮鸩止渴?

    文 | 螳螂观察 作者 | 李燃 双11狂欢已落下帷幕&#xff0c;各大品牌纷纷晒出优异的成绩单&#xff0c;摩根士丹利投资的智能硬件头部品牌凯迪仕也不例外。然而有爆料称&#xff0c;在自媒体平台发布霸榜各大榜单喜讯的凯迪仕智能锁&#xff0c;多个平台数据都表现出极度异常…...

    2024/4/27 21:08:20
  14. Go语言常用命令详解(二)

    文章目录 前言常用命令go bug示例参数说明 go doc示例参数说明 go env示例 go fix示例 go fmt示例 go generate示例 总结写在最后 前言 接着上一篇继续介绍Go语言的常用命令 常用命令 以下是一些常用的Go命令&#xff0c;这些命令可以帮助您在Go开发中进行编译、测试、运行和…...

    2024/4/28 9:00:42
  15. 用欧拉路径判断图同构推出reverse合法性:1116T4

    http://cplusoj.com/d/senior/p/SS231116D 假设我们要把 a a a 变成 b b b&#xff0c;我们在 a i a_i ai​ 和 a i 1 a_{i1} ai1​ 之间连边&#xff0c; b b b 同理&#xff0c;则 a a a 能变成 b b b 的充要条件是两图 A , B A,B A,B 同构。 必要性显然&#xff0…...

    2024/4/27 18:40:35
  16. 【NGINX--1】基础知识

    1、在 Debian/Ubuntu 上安装 NGINX 在 Debian 或 Ubuntu 机器上安装 NGINX 开源版。 更新已配置源的软件包信息&#xff0c;并安装一些有助于配置官方 NGINX 软件包仓库的软件包&#xff1a; apt-get update apt install -y curl gnupg2 ca-certificates lsb-release debian-…...

    2024/4/28 4:14:21
  17. Hive默认分割符、存储格式与数据压缩

    目录 1、Hive默认分割符2、Hive存储格式3、Hive数据压缩 1、Hive默认分割符 Hive创建表时指定的行受限&#xff08;ROW FORMAT&#xff09;配置标准HQL为&#xff1a; ... ROW FORMAT DELIMITED FIELDS TERMINATED BY \u0001 COLLECTION ITEMS TERMINATED BY , MAP KEYS TERMI…...

    2024/4/27 13:52:15
  18. 【论文阅读】MAG:一种用于航天器遥测数据中有效异常检测的新方法

    文章目录 摘要1 引言2 问题描述3 拟议框架4 所提出方法的细节A.数据预处理B.变量相关分析C.MAG模型D.异常分数 5 实验A.数据集和性能指标B.实验设置与平台C.结果和比较 6 结论 摘要 异常检测是保证航天器稳定性的关键。在航天器运行过程中&#xff0c;传感器和控制器产生大量周…...

    2024/4/27 13:38:13
  19. --max-old-space-size=8192报错

    vue项目运行时&#xff0c;如果经常运行慢&#xff0c;崩溃停止服务&#xff0c;报如下错误 FATAL ERROR: CALL_AND_RETRY_LAST Allocation failed - JavaScript heap out of memory 因为在 Node 中&#xff0c;通过JavaScript使用内存时只能使用部分内存&#xff08;64位系统&…...

    2024/4/28 12:00:58
  20. 基于深度学习的恶意软件检测

    恶意软件是指恶意软件犯罪者用来感染个人计算机或整个组织的网络的软件。 它利用目标系统漏洞&#xff0c;例如可以被劫持的合法软件&#xff08;例如浏览器或 Web 应用程序插件&#xff09;中的错误。 恶意软件渗透可能会造成灾难性的后果&#xff0c;包括数据被盗、勒索或网…...

    2024/4/28 12:00:58
  21. JS原型对象prototype

    让我简单的为大家介绍一下原型对象prototype吧&#xff01; 使用原型实现方法共享 1.构造函数通过原型分配的函数是所有对象所 共享的。 2.JavaScript 规定&#xff0c;每一个构造函数都有一个 prototype 属性&#xff0c;指向另一个对象&#xff0c;所以我们也称为原型对象…...

    2024/4/27 22:51:49
  22. C++中只能有一个实例的单例类

    C中只能有一个实例的单例类 前面讨论的 President 类很不错&#xff0c;但存在一个缺陷&#xff1a;无法禁止通过实例化多个对象来创建多名总统&#xff1a; President One, Two, Three; 由于复制构造函数是私有的&#xff0c;其中每个对象都是不可复制的&#xff0c;但您的目…...

    2024/4/28 7:31:46
  23. python django 小程序图书借阅源码

    开发工具&#xff1a; PyCharm&#xff0c;mysql5.7&#xff0c;微信开发者工具 技术说明&#xff1a; python django html 小程序 功能介绍&#xff1a; 用户端&#xff1a; 登录注册&#xff08;含授权登录&#xff09; 首页显示搜索图书&#xff0c;轮播图&#xff0…...

    2024/4/28 8:32:05
  24. 电子学会C/C++编程等级考试2022年03月(一级)真题解析

    C/C++等级考试(1~8级)全部真题・点这里 第1题:双精度浮点数的输入输出 输入一个双精度浮点数,保留8位小数,输出这个浮点数。 时间限制:1000 内存限制:65536输入 只有一行,一个双精度浮点数。输出 一行,保留8位小数的浮点数。样例输入 3.1415926535798932样例输出 3.1…...

    2024/4/27 20:28:35
  25. 配置失败还原请勿关闭计算机,电脑开机屏幕上面显示,配置失败还原更改 请勿关闭计算机 开不了机 这个问题怎么办...

    解析如下&#xff1a;1、长按电脑电源键直至关机&#xff0c;然后再按一次电源健重启电脑&#xff0c;按F8健进入安全模式2、安全模式下进入Windows系统桌面后&#xff0c;按住“winR”打开运行窗口&#xff0c;输入“services.msc”打开服务设置3、在服务界面&#xff0c;选中…...

    2022/11/19 21:17:18
  26. 错误使用 reshape要执行 RESHAPE,请勿更改元素数目。

    %读入6幅图像&#xff08;每一幅图像的大小是564*564&#xff09; f1 imread(WashingtonDC_Band1_564.tif); subplot(3,2,1),imshow(f1); f2 imread(WashingtonDC_Band2_564.tif); subplot(3,2,2),imshow(f2); f3 imread(WashingtonDC_Band3_564.tif); subplot(3,2,3),imsho…...

    2022/11/19 21:17:16
  27. 配置 已完成 请勿关闭计算机,win7系统关机提示“配置Windows Update已完成30%请勿关闭计算机...

    win7系统关机提示“配置Windows Update已完成30%请勿关闭计算机”问题的解决方法在win7系统关机时如果有升级系统的或者其他需要会直接进入一个 等待界面&#xff0c;在等待界面中我们需要等待操作结束才能关机&#xff0c;虽然这比较麻烦&#xff0c;但是对系统进行配置和升级…...

    2022/11/19 21:17:15
  28. 台式电脑显示配置100%请勿关闭计算机,“准备配置windows 请勿关闭计算机”的解决方法...

    有不少用户在重装Win7系统或更新系统后会遇到“准备配置windows&#xff0c;请勿关闭计算机”的提示&#xff0c;要过很久才能进入系统&#xff0c;有的用户甚至几个小时也无法进入&#xff0c;下面就教大家这个问题的解决方法。第一种方法&#xff1a;我们首先在左下角的“开始…...

    2022/11/19 21:17:14
  29. win7 正在配置 请勿关闭计算机,怎么办Win7开机显示正在配置Windows Update请勿关机...

    置信有很多用户都跟小编一样遇到过这样的问题&#xff0c;电脑时发现开机屏幕显现“正在配置Windows Update&#xff0c;请勿关机”(如下图所示)&#xff0c;而且还需求等大约5分钟才干进入系统。这是怎样回事呢&#xff1f;一切都是正常操作的&#xff0c;为什么开时机呈现“正…...

    2022/11/19 21:17:13
  30. 准备配置windows 请勿关闭计算机 蓝屏,Win7开机总是出现提示“配置Windows请勿关机”...

    Win7系统开机启动时总是出现“配置Windows请勿关机”的提示&#xff0c;没过几秒后电脑自动重启&#xff0c;每次开机都这样无法进入系统&#xff0c;此时碰到这种现象的用户就可以使用以下5种方法解决问题。方法一&#xff1a;开机按下F8&#xff0c;在出现的Windows高级启动选…...

    2022/11/19 21:17:12
  31. 准备windows请勿关闭计算机要多久,windows10系统提示正在准备windows请勿关闭计算机怎么办...

    有不少windows10系统用户反映说碰到这样一个情况&#xff0c;就是电脑提示正在准备windows请勿关闭计算机&#xff0c;碰到这样的问题该怎么解决呢&#xff0c;现在小编就给大家分享一下windows10系统提示正在准备windows请勿关闭计算机的具体第一种方法&#xff1a;1、2、依次…...

    2022/11/19 21:17:11
  32. 配置 已完成 请勿关闭计算机,win7系统关机提示“配置Windows Update已完成30%请勿关闭计算机”的解决方法...

    今天和大家分享一下win7系统重装了Win7旗舰版系统后&#xff0c;每次关机的时候桌面上都会显示一个“配置Windows Update的界面&#xff0c;提示请勿关闭计算机”&#xff0c;每次停留好几分钟才能正常关机&#xff0c;导致什么情况引起的呢&#xff1f;出现配置Windows Update…...

    2022/11/19 21:17:10
  33. 电脑桌面一直是清理请关闭计算机,windows7一直卡在清理 请勿关闭计算机-win7清理请勿关机,win7配置更新35%不动...

    只能是等着&#xff0c;别无他法。说是卡着如果你看硬盘灯应该在读写。如果从 Win 10 无法正常回滚&#xff0c;只能是考虑备份数据后重装系统了。解决来方案一&#xff1a;管理员运行cmd&#xff1a;net stop WuAuServcd %windir%ren SoftwareDistribution SDoldnet start WuA…...

    2022/11/19 21:17:09
  34. 计算机配置更新不起,电脑提示“配置Windows Update请勿关闭计算机”怎么办?

    原标题&#xff1a;电脑提示“配置Windows Update请勿关闭计算机”怎么办&#xff1f;win7系统中在开机与关闭的时候总是显示“配置windows update请勿关闭计算机”相信有不少朋友都曾遇到过一次两次还能忍但经常遇到就叫人感到心烦了遇到这种问题怎么办呢&#xff1f;一般的方…...

    2022/11/19 21:17:08
  35. 计算机正在配置无法关机,关机提示 windows7 正在配置windows 请勿关闭计算机 ,然后等了一晚上也没有关掉。现在电脑无法正常关机...

    关机提示 windows7 正在配置windows 请勿关闭计算机 &#xff0c;然后等了一晚上也没有关掉。现在电脑无法正常关机以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容&#xff0c;让我们赶快一起来看一下吧&#xff01;关机提示 windows7 正在配…...

    2022/11/19 21:17:05
  36. 钉钉提示请勿通过开发者调试模式_钉钉请勿通过开发者调试模式是真的吗好不好用...

    钉钉请勿通过开发者调试模式是真的吗好不好用 更新时间:2020-04-20 22:24:19 浏览次数:729次 区域: 南阳 > 卧龙 列举网提醒您:为保障您的权益,请不要提前支付任何费用! 虚拟位置外设器!!轨迹模拟&虚拟位置外设神器 专业用于:钉钉,外勤365,红圈通,企业微信和…...

    2022/11/19 21:17:05
  37. 配置失败还原请勿关闭计算机怎么办,win7系统出现“配置windows update失败 还原更改 请勿关闭计算机”,长时间没反应,无法进入系统的解决方案...

    前几天班里有位学生电脑(windows 7系统)出问题了&#xff0c;具体表现是开机时一直停留在“配置windows update失败 还原更改 请勿关闭计算机”这个界面&#xff0c;长时间没反应&#xff0c;无法进入系统。这个问题原来帮其他同学也解决过&#xff0c;网上搜了不少资料&#x…...

    2022/11/19 21:17:04
  38. 一个电脑无法关闭计算机你应该怎么办,电脑显示“清理请勿关闭计算机”怎么办?...

    本文为你提供了3个有效解决电脑显示“清理请勿关闭计算机”问题的方法&#xff0c;并在最后教给你1种保护系统安全的好方法&#xff0c;一起来看看&#xff01;电脑出现“清理请勿关闭计算机”在Windows 7(SP1)和Windows Server 2008 R2 SP1中&#xff0c;添加了1个新功能在“磁…...

    2022/11/19 21:17:03
  39. 请勿关闭计算机还原更改要多久,电脑显示:配置windows更新失败,正在还原更改,请勿关闭计算机怎么办...

    许多用户在长期不使用电脑的时候&#xff0c;开启电脑发现电脑显示&#xff1a;配置windows更新失败&#xff0c;正在还原更改&#xff0c;请勿关闭计算机。。.这要怎么办呢&#xff1f;下面小编就带着大家一起看看吧&#xff01;如果能够正常进入系统&#xff0c;建议您暂时移…...

    2022/11/19 21:17:02
  40. 还原更改请勿关闭计算机 要多久,配置windows update失败 还原更改 请勿关闭计算机,电脑开机后一直显示以...

    配置windows update失败 还原更改 请勿关闭计算机&#xff0c;电脑开机后一直显示以以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容&#xff0c;让我们赶快一起来看一下吧&#xff01;配置windows update失败 还原更改 请勿关闭计算机&#x…...

    2022/11/19 21:17:01
  41. 电脑配置中请勿关闭计算机怎么办,准备配置windows请勿关闭计算机一直显示怎么办【图解】...

    不知道大家有没有遇到过这样的一个问题&#xff0c;就是我们的win7系统在关机的时候&#xff0c;总是喜欢显示“准备配置windows&#xff0c;请勿关机”这样的一个页面&#xff0c;没有什么大碍&#xff0c;但是如果一直等着的话就要两个小时甚至更久都关不了机&#xff0c;非常…...

    2022/11/19 21:17:00
  42. 正在准备配置请勿关闭计算机,正在准备配置windows请勿关闭计算机时间长了解决教程...

    当电脑出现正在准备配置windows请勿关闭计算机时&#xff0c;一般是您正对windows进行升级&#xff0c;但是这个要是长时间没有反应&#xff0c;我们不能再傻等下去了。可能是电脑出了别的问题了&#xff0c;来看看教程的说法。正在准备配置windows请勿关闭计算机时间长了方法一…...

    2022/11/19 21:16:59
  43. 配置失败还原请勿关闭计算机,配置Windows Update失败,还原更改请勿关闭计算机...

    我们使用电脑的过程中有时会遇到这种情况&#xff0c;当我们打开电脑之后&#xff0c;发现一直停留在一个界面&#xff1a;“配置Windows Update失败&#xff0c;还原更改请勿关闭计算机”&#xff0c;等了许久还是无法进入系统。如果我们遇到此类问题应该如何解决呢&#xff0…...

    2022/11/19 21:16:58
  44. 如何在iPhone上关闭“请勿打扰”

    Apple’s “Do Not Disturb While Driving” is a potentially lifesaving iPhone feature, but it doesn’t always turn on automatically at the appropriate time. For example, you might be a passenger in a moving car, but your iPhone may think you’re the one dri…...

    2022/11/19 21:16:57