<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
  <title>小码农的碎碎念</title>
  
  <subtitle>时间漫漫，岁月不再</subtitle>
  <link href="/atom.xml" rel="self"/>
  
  <link href="https://dryyun.com/"/>
  <updated>2024-09-21T11:19:45.650Z</updated>
  <id>https://dryyun.com/</id>
  
  <author>
    <name>dryyun</name>
    
  </author>
  
  <generator uri="http://hexo.io/">Hexo</generator>
  
  <entry>
    <title>HomeBrew 安装特定版本的 Formula</title>
    <link href="https://dryyun.com/2022/07/05/brew-install-old-version-formula/"/>
    <id>https://dryyun.com/2022/07/05/brew-install-old-version-formula/</id>
    <published>2022-07-05T15:23:41.000Z</published>
    <updated>2024-09-21T11:19:45.650Z</updated>
    
    <summary type="html">
    
      &lt;p&gt;在 Mac 上 brew 作为常用的包管理软件，一直被我使用。&lt;/p&gt;
&lt;p&gt;一般来说，使用 brew 都会安装最新版本的软件，有时候需要安装特定版本的软件的时候，我都会考虑使用 Docker 实现。&lt;/p&gt;
&lt;p&gt;不过也有偷懒的时候，brew 也确实是方便，所以考虑一下怎么使用 brew 安装特定版本、本机安装多版本的 Formula&lt;/p&gt;
&lt;h2 id=&quot;brew-安装-Formula-简单原理介绍&quot;&gt;&lt;a href=&quot;#brew-安装-Formula-简单原理介绍&quot; class=&quot;headerlink&quot; title=&quot;brew 安装 Formula 简单原理介绍&quot;&gt;&lt;/a&gt;brew 安装 Formula 简单原理介绍&lt;/h2&gt;&lt;figure class=&quot;highlight shell&quot;&gt;&lt;table&gt;&lt;tr&gt;&lt;td class=&quot;gutter&quot;&gt;&lt;pre&gt;&lt;span class=&quot;line&quot;&gt;1&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;2&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;3&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;4&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;5&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;6&lt;/span&gt;&lt;br&gt;&lt;/pre&gt;&lt;/td&gt;&lt;td class=&quot;code&quot;&gt;&lt;pre&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;meta&quot;&gt;$&lt;/span&gt;&lt;span class=&quot;bash&quot;&gt; brew tap-info homebrew/core &lt;/span&gt;&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;output :&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;homebrew/core: 3 commands, 6162 formulae&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;/usr/local/Homebrew/Library/Taps/homebrew/homebrew-core (6,606 files, 643.2MB)&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;From: https://github.com/Homebrew/homebrew-core&lt;/span&gt;&lt;br&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/figure&gt;
&lt;p&gt;可以看到，整个就是一个 github repo&lt;/p&gt;
&lt;p&gt;具体的每个 formula 在目录 &lt;code&gt;https://github.com/Homebrew/homebrew-core/tree/master/Formula&lt;/code&gt; &lt;/p&gt;
&lt;p&gt;如果软件作者希望 formula 被添加或者被更新，都给这个 repo 提 PR 即可&lt;/p&gt;
&lt;figure class=&quot;highlight plain&quot;&gt;&lt;table&gt;&lt;tr&gt;&lt;td class=&quot;gutter&quot;&gt;&lt;pre&gt;&lt;span class=&quot;line&quot;&gt;1&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;2&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;3&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;4&lt;/span&gt;&lt;br&gt;&lt;/pre&gt;&lt;/td&gt;&lt;td class=&quot;code&quot;&gt;&lt;pre&gt;&lt;span class=&quot;line&quot;&gt;$ brew install grafana &lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;会读文件&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;https://github.com/Homebrew/homebrew-core/blob/master/Formula/grafana.rb&lt;/span&gt;&lt;br&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/figure&gt;
&lt;p&gt;安装 grafana 会依赖本地的 grafana.rb 文件，根据文件内容下载 url 的压缩包，然后校验 sha256 &lt;/p&gt;
    
    </summary>
    
      <category term="技术" scheme="https://dryyun.com/categories/%E6%8A%80%E6%9C%AF/"/>
    
      <category term="homebrew" scheme="https://dryyun.com/categories/%E6%8A%80%E6%9C%AF/homebrew/"/>
    
    
  </entry>
  
  <entry>
    <title>Year 2022 展望</title>
    <link href="https://dryyun.com/2022/01/12/New-Year-2022/"/>
    <id>https://dryyun.com/2022/01/12/New-Year-2022/</id>
    <published>2022-01-12T14:50:46.000Z</published>
    <updated>2024-09-21T11:19:45.650Z</updated>
    
    <summary type="html">
    
      &lt;p&gt;已然是 2022 年了，还会不经意的感觉还停留在 2021 年，时间如此飞逝，年复一年。&lt;/p&gt;
&lt;p&gt;小时候我们会说，长大了，现在我们只能是变老了。&lt;/p&gt;
&lt;p&gt;事实是正值壮年。&lt;/p&gt;
&lt;p&gt;需要正视各种变迁、各种文化，正视时代贩卖的焦虑，正视对码农特有的关注，且还年轻着。&lt;/p&gt;
&lt;h2 id=&quot;回顾-2021&quot;&gt;&lt;a href=&quot;#回顾-2021&quot; class=&quot;headerlink&quot; title=&quot;回顾 2021&quot;&gt;&lt;/a&gt;回顾 2021&lt;/h2&gt;
    
    </summary>
    
      <category term="杂谈" scheme="https://dryyun.com/categories/%E6%9D%82%E8%B0%88/"/>
    
    
      <category term="杂谈" scheme="https://dryyun.com/tags/%E6%9D%82%E8%B0%88/"/>
    
      <category term="生活" scheme="https://dryyun.com/tags/%E7%94%9F%E6%B4%BB/"/>
    
  </entry>
  
  <entry>
    <title>最近折腾的软件</title>
    <link href="https://dryyun.com/2021/05/13/2021-new-try/"/>
    <id>https://dryyun.com/2021/05/13/2021-new-try/</id>
    <published>2021-05-13T13:48:31.000Z</published>
    <updated>2024-09-21T11:19:45.650Z</updated>
    
    <summary type="html">
    
      
      
        
        
          &lt;h1 id=&quot;折腾不止&quot;&gt;&lt;a href=&quot;#折腾不止&quot;
        
      
    
    </summary>
    
      <category term="杂谈" scheme="https://dryyun.com/categories/%E6%9D%82%E8%B0%88/"/>
    
    
  </entry>
  
  <entry>
    <title>Go Modules 历史变迁</title>
    <link href="https://dryyun.com/2021/02/25/Go-Modules/"/>
    <id>https://dryyun.com/2021/02/25/Go-Modules/</id>
    <published>2021-02-25T04:13:11.000Z</published>
    <updated>2024-09-21T11:19:45.650Z</updated>
    
    <summary type="html">
    
      &lt;blockquote&gt;
