<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/">
  <channel>
    <title>DMStory - 大喵的故事</title>
    <link>https://dmstory.github.io/</link>
    <description>Recent content on DMStory - 大喵的故事</description>
    <image>
      <title>DMStory - 大喵的故事</title>
      <url>https://dmstory.github.io/%3Clink%20or%20path%20of%20image%20for%20opengraph,%20twitter-cards%3E</url>
      <link>https://dmstory.github.io/%3Clink%20or%20path%20of%20image%20for%20opengraph,%20twitter-cards%3E</link>
    </image>
    <generator>Hugo</generator>
    <language>zh-cn</language>
    <lastBuildDate>Mon, 03 Apr 2023 21:40:26 +0800</lastBuildDate>
    <atom:link href="https://dmstory.github.io/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>Golang基础篇-竞态</title>
      <link>https://dmstory.github.io/posts/golang-junior/golang-junior-race-condition/</link>
      <pubDate>Mon, 03 Apr 2023 21:40:26 +0800</pubDate>
      <guid>https://dmstory.github.io/posts/golang-junior/golang-junior-race-condition/</guid>
      <description>&lt;h2 id=&#34;goroutine执行顺序&#34;&gt;goroutine执行顺序&lt;/h2&gt;
&lt;p&gt;上一篇说到，goroutine是程序执行过程中的一个独立的单元，当程序中只有一个goroutine时，程序逻辑按照代码的顺序来执行，但是当程序中同时运行多个goroutine时，
逻辑的执行顺序是不确定的，比如下面的例子：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-Golang&#34; data-lang=&#34;Golang&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;kd&#34;&gt;func&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;nf&#34;&gt;main&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;()&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;	&lt;/span&gt;&lt;span class=&#34;k&#34;&gt;for&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;i&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;o&#34;&gt;:=&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;0&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;i&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;p&#34;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;10&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;i&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;++&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;		&lt;/span&gt;&lt;span class=&#34;k&#34;&gt;go&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;nf&#34;&gt;display&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;i&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;	&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;	&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;time&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nf&#34;&gt;Sleep&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;time&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;Second&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;kd&#34;&gt;func&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;nf&#34;&gt;display&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;n&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;kt&#34;&gt;int&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;	&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;fmt&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nf&#34;&gt;Printf&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s&#34;&gt;&amp;#34;Number %d First\n&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;n&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;	&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;fmt&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nf&#34;&gt;Printf&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s&#34;&gt;&amp;#34;Number %d Second\n&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;n&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;cm&#34;&gt;/*output:
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;cm&#34;&gt;Number 9 First
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;cm&#34;&gt;Number 6 First
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;cm&#34;&gt;Number 5 First
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;cm&#34;&gt;Number 5 Second
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;cm&#34;&gt;Number 4 First
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;cm&#34;&gt;Number 4 Second
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;cm&#34;&gt;Number 0 First
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;cm&#34;&gt;Number 0 Second
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;cm&#34;&gt;Number 9 Second
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;cm&#34;&gt;Number 8 First
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;cm&#34;&gt;Number 8 Second
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;cm&#34;&gt;Number 6 Second
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;cm&#34;&gt;Number 3 First
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;cm&#34;&gt;Number 3 Second
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;cm&#34;&gt;Number 7 First
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;cm&#34;&gt;Number 7 Second
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;cm&#34;&gt;Number 2 First
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;cm&#34;&gt;Number 2 Second
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;cm&#34;&gt;Number 1 First
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;cm&#34;&gt;Number 1 Second
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;cm&#34;&gt;*/&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;上面的代码中，我们开启了10个goroutine,但是实际运行结果则是不同的goroutine穿插执行。如果这些goroutine之间没有关联，那么穿插执行并不会导致什么问题，但是如果它们之间有关联，比如需要访问同一块内存，
则程序的执行结果可能会依赖各个goroutine的执行顺序，这种情况称之为竞态。&lt;/p&gt;</description>
    </item>
    <item>
      <title>Golang基础篇-goroutine</title>
      <link>https://dmstory.github.io/posts/golang-junior/golang-junior-goroutine/</link>
      <pubDate>Sun, 07 Aug 2022 12:00:26 +0800</pubDate>
      <guid>https://dmstory.github.io/posts/golang-junior/golang-junior-goroutine/</guid>
      <description>&lt;h2 id=&#34;goroutine&#34;&gt;goroutine&lt;/h2&gt;
