在 Linux 下搭建 Git 服务器_chown -r git:git wechat-程序员宅基地

<div id="mainContent">
	<div class="forFlow">
		
<div id="post_detail">
<!--done-->
<div id="topics">
	<div class="post">
		<h1 class="postTitle">
			<a id="cb_post_title_url" class="postTitle2" href="http://www.cnblogs.com/dee0912/p/5815267.html">在 Linux 下搭建 Git 服务器</a>
		</h1>
		<div class="clear"></div>
		<div class="postBody">
			<div id="cnblogs_post_body"><div class="cnblogs_code">
<pre><span style="color: #000000;">环境:</span><span style="color: #000000;">
服务器 CentOS6.6 + git(version </span><span style="color: #800080;">1.7</span>.<span style="color: #800080;">1)<br><span style="color: #000000;">客户端 Windows10 + </span></span>git(version 2.8.4.windows.1)</pre>
</div>
<h2> </h2>
<h2>① 安装 Git</h2>
<p>Linux 做为服务器端系统,Windows 作为客户端系统,分别安装 Git</p>
<p><strong>服务器端:</strong></p>
<div class="cnblogs_code">
<pre>#yum install -y git</pre>
</div>
<p>安装完后,查看 Git 版本</p>
<div class="cnblogs_code">
<pre>[root@localhost ~]# git --<span style="color: #000000;">version
git version </span><span style="color: #800080;">1.7</span>.<span style="color: #800080;">1</span></pre>
</div>
<p> </p>
<p><strong>客户端:</strong></p>
<p>下载 <a href="https://github.com/git-for-windows/git/releases/download/v2.9.3.windows.2/Git-2.9.3.2-64-bit.exe" target="_blank">Git for Windows</a>,地址:<a href="https://git-for-windows.github.io/" target="_blank">https://git-for-windows.github.io/</a></p>
<p>安装完之后,可以使用 Git Bash 作为命令行客户端。</p>
<p>安装完之后,查看 Git 版本</p>
<div class="cnblogs_code">
<pre>$ git --<span style="color: #000000;">version
git version </span><span style="color: #800080;">2.8</span>.<span style="color: #800080;">4</span>.windows.<span style="color: #800080;">1</span></pre>
</div>
<p> </p>
<h2>② 服务器端创建 git 用户,用来管理 Git 服务,并为 git 用户设置密码</h2>
<div class="cnblogs_code">
<pre><span style="color: #000000;">[root@localhost home]# id git
id: git:无此用户
[root@localhost home]# useradd git
[root@localhost home]# passwd git<br></span></pre>
</div>
<p> </p>
<h2>③ 服务器端创建 Git 仓库</h2>
<p>设置 /home/data/git/gittest.git 为 Git 仓库</p>
<p>然后把 Git 仓库的 owner 修改为 git</p>
<div class="cnblogs_code">
<pre>[root@localhost home]# mkdir -p data/git/<span style="color: #000000;">gittest.git
[root@localhost home]# git init </span>--bare data/git/<span style="color: #000000;">gittest.git
Initialized empty Git repository </span><span style="color: #0000ff;">in</span> /home/data/git/gittest.git/<span style="color: #000000;">
[root@localhost home]# cd data</span>/git/<span style="color: #000000;">
[root@localhost git]# chown </span>-R git:git gittest.git/</pre>
</div>
<p> </p>
<h2>④ 客户端 clone 远程仓库</h2>
<p>进入 Git Bash 命令行客户端,创建项目地址(设置在 d:/wamp64/www/gittest_gitbash)并进入:</p>
<div class="cnblogs_code"><div class="cnblogs_code_toolbar"><span class="cnblogs_code_copy"><a href="javascript:void(0);" οnclick="copyCnblogsCode(this)" title="复制代码"><img src="//common.cnblogs.com/images/copycode.gif" alt="复制代码"></a></span></div>
<pre>dee@Lenovo-PC MINGW64 /<span style="color: #000000;">d
$ cd wamp64</span>/<span style="color: #000000;">www

dee@Lenovo</span>-PC MINGW64 /d/wamp64/<span style="color: #000000;">www
$ mkdir gittest_gitbash

dee@Lenovo</span>-PC MINGW64 /d/wamp64/<span style="color: #000000;">www
$ cd gittest_gitbash