&lt;p&gt;Go 分类文章，学习笔记，会不定时修改，补充，纠错，增加内容，路漫漫。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h1 id=&quot;两种包管理运行模式&quot;&gt;&lt;a href=&quot;#两种包管理运行模式&quot; class=&quot;headerlink&quot; title=&quot;两种包管理运行模式&quot;&gt;&lt;/a&gt;两种包管理运行模式&lt;/h1&gt;&lt;ul&gt;
&lt;li&gt;GOPATH mode，从 &lt;code&gt;vendor&lt;/code&gt; 和 &lt;code&gt;GOPATH&lt;/code&gt; 下寻找依赖,依赖会被下载至 &lt;code&gt;GOPATH/src&lt;/code&gt; 目录下&lt;/li&gt;
&lt;li&gt;module-aware mode&lt;/li&gt;
&lt;/ul&gt;
&lt;h1 id=&quot;Go-1-11-–-2018-8&quot;&gt;&lt;a href=&quot;#Go-1-11-–-2018-8&quot; class=&quot;headerlink&quot; title=&quot;Go 1.11 – 2018.8&quot;&gt;&lt;/a&gt;Go 1.11 – 2018.8&lt;/h1&gt;&lt;p&gt;正式推出 go modules ，可以查看 &lt;code&gt;go help modules&lt;/code&gt; 获取相关信息&lt;/p&gt;
&lt;h2 id=&quot;GO111MODULE&quot;&gt;&lt;a href=&quot;#GO111MODULE&quot; class=&quot;headerlink&quot; title=&quot;GO111MODULE&quot;&gt;&lt;/a&gt;GO111MODULE&lt;/h2&gt;&lt;p&gt;新增的环境变量，用于控制 Go 代码包管理运行模式&lt;/p&gt;
&lt;figure class=&quot;highlight plain&quot;&gt;&lt;table&gt;&lt;tr&gt;&lt;td class=&quot;gutter&quot;&gt;&lt;pre&gt;&lt;span class=&quot;line&quot;&gt;1&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;2&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;3&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;4&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;5&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;6&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;7&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;8&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;9&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;10&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;11&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;12&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;13&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;14&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;15&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;16&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;17&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;18&lt;/span&gt;&lt;br&gt;&lt;/pre&gt;&lt;/td&gt;&lt;td class=&quot;code&quot;&gt;&lt;pre&gt;&lt;span class=&quot;line&quot;&gt;For more fine-grained control, the module support in Go 1.11 respects&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;a temporary environment variable, GO111MODULE, which can be set to one&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;of three string values: off, on, or auto (the default).&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;If GO111MODULE=off, then the go command never uses the&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;new module support. Instead it looks in vendor directories and GOPATH&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;to find dependencies; we now refer to this as &amp;quot;GOPATH mode.&amp;quot;&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;If GO111MODULE=on, then the go command requires the use of modules,&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;never consulting GOPATH. We refer to this as the command being&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;module-aware or running in &amp;quot;module-aware mode&amp;quot;.&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;If GO111MODULE=auto or is unset, then the go command enables or&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;disables module support based on the current directory.&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;Module support is enabled only when the current directory is outside&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;GOPATH/src and itself contains a go.mod file or is below a directory&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;containing a go.mod file.&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;In module-aware mode, GOPATH no longer defines the meaning of imports&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;during a build, but it still stores downloaded dependencies (in GOPATH/pkg/mod)&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;and installed commands (in GOPATH/bin, unless GOBIN is set).&lt;/span&gt;&lt;br&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/figure&gt;
&lt;ul&gt;
&lt;li&gt;GO111MODULE = auto，默认值（设置为 auto 或者不设置）&lt;ul&gt;
&lt;li&gt;在 GOPATH/src 目录外，且文件夹包含 go.mod 文件，就运行 module-aware mode，其余情况都是 GOPATH mode&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;GO111MODULE = on，开启&lt;ul&gt;
&lt;li&gt;不管目录所在路径，都是 module-aware mode&lt;/li&gt;
&lt;li&gt;运行 go build 等命令，会优先判断 go.mod 是否存在，不存在的话，先创建 go.mod 文件&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;GO111MODULE = off，关闭&lt;ul&gt;
&lt;li&gt;任何情况下，都关闭&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;包下载路径&quot;&gt;&lt;a href=&quot;#包下载路径&quot; class=&quot;headerlink&quot; title=&quot;包下载路径&quot;&gt;&lt;/a&gt;包下载路径&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;module-aware mode 在 &lt;code&gt;GOPATH/pkg/mod&lt;/code&gt; 目录下&lt;/li&gt;
&lt;li&gt;GOPATH mode 在 &lt;code&gt;GOPATH/src&lt;/code&gt; 目录下&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;Go-Get&quot;&gt;&lt;a href=&quot;#Go-Get&quot; class=&quot;headerlink&quot; title=&quot;Go Get&quot;&gt;&lt;/a&gt;Go Get&lt;/h2&gt;&lt;p&gt;运行在不同 mode 下，行为不同&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;module-aware mode 会修改 go.mod 文件&lt;/li&gt;
&lt;li&gt;GOPATH mode ，按照之前的行为运行&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;Go-Get-存在的问题&quot;&gt;&lt;a href=&quot;#Go-Get-存在的问题&quot; class=&quot;headerlink&quot; title=&quot;Go Get 存在的问题&quot;&gt;&lt;/a&gt;Go Get 存在的问题&lt;/h3&gt;&lt;p&gt;如果 GO111MODULE = on ，且当前目录没有 go.mod 文件，会报错 &lt;code&gt;go: cannot find main module; see &amp;#39;go help modules&amp;#39;&lt;/code&gt;&lt;/p&gt;
&lt;h2 id=&quot;vendor-目录支持&quot;&gt;&lt;a href=&quot;#vendor-目录支持&quot; class=&quot;headerlink&quot; title=&quot;vendor 目录支持&quot;&gt;&lt;/a&gt;vendor 目录支持&lt;/h2&gt;&lt;p&gt;运行 &lt;code&gt;go mod vendor&lt;/code&gt; ，会在当前目录生成 vendor 目录，从 GOPATH/pkg/mod 复制 packge 过来&lt;/p&gt;
&lt;p&gt;运行命令类似，&lt;code&gt;go build -mod=vendor&lt;/code&gt;  加上 &lt;code&gt;-mod=vendor&lt;/code&gt;，会使用 vendor 目录下依赖，否则还是使用 GOPATH/pkg/mod 下依赖&lt;/p&gt;
&lt;h2 id=&quot;GOPROXY&quot;&gt;&lt;a href=&quot;#GOPROXY&quot; class=&quot;headerlink&quot; title=&quot;GOPROXY&quot;&gt;&lt;/a&gt;GOPROXY&lt;/h2&gt;&lt;p&gt;新增 GOPROXY 环境变量，用于设置 go module 下载代理地址&lt;/p&gt;
    
    </summary>
    
      <category term="Go" scheme="https://dryyun.com/categories/Go/"/>
    
    
      <category term="Go" scheme="https://dryyun.com/tags/Go/"/>
    
  </entry>
  
  <entry>
    <title>My New Article In 2020</title>
    <link href="https://dryyun.com/2020/11/20/my-new-article-in-2020/"/>
    <id>https://dryyun.com/2020/11/20/my-new-article-in-2020/</id>
    <published>2020-11-20T15:46:04.000Z</published>
    <updated>2024-09-21T11:19:45.654Z</updated>
    
    <summary type="html">
    
      
      
        
        
          &lt;p&gt;许久未更新了。&lt;br&gt;生疏到 markdown
        
      
    
    </summary>
    
      <category term="杂谈" scheme="https://dryyun.com/categories/%E6%9D%82%E8%B0%88/"/>
    
    
      <category term="杂谈" scheme="https://dryyun.com/tags/%E6%9D%82%E8%B0%88/"/>
    
  </entry>
  
  <entry>
    <title>Go 阅读 negroni 源码</title>
    <link href="https://dryyun.com/2019/06/10/go-negroni/"/>
    <id>https://dryyun.com/2019/06/10/go-negroni/</id>
    <published>2019-06-10T15:49:20.000Z</published>
    <updated>2024-09-21T11:19:45.650Z</updated>
    
    <summary type="html">
    
      &lt;blockquote&gt;
