在 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

智能推荐

21 款 yyds 的 IDEA插件-程序员宅基地

文章浏览阅读347次。点击上方“朱小厮的博客”,选择“设为星标”后台回复"书",获取后台回复“k8s”,可领取k8s资料最近,闲来无事,为了改变一下枯燥的编程环境,特地搜寻了下有助提升代码功力的..._activate mybatis log

使用Jenkins Pipeline插件和Docker打造容器化构建环境-程序员宅基地

文章浏览阅读7k次。Docker和Jenkins像DevOps界的巧克力和花生酱那样,它们的组合产生了无数的机会,当然也产生了很多难题,笔者将提及这两个方面。本文中,我假定读者已经熟悉Jenkins和Docker,我将把焦点放在特定的配置上而不是把笔墨花费在许多博文已经介绍过的入门概念上。设定目标我所要达成的目标其实非常简单:在一个容器中搭建Jenkins主节点,并且在多个主机上搭建多个JNLP代理容器。这些代理节点..._jenkins 插件containernode.inside

青少年软件编程(202209)(C语言)(树&堆&图)等级考试(七级)试题及参考答案_青少年 c语言编程 题目-程序员宅基地

文章浏览阅读359次。给定一棵二叉树,求该二叉树的深度二叉树深度定义:从根结点到叶结点依次经过的结点(含根、叶结点)形成树的一条路径,最长路径的节点个数为树的深度时间限制:1000内存限制:65535输入第一行是一个整数n,表示二叉树的结点个数。二叉树结点编号从1到n,根结点为1,n _青少年 c语言编程 题目

unity3d与android交互:aar导出给unity:闪退,Theme.AppCompat.Light,appcompat-v7问题_unity3d 启动aar包的android activity不能显示-程序员宅基地

文章浏览阅读594次。unity接sdk,打包报错 No resource found that matches the given name ‘Theme.AppCompat.Light’.这是因为sdk中用了这个主题,冒然的删除,会导致后面出来的功能有问题使用appcompat-v7-23.0.0.aar解决,这个里面包含了资源,单纯的jar包不行appcompat-v7-23.0.0.aar可以通过androidsdk文件中SDKManager下载Unity接sdk,运行中报错java.lang.NoClassD_unity3d 启动aar包的android activity不能显示

DenseCLIP: Language-Guided Dense Prediction with Context-Aware Prompting(CVPR2022 )_denseclip代码解读-程序员宅基地

文章浏览阅读891次,点赞23次,收藏26次。最近的进展表明,使用对比图像-文本对的大规模预训练可以从自然语言监督中学习高质量的视觉表示。得益于更广泛的监督来源,这种新范式表现出令人印象深刻的下游分类任务和数据集的可转移性。然而,将从图像-文本对中学到的知识转移到更复杂的密集预测任务的问题却很少被研究。在这项工作中,我们通过隐式和显式地利用来自CLIP的预训练知识,提出了一个新的密集预测框架。具体来说,我们将CLIP中的原始图像-文本匹配问题转换为像素-文本匹配问题,并使用像素-文本得分映射来指导密集预测模型的学习。_denseclip代码解读

open-spider开源爬虫工具:抖音数据采集_抖音直播爬虫采集_抖音爬虫网站-程序员宅基地

文章浏览阅读313次,点赞3次,收藏10次。基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上前端开发知识点,真正体系化!**_抖音爬虫网站

随便推点

smarty&nbsp;--foreach详解_smarty nbsp-程序员宅基地

文章浏览阅读248次。Attribute Name属性名称Type类型Required必要Default默认值Description描述fromarray数组Yes必要n/aThe array you are looping through循环访问的数组itemstring字符串Yes必要n/aThe name of the variable tha_smarty nbsp

基于MVC设计模式的WEB应用框架研究~~转_基于mvc设计模型的框架-程序员宅基地

文章浏览阅读709次。MVC设计模式是基于J2EE的WEB应用开发的首选模式,当前许多流行的框架也都是基于MVC设计模式的。本文简要介绍了MVC设计模式和Struts框架,并提出了一种基于MVC模式的新型WEB应用开发框架——WebFramework,并对该框架的各个层次的组成、功能进行了详细的描述。  关键词 MVC设计模式; J2EE;框架; Struts  引言  随着开源软件的兴起,各种框架也纷纷出现,如Apa_基于mvc设计模型的框架

蓝桥杯丨回溯法_python回溯算法实现数独游戏-程序员宅基地

文章浏览阅读1.3k次。一些关于回溯法的笔记。_python回溯算法实现数独游戏

Image_Picker: “PlatformException(already_active, Image picker is already active,null)“-程序员宅基地

文章浏览阅读2k次。flutter使用imgae_picker插件时报错:"PlatformException(already_active, Image picker is already active,null),翻看了很多帖子,大部分建议都是升级插件版本或者运行flutter clean可以解决。但是我一直不可以。直到看到这样一条消息(具体地址如下):https://github.com/flutter/flutter/issues/53216文中截图:译文:嘿伙计们.._platformexception(already_active, image picker is already active, null, null

微信存储空间占用问题_小米我的设备查微信占用内存与微信app查的占用内存不一样-程序员宅基地

文章浏览阅读796次。微信文件存储优化_小米我的设备查微信占用内存与微信app查的占用内存不一样

Web基础(Java前端基础)_javaweb-程序员宅基地

文章浏览阅读1.2w次,点赞26次,收藏240次。1、Javaweb1.1 基本概念web开发:web,代表网页(网站)的意思,比如www.baidu.com静态web:列如静态web页面设计使用的:html,css。静态web性质:提供给所有人看的数据始终不会发生变化。动态web比如:淘宝、网易云、几乎所有的网站都使用动态web。它提供给所有人看到的数据始终会发生变化,每个人在不同的时间,不同的地点看到的信息各不相同。技术栈:Servlet/JSP,ASP,PHP。在Java中,动态web资源开发的技术称为Javaw_javaweb