﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>C++博客-markqian86</title><link>http://www.cppblog.com/markqian86/</link><description>practice makes perfect，阅读、分析、练习、总结。</description><language>zh-cn</language><lastBuildDate>Mon, 06 Apr 2026 00:11:39 GMT</lastBuildDate><pubDate>Mon, 06 Apr 2026 00:11:39 GMT</pubDate><ttl>60</ttl><item><title>Entity Framework学习笔记——EF简介（一篇文章告诉你什么是EF）</title><link>http://www.cppblog.com/markqian86/archive/2021/05/10/217681.html</link><dc:creator>长戟十三千</dc:creator><author>长戟十三千</author><pubDate>Mon, 10 May 2021 03:00:00 GMT</pubDate><guid>http://www.cppblog.com/markqian86/archive/2021/05/10/217681.html</guid><wfw:comment>http://www.cppblog.com/markqian86/comments/217681.html</wfw:comment><comments>http://www.cppblog.com/markqian86/archive/2021/05/10/217681.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/markqian86/comments/commentRss/217681.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/markqian86/services/trackbacks/217681.html</trackback:ping><description><![CDATA[<div>&nbsp;Entity Framework是以ADO.NET为基础，面向数据的&#8220;实体框架&#8221;。以下简称EF。</div><div></div><div></div><div></div><div>&nbsp; &nbsp; &nbsp; &nbsp; 它利用了抽象化数据结构的方式，将每个数据库对象都转换成应用程序对象 (entity)，数据字段都转换为属性 (property)，关系则转换为结合属性 (association)，让数据库的 E/R 模型完全的转成对象模型，如此让程序设计师能用最熟悉的编程语言来调用访问。</div><div></div><div>&nbsp; &nbsp; &nbsp; &nbsp;个人认为百科上对EF一句比较经典的解释为：让上层的应用程序码可以如面向对象的方式般访问数据。&nbsp; &nbsp; &nbsp;</div><div></div><div>&nbsp; &nbsp; &nbsp; &nbsp;过去我们对数据库都是直接读取，业务数据中都是使用DataSet、DataTable等来传值，造成代码丑陋，严重脱离了OO的思想。</div><div></div><div>&nbsp; &nbsp;</div><div></div><div>&nbsp; &nbsp; &nbsp; &nbsp;举个例子，当向数据库中存储时，实体框架主要是用来帮助我们把一个个对象存储到数据库中去（即通过对象与数据库&#8220;打交道&#8221;），只要把对象交给实体框架，不用自己写SQL语句，它会帮助我们自动生成SQL语句，这里生成的SQL语句通过ADO.NET发送到数据库中去，即操作数据库还是通过ADO.NET，所以本文首句说到了&#8220;EF是以ADO.NET为基础，面向数据的&#8216;实体框架&#8217; &#8221;。</div><div></div><div>&nbsp; &nbsp; &nbsp; &nbsp; 具体过程可以用下图表示：</div><div></div><div>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;</div><div></div><div>&nbsp; &nbsp; &nbsp; &nbsp; 如上图，假如要把内存中的两个实体Student和Teacher存储到数据库中，EF会自动将实体通过EDM的映射，将一个实体作为一条记录存入到数据库中去，那EF是如何判断哪个实体应该存到哪张表里，哪个属性应该存到哪个字段里呢？这就是映射的强大所在：</div><div></div><div>&nbsp; &nbsp; &nbsp; &nbsp; 在VisualStudio中，映射通过 .edmx 文件来体现，.edmx文件的本质是一个 XML 文件，它用于定义概念模型、存储模型和这些模型之间的映射。</div><div></div><div>&nbsp; &nbsp; &nbsp; &nbsp; 比如在上例的映射中，可以通过类似于如下形式来体现：</div><div></div><div></div><div>&lt;!-- CSDL 此处表示实体 --&gt;</div><div>&lt;Entity Name="Student"&gt;</div><div>&nbsp; &nbsp; &lt;Pro Name="StuName"&gt;</div><div>&nbsp; &nbsp; &lt;Pro Name="StuSex"&gt;</div><div>&nbsp; &nbsp; &lt;Pro Name="StuAge"&gt;</div><div>&lt;/Entity&gt;</div><div>&nbsp;</div><div>&lt;!-- SSDL 此处表示数据库表 --&gt;</div><div>&lt;Table Name="Student"&gt;</div><div>&nbsp; &nbsp; &lt;Col Name="StuName"&gt;</div><div>&nbsp; &nbsp; &lt;Col Name="StuSex"&gt;</div><div>&nbsp; &nbsp; &lt;Col Name="StuAge"&gt;</div><div>&lt;/Table&gt;</div><div>&nbsp;</div><div>&lt;!-- C-S 此处表示实体与数据库表的映射关系 --&gt;</div><div>&lt;Relation Entity="Student" Table="Student"&gt;</div><div>&nbsp; &nbsp; &lt;Rel ProName="StuName" ColName="StuName"&gt;&nbsp; &lt;!--实体中StuName属性对应表中StuName字段--&gt;</div><div>&nbsp; &nbsp; &lt;Col ProName="StuSex" ColName="StuSex"&gt;&nbsp; &nbsp;&nbsp;</div><div>&nbsp; &nbsp; &lt;Col ProName="StuAge" ColName="StuAge"&gt;</div><div>&lt;/Relation&gt;</div><div>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;上述代码并不是 .edmx文件中的确切格式，此处为了简单说明，读者可以看做是&#8220;伪代码&#8221;，后面将会简单介绍 .edmx 文件创建和基本格式。</div><div></div><div></div><div>&nbsp; &nbsp; &nbsp; &nbsp; 通过上面可以了解到，从读代码的角度来说，EF可以使我们在不需要了解数据结构的情况下就可以很好地理解；从实现的角度来说，EF可以使存储&#8220;模型化&#8221;，就如同将很多个对象存储在一个List中似的，向数据库表里存储的都是一个个实例，从数据库中取到的也都是一个个实例。程序如此跟数据库的交互，和OO化的代码相互对应，容易&#8220;对接&#8221;。</div><div>&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;</div><div>版权声明：本文为CSDN博主「dannyhoo6688」的原创文章，遵循CC 4.0 BY-SA版权协议，转载请附上原文出处链接及本声明。</div><div>原文链接：https://blog.csdn.net/huyuyang6688/article/details/41526763</div><img src ="http://www.cppblog.com/markqian86/aggbug/217681.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/markqian86/" target="_blank">长戟十三千</a> 2021-05-10 11:00 <a href="http://www.cppblog.com/markqian86/archive/2021/05/10/217681.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Linux curl命令详解</title><link>http://www.cppblog.com/markqian86/archive/2021/04/15/217660.html</link><dc:creator>长戟十三千</dc:creator><author>长戟十三千</author><pubDate>Thu, 15 Apr 2021 02:37:00 GMT</pubDate><guid>http://www.cppblog.com/markqian86/archive/2021/04/15/217660.html</guid><wfw:comment>http://www.cppblog.com/markqian86/comments/217660.html</wfw:comment><comments>http://www.cppblog.com/markqian86/archive/2021/04/15/217660.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/markqian86/comments/commentRss/217660.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/markqian86/services/trackbacks/217660.html</trackback:ping><description><![CDATA[<h2>命令：curl</h2><p style="margin-top: 10px; margin-bottom: 10px; padding: 0px; color: #333333; font-family: &quot;PingFang SC&quot;, &quot;Microsoft YaHei&quot;, &quot;Helvetica Neue&quot;, Helvetica, Arial, sans-serif; background-color: #ffffff;">在Linux中curl是一个利用URL规则在命令行下工作的文件传输工具，可以说是一款很强大的http命令行工具。它支持文件的上传和下载，是综合传输工具，但按传统，习惯称url为下载工具。</p><div style="margin: 5px 0px; font-size: 12px !important;"><pre style="margin-top: 0px; margin-bottom: 0px; padding: 0px; overflow: auto; overflow-wrap: break-word; white-space: pre-wrap; font-family: &quot;Courier New&quot; !important;">语法：# curl [option] [url]</pre></div><p style="margin-top: 10px; margin-bottom: 10px; padding: 0px; color: #333333; font-family: &quot;PingFang SC&quot;, &quot;Microsoft YaHei&quot;, &quot;Helvetica Neue&quot;, Helvetica, Arial, sans-serif; background-color: #ffffff;">常见参数：</p><div style="margin: 5px 0px; font-size: 12px !important;"><div style="margin: 5px 0px 0px;"><span style="margin: 0px; padding: 0px 5px 0px 0px; line-height: 1.5 !important;"><a title="复制代码" style="margin: 0px; padding: 0px; text-decoration-line: underline; border: none !important;"><img src="https://common.cnblogs.com/images/copycode.gif" alt="复制代码" style="margin: 0px; padding: 0px; max-width: 800px; height: auto; border: none !important;" /></a></span></div><pre style="margin-top: 0px; margin-bottom: 0px; padding: 0px; overflow: auto; overflow-wrap: break-word; white-space: pre-wrap; font-family: &quot;Courier New&quot; !important;">-A/--user-agent &lt;string&gt;<span style="margin: 0px; padding: 0px; line-height: 1.5 !important;">              设置用户代理发送给服务器 </span>-b/--cookie &lt;name=string/file&gt;<span style="margin: 0px; padding: 0px; line-height: 1.5 !important;">    cookie字符串或文件读取位置 </span>-c/--cookie-jar &lt;file&gt;<span style="margin: 0px; padding: 0px; line-height: 1.5 !important;">                    操作结束后把cookie写入到这个文件中 </span>-C/--<span style="margin: 0px; padding: 0px; color: #0000ff; line-height: 1.5 !important;">continue</span>-at &lt;offset&gt;<span style="margin: 0px; padding: 0px; line-height: 1.5 !important;">            断点续转 </span>-D/--dump-header &lt;file&gt;<span style="margin: 0px; padding: 0px; line-height: 1.5 !important;">              把header信息写入到该文件中 </span>-e/--<span style="margin: 0px; padding: 0px; line-height: 1.5 !important;">referer                                  来源网址 </span>-f/--<span style="margin: 0px; padding: 0px; line-height: 1.5 !important;">fail                                          连接失败时不显示http错误 </span>-o/--<span style="margin: 0px; padding: 0px; line-height: 1.5 !important;">output                                  把输出写到该文件中 </span>-O/--remote-<span style="margin: 0px; padding: 0px; line-height: 1.5 !important;">name                      把输出写到该文件中，保留远程文件的文件名 </span>-r/--range &lt;range&gt;                      检索来自HTTP/1<span style="margin: 0px; padding: 0px; line-height: 1.5 !important;">.1或FTP服务器字节范围 </span>-s/--<span style="margin: 0px; padding: 0px; line-height: 1.5 !important;">silent                                    静音模式。不输出任何东西 </span>-T/--upload-file &lt;file&gt;<span style="margin: 0px; padding: 0px; line-height: 1.5 !important;">                  上传文件 </span>-u/--user &lt;user[:password]&gt;<span style="margin: 0px; padding: 0px; line-height: 1.5 !important;">      设置服务器的用户和密码 </span>-w/--write-<span style="margin: 0px; padding: 0px; line-height: 1.5 !important;">out [format]                什么输出完成后 </span>-x/--proxy &lt;host[:port]&gt;<span style="margin: 0px; padding: 0px; line-height: 1.5 !important;">              在给定的端口上使用HTTP代理 </span>-#/--progress-bar                        进度条显示当前的传送状态</pre><div style="margin: 5px 0px 0px;"><span style="margin: 0px; padding: 0px 5px 0px 0px; line-height: 1.5 !important;"><a title="复制代码" style="margin: 0px; padding: 0px; text-decoration-line: underline; border: none !important;"><img src="https://common.cnblogs.com/images/copycode.gif" alt="复制代码" style="margin: 0px; padding: 0px; max-width: 800px; height: auto; border: none !important;" /></a></span></div></div><p style="margin-top: 10px; margin-bottom: 10px; padding: 0px; color: #333333; font-family: &quot;PingFang SC&quot;, &quot;Microsoft YaHei&quot;, &quot;Helvetica Neue&quot;, Helvetica, Arial, sans-serif; background-color: #ffffff;">例子：<br style="margin: 0px; padding: 0px;" />1、基本用法</p><div style="margin: 5px 0px; font-size: 12px !important;"><pre style="margin-top: 0px; margin-bottom: 0px; padding: 0px; overflow: auto; overflow-wrap: break-word; white-space: pre-wrap; font-family: &quot;Courier New&quot; !important;"># curl http:<span style="margin: 0px; padding: 0px; color: #008000; line-height: 1.5 !important;">//</span><span style="margin: 0px; padding: 0px; color: #008000; line-height: 1.5 !important;">www.linux.com</span></pre></div><p style="margin-top: 10px; margin-bottom: 10px; padding: 0px; color: #333333; font-family: &quot;PingFang SC&quot;, &quot;Microsoft YaHei&quot;, &quot;Helvetica Neue&quot;, Helvetica, Arial, sans-serif; background-color: #ffffff;">执行后，www.linux.com 的html就会显示在屏幕上了<br style="margin: 0px; padding: 0px;" />Ps：由于安装linux的时候很多时候是没有安装桌面的，也意味着没有浏览器，因此这个方法也经常用于测试一台服务器是否可以到达一个网站</p><p style="margin-top: 10px; margin-bottom: 10px; padding: 0px; color: #333333; font-family: &quot;PingFang SC&quot;, &quot;Microsoft YaHei&quot;, &quot;Helvetica Neue&quot;, Helvetica, Arial, sans-serif; background-color: #ffffff;">2、保存访问的网页<br style="margin: 0px; padding: 0px;" />2.1:使用linux的重定向功能保存</p><div style="margin: 5px 0px; font-size: 12px !important;"><pre style="margin-top: 0px; margin-bottom: 0px; padding: 0px; overflow: auto; overflow-wrap: break-word; white-space: pre-wrap; font-family: &quot;Courier New&quot; !important;"># curl http:<span style="margin: 0px; padding: 0px; color: #008000; line-height: 1.5 !important;">//</span><span style="margin: 0px; padding: 0px; color: #008000; line-height: 1.5 !important;">www.linux.com &gt;&gt; linux.html</span></pre></div><p style="margin-top: 10px; margin-bottom: 10px; padding: 0px; color: #333333; font-family: &quot;PingFang SC&quot;, &quot;Microsoft YaHei&quot;, &quot;Helvetica Neue&quot;, Helvetica, Arial, sans-serif; background-color: #ffffff;">2.2:可以使用curl的内置option:-o(小写)保存网页</p><div style="margin: 5px 0px; font-size: 12px !important;"><pre style="margin-top: 0px; margin-bottom: 0px; padding: 0px; overflow: auto; overflow-wrap: break-word; white-space: pre-wrap; font-family: &quot;Courier New&quot; !important;">$ curl -o linux.html http:<span style="margin: 0px; padding: 0px; color: #008000; line-height: 1.5 !important;">//</span><span style="margin: 0px; padding: 0px; color: #008000; line-height: 1.5 !important;">www.linux.com</span></pre></div><p style="margin-top: 10px; margin-bottom: 10px; padding: 0px; color: #333333; font-family: &quot;PingFang SC&quot;, &quot;Microsoft YaHei&quot;, &quot;Helvetica Neue&quot;, Helvetica, Arial, sans-serif; background-color: #ffffff;">执行完成后会显示如下界面，显示100%则表示保存成功</p><div style="margin: 5px 0px; font-size: 12px !important;"><pre style="margin-top: 0px; margin-bottom: 0px; padding: 0px; overflow: auto; overflow-wrap: break-word; white-space: pre-wrap; font-family: &quot;Courier New&quot; !important;">% Total    % Received %<span style="margin: 0px; padding: 0px; line-height: 1.5 !important;"> Xferd  Average Speed  Time    Time    Time  Current                                 Dload  Upload  Total  Spent    Left  Speed </span>100 79684    0 79684    0    0  3437k      0 --:--:-- --:--:-- --:--:-- 7781k</pre></div><p style="margin-top: 10px; margin-bottom: 10px; padding: 0px; color: #333333; font-family: &quot;PingFang SC&quot;, &quot;Microsoft YaHei&quot;, &quot;Helvetica Neue&quot;, Helvetica, Arial, sans-serif; background-color: #ffffff;">2.3:可以使用curl的内置option:-O(大写)保存网页中的文件<br style="margin: 0px; padding: 0px;" />要注意这里后面的url要具体到某个文件，不然抓不下来</p><div style="margin: 5px 0px; font-size: 12px !important;"><pre style="margin-top: 0px; margin-bottom: 0px; padding: 0px; overflow: auto; overflow-wrap: break-word; white-space: pre-wrap; font-family: &quot;Courier New&quot; !important;"># curl -O http:<span style="margin: 0px; padding: 0px; color: #008000; line-height: 1.5 !important;">//</span><span style="margin: 0px; padding: 0px; color: #008000; line-height: 1.5 !important;">www.linux.com/hello.sh</span></pre></div><p style="margin-top: 10px; margin-bottom: 10px; padding: 0px; color: #333333; font-family: &quot;PingFang SC&quot;, &quot;Microsoft YaHei&quot;, &quot;Helvetica Neue&quot;, Helvetica, Arial, sans-serif; background-color: #ffffff;">3、测试网页返回值</p><div style="margin: 5px 0px; font-size: 12px !important;"><pre style="margin-top: 0px; margin-bottom: 0px; padding: 0px; overflow: auto; overflow-wrap: break-word; white-space: pre-wrap; font-family: &quot;Courier New&quot; !important;"># curl -o /dev/<span style="margin: 0px; padding: 0px; color: #0000ff; line-height: 1.5 !important;">null</span> -s -w %{http_code} www.linux.com</pre></div><p style="margin-top: 10px; margin-bottom: 10px; padding: 0px; color: #333333; font-family: &quot;PingFang SC&quot;, &quot;Microsoft YaHei&quot;, &quot;Helvetica Neue&quot;, Helvetica, Arial, sans-serif; background-color: #ffffff;">Ps:在脚本中，这是很常见的测试网站是否正常的用法</p><p style="margin-top: 10px; margin-bottom: 10px; padding: 0px; color: #333333; font-family: &quot;PingFang SC&quot;, &quot;Microsoft YaHei&quot;, &quot;Helvetica Neue&quot;, Helvetica, Arial, sans-serif; background-color: #ffffff;">4、指定proxy服务器以及其端口<br style="margin: 0px; padding: 0px;" />很多时候上网需要用到代理服务器(比如是使用代理服务器上网或者因为使用curl别人网站而被别人屏蔽IP地址的时候)，幸运的是curl通过使用内置option：-x来支持设置代理</p><div style="margin: 5px 0px; font-size: 12px !important;"><pre style="margin-top: 0px; margin-bottom: 0px; padding: 0px; overflow: auto; overflow-wrap: break-word; white-space: pre-wrap; font-family: &quot;Courier New&quot; !important;"># curl -x 192.168.100.100:1080 http:<span style="margin: 0px; padding: 0px; color: #008000; line-height: 1.5 !important;">//</span><span style="margin: 0px; padding: 0px; color: #008000; line-height: 1.5 !important;">www.linux.com</span></pre></div><p style="margin-top: 10px; margin-bottom: 10px; padding: 0px; color: #333333; font-family: &quot;PingFang SC&quot;, &quot;Microsoft YaHei&quot;, &quot;Helvetica Neue&quot;, Helvetica, Arial, sans-serif; background-color: #ffffff;">5、cookie<br style="margin: 0px; padding: 0px;" />有些网站是使用cookie来记录session信息。对于chrome这样的浏览器，可以轻易处理cookie信息，但在curl中只要增加相关参数也是可以很容易的处理cookie<br style="margin: 0px; padding: 0px;" />5.1:保存http的response里面的cookie信息。内置option:-c（小写）</p><div style="margin: 5px 0px; font-size: 12px !important;"><pre style="margin-top: 0px; margin-bottom: 0px; padding: 0px; overflow: auto; overflow-wrap: break-word; white-space: pre-wrap; font-family: &quot;Courier New&quot; !important;"># curl -c cookiec.txt  http:<span style="margin: 0px; padding: 0px; color: #008000; line-height: 1.5 !important;">//</span><span style="margin: 0px; padding: 0px; color: #008000; line-height: 1.5 !important;">www.linux.com</span></pre></div><p style="margin-top: 10px; margin-bottom: 10px; padding: 0px; color: #333333; font-family: &quot;PingFang SC&quot;, &quot;Microsoft YaHei&quot;, &quot;Helvetica Neue&quot;, Helvetica, Arial, sans-serif; background-color: #ffffff;">执行后cookie信息就被存到了cookiec.txt里面了</p><p style="margin-top: 10px; margin-bottom: 10px; padding: 0px; color: #333333; font-family: &quot;PingFang SC&quot;, &quot;Microsoft YaHei&quot;, &quot;Helvetica Neue&quot;, Helvetica, Arial, sans-serif; background-color: #ffffff;">5.2:保存http的response里面的header信息。内置option: -D</p><div style="margin: 5px 0px; font-size: 12px !important;"><pre style="margin-top: 0px; margin-bottom: 0px; padding: 0px; overflow: auto; overflow-wrap: break-word; white-space: pre-wrap; font-family: &quot;Courier New&quot; !important;"># curl -D cookied.txt http:<span style="margin: 0px; padding: 0px; color: #008000; line-height: 1.5 !important;">//</span><span style="margin: 0px; padding: 0px; color: #008000; line-height: 1.5 !important;">www.linux.com</span></pre></div><p style="margin-top: 10px; margin-bottom: 10px; padding: 0px; color: #333333; font-family: &quot;PingFang SC&quot;, &quot;Microsoft YaHei&quot;, &quot;Helvetica Neue&quot;, Helvetica, Arial, sans-serif; background-color: #ffffff;">执行后cookie信息就被存到了cookied.txt里面了</p><p style="margin-top: 10px; margin-bottom: 10px; padding: 0px; color: #333333; font-family: &quot;PingFang SC&quot;, &quot;Microsoft YaHei&quot;, &quot;Helvetica Neue&quot;, Helvetica, Arial, sans-serif; background-color: #ffffff;">注意：-c(小写)产生的cookie和-D里面的cookie是不一样的。</p><p style="margin-top: 10px; margin-bottom: 10px; padding: 0px; color: #333333; font-family: &quot;PingFang SC&quot;, &quot;Microsoft YaHei&quot;, &quot;Helvetica Neue&quot;, Helvetica, Arial, sans-serif; background-color: #ffffff;"><br style="margin: 0px; padding: 0px;" />5.3:使用cookie<br style="margin: 0px; padding: 0px;" />很多网站都是通过监视你的cookie信息来判断你是否按规矩访问他们的网站的，因此我们需要使用保存的cookie信息。内置option: -b</p><div style="margin: 5px 0px; font-size: 12px !important;"><pre style="margin-top: 0px; margin-bottom: 0px; padding: 0px; overflow: auto; overflow-wrap: break-word; white-space: pre-wrap; font-family: &quot;Courier New&quot; !important;"># curl -b cookiec.txt http:<span style="margin: 0px; padding: 0px; color: #008000; line-height: 1.5 !important;">//</span><span style="margin: 0px; padding: 0px; color: #008000; line-height: 1.5 !important;">www.linux.com</span></pre></div><p style="margin-top: 10px; margin-bottom: 10px; padding: 0px; color: #333333; font-family: &quot;PingFang SC&quot;, &quot;Microsoft YaHei&quot;, &quot;Helvetica Neue&quot;, Helvetica, Arial, sans-serif; background-color: #ffffff;">6、模仿浏览器<br style="margin: 0px; padding: 0px;" />有些网站需要使用特定的浏览器去访问他们，有些还需要使用某些特定的版本。curl内置option:-A可以让我们指定浏览器去访问网站</p><div style="margin: 5px 0px; font-size: 12px !important;"><pre style="margin-top: 0px; margin-bottom: 0px; padding: 0px; overflow: auto; overflow-wrap: break-word; white-space: pre-wrap; font-family: &quot;Courier New&quot; !important;"># curl -A "Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.0)" http:<span style="margin: 0px; padding: 0px; color: #008000; line-height: 1.5 !important;">//</span><span style="margin: 0px; padding: 0px; color: #008000; line-height: 1.5 !important;">www.linux.com</span></pre></div><p style="margin-top: 10px; margin-bottom: 10px; padding: 0px; color: #333333; font-family: &quot;PingFang SC&quot;, &quot;Microsoft YaHei&quot;, &quot;Helvetica Neue&quot;, Helvetica, Arial, sans-serif; background-color: #ffffff;">这样服务器端就会认为是使用IE8.0去访问的</p><p style="margin-top: 10px; margin-bottom: 10px; padding: 0px; color: #333333; font-family: &quot;PingFang SC&quot;, &quot;Microsoft YaHei&quot;, &quot;Helvetica Neue&quot;, Helvetica, Arial, sans-serif; background-color: #ffffff;">7、伪造referer（盗链）<br style="margin: 0px; padding: 0px;" />很多服务器会检查http访问的referer从而来控制访问。比如：你是先访问首页，然后再访问首页中的邮箱页面，这里访问邮箱的referer地址就是访问首页成功后的页面地址，如果服务器发现对邮箱页面访问的referer地址不是首页的地址，就断定那是个盗连了<br style="margin: 0px; padding: 0px;" />curl中内置option：-e可以让我们设定referer</p><div style="margin: 5px 0px; font-size: 12px !important;"><pre style="margin-top: 0px; margin-bottom: 0px; padding: 0px; overflow: auto; overflow-wrap: break-word; white-space: pre-wrap; font-family: &quot;Courier New&quot; !important;"># curl -e "www.linux.com" http:<span style="margin: 0px; padding: 0px; color: #008000; line-height: 1.5 !important;">//</span><span style="margin: 0px; padding: 0px; color: #008000; line-height: 1.5 !important;">mail.linux.com</span></pre></div><p style="margin-top: 10px; margin-bottom: 10px; padding: 0px; color: #333333; font-family: &quot;PingFang SC&quot;, &quot;Microsoft YaHei&quot;, &quot;Helvetica Neue&quot;, Helvetica, Arial, sans-serif; background-color: #ffffff;">这样就会让服务器其以为你是从www.linux.com点击某个链接过来的</p><p style="margin-top: 10px; margin-bottom: 10px; padding: 0px; color: #333333; font-family: &quot;PingFang SC&quot;, &quot;Microsoft YaHei&quot;, &quot;Helvetica Neue&quot;, Helvetica, Arial, sans-serif; background-color: #ffffff;">8、下载文件<br style="margin: 0px; padding: 0px;" />8.1：利用curl下载文件。<br style="margin: 0px; padding: 0px;" />#使用内置option：-o(小写)</p><div style="margin: 5px 0px; font-size: 12px !important;"><pre style="margin-top: 0px; margin-bottom: 0px; padding: 0px; overflow: auto; overflow-wrap: break-word; white-space: pre-wrap; font-family: &quot;Courier New&quot; !important;"># curl -o dodo1.jpg http:www.linux.com/dodo1.JPG</pre></div><p style="margin-top: 10px; margin-bottom: 10px; padding: 0px; color: #333333; font-family: &quot;PingFang SC&quot;, &quot;Microsoft YaHei&quot;, &quot;Helvetica Neue&quot;, Helvetica, Arial, sans-serif; background-color: #ffffff;">#使用内置option：-O（大写)</p><div style="margin: 5px 0px; font-size: 12px !important;"><pre style="margin-top: 0px; margin-bottom: 0px; padding: 0px; overflow: auto; overflow-wrap: break-word; white-space: pre-wrap; font-family: &quot;Courier New&quot; !important;"># curl -O http:<span style="margin: 0px; padding: 0px; color: #008000; line-height: 1.5 !important;">//</span><span style="margin: 0px; padding: 0px; color: #008000; line-height: 1.5 !important;">www.linux.com/dodo1.JPG</span></pre></div><p style="margin-top: 10px; margin-bottom: 10px; padding: 0px; color: #333333; font-family: &quot;PingFang SC&quot;, &quot;Microsoft YaHei&quot;, &quot;Helvetica Neue&quot;, Helvetica, Arial, sans-serif; background-color: #ffffff;">这样就会以服务器上的名称保存文件到本地</p><p style="margin-top: 10px; margin-bottom: 10px; padding: 0px; color: #333333; font-family: &quot;PingFang SC&quot;, &quot;Microsoft YaHei&quot;, &quot;Helvetica Neue&quot;, Helvetica, Arial, sans-serif; background-color: #ffffff;">8.2：循环下载<br style="margin: 0px; padding: 0px;" />有时候下载图片可以能是前面的部分名称是一样的，就最后的尾椎名不一样</p><div style="margin: 5px 0px; font-size: 12px !important;"><pre style="margin-top: 0px; margin-bottom: 0px; padding: 0px; overflow: auto; overflow-wrap: break-word; white-space: pre-wrap; font-family: &quot;Courier New&quot; !important;"># curl -O http:<span style="margin: 0px; padding: 0px; color: #008000; line-height: 1.5 !important;">//</span><span style="margin: 0px; padding: 0px; color: #008000; line-height: 1.5 !important;">www.linux.com/dodo[1-5].JPG</span></pre></div><p style="margin-top: 10px; margin-bottom: 10px; padding: 0px; color: #333333; font-family: &quot;PingFang SC&quot;, &quot;Microsoft YaHei&quot;, &quot;Helvetica Neue&quot;, Helvetica, Arial, sans-serif; background-color: #ffffff;">这样就会把dodo1，dodo2，dodo3，dodo4，dodo5全部保存下来</p><p style="margin-top: 10px; margin-bottom: 10px; padding: 0px; color: #333333; font-family: &quot;PingFang SC&quot;, &quot;Microsoft YaHei&quot;, &quot;Helvetica Neue&quot;, Helvetica, Arial, sans-serif; background-color: #ffffff;">8.3：下载重命名</p><div style="margin: 5px 0px; font-size: 12px !important;"><pre style="margin-top: 0px; margin-bottom: 0px; padding: 0px; overflow: auto; overflow-wrap: break-word; white-space: pre-wrap; font-family: &quot;Courier New&quot; !important;"># curl -O http:<span style="margin: 0px; padding: 0px; color: #008000; line-height: 1.5 !important;">//</span><span style="margin: 0px; padding: 0px; color: #008000; line-height: 1.5 !important;">www.linux.com/{hello,bb}/dodo[1-5].JPG</span></pre></div><p style="margin-top: 10px; margin-bottom: 10px; padding: 0px; color: #333333; font-family: &quot;PingFang SC&quot;, &quot;Microsoft YaHei&quot;, &quot;Helvetica Neue&quot;, Helvetica, Arial, sans-serif; background-color: #ffffff;">由于下载的hello与bb中的文件名都是dodo1，dodo2，dodo3，dodo4，dodo5。因此第二次下载的会把第一次下载的覆盖，这样就需要对文件进行重命名。</p><div style="margin: 5px 0px; font-size: 12px !important;"><pre style="margin-top: 0px; margin-bottom: 0px; padding: 0px; overflow: auto; overflow-wrap: break-word; white-space: pre-wrap; font-family: &quot;Courier New&quot; !important;"># curl -o #1_#2.JPG http:<span style="margin: 0px; padding: 0px; color: #008000; line-height: 1.5 !important;">//</span><span style="margin: 0px; padding: 0px; color: #008000; line-height: 1.5 !important;">www.linux.com/{hello,bb}/dodo[1-5].JPG</span></pre></div><p style="margin-top: 10px; margin-bottom: 10px; padding: 0px; color: #333333; font-family: &quot;PingFang SC&quot;, &quot;Microsoft YaHei&quot;, &quot;Helvetica Neue&quot;, Helvetica, Arial, sans-serif; background-color: #ffffff;">这样在hello/dodo1.JPG的文件下载下来就会变成hello_dodo1.JPG,其他文件依此类推，从而有效的避免了文件被覆盖</p><p style="margin-top: 10px; margin-bottom: 10px; padding: 0px; color: #333333; font-family: &quot;PingFang SC&quot;, &quot;Microsoft YaHei&quot;, &quot;Helvetica Neue&quot;, Helvetica, Arial, sans-serif; background-color: #ffffff;">8.4：分块下载<br style="margin: 0px; padding: 0px;" />有时候下载的东西会比较大，这个时候我们可以分段下载。使用内置option：-r</p><div style="margin: 5px 0px; font-size: 12px !important;"><pre style="margin-top: 0px; margin-bottom: 0px; padding: 0px; overflow: auto; overflow-wrap: break-word; white-space: pre-wrap; font-family: &quot;Courier New&quot; !important;"># curl -r 0-100 -o dodo1_part1.JPG http:<span style="margin: 0px; padding: 0px; color: #008000; line-height: 1.5 !important;">//</span><span style="margin: 0px; padding: 0px; color: #008000; line-height: 1.5 !important;">www.linux.com/dodo1.JPG</span> # curl -r 100-200 -o dodo1_part2.JPG http:<span style="margin: 0px; padding: 0px; color: #008000; line-height: 1.5 !important;">//</span><span style="margin: 0px; padding: 0px; color: #008000; line-height: 1.5 !important;">www.linux.com/dodo1.JPG</span> # curl -r 200- -o dodo1_part3.JPG http:<span style="margin: 0px; padding: 0px; color: #008000; line-height: 1.5 !important;">//</span><span style="margin: 0px; padding: 0px; color: #008000; line-height: 1.5 !important;">www.linux.com/dodo1.JPG</span> # cat dodo1_part* &gt; dodo1.JPG</pre></div><p style="margin-top: 10px; margin-bottom: 10px; padding: 0px; color: #333333; font-family: &quot;PingFang SC&quot;, &quot;Microsoft YaHei&quot;, &quot;Helvetica Neue&quot;, Helvetica, Arial, sans-serif; background-color: #ffffff;">这样就可以查看dodo1.JPG的内容了</p><p style="margin-top: 10px; margin-bottom: 10px; padding: 0px; color: #333333; font-family: &quot;PingFang SC&quot;, &quot;Microsoft YaHei&quot;, &quot;Helvetica Neue&quot;, Helvetica, Arial, sans-serif; background-color: #ffffff;">8.5：通过ftp下载文件<br style="margin: 0px; padding: 0px;" />curl可以通过ftp下载文件，curl提供两种从ftp中下载的语法</p><div style="margin: 5px 0px; font-size: 12px !important;"><pre style="margin-top: 0px; margin-bottom: 0px; padding: 0px; overflow: auto; overflow-wrap: break-word; white-space: pre-wrap; font-family: &quot;Courier New&quot; !important;"># curl -O -u 用户名:密码 ftp:<span style="margin: 0px; padding: 0px; color: #008000; line-height: 1.5 !important;">//</span><span style="margin: 0px; padding: 0px; color: #008000; line-height: 1.5 !important;">www.linux.com/dodo1.JPG</span> # curl -O ftp:<span style="margin: 0px; padding: 0px; color: #008000; line-height: 1.5 !important;">//</span><span style="margin: 0px; padding: 0px; color: #008000; line-height: 1.5 !important;">用户名:密码@www.linux.com/dodo1.JPG</span></pre></div><p style="margin-top: 10px; margin-bottom: 10px; padding: 0px; color: #333333; font-family: &quot;PingFang SC&quot;, &quot;Microsoft YaHei&quot;, &quot;Helvetica Neue&quot;, Helvetica, Arial, sans-serif; background-color: #ffffff;">8.6：显示下载进度条</p><div style="margin: 5px 0px; font-size: 12px !important;"><pre style="margin-top: 0px; margin-bottom: 0px; padding: 0px; overflow: auto; overflow-wrap: break-word; white-space: pre-wrap; font-family: &quot;Courier New&quot; !important;"># curl -# -O http:<span style="margin: 0px; padding: 0px; color: #008000; line-height: 1.5 !important;">//</span><span style="margin: 0px; padding: 0px; color: #008000; line-height: 1.5 !important;">www.linux.com/dodo1.JPG</span></pre></div><p style="margin-top: 10px; margin-bottom: 10px; padding: 0px; color: #333333; font-family: &quot;PingFang SC&quot;, &quot;Microsoft YaHei&quot;, &quot;Helvetica Neue&quot;, Helvetica, Arial, sans-serif; background-color: #ffffff;">8.7：不会显示下载进度信息</p><div style="margin: 5px 0px; font-size: 12px !important;"><pre style="margin-top: 0px; margin-bottom: 0px; padding: 0px; overflow: auto; overflow-wrap: break-word; white-space: pre-wrap; font-family: &quot;Courier New&quot; !important;"># curl -s -O http:<span style="margin: 0px; padding: 0px; color: #008000; line-height: 1.5 !important;">//</span><span style="margin: 0px; padding: 0px; color: #008000; line-height: 1.5 !important;">www.linux.com/dodo1.JPG</span></pre></div><p style="margin-top: 10px; margin-bottom: 10px; padding: 0px; color: #333333; font-family: &quot;PingFang SC&quot;, &quot;Microsoft YaHei&quot;, &quot;Helvetica Neue&quot;, Helvetica, Arial, sans-serif; background-color: #ffffff;">9、断点续传<br style="margin: 0px; padding: 0px;" />在windows中，我们可以使用迅雷这样的软件进行断点续传。curl可以通过内置option:-C同样可以达到相同的效果<br style="margin: 0px; padding: 0px;" />如果在下载dodo1.JPG的过程中突然掉线了，可以使用以下的方式续传</p><div style="margin: 5px 0px; font-size: 12px !important;"><pre style="margin-top: 0px; margin-bottom: 0px; padding: 0px; overflow: auto; overflow-wrap: break-word; white-space: pre-wrap; font-family: &quot;Courier New&quot; !important;"># curl -C -O http:<span style="margin: 0px; padding: 0px; color: #008000; line-height: 1.5 !important;">//</span><span style="margin: 0px; padding: 0px; color: #008000; line-height: 1.5 !important;">www.linux.com/dodo1.JPG</span></pre></div><p style="margin-top: 10px; margin-bottom: 10px; padding: 0px; color: #333333; font-family: &quot;PingFang SC&quot;, &quot;Microsoft YaHei&quot;, &quot;Helvetica Neue&quot;, Helvetica, Arial, sans-serif; background-color: #ffffff;">10、上传文件<br style="margin: 0px; padding: 0px;" />curl不仅仅可以下载文件，还可以上传文件。通过内置option:-T来实现</p><div style="margin: 5px 0px; font-size: 12px !important;"><pre style="margin-top: 0px; margin-bottom: 0px; padding: 0px; overflow: auto; overflow-wrap: break-word; white-space: pre-wrap; font-family: &quot;Courier New&quot; !important;"># curl -T dodo1.JPG -u 用户名:密码 ftp:<span style="margin: 0px; padding: 0px; color: #008000; line-height: 1.5 !important;">//</span><span style="margin: 0px; padding: 0px; color: #008000; line-height: 1.5 !important;">www.linux.com/img/</span></pre></div><p style="margin-top: 10px; margin-bottom: 10px; padding: 0px; color: #333333; font-family: &quot;PingFang SC&quot;, &quot;Microsoft YaHei&quot;, &quot;Helvetica Neue&quot;, Helvetica, Arial, sans-serif; background-color: #ffffff;">这样就向ftp服务器上传了文件dodo1.JPG</p><p style="margin-top: 10px; margin-bottom: 10px; padding: 0px; color: #333333; font-family: &quot;PingFang SC&quot;, &quot;Microsoft YaHei&quot;, &quot;Helvetica Neue&quot;, Helvetica, Arial, sans-serif; background-color: #ffffff;">11、显示抓取错误</p><div style="margin: 5px 0px; font-size: 12px !important;"><pre style="margin-top: 0px; margin-bottom: 0px; padding: 0px; overflow: auto; overflow-wrap: break-word; white-space: pre-wrap; font-family: &quot;Courier New&quot; !important;"># curl -f http:<span style="margin: 0px; padding: 0px; color: #008000; line-height: 1.5 !important;">//</span><span style="margin: 0px; padding: 0px; color: #008000; line-height: 1.5 !important;">www.linux.com/error</span></pre></div><p style="margin-top: 10px; margin-bottom: 10px; padding: 0px; color: #333333; font-family: &quot;PingFang SC&quot;, &quot;Microsoft YaHei&quot;, &quot;Helvetica Neue&quot;, Helvetica, Arial, sans-serif; background-color: #ffffff;">其他参数(此处翻译为转载)：</p><div style="margin: 5px 0px; font-size: 12px !important;"><div style="margin: 5px 0px 0px;"><span style="margin: 0px; padding: 0px 5px 0px 0px; line-height: 1.5 !important;"><a title="复制代码" style="margin: 0px; padding: 0px; text-decoration-line: underline; border: none !important;"><img src="https://common.cnblogs.com/images/copycode.gif" alt="复制代码" style="margin: 0px; padding: 0px; max-width: 800px; height: auto; border: none !important;" /></a></span></div><pre style="margin-top: 0px; margin-bottom: 0px; padding: 0px; overflow: auto; overflow-wrap: break-word; white-space: pre-wrap; font-family: &quot;Courier New&quot; !important;">-a/--<span style="margin: 0px; padding: 0px; line-height: 1.5 !important;">append                        上传文件时，附加到目标文件 </span>--<span style="margin: 0px; padding: 0px; line-height: 1.5 !important;">anyauth                            可以使用&#8220;任何&#8221;身份验证方法 </span>--<span style="margin: 0px; padding: 0px; line-height: 1.5 !important;">basic                                使用HTTP基本验证 </span>-B/--use-<span style="margin: 0px; padding: 0px; line-height: 1.5 !important;">ascii                      使用ASCII文本传输 </span>-d/--data &lt;data&gt;<span style="margin: 0px; padding: 0px; line-height: 1.5 !important;">                  HTTP POST方式传送数据 </span>--data-ascii &lt;data&gt;<span style="margin: 0px; padding: 0px; line-height: 1.5 !important;">            以ascii的方式post数据 </span>--data-binary &lt;data&gt;<span style="margin: 0px; padding: 0px; line-height: 1.5 !important;">          以二进制的方式post数据 </span>--<span style="margin: 0px; padding: 0px; line-height: 1.5 !important;">negotiate                          使用HTTP身份验证 </span>--<span style="margin: 0px; padding: 0px; line-height: 1.5 !important;">digest                        使用数字身份验证 </span>--disable-<span style="margin: 0px; padding: 0px; line-height: 1.5 !important;">eprt                  禁止使用EPRT或LPRT </span>--disable-<span style="margin: 0px; padding: 0px; line-height: 1.5 !important;">epsv                  禁止使用EPSV </span>--egd-file &lt;file&gt;<span style="margin: 0px; padding: 0px; line-height: 1.5 !important;">              为随机数据(SSL)设置EGD socket路径 </span>--tcp-<span style="margin: 0px; padding: 0px; line-height: 1.5 !important;">nodelay                  使用TCP_NODELAY选项 </span>-E/--cert &lt;cert[:passwd]&gt;<span style="margin: 0px; padding: 0px; line-height: 1.5 !important;">      客户端证书文件和密码 (SSL) </span>--cert-type &lt;type&gt;              证书文件类型 (DER/PEM/<span style="margin: 0px; padding: 0px; line-height: 1.5 !important;">ENG) (SSL) </span>--key &lt;key&gt;<span style="margin: 0px; padding: 0px; line-height: 1.5 !important;">                    私钥文件名 (SSL) </span>--key-type &lt;type&gt;              私钥文件类型 (DER/PEM/<span style="margin: 0px; padding: 0px; line-height: 1.5 !important;">ENG) (SSL) </span>--pass  &lt;pass&gt;<span style="margin: 0px; padding: 0px; line-height: 1.5 !important;">                  私钥密码 (SSL) </span>--engine &lt;eng&gt;                  加密引擎使用 (SSL). "--engine list" <span style="margin: 0px; padding: 0px; color: #0000ff; line-height: 1.5 !important;">for</span><span style="margin: 0px; padding: 0px; line-height: 1.5 !important;"> list </span>--cacert &lt;file&gt;<span style="margin: 0px; padding: 0px; line-height: 1.5 !important;">                CA证书 (SSL) </span>--capath &lt;directory&gt;<span style="margin: 0px; padding: 0px; line-height: 1.5 !important;">            CA目   (made using c_rehash) to verify peer against (SSL) </span>--ciphers &lt;list&gt;<span style="margin: 0px; padding: 0px; line-height: 1.5 !important;">                SSL密码 </span>--<span style="margin: 0px; padding: 0px; line-height: 1.5 !important;">compressed                    要求返回是压缩的形势 (using deflate or gzip) </span>--connect-timeout &lt;seconds&gt;<span style="margin: 0px; padding: 0px; line-height: 1.5 !important;">    设置最大请求时间 </span>--create-<span style="margin: 0px; padding: 0px; line-height: 1.5 !important;">dirs                  建立本地目录的目录层次结构 </span>--<span style="margin: 0px; padding: 0px; line-height: 1.5 !important;">crlf                          上传是把LF转变成CRLF </span>--ftp-create-<span style="margin: 0px; padding: 0px; line-height: 1.5 !important;">dirs              如果远程目录不存在，创建远程目录 </span>--ftp-method [multicwd/nocwd/<span style="margin: 0px; padding: 0px; line-height: 1.5 !important;">singlecwd]    控制CWD的使用 </span>--ftp-pasv                      使用 PASV/<span style="margin: 0px; padding: 0px; line-height: 1.5 !important;">EPSV 代替端口 </span>--ftp-skip-pasv-<span style="margin: 0px; padding: 0px; line-height: 1.5 !important;">ip              使用PASV的时候,忽略该IP地址 </span>--ftp-ssl                      尝试用 SSL/<span style="margin: 0px; padding: 0px; line-height: 1.5 !important;">TLS 来进行ftp数据传输 </span>--ftp-ssl-reqd                  要求用 SSL/<span style="margin: 0px; padding: 0px; line-height: 1.5 !important;">TLS 来进行ftp数据传输 </span>-F/--form &lt;name=content&gt;<span style="margin: 0px; padding: 0px; line-height: 1.5 !important;">        模拟http表单提交数据 </span>-form-string &lt;name=string&gt;<span style="margin: 0px; padding: 0px; line-height: 1.5 !important;">      模拟http表单提交数据 </span>-g/--<span style="margin: 0px; padding: 0px; line-height: 1.5 !important;">globoff                    禁用网址序列和范围使用{}和[] </span>-G/--<span style="margin: 0px; padding: 0px; line-height: 1.5 !important;">get                        以get的方式来发送数据 </span>-h/--<span style="margin: 0px; padding: 0px; line-height: 1.5 !important;">help                      帮助 </span>-H/--header &lt;line&gt;<span style="margin: 0px; padding: 0px; line-height: 1.5 !important;">              自定义头信息传递给服务器 </span>--ignore-content-<span style="margin: 0px; padding: 0px; line-height: 1.5 !important;">length        忽略的HTTP头信息的长度 </span>-i/--<span style="margin: 0px; padding: 0px; line-height: 1.5 !important;">include                    输出时包括protocol头信息 </span>-I/--<span style="margin: 0px; padding: 0px; line-height: 1.5 !important;">head                      只显示文档信息 </span>-j/--junk-session-<span style="margin: 0px; padding: 0px; line-height: 1.5 !important;">cookies      读取文件时忽略session cookie </span>--<span style="margin: 0px; padding: 0px; color: #0000ff; line-height: 1.5 !important;">interface</span> &lt;<span style="margin: 0px; padding: 0px; color: #0000ff; line-height: 1.5 !important;">interface</span>&gt;        使用指定网络接口/<span style="margin: 0px; padding: 0px; line-height: 1.5 !important;">地址 </span>--krb4 &lt;level&gt;<span style="margin: 0px; padding: 0px; line-height: 1.5 !important;">                  使用指定安全级别的krb4 </span>-k/--<span style="margin: 0px; padding: 0px; line-height: 1.5 !important;">insecure                  允许不使用证书到SSL站点 </span>-K/--<span style="margin: 0px; padding: 0px; line-height: 1.5 !important;">config                    指定的配置文件读取 </span>-l/--list-<span style="margin: 0px; padding: 0px; line-height: 1.5 !important;">only                  列出ftp目录下的文件名称 </span>--limit-rate &lt;rate&gt;<span style="margin: 0px; padding: 0px; line-height: 1.5 !important;">            设置传输速度 </span>--local-port&lt;NUM&gt;<span style="margin: 0px; padding: 0px; line-height: 1.5 !important;">              强制使用本地端口号 </span>-m/--max-time &lt;seconds&gt;<span style="margin: 0px; padding: 0px; line-height: 1.5 !important;">        设置最大传输时间 </span>--max-redirs &lt;num&gt;<span style="margin: 0px; padding: 0px; line-height: 1.5 !important;">              设置最大读取的目录数 </span>--max-filesize &lt;bytes&gt;<span style="margin: 0px; padding: 0px; line-height: 1.5 !important;">          设置最大下载的文件总量 </span>-M/--<span style="margin: 0px; padding: 0px; line-height: 1.5 !important;">manual                    显示全手动 </span>-n/--<span style="margin: 0px; padding: 0px; line-height: 1.5 !important;">netrc                      从netrc文件中读取用户名和密码 </span>--netrc-optional                使用 .netrc 或者 URL来覆盖-<span style="margin: 0px; padding: 0px; line-height: 1.5 !important;">n </span>--<span style="margin: 0px; padding: 0px; line-height: 1.5 !important;">ntlm                          使用 HTTP NTLM 身份验证 </span>-N/--no-<span style="margin: 0px; padding: 0px; line-height: 1.5 !important;">buffer                  禁用缓冲输出 </span>-p/--<span style="margin: 0px; padding: 0px; line-height: 1.5 !important;">proxytunnel                使用HTTP代理 </span>--proxy-<span style="margin: 0px; padding: 0px; line-height: 1.5 !important;">anyauth                选择任一代理身份验证方法 </span>--proxy-<span style="margin: 0px; padding: 0px; line-height: 1.5 !important;">basic                  在代理上使用基本身份验证 </span>--proxy-<span style="margin: 0px; padding: 0px; line-height: 1.5 !important;">digest                  在代理上使用数字身份验证 </span>--proxy-<span style="margin: 0px; padding: 0px; line-height: 1.5 !important;">ntlm                    在代理上使用ntlm身份验证 </span>-P/--ftp-port &lt;address&gt;<span style="margin: 0px; padding: 0px; line-height: 1.5 !important;">        使用端口地址，而不是使用PASV </span>-Q/--quote &lt;cmd&gt;<span style="margin: 0px; padding: 0px; line-height: 1.5 !important;">                文件传输前，发送命令到服务器 </span>--range-<span style="margin: 0px; padding: 0px; line-height: 1.5 !important;">file                    读取（SSL）的随机文件 </span>-R/--remote-<span style="margin: 0px; padding: 0px; line-height: 1.5 !important;">time                在本地生成文件时，保留远程文件时间 </span>--retry &lt;num&gt;<span style="margin: 0px; padding: 0px; line-height: 1.5 !important;">                  传输出现问题时，重试的次数 </span>--retry-delay &lt;seconds&gt;<span style="margin: 0px; padding: 0px; line-height: 1.5 !important;">        传输出现问题时，设置重试间隔时间 </span>--retry-max-time &lt;seconds&gt;<span style="margin: 0px; padding: 0px; line-height: 1.5 !important;">      传输出现问题时，设置最大重试时间 </span>-S/--show-<span style="margin: 0px; padding: 0px; line-height: 1.5 !important;">error                显示错误 </span>--socks4 &lt;host[:port]&gt;<span style="margin: 0px; padding: 0px; line-height: 1.5 !important;">          用socks4代理给定主机和端口 </span>--socks5 &lt;host[:port]&gt;<span style="margin: 0px; padding: 0px; line-height: 1.5 !important;">          用socks5代理给定主机和端口 </span>-t/--telnet-option &lt;OPT=val&gt;<span style="margin: 0px; padding: 0px; line-height: 1.5 !important;">    Telnet选项设置 </span>--trace &lt;file&gt;<span style="margin: 0px; padding: 0px; line-height: 1.5 !important;">                  对指定文件进行debug </span>--trace-ascii &lt;file&gt;            Like --<span style="margin: 0px; padding: 0px; line-height: 1.5 !important;">跟踪但没有hex输出 </span>--trace-time                    跟踪/<span style="margin: 0px; padding: 0px; line-height: 1.5 !important;">详细输出时，添加时间戳 </span>--url &lt;URL&gt;<span style="margin: 0px; padding: 0px; line-height: 1.5 !important;">                    Spet URL to work with </span>-U/--proxy-user &lt;user[:password]&gt;<span style="margin: 0px; padding: 0px; line-height: 1.5 !important;">  设置代理用户名和密码 </span>-V/--<span style="margin: 0px; padding: 0px; line-height: 1.5 !important;">version                    显示版本信息 </span>-X/--request &lt;command&gt;<span style="margin: 0px; padding: 0px; line-height: 1.5 !important;">          指定什么命令 </span>-y/--speed-<span style="margin: 0px; padding: 0px; line-height: 1.5 !important;">time                放弃限速所要的时间。默认为30 </span>-Y/--speed-limit                停止传输速度的限制，速度时间'秒 -z/--time-<span style="margin: 0px; padding: 0px; line-height: 1.5 !important;">cond                  传送时间设置 </span>-0/--http1.0                    使用HTTP 1.0 -1/--<span style="margin: 0px; padding: 0px; line-height: 1.5 !important;">tlsv1                      使用TLSv1（SSL） </span>-2/--<span style="margin: 0px; padding: 0px; line-height: 1.5 !important;">sslv2                      使用SSLv2的（SSL） </span>-3/--<span style="margin: 0px; padding: 0px; line-height: 1.5 !important;">sslv3                      使用的SSLv3（SSL） </span>--3p-quote                      like -Q <span style="margin: 0px; padding: 0px; color: #0000ff; line-height: 1.5 !important;">for</span> the source URL <span style="margin: 0px; padding: 0px; color: #0000ff; line-height: 1.5 !important;">for</span><span style="margin: 0px; padding: 0px; line-height: 1.5 !important;"> 3rd party transfer </span>--3p-<span style="margin: 0px; padding: 0px; line-height: 1.5 !important;">url                        使用url，进行第三方传送 </span>--3p-<span style="margin: 0px; padding: 0px; line-height: 1.5 !important;">user                      使用用户名和密码，进行第三方传送 </span>-4/--<span style="margin: 0px; padding: 0px; line-height: 1.5 !important;">ipv4                      使用IP4 </span>-6/--ipv6                      使用IP6</pre><div style="margin: 5px 0px 0px;"><span style="margin: 0px; padding: 0px 5px 0px 0px; line-height: 1.5 !important;"><a title="复制代码" style="margin: 0px; padding: 0px; text-decoration-line: underline; border: none !important;"><img src="https://common.cnblogs.com/images/copycode.gif" alt="复制代码" style="margin: 0px; padding: 0px; max-width: 800px; height: auto; border: none !important;" /></a></span></div></div><p style="margin-top: 10px; margin-bottom: 10px; padding: 0px; color: #333333; font-family: &quot;PingFang SC&quot;, &quot;Microsoft YaHei&quot;, &quot;Helvetica Neue&quot;, Helvetica, Arial, sans-serif; background-color: #ffffff;">转自：http://www.linuxdiyf.com/linux/2800.html</p><img src ="http://www.cppblog.com/markqian86/aggbug/217660.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/markqian86/" target="_blank">长戟十三千</a> 2021-04-15 10:37 <a href="http://www.cppblog.com/markqian86/archive/2021/04/15/217660.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>6边形网格地图，格子间的距离计算</title><link>http://www.cppblog.com/markqian86/archive/2021/03/25/217638.html</link><dc:creator>长戟十三千</dc:creator><author>长戟十三千</author><pubDate>Thu, 25 Mar 2021 04:20:00 GMT</pubDate><guid>http://www.cppblog.com/markqian86/archive/2021/03/25/217638.html</guid><wfw:comment>http://www.cppblog.com/markqian86/comments/217638.html</wfw:comment><comments>http://www.cppblog.com/markqian86/archive/2021/03/25/217638.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/markqian86/comments/commentRss/217638.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/markqian86/services/trackbacks/217638.html</trackback:ping><description><![CDATA[<div id="user-center-top" style="box-sizing: border-box; background-color: #ffffff; border-bottom: 1px solid #dddddd; color: #555555; font-family: &quot;PingFang SC&quot;, &quot;Lantinghei SC&quot;, OpenSans-Light, Arial, &quot;Hiragino Sans GB&quot;, &quot;Microsoft YaHei&quot;, STHeiti, &quot;WenQuanYi Micro Hei&quot;, SimSun, sans-serif;"><div user-names"="" style="box-sizing: border-box; float: left; position: relative; min-height: 1px; padding-top: 10px; padding-right: 10px; padding-left: 30px; width: 825px;"><h3>6边形网格地图，格子间的距离计算</h3></div><div style="box-sizing: border-box;"></div></div><div style="box-sizing: border-box; background-color: #ffffff; padding-bottom: 10px; color: #555555; font-family: &quot;PingFang SC&quot;, &quot;Lantinghei SC&quot;, OpenSans-Light, Arial, &quot;Hiragino Sans GB&quot;, &quot;Microsoft YaHei&quot;, STHeiti, &quot;WenQuanYi Micro Hei&quot;, SimSun, sans-serif;"><div indienova-channel-border=""  norightborder"="" style="box-sizing: border-box; border-right: 1px solid #eeeeee; padding-top: 15px; padding-right: 15px; padding-left: 15px;"><div nobottompadding=""  bottommargin-sm"="" style="box-sizing: border-box; margin: 0px 0px 50px; padding-bottom: 50px; position: relative;"><div style="box-sizing: border-box; position: relative;"><ul clearfix"="" style="box-sizing: border-box; margin: 10px -10px -15px 0px; padding: 0px; list-style: none;"><li style="box-sizing: border-box; margin: 0px 10px 15px 0px; padding: 5px 0px; font-style: italic; float: left; font-size: 13px; line-height: 24px; color: #444444; font-family: &quot;Crete Round&quot;, serif;">&nbsp;<a href="https://indienova.com/u/npc233/blog/cate/0" style="box-sizing: border-box; background-color: transparent; color: #999999; text-decoration-line: none !important;">开发日志</a></li><li style="box-sizing: border-box; margin: 0px 10px 15px 0px; padding: 5px 0px; font-style: italic; float: left; font-size: 13px; line-height: 24px; color: #444444; font-family: &quot;Crete Round&quot;, serif;">&nbsp;<span id="lCount" style="box-sizing: border-box;">0</span>&nbsp;赞</li><li style="box-sizing: border-box; margin: 0px 10px 15px 0px; padding: 5px 0px; font-style: italic; float: left; font-size: 13px; line-height: 24px; color: #444444; font-family: &quot;Crete Round&quot;, serif;"><a href="https://indienova.com/u/npc233/blogread/11298#comments" style="box-sizing: border-box; background-color: transparent; color: #999999; text-decoration-line: none !important;">&nbsp;0 评论</a></li><li style="box-sizing: border-box; margin: 0px 10px 15px 0px; padding: 5px 0px; font-style: italic; float: left; font-size: 13px; line-height: 24px; color: #444444; font-family: &quot;Crete Round&quot;, serif;">&nbsp;2018-11-01</li></ul></div></div><article fr-view"="" style="box-sizing: border-box; font-size: 15px; overflow: auto;"><p style="box-sizing: border-box; margin: 0px 0px 15px; color: #333333; line-height: 1.8;"><img alt="Image title"  fr-dib"="" src="https://hive.indienova.com/farm/blog/2018/11/85458-1541035359.png_webp" style="box-sizing: border-box; border: 0px; vertical-align: top; max-width: 100%; z-index: 1; position: relative; margin: 5px auto; overflow: auto; float: none; display: block; padding: 10px 0px;" /></p><p style="box-sizing: border-box; margin: 0px 0px 15px; color: #333333; line-height: 1.8;">这样一个6边形网格地图，有没有公式计算两个格子间的距离呢？</p><p style="box-sizing: border-box; margin: 0px 0px 15px; color: #333333; line-height: 1.8;">比如（0，0）走到（1，1）需要走几步，我们看图可以发现走两步就行了，但是有公式可以计算就更好了。</p><p style="box-sizing: border-box; margin: 0px 0px 15px; color: #333333; line-height: 1.8;">下面跟群里的小伙伴讨论之后的出的结果。</p><p style="box-sizing: border-box; margin: 0px 0px 15px; color: #333333; line-height: 1.8;">我们需要借助三维坐标</p><p style="box-sizing: border-box; margin: 0px 0px 15px; color: #333333; line-height: 1.8;"><img alt="Image title"  fr-dib"="" src="https://hive.indienova.com/farm/blog/2018/11/85458-1541035861.png_webp" style="box-sizing: border-box; border: 0px; vertical-align: top; max-width: 100%; z-index: 1; position: relative; margin: 5px auto; overflow: auto; float: none; display: block; padding: 10px 0px;" /></p><p style="box-sizing: border-box; margin: 0px 0px 15px; color: #333333; line-height: 1.8;">像这样的坐标体系，有x,y,z三个维度，x,y,z的和始终是0，我们称之为cube坐标，距离计算公式是</p><p style="box-sizing: border-box; margin: 0px 0px 15px; color: #333333; line-height: 1.8;">distance=(abs(cubePos1.x-cubePos2.x)+abs(cubePos1.y-cubePos2.y)+abs(cubePos1.z-cubePos2.z))/2</p><p style="box-sizing: border-box; margin: 0px 0px 15px; color: #333333; line-height: 1.8;">或者</p><p style="box-sizing: border-box; margin: 0px 0px 15px; color: #333333; line-height: 1.8;">diatance=max(cubePos1.x-cubePos2.x)+abs(cubePos1.y-cubePos2.y)+abs(cubePos1.z-cubePos2.z))</p><p style="box-sizing: border-box; margin: 0px 0px 15px; color: #333333; line-height: 1.8;">上面两个公式都能算出距离，至于具体原理我就不懂了，反正可以这么用</p><p style="box-sizing: border-box; margin: 0px 0px 15px; color: #333333; line-height: 1.8;"><br style="box-sizing: border-box;" /></p><p style="box-sizing: border-box; margin: 0px 0px 15px; color: #333333; line-height: 1.8;">然后要做的就是把二维坐标转成三维坐标</p><p style="box-sizing: border-box; margin: 0px 0px 15px; color: #333333; line-height: 1.8;">其实很简单</p><p style="box-sizing: border-box; margin: 0px 0px 15px; color: #333333; line-height: 1.8;">我们原来的坐标是这样的</p><p style="box-sizing: border-box; margin: 0px 0px 15px; color: #333333; line-height: 1.8;">0,0 --- 1,0 --- 2,0 --- 3,0<br style="box-sizing: border-box;" />--- 0,1 --- 1,1 --- 2,1 --- 2,2<br style="box-sizing: border-box;" />0,2 --- 1,2 --- 2,2 --- 3,2<br style="box-sizing: border-box;" />--- 0,3 --- 1,3 --- 2,3 --- 3,3<br style="box-sizing: border-box;" /></p><p style="box-sizing: border-box; margin: 0px 0px 15px; color: #333333; line-height: 1.8;">如果调整成这样</p><p style="box-sizing: border-box; margin: 0px 0px 15px; color: #333333; line-height: 1.8;">0,0 --- 1,0 --- 2,0 --- 3,0<br style="box-sizing: border-box;" />--- 0,1 --- 1,1 --- 2,1 --- 3,1<br style="box-sizing: border-box;" />--- --- 0,2 --- 1,2 --- 2,2 --- 3,2<br style="box-sizing: border-box;" />--- --- --- 0,3 --- 1,3 --- 2,3 --- 3,3</p><p style="box-sizing: border-box; margin: 0px 0px 15px; color: #333333; line-height: 1.8;">这样二维中的x，y就对应了三维中的x,y。至于三维的z，因为x,y,z的和始终是0，只要z=-x-y就行了</p><p style="box-sizing: border-box; margin: 0px 0px 15px; color: #333333; line-height: 1.8;">调整过程其实就是x=x-int(y/2)</p><p style="box-sizing: border-box; margin: 0px 0px 15px; color: #333333; line-height: 1.8;">最终我们得到二维坐标转三维坐标的函数</p><pre style="box-sizing: border-box; overflow: auto; font-size: 13px; line-height: 20px; color: #333333; font-family: Monaco, Menlo, Consolas, &quot;Courier New&quot;, monospace; padding: 10px 15px; margin-bottom: 20px; word-break: break-all; overflow-wrap: break-word; border: 1px solid #e1e1e8; border-radius: 4px; white-space: pre-wrap; margin-top: 0px !important;"><span style="box-sizing: border-box;">func getCubePosFromPos</span><span style="box-sizing: border-box; color: #93a1a1;">(</span><span style="box-sizing: border-box;">pos</span><span style="box-sizing: border-box; color: #93a1a1;">):</span> <span style="box-sizing: border-box; color: #2f6f9f;">var</span><span style="box-sizing: border-box;"> x</span><span style="box-sizing: border-box; color: #93a1a1;">=</span><span style="box-sizing: border-box;">pos</span><span style="box-sizing: border-box; color: #93a1a1;">.</span><span style="box-sizing: border-box;">x</span><span style="box-sizing: border-box; color: #93a1a1;">-</span><span style="box-sizing: border-box; color: #2f6f9f;">int</span><span style="box-sizing: border-box; color: #93a1a1;">(</span><span style="box-sizing: border-box;">pos</span><span style="box-sizing: border-box; color: #93a1a1;">.</span><span style="box-sizing: border-box;">y</span><span style="box-sizing: border-box; color: #93a1a1;">)/</span><span style="box-sizing: border-box; color: #195f91;">2</span> <span style="box-sizing: border-box; color: #2f6f9f;">var</span><span style="box-sizing: border-box;"> y</span><span style="box-sizing: border-box; color: #93a1a1;">=</span><span style="box-sizing: border-box;">pos</span><span style="box-sizing: border-box; color: #93a1a1;">.</span><span style="box-sizing: border-box;">y      </span><span style="box-sizing: border-box; color: #2f6f9f;">var</span><span style="box-sizing: border-box;"> z</span><span style="box-sizing: border-box; color: #93a1a1;">=-</span><span style="box-sizing: border-box;">x</span><span style="box-sizing: border-box; color: #93a1a1;">-</span><span style="box-sizing: border-box;">y      </span><span style="box-sizing: border-box; color: #2f6f9f;">return</span> <span style="box-sizing: border-box; color: #4f9fcf;">Vector3</span><span style="box-sizing: border-box; color: #93a1a1;">(</span><span style="box-sizing: border-box;">x</span><span style="box-sizing: border-box; color: #93a1a1;">,</span><span style="box-sizing: border-box;">y</span><span style="box-sizing: border-box; color: #93a1a1;">,</span><span style="box-sizing: border-box;">z</span><span style="box-sizing: border-box; color: #93a1a1;">)</span></pre><p style="box-sizing: border-box; margin: 0px 0px 15px; color: #333333; line-height: 1.8;">计算距离的函数</p><pre style="box-sizing: border-box; overflow: auto; font-size: 13px; line-height: 20px; color: #333333; font-family: Monaco, Menlo, Consolas, &quot;Courier New&quot;, monospace; padding: 10px 15px; margin-bottom: 20px; word-break: break-all; overflow-wrap: break-word; border: 1px solid #e1e1e8; border-radius: 4px; white-space: pre-wrap; margin-top: 0px !important;"><span style="box-sizing: border-box;">func posDistance</span><span style="box-sizing: border-box; color: #93a1a1;">(</span><span style="box-sizing: border-box;">pos1</span><span style="box-sizing: border-box; color: #93a1a1;">,</span><span style="box-sizing: border-box;">pos2</span><span style="box-sizing: border-box; color: #93a1a1;">):</span> <span style="box-sizing: border-box; color: #2f6f9f;">var</span><span style="box-sizing: border-box;"> cubePos1</span><span style="box-sizing: border-box; color: #93a1a1;">=</span><span style="box-sizing: border-box;">getCubePosFromPos</span><span style="box-sizing: border-box; color: #93a1a1;">(</span><span style="box-sizing: border-box;">pos1</span><span style="box-sizing: border-box; color: #93a1a1;">)</span> <span style="box-sizing: border-box; color: #2f6f9f;">var</span><span style="box-sizing: border-box;"> cubePos2</span><span style="box-sizing: border-box; color: #93a1a1;">=</span><span style="box-sizing: border-box;">getCubePosFromPos</span><span style="box-sizing: border-box; color: #93a1a1;">(</span><span style="box-sizing: border-box;">pos2</span><span style="box-sizing: border-box; color: #93a1a1;">)</span> <span style="box-sizing: border-box; color: #2f6f9f;">var</span><span style="box-sizing: border-box;"> distance</span><span style="box-sizing: border-box; color: #93a1a1;">=(</span><span style="box-sizing: border-box;">abs</span><span style="box-sizing: border-box; color: #93a1a1;">(</span><span style="box-sizing: border-box;">cubePos1</span><span style="box-sizing: border-box; color: #93a1a1;">.</span><span style="box-sizing: border-box;">x</span><span style="box-sizing: border-box; color: #93a1a1;">-</span><span style="box-sizing: border-box;">cubePos2</span><span style="box-sizing: border-box; color: #93a1a1;">.</span><span style="box-sizing: border-box;">x</span><span style="box-sizing: border-box; color: #93a1a1;">)+</span><span style="box-sizing: border-box;">abs</span><span style="box-sizing: border-box; color: #93a1a1;">(</span><span style="box-sizing: border-box;">cubePos1</span><span style="box-sizing: border-box; color: #93a1a1;">.</span><span style="box-sizing: border-box;">y</span><span style="box-sizing: border-box; color: #93a1a1;">-</span><span style="box-sizing: border-box;">cubePos2</span><span style="box-sizing: border-box; color: #93a1a1;">.</span><span style="box-sizing: border-box;">y</span><span style="box-sizing: border-box; color: #93a1a1;">)+</span><span style="box-sizing: border-box;">abs</span><span style="box-sizing: border-box; color: #93a1a1;">(</span><span style="box-sizing: border-box;">cubePos1</span><span style="box-sizing: border-box; color: #93a1a1;">.</span><span style="box-sizing: border-box;">z</span><span style="box-sizing: border-box; color: #93a1a1;">-</span><span style="box-sizing: border-box;">cubePos2</span><span style="box-sizing: border-box; color: #93a1a1;">.</span><span style="box-sizing: border-box;">z</span><span style="box-sizing: border-box; color: #93a1a1;">))/</span> <span style="box-sizing: border-box; color: #195f91;">2</span> <span style="box-sizing: border-box; color: #2f6f9f;">return</span><span style="box-sizing: border-box;"> distance</span></pre><p style="box-sizing: border-box; margin: 0px 0px 15px; color: #333333; line-height: 1.8;">把这个公式放到游戏中试验下</p><p style="box-sizing: border-box; margin: 0px 0px 15px; color: #333333; line-height: 1.8;"><img alt="Image title"  fr-dib"="" src="https://hive.indienova.com/farm/blog/2018/11/85458-1541037265.png_webp" style="box-sizing: border-box; border: 0px; vertical-align: top; max-width: 100%; z-index: 1; position: relative; margin: 5px auto; overflow: auto; float: none; display: block; padding: 10px 0px;" /></p><p style="box-sizing: border-box; margin: 0px 0px 15px; color: #333333; line-height: 1.8;">黑色小圆圈里的数字表示这个格子到主角的距离，计算很准确</p><p style="box-sizing: border-box; margin: 0px 0px 15px; color: #333333; line-height: 1.8;"><br style="box-sizing: border-box;" /></p><p style="box-sizing: border-box; margin: 0px 0px 15px; color: #333333; line-height: 1.8;">顺便说下从三维坐标转回到二维坐标的算法</p><pre style="box-sizing: border-box; overflow: auto; font-size: 13px; line-height: 20px; color: #333333; font-family: Monaco, Menlo, Consolas, &quot;Courier New&quot;, monospace; padding: 10px 15px; margin-bottom: 20px; word-break: break-all; overflow-wrap: break-word; border: 1px solid #e1e1e8; border-radius: 4px; white-space: pre-wrap; margin-top: 0px !important;"><span style="box-sizing: border-box;">func getPosFromCubePos</span><span style="box-sizing: border-box; color: #93a1a1;">(</span><span style="box-sizing: border-box;">cubePos</span><span style="box-sizing: border-box; color: #93a1a1;">):</span> <span style="box-sizing: border-box; color: #2f6f9f;">var</span><span style="box-sizing: border-box;"> y</span><span style="box-sizing: border-box; color: #93a1a1;">=</span><span style="box-sizing: border-box;">cubePos</span><span style="box-sizing: border-box; color: #93a1a1;">.</span><span style="box-sizing: border-box;">y     </span><span style="box-sizing: border-box; color: #2f6f9f;">var</span><span style="box-sizing: border-box;"> x</span><span style="box-sizing: border-box; color: #93a1a1;">=</span><span style="box-sizing: border-box;">cubePos</span><span style="box-sizing: border-box; color: #93a1a1;">.</span><span style="box-sizing: border-box;">x</span><span style="box-sizing: border-box; color: #93a1a1;">+</span><span style="box-sizing: border-box; color: #2f6f9f;">int</span><span style="box-sizing: border-box; color: #93a1a1;">(</span><span style="box-sizing: border-box;">y</span><span style="box-sizing: border-box; color: #93a1a1;">)/</span><span style="box-sizing: border-box; color: #195f91;">2</span> <span style="box-sizing: border-box; color: #2f6f9f;">return</span> <span style="box-sizing: border-box; color: #4f9fcf;">Vector2</span><span style="box-sizing: border-box; color: #93a1a1;">(</span><span style="box-sizing: border-box;">x</span><span style="box-sizing: border-box; color: #93a1a1;">,</span><span style="box-sizing: border-box;">y</span><span style="box-sizing: border-box; color: #93a1a1;">)</span></pre><p style="box-sizing: border-box; margin: 0px 0px 15px; color: #333333; line-height: 1.8;"><br style="box-sizing: border-box;" /></p><p style="box-sizing: border-box; margin: 0px 0px 15px; color: #333333; line-height: 1.8;">参考资料</p><p style="box-sizing: border-box; margin: 0px 0px 15px; color: #333333; line-height: 1.8;">https://www.redblobgames.com/grids/hexagons/</p></article></div></div><img src ="http://www.cppblog.com/markqian86/aggbug/217638.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/markqian86/" target="_blank">长戟十三千</a> 2021-03-25 12:20 <a href="http://www.cppblog.com/markqian86/archive/2021/03/25/217638.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>如何查看yum 安装的软件路径</title><link>http://www.cppblog.com/markqian86/archive/2021/03/08/217623.html</link><dc:creator>长戟十三千</dc:creator><author>长戟十三千</author><pubDate>Mon, 08 Mar 2021 11:55:00 GMT</pubDate><guid>http://www.cppblog.com/markqian86/archive/2021/03/08/217623.html</guid><wfw:comment>http://www.cppblog.com/markqian86/comments/217623.html</wfw:comment><comments>http://www.cppblog.com/markqian86/archive/2021/03/08/217623.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/markqian86/comments/commentRss/217623.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/markqian86/services/trackbacks/217623.html</trackback:ping><description><![CDATA[<div>今天使用yum 安装了一个软件，后来没有找到路径</div><div></div><div>1、首先安装一个redis</div><div></div><div>[root@iZbp1eem925ojwyx17ao9kZ ~]# yum install redis</div><div>1</div><div>2、查找redis的安装包</div><div></div><div>[root@iZbp1eem925ojwyx17ao9kZ ~]# rpm -qa|grep redis</div><div>redis-3.2.10-2.el7.x86_64</div><div>[root@iZbp1eem925ojwyx17ao9kZ ~]#&nbsp;</div><div>1</div><div>2</div><div>3</div><div>3、查找安装包的安装路径</div><div></div><div>[root@iZbp1eem925ojwyx17ao9kZ ~]# rpm -ql redis-3.2.10-2.el7.x86_64</div><div>/etc/logrotate.d/redis</div><div>/etc/redis-sentinel.conf</div><div>/etc/redis.conf</div><div>/etc/systemd/system/redis-sentinel.service.d</div><div>/etc/systemd/system/redis-sentinel.service.d/limit.conf</div><div>/etc/systemd/system/redis.service.d</div><div>/etc/systemd/system/redis.service.d/limit.conf</div><div>/usr/bin/redis-benchmark</div><div>/usr/bin/redis-check-aof</div><div>/usr/bin/redis-check-rdb</div><div>/usr/bin/redis-cli</div><div>1</div><div>2</div><div>3</div><div>4</div><div>5</div><div>6</div><div>7</div><div>8</div><div>9</div><div>10</div><div>11</div><div>12</div><div>4、ok，现在就找到了！</div><div>&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;</div><div>版权声明：本文为CSDN博主「向小凯同学学习」的原创文章，遵循CC 4.0 BY-SA版权协议，转载请附上原文出处链接及本声明。</div><div>原文链接：https://blog.csdn.net/wd2014610/article/details/79659073</div><img src ="http://www.cppblog.com/markqian86/aggbug/217623.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/markqian86/" target="_blank">长戟十三千</a> 2021-03-08 19:55 <a href="http://www.cppblog.com/markqian86/archive/2021/03/08/217623.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>CentOS 7 systemd的坑</title><link>http://www.cppblog.com/markqian86/archive/2021/03/01/217620.html</link><dc:creator>长戟十三千</dc:creator><author>长戟十三千</author><pubDate>Mon, 01 Mar 2021 12:30:00 GMT</pubDate><guid>http://www.cppblog.com/markqian86/archive/2021/03/01/217620.html</guid><wfw:comment>http://www.cppblog.com/markqian86/comments/217620.html</wfw:comment><comments>http://www.cppblog.com/markqian86/archive/2021/03/01/217620.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/markqian86/comments/commentRss/217620.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/markqian86/services/trackbacks/217620.html</trackback:ping><description><![CDATA[<h5>一、概述</h5><p style="margin-top: 10px; margin-bottom: 10px; font-family: &quot;PingFang SC&quot;, &quot;Microsoft YaHei&quot;, &quot;Helvetica Neue&quot;, Helvetica, Arial, sans-serif; background-color: #ffffff;">　在从 CentOS 6 迁移到 CentOS 7 的过程中，可能有一些地方需要调整，最显著的地方莫过于 systemd 带来的改变，不同的管理服务的方式，不同的日志方式，设置时区，时间等等。 当然，除了这些显而易见的改变之外，有些变化并不是那么引人注目，例如这里要介绍的你可能发现曾经配置了正确的 /etc/security/limits.conf 在 CentOS 7 中却没有生效了。</p><p style="margin-top: 10px; margin-bottom: 10px; font-family: &quot;PingFang SC&quot;, &quot;Microsoft YaHei&quot;, &quot;Helvetica Neue&quot;, Helvetica, Arial, sans-serif; background-color: #ffffff;">　　如果遇到上面的问题，很可能已经导致了你的应用异常了，例如：以前配置了服务的&nbsp;<code>nproc</code>&nbsp;为一个非常大的数值， 结果现在发现服务不能打开更多的文件。</p><p style="margin-top: 10px; margin-bottom: 10px; font-family: &quot;PingFang SC&quot;, &quot;Microsoft YaHei&quot;, &quot;Helvetica Neue&quot;, Helvetica, Arial, sans-serif; background-color: #ffffff;">　　惊讶之余，查看服务的&nbsp;<code>/proc/&lt;pid&gt;/limits</code>&nbsp;却发现：</p><div style="margin: 5px 0px; font-size: 12px !important;"><pre style="overflow: auto; margin-top: 0px; margin-bottom: 0px; margin-left: 22px; overflow-wrap: break-word; font-family: &quot;Courier New&quot; !important;"><span style="color: #008080; line-height: 1.5 !important;">1</span> Max open files            <span style="color: #800080; line-height: 1.5 !important;">1024</span>                <span style="color: #800080; line-height: 1.5 !important;">1024</span>                files</pre></div><p style="margin-top: 10px; margin-bottom: 10px; font-family: &quot;PingFang SC&quot;, &quot;Microsoft YaHei&quot;, &quot;Helvetica Neue&quot;, Helvetica, Arial, sans-serif; background-color: #ffffff;">　　那么，为什么服务使用 systemd 启动就没有生效呢？</p><p style="margin-top: 10px; margin-bottom: 10px; font-family: &quot;PingFang SC&quot;, &quot;Microsoft YaHei&quot;, &quot;Helvetica Neue&quot;, Helvetica, Arial, sans-serif; background-color: #ffffff;">　　根据&nbsp;<a href="https://bugzilla.redhat.com/show_bug.cgi?id=754285" style="color: #1d58d1; text-decoration-line: none;">redhat bugzilla 754285</a>， systemd 实际上是会忽略&nbsp;<code>/etc/security/limits.conf</code>，下面是 systemd 2 号人物的回答：</p><p style="margin-top: 10px; margin-bottom: 10px; font-family: &quot;PingFang SC&quot;, &quot;Microsoft YaHei&quot;, &quot;Helvetica Neue&quot;, Helvetica, Arial, sans-serif; background-color: #ffffff;"><img src="https://images2015.cnblogs.com/blog/593225/201704/593225-20170405104928972-242714349.png" alt="" style="border: 0px; max-width: 100%; cursor: zoom-in; transition: transform 0.3s cubic-bezier(0.2, 0, 0.2, 1) 0s !important; height: auto; display: block; margin-left: auto; margin-right: auto;" /></p><p style="margin-top: 10px; margin-bottom: 10px; font-family: &quot;PingFang SC&quot;, &quot;Microsoft YaHei&quot;, &quot;Helvetica Neue&quot;, Helvetica, Arial, sans-serif; background-color: #ffffff;">　　而这个 bug 也标记为已解决，在 pam 包中解决，这个包包含了&nbsp;<code>/etc/security/limits.conf</code>， 在这个文件中加入了如下注释：</p><div style="margin: 5px 0px; font-size: 12px !important;"><pre style="overflow: auto; margin-top: 0px; margin-bottom: 0px; margin-left: 22px; overflow-wrap: break-word; font-family: &quot;Courier New&quot; !important;"># /etc/security/<span style="line-height: 1.5 !important;">limits.conf # #This file sets the resource limits </span><span style="color: #0000ff; line-height: 1.5 !important;">for</span> the users logged <span style="color: #0000ff; line-height: 1.5 !important;">in</span><span style="line-height: 1.5 !important;"> via PAM. #It does not affect resource limits of the system services. #</span></pre></div><p style="margin-top: 10px; margin-bottom: 10px; font-family: &quot;PingFang SC&quot;, &quot;Microsoft YaHei&quot;, &quot;Helvetica Neue&quot;, Helvetica, Arial, sans-serif; background-color: #ffffff;">注意，这里的 system services 指的是 system wide service，对于 CentOS 7 来说也就是系统的 service。</p><p style="margin-top: 10px; margin-bottom: 10px; font-family: &quot;PingFang SC&quot;, &quot;Microsoft YaHei&quot;, &quot;Helvetica Neue&quot;, Helvetica, Arial, sans-serif; background-color: #ffffff;">　　systemd 还可以对普通用户启动，使用&nbsp;<code>--user</code>&nbsp;参数。</p><h4>二、解决之道</h4><p style="margin-top: 10px; margin-bottom: 10px; font-family: &quot;PingFang SC&quot;, &quot;Microsoft YaHei&quot;, &quot;Helvetica Neue&quot;, Helvetica, Arial, sans-serif; background-color: #ffffff;">　在CentOS 7 / RHEL 7的系统中，使用Systemd替代了之前的SysV，因此 /etc/security/limits.conf 文件的配置作用域缩小了一些。limits.conf这里的配置，只适用于通过PAM认证登录用户的资源限制，它对systemd的service的资源限制不生效。登录用户的限制，与上面讲的一样，通过 /etc/security/limits.conf 和 limits.d 来配置即可。</p><p style="margin-top: 10px; margin-bottom: 10px; font-family: &quot;PingFang SC&quot;, &quot;Microsoft YaHei&quot;, &quot;Helvetica Neue&quot;, Helvetica, Arial, sans-serif; background-color: #ffffff;">　　对于systemd service的资源限制，如何配置呢？</p><p style="margin-top: 10px; margin-bottom: 10px; font-family: &quot;PingFang SC&quot;, &quot;Microsoft YaHei&quot;, &quot;Helvetica Neue&quot;, Helvetica, Arial, sans-serif; background-color: #ffffff;">全局的配置，放在文件 /etc/systemd/system.conf 和 /etc/systemd/user.conf。 同时，也会加载两个对应的目录中的所有.conf文件 /etc/systemd/system.conf.d/*.conf 和 /etc/systemd/user.conf.d/*.conf<br />其中，system.conf 是系统实例使用的，user.conf用户实例使用的。一般的sevice，使用system.conf中的配置即可。systemd.conf.d/*.conf中配置会覆盖system.conf。</p><div style="margin: 5px 0px; font-size: 12px !important;"><pre style="overflow: auto; margin-top: 0px; margin-bottom: 0px; margin-left: 22px; overflow-wrap: break-word; font-family: &quot;Courier New&quot; !important;"><span style="color: #008080; line-height: 1.5 !important;">1</span> DefaultLimitCORE=<span style="line-height: 1.5 !important;">infinity </span><span style="color: #008080; line-height: 1.5 !important;">2</span> DefaultLimitNOFILE=<span style="color: #800080; line-height: 1.5 !important;">100000</span> <span style="color: #008080; line-height: 1.5 !important;">3</span> DefaultLimitNPROC=<span style="color: #800080; line-height: 1.5 !important;">100000</span></pre></div><p style="margin-top: 10px; margin-bottom: 10px; font-family: &quot;PingFang SC&quot;, &quot;Microsoft YaHei&quot;, &quot;Helvetica Neue&quot;, Helvetica, Arial, sans-serif; background-color: #ffffff;">　　然后运行如下命令，才能生效。</p><div style="margin: 5px 0px; font-size: 12px !important;"><pre style="overflow: auto; margin-top: 0px; margin-bottom: 0px; margin-left: 22px; overflow-wrap: break-word; font-family: &quot;Courier New&quot; !important;"><span style="color: #008080; line-height: 1.5 !important;">1</span> sudo systemctl daemon-<span style="line-height: 1.5 !important;">reload </span><span style="color: #008080; line-height: 1.5 !important;">2</span> sudo systemctl restart nginx.service</pre></div><p style="margin-top: 10px; margin-bottom: 10px; font-family: &quot;PingFang SC&quot;, &quot;Microsoft YaHei&quot;, &quot;Helvetica Neue&quot;, Helvetica, Arial, sans-serif; background-color: #ffffff;">查看一个进程的limit设置：cat /proc/YOUR-PID/limits<br />例如我的一个nginx service的配置效果：</p><div style="margin: 5px 0px; font-size: 12px !important;"><div style="margin-top: 5px;"><span style="padding-right: 5px; line-height: 1.5 !important;"><a title="复制代码" style="color: #1d58d1; border: none !important;"><img src="https://common.cnblogs.com/images/copycode.gif" alt="复制代码" style="max-width: 100%; height: auto; border: none !important;" /></a></span></div><pre style="overflow: auto; margin-top: 0px; margin-bottom: 0px; margin-left: 22px; overflow-wrap: break-word; font-family: &quot;Courier New&quot; !important;"><span style="color: #008080; line-height: 1.5 !important;"> 1</span> $cat /proc/$(cat /<span style="color: #0000ff; line-height: 1.5 !important;">var</span>/run/nginx.pid)/<span style="line-height: 1.5 !important;">limits </span><span style="color: #008080; line-height: 1.5 !important;"> 2</span> <span style="line-height: 1.5 !important;">Limit                     Soft Limit           Hard Limit           Units </span><span style="color: #008080; line-height: 1.5 !important;"> 3</span> <span style="line-height: 1.5 !important;">Max cpu time              unlimited            unlimited            seconds </span><span style="color: #008080; line-height: 1.5 !important;"> 4</span> <span style="line-height: 1.5 !important;">Max file size             unlimited            unlimited            bytes </span><span style="color: #008080; line-height: 1.5 !important;"> 5</span> <span style="line-height: 1.5 !important;">Max data size             unlimited            unlimited            bytes </span><span style="color: #008080; line-height: 1.5 !important;"> 6</span> Max stack size            <span style="color: #800080; line-height: 1.5 !important;">8388608</span><span style="line-height: 1.5 !important;">              unlimited            bytes </span><span style="color: #008080; line-height: 1.5 !important;"> 7</span> <span style="line-height: 1.5 !important;">Max core file size        unlimited            unlimited            bytes </span><span style="color: #008080; line-height: 1.5 !important;"> 8</span> Max resident <span style="color: #0000ff; line-height: 1.5 !important;">set</span><span style="line-height: 1.5 !important;">          unlimited            unlimited            bytes </span><span style="color: #008080; line-height: 1.5 !important;"> 9</span> Max processes             <span style="color: #800080; line-height: 1.5 !important;">100000</span>               <span style="color: #800080; line-height: 1.5 !important;">100000</span><span style="line-height: 1.5 !important;">               processes </span><span style="color: #008080; line-height: 1.5 !important;">10</span> Max open files            <span style="color: #800080; line-height: 1.5 !important;">100000</span>               <span style="color: #800080; line-height: 1.5 !important;">100000</span><span style="line-height: 1.5 !important;">               files </span><span style="color: #008080; line-height: 1.5 !important;">11</span> Max locked memory         <span style="color: #800080; line-height: 1.5 !important;">65536</span>                <span style="color: #800080; line-height: 1.5 !important;">65536</span><span style="line-height: 1.5 !important;">                bytes </span><span style="color: #008080; line-height: 1.5 !important;">12</span> <span style="line-height: 1.5 !important;">Max address space         unlimited            unlimited            bytes </span><span style="color: #008080; line-height: 1.5 !important;">13</span> <span style="line-height: 1.5 !important;">Max file locks            unlimited            unlimited            locks </span><span style="color: #008080; line-height: 1.5 !important;">14</span> Max pending signals       <span style="color: #800080; line-height: 1.5 !important;">1030606</span>              <span style="color: #800080; line-height: 1.5 !important;">1030606</span><span style="line-height: 1.5 !important;">              signals </span><span style="color: #008080; line-height: 1.5 !important;">15</span> Max msgqueue size         <span style="color: #800080; line-height: 1.5 !important;">819200</span>               <span style="color: #800080; line-height: 1.5 !important;">819200</span><span style="line-height: 1.5 !important;">               bytes </span><span style="color: #008080; line-height: 1.5 !important;">16</span> Max nice priority         <span style="color: #800080; line-height: 1.5 !important;">0</span>                    <span style="color: #800080; line-height: 1.5 !important;">0</span> <span style="color: #008080; line-height: 1.5 !important;">17</span> Max realtime priority     <span style="color: #800080; line-height: 1.5 !important;">0</span>                    <span style="color: #800080; line-height: 1.5 !important;">0</span> <span style="color: #008080; line-height: 1.5 !important;">18</span> Max realtime timeout      unlimited            unlimited            us</pre><div style="margin-top: 5px;"><span style="padding-right: 5px; line-height: 1.5 !important;"><a title="复制代码" style="color: #1d58d1; border: none !important;"><img src="https://common.cnblogs.com/images/copycode.gif" alt="复制代码" style="max-width: 100%; height: auto; border: none !important;" /></a></span></div></div><p style="margin-top: 10px; margin-bottom: 10px; font-family: &quot;PingFang SC&quot;, &quot;Microsoft YaHei&quot;, &quot;Helvetica Neue&quot;, Helvetica, Arial, sans-serif; background-color: #ffffff;">　　顺便提一下，我还被CentOS7自带的/etc/security/limits.d/20-nproc.conf文件坑过，里面默认设置了非root用户的最大进程数为4096，难怪我上次在limits.conf中设置了没啥效果，原来被limit.d目录中的配置覆盖了。</p><img src ="http://www.cppblog.com/markqian86/aggbug/217620.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/markqian86/" target="_blank">长戟十三千</a> 2021-03-01 20:30 <a href="http://www.cppblog.com/markqian86/archive/2021/03/01/217620.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>vscode 配置</title><link>http://www.cppblog.com/markqian86/archive/2021/01/27/217585.html</link><dc:creator>长戟十三千</dc:creator><author>长戟十三千</author><pubDate>Wed, 27 Jan 2021 09:37:00 GMT</pubDate><guid>http://www.cppblog.com/markqian86/archive/2021/01/27/217585.html</guid><wfw:comment>http://www.cppblog.com/markqian86/comments/217585.html</wfw:comment><comments>http://www.cppblog.com/markqian86/archive/2021/01/27/217585.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/markqian86/comments/commentRss/217585.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/markqian86/services/trackbacks/217585.html</trackback:ping><description><![CDATA[c_cpp_properties.json：<br /><div style="background-color:#eeeeee;font-size:13px;border:1px solid #CCCCCC;padding-right: 5px;padding-bottom: 4px;padding-left: 4px;padding-top: 4px;width: 98%;word-break:break-all"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />-->{<br />&nbsp;&nbsp;&nbsp;&nbsp;"configurations":&nbsp;[<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"name":&nbsp;"Linux",<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"includePath":&nbsp;[<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"${workspaceFolder}/service/include",<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"${workspaceFolder}/service/src/swift",<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"${workspaceFolder}/service/src/resource",<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"${workspaceFolder}/service/src/frame",<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"${workspaceFolder}/service/src/database",<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"${workspaceFolder}/service/src/oss",<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"${workspaceFolder}/service/src/tss",<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"${workspaceFolder}/service/src/gamesvr",<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"${workspaceFolder}/**"<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;],<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"defines":&nbsp;[],<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"compilerPath":&nbsp;"/usr/lib64/ccache/clang",<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"cStandard":&nbsp;"c99",<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"cppStandard":&nbsp;"c++14",<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"intelliSenseMode":&nbsp;"linux-clang-x64"<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;],<br />&nbsp;&nbsp;&nbsp;&nbsp;"version":&nbsp;4<br />}</div><div>launch.json：<br /><div><div style="background-color:#eeeeee;font-size:13px;border:1px solid #CCCCCC;padding-right: 5px;padding-bottom: 4px;padding-left: 4px;padding-top: 4px;width: 98%;word-break:break-all"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />-->{<br />&nbsp;&nbsp;&nbsp;&nbsp;"version":&nbsp;"0.2.0",<br />&nbsp;&nbsp;&nbsp;&nbsp;"configurations":&nbsp;[<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"name":&nbsp;"attach&nbsp;gamesvr",<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"type":&nbsp;"cppdbg",<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"request":&nbsp;"attach",<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"program":&nbsp;"${workspaceFolder}/service/home/gamesvr/bin/gamesvr",<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"processId":&nbsp;"${command:pickProcess}",<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"MIMode":&nbsp;"gdb",<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"setupCommands":&nbsp;[<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"description":&nbsp;"Enable&nbsp;pretty-printing&nbsp;for&nbsp;gdb",<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"text":&nbsp;"-enable-pretty-printing",<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"ignoreFailures":&nbsp;<span style="color: #0000FF; ">true</span><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;]<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;]<br />}</div><div>settings.json<br /><div style="background-color: #eeeeee; border: 1px solid #cccccc; padding: 4px 5px 4px 4px; width: 98%; word-break: break-all;"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><span style="font-size: 13px;">{</span><br /><span style="font-size: 13px;">&nbsp;&nbsp;&nbsp;&nbsp;"files.associations":&nbsp;{</span><br /><span style="font-size: 13px;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"hash_map":&nbsp;"cpp",</span><br /><span style="font-size: 13px;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"hash_set":&nbsp;"cpp",</span><br /><span style="font-size: 13px;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"bitset":&nbsp;"cpp",</span><br /><span style="font-size: 13px;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"chrono":&nbsp;"cpp",</span><br /><span style="font-size: 13px;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"algorithm":&nbsp;"cpp",</span><br /><span style="font-size: 13px;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"hashtable":&nbsp;"cpp",</span><br /><span style="font-size: 13px;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"typeinfo":&nbsp;"cpp",</span><br /><span style="font-size: 13px;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"typeindex":&nbsp;"cpp",</span><br /><span style="font-size: 13px;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"functional":&nbsp;"cpp",</span><br /><span style="font-size: 13px;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"cctype":&nbsp;"cpp",</span><br /><span style="font-size: 13px;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"clocale":&nbsp;"cpp",</span><br /><span style="font-size: 13px;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"cmath":&nbsp;"cpp",</span><br /><span style="font-size: 13px;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"csetjmp":&nbsp;"cpp",</span><br /><span style="font-size: 13px;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"cstdarg":&nbsp;"cpp",</span><br /><span style="font-size: 13px;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"cstddef":&nbsp;"cpp",</span><br /><span style="font-size: 13px;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"cstdio":&nbsp;"cpp",</span><br /><span style="font-size: 13px;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"cstdlib":&nbsp;"cpp",</span><br /><span style="font-size: 13px;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"cstring":&nbsp;"cpp",</span><br /><span style="font-size: 13px;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"ctime":&nbsp;"cpp",</span><br /><span style="font-size: 13px;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"cwchar":&nbsp;"cpp",</span><br /><span style="font-size: 13px;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"cwctype":&nbsp;"cpp",</span><br /><span style="font-size: 13px;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"strstream":&nbsp;"cpp",</span><br /><span style="font-size: 13px;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"*.tcc":&nbsp;"cpp",</span><br /><span style="font-size: 13px;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"complex":&nbsp;"cpp",</span><br /><span style="font-size: 13px;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"condition_variable":&nbsp;"cpp",</span><br /><span style="font-size: 13px;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"deque":&nbsp;"cpp",</span><br /><span style="font-size: 13px;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"list":&nbsp;"cpp",</span><br /><span style="font-size: 13px;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"unordered_map":&nbsp;"cpp",</span><br /><span style="font-size: 13px;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"unordered_set":&nbsp;"cpp",</span><br /><span style="font-size: 13px;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"vector":&nbsp;"cpp",</span><br /><span style="font-size: 13px;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"exception":&nbsp;"cpp",</span><br /><span style="font-size: 13px;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"fstream":&nbsp;"cpp",</span><br /><span style="font-size: 13px;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"initializer_list":&nbsp;"cpp",</span><br /><span style="font-size: 13px;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"iomanip":&nbsp;"cpp",</span><br /><span style="font-size: 13px;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"iosfwd":&nbsp;"cpp",</span><br /><span style="font-size: 13px;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"iostream":&nbsp;"cpp",</span><br /><span style="font-size: 13px;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"istream":&nbsp;"cpp",</span><br /><span style="font-size: 13px;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"limits":&nbsp;"cpp",</span><br /><span style="font-size: 13px;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"mutex":&nbsp;"cpp",</span><br /><span style="font-size: 13px;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"new":&nbsp;"cpp",</span><br /><span style="font-size: 13px;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"ostream":&nbsp;"cpp",</span><br /><span style="font-size: 13px;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"numeric":&nbsp;"cpp",</span><br /><span style="font-size: 13px;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"ratio":&nbsp;"cpp",</span><br /><span style="font-size: 13px;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"sstream":&nbsp;"cpp",</span><br /><span style="font-size: 13px;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"stdexcept":&nbsp;"cpp",</span><br /><span style="font-size: 13px;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"streambuf":&nbsp;"cpp",</span><br /><span style="font-size: 13px;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"system_error":&nbsp;"cpp",</span><br /><span style="font-size: 13px;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"thread":&nbsp;"cpp",</span><br /><span style="font-size: 13px;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"tuple":&nbsp;"cpp",</span><br /><span style="font-size: 13px;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"type_traits":&nbsp;"cpp",</span><br /><span style="font-size: 13px;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"array":&nbsp;"cpp",</span><br /><span style="font-size: 13px;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"cfenv":&nbsp;"cpp",</span><br /><span style="font-size: 13px;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"cinttypes":&nbsp;"cpp",</span><br /><span style="font-size: 13px;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"cstdint":&nbsp;"cpp",</span><br /><span style="font-size: 13px;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"random":&nbsp;"cpp",</span><br /><span style="font-size: 13px;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"regex":&nbsp;"cpp",</span><br /><span style="font-size: 13px;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"utility":&nbsp;"cpp",</span><br /><span style="font-size: 13px;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"atomic":&nbsp;"cpp",</span><br /><span style="font-size: 13px;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"string":&nbsp;"cpp"</span><br /><span style="font-size: 13px;">&nbsp;&nbsp;&nbsp;&nbsp;},</span><br /><br /><div><span style="font-size: 13px;">&nbsp; &nbsp; "files.</span><span style="font-size: 13px; color: red;">watcherExclude</span><span style="font-size: 13px;">": {</span></div><div><span style="font-size: 13px;">&nbsp; &nbsp; &nbsp; &nbsp; "**/*.d": true,</span></div><div><span style="font-size: 13px;">&nbsp; &nbsp; &nbsp; &nbsp; "**/*.o": true,</span></div><div><span style="font-size: 13px;">&nbsp; &nbsp; &nbsp; &nbsp; "**/*.a": true,</span></div><div><span style="font-size: 13px;">&nbsp; &nbsp; &nbsp; &nbsp; "**/*.log": true,</span></div><div><span style="font-size: 13px;">&nbsp; &nbsp; &nbsp; &nbsp; "**/service/src/tconnd/**": true,</span></div><div><span style="font-size: 13px;">&nbsp; &nbsp; &nbsp; &nbsp; "**/service/src/stresstest/**": true,</span></div><div><span style="font-size: 13px;">&nbsp; &nbsp; &nbsp; &nbsp; "**/service/home/**": true,</span></div><div><span style="font-size: 13px;">&nbsp; &nbsp; &nbsp; &nbsp; "**/service/tools/**": true,</span></div><div><span style="font-size: 13px;">&nbsp; &nbsp; &nbsp; &nbsp; "**/service/lib/**": true,</span></div><div><span style="font-size: 13px;">&nbsp; &nbsp; &nbsp; &nbsp; "**/BattleSystem/BattleClient/**": true</span></div><div><span style="font-size: 13px;">&nbsp; &nbsp; },</span></div><div><span style="font-size: 13px;">&nbsp; &nbsp; "files.exclude": {</span></div><div><span style="font-size: 13px;">&nbsp; &nbsp; },</span></div><div><span style="font-size: 13px;">&nbsp; &nbsp; "search.</span><span style="font-size: 13px; color: red;">exclude</span><span style="font-size: 13px;">": {</span></div><div><span style="font-size: 13px;">&nbsp; &nbsp; &nbsp; &nbsp; "**/service/home/**": true,</span></div><div><span style="font-size: 13px;">&nbsp; &nbsp; &nbsp; &nbsp; "**/service/tools/**": true,</span></div><div><span style="font-size: 13px;">&nbsp; &nbsp; &nbsp; &nbsp; "**/service/lib/**": true,</span></div><div><span style="font-size: 13px;">&nbsp; &nbsp; &nbsp; &nbsp; "**/BattleSystem/BattleClient/**": true</span></div><div><span style="font-size: 13px;">&nbsp; &nbsp; },</span></div><div><span style="font-size: 13px;">&nbsp; &nbsp;&nbsp;</span></div><div><span style="font-size: 13px;">&nbsp; &nbsp; "C_Cpp.errorSquiggles": "Disabled",</span></div><div><span style="font-size: 13px;">&nbsp; &nbsp; "editor.minimap.enabled": false,</span></div><span style="font-size: 13px;">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="font-size: 13px;">}</span></div></div>tasks.json<br /><div style="background-color:#eeeeee;font-size:13px;border:1px solid #CCCCCC;padding-right: 5px;padding-bottom: 4px;padding-left: 4px;padding-top: 4px;width: 98%;word-break:break-all"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />-->{<br />&nbsp;&nbsp;&nbsp;&nbsp;"tasks":&nbsp;[<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"label":&nbsp;"rebuild",<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"type":&nbsp;"shell",<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"command":&nbsp;"${workspaceFolder}/service/src/release_make.sh",<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"group":&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"kind":&nbsp;"build",<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"isDefault":&nbsp;<span style="color: #0000FF; ">true</span><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;},<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"label":&nbsp;"start",<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"type":&nbsp;"shell",<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"command":&nbsp;"${workspaceFolder}/service/home/restart.sh",<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"group":&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"kind":&nbsp;"build",<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"isDefault":&nbsp;<span style="color: #0000FF; ">true</span><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;},<br />&nbsp;&nbsp;&nbsp;&nbsp;],<br />&nbsp;&nbsp;&nbsp;&nbsp;"version":&nbsp;"2.0.0"<br />}</div></div></div><img src ="http://www.cppblog.com/markqian86/aggbug/217585.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/markqian86/" target="_blank">长戟十三千</a> 2021-01-27 17:37 <a href="http://www.cppblog.com/markqian86/archive/2021/01/27/217585.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>centos7安装distcc和ccache</title><link>http://www.cppblog.com/markqian86/archive/2021/01/19/217577.html</link><dc:creator>长戟十三千</dc:creator><author>长戟十三千</author><pubDate>Tue, 19 Jan 2021 02:20:00 GMT</pubDate><guid>http://www.cppblog.com/markqian86/archive/2021/01/19/217577.html</guid><wfw:comment>http://www.cppblog.com/markqian86/comments/217577.html</wfw:comment><comments>http://www.cppblog.com/markqian86/archive/2021/01/19/217577.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/markqian86/comments/commentRss/217577.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/markqian86/services/trackbacks/217577.html</trackback:ping><description><![CDATA[<p style="box-sizing: border-box; outline: 0px; margin: 0px 0px 16px; padding: 0px; font-size: 16px; color: #4d4d4d; overflow: auto hidden; overflow-wrap: break-word; font-family: -apple-system, &quot;SF UI Text&quot;, Arial, &quot;PingFang SC&quot;, &quot;Hiragino Sans GB&quot;, &quot;Microsoft YaHei&quot;, &quot;WenQuanYi Micro Hei&quot;, sans-serif, SimHei, SimSun; background-color: #ffffff; line-height: 26px !important;">centos7安装distcc</p><p style="box-sizing: border-box; outline: 0px; margin: 0px 0px 16px; padding: 0px; font-size: 16px; color: #4d4d4d; overflow: auto hidden; overflow-wrap: break-word; font-family: -apple-system, &quot;SF UI Text&quot;, Arial, &quot;PingFang SC&quot;, &quot;Hiragino Sans GB&quot;, &quot;Microsoft YaHei&quot;, &quot;WenQuanYi Micro Hei&quot;, sans-serif, SimHei, SimSun; background-color: #ffffff; line-height: 26px !important;">依赖项：</p><p style="box-sizing: border-box; outline: 0px; margin: 0px 0px 16px; padding: 0px; font-size: 16px; color: #4d4d4d; overflow: auto hidden; overflow-wrap: break-word; font-family: -apple-system, &quot;SF UI Text&quot;, Arial, &quot;PingFang SC&quot;, &quot;Hiragino Sans GB&quot;, &quot;Microsoft YaHei&quot;, &quot;WenQuanYi Micro Hei&quot;, sans-serif, SimHei, SimSun; background-color: #ffffff; line-height: 26px !important;">安装g++<br style="box-sizing: border-box; outline: 0px; overflow-wrap: break-word;" />yum install -y gcc<br style="box-sizing: border-box; outline: 0px; overflow-wrap: break-word;" />yum install -y gcc-c++</p><p style="box-sizing: border-box; outline: 0px; margin: 0px 0px 16px; padding: 0px; font-size: 16px; color: #4d4d4d; overflow: auto hidden; overflow-wrap: break-word; font-family: -apple-system, &quot;SF UI Text&quot;, Arial, &quot;PingFang SC&quot;, &quot;Hiragino Sans GB&quot;, &quot;Microsoft YaHei&quot;, &quot;WenQuanYi Micro Hei&quot;, sans-serif, SimHei, SimSun; background-color: #ffffff; line-height: 26px !important;">python：<br style="box-sizing: border-box; outline: 0px; overflow-wrap: break-word;" />python3.1版本以上。<br style="box-sizing: border-box; outline: 0px; overflow-wrap: break-word;" />yum install -y python36</p><p style="box-sizing: border-box; outline: 0px; margin: 0px 0px 16px; padding: 0px; font-size: 16px; color: #4d4d4d; overflow: auto hidden; overflow-wrap: break-word; font-family: -apple-system, &quot;SF UI Text&quot;, Arial, &quot;PingFang SC&quot;, &quot;Hiragino Sans GB&quot;, &quot;Microsoft YaHei&quot;, &quot;WenQuanYi Micro Hei&quot;, sans-serif, SimHei, SimSun; background-color: #ffffff; line-height: 26px !important;">python环境<br style="box-sizing: border-box; outline: 0px; overflow-wrap: break-word;" />安装python3-devel， &nbsp; &nbsp; &nbsp;distcc安装时候需要其中的依赖<br style="box-sizing: border-box; outline: 0px; overflow-wrap: break-word;" />yum install -y python3-devel</p><p style="box-sizing: border-box; outline: 0px; margin: 0px 0px 16px; padding: 0px; font-size: 16px; color: #4d4d4d; overflow: auto hidden; overflow-wrap: break-word; font-family: -apple-system, &quot;SF UI Text&quot;, Arial, &quot;PingFang SC&quot;, &quot;Hiragino Sans GB&quot;, &quot;Microsoft YaHei&quot;, &quot;WenQuanYi Micro Hei&quot;, sans-serif, SimHei, SimSun; background-color: #ffffff; line-height: 26px !important;">安装libbinutils 库 &nbsp; &nbsp; &nbsp; distcc需要依赖<br style="box-sizing: border-box; outline: 0px; overflow-wrap: break-word;" />yum install -y binutils-devel</p><p style="box-sizing: border-box; outline: 0px; margin: 0px 0px 16px; padding: 0px; font-size: 16px; color: #4d4d4d; overflow: auto hidden; overflow-wrap: break-word; font-family: -apple-system, &quot;SF UI Text&quot;, Arial, &quot;PingFang SC&quot;, &quot;Hiragino Sans GB&quot;, &quot;Microsoft YaHei&quot;, &quot;WenQuanYi Micro Hei&quot;, sans-serif, SimHei, SimSun; background-color: #ffffff; line-height: 26px !important;">下载distcc包<br style="box-sizing: border-box; outline: 0px; overflow-wrap: break-word;" />https://distcc.github.io/&nbsp;<br style="box-sizing: border-box; outline: 0px; overflow-wrap: break-word;" />下载最新的安装包就好，我用的是distcc3.3.3</p><p style="box-sizing: border-box; outline: 0px; margin: 0px 0px 16px; padding: 0px; font-size: 16px; color: #4d4d4d; overflow: auto hidden; overflow-wrap: break-word; font-family: -apple-system, &quot;SF UI Text&quot;, Arial, &quot;PingFang SC&quot;, &quot;Hiragino Sans GB&quot;, &quot;Microsoft YaHei&quot;, &quot;WenQuanYi Micro Hei&quot;, sans-serif, SimHei, SimSun; background-color: #ffffff; line-height: 26px !important;">1 tar -xvf distcc-3.3.3.tar.gz<br style="box-sizing: border-box; outline: 0px; overflow-wrap: break-word;" />2 cd distcc-3.3.3<br style="box-sizing: border-box; outline: 0px; overflow-wrap: break-word;" />3 ./configure &nbsp; 如果报错Cannot find libiberty。需要安装libbinutils 库 &nbsp;<br style="box-sizing: border-box; outline: 0px; overflow-wrap: break-word;" />4 make &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;如果报错，应该是上面的安装依赖项没安装全&nbsp;<br style="box-sizing: border-box; outline: 0px; overflow-wrap: break-word;" />5 make install<br style="box-sizing: border-box; outline: 0px; overflow-wrap: break-word;" />6 ln -s ./distcc-3.3.3/distcc /usr/lib/distcc</p><p style="box-sizing: border-box; outline: 0px; margin: 0px 0px 16px; padding: 0px; font-size: 16px; color: #4d4d4d; overflow: auto hidden; overflow-wrap: break-word; font-family: -apple-system, &quot;SF UI Text&quot;, Arial, &quot;PingFang SC&quot;, &quot;Hiragino Sans GB&quot;, &quot;Microsoft YaHei&quot;, &quot;WenQuanYi Micro Hei&quot;, sans-serif, SimHei, SimSun; background-color: #ffffff; line-height: 26px !important;">配置：<br style="box-sizing: border-box; outline: 0px; overflow-wrap: break-word;" />vim ~/.bashrc<br style="box-sizing: border-box; outline: 0px; overflow-wrap: break-word;" />export DISTCC_HOSTS="localhost"<br style="box-sizing: border-box; outline: 0px; overflow-wrap: break-word;" />export DISTCC_POTENTIAL_HOSTS="localhost"<br style="box-sizing: border-box; outline: 0px; overflow-wrap: break-word;" />export DISTCC_LOG="./distcc.log" #编译日志</p><p style="box-sizing: border-box; outline: 0px; margin: 0px 0px 16px; padding: 0px; font-size: 16px; color: #4d4d4d; overflow: auto hidden; overflow-wrap: break-word; font-family: -apple-system, &quot;SF UI Text&quot;, Arial, &quot;PingFang SC&quot;, &quot;Hiragino Sans GB&quot;, &quot;Microsoft YaHei&quot;, &quot;WenQuanYi Micro Hei&quot;, sans-serif, SimHei, SimSun; background-color: #ffffff; line-height: 26px !important;">意外：如果以上都配置好了，还是连不上，关掉防火墙，重试<br style="box-sizing: border-box; outline: 0px; overflow-wrap: break-word;" />systemctl stop firewall</p><p style="box-sizing: border-box; outline: 0px; margin: 0px 0px 16px; padding: 0px; font-size: 16px; color: #4d4d4d; overflow: auto hidden; overflow-wrap: break-word; font-family: -apple-system, &quot;SF UI Text&quot;, Arial, &quot;PingFang SC&quot;, &quot;Hiragino Sans GB&quot;, &quot;Microsoft YaHei&quot;, &quot;WenQuanYi Micro Hei&quot;, sans-serif, SimHei, SimSun; background-color: #ffffff; line-height: 26px !important;">安装ccache<br style="box-sizing: border-box; outline: 0px; overflow-wrap: break-word;" />yum install -y ccache<br style="box-sizing: border-box; outline: 0px; overflow-wrap: break-word;" />vim ~/.bash_profile<br style="box-sizing: border-box; outline: 0px; overflow-wrap: break-word;" />PATH=/usr/lib/ccache/bin:$PATH:$HOME/bin<br style="box-sizing: border-box; outline: 0px; overflow-wrap: break-word;" />&nbsp;</p><p style="box-sizing: border-box; outline: 0px; margin: 0px 0px 16px; padding: 0px; font-size: 16px; color: #4d4d4d; overflow: auto hidden; overflow-wrap: break-word; font-family: -apple-system, &quot;SF UI Text&quot;, Arial, &quot;PingFang SC&quot;, &quot;Hiragino Sans GB&quot;, &quot;Microsoft YaHei&quot;, &quot;WenQuanYi Micro Hei&quot;, sans-serif, SimHei, SimSun; background-color: #ffffff; line-height: 26px !important;">开启指令</p><p style="box-sizing: border-box; outline: 0px; margin: 0px 0px 16px; padding: 0px; font-size: 16px; color: #4d4d4d; overflow: auto hidden; overflow-wrap: break-word; font-family: -apple-system, &quot;SF UI Text&quot;, Arial, &quot;PingFang SC&quot;, &quot;Hiragino Sans GB&quot;, &quot;Microsoft YaHei&quot;, &quot;WenQuanYi Micro Hei&quot;, sans-serif, SimHei, SimSun; background-color: #ffffff; line-height: 26px !important;">distccd --daemon --allow 192.168.0.0/8 --user nobody --enable-tcp-insecure</p><img src ="http://www.cppblog.com/markqian86/aggbug/217577.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/markqian86/" target="_blank">长戟十三千</a> 2021-01-19 10:20 <a href="http://www.cppblog.com/markqian86/archive/2021/01/19/217577.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Linux Makefile 生成 *.d 依赖文件以及 gcc -M -MF -MP 等相关选项说明</title><link>http://www.cppblog.com/markqian86/archive/2020/12/29/217553.html</link><dc:creator>长戟十三千</dc:creator><author>长戟十三千</author><pubDate>Tue, 29 Dec 2020 11:24:00 GMT</pubDate><guid>http://www.cppblog.com/markqian86/archive/2020/12/29/217553.html</guid><wfw:comment>http://www.cppblog.com/markqian86/comments/217553.html</wfw:comment><comments>http://www.cppblog.com/markqian86/archive/2020/12/29/217553.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/markqian86/comments/commentRss/217553.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/markqian86/services/trackbacks/217553.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 1. 为什么要使用后缀名为 .d 的依赖文件？在 Makefile 中， 目标文件的依赖关系需要包含一系列的头文件。比如main.c 源文件内容如下：#include "stdio.h" #include "defs.h"  int main(int argc, char *argv[]) { 	printf("Hello, %s!\n", NAME); 	return 0; } 		 12345...&nbsp;&nbsp;<a href='http://www.cppblog.com/markqian86/archive/2020/12/29/217553.html'>阅读全文</a><img src ="http://www.cppblog.com/markqian86/aggbug/217553.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/markqian86/" target="_blank">长戟十三千</a> 2020-12-29 19:24 <a href="http://www.cppblog.com/markqian86/archive/2020/12/29/217553.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>.NET Core 3 在 CentOS 7 x64 下部署</title><link>http://www.cppblog.com/markqian86/archive/2020/12/28/217552.html</link><dc:creator>长戟十三千</dc:creator><author>长戟十三千</author><pubDate>Mon, 28 Dec 2020 09:45:00 GMT</pubDate><guid>http://www.cppblog.com/markqian86/archive/2020/12/28/217552.html</guid><wfw:comment>http://www.cppblog.com/markqian86/comments/217552.html</wfw:comment><comments>http://www.cppblog.com/markqian86/archive/2020/12/28/217552.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/markqian86/comments/commentRss/217552.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/markqian86/services/trackbacks/217552.html</trackback:ping><description><![CDATA[<div><div><h4>1. 在 CentOS 7 上安装 .NET Core 运行时</h4> <ul> <li>在安装. net之前，您需要注册Microsoft密钥、注册产品存储库并安装所需的依赖项。这只需要在每台机器上执行一次。</li> </ul> <div><button type="button" aria-label="复制代码"><em aria-label="icon: copy"  anticon-copy"=""><svg viewbox="64 64 896 896" focusable="false" data-icon="copy" width="1em" height="1em" fill="currentColor" aria-hidden="true"></svg></em></button><pre language-ruby"=""><code language-ruby"="">sudo rpm <span operator"="">-</span><span constant"="">Uvh</span> https<span punctuation"="">:</span><span operator"="">/</span><span operator"="">/</span>packages<span punctuation"="">.</span>microsoft<span punctuation"="">.</span>com<span operator"="">/</span>config<span operator"="">/</span>centos<span operator"="">/</span><span number"="">7</span><span operator"="">/</span>packages<span operator"="">-</span>microsoft<span operator"="">-</span>prod<span punctuation"="">.</span>rpm </code></pre></div> <ul> <li>安装运行时</li> </ul> <div><button type="button" aria-label="复制代码"><em aria-label="icon: copy"  anticon-copy"=""><svg viewbox="64 64 896 896" focusable="false" data-icon="copy" width="1em" height="1em" fill="currentColor" aria-hidden="true"></svg></em></button><pre language-css"=""><code language-css"="">sudo yum update sudo yum install aspnetcore-runtime-3.0 </code></pre></div> <blockquote> <p>如果要安装 .NET SDK，使用 <code>sudo yum install dotnet-sdk-3.0</code> 这个命令。</p> </blockquote> <ul> <li>检查是否正确安装</li> </ul> <div><button type="button" aria-label="复制代码"><em aria-label="icon: copy"  anticon-copy"=""><svg viewbox="64 64 896 896" focusable="false" data-icon="copy" width="1em" height="1em" fill="currentColor" aria-hidden="true"></svg></em></button><pre language-undefined"=""><code language-undefined"="">dotnet </code></pre></div> <blockquote> <p>如果运行该命令，打印出关于如何使用dotnet的信息，就可以开始了。</p> </blockquote> <h4>2. 准备一个 .NET Core 3 的 Web 应用</h4> <p>编辑一个 .NET Core 3 的 Web 应用</p> <h4>3. 发布程序</h4> <p>右键项目，选择发布，一步一步操作即可，目标运行时选择 linux-x64。</p> <blockquote> <p>使用的 VS 2019</p> </blockquote> <h4>4. 发布的程序上传到 CentOS 服务器上</h4> <ol> <li>cd 到指定目录</li> <li>运行 dotnet 项目.dll 或者 nohup dotnet 项目.dll</li> <li>访问网站，能够看到网站已经能够访问</li> </ol> <blockquote> <p>查看防火墙状态：systemctl status firewalld <br /><br /> 查询指定端口是否开启：firewalld-cmd --query-port=80/tcp <br /><br /> 开启防火墙：systemctl start firewalld <br /><br /> 关闭防火墙：systemctl stop firewalld</p> </blockquote> <h4>5. 安装 Nginx</h4> <h4>6. 配置 Nginx 代理</h4> <ol> <li>定位到 nginx 配置文件目录</li> </ol> <div><button type="button" aria-label="复制代码"><em aria-label="icon: copy"  anticon-copy"=""><svg viewbox="64 64 896 896" focusable="false" data-icon="copy" width="1em" height="1em" fill="currentColor" aria-hidden="true"></svg></em></button><pre language-bash"=""><code language-bash"="">cd /etc/nginx/conf.d/ </code></pre></div> <ol start="2"> <li>编辑配置文件</li> </ol> <div><button type="button" aria-label="复制代码"><em aria-label="icon: copy"  anticon-copy"=""><svg viewbox="64 64 896 896" focusable="false" data-icon="copy" width="1em" height="1em" fill="currentColor" aria-hidden="true"></svg></em></button><pre language-cpp"=""><code language-cpp"="">vim <span keyword"="">default</span><span punctuation"="">.</span>conf </code></pre></div> <p>如下</p> <div><button type="button" aria-label="复制代码"><em aria-label="icon: copy"  anticon-copy"=""><svg viewbox="64 64 896 896" focusable="false" data-icon="copy" width="1em" height="1em" fill="currentColor" aria-hidden="true"></svg></em></button><pre language-cpp"=""><code language-cpp"="">   location <span operator"="">/</span> <span punctuation"="">{</span>         proxy_pass http<span operator"="">:</span><span operator"="">/</span><span operator"="">/</span>localhost<span operator"="">:</span><span number"="">5000</span><span punctuation"="">;</span>     <span punctuation"="">}</span> </code></pre></div> <p>将请求映射到本地请求的 5000 端口上。</p> <ol start="3"> <li>如果报错 13: Permission denied while connecting to upstream 之类的错误，参考：<a href="https://links.jianshu.com/go?to=https%3A%2F%2Fwww.cnblogs.com%2Fsongxingzhu%2Fp%2F10063043.html" target="_blank">https://www.cnblogs.com/songxingzhu/p/10063043.html</a> </li> </ol> <div><button type="button" aria-label="复制代码"><em aria-label="icon: copy"  anticon-copy"=""><svg viewbox="64 64 896 896" focusable="false" data-icon="copy" width="1em" height="1em" fill="currentColor" aria-hidden="true"></svg></em></button><pre language-undefined"=""><code language-undefined"="">setsebool -P httpd_can_network_connect 1 </code></pre></div> <h4>7. 安装 Supervisor</h4> <h4>8. 使用 Supervisor 配置守护进程</h4> <p>在 <code>/etc/supervisor/conf.d/</code> 下创建 sampleDemo.ini 文件</p> <p>sampleDemo.ini 配置文件如下</p> <div><button type="button" aria-label="复制代码"><em aria-label="icon: copy"  anticon-copy"=""><svg viewbox="64 64 896 896" focusable="false" data-icon="copy" width="1em" height="1em" fill="currentColor" aria-hidden="true"></svg></em></button><pre language-ruby"=""><code language-ruby"=""><span punctuation"="">[</span>program<span symbol"="">:SampleDemo</span><span punctuation"="">]</span>   <span punctuation"="">;</span>程序名称 command<span operator"="">=</span>dotnet <span constant"="">WebUI</span><span punctuation"="">.</span>dll <span punctuation"="">;</span>需要执行的命令 directory<span operator"="">=</span><span operator"="">/</span>usr<span operator"="">/</span>local<span operator"="">/</span>dotnetCore3<span operator"="">/</span>sampleDemo <span punctuation"="">;</span>命令执行的目录 environment<span operator"="">=</span><span constant"="">ASPNETCORE__ENVIRONMENT</span><span operator"="">=</span><span constant"="">Production</span> <span punctuation"="">;</span>环境变量 user<span operator"="">=</span>root <span punctuation"="">;</span>用户 stopsignal<span operator"="">=</span><span constant"="">INT</span> <span punctuation"="">;</span>当请求停止时用来终止程序的信号。这可以是任何术语，<span constant"="">HUP</span><span punctuation"="">,</span> <span constant"="">INT</span><span punctuation"="">,</span> <span constant"="">QUIT</span><span punctuation"="">,</span> <span constant"="">KILL</span><span punctuation"="">,</span> <span constant"="">USR1</span>或<span constant"="">USR2</span>。 autostart<span operator"="">=</span><span keyword"="">true</span> <span punctuation"="">;</span>是否自启动 autorestart<span operator"="">=</span><span keyword"="">true</span> <span punctuation"="">;</span>是否自动重启 startsecs<span operator"="">=</span><span number"="">10</span> <span punctuation"="">;</span>自动重启时间间隔（s） stderr_logfile<span operator"="">=</span><span operator"="">/</span>var<span operator"="">/</span>log<span operator"="">/</span>sampleDemo<span operator"="">/</span>err<span punctuation"="">.</span>log <span punctuation"="">;</span>错误日志文件 stdout_logfile<span operator"="">=</span><span operator"="">/</span>var<span operator"="">/</span>log<span operator"="">/</span>sampleDemo<span operator"="">/</span>out<span punctuation"="">.</span>log <span punctuation"="">;</span>输出日志文件 </code></pre></div> <p><a href="https://links.jianshu.com/go?to=http%3A%2F%2Fwww.supervisord.org%2Fconfiguration.html%23program-x-section-settings" target="_blank">http://www.supervisord.org/configuration.html#program-x-section-settings</a></p> <blockquote> <p>重启：supervisorctl reload</p> </blockquote> <p>访问 Supervisor Web 管理器，可以实现对部署程序的启动、停止、重启等操作。</p></div><br /><br />作者：一青叶<br />链接：https://www.jianshu.com/p/88662513c69b<br />来源：简书<br />著作权归作者所有。商业转载请联系作者获得授权，非商业转载请注明出处。</div><img src ="http://www.cppblog.com/markqian86/aggbug/217552.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/markqian86/" target="_blank">长戟十三千</a> 2020-12-28 17:45 <a href="http://www.cppblog.com/markqian86/archive/2020/12/28/217552.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>p4 linux下切换工作区</title><link>http://www.cppblog.com/markqian86/archive/2020/11/25/217516.html</link><dc:creator>长戟十三千</dc:creator><author>长戟十三千</author><pubDate>Wed, 25 Nov 2020 07:19:00 GMT</pubDate><guid>http://www.cppblog.com/markqian86/archive/2020/11/25/217516.html</guid><wfw:comment>http://www.cppblog.com/markqian86/comments/217516.html</wfw:comment><comments>http://www.cppblog.com/markqian86/archive/2020/11/25/217516.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/markqian86/comments/commentRss/217516.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/markqian86/services/trackbacks/217516.html</trackback:ping><description><![CDATA[1、p4 client my_workspace<br />&nbsp; &nbsp;修改view，配置myclient<br /><br />2、/data/mydir/ 目录下创建 .p4config文件，添加内容：<br /><br /><div>P4USER=myuser</div><div>P4CLIENT=myclient<br /><br />3、vim ~/.bashrc, 添加<br /><br /><div>export P4USER=myuser</div><div>export P4PORT=10.8.7.9:666</div><div>export P4CONFIG=.p4config</div><div>export P4IGNORE=.p4ignore</div><br />4、source ~/.bashrc<br /><br />5、p4 set<br /><br />6、p4 sync ./...<br /></div><img src ="http://www.cppblog.com/markqian86/aggbug/217516.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/markqian86/" target="_blank">长戟十三千</a> 2020-11-25 15:19 <a href="http://www.cppblog.com/markqian86/archive/2020/11/25/217516.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>