cryptohack block ciphers

一、ECB CBC WTF

题目:

from Crypto.Cipher import AES


KEY = ?
FLAG = ?


@chal.route('/ecbcbcwtf/decrypt//')
def decrypt(ciphertext):
    ciphertext = bytes.fromhex(ciphertext)

    cipher = AES.new(KEY, AES.MODE_ECB)
    try:
        decrypted = cipher.decrypt(ciphertext)
    except ValueError as e:
        return {"error": str(e)}

    return {"plaintext": decrypted.hex()}


@chal.route('/ecbcbcwtf/encrypt_flag/')
def encrypt_flag():
    iv = os.urandom(16)

    cipher = AES.new(KEY, AES.MODE_CBC, iv)
    encrypted = cipher.encrypt(FLAG.encode())
    ciphertext = iv.hex() + encrypted.hex()

    return {"ciphertext": ciphertext}

hint:

Here you can encrypt in CBC but only decrypt in ECB. That shouldn't be a weakness because they're different modes... right?

译文:

在这里,您可以在CBC中加密,但只能在ECB中解密。这不应该是一个弱点,因为它们是不同的模式……对吧?

思路:

本题告诉了我们用CBC模式进行加密,但使用ECB进行解密,其中,我们已经知道了CBC模式中加密的IV值的大小,我们又已经知道了将密文用ECB解密的值,通过CBC模式的解密结构,我们知道将第一段密文解密后于IV进行异或运算既是原明文,而第一段密文则是第二段密文加密的IV值,所以解密时将其反过来用,作为IV解密即可:

wp:

import requests
from Crypto.Util.number import *
result=requests.get('http://aes.cryptohack.org/ecbcbcwtf/encrypt_flag')
ciphertext=result.json()["ciphertext"]
# print(result.text)

# print(len(bytes.fromhex(ciphertext)))
ciphertext=bytes.fromhex(ciphertext)
c1=hex(bytes_to_long(ciphertext[0:16]))[2:]
c2=hex(bytes_to_long(ciphertext[16:32]))[2:]
c3=hex(bytes_to_long(ciphertext[32:48]))[2:]
print(c1)
print(c2)
print(c3)

# C=hex(bytes_to_long(ciphertext))
# print(c1)
# print(c2)
# print(c3)
# c1=0x9d2691928a24ed9215416815e80164d1
# c2=0xf77ea0b2c315db6b56a48c8250b0c9b8
# c3=0x6a61b98b2e5d26af3976d7c36a76a847
# k1=int(c1) ^ int(c2)
# k3=int(c2) ^ int(c3)
a1=requests.get(f'http://aes.cryptohack.org/ecbcbcwtf/decrypt/{c2}')
a2=requests.get(f'http://aes.cryptohack.org/ecbcbcwtf/decrypt/{c3}')
m1=a1.json()["plaintext"]
m2=a2.json()["plaintext"]
M1=int(m1,16)^int(c1,16)
M2=int(m2,16)^int(c2,16)
print(long_to_bytes(M1)+long_to_bytes(M2))

 二、ECB Oracle

题目:

from Crypto.Cipher import AES
from Crypto.Util.Padding import pad, unpad


KEY = ?
FLAG = ?


@chal.route('/ecb_oracle/encrypt//')
def encrypt(plaintext):
    plaintext = bytes.fromhex(plaintext)

    padded = pad(plaintext + FLAG.encode(), 16)
    cipher = AES.new(KEY, AES.MODE_ECB)
    try:
        encrypted = cipher.encrypt(padded)
    except ValueError as e:
        return {"error": str(e)}

    return {"ciphertext": encrypted.hex()}</code></pre> 
  <h3>hint:</h3> 
  <blockquote> 
   <p>ECB is the most simple mode, with each plaintext block encrypted entirely independently. In this case, your input is prepended to the secret flag and encrypted and that's it. We don't even provide a decrypt function. Perhaps you don't need a padding oracle when you have an "ECB oracle"?</p> 
   <p><em>译文:</em></p> 
   <p>ECB是最简单的模式,每个明文块完全独立加密。在本例中,您的输入被预先添加到秘密标志并加密,仅此而已。我们甚至不提供解密函数。或许当你有了“欧洲央行的预言者”,你就不需要填充预言了?</p> 
  </blockquote> 
  <h3>思路:</h3> 
  <p> 本题为一道典型的ECB加密解密问题,首先,我们即不知道明文也不知道密文。我们可以发现题目中给与了我们加密算法,所以我们可以自己设置明文代入进行尝试:</p> 
  <pre><code class="language-python">import requests