dee@Lenovo</span>-PC MINGW64 /d/wamp64/www/<span style="color: #000000;">gittest_gitbash
$</span></pre>
<div class="cnblogs_code_toolbar"><span class="cnblogs_code_copy"><a href="javascript:void(0);" οnclick="copyCnblogsCode(this)" title="复制代码"><img src="//common.cnblogs.com/images/copycode.gif" alt="复制代码"></a></span></div></div>
<p> </p>
<p>然后从 Linux Git 服务器上 clone 项目:</p>
<div class="cnblogs_Highlighter sh-gutter">
<div><div id="highlighter_218259" class="syntaxhighlighter  csharp"><div class="toolbar"><span><a href="#" class="toolbar_item command_help help">?</a></span></div><table border="0" cellpadding="0" cellspacing="0"><tbody><tr><td class="gutter"><div class="line number1 index0 alt2">1</div></td><td class="code"><div class="container"><div class="line number1 index0 alt2"><code class="csharp plain">$ git clone [email protected]:/home/data/gittest.git</code></div></div></td></tr></tbody></table></div></div>
</div>
<p><img src="http://images2015.cnblogs.com/blog/534303/201608/534303-20160828224409166-1327160680.png" alt="">  </p>
<p>当第一次连接到目标 Git 服务器时会得到一个提示:</p>
<div class="cnblogs_code">
<pre>The authenticity of host <span style="color: #800000;">'</span><span style="color: #800000;">192.168.56.101 (192.168.56.101)</span><span style="color: #800000;">'</span> can<span style="color: #800000;">'</span><span style="color: #800000;">t be established.</span>
RSA key fingerprint <span style="color: #0000ff;">is</span> SHA256:Ve6WV/<span style="color: #000000;">SCA059EqoUOzbFoZdfmMh3B259nigfmvdadqQ.
Are you sure you want to </span><span style="color: #0000ff;">continue</span> connecting (yes/no)? </pre>
</div>
<p>选择 yes:</p>
<div class="cnblogs_code">
<pre>Warning: Permanently added <span style="color: #800000;">'</span><span style="color: #800000;">192.168.56.101</span><span style="color: #800000;">'</span> (RSA) to the list of known hosts.</pre>
</div>
<p>此时 C:\Users\用户名\.ssh 下会多出一个文件 known_hosts,以后在这台电脑上再次连接目标 Git 服务器时不会再提示上面的语句。</p>
<p><img src="http://images2015.cnblogs.com/blog/534303/201608/534303-20160828225138698-412131557.png" alt=""></p>
<p>后面提示要输入密码,可以采用 SSH 公钥来进行验证。</p>
<p> </p>
<h2>⑤ 客户端创建 SSH 公钥和私钥</h2>
<div class="cnblogs_code">
<pre>$ ssh-keygen -t rsa -C <span style="color: #800000;">"</span><span style="color: #800000;">[email protected]</span><span style="color: #800000;">"</span></pre>
</div>
<p><img src="http://images2015.cnblogs.com/blog/534303/201608/534303-20160828225309533-1152112221.png" alt=""></p>
<p>此时 C:\Users\用户名\.ssh 下会多出两个文件 id_rsa 和 id_rsa.pub</p>
<p>id_rsa 是私钥</p>
<p>id_rsa.pub 是公钥</p>
<p><img src="http://images2015.cnblogs.com/blog/534303/201608/534303-20160828225436257-770631205.png" alt="" width="890" height="356"></p>
<p> </p>
<h2>⑥ 服务器端 Git 打开 RSA 认证</h2>
<p>进入 /etc/ssh 目录,编辑 sshd_config,打开以下三个配置的注释:</p>
<div class="cnblogs_code">
<pre><span style="color: #000000;">RSAAuthentication yes
PubkeyAuthentication yes
AuthorizedKeysFile .ssh</span>/authorized_keys</pre>
</div>
<p>保存并重启 sshd 服务:</p>
<div class="cnblogs_code">
<pre>[root@localhost ssh]# /etc/rc.d/init.d/sshd restart</pre>
</div>
<p> </p>
<p>由 AuthorizedKeysFile 得知公钥的存放路径是 .ssh/authorized_keys,实际上是 $Home/.ssh/authorized_keys,由于管理 Git 服务的用户是 git,所以实际存放公钥的路径是 /home/git/.ssh/authorized_keys</p>
<p>在 /home/git/ 下创建目录 .ssh</p>
<div class="cnblogs_code">
<pre><span style="color: #000000;">[root@localhost git]# pwd
</span>/home/<span style="color: #000000;">git<br></span>[root@localhost git]# mkdir .ssh<br><span>[root@localhost git]# ls </span>-<span>a <br>. .. .bash_logout .bash_profile .bashrc .gnome2 .mozilla .ssh</span></pre>
</div>
<p>然后把 .ssh 文件夹的 owner 修改为 git</p>
<div class="cnblogs_code"><div class="cnblogs_code_toolbar"><span class="cnblogs_code_copy"><a href="javascript:void(0);" οnclick="copyCnblogsCode(this)" title="复制代码"><img src="//common.cnblogs.com/images/copycode.gif" alt="复制代码"></a></span></div>
<pre>[root@localhost git]# chown -<span style="color: #000000;">R git:git .ssh
[root@localhost git]# ll </span>-<span style="color: #000000;">a
总用量 </span><span style="color: #800080;">32</span><span style="color: #000000;">
drwx</span>------. <span style="color: #800080;">5</span> git  git  <span style="color: #800080;">4096</span> 8月  <span style="color: #800080;">28</span> <span style="color: #800080;">20</span>:<span style="color: #800080;">04</span><span style="color: #000000;"> .
drwxr</span>-xr-x. <span style="color: #800080;">8</span> root root <span style="color: #800080;">4096</span> 8月  <span style="color: #800080;">28</span> <span style="color: #800080;">19</span>:<span style="color: #800080;">32</span><span style="color: #000000;"> ..
</span>-rw-r--r--. <span style="color: #800080;">1</span> git  git    <span style="color: #800080;">18</span> 10月 <span style="color: #800080;">16</span> <span style="color: #800080;">2014</span><span style="color: #000000;"> .bash_logout
</span>-rw-r--r--. <span style="color: #800080;">1</span> git  git   <span style="color: #800080;">176</span> 10月 <span style="color: #800080;">16</span> <span style="color: #800080;">2014</span><span style="color: #000000;"> .bash_profile
</span>-rw-r--r--. <span style="color: #800080;">1</span> git  git   <span style="color: #800080;">124</span> 10月 <span style="color: #800080;">16</span> <span style="color: #800080;">2014</span><span style="color: #000000;"> .bashrc
drwxr</span>-xr-x. <span style="color: #800080;">2</span> git  git  <span style="color: #800080;">4096</span> 11月 <span style="color: #800080;">12</span> <span style="color: #800080;">2010</span><span style="color: #000000;"> .gnome2
drwxr</span>-xr-x. <span style="color: #800080;">4</span> git  git  <span style="color: #800080;">4096</span> 5月   <span style="color: #800080;">8</span> <span style="color: #800080;">12</span>:<span style="color: #800080;">22</span><span style="color: #000000;"> .mozilla
drwxr</span>-xr-x. <span style="color: #800080;">2</span> git  git  <span style="color: #800080;">4096</span> 8月  <span style="color: #800080;">28</span> <span style="color: #800080;">20</span>:<span style="color: #800080;">08</span> .ssh</pre>
<div class="cnblogs_code_toolbar"><span class="cnblogs_code_copy"><a href="javascript:void(0);" οnclick="copyCnblogsCode(this)" title="复制代码"><img src="//common.cnblogs.com/images/copycode.gif" alt="复制代码"></a></span></div></div>
<p> </p>
<h2>⑦ 将客户端公钥导入服务器端 /home/git/.ssh/authorized_keys 文件</h2>
<p>回到 Git Bash 下,导入文件:</p>
<div class="cnblogs_code">
<pre>$ ssh git@<span style="color: #800080;">192.168</span>.<span style="color: #800080;">56.101</span> <span style="color: #800000;">'</span><span style="color: #800000;">cat >> .ssh/authorized_keys</span><span style="color: #800000;">'</span> < ~/.ssh/id_rsa.pub</pre>
</div>
<p>需要输入服务器端 git 用户的密码</p>
<p><img src="http://images2015.cnblogs.com/blog/534303/201608/534303-20160828230957010-2048402011.png" alt=""></p>
<p> </p>
<p>回到服务器端,查看 .ssh 下是否存在 authorized_keys 文件:</p>
<div class="cnblogs_code">
<pre><span style="color: #000000;">[root@localhost git]# cd .ssh
[root@localhost .ssh]# ll
总用量 </span><span style="color: #800080;">4</span>
-rw-rw-r--. <span style="color: #800080;">1</span> git git <span style="color: #800080;">398</span> 8月  <span style="color: #800080;">28</span> <span style="color: #800080;">20</span>:<span style="color: #800080;">08</span> authorized_keys</pre>
</div>
<p>可以查看一下是否是客户端生成的公钥。</p>
<p> </p>
<p><strong><span style="color: #ff0000;">重要:</span></strong></p>
<p><strong><span style="color: #ff0000;">修改 .ssh 目录的权限为 700</span></strong></p>
<p><strong><span style="color: #ff0000;">修改 .ssh/authorized_keys 文件的权限为 600</span></strong></p>
<div class="cnblogs_code">
<pre>[root@localhost git]# chmod <span style="color: #800080;">700</span><span style="color: #000000;"> .ssh
[root@localhost git]# cd .ssh
[root@localhost .ssh]# chmod </span><span style="color: #800080;">600</span> authorized_keys </pre>
</div>
<p> </p>
<h2>⑧ 客户端再次 clone 远程仓库</h2>
<div class="cnblogs_code">
<pre>$ git clone git@<span style="color: #800080;">192.168</span>.<span style="color: #800080;">56.101</span>:/home/data/git/gittest.git</pre>
</div>
<p><img src="http://images2015.cnblogs.com/blog/534303/201608/534303-20160828232005724-1805448371.png" alt=""></p>
<p> </p>
<p>查看客户端项目目录:</p>
<p><img src="http://images2015.cnblogs.com/blog/534303/201608/534303-20160828232049743-1094594088.png" alt="" width="887" height="342"></p>
<p> </p>
<p>项目已经 clone 了。</p>
<p> </p>
<p>也可以使用 tortoiseGit 客户端来管理项目:</p>
<p><img src="http://images2015.cnblogs.com/blog/534303/201608/534303-20160828232607719-1403152861.png" alt="" width="884" height="509"></p>
<p>clone</p>
<p><img src="http://images2015.cnblogs.com/blog/534303/201608/534303-20160828232757086-2087480963.png" alt=""></p>
<p> </p>
<h2>⑨ 禁止 git 用户 ssh 登录服务器</h2>
<p>之前在服务器端创建的 git 用户不允许 ssh 登录服务器</p>
<p>编辑 /etc/passwd</p>
<p>找到:</p>
<div class="cnblogs_code">
<pre>git:x:<span style="color: #800080;">502</span>:<span style="color: #800080;">504</span>::/home/git:/bin/bash</pre>
</div>
<p>修改为</p>
<div class="cnblogs_code">
<pre>git:x:<span style="color: #800080;">502</span>:<span style="color: #800080;">504</span>::/home/git:/bin/git-shell</pre>
</div>
<p>此时 git 用户可以正常通过 ssh 使用 git,但无法通过 ssh 登录系统。</p>
<p> </p>
<p>参考:<a href="http://blog.csdn.net/wave_1102/article/details/47779401" target="_blank">在CentOS下搭建自己的Git服务器</a></p></div><div id="MySignature"></div>
<div class="clear"></div>
<div id="blog_post_info_block">
<div id="BlogPostCategory"></div>
<div id="EntryTag">标签: <a href="http://www.cnblogs.com/dee0912/tag/git/">git</a></div>
<div id="blog_post_info"><div id="green_channel">
        <a href="javascript:void(0);" id="green_channel_digg" οnclick="DiggIt(5815267,cb_blogId,1);green_channel_success(this,'谢谢推荐!');">好文要顶</a>
            <a id="green_channel_follow" οnclick="follow('b4fd652a-8fc9-e211-8d02-90b11c0b17d6');" href="javascript:void(0);">关注我</a>
    <a id="green_channel_favorite" οnclick="AddToWz(cb_entryId);return false;" href="javascript:void(0);">收藏该文</a>
    <a id="green_channel_weibo" href="javascript:void(0);" title="分享至新浪微博" οnclick="ShareToTsina()"><img src="//common.cnblogs.com/images/icon_weibo_24.png" alt=""></a>
    <a id="green_channel_wechat" href="javascript:void(0);" title="分享至微信" οnclick="shareOnWechat()"><img src="//common.cnblogs.com/images/wechat.png" alt=""></a>