&lt;p&gt;goroutine是Golang实现并发的一种手段，在一个Golang程序中，每一个goroutine相当于一个独立的执行单元，这类似于线程，但是并不是线程，而是Golang在语言层面上对线程的一种抽象。&lt;/p&gt;
&lt;p&gt;Golang程序执行的时候默认会创建一个goroutine，可以叫他main goroutine。其他的goroutine需要我们通过&lt;code&gt;go func()&lt;/code&gt;的形式创建。&lt;/p&gt;
&lt;p&gt;这有点类似于一个工厂，工厂里面至少要有一个人员吧，我们称之为老板(main goroutine)，当工厂只有老板一个人时，工厂还是可以正常运转的，所有的事情都需要老板亲历亲为呗。当我们在程序中又创建了一个goroutine时，就相当于招聘了一个员工，这样就可以把一些工作分给员工去做。&lt;/p&gt;</description>
    </item>
    <item>
      <title>Golang基础篇-接口</title>
      <link>https://dmstory.github.io/posts/golang-junior/golang-junior-interface/</link>
      <pubDate>Sat, 30 Jul 2022 13:56:56 +0800</pubDate>
      <guid>https://dmstory.github.io/posts/golang-junior/golang-junior-interface/</guid>
      <description>&lt;p&gt;很多编程语言都提供了接口，Golang接口最大的特点是它可以不必显式定义，只要一个类型实现了某个接口定义的所有方法，那它就实现了这个接口。&lt;/p&gt;</description>
    </item>
    <item>
      <title>使用shader实现fillamount效果</title>
      <link>https://dmstory.github.io/posts/unity/unity-shader-sprite-fillamount/</link>
      <pubDate>Sun, 26 Jun 2022 11:12:15 +0800</pubDate>
      <guid>https://dmstory.github.io/posts/unity/unity-shader-sprite-fillamount/</guid>
      <description>&lt;p&gt;使用UGUI的Image可以轻松实现进度条的效果。但是有些情况下我们需要制作针对游戏世界中的物体的进度条，例如人物头顶的HP条，机器旁边的CD条等。常规的做法通过将世界坐标映射到UI，然后使用Image制作这些元素。当游戏世界中的物体
位置改变的时候，需要通知UI去改变相应元素的位置，如果需要考虑摄像机对于进度条的影响，例如摄像机拉远时进度条变小，则会更加麻烦。&lt;/p&gt;
&lt;p&gt;这里提供一种使用shader实现进度条的方案。测试环境：Unity 2020.3.32。&lt;/p&gt;</description>
    </item>
    <item>
      <title>Golang基础篇-结构体扩展</title>
      <link>https://dmstory.github.io/posts/golang-junior/golang-junior-struct-expand/</link>
      <pubDate>Fri, 03 Jun 2022 11:19:05 +0800</pubDate>
      <guid>https://dmstory.github.io/posts/golang-junior/golang-junior-struct-expand/</guid>
      <description>&lt;p&gt;结构体扩展允许将多个结构体组合成一个新的结构体，在新的结构体中，允许像访问自己内部成员一样访问内嵌结构体的字段和方法。&lt;/p&gt;</description>
    </item>
    <item>
      <title>Unity协程探究</title>
      <link>https://dmstory.github.io/posts/unity/unity-coroutine-research/</link>
      <pubDate>Sat, 21 May 2022 15:31:34 +0800</pubDate>
      <guid>https://dmstory.github.io/posts/unity/unity-coroutine-research/</guid>
      <description>&lt;p&gt;Unity提供了协程来实现一定程度上的“伪并发”。&lt;/p&gt;
