Skip to content

Commit

Permalink
Site updated: 2023-07-15 16:55:51
Browse files Browse the repository at this point in the history
  • Loading branch information
yanggeorge committed Jul 15, 2023
1 parent 603365a commit 9d4aa47
Show file tree
Hide file tree
Showing 7 changed files with 826 additions and 830 deletions.
4 changes: 2 additions & 2 deletions 2017/05/19/2017-5-19-javacc-minilisp/index.html
Original file line number Diff line number Diff line change
Expand Up @@ -30,8 +30,8 @@
<meta property="article:modified_time" content="2022-02-06T08:15:16.658Z">
<meta property="article:author" content="[email protected]">
<meta property="article:tag" content="java">
<meta property="article:tag" content="javacc">
<meta property="article:tag" content="lisp">
<meta property="article:tag" content="javacc">
<meta name="twitter:card" content="summary">


Expand Down Expand Up @@ -305,8 +305,8 @@ <h2 id="测试代码"><a href="#测试代码" class="headerlink" title=" 测试
<footer class="post-footer">
<div class="post-tags">
<a href="/tags/java/" rel="tag"># java</a>
<a href="/tags/javacc/" rel="tag"># javacc</a>
<a href="/tags/lisp/" rel="tag"># lisp</a>
<a href="/tags/javacc/" rel="tag"># javacc</a>
</div>


Expand Down
8 changes: 4 additions & 4 deletions 2019/01/09/2019-1-9-bt-1/index.html
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,7 @@
<meta property="og:description" content="bt种子文件bt通过种子文件分享已经是一个过去时了,2009年btChina就已经关闭了。现在一般都是 使用磁力链接来分享文件。那么为什么种子文件分享不再流行了呢?为什么要用磁力链接呢? 磁力链接怎么实现的呢? 嗯这是这个系列要研究的问题。但是要研究磁力链接的实现原理,最好先从种子文件开始。">
<meta property="og:locale" content="zh_CN">
<meta property="article:published_time" content="2019-01-08T16:00:00.000Z">
<meta property="article:modified_time" content="2022-02-06T09:04:19.410Z">
<meta property="article:modified_time" content="2023-07-15T08:55:05.263Z">
<meta property="article:author" content="[email protected]">
<meta property="article:tag" content="bitTorrent">
<meta property="article:tag" content="protocol">
Expand Down Expand Up @@ -231,7 +231,7 @@ <h1 class="post-title" itemprop="name headline">
<i class="far fa-calendar-check"></i>
</span>
<span class="post-meta-item-text">更新于</span>
<time title="修改时间:2022-02-06 17:04:19" itemprop="dateModified" datetime="2022-02-06T17:04:19+08:00">2022-02-06</time>
<time title="修改时间:2023-07-15 16:55:05" itemprop="dateModified" datetime="2023-07-15T16:55:05+08:00">2023-07-15</time>
</span>