&lt;p&gt;Go 分类文章，学习笔记，会不定时修改，补充，纠错，增加内容，路漫漫。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;negroni 提供 golang 常用的中间件使用方式，项目地址 &lt;a href=&quot;https://github.com/urfave/negroni/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://github.com/urfave/negroni/&lt;/a&gt;  &lt;/p&gt;
&lt;p&gt;阅读版本是 2019.6.2 的 &lt;a href=&quot;https://github.com/urfave/negroni/tree/7d1c5e0c31f98a3073127a273a4eb2f9690a715f&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;7d1c5e commit&lt;/a&gt;  &lt;/p&gt;
&lt;p&gt;GoDoc - &lt;a href=&quot;https://godoc.org/github.com/urfave/negroni&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://godoc.org/github.com/urfave/negroni&lt;/a&gt;&lt;/p&gt;
&lt;h2 id=&quot;前提知识&quot;&gt;&lt;a href=&quot;#前提知识&quot; class=&quot;headerlink&quot; title=&quot;前提知识&quot;&gt;&lt;/a&gt;前提知识&lt;/h2&gt;&lt;p&gt;了解 net/http server 的相关知识，也可以读我写的上一篇 【http-server】  &lt;/p&gt;
&lt;h2 id=&quot;基本使用&quot;&gt;&lt;a href=&quot;#基本使用&quot; class=&quot;headerlink&quot; title=&quot;基本使用&quot;&gt;&lt;/a&gt;基本使用&lt;/h2&gt;&lt;figure class=&quot;highlight go&quot;&gt;&lt;table&gt;&lt;tr&gt;&lt;td class=&quot;gutter&quot;&gt;&lt;pre&gt;&lt;span class=&quot;line&quot;&gt;1&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;2&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;3&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;4&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;5&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;6&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;7&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;8&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;9&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;10&lt;/span&gt;&lt;br&gt;&lt;/pre&gt;&lt;/td&gt;&lt;td class=&quot;code&quot;&gt;&lt;pre&gt;&lt;span class=&quot;line&quot;&gt;mux := http.NewServeMux()&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;mux.HandleFunc(&lt;span class=&quot;string&quot;&gt;&quot;/&quot;&lt;/span&gt;, &lt;span class=&quot;function&quot;&gt;&lt;span class=&quot;keyword&quot;&gt;func&lt;/span&gt;&lt;span class=&quot;params&quot;&gt;(w http.ResponseWriter, req *http.Request)&lt;/span&gt;&lt;/span&gt; &amp;#123;&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;	fmt.Fprintf(w, &lt;span class=&quot;string&quot;&gt;&quot;Welcome to the home page! &quot;&lt;/span&gt;+req.URL.Path)&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;&amp;#125;)&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;n := negroni.New()&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;n.Use(negroni.NewLogger())&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;n.UseHandler(mux)&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;n.Run(&lt;span class=&quot;string&quot;&gt;&quot;:3000&quot;&lt;/span&gt;)&lt;/span&gt;&lt;br&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/figure&gt;
&lt;p&gt;其中关于 &lt;code&gt;mux&lt;/code&gt; 变量的部分，可以参考上一遍 &lt;code&gt;http-server&lt;/code&gt;，这里就不说明了，主要关注 &lt;code&gt;n := negroni.New()&lt;/code&gt;&lt;/p&gt;
    
    </summary>
    
      <category term="Go" scheme="https://dryyun.com/categories/Go/"/>
    
    
      <category term="Go" scheme="https://dryyun.com/tags/Go/"/>
    
  </entry>
  
  <entry>
    <title>Go HTTP Server 使用分析</title>
    <link href="https://dryyun.com/2019/06/06/go-http-server/"/>
    <id>https://dryyun.com/2019/06/06/go-http-server/</id>
    <published>2019-06-06T15:28:00.000Z</published>
    <updated>2024-09-21T11:19:45.650Z</updated>
    
    <summary type="html">
    
      &lt;blockquote&gt;
