这里是GO程序员的五个进化阶段:

第一个阶段(菜逼): 刚刚学习了这门语言。 已经通过一些教程或者培训班了解基本的语法,可以写短的代码片段。

第二个阶段 (探索者): 可以写一个完整的程序,但不懂一些更高级的语言特征,比如“channels”。还没有使用GO写一个大项目。

第三个阶段(大手): 你能熟练的使用Go, 能够用GO去解决,生产环境中一个具体和完整的问题。已经形成了一套自己的惯用法和常用代码库。在你的编码方案中Go是一个非常好用的工具。

第四阶段 (大神): 绝逼清楚Go语言的设计选择和背后的动机。能理解的简洁和可组合性哲学。

布道师: 积极地与他人分享关于Go语言知识和你对Go语言的理解。在各种合适的场所发出自己的声音, 参与邮件列表、建立QQ群、做专题报告。成为一个布道者不见得是一个完全独立的阶段,这个角色可以在上述的任何一个阶段中。

第一阶段: 菜逼

菜鸟在这个阶段使用Go去创建一些小项目或者玩具项目。他们应该会利用到Go tour, Go playground, Go文档, 和邮件列表(golang-nuts).

func main() {fmt.Println(stringutil.Reverse("!selpmaxe oG ,olleH"))}

这是Go语言写的简单例子,这个代码段来自golang/example代码库里面的 hello.go 。 点击就可以查看完整代码撸。

一项重要的技能,新人应该试着学习如何正确提问。很多新人在邮件列表里面这样说“嘿,这报错了”,这并没有提供足够的信息,让别人能理解并帮助他们解决问题。别人看到的是一个粘贴了几百行的代码的帖子,并没有花费精力来重点说明所遇到的问题。

所以, 应该尽量避免直接粘贴代码到论坛。而应该使用可以编辑并且可以在浏览器中直接运行的Go playground的“分享”按钮链接到代码片段。

Phase 2: the explorer

探索者已经可以使用Go写一些小的软件,但有时仍然会有些迷茫。他们可能不完全明白怎么使用Go的高级特性,比如通道。虽然他们还有很多东西要学习,但已掌握的足够做一些有用的事情了!他们开始对Go的潜能有感觉了,并对它们能使用Go创建的东西感到兴奋。


在探索阶段通常会经历两个步骤。第一,膨胀的预期达到顶点,你觉得可以用Go做所有的事情,但还并不能明白或领悟到Go的真谛。你大概会用所熟悉的语言的模式和惯用语来写Go代码,但对于什么是地道的Go,还没有比较强烈的感觉。你开始尝试着手干这样的事情--“迁移架构X,从Y语言到Go语言”。

到达预期膨胀的顶点之后,你会遇到理想幻灭的低谷。你开始想念语言Y的特性X,此时你还没有完全的掌握地道的Go。你还在用其他编程语言的风格来写Go语言的程序,你甚至开始觉得沮丧。你可能在大量使用reflect和unsafe这两个包,但这不是地道的Go。地道的Go不会使用那些魔法一样的东西。

这个探索阶段产生的项目的一个很好的例子就是Martini Web框架。Martini是一个Go语言的早期Web框架,它从Ruby的Web框架当中吸收了很多思想(比如依赖注入)。最初,这个框架在社区中引起了强烈的反响,但是它逐渐在性能和可调试性上受到了一些批评。Martini框架的作者JeremySaenz积极响应这些来自Go社区的反馈,写了一个更加符合Go语言规范的库Negroni