&lt;p&gt;众所周知，UnityAPI只能在主线程中调用，如果我们希望通过多线程来实现多个过程的并发处理，那么如果涉及对UnityAPI的操作，则必须转到主线程去执行，比较繁琐。
&lt;a href=&#34;https://docs.unity3d.com/ScriptReference/MonoBehaviour.StartCoroutine.html&#34;&gt;MonoBehaviour.StartCoroutine&lt;/a&gt;可以创建一个协程(Coroutine)，
在协程中可以通过&lt;code&gt;yield&lt;/code&gt;语句暂停程序执行或者退出协程，从游戏运行的宏观角度看，它们似乎是在并行一样。&lt;/p&gt;</description>
    </item>
    <item>
      <title>Golang基础篇-方法</title>
      <link>https://dmstory.github.io/posts/golang-junior/golang-juinior-method/</link>
      <pubDate>Tue, 03 May 2022 14:39:22 +0800</pubDate>
      <guid>https://dmstory.github.io/posts/golang-junior/golang-juinior-method/</guid>
      <description>&lt;h2 id=&#34;函数和方法的区别&#34;&gt;函数和方法的区别&lt;/h2&gt;
&lt;p&gt;函数只是一段代码的执行过程，而方法往往会与某个类型的对象绑定。&lt;/p&gt;
&lt;p&gt;方法是OOP的概念，在一个方法的实现中，我们可以通过特定方式访问对象的私有变量、方法，例如C类语言的this指针，Python的self等，在方法的调用过程中，对象往往被隐式传递。&lt;/p&gt;</description>
    </item>
    <item>
      <title>Golang基础篇-异常处理</title>
      <link>https://dmstory.github.io/posts/golang-junior/golang-juinior-panic-and-recover/</link>
      <pubDate>Sat, 30 Apr 2022 10:57:15 +0800</pubDate>
      <guid>https://dmstory.github.io/posts/golang-junior/golang-juinior-panic-and-recover/</guid>
      <description>&lt;p&gt;Panic是指程序遇到了(或者由程序主动发起)运行时错误，此时，程序中的函数会立即停止执行，然后执行已经defer过的函数，随后，程序输出错误日志信息，停止运行。&lt;/p&gt;</description>
    </item>
    <item>
      <title>Golang基础篇-defer关键字</title>
      <link>https://dmstory.github.io/posts/golang-junior/golang-junior-defer/</link>
      <pubDate>Sat, 05 Mar 2022 09:03:35 +0800</pubDate>
      <guid>https://dmstory.github.io/posts/golang-junior/golang-junior-defer/</guid>
      <description>&lt;p&gt;defer关键字可以延迟一个函数的执行，直到这个函数返回，无论是正常的&lt;code&gt;return&lt;/code&gt;返回，还是由于意外情况。&lt;/p&gt;</description>
    </item>
    <item>
      <title>Golang基础篇-匿名函数</title>
      <link>https://dmstory.github.io/posts/golang-junior/golang-junior-anonymous-function/</link>
      <pubDate>Sat, 26 Feb 2022 09:50:02 +0800</pubDate>
      <guid>https://dmstory.github.io/posts/golang-junior/golang-junior-anonymous-function/</guid>
      <description>&lt;p&gt;当我们定义一个函数时，例如：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-Golang&#34; data-lang=&#34;Golang&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;kd&#34;&gt;func&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;nf&#34;&gt;f&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(){&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;    &lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;statements&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;这种方式只能用在&lt;strong&gt;包一级&lt;/strong&gt;，称为命名函数。这个过程相当于我们定义了一个常量&lt;code&gt;f&lt;/code&gt;，类型为&lt;code&gt;func()&lt;/code&gt;，并且其对应我们刚才定义的函数。