&lt;p&gt;Go 分类文章，学习笔记，会不定时修改，补充，纠错，增加内容，路漫漫。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;使用 net/http 包处理 http request &lt;/p&gt;
&lt;p&gt;GoDoc - &lt;a href=&quot;https://godoc.org/net/http&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://godoc.org/net/http&lt;/a&gt; &lt;/p&gt;
&lt;p&gt;net/http 主要包括两部分&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;client&lt;/li&gt;
&lt;li&gt;server &lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;这里就是关于 server 部分&lt;/p&gt;
&lt;p&gt;Tip: &lt;code&gt;go version go1.12.4 darwin/amd64&lt;/code&gt; &lt;/p&gt;
&lt;h2 id=&quot;Handler-interface&quot;&gt;&lt;a href=&quot;#Handler-interface&quot; class=&quot;headerlink&quot; title=&quot;Handler interface&quot;&gt;&lt;/a&gt;Handler interface&lt;/h2&gt;&lt;p&gt;查看 http.ListenAndServe 定义&lt;/p&gt;
&lt;figure class=&quot;highlight go&quot;&gt;&lt;table&gt;&lt;tr&gt;&lt;td class=&quot;gutter&quot;&gt;&lt;pre&gt;&lt;span class=&quot;line&quot;&gt;1&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;2&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;3&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;4&lt;/span&gt;&lt;br&gt;&lt;/pre&gt;&lt;/td&gt;&lt;td class=&quot;code&quot;&gt;&lt;pre&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;function&quot;&gt;&lt;span class=&quot;keyword&quot;&gt;func&lt;/span&gt; &lt;span class=&quot;title&quot;&gt;ListenAndServe&lt;/span&gt;&lt;span class=&quot;params&quot;&gt;(addr &lt;span class=&quot;keyword&quot;&gt;string&lt;/span&gt;, handler Handler)&lt;/span&gt; &lt;span class=&quot;title&quot;&gt;error&lt;/span&gt;&lt;/span&gt; &amp;#123;&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;	server := &amp;amp;Server&amp;#123;Addr: addr, Handler: handler&amp;#125;&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;	&lt;span class=&quot;keyword&quot;&gt;return&lt;/span&gt; server.ListenAndServe()&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;&amp;#125;&lt;/span&gt;&lt;br&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/figure&gt;
&lt;p&gt;会发现第二个参数是 Handler 类型&lt;br&gt;&lt;figure class=&quot;highlight go&quot;&gt;&lt;table&gt;&lt;tr&gt;&lt;td class=&quot;gutter&quot;&gt;&lt;pre&gt;&lt;span class=&quot;line&quot;&gt;1&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;2&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;3&lt;/span&gt;&lt;br&gt;&lt;/pre&gt;&lt;/td&gt;&lt;td class=&quot;code&quot;&gt;&lt;pre&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;keyword&quot;&gt;type&lt;/span&gt; Handler &lt;span class=&quot;keyword&quot;&gt;interface&lt;/span&gt; &amp;#123;&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;	ServeHTTP(ResponseWriter, *Request)&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;&amp;#125;&lt;/span&gt;&lt;br&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/figure&gt;&lt;/p&gt;
&lt;p&gt;Handler 是一个接口定义，只要实现了 ServeHTTP(ResponseWriter, *Request) 方法的类型，都可以&lt;/p&gt;
    
    </summary>
    
      <category term="Go" scheme="https://dryyun.com/categories/Go/"/>
    
    
      <category term="Go" scheme="https://dryyun.com/tags/Go/"/>
    
  </entry>
  
  <entry>
    <title>Go - var &amp;  make &amp; new 在复杂类型上的使用区别</title>
    <link href="https://dryyun.com/2019/05/30/go-new-make-use/"/>
    <id>https://dryyun.com/2019/05/30/go-new-make-use/</id>
    <published>2019-05-30T04:22:09.000Z</published>
    <updated>2024-09-21T11:19:45.650Z</updated>
    
    <summary type="html">
    
      &lt;blockquote&gt;