func (m *Martini) RunOnAddr(addr string) {// TODO: Should probably be implemented using a new instance of http.Server in place of// calling http.ListenAndServer directly, so that it could be stored in the martini struct for later use.// This would also allow to improve testing when a custom host and port are passed.logger := m.Injector.Get(reflect.TypeOf(m.logger)).Interface().(*log.Logger)logger.Printf("listening on %s (%s)\n", addr, Env)logger.Fatalln(http.ListenAndServe(addr, m))}

来自Martini框架的交互式代码片段,它是不地道的Go的例子。注意用反射包实现的依赖注入

func TestNegroniServeHTTP(t *testing.T) {result := ""response := httptest.NewRecorder()n := New()n.Use(HandlerFunc(func(rw http.ResponseWriter, r *http.Request, next http.HandlerFunc) {result += "foo"next(rw, r)result += "ban"}))n.Use(HandlerFunc(func(rw http.ResponseWriter, r *http.Request, next http.HandlerFunc) {result += "bar"next(rw, r)result += "baz"}))n.Use(HandlerFunc(func(rw http.ResponseWriter, r *http.Request, next http.HandlerFunc) {result += "bat"rw.WriteHeader(http.StatusBadRequest)}))n.ServeHTTP(response, (*http.Request)(nil))expect(t, result, "foobarbatbazban")expect(t, response.Code, http.StatusBadRequest)}

来自Negroni库的交互式代码片段,它是地道的Go的例子

其他语言在提供一些核心功能,比如HTTP处理的时候,往往需要依赖第三方库。但是Go语言在这一点上很不同,它的标准库非常强大。如果你认为Go标准库没有强大到可以做你想做的事情,那么我说你错了。Go语言标准库难以置信的强大,值得你花时间阅读它的代码,学习它实现的模式。

func (srv *Server) ListenAndServe() error {addr := srv.Addrif addr == "" {addr = ":http"}ln, err := net.Listen("tcp", addr)if err != nil {return err}return srv.Serve(tcpKeepAliveListener{ln.(*net.TCPListener)})}

Go标准库中的ListenAndServe函数片段。如果你写过Go程序,你可能已经调用过这个函数很多次了,但是你曾经花时间看过它的实现么?去点击上面的代码片段吧。

幻灭的低谷中的幻灭感来自于这样的事实:你还在用其他语言的模式来想问题,而且你还没有完全探索过Go能提供给你什么。下面是一些好玩的事情,你可以做一下来打破困境,进一步探索这门语言中好玩的事。

go generate

现在来看看go generate。go generate是一个你可以用来自动自成Go代码的命令。你可以结合例如jsonenums(一个用于为枚举类型自动生成JSON编组样板代码的类库)这样的元编程来使用go generate快速自动实现重复乏味代码的编写。在Go标准类库里面已经有大量可以用于解析AST的接口,而AST使得编写元编程工具更简单,更容易。在会议上,有另外两次讨论(Go语言中的元编程实践和拥抱标准类库)谈及到了这一点。

func main() {flag.Parse()if len(*typeNames) == 0 {log.Fatalf("the flag -type must be set")}types := strings.Split(*typeNames, ",")// Only one directory at a time can be processed, and the default is ".".dir := "."if args := flag.Args(); len(args) == 1 {dir = args[0]} else if len(args) > 1 {log.Fatalf("only one directory at a time")}pkg, err := parser.ParsePackage(dir, *outputSuffix+".go")if err != nil {log.Fatalf("parsing package: %v", err)}var analysis = struct {Command        stringPackageName    stringTypesAndValues map[string][]string}{Command:        strings.Join(os.Args[1:], " "),PackageName:    pkg.Name,TypesAndValues: make(map[string][]string),}// Run generate for each type.for _, typeName := range types {values, err := pkg.ValuesOfType(typeName)if err != nil {log.Fatalf("finding values for type %v: %v", typeName, err)}analysis.TypesAndValues[typeName] = valuesvar buf bytes.Bufferif err := generatedTmpl.Execute(&buf, analysis); err != nil {log.Fatalf("generating code: %v", err)}src, err := format.Source(buf.Bytes())if err != nil {// Should never happen, but can arise when developing this code.// The user can compile the output to see the error.log.Printf("warning: internal error: invalid Go generated: %s", err)log.Printf("warning: compile the package to analyze the error")src = buf.Bytes()}output := strings.ToLower(typeName + *outputSuffix + ".go")outputPath := filepath.Join(dir, output)if err := ioutil.WriteFile(outputPath, src, 0644); err != nil {log.Fatalf("writing output: %s", err)}}}

一段互动的片段演示了如何编写jsonenums命令。

OpenGL

许多人使用Go作web服务,但是你知道你也可以用Go写出很cool的图形应用吗?查看Go在OpenGL中的捆绑。

func main() {glfw.SetErrorCallback(errorCallback)if !glfw.Init() {panic("Can't init glfw!")}defer glfw.Terminate()window, err := glfw.CreateWindow(Width, Height, Title, nil, nil)if err != nil {panic(err)}window.MakeContextCurrent()glfw.SwapInterval(1)gl.Init()if err := initScene(); err != nil {fmt.Fprintf(os.Stderr, "init: %s\n", err)return}defer destroyScene()for !window.ShouldClose() {drawScene()window.SwapBuffers()glfw.PollEvents()}}

交互式的片段正说明Go的OpenGL捆绑能制作Gopher cube。点击函数或方法名去探索。

黑客马拉松和挑战

你也可以观看挑战和黑客马拉松,类似Gopher Gala和Go Challenge。在过去,来自世界各地的程序员一起挑战一些真实的酷项目,你可以从中获取灵感。

第三阶段: 老手

作为一个老手,这意味着你可以解决很多Go语言中你关心的问题。新的需要解决的问题会带来新的疑问,经过试错,你学会了在这门语言中什么是可以做的,什么是不能做的。此时,你已经对这门语言的习惯和模式有了一个坚实的理解。你可以非常高效地工作,写出可读,文档完善,可维护的代码。

成为老手的一个很好的方法就是在大项目上工作。如果你自己有一个项目的想法,开始动手去做吧(当然你要确定它并不是已经存在了)。大多数人也许并没有一个很大的项目的想法,所以他们可以对已经存在的项目做出贡献。Go语言已经有很多大型项目,而且它们正在被广泛使用,比如Docker, Kubernetes和Go本身。可以看看这个项目列表

func (cli *DockerCli) CmdRestart(args ...string) error {cmd := cli.Subcmd("restart", "CONTAINER [CONTAINER...]", "Restart a running container", true)nSeconds := cmd.Int([]string{"t", "-time"}, 10, "Seconds to wait for stop before killing the container.")cmd.Require(flag.Min, 1)utils.ParseFlags(cmd, args, true)v := url.Values{}v.Set("t", strconv.Itoa(*nSeconds))var encounteredError errorfor _, name := range cmd.Args() {_, _, err := readBody(cli.call("POST", "/containers/"+name+"/restart?"+v.Encode(), nil, false))if err != nil {fmt.Fprintf(cli.err, "%s\n", err)encounteredError = fmt.Errorf("Error: failed to restart one or more containers")} else {fmt.Fprintf(cli.out, "%s\n", name)}}return encounteredError}

Docker项目的交互式代码片段。点击函数名,开始探索之旅吧。

老手应该对Go生态系统的工具有一个很强的掌握,因为这些工具真的提高生产效率。你应该了解go generate,go vet,go test-race, 和gofmt/goimports/goreturns。你应该使用go fmt,因为它会自动把你的代码按照Go社区的风格标准来格式化。goimports可以做同样的事情,而且还会添加丢失的imports。goretures不光做了前面所说的事情,还可以在返回表达式添加丢失的错误,这是大家都讨厌的地方。

在老手阶段,你一定要开始做code review。code review的意义并不是要修改或者找到错误(那是测试人员做的事情)。code review可以帮助维持统一的编程风格,提高软件的总体质量,还可以在别人的反馈中提高你自己的编程技术。几乎所有的大型开源项目都对每一个提交做code review。

下面是一个从人类的反馈当中学习的例子:Google的Go团队以前都在main函数的外面声明命令行标记。在去年的GopherCon会议上,Francesc遇到了SoundCloud公司的Peter Bourgon(@peterbourgon)。Peter Bourgon说在SoundCloud,他们都在main函数内部声明标记,这样他们不会错误地在外部使用标记。Francesc现在认为这是最佳实践。

第四阶段:专家

作为一个专家,你很好地了解了语言的哲学思想。对于Go语言的特性,你知道何时应该使用,何时不应该使用。例如,Jeremy Saenz在dotGo风暴讨论中谈论到了何时不该使用接口。

func (client *Client) Go(serviceMethod string, args interface{}, reply interface{}, done chan *Call) *Call {call := new(Call)call.ServiceMethod = serviceMethodcall.Args = argscall.Reply = replyif done == nil {done = make(chan *Call, 10) // buffered.} else {// If caller passes done != nil, it must arrange that// done has enough buffer for the number of simultaneous// RPCs that will be using that channel.  If the channel// is totally unbuffered, it's best not to run at all.if cap(done) == 0 {log.Panic("rpc: done channel is unbuffered")}}call.Done = doneclient.send(call)return call}

来自标准类库的一小块交互代码片段使用了频道。理解标准类库里面的模式背后的决策原因是成为一个专家必经之路。

但是不要成为只局限于单一语言的专家。跟其他任何语言一样,Go仅仅只是一个工具。你还应该去探索其他语言,并且学习他们的模式和风格。Francesc从他使用Go的经验中找到了编写JavaScript的启发。他还喜欢重点关注于不可变性和致力于避免易变性的Haskell语言,并从中获得了如何编写Go代码的灵感。

布道者

作为一个布道者,你分享自己的知识,传授你学会的和你提出的最佳实践。你可以分享自己对Go喜欢或者不喜欢的地方。全世界各地都有Go会议,找到离你最近的。

你可以在任何一个阶段成为布道者,不要等到你成为这个领域的专家的时候才发出自己的声音。在你学习Go的任何一个阶段,提出问题,结合你的经验给出反馈,不要羞于提出自己不喜欢的地方。你提出的反馈可以帮助社区改善做事情的方法,也可能改变你自己对编程的看法。

func main() {httpAddr := flag.String("http", "127.0.0.1:3999", "HTTP service address (e.g., '127.0.0.1:3999')")originHost := flag.String("orighost", "", "host component of web origin URL (e.g., 'localhost')")flag.StringVar(&basePath, "base", "", "base path for slide template and static resources")flag.BoolVar(&present.PlayEnabled, "play", true, "enable playground (permit execution of arbitrary user code)")nativeClient := flag.Bool("nacl", false, "use Native Client environment playground (prevents non-Go code execution)")flag.Parse()if basePath == "" {p, err := build.Default.Import(basePkg, "", build.FindOnly)if err != nil {fmt.Fprintf(os.Stderr, "Couldn't find gopresent files: %v\n", err)fmt.Fprintf(os.Stderr, basePathMessage, basePkg)os.Exit(1)}basePath = p.Dir}err := initTemplates(basePath)if err != nil {log.Fatalf("Failed to parse templates: %v", err)}ln, err := net.Listen("tcp", *httpAddr)if err != nil {log.Fatal(err)}defer ln.Close()_, port, err := net.SplitHostPort(ln.Addr().String())if err != nil {log.Fatal(err)}origin := &url.URL{Scheme: "http"}if *originHost != "" {origin.Host = net.JoinHostPort(*originHost, port)} else if ln.Addr().(*net.TCPAddr).IP.IsUnspecified() {name, _ := os.Hostname()origin.Host = net.JoinHostPort(name, port)} else {reqHost, reqPort, err := net.SplitHostPort(*httpAddr)if err != nil {log.Fatal(err)}if reqPort == "0" {origin.Host = net.JoinHostPort(reqHost, port)} else {origin.Host = *httpAddr}}if present.PlayEnabled {if *nativeClient {socket.RunScripts = falsesocket.Environ = func() []string {if runtime.GOARCH == "amd64" {return environ("GOOS=nacl", "GOARCH=amd64p32")}return environ("GOOS=nacl")}}playScript(basePath, "SocketTransport")http.Handle("/socket", socket.NewHandler(origin))}http.Handle("/static/", http.FileServer(http.Dir(basePath)))if !ln.Addr().(*net.TCPAddr).IP.IsLoopback() &&present.PlayEnabled && !*nativeClient {log.Print(localhostWarning)}log.Printf("Open your web browser and visit %s", origin.String())log.Fatal(http.Serve(ln, nil))

流行的present命令的main函数,很多Go的用户使用它来制作幻灯片。许多演讲者修改了这个模块来满足自己的需要。

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

相关文章

  1. C语言进阶复习(二)--指针进阶专题

    文章目录指针的概念字符指针指针数组数组指针函数指针函数指针数组回调函数 指针的概念 指针初探可以去看《初阶指针讲解》 回顾一下重要知识指针就是个变量,用来存放地址,地址唯一标识一块内存空间。 指针的大小是固定的4/8个字节(32位平台/64位平台)。 指针是有类型,指针…...

    2024/4/14 2:49:22
  2. Smarty教程1.引擎定义2.主要优点3.简明教程4.使用判断5.循环数组6.常见问题8.解释程序...

    Smarty是一个php模板引擎。更准确的说,它分开了逻辑程序和外在的内容,提供了一种易于管理的方法。可以描述为应用程序员和美工扮演了不同的角色,因为在大多数情况下 ,他们不可能是同一个人。例如,你正在创建一个用于浏览新闻的网页,新闻标题,标签栏,作者和内容等都是内容要素,他…...

    2024/4/24 14:57:01
  3. python关于return的用法

    在我们看来return就是返回值得意思,但是就我而言 我觉得自己太粗心大意了, return是返回一个方法的值,如果你没有定义一个方法却用return 去返回这就大错特错了 官方文档中提示: The key word "return" which should be used only in a functionin Python progr…...

    2024/4/12 14:00:58
  4. Golang教程第32节--panic 和 recover

    原文来自:https://golangbot.com/panic-and-recover/什么是 panic?在 Go 语言中,程序中一般是使用错误来处理异常情况。对于程序中出现的大部分异常情况,错误就已经够用了。但在有些情况,当程序发生异常时,无法继续运行。在这种情况下,我们会使用 panic 来终止程序。当函…...

    2024/4/20 16:56:14
  5. 计算机等级模拟题库二三级(免费免积分)

    作者亲测,失效请联系作者: 未来教育考试系统(全部等级): 链接: https://pan.baidu.com/s/1zr94QdEACTRB77TKZgmGaA 提取码: 93k2 无忧二级C: https://pan.baidu.com/s/1hVHTsNlLhQSmSuJv1HZsBw 三级网络: https://www.lanzous.com/i46vaub 三级数据库: https://www.lan…...

    2024/4/12 14:45:10
  6. 转载-smarty教程(基本语法)

    转自:http://hi.baidu.com/qxxgvpdtzhbckpr/item/681049160d7be60db98a1aec 1.smarty的配置 首先,使用smarty第一件事是先配置好,一般有以下9行代码   require_once("smarty/libs/Smarty_class.php"); //把smarty的类定义文件包含进来 $smarty=new sm…...

    2024/4/18 19:19:31
  7. IDEAgoland 入门教程指南

    刚刚入门goland,写一篇。 首先上官网下载 go 的msi 的安装包,他会帮你自动安装好GOROOT,GOPATH,PATH。很是省事儿呢。JB公司的IDEA越来越好使了感觉。^.^ 另外,你的项目目录需要是这个样子的。 bin 生成的执行文件pkg 编译的中间文件src 程序的代码文件 另外 如果说你需…...

    2024/4/12 7:21:21
  8. 什么是字节码文件?

    什么是字节码文件?字节码文件是经过编译器预处理过的一种文件,是JAVA的执行文件存在形式。 它本身是二进制文件,但是不可以被系统直接执行,而是需要虚拟机(JVM)解释执行。由于被预处理过,所以比一般的解释代码要快,但是仍然会比系统直接执行的慢。...

    2024/4/17 6:26:16
  9. JAVA中 return的用法

    从当前函数退出,并从那个函数返回一个值。 return[()[eXPression][]]; 可选项 expression 参数是要从函数返回的值。假如省略,则该函数不返回值。 说明 用 return 语句来终止一个函数的执行,并返回 expression 的值。假如 expression 被省略,或在函数内没有 return 语句…...

    2024/4/12 7:21:15
  10. onpropertychange与onchange事件应用

    1. onpropertychange事件在用键盘每改变一下文本框的值或用js改变其值便会触发2. onchange只有在用键盘改变其值,然后在失去 焦点(onblur)后才触发,用js改变其值不能触发!3. onpropertychange和onchange都不管文本框中的实际值有没有变,只要有改的相应操作就可能触发。有时当…...

    2024/4/12 7:20:57
  11. 最适合编程训练的三大OJ(从易到难)

    按照学习的需求来说依次介绍,方便初学者使用:1.Dotcpp网www.dotcpp.com 优点:全中文OJ,题目分类,有题解 这可能是初学者最好用的OJ甚至没有之一了 全中文的友好操作,充足的语法基础题、二级C语言题、入门题足够小白入门以及了解OJ的机制了。 另外还有题解分享,不会的…...

    2024/4/30 16:19:23
  12. 2018最新传智播客20小时快速入门GO语言全套

    课程部分截图下载地址:百度网盘...

    2024/4/12 7:21:15
  13. python中return的用法

    1、return语句就是把执行结果返回到调用的地方,并把程序的控制权一起返回程序运行到所遇到的第一个return即返回(退出def块),不会再运行第二个return。例如:def haha(x,y):if x==y:return x,yprint(haha(1,1))结果:这种return传参会返回元组(1, 2)2、但是也并不意味着一个函…...

    2024/4/19 11:43:02
  14. 全国青少年软件编程(C语言)等级考试试题-2019年9月(一级含答案)

    一、编程题(第1部分) (共4题,每题12分,共48分)1、输出第二个整数输入三个整数,把第二个输入的整数输出。时间限制:1000內存限制:65536输入只有一行,共三个整数,整数之间由一个空格分隔。整数是32位有符号整数。输出只有一行,一个整数,即输入的第二个整数。样例输入123 4…...

    2024/4/12 10:11:19
  15. Smarty教程[1]

    以下文件章为引用大师兄Smarty教程修正版,修改了一些网上复制大师兄教程的错误: 整个教程分四大部分: 一、模板设计部分 二、程序设计部分 三、实例篇(使用PHP内置MySQL函数) 四、实例篇(使用phplib的DB类)教程一:模板设计部分 一、什么是smarty?smarty是一个使用PHP写出来…...

    2024/4/27 6:50:15
  16. java为什么可以跨平台

    ①:C++ 编译生成的是纯二进制的机器指令,而JAVA编译生成的是非纯二进制的字节码。而这种基于Unicode的字节码是不依赖于特定的计算机硬件架构而存在的——这就意味着只要有JVM环境,你的字节码就可以在任何平台上运行。其次,JAVA字节码的二进制数据以固定的格式进行存储和传…...

    2024/4/19 8:27:59
  17. 老男孩GO语言线下培训班1期

    老男孩GO语言线下培训班1期教程目录: L001-Go语言-mp401 Go开发1期 day1 开课介绍0102 Go开发1期 day1 开课介绍0203 Go开发1期 day1 开发环境搭建0104 Go开发1期 day1 开发环境搭建0205 Go开发1期 day1 高并发-channel演示0106 Go开发1期 day1 高并发-channel演示0207 Go开发…...

    2024/5/2 3:08:01
  18. python计算机二级题目整理(1)

    1、二叉树中度为0的节点(叶子节点)总比度为2的节点多一个。2、软件工程包含三个要素:方法、工具和过程。3、程序流程图是详细设计阶段使用的表达工具。4、面向对象中的对象有两部分组成:数据(也称属性)、方法。5、关系数据库中的关系是要满足一定的要求的,满足不同程度要…...

    2024/4/20 13:34:35
  19. smarty教程系列2--section1

    第二课 smarty基本语法(1) 好了有了上一节课的安装,这节课我们看看smarty的基本语法 我们知道smarty是为了把php和美工制作的模板部分尽量做到分离,这样程序做程序时可以不必等到美工的页面出来之后在做前台这部分程序, smarty起到了一个中间桥梁的作用,这样需要我们的程序…...

    2024/4/19 13:20:48
  20. Golang教程:(十二)变参函数

    原文:https://golangbot.com/variadic-functions/这是本Golang系列教程的第十二篇。什么是变参函数?变参函数是指可以接受可变数量的参数的函数。语法如果一个函数的最后一个参数由 ...T 表示,则表示该函数可以接受任意数量的类型为 T 的参数。请注意只有函数的最后一个参数…...

    2024/4/12 7:21:21

最新文章

  1. iOS 实现视图遮罩效果

    有时候,我们会遇到这种需求,只讲视图的某个部分展示出来 这时候,我们可以通过设置该视图layer.mask layerb来实现,需要注意的是,这里的layerb必须要设置backgroundColor,渐变layer有colors,否则达不到效果…...

    2024/5/2 23:40:02
  2. 梯度消失和梯度爆炸的一些处理方法

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

    2024/3/20 10:50:27
  3. 数据结构--KMP算法

    数据结构–KMP算法 首先我在这里提出以下问题,一会一起进行探讨 1.什么是最长公共前后缀 2. KMP算法怎么实现对匹配原理 3. 最长公共前后缀怎么求解 KMP算法可以用来解决什么问题? 答:在字符串中匹配子串,也称为模式匹配 分析…...

    2024/5/1 13:00:11
  4. C++ //练习 11.14 扩展你在11.2.1节练习(第378页)中编写的孩子姓到名的map,添加一个pair的vector,保存孩子的名和生日。

    C Primer(第5版) 练习 11.14 练习 11.14 扩展你在11.2.1节练习(第378页)中编写的孩子姓到名的map,添加一个pair的vector,保存孩子的名和生日。 环境:Linux Ubuntu(云服务器&#x…...

    2024/5/1 13:00:20
  5. 【外汇早评】美通胀数据走低,美元调整

    原标题:【外汇早评】美通胀数据走低,美元调整昨日美国方面公布了新一期的核心PCE物价指数数据,同比增长1.6%,低于前值和预期值的1.7%,距离美联储的通胀目标2%继续走低,通胀压力较低,且此前美国一季度GDP初值中的消费部分下滑明显,因此市场对美联储后续更可能降息的政策…...

    2024/5/1 17:30:59
  6. 【原油贵金属周评】原油多头拥挤,价格调整

    原标题:【原油贵金属周评】原油多头拥挤,价格调整本周国际劳动节,我们喜迎四天假期,但是整个金融市场确实流动性充沛,大事频发,各个商品波动剧烈。美国方面,在本周四凌晨公布5月份的利率决议和新闻发布会,维持联邦基金利率在2.25%-2.50%不变,符合市场预期。同时美联储…...

    2024/5/2 16:16:39
  7. 【外汇周评】靓丽非农不及疲软通胀影响

    原标题:【外汇周评】靓丽非农不及疲软通胀影响在刚结束的周五,美国方面公布了新一期的非农就业数据,大幅好于前值和预期,新增就业重新回到20万以上。具体数据: 美国4月非农就业人口变动 26.3万人,预期 19万人,前值 19.6万人。 美国4月失业率 3.6%,预期 3.8%,前值 3…...

    2024/4/29 2:29:43
  8. 【原油贵金属早评】库存继续增加,油价收跌

    原标题:【原油贵金属早评】库存继续增加,油价收跌周三清晨公布美国当周API原油库存数据,上周原油库存增加281万桶至4.692亿桶,增幅超过预期的74.4万桶。且有消息人士称,沙特阿美据悉将于6月向亚洲炼油厂额外出售更多原油,印度炼油商预计将每日获得至多20万桶的额外原油供…...

    2024/5/2 9:28:15
  9. 【外汇早评】日本央行会议纪要不改日元强势

    原标题:【外汇早评】日本央行会议纪要不改日元强势近两日日元大幅走强与近期市场风险情绪上升,避险资金回流日元有关,也与前一段时间的美日贸易谈判给日本缓冲期,日本方面对汇率问题也避免继续贬值有关。虽然今日早间日本央行公布的利率会议纪要仍然是支持宽松政策,但这符…...

    2024/4/27 17:58:04
  10. 【原油贵金属早评】欧佩克稳定市场,填补伊朗问题的影响

    原标题:【原油贵金属早评】欧佩克稳定市场,填补伊朗问题的影响近日伊朗局势升温,导致市场担忧影响原油供给,油价试图反弹。此时OPEC表态稳定市场。据消息人士透露,沙特6月石油出口料将低于700万桶/日,沙特已经收到石油消费国提出的6月份扩大出口的“适度要求”,沙特将满…...

    2024/4/27 14:22:49
  11. 【外汇早评】美欲与伊朗重谈协议

    原标题:【外汇早评】美欲与伊朗重谈协议美国对伊朗的制裁遭到伊朗的抗议,昨日伊朗方面提出将部分退出伊核协议。而此行为又遭到欧洲方面对伊朗的谴责和警告,伊朗外长昨日回应称,欧洲国家履行它们的义务,伊核协议就能保证存续。据传闻伊朗的导弹已经对准了以色列和美国的航…...

    2024/4/28 1:28:33
  12. 【原油贵金属早评】波动率飙升,市场情绪动荡

    原标题:【原油贵金属早评】波动率飙升,市场情绪动荡因中美贸易谈判不安情绪影响,金融市场各资产品种出现明显的波动。随着美国与中方开启第十一轮谈判之际,美国按照既定计划向中国2000亿商品征收25%的关税,市场情绪有所平复,已经开始接受这一事实。虽然波动率-恐慌指数VI…...

    2024/4/30 9:43:09
  13. 【原油贵金属周评】伊朗局势升温,黄金多头跃跃欲试

    原标题:【原油贵金属周评】伊朗局势升温,黄金多头跃跃欲试美国和伊朗的局势继续升温,市场风险情绪上升,避险黄金有向上突破阻力的迹象。原油方面稍显平稳,近期美国和OPEC加大供给及市场需求回落的影响,伊朗局势并未推升油价走强。近期中美贸易谈判摩擦再度升级,美国对中…...

    2024/4/27 17:59:30
  14. 【原油贵金属早评】市场情绪继续恶化,黄金上破

    原标题:【原油贵金属早评】市场情绪继续恶化,黄金上破周初中国针对于美国加征关税的进行的反制措施引发市场情绪的大幅波动,人民币汇率出现大幅的贬值动能,金融市场受到非常明显的冲击。尤其是波动率起来之后,对于股市的表现尤其不安。隔夜美国股市出现明显的下行走势,这…...

    2024/5/2 15:04:34
  15. 【外汇早评】美伊僵持,风险情绪继续升温

    原标题:【外汇早评】美伊僵持,风险情绪继续升温昨日沙特两艘油轮再次发生爆炸事件,导致波斯湾局势进一步恶化,市场担忧美伊可能会出现摩擦生火,避险品种获得支撑,黄金和日元大幅走强。美指受中美贸易问题影响而在低位震荡。继5月12日,四艘商船在阿联酋领海附近的阿曼湾、…...

    2024/4/28 1:34:08
  16. 【原油贵金属早评】贸易冲突导致需求低迷,油价弱势

    原标题:【原油贵金属早评】贸易冲突导致需求低迷,油价弱势近日虽然伊朗局势升温,中东地区几起油船被袭击事件影响,但油价并未走高,而是出于调整结构中。由于市场预期局势失控的可能性较低,而中美贸易问题导致的全球经济衰退风险更大,需求会持续低迷,因此油价调整压力较…...

    2024/4/26 19:03:37
  17. 氧生福地 玩美北湖(上)——为时光守候两千年

    原标题:氧生福地 玩美北湖(上)——为时光守候两千年一次说走就走的旅行,只有一张高铁票的距离~ 所以,湖南郴州,我来了~ 从广州南站出发,一个半小时就到达郴州西站了。在动车上,同时改票的南风兄和我居然被分到了一个车厢,所以一路非常愉快地聊了过来。 挺好,最起…...

    2024/4/29 20:46:55
  18. 氧生福地 玩美北湖(中)——永春梯田里的美与鲜

    原标题:氧生福地 玩美北湖(中)——永春梯田里的美与鲜一觉醒来,因为大家太爱“美”照,在柳毅山庄去寻找龙女而错过了早餐时间。近十点,向导坏坏还是带着饥肠辘辘的我们去吃郴州最富有盛名的“鱼头粉”。说这是“十二分推荐”,到郴州必吃的美食之一。 哇塞!那个味美香甜…...

    2024/4/30 22:21:04
  19. 氧生福地 玩美北湖(下)——奔跑吧骚年!

    原标题:氧生福地 玩美北湖(下)——奔跑吧骚年!让我们红尘做伴 活得潇潇洒洒 策马奔腾共享人世繁华 对酒当歌唱出心中喜悦 轰轰烈烈把握青春年华 让我们红尘做伴 活得潇潇洒洒 策马奔腾共享人世繁华 对酒当歌唱出心中喜悦 轰轰烈烈把握青春年华 啊……啊……啊 两…...

    2024/5/1 4:32:01
  20. 扒开伪装医用面膜,翻六倍价格宰客,小姐姐注意了!

    原标题:扒开伪装医用面膜,翻六倍价格宰客,小姐姐注意了!扒开伪装医用面膜,翻六倍价格宰客!当行业里的某一品项火爆了,就会有很多商家蹭热度,装逼忽悠,最近火爆朋友圈的医用面膜,被沾上了污点,到底怎么回事呢? “比普通面膜安全、效果好!痘痘、痘印、敏感肌都能用…...

    2024/4/27 23:24:42
  21. 「发现」铁皮石斛仙草之神奇功效用于医用面膜

    原标题:「发现」铁皮石斛仙草之神奇功效用于医用面膜丽彦妆铁皮石斛医用面膜|石斛多糖无菌修护补水贴19大优势: 1、铁皮石斛:自唐宋以来,一直被列为皇室贡品,铁皮石斛生于海拔1600米的悬崖峭壁之上,繁殖力差,产量极低,所以古代仅供皇室、贵族享用 2、铁皮石斛自古民间…...

    2024/4/28 5:48:52
  22. 丽彦妆\医用面膜\冷敷贴轻奢医学护肤引导者

    原标题:丽彦妆\医用面膜\冷敷贴轻奢医学护肤引导者【公司简介】 广州华彬企业隶属香港华彬集团有限公司,专注美业21年,其旗下品牌: 「圣茵美」私密荷尔蒙抗衰,产后修复 「圣仪轩」私密荷尔蒙抗衰,产后修复 「花茵莳」私密荷尔蒙抗衰,产后修复 「丽彦妆」专注医学护…...

    2024/4/30 9:42:22
  23. 广州械字号面膜生产厂家OEM/ODM4项须知!

    原标题:广州械字号面膜生产厂家OEM/ODM4项须知!广州械字号面膜生产厂家OEM/ODM流程及注意事项解读: 械字号医用面膜,其实在我国并没有严格的定义,通常我们说的医美面膜指的应该是一种「医用敷料」,也就是说,医用面膜其实算作「医疗器械」的一种,又称「医用冷敷贴」。 …...

    2024/5/2 9:07:46
  24. 械字号医用眼膜缓解用眼过度到底有无作用?

    原标题:械字号医用眼膜缓解用眼过度到底有无作用?医用眼膜/械字号眼膜/医用冷敷眼贴 凝胶层为亲水高分子材料,含70%以上的水分。体表皮肤温度传导到本产品的凝胶层,热量被凝胶内水分子吸收,通过水分的蒸发带走大量的热量,可迅速地降低体表皮肤局部温度,减轻局部皮肤的灼…...

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

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

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

    %读入6幅图像(每一幅图像的大小是564*564) 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系统关机时如果有升级系统的或者其他需要会直接进入一个 等待界面,在等待界面中我们需要等待操作结束才能关机,虽然这比较麻烦,但是对系统进行配置和升级…...

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

    关机提示 windows7 正在配置windows 请勿关闭计算机 ,然后等了一晚上也没有关掉。现在电脑无法正常关机以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!关机提示 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系统)出问题了,具体表现是开机时一直停留在“配置windows update失败 还原更改 请勿关闭计算机”这个界面,长时间没反应,无法进入系统。这个问题原来帮其他同学也解决过,网上搜了不少资料&#x…...

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

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

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

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

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

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

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

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

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

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

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

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