</div>
<div id="author_profile">
    <div id="author_profile_info" class="author_profile_info">
            <a href="http://home.cnblogs.com/u/dee0912/" target="_blank"><img src="//pic.cnblogs.com/face/534303/20160707124938.png" class="author_avatar" alt=""></a>
        <div id="author_profile_detail" class="author_profile_info">
            <a href="http://home.cnblogs.com/u/dee0912/">黄棣-dee</a><br>
            <a href="http://home.cnblogs.com/u/dee0912/followees">关注 - 7</a><br>
            <a href="http://home.cnblogs.com/u/dee0912/followers">粉丝 - 44</a>
        </div>
    </div>
    <div class="clear"></div>
    <div id="author_profile_honor"></div>
    <div id="author_profile_follow">
                <a href="javascript:void(0);" οnclick="follow('b4fd652a-8fc9-e211-8d02-90b11c0b17d6');return false;">+加关注</a>
    </div>
</div>
<div id="div_digg">
    <div class="diggit" οnclick="votePost(5815267,'Digg')">
        <span class="diggnum" id="digg_count">4</span>
    </div>
    <div class="buryit" οnclick="votePost(5815267,'Bury')">
        <span class="burynum" id="bury_count">0</span>
    </div>
    <div class="clear"></div>
    <div class="diggword" id="digg_tips">
    </div>