&lt;p&gt;Go 分类文章，学习笔记，会不定时修改，补充，纠错，增加内容，路漫漫。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;这里主要讲解 var &amp;amp;  make &amp;amp; new  在声明变量关于 array、slice、map、struct 这些类型上的区别。&lt;/p&gt;
&lt;h1 id=&quot;预备知识&quot;&gt;&lt;a href=&quot;#预备知识&quot; class=&quot;headerlink&quot; title=&quot;预备知识&quot;&gt;&lt;/a&gt;预备知识&lt;/h1&gt;&lt;h2 id=&quot;var-声明变量&quot;&gt;&lt;a href=&quot;#var-声明变量&quot; class=&quot;headerlink&quot; title=&quot;var 声明变量&quot;&gt;&lt;/a&gt;var 声明变量&lt;/h2&gt;&lt;p&gt;&lt;code&gt;var 变量名字 类型 = 表达式&lt;/code&gt; ，如果省略了&lt;code&gt;表达式&lt;/code&gt;，就使用类型的零值初始化变量 &lt;/p&gt;
&lt;h2 id=&quot;make-和-new-的知识&quot;&gt;&lt;a href=&quot;#make-和-new-的知识&quot; class=&quot;headerlink&quot; title=&quot;make 和 new 的知识&quot;&gt;&lt;/a&gt;make 和 new 的知识&lt;/h2&gt;&lt;p&gt;可以查看 GoDoc - builtin 的相关内容&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://godoc.org/builtin#new&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;new&lt;/a&gt;&lt;ul&gt;
&lt;li&gt;&lt;code&gt;func new(Type) *Type&lt;/code&gt;     &lt;/li&gt;
&lt;li&gt;创建一个 Type 类型的匿名变量，初始为 Type 类型的零值，返回变量地址，返回的指针类型为&lt;code&gt;*Type&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://godoc.org/builtin#make&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;make&lt;/a&gt;&lt;ul&gt;
&lt;li&gt;&lt;code&gt;func make(t Type, size ...IntegerType) Type&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;分配并初始化一个类型为 slice 、map 、或 channel 的对象，返回类型与 Type 相同，而非指向它的指针&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;零值&quot;&gt;&lt;a href=&quot;#零值&quot; class=&quot;headerlink&quot; title=&quot;零值&quot;&gt;&lt;/a&gt;零值&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;array、struct，每个元素或字段都是对应该类型的零值&lt;/li&gt;
&lt;li&gt;slice、map，对于零值 nil &lt;/li&gt;
&lt;/ul&gt;
    
    </summary>
    
      <category term="Go" scheme="https://dryyun.com/categories/Go/"/>
    
    
      <category term="Go" scheme="https://dryyun.com/tags/Go/"/>
    
  </entry>
  
  <entry>
    <title>排序算法</title>
    <link href="https://dryyun.com/2019/03/25/algorithms-sort/"/>
    <id>https://dryyun.com/2019/03/25/algorithms-sort/</id>
    <published>2019-03-25T04:51:08.000Z</published>
    <updated>2024-09-21T11:19:45.650Z</updated>
    
    <summary type="html">
    
      &lt;blockquote&gt;
&lt;p&gt;Algorithms 分类文章，为了在下次又忘记又想想起来的时候，稍微快速的回想一下。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;排序方法很多，仔细想想还是快排最实用&lt;br&gt;冒泡排序、选择排序、桶排序、快速排序、归并排序、堆排序  &lt;/p&gt;
    
    </summary>
    
      <category term="Algorithms" scheme="https://dryyun.com/categories/Algorithms/"/>
    
    
      <category term="Algorithms" scheme="https://dryyun.com/tags/Algorithms/"/>
    
      <category term="算法" scheme="https://dryyun.com/tags/%E7%AE%97%E6%B3%95/"/>
    
      <category term="快速排序" scheme="https://dryyun.com/tags/%E5%BF%AB%E9%80%9F%E6%8E%92%E5%BA%8F/"/>
    
      <category term="归并排序" scheme="https://dryyun.com/tags/%E5%BD%92%E5%B9%B6%E6%8E%92%E5%BA%8F/"/>
    
  </entry>
  
  <entry>
    <title>最近折腾两三事</title>
    <link href="https://dryyun.com/2019/01/16/recently-do-somethings/"/>
    <id>https://dryyun.com/2019/01/16/recently-do-somethings/</id>
    <published>2019-01-16T05:45:46.000Z</published>
    <updated>2024-09-21T11:19:45.654Z</updated>
    
    <summary type="html">
    
      &lt;h2 id=&quot;折腾不止&quot;&gt;&lt;a href=&quot;#折腾不止&quot; class=&quot;headerlink&quot; title=&quot;折腾不止&quot;&gt;&lt;/a&gt;折腾不止&lt;/h2&gt;&lt;p&gt;需求就是来源于生活，好赖是个菜鸟码农，还有些个谷歌复制粘贴的能力。&lt;/p&gt;
    
    </summary>
    
      <category term="技术" scheme="https://dryyun.com/categories/%E6%8A%80%E6%9C%AF/"/>
    
      <category term="杂谈" scheme="https://dryyun.com/categories/%E6%8A%80%E6%9C%AF/%E6%9D%82%E8%B0%88/"/>
    
    
      <category term="Shadowsocks" scheme="https://dryyun.com/tags/Shadowsocks/"/>
    
      <category term="极路由" scheme="https://dryyun.com/tags/%E6%9E%81%E8%B7%AF%E7%94%B1/"/>
    
      <category term="群晖" scheme="https://dryyun.com/tags/%E7%BE%A4%E6%99%96/"/>
    
  </entry>
  
  <entry>
    <title>群晖 Nas 使用 SSH Key 实现免密登录</title>
    <link href="https://dryyun.com/2019/01/08/synology-nas-login-with-ssh-key/"/>
    <id>https://dryyun.com/2019/01/08/synology-nas-login-with-ssh-key/</id>
    <published>2019-01-08T03:05:56.000Z</published>
    <updated>2024-09-21T11:19:45.654Z</updated>
    
    <summary type="html">
    
      &lt;blockquote&gt;
&lt;p&gt;最近直观的加上了文章访问统计和整站访问统计，虽然知道肯定没人访问，也就是纯粹加点新功能，但是没想到，关于 Nas 的文章访问量遥遥领先。 &lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;承接之前关于 Nas 的文章&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;/2018/07/19/synology-nas-use-https/&quot;&gt;群晖 Nas 折腾 https - 更安全的外网访问&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/2018/07/19/synology-nas-with-vpn/&quot;&gt;群晖 Nas 用上 VPN 更加安全&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;开启了 VPN 可以更安全的访问 Nas ，同时我也需要使用 SSH 功能，但是每次使用的时候，都要输入密码，很是麻烦，如果能改成 ssh 免密登录就好了。&lt;br&gt;本质上跟其他的 linux 服务器设置免密登录原理差不多，稍微有点差别吧。  &lt;/p&gt;
    
    </summary>
    
      <category term="技术" scheme="https://dryyun.com/categories/%E6%8A%80%E6%9C%AF/"/>
    
    
      <category term="群晖" scheme="https://dryyun.com/tags/%E7%BE%A4%E6%99%96/"/>
    
      <category term="Nas" scheme="https://dryyun.com/tags/Nas/"/>
    
      <category term="synology" scheme="https://dryyun.com/tags/synology/"/>
    
      <category term="ssh" scheme="https://dryyun.com/tags/ssh/"/>
    
  </entry>
  
  <entry>
    <title>Go Method Receiver 方法接收器介绍</title>
    <link href="https://dryyun.com/2018/12/14/go-method-receiver/"/>
    <id>https://dryyun.com/2018/12/14/go-method-receiver/</id>
    <published>2018-12-14T08:28:11.000Z</published>
    <updated>2024-09-21T11:19:45.650Z</updated>
    
    <summary type="html">
    
      &lt;blockquote&gt;