from tqdm import tqdm
from Crypto.Util.number import *
# m = ''
for i in range(30):
    m = i*'61'
    result = requests.get(f'http://aes.cryptohack.org/ecb_oracle/encrypt/{m}')
    try:
        a = result.json()["ciphertext"]
        print(i,len(a)//2)
    except:
        pass</code></pre> 
  <p>从输出的值中,我们可以发现代码在第6和第22时发生改变。于是,我们可以推断明文为26bits长(32 - 6、48 - 22),而加密算法中是以16bits为块进行加密和解密(22 - 6)。</p> 
  <p>所以,我们可以代入15*a进行加密,这样前16为就为15 * a加上明文第一位,接着,我们对十六位进行暴力破解即可得到我们所需的明文第一位,第一到第十五位都为这个思路:</p> 
  <pre><code class="language-python">k=''
for i in range(15):
    m = '61'*(15-i)
    print(bytes.fromhex(m))
    result = requests.get(f'http://aes.cryptohack.org/ecb_oracle/encrypt/{m}')
    m = result.json()["ciphertext"]
    m1 = m[:32]
    # print(m1)
    for j in range(32,127):
        m = '61' * (15-i) + k
        m += str(hex(j)[2:])
        result1 = requests.get(f'http://aes.cryptohack.org/ecb_oracle/encrypt/{m}')
        n = result1.json()["ciphertext"]
        n1 = n[:32]
        # print(n1)
        try:
            if n1 == m1:
                k += str(hex(j)[2:])
                print(bytes.fromhex(k))
                break
        except:
            pass

# b'crypto{p3n6u1n5'</code></pre> 
  <p>后11位思路类似,仅需要我们将代码扩张到前32位进行暴力破解运算:</p> 
  <pre><code class="language-python">k='63727970746f7b70336e3675316e35'
for i in range(11):
    m = '61'*(16-i)
    print(bytes.fromhex(m))
    result = requests.get(f'http://aes.cryptohack.org/ecb_oracle/encrypt/{m}')
    m = result.json()["ciphertext"]
    m1 = m[32:64]
    # print(m1)
    for j in range(32,127):
        m = '61' * (16-i) + k
        m += str(hex(j)[2:])
        result1 = requests.get(f'http://aes.cryptohack.org/ecb_oracle/encrypt/{m}')
        n = result1.json()["ciphertext"]
        n1 = n[32:64]
        # print(n1)
        try:
            if n1 == m1:
                k += str(hex(j)[2:])
                print(bytes.fromhex(k))
                break
        except:
            pass</code></pre> 
  <h3>wp:</h3> 
  <pre><code class="language-python">import requests
from tqdm import tqdm
from Crypto.Util.number import *
# m = ''
# for i in range(30):
#     m = i*'61'
#     result = requests.get(f'http://aes.cryptohack.org/ecb_oracle/encrypt/{m}')
#     try:
#         a = result.json()["ciphertext"]
#         print(i,len(a)//2)
#     except:
#         pass

k=''
for i in range(15):
    m = '61'*(15-i)
    print(bytes.fromhex(m))
    result = requests.get(f'http://aes.cryptohack.org/ecb_oracle/encrypt/{m}')
    m = result.json()["ciphertext"]
    m1 = m[:32]
    # print(m1)
    for j in range(32,127):
        m = '61' * (15-i) + k
        m += str(hex(j)[2:])
        result1 = requests.get(f'http://aes.cryptohack.org/ecb_oracle/encrypt/{m}')
        n = result1.json()["ciphertext"]
        n1 = n[:32]
        # print(n1)
        try:
            if n1 == m1:
                k += str(hex(j)[2:])
                print(bytes.fromhex(k))
                break
        except:
            pass

# b'crypto{p3n6u1n5'

k='63727970746f7b70336e3675316e35'
for i in range(11):
    m = '61'*(16-i)
    print(bytes.fromhex(m))
    result = requests.get(f'http://aes.cryptohack.org/ecb_oracle/encrypt/{m}')
    m = result.json()["ciphertext"]
    m1 = m[32:64]
    # print(m1)
    for j in range(32,127):
        m = '61' * (16-i) + k
        m += str(hex(j)[2:])
        result1 = requests.get(f'http://aes.cryptohack.org/ecb_oracle/encrypt/{m}')
        n = result1.json()["ciphertext"]
        n1 = n[32:64]
        # print(n1)
        try:
            if n1 == m1:
                k += str(hex(j)[2:])
                print(bytes.fromhex(k))
                break
        except:
            pass</code></pre> 
  <h1>三、FLIPPING COOKIE</h1> 
  <h3>题目:</h3> 
  <pre><code class="language-python">from Crypto.Cipher import AES
import os
from Crypto.Util.Padding import pad, unpad
from datetime import datetime, timedelta


KEY = ?
FLAG = ?


@chal.route('/flipping_cookie/check_admin/<cookie>/<iv>/')
def check_admin(cookie, iv):
    cookie = bytes.fromhex(cookie)
    iv = bytes.fromhex(iv)

    try:
        cipher = AES.new(KEY, AES.MODE_CBC, iv)
        decrypted = cipher.decrypt(cookie)
        unpadded = unpad(decrypted, 16)
    except ValueError as e:
        return {"error": str(e)}

    if b"admin=True" in unpadded.split(b";"):
        return {"flag": FLAG}
    else:
        return {"error": "Only admin can read the flag"}


@chal.route('/flipping_cookie/get_cookie/')
def get_cookie():
    expires_at = (datetime.today() + timedelta(days=1)).strftime("%s")
    cookie = f"admin=False;expiry={expires_at}".encode()

    iv = os.urandom(16)
    padded = pad(cookie, 16)
    cipher = AES.new(KEY, AES.MODE_CBC, iv)
    encrypted = cipher.encrypt(padded)
    ciphertext = iv.hex() + encrypted.hex()

    return {"cookie": ciphertext}</code></pre> 
  <h3>hint:</h3> 
  <blockquote> 
   <p>You can get a cookie for my website, but it won't help you read the flag... I think.</p> 
   <p><em>译文:</em></p> 
   <p>你可以为我的网站获得一块cookie,但它不会帮助你读flag…我认为。</p> 
  </blockquote> 
  <h3>思路: </h3> 
  <p>这是一到典型的CBC字节翻转问题,我们已知CBC的加密模式,其中,第一段密文为第一段明文于IV进行异或运算再进行AES加密,最终得到我们所需的第一段密文,第二段相比第一段既是将输入的IV改为我们求得的第一段密文。</p> 
  <p>我们已知第一段明文为:</p> 
  <pre>a1 = b'admin=False;expi'</pre> 
  <p>我们需要将admin改为True,从而让网站以为我们拥有网站的控制权,因为我们通过代码可知,当admin=True;时网站会返回我们flag值。所以我们需要构建一个新的IV使密文被加密后为True,从而骗过网站。</p> 
  <p>Dec (m1) = c1 ^ IV</p> 
  <p>c1_new  = Dec (m1) ^ IV_new</p> 
  <p>其中,各个条件我们都已知,除了IV_new,于是,我们可以构建出IV_new,并将新的IV返回到网站中输入,最终求得flag。</p> 
  <h3>wp:</h3> 
  <pre><code class="language-python">import requests
from Crypto.Util.number import *

result = requests.get('http://aes.cryptohack.org/flipping_cookie/get_cookie')
m = result.json()["cookie"]
M = bytes.fromhex(m)
# print(m)
IV = m[:32]
k = m[32:]

a1 = b'admin=False;expi'
a2 = b'admin=True;00000'
m1=hex(bytes_to_long(a1))
m2=hex(bytes_to_long(a2))
# print(m1)
IV_new = int(m1,16)^int(m2,16)^int(IV,16)
# print(IV_new)
IV_new = hex(IV_new)[2:]
print(IV_new)
result2 = requests.get(f'http://aes.cryptohack.org/flipping_cookie/check_admin/{k}/{IV_new}')
l = result2.json()
print(l)
</code></pre> 
  <h1>四、LAZY CBC</h1> 
  <h3>题目:</h3> 
  <pre><code class="language-python">from Crypto.Cipher import AES


KEY = ?
FLAG = ?


@chal.route('/lazy_cbc/encrypt/<plaintext>/')
def encrypt(plaintext):
    plaintext = bytes.fromhex(plaintext)
    if len(plaintext) % 16 != 0:
        return {"error": "Data length must be multiple of 16"}

    cipher = AES.new(KEY, AES.MODE_CBC, KEY)
    encrypted = cipher.encrypt(plaintext)

    return {"ciphertext": encrypted.hex()}


@chal.route('/lazy_cbc/get_flag/<key>/')
def get_flag(key):
    key = bytes.fromhex(key)

    if key == KEY:
        return {"plaintext": FLAG.encode().hex()}
    else:
        return {"error": "invalid key"}


@chal.route('/lazy_cbc/receive/<ciphertext>/')
def receive(ciphertext):
    ciphertext = bytes.fromhex(ciphertext)
    if len(ciphertext) % 16 != 0:
        return {"error": "Data length must be multiple of 16"}

    cipher = AES.new(KEY, AES.MODE_CBC, KEY)
    decrypted = cipher.decrypt(ciphertext)

    try:
        decrypted.decode() # ensure plaintext is valid ascii
    except UnicodeDecodeError:
        return {"error": "Invalid plaintext: " + decrypted.hex()}

    return {"success": "Your message has been received"}

</code></pre> 
  <h3>hint:</h3> 
  <blockquote> 
   <p>I'm just a lazy dev and want my CBC encryption to work. What's all this talk about initialisations vectors? Doesn't sound important.</p> 
   <p><em>译文:</em></p> 
   <p>我只是一个懒惰的开发人员,希望我的CBC加密工作。这些关于初始化向量的讨论是怎么回事?听起来不重要。</p> 
  </blockquote> 
  <h3>思路:</h3> 
  <p>在这道题中,我们有密文的生成代码,和密文的解密代码,以及flag的获得代码</p> 
  <p>CBC的生成思路:</p> 
  <p>c1 = Dec(m1) ^ IV  ——(1)</p> 
  <p>c2 = Dec(m2) ^ m1  ——(2)</p> 
  <p>c3 = Dec(m3) ^ m2  ——(3)</p> 
  <p>由于密文明文我们都可以自己设置,于是我们不妨让m2==0;m1=m3,于是让(1)和(3)进行异或运算,可以求得我们所需的IV值,将其返回网站即可:</p> 
  <h3>wp:</h3> 
  <pre><code class="language-python">import requests
from Crypto.Util.number import *
# a = b'0'*16
# A = hex(bytes_to_long(a))
# print(A)

b = '61616161616161616161616161616161'*3
result = requests.get(f'http://aes.cryptohack.org/lazy_cbc/encrypt/{b}')
m = result.json()["ciphertext"]
print(m)
k1 = m[:32] + '0'*32 + m[:32]
k = requests.get(f'http://aes.cryptohack.org/lazy_cbc/receive/{k1}')
k=k.json()
print(k)

b1 = '6161616161616161616161616161616116874d46ae7c02bcd5fe3d27fcba5b60966f8a5cc032ff235c45da24d505e288'
# result1 = requests.get(f'http://aes.cryptohack.org/lazy_cbc/encrypt/{b1}')
# result1 = result1.json()
# print(result1)

key = hex(int(b1[:32],16)^int(b1[64:96],16))[2:]
print(key)
m = requests.get(f'http://aes.cryptohack.org/lazy_cbc/get_flag/{key}')
m = m.json()
print(m)


M = 0x63727970746f7b35306d335f703330706c335f64306e375f3768316e6b5f49565f31355f316d70307237346e375f3f7d
print(long_to_bytes(int(M)))</code></pre> 
  <p></p> 
 </div> 
</div>
                            </div>
                        </div>
                    </div>
                    <!--PC和WAP自适应版-->
                    <div id="SOHUCS" sid="1647375062698856448"></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">你可能感兴趣的:(crypto,python,开发语言)</h4>
        <div id="paradigm-article-related">
            <div class="recommend-post mb30">
                <ul class="widget-links">
                    <li><a href="/article/1891090002285228032.htm"
                           title="Python数据处理之导入导出Excel数据" target="_blank">Python数据处理之导入导出Excel数据</a>
                        <span class="text-muted">master_chenchengg</span>
<a class="tag" taget="_blank" href="/search/python/1.htm">python</a><a class="tag" taget="_blank" href="/search/%E8%83%BD%E5%8A%9B%E6%8F%90%E5%8D%87/1.htm">能力提升</a><a class="tag" taget="_blank" href="/search/%E9%9D%A2%E8%AF%95%E5%AE%9D%E5%85%B8/1.htm">面试宝典</a><a class="tag" taget="_blank" href="/search/%E6%8A%80%E6%9C%AF/1.htm">技术</a><a class="tag" taget="_blank" href="/search/IT%E4%BF%A1%E6%81%AF%E5%8C%96/1.htm">IT信息化</a>
                        <div>Python数据处理之导入导出Excel数据开启数据之旅:为什么Python是Excel数据处理的最佳拍档?准备工作:让Python与Excel握手言欢数据入境:把Excel表格里的宝藏带入Python世界数据出境:将Python分析结果优雅地送回Excel家园玩转数据:用Python对Excel数据进行清洗、转换和分析自动化魔法:编写Python脚本实现Excel数据处理自动化跨界合作:整合其他</div>
                    </li>
                    <li><a href="/article/1891088237292744704.htm"
                           title="第一天:爬虫介绍" target="_blank">第一天:爬虫介绍</a>
                        <span class="text-muted">朱剑君</span>
<a class="tag" taget="_blank" href="/search/Python%E7%88%AC%E8%99%AB%E8%AE%AD%E7%BB%83%E8%90%A5/1.htm">Python爬虫训练营</a><a class="tag" taget="_blank" href="/search/%E7%88%AC%E8%99%AB/1.htm">爬虫</a><a class="tag" taget="_blank" href="/search/python/1.htm">python</a>
                        <div>每天上午9点左右更新一到两篇文章到专栏《Python爬虫训练营》中,对于爬虫有兴趣的伙伴可以订阅专栏一起学习,完全免费。键盘为桨,代码作帆。这趟为期30天左右的Python爬虫特训即将启航,每日解锁新海域:从Requests库的浪花到Scrapy框架的深流,从反爬迷雾中的破局到数据清洗的澄澈。我们拆解网页结构如同解读星图,让XPath与正则表达式化作导航罗盘。每个深夜的代码调试,终将凝结成破晓时的</div>
                    </li>
                    <li><a href="/article/1891088111056777216.htm"
                           title="第三天:爬取数据-urllib库." target="_blank">第三天:爬取数据-urllib库.</a>
                        <span class="text-muted">朱剑君</span>
<a class="tag" taget="_blank" href="/search/Python%E7%88%AC%E8%99%AB%E8%AE%AD%E7%BB%83%E8%90%A5/1.htm">Python爬虫训练营</a><a class="tag" taget="_blank" href="/search/python/1.htm">python</a><a class="tag" taget="_blank" href="/search/%E7%88%AC%E8%99%AB/1.htm">爬虫</a>
                        <div>每天上午9点左右更新一到两篇文章到专栏《Python爬虫训练营》中,对于爬虫有兴趣的伙伴可以订阅专栏一起学习,完全免费。键盘为桨,代码作帆。这趟为期30天左右的Python爬虫特训即将启航,每日解锁新海域:从Requests库的浪花到Scrapy框架的深流,从反爬迷雾中的破局到数据清洗的澄澈。我们拆解网页结构如同解读星图,让XPath与正则表达式化作导航罗盘。每个深夜的代码调试,终将凝结成破晓时的</div>
                    </li>
                    <li><a href="/article/1891084961277079552.htm"
                           title="使用Seaborn绘制相关性热力图" target="_blank">使用Seaborn绘制相关性热力图</a>
                        <span class="text-muted">认真写代码i</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/Python/1.htm">Python</a>
                        <div>使用Seaborn绘制相关性热力图相关性热力图是一种常用的可视化工具,用于显示变量之间的相关性。在Python中,Seaborn是一个功能强大且易于使用的数据可视化库,可以轻松地创建相关性热力图。在本文中,我们将学习如何使用Seaborn的heatmap函数来绘制相关性热力图。首先,我们需要安装Seaborn库。你可以使用以下命令通过pip安装Seaborn:pipinstallseaborn安装</div>
                    </li>
                    <li><a href="/article/1891081053829918720.htm"
                           title="python编程入门学习(3)——自用笔记" target="_blank">python编程入门学习(3)——自用笔记</a>
                        <span class="text-muted">徐少19</span>
<a class="tag" taget="_blank" href="/search/python%E5%85%A5%E9%97%A8/1.htm">python入门</a><a class="tag" taget="_blank" href="/search/python/1.htm">python</a>
                        <div>目录第五章:if语句一个简单的示例条件测试if语句使用if语句处理列表第六章:字典一个简单的字典使用字典遍历字典嵌套在列表中存储字典在字典中存储列表在字典中存储字典第五章:if语句一个简单的示例#if语句示例cars=['bmw','audi','toyota','subaru']forcarincars:ifcar=='bmw':print(car.upper())else:print(car.</div>
                    </li>
                    <li><a href="/article/1891079910806581248.htm"
                           title="《一文吃透!NLTK与SpaCy,自然语言处理的神兵利器》" target="_blank">《一文吃透!NLTK与SpaCy,自然语言处理的神兵利器》</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%E6%B7%B1%E5%BA%A6%E5%AD%A6%E4%B9%A0/1.htm">人工智能深度学习</a>
                        <div>在人工智能的璀璨星空中,自然语言处理(NLP)无疑是最为耀眼的领域之一。它让机器能够理解、处理和生成人类语言,极大地推动了智能交互的发展。而在Python的NLP工具库中,NLTK和SpaCy就像两把锋利的宝剑,各自散发着独特的光芒。今天,就让我们深入探究这两款工具的使用技巧与优势,为你的NLP之旅增添强大助力。一、NLTK:自然语言处理的瑞士军刀NLTK(NaturalLanguageToolk</div>
                    </li>
                    <li><a href="/article/1891078660161597440.htm"
                           title="Python 第三方库 PyQt5 的安装" target="_blank">Python 第三方库 PyQt5 的安装</a>
                        <span class="text-muted">狐凄</span>
<a class="tag" taget="_blank" href="/search/%E5%AE%9E%E4%BE%8B/1.htm">实例</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%BC%80%E5%8F%91%E8%AF%AD%E8%A8%80/1.htm">开发语言</a>
                        <div>目录前言PyQt5安装不同操作系统PyQt5安装一、Windows系统二、macOS系统三、Linux系统(以Ubuntu为例)安装PyQt5可能会遇到的问题一、环境相关问题二、依赖问题三、网络问题四、安装工具问题五、运行时问题六、环境配置问题七、安装源问题八、检查错误信息九、运行时错误十、尝试不同的安装方法问题解决环境相关问题一、Python版本兼容性问题二、操作系统特定问题三、依赖库问题四、环</div>
                    </li>
                    <li><a href="/article/1891076140878065664.htm"
                           title="opencv全面详解教程" target="_blank">opencv全面详解教程</a>
                        <span class="text-muted">听忆.</span>
<a class="tag" taget="_blank" href="/search/%E6%9C%BA%E5%99%A8%E5%AD%A6%E4%B9%A0/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/%E8%AE%A1%E7%AE%97%E6%9C%BA%E8%A7%86%E8%A7%89/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>opencv全面详解教程1.OpenCV简介2.安装OpenCV2.1使用pip安装(适用于Python)2.2通过conda安装2.3从源码编译(高级)3.OpenCV基本操作3.1读取和显示图像3.2保存图像3.3视频处理4.图像处理操作4.1调整大小和裁剪4.2颜色空间转换4.3图像平滑(滤波)4.4边缘检测5.形态学操作6.特征检测与匹配6.1角点检测(Harris)6.2SIFT、SUR</div>
                    </li>
                    <li><a href="/article/1891069960021667840.htm"
                           title="ta-lib使用" target="_blank">ta-lib使用</a>
                        <span class="text-muted">lvming-elena</span>
<a class="tag" taget="_blank" href="/search/C%2B%2B/1.htm">C++</a><a class="tag" taget="_blank" href="/search/%E5%A4%A7%E6%95%B0%E6%8D%AE/1.htm">大数据</a>
                        <div>ta-lib介绍TA-Lib,全称“TechnicalAnalysisLibrary”,即技术分析库,是Python金融量化的高级库,涵盖了150多种股票、期货交易软件中常用的技术分析指标,如MACD、RSI、KDJ、动量指标、布林带等等。TA-Lib可分为10个子板块:OverlapStudies(重叠指标),MomentumIndicators(动量指标),VolumeIndicators(交</div>
                    </li>
                    <li><a href="/article/1891069455673389056.htm"
                           title="利用Python进行数据清洗与预处理:Pandas的高级用法" target="_blank">利用Python进行数据清洗与预处理:Pandas的高级用法</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/%E6%95%B0%E6%8D%AE%E5%BA%93/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>本文已收录于《Python超入门指南全册》本专栏专门针对零基础和需要进阶提升的同学所准备的一套完整教学,从基础到精通不断进阶深入,后续还有实战项目,轻松应对面试,专栏订阅地址:https://blog.csdn.net/mrdeam/category_12647587.html优点:订阅限时19.9付费专栏,私信博主还可进入全栈VIP答疑群,作者优先解答机会(代码指导、远程服务),群里大佬众多可以</div>
                    </li>
                    <li><a href="/article/1891064413289508864.htm"
                           title="Python Pandas数据清洗之缺失数据处理" target="_blank">Python Pandas数据清洗之缺失数据处理</a>
                        <span class="text-muted">python慕遥</span>
<a class="tag" taget="_blank" href="/search/Pandas/1.htm">Pandas</a><a class="tag" taget="_blank" href="/search/python/1.htm">python</a><a class="tag" taget="_blank" href="/search/pandas/1.htm">pandas</a><a class="tag" taget="_blank" href="/search/%E5%BC%80%E5%8F%91%E8%AF%AD%E8%A8%80/1.htm">开发语言</a>
                        <div>大家好,在数据分析和处理过程中,缺失数据是常见且不可避免的现象。无论是在数据收集、传输或存储的过程中,数据集可能会出现部分丢失。缺失数据的存在不仅会影响数据的完整性,还可能对后续的数据分析和建模造成不利影响。为了保证数据质量,合理处理缺失数据至关重要。Python的Pandas库提供了强大的工具,能够高效处理数据中的缺失值,特别是通过插值和填充技术来弥补数据的缺失。本文将介绍如何使用Pandas处</div>
                    </li>
                    <li><a href="/article/1891058870298669056.htm"
                           title="TA-Lib:Python金融分析核心库使用指南" target="_blank">TA-Lib:Python金融分析核心库使用指南</a>
                        <span class="text-muted">一筐猪的头发丝</span>

                        <div>本文还有配套的精品资源,点击获取简介:TA-Lib是一个广泛应用于金融分析领域的库,它包含多种技术分析指标,适用于股票、期货和外汇等金融产品的技术分析。通过这个库,开发者可以利用Python编程语言进行历史市场数据的技术分析,包括趋势指标、振荡器、成交量分析以及形态识别等。TA-Lib还支持自动化交易系统的开发、投资组合优化和风险管理,是金融专业人士和数据分析师不可或缺的工具。1.TA-Lib库概</div>
                    </li>
                    <li><a href="/article/1891058743962038272.htm"
                           title="利用Python pandas 数据清洗详细教程" target="_blank">利用Python pandas 数据清洗详细教程</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/%E8%BF%90%E7%BB%B4/1.htm">运维</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/pandas/1.htm">pandas</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.下载Python2.安装Python3使用pip安装Pandas二、使用步骤1.读取数据2.处理缺失值3.处理重复值4.处理异常值5.数据类型转换6.处理不一致的数据前言pandas是Python数据处理与分析的得力工具,功能强大,是数据从业者进行数据清洗的首选。本教程将系统介绍用pandas进行数据清洗,涵盖数据读取、缺失值与重复值处理、异常值修正、数据类型转换等要点</div>
                    </li>
                    <li><a href="/article/1891049160665264128.htm"
                           title="Python 报错分析:IndexError: list index out of range" target="_blank">Python 报错分析:IndexError: list index out of range</a>
                        <span class="text-muted">小馒头学python</span>
<a class="tag" taget="_blank" href="/search/%E9%97%AE%E9%A2%98/1.htm">问题</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>在Python编程中,IndexError:listindexoutofrange是一个常见的错误,通常发生在我们尝试访问超出列表(或其他可迭代对象)有效范围的索引时。这个错误通常会让初学者感到困惑,但实际上它是很直观的,只要理解了列表的索引机制,我们就能轻松避免它。本文将带你深入了解这个错误的原因,并展示如何通过几个实际的例子来解决它。1.什么是IndexError:listindexoutof</div>
                    </li>
                    <li><a href="/article/1891043230867320832.htm"
                           title="WSL中安装python环境详解" target="_blank">WSL中安装python环境详解</a>
                        <span class="text-muted">小蘑菇二号</span>
<a class="tag" taget="_blank" href="/search/python/1.htm">python</a>
                        <div>在WindowsSubsystemforLinux(WSL)上安装Python环境,按照以下步骤操作:确认WSL已安装并更新:首先,确保已经安装了WSL,并且您的WSL环境已经更新至最新状态。打开WSL终端:打开Windows的开始菜单,找到并启动WSL发行版(例如Ubuntu)。确认Python已安装:在WSL终端中,输入python3--version来确认Python是否已安装,并查看其版本</div>
                    </li>
                    <li><a href="/article/1891040836037177344.htm"
                           title="Python图形界面 Tkinter入门6 数据库sqlite3" target="_blank">Python图形界面 Tkinter入门6 数据库sqlite3</a>
                        <span class="text-muted">mango大侠</span>
<a class="tag" taget="_blank" href="/search/Python/1.htm">Python</a><a class="tag" taget="_blank" href="/search/python/1.htm">python</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/sqlite3/1.htm">sqlite3</a><a class="tag" taget="_blank" href="/search/tkinter/1.htm">tkinter</a>
                        <div>6.1数据库sqlite3基础fromtkinterimport*importsqlite3importosroot=Tk()root.title('数据库sqlite3操作')root.geometry('400x400')#sqlite3-------------------------------------------------##检查数据库文件是否存在,不存在就创建,user表:ifn</div>
                    </li>
                    <li><a href="/article/1891033273212137472.htm"
                           title="小学python教材电子版_【python爬虫】中小学人教版教材下载 (调用IDM)" target="_blank">小学python教材电子版_【python爬虫】中小学人教版教材下载 (调用IDM)</a>
                        <span class="text-muted">weixin_39981185</span>
<a class="tag" taget="_blank" href="/search/%E5%B0%8F%E5%AD%A6python%E6%95%99%E6%9D%90%E7%94%B5%E5%AD%90%E7%89%88/1.htm">小学python教材电子版</a>
                        <div>根据楼主的python改的。就没做成运行文件,代码如下:新手勿喷。#!/usr/bin/envpython3#encoding:utf-8'''@author:zengyun@software:tool@application:@file:down.py@time:2020/2/2115:46@desc:'''importrequests,bs4fromtqdmimporttqdm#获取文件名称和</div>
                    </li>
                    <li><a href="/article/1891033021033803776.htm"
                           title="go hive skynet_MMORPG游戏服务器技术选型参考-Go语言中文社区" target="_blank">go hive skynet_MMORPG游戏服务器技术选型参考-Go语言中文社区</a>
                        <span class="text-muted">weixin_39908948</span>
<a class="tag" taget="_blank" href="/search/go/1.htm">go</a><a class="tag" taget="_blank" href="/search/hive/1.htm">hive</a><a class="tag" taget="_blank" href="/search/skynet/1.htm">skynet</a>
                        <div>游戏服务器一般追求稳定和效率,所以偏向于保守,使用的技术手段也是以已经过验证、开发人员最熟悉、能HOLD为主要前提。1、典型按场景分服设计开发语言:c++数据库:mysql架构:多个网关:维持与玩家间的SOCKET连接,可处理广播、断线重连等逻辑。一个或多个账号登陆验证服务器:处理登陆、排队等逻辑。多个场景服务器:处理在本地图上能解决的逻辑,如:打怪、玩家间战斗、接任务、完成任务等各种不需要跨地图</div>
                    </li>
                    <li><a href="/article/1891032894009307136.htm"
                           title="flask实现mysql连接池_如何在python flask中使用mysql.connection数据库池" target="_blank">flask实现mysql连接池_如何在python flask中使用mysql.connection数据库池</a>
                        <span class="text-muted">weixin_39710396</span>
<a class="tag" taget="_blank" href="/search/flask%E5%AE%9E%E7%8E%B0mysql%E8%BF%9E%E6%8E%A5%E6%B1%A0/1.htm">flask实现mysql连接池</a>
                        <div>Traceback(mostrecentcalllast):File"/home/myuser/virtualenv/py2.7-myapp-server-logger/lib/python2.7/site-packages/flask/app.py",line1836,in__call__returnself.wsgi_app(environ,start_response)File"/home/</div>
                    </li>
                    <li><a href="/article/1891032136526393344.htm"
                           title="AWS上基于Llama 3模型检测Amazon Redshift里文本数据的语法和语义错误的设计方案" target="_blank">AWS上基于Llama 3模型检测Amazon Redshift里文本数据的语法和语义错误的设计方案</a>
                        <span class="text-muted">weixin_30777913</span>
<a class="tag" taget="_blank" href="/search/%E6%95%B0%E6%8D%AE%E4%BB%93%E5%BA%93/1.htm">数据仓库</a><a class="tag" taget="_blank" href="/search/%E4%BA%91%E8%AE%A1%E7%AE%97/1.htm">云计算</a><a class="tag" taget="_blank" href="/search/aws/1.htm">aws</a><a class="tag" taget="_blank" href="/search/llama/1.htm">llama</a>
                        <div>一、技术栈选型核心服务:AmazonRedshift:存储原始文本和检测结果AmazonBedrock:托管Llama370B模型AWSLambda:无服务计算(Python运行时)AmazonS3:中间数据存储AWSStepFunctions:工作流编排辅助工具:psycopg2:RedshiftPython连接器boto3:AWSSDKforPythonPandas:数据批处理JSONSche</div>
                    </li>
                    <li><a href="/article/1891024696892256256.htm"
                           title="Python爬虫实战教程——如何抓取社交媒体用户信息(以Twitter和Instagram为例)" target="_blank">Python爬虫实战教程——如何抓取社交媒体用户信息(以Twitter和Instagram为例)</a>
                        <span class="text-muted">Python爬虫项目</span>
<a class="tag" taget="_blank" href="/search/2025%E5%B9%B4%E7%88%AC%E8%99%AB%E5%AE%9E%E6%88%98%E9%A1%B9%E7%9B%AE/1.htm">2025年爬虫实战项目</a><a class="tag" taget="_blank" href="/search/python/1.htm">python</a><a class="tag" taget="_blank" href="/search/%E7%88%AC%E8%99%AB/1.htm">爬虫</a><a class="tag" taget="_blank" href="/search/%E5%AA%92%E4%BD%93/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><a class="tag" taget="_blank" href="/search/%E4%BF%A1%E6%81%AF%E5%8F%AF%E8%A7%86%E5%8C%96/1.htm">信息可视化</a>
                        <div>1.引言社交媒体平台如Twitter和Instagram每天都会生成大量的用户内容,包括文本、图片、视频等。对于数据分析师和研究人员来说,抓取社交媒体平台的数据是进行趋势分析、情感分析、用户行为分析等工作的基础。本文将介绍如何通过Python爬虫技术抓取Twitter和Instagram的用户信息。我们将详细探讨如何使用最新的技术栈和API来实现社交媒体数据的抓取,并结合具体的代码示例,帮助您快速</div>
                    </li>
                    <li><a href="/article/1891024191801585664.htm"
                           title="pptx文档提取信息" target="_blank">pptx文档提取信息</a>
                        <span class="text-muted">DreamBoy_W.W.Y</span>
<a class="tag" taget="_blank" href="/search/%E7%9F%A5%E8%AF%86%E5%9B%BE%E8%B0%B1/1.htm">知识图谱</a><a class="tag" taget="_blank" href="/search/python/1.htm">python</a>
                        <div>目录一、前言二、python-pptx提取核心代码三、LibreOffice转换pdf再提取的核心代码一、前言pptx文档提取解析常用的库。如果只需要解析.pptx的文本、表格、图片,推荐使用python-pptx(开源,轻量级)。如果需要高性能、支持.ppt、动画、格式转换,推荐Aspose.Slides(收费)。如果需要PPTX转PDF或者HTML,适用于Linux服务器,推荐LibreOff</div>
                    </li>
                    <li><a href="/article/1891022174471385088.htm"
                           title="python 如何解析PDF文件,并将其翻译为其他语言" target="_blank">python 如何解析PDF文件,并将其翻译为其他语言</a>
                        <span class="text-muted">openwin_top</span>
<a class="tag" taget="_blank" href="/search/python%E7%BC%96%E7%A8%8B%E7%A4%BA%E4%BE%8B%E7%B3%BB%E5%88%97/1.htm">python编程示例系列</a><a class="tag" taget="_blank" href="/search/pdf/1.htm">pdf</a><a class="tag" taget="_blank" href="/search/python/1.htm">python</a>
                        <div>要解析PDF文件并将其翻译为其他语言,可以使用Python中的PyPDF2库和baidu_trans库。以下是解析PDF文件并将其翻译为其他语言的基本步骤:安装PyPDF2和baidu_trans库pipinstallPyPDF2baidu_trans可以使用PyPDF2库中的PdfFileWriter和PdfFileMerger类。以下是将翻译后的文本重新组织为PDF文档的代码示例:import</div>
                    </li>
                    <li><a href="/article/1891022173833850880.htm"
                           title="python flask django在线投票系统 md14i" target="_blank">python flask django在线投票系统 md14i</a>
                        <span class="text-muted">专注分享bishe530</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>
                        <div>文章目录具体实现截图项目技术介绍论文写作思路核心代码部分展示可定制开发功能创新亮点django项目示例源码/演示视频获取方式具体实现截图项目技术介绍Python版本:python3.7以上框架支持:flask/django开发软件:PyCharm数据库:mysql数据库工具:Navicat浏览器:谷歌浏览器(PycharmFlaskDjangoVuemysql)论文写作思路第一部分绪论,主要介绍所</div>
                    </li>
                    <li><a href="/article/1891020405951492096.htm"
                           title="python系列:使用Python快速读取PDF中的表单数据以及error处理" target="_blank">python系列:使用Python快速读取PDF中的表单数据以及error处理</a>
                        <span class="text-muted">坦笑&&life</span>
<a class="tag" taget="_blank" href="/search/%23/1.htm">#</a><a class="tag" taget="_blank" href="/search/python/1.htm">python</a><a class="tag" taget="_blank" href="/search/python/1.htm">python</a><a class="tag" taget="_blank" href="/search/pdf/1.htm">pdf</a><a class="tag" taget="_blank" href="/search/%E6%95%B0%E6%8D%AE%E5%BA%93/1.htm">数据库</a>
                        <div>使用Python快速读取PDF中的表单数据以及error处理使用Python快速读取PDF中的表单数据安装PythonPDF库Python读取PDF表单数据1、一次性读取多种PDF表单的数据2、读取特定PDF表单的数据python读取PDF文件中文本、表格、图片python读取PDF文件中文本、表格、图片一、文本读取二、图片读取三、表格读取问题AttributeError:'PdfPageBase</div>
                    </li>
                    <li><a href="/article/1891019019771768832.htm"
                           title="Python如何用pdfplumber读取解析pdf文件" target="_blank">Python如何用pdfplumber读取解析pdf文件</a>
                        <span class="text-muted">ToMiky明明</span>
<a class="tag" taget="_blank" href="/search/python/1.htm">python</a><a class="tag" taget="_blank" href="/search/pdf/1.htm">pdf</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.首先安装pdfplumber库:pipinstallpdfplumber2.如果安装失败,首先应该升级pip,用低版本的pip可能导致pdfplumber安装不成功:python-mpipinstall--upgradepip#coding:utf-8importpdfplumberwithpdfplumber.open('./test.pdf')aspdf:#遍历每个页面forpageinp</div>
                    </li>
                    <li><a href="/article/1891015743022100480.htm"
                           title="Python利用伪代码制作一个简单的登录系统" target="_blank">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>
                        <div>一.代码所需知识1.1伪代码伪代码(Pseudocode)是一种非正式的,用于描述模块结构图的语言。人们在实现一个算法时,尤其是对于那些熟练于不同编程语言的程序员要理解一个算法功能时可能很难,因为程序语言的形式限制了程序员对程序关键部分的理解。所以伪代码就应运而生了,伪代码提供了更多的设计信息。1.2for...else...循环在for...else...的循环中,很多人以为进入了for的循环后</div>
                    </li>
                    <li><a href="/article/1891013849130266624.htm"
                           title="Python - WSGI 和 ASGI 服务器" target="_blank">Python - WSGI 和 ASGI 服务器</a>
                        <span class="text-muted">小菠萝测试笔记</span>
<a class="tag" taget="_blank" href="/search/%E7%BD%91%E7%BB%9C/1.htm">网络</a><a class="tag" taget="_blank" href="/search/%E7%BD%91%E5%85%B3/1.htm">网关</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/http/1.htm">http</a>
                        <div>WSGIwiki上的解释WebServerGatewayInterfaceWeb服务器网关接口是为Python定义的Web服务器和Web应用程序或框架之间的一种简单而通用的接口WSGI的问题随着移动网络的发展,Web技术也在升级,比如WebSocket、HTTP/2,HTTP/3WSGI应用是一个单调用、同步接口,即输入一个请求,返回一个响应;这个模式无法支持长连接或者WebSocket这样的连接</div>
                    </li>
                    <li><a href="/article/1891009814436311040.htm"
                           title="python解析pdf文件" target="_blank">python解析pdf文件</a>
                        <span class="text-muted">irisMoon06</span>
<a class="tag" taget="_blank" href="/search/python/1.htm">python</a><a class="tag" taget="_blank" href="/search/pdf/1.htm">pdf</a><a class="tag" taget="_blank" href="/search/microsoft/1.htm">microsoft</a>
                        <div>先安装PyPDF2,据说这是目前最好的解析pdf的包pipinstallPyPDF2PDF文件分割、拼接importosfromPyPDF2importPdfFileWriter,PdfFileReaderdefclear_dir(dir_path):  """清空目录下的文件"""  names=os.listdir(dir_path)  fornameinnames:    file_path</div>
                    </li>
                    <li><a href="/article/1891000993362014208.htm"
                           title="如何解决Python不支持中文路径的问题?" target="_blank">如何解决Python不支持中文路径的问题?</a>
                        <span class="text-muted">cda2024</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>
                        <div>在编程的世界里,遇到问题并不罕见,但有些问题可能会让人感到格外棘手。比如,你是否曾经在使用Python处理文件时,因为路径中包含中文字符而头疼不已?这个问题不仅影响了代码的可读性和健壮性,还可能导致程序运行失败。今天,我们就来深入探讨一下“如何解决Python不支持中文路径的问题”,希望能为你的编程之路扫清障碍。问题背景Python与中文路径Python是一种广泛使用的高级编程语言,以其简洁明了的</div>
                    </li>
                                <li><a href="/article/112.htm"
                                       title="HQL之投影查询" target="_blank">HQL之投影查询</a>
                                    <span class="text-muted">归来朝歌</span>
<a class="tag" taget="_blank" href="/search/HQL/1.htm">HQL</a><a class="tag" taget="_blank" href="/search/Hibernate/1.htm">Hibernate</a><a class="tag" taget="_blank" href="/search/%E6%9F%A5%E8%AF%A2%E8%AF%AD%E5%8F%A5/1.htm">查询语句</a><a class="tag" taget="_blank" href="/search/%E6%8A%95%E5%BD%B1%E6%9F%A5%E8%AF%A2/1.htm">投影查询</a>
                                    <div>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 在HQL查询中,常常面临这样一个场景,对于多表查询,是要将一个表的对象查出来还是要只需要每个表中的几个字段,最后放在一起显示? 
针对上面的场景,如果需要将一个对象查出来: 
HQL语句写“from 对象”即可 
Session session = HibernateUtil.openSession();
		</div>
                                </li>
                                <li><a href="/article/239.htm"
                                       title="Spring整合redis" target="_blank">Spring整合redis</a>
                                    <span class="text-muted">bylijinnan</span>
<a class="tag" taget="_blank" href="/search/redis/1.htm">redis</a>
                                    <div>pom.xml 
 

&lt;dependencies&gt;
		&lt;!-- Spring Data - Redis Library --&gt;
		&lt;dependency&gt;
			&lt;groupId&gt;org.springframework.data&lt;/groupId&gt;
			&lt;artifactId&gt;spring-data-redi</div>
                                </li>
                                <li><a href="/article/366.htm"
                                       title="org.hibernate.NonUniqueResultException: query did not return a unique result: 2" target="_blank">org.hibernate.NonUniqueResultException: query did not return a unique result: 2</a>
                                    <span class="text-muted">0624chenhong</span>
<a class="tag" taget="_blank" href="/search/Hibernate/1.htm">Hibernate</a>
                                    <div>参考:http://blog.csdn.net/qingfeilee/article/details/7052736 
org.hibernate.NonUniqueResultException: query did not return a unique result: 2 
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 在项目中出现了org.hiber</div>
                                </li>
                                <li><a href="/article/493.htm"
                                       title="android动画效果" target="_blank">android动画效果</a>
                                    <span class="text-muted">不懂事的小屁孩</span>
<a class="tag" taget="_blank" href="/search/android%E5%8A%A8%E7%94%BB/1.htm">android动画</a>
                                    <div>前几天弄alertdialog和popupwindow的时候,用到了android的动画效果,今天专门研究了一下关于android的动画效果,列出来,方便以后使用。 
 
Android 平台提供了两类动画。 一类是Tween动画,就是对场景里的对象不断的进行图像变化来产生动画效果(旋转、平移、放缩和渐变)。 
第二类就是 Frame动画,即顺序的播放事先做好的图像,与gif图片原理类似。 
 
</div>
                                </li>
                                <li><a href="/article/620.htm"
                                       title="js delete 删除机理以及它的内存泄露问题的解决方案" target="_blank">js delete 删除机理以及它的内存泄露问题的解决方案</a>
                                    <span class="text-muted">换个号韩国红果果</span>
<a class="tag" taget="_blank" href="/search/JavaScript/1.htm">JavaScript</a>
                                    <div>delete删除属性时只是解除了属性与对象的绑定,故当属性值为一个对象时,删除时会造成内存泄露&nbsp; (其实还未删除) 
举例: 

var person={name:{firstname:'bob'}}
var p=person.name
delete person.name
p.firstname  --&gt;'bob'
// 依然可以访问p.firstname,存在内存泄露</div>
                                </li>
                                <li><a href="/article/747.htm"
                                       title="Oracle将零干预分析加入网络即服务计划" target="_blank">Oracle将零干预分析加入网络即服务计划</a>
                                    <span class="text-muted">蓝儿唯美</span>
<a class="tag" taget="_blank" href="/search/oracle/1.htm">oracle</a>
                                    <div>由Oracle通信技术部门主导的演示项目并没有在本月较早前法国南斯举行的行业集团TM论坛大会中获得嘉奖。但是,Oracle通信官员解雇致力于打造一个支持零干预分配和编制功能的网络即服务(NaaS)平台,帮助企业以更灵活和更适合云的方式实现通信服务提供商(CSP)的连接产品。这个Oracle主导的项目属于TM Forum Live!活动上展示的Catalyst计划的19个项目之一。Catalyst计</div>
                                </li>
                                <li><a href="/article/874.htm"
                                       title="spring学习——springmvc(二)" target="_blank">spring学习——springmvc(二)</a>
                                    <span class="text-muted">a-john</span>
<a class="tag" taget="_blank" href="/search/springMVC/1.htm">springMVC</a>
                                    <div>Spring MVC提供了非常方便的文件上传功能。 
1,配置Spring支持文件上传: 
DispatcherServlet本身并不知道如何处理multipart的表单数据,需要一个multipart解析器把POST请求的multipart数据中抽取出来,这样DispatcherServlet就能将其传递给我们的控制器了。为了在Spring中注册multipart解析器,需要声明一个实现了Mul</div>
                                </li>
                                <li><a href="/article/1001.htm"
                                       title="POJ-2828-Buy Tickets" target="_blank">POJ-2828-Buy Tickets</a>
                                    <span class="text-muted">aijuans</span>
<a class="tag" taget="_blank" href="/search/ACM_POJ/1.htm">ACM_POJ</a>
                                    <div>POJ-2828-Buy Tickets 
http://poj.org/problem?id=2828 
线段树,逆序插入 
 
#include&lt;iostream&gt;#include&lt;cstdio&gt;#include&lt;cstring&gt;#include&lt;cstdlib&gt;using namespace std;#define N 200010struct</div>
                                </li>
                                <li><a href="/article/1128.htm"
                                       title="Java Ant build.xml详解" target="_blank">Java Ant build.xml详解</a>
                                    <span class="text-muted">asia007</span>
<a class="tag" taget="_blank" href="/search/build.xml/1.htm">build.xml</a>
                                    <div>1,什么是antant是构建工具2,什么是构建概念到处可查到,形象来说,你要把代码从某个地方拿来,编译,再拷贝到某个地方去等等操作,当然不仅与此,但是主要用来干这个3,ant的好处跨平台&nbsp;&nbsp; --因为ant是使用java实现的,所以它跨平台使用简单--与ant的兄弟make比起来语法清晰--同样是和make相比功能强大--ant能做的事情很多,可能你用了很久,你仍然不知道它能有</div>
                                </li>
                                <li><a href="/article/1255.htm"
                                       title="android按钮监听器的四种技术" target="_blank">android按钮监听器的四种技术</a>
                                    <span class="text-muted">百合不是茶</span>
<a class="tag" taget="_blank" href="/search/android/1.htm">android</a><a class="tag" taget="_blank" href="/search/xml%E9%85%8D%E7%BD%AE/1.htm">xml配置</a><a class="tag" taget="_blank" href="/search/%E7%9B%91%E5%90%AC%E5%99%A8/1.htm">监听器</a><a class="tag" taget="_blank" href="/search/%E5%AE%9E%E7%8E%B0%E6%8E%A5%E5%8F%A3/1.htm">实现接口</a>
                                    <div>android开发中经常会用到各种各样的监听器,android监听器的写法与java又有不同的地方;&nbsp; 
&nbsp; 
1,activity中使用内部类实现接口 ,创建内部类实例 &nbsp;使用add方法 &nbsp;与java类似 
&nbsp; 
创建监听器的实例 
myLis lis = new myLis(); 
&nbsp; 
使用add方法给按钮添加监听器 
&nbsp;</div>
                                </li>
                                <li><a href="/article/1382.htm"
                                       title="软件架构师不等同于资深程序员" target="_blank">软件架构师不等同于资深程序员</a>
                                    <span class="text-muted">bijian1013</span>
<a class="tag" taget="_blank" href="/search/%E7%A8%8B%E5%BA%8F%E5%91%98/1.htm">程序员</a><a class="tag" taget="_blank" href="/search/%E6%9E%B6%E6%9E%84%E5%B8%88/1.htm">架构师</a><a class="tag" taget="_blank" href="/search/%E6%9E%B6%E6%9E%84%E8%AE%BE%E8%AE%A1/1.htm">架构设计</a>
                                    <div>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 本文的作者Armel Nene是ETAPIX Global公司的首席架构师,他居住在伦敦,他参与过的开源项目包括 Apache Lucene,,Apache Nutch, Liferay 和 Pentaho等。 
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 如今很多的公司</div>
                                </li>
                                <li><a href="/article/1509.htm"
                                       title="TeamForge Wiki Syntax & CollabNet User Information Center" target="_blank">TeamForge Wiki Syntax & CollabNet User Information Center</a>
                                    <span class="text-muted">sunjing</span>
<a class="tag" taget="_blank" href="/search/TeamForge/1.htm">TeamForge</a><a class="tag" taget="_blank" href="/search/How+do/1.htm">How do</a><a class="tag" taget="_blank" href="/search/Attachement/1.htm">Attachement</a><a class="tag" taget="_blank" href="/search/Anchor/1.htm">Anchor</a><a class="tag" taget="_blank" href="/search/Wiki+Syntax/1.htm">Wiki Syntax</a>
                                    <div>the CollabNet user information center http://help.collab.net/ 
&nbsp; 
How do I create a new Wiki page? 
A CollabNet TeamForge project can have any number of Wiki pages. All Wiki pages are linked, and</div>
                                </li>
                                <li><a href="/article/1636.htm"
                                       title="【Redis四】Redis数据类型" target="_blank">【Redis四】Redis数据类型</a>
                                    <span class="text-muted">bit1129</span>
<a class="tag" taget="_blank" href="/search/redis/1.htm">redis</a>
                                    <div>概述 
Redis是一个高性能的数据结构服务器,称之为数据结构服务器的原因是,它提供了丰富的数据类型以满足不同的应用场景,本文对Redis的数据类型以及对这些类型可能的操作进行总结。 
Redis常用的数据类型包括string、set、list、hash以及sorted set.Redis本身是K/V系统,这里的数据类型指的是value的类型,而不是key的类型,key的类型只有一种即string</div>
                                </li>
                                <li><a href="/article/1763.htm"
                                       title="SSH2整合-附源码" target="_blank">SSH2整合-附源码</a>
                                    <span class="text-muted">白糖_</span>
<a class="tag" taget="_blank" href="/search/eclipse/1.htm">eclipse</a><a class="tag" taget="_blank" href="/search/spring/1.htm">spring</a><a class="tag" taget="_blank" href="/search/tomcat/1.htm">tomcat</a><a class="tag" taget="_blank" href="/search/Hibernate/1.htm">Hibernate</a><a class="tag" taget="_blank" href="/search/Google/1.htm">Google</a>
                                    <div>今天用eclipse终于整合出了struts2+hibernate+spring框架。 
我创建的是tomcat项目,需要有tomcat插件。导入项目以后,鼠标右键选择属性,然后再找到“tomcat”项,勾选一下“Is a&nbsp;tomcat project”即可。具体方法见源码里的jsp图片,sql也在源码里。 
&nbsp; 
&nbsp; 
补充1:项目中部分jar包不是最新版的,可能导</div>
                                </li>
                                <li><a href="/article/1890.htm"
                                       title="[转]开源项目代码的学习方法" target="_blank">[转]开源项目代码的学习方法</a>
                                    <span class="text-muted">braveCS</span>
<a class="tag" taget="_blank" href="/search/%E5%AD%A6%E4%B9%A0%E6%96%B9%E6%B3%95/1.htm">学习方法</a>
                                    <div>转自: 
http://blog.sina.com.cn/s/blog_693458530100lk5m.html 
http://www.cnblogs.com/west-link/archive/2011/06/07/2074466.html 
&nbsp; 
1)阅读features。以此来搞清楚该项目有哪些特性2)思考。想想如果自己来做有这些features的项目该如何构架3)下载并安装d</div>
                                </li>
                                <li><a href="/article/2017.htm"
                                       title="编程之美-子数组的最大和(二维)" target="_blank">编程之美-子数组的最大和(二维)</a>
                                    <span class="text-muted">bylijinnan</span>