</div>
</div>
<div class="clear"></div>
<div id="post_next_prev"><a href="http://www.cnblogs.com/dee0912/p/5795511.html" class="p_n_p_prefix">« </a> 上一篇:<a href="http://www.cnblogs.com/dee0912/p/5795511.html" title="发布于2016-08-22 14:33">使用 SVN Hook 实现服务器端代码自动更新</a><br><a href="http://www.cnblogs.com/dee0912/p/5940288.html" class="p_n_p_prefix">» </a> 下一篇:<a href="http://www.cnblogs.com/dee0912/p/5940288.html" title="发布于2016-10-08 21:44">PHP 使用 curl_* 系列函数和 curl_multi_* 系列函数进行多接口调用时的性能对比</a><br></div>
</div>


		</div>
		<div class="postDesc">posted @ <span id="post-date">2016-08-28 23:36</span> <a href="http://www.cnblogs.com/dee0912/">黄棣-dee</a> 阅读(<span id="post_view_count">14075</span>) 评论(<span id="post_comment_count">2</span>)  <a href="https://i.cnblogs.com/EditPosts.aspx?postid=5815267" rel="nofollow">编辑</a> <a href="#" οnclick="AddToWz(5815267);return false;">收藏</a></div>
	</div>
	<script type="text/javascript">var allowComments=true,cb_blogId=196695,cb_entryId=5815267,cb_blogApp=currentBlogApp,cb_blogUserGuid='b4fd652a-8fc9-e211-8d02-90b11c0b17d6',cb_entryCreatedDate='2016/8/28 23:36:00';loadViewCount(cb_entryId);</script>
	
