<rss xmlns:atom="http://www.w3.org/2005/Atom" version="2.0">
    <channel>
        <title>开源项目 - 分类 - 开发者技术小屋</title>
        <link>https://www.developerhome.net/categories/%E5%BC%80%E6%BA%90%E9%A1%B9%E7%9B%AE/</link>
        <description>开源项目 - 分类 - 开发者技术小屋</description>
        <generator>Hugo -- gohugo.io</generator><language>zh-cn</language><lastBuildDate>Fri, 11 Dec 2020 15:56:36 &#43;0000</lastBuildDate><atom:link href="https://www.developerhome.net/categories/%E5%BC%80%E6%BA%90%E9%A1%B9%E7%9B%AE/" rel="self" type="application/rss+xml" /><item>
    <title>推荐一个golang的tcp处理包</title>
    <link>https://www.developerhome.net/archives/560/</link>
    <pubDate>Fri, 11 Dec 2020 15:56:36 &#43;0000</pubDate>
    <author>Jarod</author>
    <guid>https://www.developerhome.net/archives/560/</guid>
    <description><![CDATA[<div class="featured-image">
                <img src="/uploads/2026/06/cover-560.jpg" referrerpolicy="no-referrer">
            </div><p>在做物联网设备对接中，我们常常要用到<code>TCP</code>长连接来交互数据，而<code>Golang</code>的设计理念，天生适合做<code>TCP</code>连接的处理。</p>
<p>今天推荐一个开源包 <a href="https://github.com/shootingfans/socket" target="_blank" rel="noopener noreffer ">github.com/shootingfans/socket</a> 来更方便的处理<code>TCP</code>连接操作。</p>
<p>这个包中，首先将处理连接分为两种</p>
<ul>
<li><code>AsyncProcessor</code> 异步处理器</li>
<li>
<ul>
<li><code>SyncProcessor</code> 同步处理器</li>
</ul>
</li>
<li></li>
</ul>
<p>其中异步处理器会在处理连接时，分为读协程、写协程以及工作协程，同时工作协程是可以配置多个的，数据流转为</p>
<div class="code-block code-line-numbers open" style="counter-reset: code-block 0">
    <div class="code-header language-">
        <span class="code-title"><i class="arrow fas fa-angle-right" aria-hidden="true"></i></span>
        <span class="ellipses"><i class="fas fa-ellipsis-h" aria-hidden="true"></i></span>
        <span class="copy" title="复制到剪贴板"><i class="far fa-copy" aria-hidden="true"></i></span>
    </div><pre tabindex="0"><code>连接 -&gt; 读取协程 --Worker通道--&gt; 多个Worker处理 --&gt; 调度器 --写通道--&gt; 写协程--&gt; 连接</code></pre></div>
<p>调度器则作为一个协调器使用，调取内存取了连接、写入通道等，其结构定义如下</p>
<div class="code-block code-line-numbers open" style="counter-reset: code-block 0">
    <div class="code-header language-go">
        <span class="code-title"><i class="arrow fas fa-angle-right" aria-hidden="true"></i></span>
        <span class="ellipses"><i class="fas fa-ellipsis-h" aria-hidden="true"></i></span>
        <span class="copy" title="复制到剪贴板"><i class="far fa-copy" aria-hidden="true"></i></span>
    </div><div class="highlight"><pre tabindex="0" class="chroma"><code class="language-go" data-lang="go"><span class="line"><span class="cl"><span class="c1">// Scheduler</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="c1">// 调度器</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="kd">type</span><span class="w"> </span><span class="nx">Scheduler</span><span class="w"> </span><span class="kd">struct</span><span class="w"> </span><span class="p">{</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">    </span><span class="c1">// 连接</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">    </span><span class="nx">Conn</span><span class="w">            </span><span class="o">*</span><span class="nx">Connection</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">    </span><span class="c1">// 上下文</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">    </span><span class="nx">Ctx</span><span class="w">             </span><span class="nx">context</span><span class="p">.</span><span class="nx">Context</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">    </span><span class="c1">// 写入通道</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">    </span><span class="nx">WriteChan</span><span class="w">       </span><span class="kd">chan</span><span class="o">&lt;-</span><span class="w"> </span><span class="p">[]</span><span class="kt">byte</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">    </span><span class="nx">rw</span><span class="w">              </span><span class="nx">sync</span><span class="p">.</span><span class="nx">RWMutex</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">    </span><span class="nx">values</span><span class="w">          </span><span class="kd">map</span><span class="p">[</span><span class="kd">interface</span><span class="p">{}]</span><span class="kd">interface</span><span class="p">{}</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="p">}</span></span></span></code></pre></div></div>
<p>同时调度器还提供了存、读、删，以及自增、自减几个功能用于在多个<code>Worker</code>内共享数据</p>]]></description>
</item>
<item>
    <title>构建一个自己的PHP框架（一）——  你需要准备的</title>
    <link>https://www.developerhome.net/archives/63/</link>
    <pubDate>Thu, 20 Apr 2017 15:15:58 &#43;0000</pubDate>
    <author>Jarod</author>
    <guid>https://www.developerhome.net/archives/63/</guid>
    <description><![CDATA[<div class="featured-image">
                <img src="/uploads/2026/06/cover-63.jpg" referrerpolicy="no-referrer">
            </div><p>对于大多数PHP程序员来说，可能在公司做项目，大部分还是使用的开源框架，常用的ThinkPHP、去年火起来的Laravel、之前很火的Yii、比较轻量的Codeigniter，强调性能的Yaf等，很多人长期使用一个框架，就会有很多自己的心得，那么何不我们自己来写一个框架呢？</p>
<p>首先，我们要选择一个框架的设计方案，现在主流框架均采用MVC模式</p>
<p>好了，我们来规划下目录</p>
<div class="code-block code-line-numbers open" style="counter-reset: code-block 0">
    <div class="code-header language-">
        <span class="code-title"><i class="arrow fas fa-angle-right" aria-hidden="true"></i></span>
        <span class="ellipses"><i class="fas fa-ellipsis-h" aria-hidden="true"></i></span>
        <span class="copy" title="复制到剪贴板"><i class="far fa-copy" aria-hidden="true"></i></span>
    </div><pre tabindex="0"><code>———— Framework
| |———— Storage
| | |———— Database
| | |———— Cache
| |———— Factory
| |———— Inters
| |———— Model
| |———— View
| |———— Controller
| |———— Collection
|—— Logs
|—— config.ini
|—— index.php</code></pre></div>
<p>下面我来详细介绍这个目录结构</p>
<ul>
<li>Framework 框架的目录，存储框架内所有文件</li>
<li>Logs 存储系统的日志</li>
<li>config.ini 框架的配置文件</li>
<li>index.php 框架的入口文件</li>
<li>Storage 存储目录，里面为框架所有存储服务，里面包含Cache存储和Database存储</li>
<li>Factory 存储框架内构件各种服务的工厂类</li>
<li>Inters 存储框架内所有interface接口定义</li>
<li>Model 存储所有的模型</li>
<li>View 存储所有的视图</li>
<li>Controller 存储所有的控制器</li>
<li>Collection 存储所有的集合（此处到说集合的时候会详细说明）</li>
</ul>
<p>以上这些规划后，我们就可以开始进行编程了。下一章开始进入系统底层搭建</p>]]></description>
</item>
</channel>
</rss>