Expand Down Expand Up @@ -269,8 +269,8 @@ <h2 id="编码方式-bencoding"><a href="#编码方式-bencoding" class="headerl
<p>Lists are encoded as an ‘l’ followed by their elements (also bencoded) followed by an ‘e’. For example l4:spam4:eggse corresponds to [‘spam’, ‘eggs’].</p>
<p>Dictionaries are encoded as a ‘d’ followed by a list of alternating keys and their corresponding values followed by an ‘e’. For example, d3:cow3:moo4:spam4:eggse corresponds to {‘cow’: ‘moo’, ‘spam’: ‘eggs’} and d4:spaml1:a1:bee corresponds to {‘spam’: [‘a’, ‘b’]}. Keys must be strings and appear in sorted order (sorted as raw strings, not alphanumerics).</p>
</blockquote>
<p>翻译为BNF语法呢,就是如下</p>
<figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br></pre></td><td class="code"><pre><span class="line">string : num &#x27;:&#x27; &#123;CHAR&#125;*</span><br><span class="line"></span><br><span class="line">num : 0 </span><br><span class="line"> | [1-9][0-9]+ </span><br><span class="line"> | &#x27;-&#x27; [1-9][0-9]+</span><br><span class="line"></span><br><span class="line">integer : &#x27;i&#x27; num &#x27;e&#x27;</span><br><span class="line"></span><br><span class="line">list : &#x27;l&#x27; &#123;element&#125;* &#x27;e&#x27;</span><br><span class="line"></span><br><span class="line">dic : &#x27;d&#x27; &#123;pair&#125;* &#x27;e&#x27;</span><br><span class="line"></span><br><span class="line">pair : string element</span><br><span class="line"></span><br><span class="line">element : string</span><br><span class="line"> | integer</span><br><span class="line"> | list</span><br><span class="line"> | dic</span><br></pre></td></tr></table></figure>
<p>翻译为eBNF语法呢,就是如下</p>
<figure class="highlight ebnf"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br></pre></td><td class="code"><pre><span class="line"><span class="attribute">string</span> : num &#x27;:&#x27; &#123;CHAR&#125;*</span><br><span class="line"></span><br><span class="line"><span class="attribute">num</span> : 0 </span><br><span class="line"> | [1-9][0-9]+ </span><br><span class="line"> | &#x27;-&#x27; [1-9][0-9]+</span><br><span class="line"></span><br><span class="line"><span class="attribute">integer</span> : &#x27;i&#x27; num &#x27;e&#x27;</span><br><span class="line"></span><br><span class="line"><span class="attribute">list</span> : &#x27;l&#x27; &#123;element&#125;* &#x27;e&#x27;</span><br><span class="line"></span><br><span class="line"><span class="attribute">dic</span> : &#x27;d&#x27; &#123;pair&#125;* &#x27;e&#x27;</span><br><span class="line"></span><br><span class="line"><span class="attribute">pair</span> : string element</span><br><span class="line"></span><br><span class="line"><span class="attribute">element</span> : string</span><br><span class="line"> | integer</span><br><span class="line"> | list</span><br><span class="line"> | dic</span><br></pre></td></tr></table></figure>

<h2 id="解码"><a href="#解码" class="headerlink" title="解码"></a>解码</h2><p>根据BNF实现的解码代码如下, 把<code>get_content()</code>方法中path替换为种子文件的路径,运行就可以看到。
返回的解析结果中会有<code>info_hash</code>,该值是根据info的bencoding的二进制串计算的sha1值。这个值很重要
Expand Down
4 changes: 2 additions & 2 deletions 2023/01/12/2023-1-12-8-queens-chatgpt/index.html
Original file line number Diff line number Diff line change
Expand Up @@ -32,8 +32,8 @@
<meta property="article:modified_time" content="2023-01-12T09:57:51.378Z">
<meta property="article:author" content="[email protected]">
<meta property="article:tag" content="算法">
<meta property="article:tag" content="ChatGPT">
<meta property="article:tag" content="rust">
<meta property="article:tag" content="ChatGPT">
<meta name="twitter:card" content="summary">
<meta name="twitter:image" content="http://threelambda.com/images/2023-1-12-8queens-problem.png">

Expand Down Expand Up @@ -271,8 +271,8 @@ <h2 id="最后"><a href="#最后" class="headerlink" title="最后"></a>最后</
<footer class="post-footer">
<div class="post-tags">
<a href="/tags/%E7%AE%97%E6%B3%95/" rel="tag"># 算法</a>
<a href="/tags/ChatGPT/" rel="tag"># ChatGPT</a>
<a href="/tags/rust/" rel="tag"># rust</a>
<a href="/tags/ChatGPT/" rel="tag"># ChatGPT</a>
</div>


Expand Down
22 changes: 9 additions & 13 deletions about/index.html
Original file line number Diff line number Diff line change
Expand Up @@ -19,15 +19,15 @@