</div><!--end: topics 文章、评论容器-->
</div><a name="!comments"></a><div id="blog-comments-placeholder"><div id="comments_pager_top"></div>
<!--done-->
<div class="feedback_area_title">评论列表</div>
<div class="feedbackNoItems"></div>
	

		<div class="feedbackItem">
			<div class="feedbackListSubtitle">
				<div class="feedbackManage">
					  <span class="comment_actions"></span>
				</div>
				<a href="#3536957" class="layer">#1楼</a><a name="3536957" id="comment_anchor_3536957"></a>  <span class="comment_date">2016-10-20 15:26</span> <a id="a_comment_author_3536957" href="http://home.cnblogs.com/u/911276/" target="_blank">ck2016</a> <a href="http://msg.cnblogs.com/send/ck2016" title="发送站内短消息" class="sendMsg2This"> </a>
			</div>
			<div class="feedbackCon">
				<div id="comment_body_3536957" class="blog_comment_body">楼主辛苦了,谢谢</div><div class="comment_vote"><a href="javascript:void(0);" class="comment_digg" οnclick="return voteComment(3536957,'Digg',this)">支持(1)</a><a href="javascript:void(0);" class="comment_bury" οnclick="return voteComment(3536957,'Bury',this)">反对(0)</a></div>
			</div>
		</div>
	
		<div class="feedbackItem">
			<div class="feedbackListSubtitle">
				<div class="feedbackManage">
					  <span class="comment_actions"></span>
				</div>
				<a href="#3644941" class="layer">#2楼</a><a name="3644941" id="comment_anchor_3644941"></a><span id="comment-maxId" style="display:none;">3644941</span><span id="comment-maxDate" style="display:none;">2017/3/19 15:53:29</span>  <span class="comment_date">2017-03-19 15:53</span> <a id="a_comment_author_3644941" href="http://www.cnblogs.com/zhouqiren/" target="_blank">mrossZ</a> <a href="http://msg.cnblogs.com/send/mrossZ" title="发送站内短消息" class="sendMsg2This"> </a>
			</div>
			<div class="feedbackCon">
				<div id="comment_body_3644941" class="blog_comment_body">很好,按照楼主所写的 搭建成功了。多谢!</div><div class="comment_vote"><a href="javascript:void(0);" class="comment_digg" οnclick="return voteComment(3644941,'Digg',this)">支持(0)</a><a href="javascript:void(0);" class="comment_bury" οnclick="return voteComment(3644941,'Bury',this)">反对(0)</a></div><span id="comment_3644941_avatar" style="display:none;">http://pic.cnblogs.com/face/871928/20160103210017.png</span>
			</div>
		</div>
	<div id="comments_pager_bottom"></div></div><script type="text/javascript">var commentManager = new blogCommentManager();commentManager.renderComments(0);</script>