&lt;p&gt;Go 分类文章，学习笔记，会不定时修改，补充，纠错，增加内容，路漫漫。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id=&quot;Receiver-基本介绍&quot;&gt;&lt;a href=&quot;#Receiver-基本介绍&quot; class=&quot;headerlink&quot; title=&quot;Receiver 基本介绍&quot;&gt;&lt;/a&gt;Receiver 基本介绍&lt;/h2&gt;&lt;p&gt;就是类似于 Class 的 Method，使用 this 或者 self 调用 ？可以这么类比吧，但是并不等同。&lt;/p&gt;
&lt;p&gt;看具体的代码&lt;br&gt;&lt;figure class=&quot;highlight go&quot;&gt;&lt;table&gt;&lt;tr&gt;&lt;td class=&quot;gutter&quot;&gt;&lt;pre&gt;&lt;span class=&quot;line&quot;&gt;1&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;2&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;3&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;4&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;5&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;6&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;7&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;8&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;9&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;10&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;11&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;12&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;13&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;14&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;15&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;16&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;17&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;18&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;19&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;20&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;21&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;22&lt;/span&gt;&lt;br&gt;&lt;/pre&gt;&lt;/td&gt;&lt;td class=&quot;code&quot;&gt;&lt;pre&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;keyword&quot;&gt;type&lt;/span&gt; IntReceiver &lt;span class=&quot;keyword&quot;&gt;struct&lt;/span&gt; &amp;#123;&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;	X &lt;span class=&quot;keyword&quot;&gt;int&lt;/span&gt;&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;&amp;#125;&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;comment&quot;&gt;// 方法接收器声明&lt;/span&gt;&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;function&quot;&gt;&lt;span class=&quot;keyword&quot;&gt;func&lt;/span&gt; &lt;span class=&quot;params&quot;&gt;(i IntReceiver)&lt;/span&gt; &lt;span class=&quot;title&quot;&gt;Double&lt;/span&gt;&lt;span class=&quot;params&quot;&gt;()&lt;/span&gt; &lt;span class=&quot;title&quot;&gt;int&lt;/span&gt;&lt;/span&gt; &amp;#123;&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;	&lt;span class=&quot;keyword&quot;&gt;return&lt;/span&gt; i.X * &lt;span class=&quot;number&quot;&gt;2&lt;/span&gt;&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;&amp;#125;&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;comment&quot;&gt;// 普通函数声明&lt;/span&gt;&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;function&quot;&gt;&lt;span class=&quot;keyword&quot;&gt;func&lt;/span&gt; &lt;span class=&quot;title&quot;&gt;IRDouble&lt;/span&gt;&lt;span class=&quot;params&quot;&gt;(i IntReceiver)&lt;/span&gt; &lt;span class=&quot;title&quot;&gt;int&lt;/span&gt;&lt;/span&gt; &amp;#123;&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;	&lt;span class=&quot;keyword&quot;&gt;return&lt;/span&gt; i.X * &lt;span class=&quot;number&quot;&gt;2&lt;/span&gt;&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;&amp;#125;&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;function&quot;&gt;&lt;span class=&quot;keyword&quot;&gt;func&lt;/span&gt; &lt;span class=&quot;title&quot;&gt;main&lt;/span&gt;&lt;span class=&quot;params&quot;&gt;()&lt;/span&gt;&lt;/span&gt; &amp;#123;&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;	i := IntReceiver&amp;#123;&lt;span class=&quot;number&quot;&gt;3&lt;/span&gt;&amp;#125;&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;	d1 := i.Double() &lt;span class=&quot;comment&quot;&gt;// 在 i 上调用了 IntReceiver 类型带的 Method // func (i IntReceiver) Double() int&lt;/span&gt;&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;	fmt.Printf(&lt;span class=&quot;string&quot;&gt;&quot;type = %T，value = %v\n&quot;&lt;/span&gt;, d1, d1)&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;	d2 := IRDouble(i) &lt;span class=&quot;comment&quot;&gt;// 调用了普通函数 // func IRDouble(i IntReceiver) int &lt;/span&gt;&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;	fmt.Printf(&lt;span class=&quot;string&quot;&gt;&quot;type = %T，value = %v\n&quot;&lt;/span&gt;, d2, d2)&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;&amp;#125;&lt;/span&gt;&lt;br&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/figure&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;定义 method 并不局限于结构体 struct，可以任何 type 声明的类型定义 Method，最简单如 &lt;code&gt;type DInt int&lt;/code&gt; ，就能为 DInt 类型定义 method  &lt;/p&gt;
&lt;/blockquote&gt;
    
    </summary>
    
      <category term="Go" scheme="https://dryyun.com/categories/Go/"/>
    
    
      <category term="Go" scheme="https://dryyun.com/tags/Go/"/>
    
  </entry>
  
  <entry>
    <title>Go 运行的初始化</title>
    <link href="https://dryyun.com/2018/12/06/go-init/"/>
    <id>https://dryyun.com/2018/12/06/go-init/</id>
    <published>2018-12-06T10:18:19.000Z</published>
    <updated>2024-09-21T11:19:45.650Z</updated>
    
    <summary type="html">
    
      &lt;blockquote&gt;