但是有些情况下这种函数定义的方式不够灵活，比如我们希望在调用函数时将某个函数作为参数传入，或者在函数返回时希望返回的是一个函数。&lt;/p&gt;</description>
    </item>
    <item>
      <title>Golang基础篇-函数</title>
      <link>https://dmstory.github.io/posts/golang-junior/golang-junior-function/</link>
      <pubDate>Sat, 12 Feb 2022 09:19:48 +0800</pubDate>
      <guid>https://dmstory.github.io/posts/golang-junior/golang-junior-function/</guid>
      <description>&lt;h2 id=&#34;函数声明&#34;&gt;函数声明&lt;/h2&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-Golang&#34; data-lang=&#34;Golang&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;kd&#34;&gt;func&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;nf&#34;&gt;funcName&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;param1&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;param2&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;paramType1&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;param3&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;paramType2&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)(&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;resultType1&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;resultType2&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;    &lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;statements&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;函数由&lt;code&gt;func&lt;/code&gt;关键字，函数名称，参数列表，返回值列表，函数体组成。&lt;/p&gt;</description>
    </item>
    <item>
      <title>Golang基础篇-流程控制</title>
      <link>https://dmstory.github.io/posts/golang-junior/golang-juinior-process-control/</link>
      <pubDate>Tue, 18 Jan 2022 20:16:26 +0800</pubDate>
      <guid>https://dmstory.github.io/posts/golang-junior/golang-juinior-process-control/</guid>
      <description>&lt;p&gt;流程控制结构主要包括分支结构、循环结构、标签跳转。&lt;/p&gt;</description>
    </item>
    <item>
      <title>Golang基础篇-复合类型</title>
      <link>https://dmstory.github.io/posts/golang-junior/golang-junior-complex-type/</link>
      <pubDate>Sun, 09 Jan 2022 10:08:50 +0800</pubDate>
      <guid>https://dmstory.github.io/posts/golang-junior/golang-junior-complex-type/</guid>
      <description>&lt;p&gt;Golang复合类型大致分为数组、切片、map、结构体、指针等。&lt;/p&gt;</description>
    </item>
    <item>
      <title>Golang基础篇-内置类型</title>
      <link>https://dmstory.github.io/posts/golang-junior/golang-junior-built-in-type/</link>
      <pubDate>Wed, 05 Jan 2022 21:23:38 +0800</pubDate>
      <guid>https://dmstory.github.io/posts/golang-junior/golang-junior-built-in-type/</guid>
      <description>&lt;p&gt;Golang内置类型大致分为整型、浮点型、复数型、字符(串)型、接口类型、布尔型几类。&lt;/p&gt;</description>
    </item>
    <item>
      <title>Golang基础篇-基本结构</title>
      <link>https://dmstory.github.io/posts/golang-junior/golang-junior-base-structure/</link>
      <pubDate>Sat, 01 Jan 2022 11:21:48 +0800</pubDate>
      <guid>https://dmstory.github.io/posts/golang-junior/golang-junior-base-structure/</guid>
      <description>&lt;p&gt;Golang版本：go version go1.17.3 windows/amd64&lt;/p&gt;