<div id="comment_form" class="commentform">
<a name="commentform"></a>
<div id="divCommentShow"></div>
<div id="comment_nav"><span id="span_refresh_tips"></span><a href="javascript:void(0);" οnclick="return RefreshCommentList();" id="lnk_RefreshComments" runat="server" clientidmode="Static">刷新评论</a><a href="#" οnclick="return RefreshPage();">刷新页面</a><a href="#top">返回顶部</a></div>
<div id="comment_form_container"><div class="login_tips">注册用户登录后才能发表评论,请 <a rel="nofollow" href="javascript:void(0);" class="underline" οnclick="return login('commentform');">登录</a> 或 <a rel="nofollow" href="javascript:void(0);" class="underline" οnclick="return register();">注册</a>,<a href="http://www.cnblogs.com">访问</a>网站首页。</div></div>
<div class="ad_text_commentbox" id="ad_text_under_commentbox"></div>
<div id="ad_t2"><a href="http://www.ucancode.com/index.htm" target="_blank">【推荐】50万行VC++源码: 大型组态工控、电力仿真CAD与GIS源码库</a><br><a href="http://www.gcpowertools.com.cn/products/activereports/excel.htm?utm_source=cnblogs&utm_medium=blogpage&utm_term=bottom&utm_content=AR&utm_campaign=community" target="_blank">【报表】Excel 报表开发18 招式,人人都能做报表</a><br><a href="http://click.aliyun.com/m/15483" target="_blank">【活动】阿里云海外云服务全面降价助力企业全球布局</a><br><a href="https://group.cnblogs.com/topic/76829.html" target="_blank">【实用】40+篇云服务器操作及运维基础知识!</a><br></div>
<div id="opt_under_post"></div>
<div id="cnblogs_c1" class="c_ad_block"><a href="https://cn.udacity.com/course/deep-learning-nanodegree-foundation--nd101/?utm_source=cnblogs&utm_medium=referral&utm_campaign=DLND03" target="_blank"><img width="300" height="250" src="https://images2015.cnblogs.com/news/24442/201705/24442-20170517165947322-839645573.jpg" alt="深度学习0525"></a></div>
<div id="under_post_news"><div class="itnews c_ad_block"><b>最新IT新闻</b>:<br> ·  <a href="http://news.cnblogs.com/n/570180/" target="_blank">周鸿祎:初创公司快速成长的“四步走”战略</a><br> ·  <a href="http://news.cnblogs.com/n/570175/" target="_blank">售价5000美元:初代iPad原型机亮相eBay</a><br> ·  <a href="http://news.cnblogs.com/n/570179/" target="_blank">emoi基本生活回应毛巾哥:当年的抄袭,几近拖垮基本生活</a><br> ·  <a href="http://news.cnblogs.com/n/570178/" target="_blank">这就是特斯拉的先进生产线?事故率伤亡率远远高于同行</a><br> ·  <a href="http://news.cnblogs.com/n/570177/" target="_blank">一张图看懂小米Max 2!1699元/5300mAh续航神机</a><br>» <a href="http://news.cnblogs.com/" title="IT新闻" target="_blank">更多新闻...</a></div></div>
<div id="cnblogs_c2" class="c_ad_block"><a href="http://click.aliyun.com/m/17215/" target="_blank"><img width="468" height="60" src="//images2015.cnblogs.com/news/24442/201704/24442-20170417123605337-535991337.jpg" alt="阿里云E4"></a></div>
<div id="under_post_kb"><div class="itnews c_ad_block" id="kb_block"><b>最新知识库文章</b>:<br><div id="kb_recent"> ·  <a href="http://kb.cnblogs.com/page/569992/" target="_blank">程序员的工作、学习与绩效</a><br> ·  <a href="http://kb.cnblogs.com/page/569056/" target="_blank">软件开发为什么很难</a><br> ·  <a href="http://kb.cnblogs.com/page/565901/" target="_blank">唱吧DevOps的落地,微服务CI/CD的范本技术解读</a><br> ·  <a href="http://kb.cnblogs.com/page/566523/" target="_blank">程序员,如何从平庸走向理想?</a><br> ·  <a href="http://kb.cnblogs.com/page/566318/" target="_blank">我为什么鼓励工程师写blog</a><br></div>» <a href="http://kb.cnblogs.com/" target="_blank">更多知识库文章...</a></div></div>
<div id="HistoryToday" class="c_ad_block"></div>
<script type="text/javascript">
    fixPostBody();
    setTimeout(function () { incrementViewCount(cb_entryId); }, 50);
    deliverAdT2();
    deliverAdC1();
    deliverAdC2();    
    loadNewsAndKb();
    loadBlogSignature();
    LoadPostInfoBlock(cb_blogId, cb_entryId, cb_blogApp, cb_blogUserGuid);
    GetPrevNextPost(cb_entryId, cb_blogId, cb_entryCreatedDate);
    loadOptUnderPost();
    GetHistoryToday(cb_blogId, cb_blogApp, cb_entryCreatedDate);   