&lt;p&gt;Go 分类文章，学习笔记，会不定时修改，补充，纠错，增加内容，路漫漫。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id=&quot;结论&quot;&gt;&lt;a href=&quot;#结论&quot; class=&quot;headerlink&quot; title=&quot;结论&quot;&gt;&lt;/a&gt;结论&lt;/h2&gt;&lt;p&gt;先上简单结论  &lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;初始化依赖包，也就是 import 的包&lt;/li&gt;
&lt;li&gt;在同一个包内，在解决依赖顺序的情况下，按照变量、常量出现的顺序依次初始化&lt;/li&gt;
&lt;li&gt;按照 init 函数出现的顺序运行&lt;/li&gt;
&lt;li&gt;运行 main 函数&lt;/li&gt;
&lt;/ul&gt;
    
    </summary>
    
      <category term="Go" scheme="https://dryyun.com/categories/Go/"/>
    
    
      <category term="Go" scheme="https://dryyun.com/tags/Go/"/>
    
  </entry>
  
  <entry>
    <title>Go 程序设计语言 - 笔记</title>
    <link href="https://dryyun.com/2018/12/05/go-gopl-notes/"/>
    <id>https://dryyun.com/2018/12/05/go-gopl-notes/</id>
    <published>2018-12-05T05:01:48.000Z</published>
    <updated>2024-09-21T11:19:45.650Z</updated>
    
    <summary type="html">
    
      
      
        
        
          &lt;blockquote&gt;
&lt;p&gt;Go
        
      
    
    </summary>
    
      <category term="Go" scheme="https://dryyun.com/categories/Go/"/>
    
    
      <category term="Go" scheme="https://dryyun.com/tags/Go/"/>
    
      <category term="读书笔记" scheme="https://dryyun.com/tags/%E8%AF%BB%E4%B9%A6%E7%AC%94%E8%AE%B0/"/>
    
  </entry>
  
  <entry>
    <title>Go 学习 - 环境设置</title>
    <link href="https://dryyun.com/2018/11/29/go-environment-setting/"/>
    <id>https://dryyun.com/2018/11/29/go-environment-setting/</id>
    <published>2018-11-29T04:25:11.000Z</published>
    <updated>2024-09-21T11:19:45.650Z</updated>
    
    <summary type="html">
    
      &lt;blockquote&gt;
&lt;p&gt;Go 分类文章，学习笔记，会不定时修改，补充，纠错，增加内容，路漫漫。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;blockquote&gt;
&lt;p&gt;当前环境  &lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;设备 MacBook Pro  &lt;/li&gt;
&lt;li&gt;系统 macOS High Sierra 10.13.6  &lt;/li&gt;
&lt;li&gt;Go 版本 1.10.4   &lt;/li&gt;
&lt;/ul&gt;
&lt;/blockquote&gt;
&lt;h2 id=&quot;开发工具&quot;&gt;&lt;a href=&quot;#开发工具&quot; class=&quot;headerlink&quot; title=&quot;开发工具&quot;&gt;&lt;/a&gt;开发工具&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;/2018/11/29/go-with-vscode/&quot;&gt;VSCode&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://www.jetbrains.com/go/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;GoLand&lt;/a&gt; &lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;Go-安装&quot;&gt;&lt;a href=&quot;#Go-安装&quot; class=&quot;headerlink&quot; title=&quot;Go 安装&quot;&gt;&lt;/a&gt;Go 安装&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;源码安装，&lt;a href=&quot;https://golang.org/dl/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://golang.org/dl/&lt;/a&gt; 下载相应的 goVERSION.src.tar.gz 即可&lt;/li&gt;
&lt;li&gt;标准包安装&lt;ul&gt;
&lt;li&gt;下载地址 &lt;a href=&quot;https://golang.org/dl/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://golang.org/dl/&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;需要判断操作系统是 32 位还是 64 位，uname -m&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;三方工具安装&lt;ul&gt;
&lt;li&gt;homebrew，mac&lt;/li&gt;
&lt;li&gt;apt-get、yum，linux&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/2018/11/28/how-to-use-gvm/&quot;&gt;gvm&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
    
    </summary>
    
      <category term="Go" scheme="https://dryyun.com/categories/Go/"/>
    
    
      <category term="Go" scheme="https://dryyun.com/tags/Go/"/>
    
  </entry>
  
  <entry>
    <title>使用 VSCode 开发 Go - 浅尝辄止</title>
    <link href="https://dryyun.com/2018/11/29/go-with-vscode/"/>
    <id>https://dryyun.com/2018/11/29/go-with-vscode/</id>
    <published>2018-11-29T01:23:38.000Z</published>
    <updated>2024-09-21T11:19:45.650Z</updated>
    
    <summary type="html">
    
      &lt;blockquote&gt;
&lt;p&gt;Go 分类文章，学习笔记，会不定时修改，补充，纠错，增加内容，路漫漫。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;开发 Go 如果懒的折腾就直接上 &lt;a href=&quot;https://www.jetbrains.com/go/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;GoLand&lt;/a&gt; 就行了，我就是懒。&lt;/p&gt;
&lt;p&gt;不过，这不是本文的目的，毕竟 GoLand 要钱，要内存，要机器性能，要求还蛮高的，相对来说 &lt;a href=&quot;https://code.visualstudio.com/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;VSCode&lt;/a&gt; 就简单了呀。&lt;/p&gt;
&lt;h2 id=&quot;使用&quot;&gt;&lt;a href=&quot;#使用&quot; class=&quot;headerlink&quot; title=&quot;使用&quot;&gt;&lt;/a&gt;使用&lt;/h2&gt;&lt;p&gt;默认你已经安装了 VSCode 了&lt;br&gt;&lt;code&gt;强烈建议，安装命令 [code]，在终端打开文件很方便&lt;/code&gt; ， &lt;a href=&quot;https://segmentfault.com/q/1010000005104983&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;参考&lt;/a&gt;&lt;/p&gt;
&lt;h3 id=&quot;安装-Go-插件&quot;&gt;&lt;a href=&quot;#安装-Go-插件&quot; class=&quot;headerlink&quot; title=&quot;安装 Go 插件&quot;&gt;&lt;/a&gt;安装 Go 插件&lt;/h3&gt;&lt;p&gt;可以查看 &lt;a href=&quot;https://marketplace.visualstudio.com/items?itemName=ms-vscode.Go&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Go for Visual Studio Code&lt;/a&gt; 相关介绍  &lt;/p&gt;
&lt;p&gt;只要使用 VSCode 打开任意 .go 文件，就会推荐安装 Go 插件&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;/2018/11/29/go-with-vscode/go-extension.png&quot; width=&quot;500px&quot;&gt;&lt;/p&gt;
    
    </summary>
    
      <category term="Go" scheme="https://dryyun.com/categories/Go/"/>
    
    
      <category term="Go" scheme="https://dryyun.com/tags/Go/"/>
    
      <category term="VSCode" scheme="https://dryyun.com/tags/VSCode/"/>
    
  </entry>
  
  <entry>
    <title>GVM - Go 的多版本管理工具，使用介绍</title>
    <link href="https://dryyun.com/2018/11/28/how-to-use-gvm/"/>
    <id>https://dryyun.com/2018/11/28/how-to-use-gvm/</id>
    <published>2018-11-28T01:58:17.000Z</published>
    <updated>2024-09-21T11:19:45.654Z</updated>
    
    <summary type="html">
    
      &lt;blockquote&gt;