<script class="next-config" data-name="main" type="application/json">{"hostname":"threelambda.com","root":"/","images":"/images","scheme":"Pisces","darkmode":false,"version":"8.17.0","exturl":false,"sidebar":{"position":"left","display":"post","padding":18,"offset":12},"copycode":{"enable":false,"style":null},"bookmark":{"enable":false,"color":"#222","save":"auto"},"mediumzoom":false,"lazyload":false,"pangu":false,"comments":{"style":"tabs","active":null,"storage":true,"lazyload":false,"nav":null},"stickytabs":false,"motion":{"enable":true,"async":false,"transition":{"menu_item":"fadeInDown","post_block":"fadeIn","post_header":"fadeInDown","post_body":"fadeInDown","coll_header":"fadeInLeft","sidebar":"fadeInUp"}},"prism":false,"i18n":{"placeholder":"搜索...","empty":"没有找到任何搜索结果:${query}","hits_time":"找到 ${hits} 个搜索结果(用时 ${time} 毫秒)","hits":"找到 ${hits} 个搜索结果"},"path":"/search.xml","localsearch":{"enable":true,"trigger":"auto","top_n_per_article":1,"unescape":false,"preload":false}}</script><script src="/js/config.js"></script>

<meta name="description" content="这是&amp;#x61;&amp;#x6c;&amp;#x65;&amp;#110;&amp;#121;&amp;#109;&amp;#x40;&amp;#x71;&amp;#x71;&amp;#x2e;&amp;#99;&amp;#111;&amp;#109;的技术博客,以下是作者一些个人项目。 bt-sniffer 是一个基于netty的收集BT种子元数据的嗅探器。(基于Java)以下是相关文章。 BitTorrent协议(一)之解析种子文件 BitTorrent协议(二)之获取下载源 Bi">
<meta name="description" content="这是&amp;#x61;&amp;#108;&amp;#x65;&amp;#x6e;&amp;#121;&amp;#x6d;&amp;#x40;&amp;#x71;&amp;#x71;&amp;#x2e;&amp;#99;&amp;#111;&amp;#x6d;的技术博客,以下是作者一些个人项目。 bt-sniffer 是一个基于netty的收集BT种子元数据的嗅探器。项目相关链接如下: BitTorrent协议(一)之解析种子文件 BitTorrent协议(二)之获取下载源 BitTorrent">
<meta property="og:type" content="website">
<meta property="og:title" content="关于作者">
<meta property="og:url" content="http://threelambda.com/about/index.html">
<meta property="og:site_name" content="3.λ.形而下技术博客">
<meta property="og:description" content="这是&amp;#x61;&amp;#x6c;&amp;#x65;&amp;#110;&amp;#121;&amp;#109;&amp;#x40;&amp;#x71;&amp;#x71;&amp;#x2e;&amp;#99;&amp;#111;&amp;#109;的技术博客,以下是作者一些个人项目。 bt-sniffer 是一个基于netty的收集BT种子元数据的嗅探器。(基于Java)以下是相关文章。 BitTorrent协议(一)之解析种子文件 BitTorrent协议(二)之获取下载源 Bi">
<meta property="og:description" content="这是&amp;#x61;&amp;#108;&amp;#x65;&amp;#x6e;&amp;#121;&amp;#x6d;&amp;#x40;&amp;#x71;&amp;#x71;&amp;#x2e;&amp;#99;&amp;#111;&amp;#x6d;的技术博客,以下是作者一些个人项目。 bt-sniffer 是一个基于netty的收集BT种子元数据的嗅探器。项目相关链接如下: BitTorrent协议(一)之解析种子文件 BitTorrent协议(二)之获取下载源 BitTorrent">
<meta property="og:locale" content="zh_CN">
<meta property="article:published_time" content="2023-07-15T08:49:41.587Z">
<meta property="article:modified_time" content="2023-07-15T08:49:41.587Z">
<meta property="article:published_time" content="2023-07-15T08:53:50.358Z">
<meta property="article:modified_time" content="2023-07-15T08:53:50.358Z">
<meta property="article:author" content="[email protected]">
<meta name="twitter:card" content="summary">

Expand Down Expand Up @@ -200,10 +200,9 @@ <h1 class="post-title" itemprop="name headline">关于作者