</script>
</div>


	</div><!--end: forFlow -->
	</div>



版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/FZU_110/article/details/72758212

智能推荐

java编程基础总结——29.多线程编程_public integer call-程序员宅基地

文章浏览阅读100次。多线程编程基础java自身提供了创建多线程的方案:继承Thread 、实现Runable接口、实现Callable接口线程对象的一些常见方法线程对象的一些常见方法:_public integer call

Logstash 对接 Kafka,在写入ES的时候,报错:Will Retry with exponential backoff {:code=>400_encountered a retryable error. will retry with exp-程序员宅基地

文章浏览阅读1.7k次。[2022-05-12T15:09:13,065][ERROR][logstash.outputs.elasticsearch][unreasonable_use_kafka][d2128c0736a801fa462a2aea862c6bbf3923c3cce59e00fc70fa6e234d9dac33] Encountered a retryable error. Will Retry with exponential backoff {:code=>400, :url=>"http://_encountered a retryable error. will retry with exponential backoff {:code=>4

iOS中左右滑动切换,滑动标签页导航的设计思路_ios 多标签左右切换内容-程序员宅基地

文章浏览阅读1.7w次,点赞3次,收藏11次。iOS中左右滑动切换,滑动标签页导航的设计思路iOS开发中经常(几乎每个APP都含有这样的页面吧,几乎!UI设计师也都是这样抄来抄去…..)demo见Github:https://github.com/zhengwenming/SliderTab估计很多人都会说,直接用第三方就可以了,很多人封装过,很好用。而且这样的页面用第三方2分钟搞定,省时省力。 笔者也曾用过第三方,但是屡屡出_ios 多标签左右切换内容

基于微信小程序的点餐系统设计与实现(lw+数据库+讲解等)_微信点餐小程序数据库设计-程序员宅基地

文章浏览阅读947次,点赞28次,收藏15次。基于springboot+uniapp的点餐系统设计与实现_微信点餐小程序数据库设计

python实现yolo目标检测_Yolov5—实现目标检测(win10)-程序员宅基地

文章浏览阅读9.6k次,点赞5次,收藏38次。Yolov5—实现目标检测(win10)该方法可以在win10上实现Yolov5的目标检测,配置前需要安装Anaconda3一、环境配置源码下载地址:https://github.com/ultralytics/yolov5.git推荐使用B站up主修改好的文件配置Yolov5环境。(链接点这里:提取码为“ugpg”)Pytorch:1.5.1Cuda:10.1Python:3.7打开Anacon..._yolov5检测api

mktemp linux,Linux mktemp 命令使用方法-程序员宅基地

文章浏览阅读213次。原标题:Linux mktemp 命令使用方法Linux mktemp命令用于建立暂存文件。mktemp建立的一个暂存文件,供shell 使用。创建临时文件或者目录,这样的创建方式是安全的。此命令的适用范围:RedHat、RHEL、Ubuntu、CentOS、SUSE、openSUSE、Fedora。语法mktemp [-qu][文件名参数]参数:-q  执行时若发生错误,不会显示任何信息。-u ..._xbfi

随便推点

NVIDIA的黑科技3:VXGI体素全局光照_立体像素全局光照-程序员宅基地

文章浏览阅读5.2k次。每一个行业都有自己的“圣杯”,例如能源方面的核聚变、医药方面的癌症特效药以及空间探索方面的超光速推进力。 任何领域中“圣杯”的定义都是难以实现和代价高昂的,或者完全是科幻产物。也许这就是我们之所以对此心驰神往的原因所在。   计算机图形领域的“圣杯”就是“实时全局光照”。全局光照是一种渲染游戏环境的方法,它通过模拟光线的行为,从而体现各个表面之间的光线反射效果。然而以光子级别进行自然仿真处_立体像素全局光照

Shopee(虾皮)运营没流量?没销量?只因你没掌握店铺引流方法大全-程序员宅基地

文章浏览阅读182次。运用各站点的直播功能进行引流,在直播中可以加入要推的商品,并在直播中发放优惠券,同时可以引导观众关注店铺。每天分时段小批量上新商品,这样新上传的商品会在同类商品的搜索排名中处于靠前的位置,有利于店铺持续曝光。3)加购优惠:对上Shopee限时抢购的商品设置为加购优惠主商品,并将新品设置为加购商品,精准养链接。中国卖家中心的营销工具包含多种店铺营销活动,可以增加商品的曝光度和市场竞争力,刺激买家的消费欲望。根据目标客户群选品:比如,如果60%-70%的用户为年轻女性,则关注性价比高的潮流商品;

CSS中 设置( 单行、多行 )超出显示省略号_css超出显示...-程序员宅基地

文章浏览阅读10w+次,点赞46次,收藏121次。css设置超出显示省略号可分两种情况:但使用的核心代码是一样的:需要先使用 “overflow:hidden;” 来把超出的部分隐藏,然后使用“text-overflow:ellipsis;”当文本超出时显示为省略号。思路:1、使用 overflow:hidden; 语句不显示超过对象尺寸的内容,就是把超出的部分隐藏了;2、使用 -webkit-line-clamp: 行数; 语句限制显示文本的行数;3、使用 text-overflow:ellipsis; 语句用省略号“…”隐藏超出范围的文本说明_css超出显示...

Linux内存管理-浅谈物理内存与虚拟内存_linux 物理内存使用到80%的时候数据开始往虚拟内存转移-程序员宅基地

文章浏览阅读1.3k次,点赞2次,收藏3次。二 物理内存和虚拟内存我们知道,直接从物理内存读写数据要比从硬盘读写数据要快的多,因此,我们希望所有数据的读取和写入都在内存完成,而内存是有限的,这样就引出了物理内存与虚拟内存的概念。物理内存就是系统硬件提供的内存大小,是真正的内存,相对于物理内存,在linux下还有一个虚拟内存的概念,虚拟内存就是为了满足物理内存的不足而提出的策略,它是利用磁盘空间虚拟出的一块逻辑内存,用作虚拟内存的_linux 物理内存使用到80%的时候数据开始往虚拟内存转移

在数据库层面分析系统性能(原创)-程序员宅基地

文章浏览阅读301次。系统级别信息v$sysstat按照OracleDocument中的描述,v$sysstat存储自数据库实例运行那刻起就开始累计全实例(instance-wide)的资源使用情况。该视图存储下列的统计信息:1&gt;.事件发生次数的统计(如:user commits)2&gt;.数据产生,存取或者操作的total列(如:redo size)3&gt;.如果TIMED_STATISTIC..._v$sysstat字段说明

c++配置libtorch_libtorch c++ param_groups-程序员宅基地

文章浏览阅读675次,点赞8次,收藏14次。CUDA版本最好选与本机一致的版本进行使用,但是我的经验告诉我即使下载的版本和电脑安装的CUDA版本不一致,但只要能兼容也可以使用。比如我下载的LIbTorch的CUDA版本是11.7但是电脑的CUDA版本是12.0,也是可以正常使用的,其中CUDA版本要大于等于LIbTorch的CUDA版本。把libtorch/lib中的所有dll放到libtorch/bin中,然后把libtorch/bin加到环境变量的path中.1、由于找不到xxx.dll,无法继续执行代码,重新安装程序可能会解决此问题。_libtorch c++ param_groups

推荐文章

热门文章

相关标签