&lt;p&gt;Go 分类文章，学习笔记，会不定时修改，补充，纠错，增加内容，路漫漫。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id=&quot;基本介绍&quot;&gt;&lt;a href=&quot;#基本介绍&quot; class=&quot;headerlink&quot; title=&quot;基本介绍&quot;&gt;&lt;/a&gt;基本介绍&lt;/h2&gt;&lt;h4 id=&quot;项目地址&quot;&gt;&lt;a href=&quot;#项目地址&quot; class=&quot;headerlink&quot; title=&quot;项目地址&quot;&gt;&lt;/a&gt;项目地址&lt;/h4&gt;&lt;blockquote&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/golang/go&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Go GitHub&lt;/a&gt;&lt;br&gt;&lt;a href=&quot;https://github.com/moovweb/gvm&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;GVM GitHub&lt;/a&gt;&lt;br&gt;&lt;/p&gt;&lt;/blockquote&gt;
    
    </summary>
    
      <category term="Go" scheme="https://dryyun.com/categories/Go/"/>
    
    
      <category term="Go" scheme="https://dryyun.com/tags/Go/"/>
    
      <category term="GVM" scheme="https://dryyun.com/tags/GVM/"/>
    
  </entry>
  
  <entry>
    <title>学习 Go 的经历</title>
    <link href="https://dryyun.com/2018/11/27/learn-go/"/>
    <id>https://dryyun.com/2018/11/27/learn-go/</id>
    <published>2018-11-27T04:30:00.000Z</published>
    <updated>2024-09-21T11:19:45.654Z</updated>
    
    <summary type="html">
    
      &lt;blockquote&gt;
&lt;p&gt;Go 分类文章，学习笔记，会不定时修改，补充，纠错，增加内容，路漫漫。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;准备在后续瞎写一些关于自己学习 Go 的文章，纯粹的就是学习 Go 的私人笔记，基本没什么营养。&lt;/p&gt;
    
    </summary>
    
      <category term="Go" scheme="https://dryyun.com/categories/Go/"/>
    
    
      <category term="Go" scheme="https://dryyun.com/tags/Go/"/>
    
  </entry>
  
  <entry>
    <title>无题 - 无意义的碎碎念</title>
    <link href="https://dryyun.com/2018/11/02/no-title-2018-11-2/"/>
    <id>https://dryyun.com/2018/11/02/no-title-2018-11-2/</id>
    <published>2018-11-02T06:46:28.000Z</published>
    <updated>2024-09-21T11:19:45.654Z</updated>
    
    <summary type="html">
    
      
      
        
        
          &lt;p&gt;转眼十月就过去了。拖延如我，果然什么都没干成，有一种啥都不想做的心情。&lt;b
        
      
    
    </summary>
    
      <category term="杂谈" scheme="https://dryyun.com/categories/%E6%9D%82%E8%B0%88/"/>
    
    
      <category term="杂谈" scheme="https://dryyun.com/tags/%E6%9D%82%E8%B0%88/"/>
    
      <category term="生活" scheme="https://dryyun.com/tags/%E7%94%9F%E6%B4%BB/"/>
    
  </entry>
  
  <entry>
    <title>对坏人太好，对好人太坏的社会</title>
    <link href="https://dryyun.com/2018/10/24/good-for-bad-guys/"/>
    <id>https://dryyun.com/2018/10/24/good-for-bad-guys/</id>
    <published>2018-10-24T09:56:36.000Z</published>
    <updated>2024-09-21T11:19:45.654Z</updated>
    
    <summary type="html">
    
      &lt;p&gt;其实作为一个自认为理性的人来说，我真的不希望以【好人】【坏人】来给人打标签，给人定性，毕竟凡是都会有灰色地带，毕竟很多东西都是相对的。&lt;br&gt;但是在面对具体事件的时候，具体的行为分析，就会得出结果，谁在这件事上是好人，谁是坏人，这就会显得简单多了。&lt;/p&gt;
&lt;p&gt;恩，以上都是废话，以下为胡言乱语，我肯定是神志不清了吧。&lt;br&gt;&lt;/p&gt;
    
    </summary>
    
      <category term="杂谈" scheme="https://dryyun.com/categories/%E6%9D%82%E8%B0%88/"/>
    
    
      <category term="杂谈" scheme="https://dryyun.com/tags/%E6%9D%82%E8%B0%88/"/>
    
      <category term="社会" scheme="https://dryyun.com/tags/%E7%A4%BE%E4%BC%9A/"/>
    
      <category term="坏人" scheme="https://dryyun.com/tags/%E5%9D%8F%E4%BA%BA/"/>
    
      <category term="好人" scheme="https://dryyun.com/tags/%E5%A5%BD%E4%BA%BA/"/>
    
  </entry>
  
</feed>