&lt;p&gt;学习环境：Visual Studio Code&lt;/p&gt;</description>
    </item>
    <item>
      <title>浅谈UGUI优化-网格合并</title>
      <link>https://dmstory.github.io/posts/unity/ugui-optimize-rebatch/</link>
      <pubDate>Sun, 26 Dec 2021 19:11:33 +0800</pubDate>
      <guid>https://dmstory.github.io/posts/unity/ugui-optimize-rebatch/</guid>
      <description>&lt;p&gt;之前说到优化DrawCall可以降低CPU在渲染上的开销，那么是不是DrawCall越少就一定越好呢？单纯讨论DrawCall的话，确实是，但是如果为了合并DrawCall需要付出的代价很大，就会得不偿失。网格合并（Rebatch）就是UGUI解决DrawCall问题的代价之一。&lt;/p&gt;</description>
    </item>
    <item>
      <title>浅谈UGUI优化-网格重建</title>
      <link>https://dmstory.github.io/posts/unity/ugui-optimize-rebuild/</link>
      <pubDate>Sun, 26 Dec 2021 14:22:20 +0800</pubDate>
      <guid>https://dmstory.github.io/posts/unity/ugui-optimize-rebuild/</guid>
      <description>&lt;p&gt;在优化的过程中，我们经常会听到Rebatch和Rebuild这两个词，很多人将这两个词混为一谈，其实它们之间虽然有关联但是本质上是两个过程。今天先聊一聊网格重建(Rebuild)，要理解这一过程，就需要先明白为什么会有网格，然后再讨论为什么会重建。&lt;/p&gt;</description>
    </item>
    <item>
      <title>浅谈UGUI优化-DrawCall篇</title>
      <link>https://dmstory.github.io/posts/unity/ugui-optimize-drawcall/</link>
      <pubDate>Sat, 25 Dec 2021 11:34:43 +0800</pubDate>
      <guid>https://dmstory.github.io/posts/unity/ugui-optimize-drawcall/</guid>
      <description>&lt;p&gt;说起UGUI的优化，DrawCall一定是一个绕不开的话题。当然不只是UI优化，Unity中性能优化都会涉及DrawCall的优化。&lt;/p&gt;</description>
    </item>
    <item>
      <title>使用Hugo快速建立静态网站</title>
      <link>https://dmstory.github.io/posts/use-hugo/</link>
      <pubDate>Sun, 19 Dec 2021 15:01:14 +0800</pubDate>
      <guid>https://dmstory.github.io/posts/use-hugo/</guid>
      <description>&lt;p&gt;Hugo是一个开源的，用于快速生成静态站点的工具，同类型的工具还有&lt;a href=&#34;http://jekyllcn.com/&#34;&gt;jekyll&lt;/a&gt;和&lt;a href=&#34;https://hexo.io/zh-cn/&#34;&gt;Hexo&lt;/a&gt;。利用Hugo我们可以用MarkDown的格式书写内容，然后一键生成静态站点，非常方便。&lt;/p&gt;</description>
    </item>
    <item>
      <title>关于</title>
      <link>https://dmstory.github.io/about/</link>
      <pubDate>Sat, 18 Dec 2021 17:05:54 +0800</pubDate>
      <guid>https://dmstory.github.io/about/</guid>
      <description>&lt;h2 id=&#34;关于我&#34;&gt;关于我&lt;/h2&gt;
&lt;p&gt;我是董大喵(艺名)，目前是一名游戏开发工程师。&lt;/p&gt;
&lt;h2 id=&#34;关于本站&#34;&gt;关于本站&lt;/h2&gt;
&lt;p&gt;这将是一个分享我个人学习和生活经历的平台。&lt;/p&gt;
&lt;p&gt;最初有建站的想法是在2019年双十一，在朋友的推荐下买了云服务器，就在想用来干点什么。最初的想法是学习一下Web开发的知识，然后自己从零搭建一个网站，结果在学习css的过程中就被劝退了。之后的两年这台服务器大部分时间在吃灰。&lt;/p&gt;
&lt;p&gt;直到有一天我了解到可以使用一些框架快速生成网站，经过一番对比选择了&lt;a href=&#34;https://gohugo.io/&#34;&gt;Hugo&lt;/a&gt;，这是一个Golang实现的开源的静态网站生成器。选择Hugo一方面是因为上手简单，另一方面是因为我自己也在学习Golang，也许有机会可以读读源码什么的，这样也会对Hugo驾驭得更好。&lt;/p&gt;
&lt;p&gt;确定了框架之后就是要选择主题了。主题有千千万万，然而一个网站只能使用一个，这也是我前期准备工作里面花时间最久的。最终选择了&lt;a href=&#34;https://github.com/olOwOlo/hugo-theme-even&#34;&gt;Even&lt;/a&gt;这款，风格简洁没有插图，基本功能齐全，看上去也比较优雅，比较适合我这样的猛男。&lt;/p&gt;
&lt;p&gt;2026-08-02:小站整改，原来的主题不能用啦，换了&lt;a href=&#34;https://github.com/adityatelange/hugo-PaperMod/tree/exampleSite/&#34;&gt;PaperMod&lt;/a&gt;这个主题。&lt;/p&gt;
&lt;p&gt;好记性不如烂笔头，希望以后能在这里多多记录。&lt;/p&gt;</description>
    </item>
  </channel>
</rss>