<div class="post-body">
<p>这是<a href="mailto:&#x61;&#x6c;&#x65;&#110;&#121;&#109;&#x40;&#x71;&#x71;&#x2e;&#99;&#111;&#109;">&#x61;&#x6c;&#x65;&#110;&#121;&#109;&#x40;&#x71;&#x71;&#x2e;&#99;&#111;&#109;</a>的技术博客,以下是作者一些个人项目。</p>
<ul>
<li><p><a target="_blank" rel="noopener" href="https://gitee.com/yanggeorge/btsniffer">bt-sniffer</a> 是一个基于netty的收集BT种子元数据的嗅探器。(基于Java)以下是相关文章。</p>
<p>这是<a href="mailto:&#x61;&#108;&#x65;&#x6e;&#121;&#x6d;&#x40;&#x71;&#x71;&#x2e;&#99;&#111;&#x6d;">&#x61;&#108;&#x65;&#x6e;&#121;&#x6d;&#x40;&#x71;&#x71;&#x2e;&#99;&#111;&#x6d;</a>的技术博客,以下是作者一些个人项目。</p>
<ul>
<li><a target="_blank" rel="noopener" href="https://gitee.com/yanggeorge/btsniffer">bt-sniffer</a> 是一个基于netty的收集BT种子元数据的嗅探器。项目相关链接如下:<ul>
<li><a href="/2019/01/09/2019-1-9-bt-1/" title="BitTorrent协议(一)之解析种子文件">BitTorrent协议(一)之解析种子文件</a></li>
<li><a href="/2019/01/10/2019-1-10-bt-2/" title="BitTorrent协议(二)之获取下载源">BitTorrent协议(二)之获取下载源</a></li>
<li><a href="/2019/01/21/2019-1-21-bt-3/" title="BitTorrent协议(三)之磁力链接获取元数据">BitTorrent协议(三)之磁力链接获取元数据</a></li>
Expand All @@ -212,12 +211,9 @@ <h1 class="post-title" itemprop="name headline">关于作者
<li><a href="/2019/02/18/2019-2-18-bt-6/" title="BitTorrent协议(六)之种子嗅探器">BitTorrent协议(六)之种子嗅探器</a></li>
</ul>
</li>
<li><p><a target="_blank" rel="noopener" href="https://gitee.com/yanggeorge/minilisp">mini-lisp</a> 是一个精简的Lisp语言解释器,实现了闭包,宏等特性。(基于Java)</p>
</li>
<li><p><a target="_blank" rel="noopener" href="https://gitee.com/yanggeorge/simple-socks5">simple-socks5</a> 是一个基于netty的socks5代理。(基于Java)</p>
</li>
<li><p><a target="_blank" rel="noopener" href="https://gitee.com/yanggeorge/scraper">scraper</a> 是一个网页数据采集的工具。(基于JavaScript &amp; Ruby on Rails)</p>
</li>
<li><a target="_blank" rel="noopener" href="https://gitee.com/yanggeorge/minilisp">mini-lisp</a> 是一个精简的Lisp语言解释器,实现了闭包,宏等特性。</li>
<li><a target="_blank" rel="noopener" href="https://gitee.com/yanggeorge/simple-socks5">simple-socks5</a> 是一个基于netty的socks5代理。</li>
<li><a target="_blank" rel="noopener" href="https://gitee.com/yanggeorge/scraper">scraper</a> 是一个网页数据采集的工具。</li>
</ul>

</div>
Expand Down
2 changes: 1 addition & 1 deletion page/3/index.html
Original file line number Diff line number Diff line change
Expand Up @@ -306,7 +306,7 @@ <h2 class="post-title" itemprop="name headline">
<i class="far fa-calendar-check"></i>
</span>
<span class="post-meta-item-text">更新于</span>
<time title="修改时间:2022-02-06 17:04:19" itemprop="dateModified" datetime="2022-02-06T17:04:19+08:00">2022-02-06</time>
<time title="修改时间:2023-07-15 16:55:05" itemprop="dateModified" datetime="2023-07-15T16:55:05+08:00">2023-07-15</time>
</span>


Expand Down
Loading

0 comments on commit 9d4aa47

Please sign in to comment.