<a class="tag" taget="_blank" href="/search/%E7%BC%96%E7%A8%8B%E4%B9%8B%E7%BE%8E/1.htm">编程之美</a>
                                    <div>package beautyOfCoding;

import java.util.Arrays;
import java.util.Random;

public class MaxSubArraySum2 {

	/**
	 * 编程之美 子数组之和的最大值(二维)
	 */
	private static final int ROW = 5;
	private stat</div>
                                </li>
                                <li><a href="/article/2144.htm"
                                       title="读书笔记-3" target="_blank">读书笔记-3</a>
                                    <span class="text-muted">chengxuyuancsdn</span>
<a class="tag" taget="_blank" href="/search/jquery%E7%AC%94%E8%AE%B0/1.htm">jquery笔记</a><a class="tag" taget="_blank" href="/search/resultMap%E9%85%8D%E7%BD%AE/1.htm">resultMap配置</a><a class="tag" taget="_blank" href="/search/ibatis%E4%B8%80%E5%AF%B9%E5%A4%9A%E9%85%8D%E7%BD%AE/1.htm">ibatis一对多配置</a>
                                    <div>1、resultMap配置 
2、ibatis一对多配置 
3、jquery笔记 
 
1、resultMap配置
当&lt;select resultMap=&quot;topic_data&quot;&gt;
&lt;resultMap id=&quot;topic_data&quot;&gt;必须一一对应。
(1)&lt;resultMap class=&quot;tblTopic&q</div>
                                </li>
                                <li><a href="/article/2271.htm"
                                       title="[物理与天文]物理学新进展" target="_blank">[物理与天文]物理学新进展</a>
                                    <span class="text-muted">comsci</span>

                                    <div> 
 
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 如果我们必须获得某种地球上没有的矿石,才能够进行某些能量输出装置的设计和建造,而要获得这种矿石,又必须首先进行深空探测,而要进行深空探测,又必须获得这种能量输出装置,这个矛盾的循环,会导致地球联盟在与宇宙文明建立关系的时候,陷入困境 
 
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 怎么办呢? 
 
&nbsp</div>
                                </li>
                                <li><a href="/article/2398.htm"
                                       title="Oracle 11g新特性:Automatic Diagnostic Repository" target="_blank">Oracle 11g新特性:Automatic Diagnostic Repository</a>
                                    <span class="text-muted">daizj</span>
<a class="tag" taget="_blank" href="/search/oracle/1.htm">oracle</a><a class="tag" taget="_blank" href="/search/ADR/1.htm">ADR</a>
                                    <div>Oracle Database 11g的FDI(Fault Diagnosability Infrastructure)是自动化诊断方面的又一增强。 
FDI的一个关键组件是自动诊断库(Automatic Diagnostic Repository-ADR)。 
 
在oracle 11g中,alert文件的信息是以xml的文件格式存在的,另外提供了普通文本格式的alert文件。 
这两份log文</div>
                                </li>
                                <li><a href="/article/2525.htm"
                                       title="简单排序:选择排序" target="_blank">简单排序:选择排序</a>
                                    <span class="text-muted">dieslrae</span>
<a class="tag" taget="_blank" href="/search/%E9%80%89%E6%8B%A9%E6%8E%92%E5%BA%8F/1.htm">选择排序</a>
                                    <div>
    public void selectSort(int[] array){
        int select;
        
        for(int i=0;i&lt;array.length;i++){
            select = i;
            
            for(int k=i+1;k&lt;array.leng</div>
                                </li>
                                <li><a href="/article/2652.htm"
                                       title="C语言学习六指针的经典程序,互换两个数字" target="_blank">C语言学习六指针的经典程序,互换两个数字</a>
                                    <span class="text-muted">dcj3sjt126com</span>
<a class="tag" taget="_blank" href="/search/c/1.htm">c</a>
                                    <div>示例程序,swap_1和swap_2都是错误的,推理从1开始推到2,2没完成,推到3就完成了 
# include &lt;stdio.h&gt;

void swap_1(int, int);
void swap_2(int *, int *);
void swap_3(int *, int *);

int main(void)
{
	int a = 3;
	int b = </div>
                                </li>
                                <li><a href="/article/2779.htm"
                                       title="php 5.4中php-fpm 的重启、终止操作命令" target="_blank">php 5.4中php-fpm 的重启、终止操作命令</a>
                                    <span class="text-muted">dcj3sjt126com</span>
<a class="tag" taget="_blank" href="/search/PHP/1.htm">PHP</a>
                                    <div>php 5.4中php-fpm 的重启、终止操作命令: 
查看php运行目录命令:which php/usr/bin/php 
查看php-fpm进程数:ps aux | grep -c php-fpm 
查看运行内存/usr/bin/php&nbsp; -i|grep mem 
重启php-fpm/etc/init.d/php-fpm restart 
在phpinfo()输出内容可以看到php</div>
                                </li>
                                <li><a href="/article/2906.htm"
                                       title="线程同步工具类" target="_blank">线程同步工具类</a>
                                    <span class="text-muted">shuizhaosi888</span>
<a class="tag" taget="_blank" href="/search/%E5%90%8C%E6%AD%A5%E5%B7%A5%E5%85%B7%E7%B1%BB/1.htm">同步工具类</a>
                                    <div>同步工具类包括信号量(Semaphore)、栅栏(barrier)、闭锁(CountDownLatch) 
&nbsp; 
闭锁(CountDownLatch) 
public class RunMain {
	public long timeTasks(int nThreads, final Runnable task) throws InterruptedException {
		fin</div>
                                </li>
                                <li><a href="/article/3033.htm"
                                       title="bleeding edge是什么意思" target="_blank">bleeding edge是什么意思</a>
                                    <span class="text-muted">haojinghua</span>
<a class="tag" taget="_blank" href="/search/DI/1.htm">DI</a>
                                    <div>不止一次,看到很多讲技术的文章里面出现过这个词语。今天终于弄懂了——通过朋友给的浏览软件,上了wiki。&nbsp; 
我再一次感到,没有辞典能像WiKi一样,给出这样体贴人心、一清二楚的解释了。为了表达我对WiKi的喜爱,只好在此一一中英对照,给大家上次课。 
&nbsp; 
In computer science,&nbsp;bleeding edge&nbsp;is a term that </div>
                                </li>
                                <li><a href="/article/3160.htm"
                                       title="c中实现utf8和gbk的互转" target="_blank">c中实现utf8和gbk的互转</a>
                                    <span class="text-muted">jimmee</span>
<a class="tag" taget="_blank" href="/search/c/1.htm">c</a><a class="tag" taget="_blank" href="/search/iconv/1.htm">iconv</a><a class="tag" taget="_blank" href="/search/utf8%26gbk%E7%BC%96%E7%A0%81/1.htm">utf8&gbk编码</a>
                                    <div>#include &lt;iconv.h&gt;
#include &lt;stdlib.h&gt;
#include &lt;stdio.h&gt;
#include &lt;unistd.h&gt;
#include &lt;fcntl.h&gt;
#include &lt;string.h&gt;
#include &lt;sys/stat.h&gt;

int code_c</div>
                                </li>
                                <li><a href="/article/3287.htm"
                                       title="大型分布式网站架构设计与实践" target="_blank">大型分布式网站架构设计与实践</a>
                                    <span class="text-muted">lilin530</span>
<a class="tag" taget="_blank" href="/search/%E5%BA%94%E7%94%A8%E6%9C%8D%E5%8A%A1%E5%99%A8/1.htm">应用服务器</a><a class="tag" taget="_blank" href="/search/%E6%90%9C%E7%B4%A2%E5%BC%95%E6%93%8E/1.htm">搜索引擎</a>
                                    <div>1.大型网站软件系统的特点? 
a.高并发,大流量。 
b.高可用。 
c.海量数据。 
d.用户分布广泛,网络情况复杂。 
e.安全环境恶劣。 
f.需求快速变更,发布频繁。 
g.渐进式发展。 
 
2.大型网站架构演化发展历程? 
a.初始阶段的网站架构。 
应用程序,数据库,文件等所有的资源都在一台服务器上。 
b.应用服务器和数据服务器分离。 
c.使用缓存改善网站性能。 
d.使用应用</div>
                                </li>
                                <li><a href="/article/3414.htm"
                                       title="在代码中获取Android theme中的attr属性值" target="_blank">在代码中获取Android theme中的attr属性值</a>
                                    <span class="text-muted">OliveExcel</span>
<a class="tag" taget="_blank" href="/search/android/1.htm">android</a><a class="tag" taget="_blank" href="/search/theme/1.htm">theme</a>
                                    <div>Android的Theme是由各种attr组合而成, 每个attr对应了这个属性的一个引用, 这个引用又可以是各种东西. 
&nbsp; 
在某些情况下, 我们需要获取非自定义的主题下某个属性的内容 (比如拿到系统默认的配色colorAccent), 操作方式举例一则: 
int defaultColor = 0xFF000000;
int[] attrsArray = { andorid.r.</div>
                                </li>
                                <li><a href="/article/3541.htm"
                                       title="基于Zookeeper的分布式共享锁" target="_blank">基于Zookeeper的分布式共享锁</a>
                                    <span class="text-muted">roadrunners</span>
<a class="tag" taget="_blank" href="/search/zookeeper/1.htm">zookeeper</a><a class="tag" taget="_blank" href="/search/%E5%88%86%E5%B8%83%E5%BC%8F/1.htm">分布式</a><a class="tag" taget="_blank" href="/search/%E5%85%B1%E4%BA%AB%E9%94%81/1.htm">共享锁</a>
                                    <div>首先,说说我们的场景,订单服务是做成集群的,当两个以上结点同时收到一个相同订单的创建指令,这时并发就产生了,系统就会重复创建订单。等等......场景。这时,分布式共享锁就闪亮登场了。 
&nbsp; 
共享锁在同一个进程中是很容易实现的,但在跨进程或者在不同Server之间就不好实现了。Zookeeper就很容易实现。具体的实现原理官网和其它网站也有翻译,这里就不在赘述了。 
&nbsp; 
官</div>
                                </li>
                                <li><a href="/article/3668.htm"
                                       title="两个容易被忽略的MySQL知识" target="_blank">两个容易被忽略的MySQL知识</a>
                                    <span class="text-muted">tomcat_oracle</span>
<a class="tag" taget="_blank" href="/search/mysql/1.htm">mysql</a>
                                    <div>1、varchar(5)可以存储多少个汉字,多少个字母数字?     相信有好多人应该跟我一样,对这个已经很熟悉了,根据经验我们能很快的做出决定,比如说用varchar(200)去存储url等等,但是,即使你用了很多次也很熟悉了,也有可能对上面的问题做出错误的回答。     这个问题我查了好多资料,有的人说是可以存储5个字符,2.5个汉字(每个汉字占用两个字节的话),有的人说这个要区分版本,5.0</div>
                                </li>
                                <li><a href="/article/3795.htm"
                                       title="zoj 3827 Information Entropy(水题)" target="_blank">zoj 3827 Information Entropy(水题)</a>
                                    <span class="text-muted">阿尔萨斯</span>
<a class="tag" taget="_blank" href="/search/format/1.htm">format</a>
                                    <div> 题目链接:zoj 3827 Information Entropy 
 题目大意:三种底,计算和。 
 解题思路:调用库函数就可以直接算了,不过要注意Pi = 0的时候,不过它题目里居然也讲了。。。limp→0+plogb(p)=0,因为p是logp的高阶。 
#include &lt;cstdio&gt;
#include &lt;cstring&gt;
#include &lt;cmath&</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>