拆取 Web 页

摘要: 本文讨论如何收集来自 Web 的信息,并借助 Internet Explorer 的可重用分析器组件,将它分布到其他 Web 页或数据库。(打印共 7 页)

程序员面临的一个共同任务就是收集 Web 站点的数据,并将它分布到数据库或其他 Web 页。例如,程序员可能需要从气象站点获得天气预报图,从在线股票经纪人那里获得股票报价,以及从新闻站点获得行业新闻。然后,这些信息被放在一个 Web 页上,供 CIO、商人或销售经理使用。或者,也许程序员需要跟踪历来的气象资料,并需要每天将来自气象站的天气预报信息存入数据库。其应用不胜枚举。

过去,这些选择相当受限制。现在,通过使用象 WinInet.dll 这样的 HTTP 组件或许多其他第三方组件,您就可以获取 Web 页,并利用几百种字符串处理功能来获得网页中您所感兴趣的部分。这一技术已在应用,但很不理想。如果您致力于计算机科学(或者有足够的时间),就会为 HTML 创建一个分析器,以标记 Web 页,然后分析您需要的网页部分。不过,由于 Internet Explorer 的体系结构中已包含了可重复使用的用分析器,这些都不需要了。

Internet Explorer 不只是一个程序,更是许多可重复使用组件的集合与容器。在拆取 Web 页时,最有意思的两个组件是 shdocvw.dllmshtml.dll。第一个组件 shdocvw.dll,包含称为 WebBrowser 的 Microsoft(R) ActiveX(R) 控件,它真实地显示 Web 页。在运行 Internet Explorer 时,显示 Web 页的主窗口就是这样的控件。第二个组件 mshtml.dll,含有能分析 WebBrowser 控件中所包含文档的 HTML 分析器。

可能有这种情况,在您的应用程序内部,已经用 WebBrowser 控件来驻留 Web 页,但仍需要重新创建一个小浏览器来启动 Web 页的拆取。

  1. 文件菜单上,请单击新建工程,以创建“标准 EXE”,然后在工程菜单上单击部件,以添加 Microsoft HTML Object LibraryMicrosoft Internet Controls。(见图 1。)

    图 1.

  2. 在工具箱中,可看见 WebBrowser 组件。拖动其中之一,文本框和主窗体上的命令按钮。将此文本框的 Text 属性设置为 “http://moneycentral.msn.com/”,将此命令按钮的 Caption 属性设置为“浏览(&B)”。(见图 2。)

    图 2.

  3. 双击该命令按钮,然后在事件处理器中放入下列代码,导航至文本框中命名的 Web 站点:
    Private Sub Command1_Click()    WebBrowser1.Navigate Text1.TextEnd Sub
  4. 保存并运行该程序。试着按浏览按钮,导航到文本框中指定的站点。您已经创建了一个基本的 Web 浏览器 — 就其本身而言没什么用,甚至没什么意义,但它却是迈向 Web 拆取技术的第一步。

  5. 回到工程中,在代码窗口中选择 WebBrowser1 对象,然后选择 DocumentComplete 的事件处理器。一旦整个 Web 页下载到此浏览器中,即触发该事件:
    Private Sub WebBrowser1_DocumentComplete_ (ByVal pDisp As Object, URL As Variant)End Sub

    传递到该事件中的 URL 就是我们导航所至的位置,它在日后确定浏览器所在的页面时将更为有用。WebBrowser 控件有一个属性称为 Document(文档),可将其视为 IHTMLDocument 来处理:

    Private Sub WebBrowser1_DocumentComplete(_ ByVal pDisp As Object, URL As Variant)    Dim Doc As IHTMLDocument2    Set Doc = WebBrowser1.Document    //下一步:分析该文档End Sub

    较新的 IHTMLDocument2 具有 IHTMLDocument 中无法使用的特性。可对系统使用 IHTMLDocument 替代老版本的 Internet Explorer,如果您有勇气的话,甚至可以使用 IHTMLDocument3。补充说明一下,我们假设您已经导航到 Word 文档或 XML 文档,而非 HTML 文档。不要将变量 doc 声明为 IHTMLDocument2,可将其声明为 Word 的文档或 XML 的 DOMDocument

    在进行下一步之前,理解 HTML 文档的结构是非常重要的。和 XML 不一样,HTML 文档的组合有一定的自由度。例如,您会遇到未关闭标记的 HTML 文档。HTML 文档确实有某种结构。结构好的 HTML 文档通常具有下列元素:

              header information like the    </HEAD>   <BODY>       elements like <TABLE> and <A> and <IMG>   </BODY></HTML></pre> <p class="tl">请注意 HTML 的树状结构。标记包含标记又包含标记,如此等等。特别是,每一个标记元素都包含一个 <em>0 到 n </em>个标记元素的集合。<em><TABLE></em> 标记可以包含 <em><TR></em> 标记。每个 <em><TR></em> 标记可以包含 <em><TD></em> 标记,后者又可以包含其他标记如锚或图像等。</p> </li> 
       <li>现在,分析整个 <strong>http://moneycentral.msn.com/</strong>,并在带 MSFT 符号的页填上第二个 <em><INPUT></em> 标记。然后,调用此窗体上的<em><strong>提交</strong></em>: <pre class="clsCode">Private Sub WebBrowser1_DocumentComplete(ByVal pDisp As Object, URL As Variant)    Dim doc As IHTMLDocument2    Set doc = WebBrowser1.Document        If URL = _    "http://moneycentral.msn.com/home.asp" Then        '填充带输入标记的元素集合        Dim Inputs As IHTMLElementCollection        Set Inputs = doc.All.tags("INPUT")        '选择第一个输入标记        Dim Element As IHTMLElement        Set Element = Inputs.Item(1, 1)                '使用正确的界面        Dim InputElement As IHTMLInputElement        Set InputElement = Element        InputElement.Value = Text1.Text                '调用此页第一个窗体上的提交        doc.Forms.Item(0, 0).submitEnd Sub</pre> <p class="tl">在此您会看到,标记集合如何包含可视为其特定类型的标记。每一个标记都可用 IHTMLElement 界面表示,或用指定为该标记类型的界面表示。例如,<em><TABLE></em> 标记可用 IHTMLTableElement 或 IHTMLElement 表示。</p> <p class="tl">标记的集合都包含下列重要的方法和属性:</p> 
        <ul type="disc"> 
         <li><strong>长度</strong>。可将其理解为<em>计数</em>,或集合中项目的数量。<br><br></li> 
         <li><strong>项目</strong>。用于选择集合中的特殊元素。“项目”有两个参数,第二个参数即命名的标记。<br><br></li> 
         <li><strong>标记</strong>。将要过滤的元素传递给标记。标记 ("A") 将返回集合内所有锚的集合。要想有效地拆取页,就需要学会使用标记集合。 </li> 
        </ul><p class="tl">现在可能您会问,“为什么不直接转到 <strong>http://moneycentral.msn.com/scripts/webquote.dll?ipage=qd&Symbol=msft</strong>?”当然是可以的,但这个例子告诉大家如何在更复杂的情况下操纵 HTML 窗体。</p> <p class="tl">如果您未做进一步的改动即运行该程序,就会注意到它将陷入无休止的循环,没完没了地下载同一个页面。程序不断地寻找要填充的窗体,并反复调用 <strong>DocumentComplete</strong>。要修正这个缺陷,应在 <strong>DocumentComplete</strong> 中置入一些逻辑,告诉分析器,只有在正确的页面上才提交窗体。</p> </li> 
       <li>接下来,让我们放入这个逻辑,并引入实际的股票报价。另外,我们不捕获文本框中的 URL,而是捕获股票符号: <pre class="clsCode">Private Sub Command1_Click()    WebBrowser1.Navigate _     "http://moneycentral.msn.com/home.asp"End Sub Private Sub WebBrowser1_DocumentComplete(ByVal pDisp As Object, URL As Variant)    Dim doc As IHTMLDocument2    Set doc = WebBrowser1.Document        If URL = "http://moneycentral.msn.com/home.asp" Then        '填充带输入标记的元素集合        Dim Inputs As IHTMLElementCollection        Set Inputs = doc.All.tags("INPUT")        '选择第一个输入标记        Dim Element As IHTMLElement        Set Element = Inputs.Item(1, 1)                '使用正确的界面        Dim InputElement As IHTMLInputElement        Set InputElement = Element        InputElement.Value = Text1.Text                '调用该页第一个窗体上的提交        doc.Forms.Item(0, 0).submit    ElseIf URL = _    "http://moneycentral.msn.com/scripts/webquote.dll?ipage=qd&Symbol=" _                 & Text1.Text Then        Dim Tables As IHTMLElementCollection        Set Tables = doc.All.tags("TABLE")        '获得第 14 个表的第二个项目(基于 0)        Dim Quote As IHTMLElement        Set Quote = _        Tables.Item(14, 14).All.tags("TD").Item(2, 2)        '显示开始标记和结束标记之间的文本        MsgBox Quote.innerText    End IfEnd Sub</pre> <p></p> <p class="label"><strong>图 3.</strong> </p> <p class="tl">到了这最后一步,自定义的浏览器已被转入有效的 Web 拆取器。重要的是,要注意有了 IHTMLElement 之后获得文本的可用选项。有 4 个属性:</p> 
        <ul type="disc"> 
         <li><strong>innerText</strong>:开始标记和结束标记之间的文本。<br><br></li> 
         <li><strong>innerHTML</strong>:开始标记和结束标记之间的文本和 HTML。<br><br></li> 
         <li><strong>outerText</strong>:对象的文本。<br><br></li> 
         <li><strong>outerHTML</strong>:对象的文本和 HTML。 </li> 
        </ul><p class="tl">还要注意从<strong>第</strong> 4 个表(基于 0)的<strong>第</strong> 11 个元素中检索到的最终报价字符串。如果 MoneyCentral? 决定重新调整该页怎么办?您最好的策略是根据合理的假定来查询页面。如果您<em>知道</em>报价<em>几乎总是</em>放在新闻标题的前面,那么就从新闻标题往回查询那个表。还有一种策略是,当更改页面的格式时,有一种简单的方法来更新分析器。一种方法就是将分析的职能细分为较小的组件。每个组件可以实现一个预定义的界面,接受要分析的 IHTMLDocument。与实际的 Web 页失去同步的分析组件可被替换。这样带来的好处是,多个编程人员都可以编写分析器,只需给定要实现的界面和要拆取的 Web 站点即可。</p> <p class="tl">为了避免复杂,将 IHTMLDocument 从 <strong>DocumentComplete</strong> 函数传递 COM DLL,后者可以分析 IHTMLDocument 并返回想要的有效负载。这有利于程序的模块化,并易于更新与 Web 站点失去同步的分析部分。它还使多个开发者能同时处理这个项目,因为他们有一个干净的界面来编写分析器。</p> </li> 
      </ol> 
      <p>在把新的程序推向市场以前,还有几个实际问题要考虑。首先,很可能 MoneyCentral 和其他许多站点不愿意别人下载他们的内容,也不喜欢看广告。您可能得与摘取其内容的站点签订一份协议。</p> 
      <p>还有很重要的一点要注意,即如果您是 Web 站点的操作员,那么还有更好的办法将您的内容提供给其他系统。虽然可以让其他人来拆取您的 Web 页,但这仍很笨拙。还有一个更好的方法是,提供 XML 来表现内容。并且,随着 XML 被广泛采用,Web 站点开始提供其数据的 XML 表现形式以及 HTML 界面,也不值得大惊小怪。在这样的时刻到来之前,您也许还得拆取 Web 页。Web 页的拆取往往失之笨拙,但 Microsoft HTML 分析器可令其稍微好一些。</p> 
     </div> 
    </div>
                                </div>
                            </div>
                        </div>
                        <!--PC和WAP自适应版-->
                        <div id="SOHUCS" sid="1276746821317705728"></div>
                        <script type="text/javascript" src="/views/front/js/chanyan.js"></script>
                        <!-- 文章页-底部 动态广告位 -->
                        <div class="youdao-fixed-ad" id="detail_ad_bottom"></div>
                    </div>
                    <div class="col-md-3">
                        <div class="row" id="ad">
                            <!-- 文章页-右侧1 动态广告位 -->
                            <div id="right-1" class="col-lg-12 col-md-12 col-sm-4 col-xs-4 ad">
                                <div class="youdao-fixed-ad" id="detail_ad_1"> </div>
                            </div>
                            <!-- 文章页-右侧2 动态广告位 -->
                            <div id="right-2" class="col-lg-12 col-md-12 col-sm-4 col-xs-4 ad">
                                <div class="youdao-fixed-ad" id="detail_ad_2"></div>
                            </div>
                            <!-- 文章页-右侧3 动态广告位 -->
                            <div id="right-3" class="col-lg-12 col-md-12 col-sm-4 col-xs-4 ad">
                                <div class="youdao-fixed-ad" id="detail_ad_3"></div>
                            </div>
                        </div>
                    </div>
                </div>
            </div>
        </div>
        <div class="container">
            <h4 class="pt20 mb15 mt0 border-top">你可能感兴趣的:(拆取 Web 页)</h4>
            <div id="paradigm-article-related">
                <div class="recommend-post mb30">
                    <ul class="widget-links">
                        <li><a href="/article/1835511912843014144.htm"
                               title="理解Gunicorn:Python WSGI服务器的基石" target="_blank">理解Gunicorn:Python WSGI服务器的基石</a>
                            <span class="text-muted">范范0825</span>
    <a class="tag" taget="_blank" href="/search/ipython/1.htm">ipython</a><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>
                            <div>理解Gunicorn:PythonWSGI服务器的基石介绍Gunicorn,全称GreenUnicorn,是一个为PythonWSGI(WebServerGatewayInterface)应用设计的高效、轻量级HTTP服务器。作为PythonWeb应用部署的常用工具,Gunicorn以其高性能和易用性著称。本文将介绍Gunicorn的基本概念、安装和配置,帮助初学者快速上手。1.什么是Gunico</div>
                        </li>
                        <li><a href="/article/1835509266627260416.htm"
                               title="绘本讲师训练营【24期】8/21阅读原创《独生小孩》" target="_blank">绘本讲师训练营【24期】8/21阅读原创《独生小孩》</a>
                            <span class="text-muted">1784e22615e0</span>
    
                            <div>24016-孟娟《独生小孩》图片发自App今天我想分享一个蛮特别的绘本,讲的是一个特殊的群体,我也是属于这个群体,80后的独生小孩。这是一本中国绘本,作者郭婧,也是一个80厚。全书一百多页,均为铅笔绘制,虽然为黑白色调,但并不显得沉闷。全书没有文字,犹如“默片”,但并不影响读者对该作品的理解,反而显得神秘,梦幻,給读者留下想象的空间。作者在前蝴蝶页这样写到:“我更希望父母和孩子一起分享这本书,使他</div>
                        </li>
                        <li><a href="/article/1835504218178416640.htm"
                               title="Google earth studio 简介" target="_blank">Google earth studio 简介</a>
                            <span class="text-muted">陟彼高冈yu</span>
    <a class="tag" taget="_blank" href="/search/%E6%97%85%E6%B8%B8/1.htm">旅游</a>
                            <div>GoogleEarthStudio是一个基于Web的动画工具,专为创作使用GoogleEarth数据的动画和视频而设计。它利用了GoogleEarth强大的三维地图和卫星影像数据库,使用户能够轻松地创建逼真的地球动画、航拍视频和动态地图可视化。网址为https://www.google.com/earth/studio/。GoogleEarthStudio是一个基于Web的动画工具,专为创作使用G</div>
                        </li>
                        <li><a href="/article/1835503551489601536.htm"
                               title="今日囧事" target="_blank">今日囧事</a>
                            <span class="text-muted">唯愿岁月可回首</span>
    
                            <div>今天晚上,房东打来电话说晚上过来取个东西。晚上到家后,洗了一下水果,把卧室的空调打开,在卧室的阳台叠衣服。不一会儿,听见了敲门声,老公和丫头出去开门,果然是房东来了。由于我在叠衣服,床上比较乱,老公随手就把卧室门带上了。我赶紧把衣服收在柜子里,一拧门,好吧,打不开。听见外面热热闹闹的,我喊老公帮我开门,开了几次都开不开。丫头说:妈妈,你先在里面休息一会,我们正在找钥匙。听见外面房东拿了自己东西,老</div>
                        </li>
                        <li><a href="/article/1835502578050363392.htm"
                               title="PHP环境搭建详细教程" target="_blank">PHP环境搭建详细教程</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/php/1.htm">php</a>
                            <div>PHP是一个流行的服务器端脚本语言,广泛用于Web开发。为了使PHP能够在本地或服务器上运行,我们需要搭建一个合适的PHP环境。本教程将结合最新资料,介绍在不同操作系统上搭建PHP开发环境的多种方法,包括Windows、macOS和Linux系统的安装步骤,以及本地和Docker环境的配置。1.PHP环境搭建概述PHP环境的搭建主要分为以下几类:集成开发环境:例如XAMPP、WAMP、MAMP,这</div>
                        </li>
                        <li><a href="/article/1835498925755297792.htm"
                               title="DIV+CSS+JavaScript技术制作网页(旅游主题网页设计与制作)云南大理" target="_blank">DIV+CSS+JavaScript技术制作网页(旅游主题网页设计与制作)云南大理</a>
                            <span class="text-muted">STU学生网页设计</span>
    <a class="tag" taget="_blank" href="/search/%E7%BD%91%E9%A1%B5%E8%AE%BE%E8%AE%A1/1.htm">网页设计</a><a class="tag" taget="_blank" href="/search/%E6%9C%9F%E6%9C%AB%E7%BD%91%E9%A1%B5%E4%BD%9C%E4%B8%9A/1.htm">期末网页作业</a><a class="tag" taget="_blank" href="/search/html%E9%9D%99%E6%80%81%E7%BD%91%E9%A1%B5/1.htm">html静态网页</a><a class="tag" taget="_blank" href="/search/html5%E6%9C%9F%E6%9C%AB%E5%A4%A7%E4%BD%9C%E4%B8%9A/1.htm">html5期末大作业</a><a class="tag" taget="_blank" href="/search/%E7%BD%91%E9%A1%B5%E8%AE%BE%E8%AE%A1/1.htm">网页设计</a><a class="tag" taget="_blank" href="/search/web%E5%A4%A7%E4%BD%9C%E4%B8%9A/1.htm">web大作业</a>
                            <div>️精彩专栏推荐作者主页:【进入主页—获取更多源码】web前端期末大作业:【HTML5网页期末作业(1000套)】程序员有趣的告白方式:【HTML七夕情人节表白网页制作(110套)】文章目录二、网站介绍三、网站效果▶️1.视频演示2.图片演示四、网站代码HTML结构代码CSS样式代码五、更多源码二、网站介绍网站布局方面:计划采用目前主流的、能兼容各大主流浏览器、显示效果稳定的浮动网页布局结构。网站程</div>
                        </li>
                        <li><a href="/article/1835496149843275776.htm"
                               title="关于城市旅游的HTML网页设计——(旅游风景云南 5页)HTML+CSS+JavaScript" target="_blank">关于城市旅游的HTML网页设计——(旅游风景云南 5页)HTML+CSS+JavaScript</a>
                            <span class="text-muted">二挡起步</span>
    <a class="tag" taget="_blank" href="/search/web%E5%89%8D%E7%AB%AF%E6%9C%9F%E6%9C%AB%E5%A4%A7%E4%BD%9C%E4%B8%9A/1.htm">web前端期末大作业</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/css/1.htm">css</a><a class="tag" taget="_blank" href="/search/%E6%97%85%E6%B8%B8/1.htm">旅游</a><a class="tag" taget="_blank" href="/search/%E9%A3%8E%E6%99%AF/1.htm">风景</a>
                            <div>⛵源码获取文末联系✈Web前端开发技术描述网页设计题材,DIV+CSS布局制作,HTML+CSS网页设计期末课程大作业|游景点介绍|旅游风景区|家乡介绍|等网站的设计与制作|HTML期末大学生网页设计作业,Web大学生网页HTML:结构CSS:样式在操作方面上运用了html5和css3,采用了div+css结构、表单、超链接、浮动、绝对定位、相对定位、字体样式、引用视频等基础知识JavaScrip</div>
                        </li>
                        <li><a href="/article/1835496148601761792.htm"
                               title="HTML网页设计制作大作业(div+css) 云南我的家乡旅游景点 带文字滚动" target="_blank">HTML网页设计制作大作业(div+css) 云南我的家乡旅游景点 带文字滚动</a>
                            <span class="text-muted">二挡起步</span>
    <a class="tag" taget="_blank" href="/search/web%E5%89%8D%E7%AB%AF%E6%9C%9F%E6%9C%AB%E5%A4%A7%E4%BD%9C%E4%B8%9A/1.htm">web前端期末大作业</a><a class="tag" taget="_blank" href="/search/web%E8%AE%BE%E8%AE%A1%E7%BD%91%E9%A1%B5%E8%A7%84%E5%88%92%E4%B8%8E%E8%AE%BE%E8%AE%A1/1.htm">web设计网页规划与设计</a><a class="tag" taget="_blank" href="/search/html/1.htm">html</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/dreamweaver/1.htm">dreamweaver</a><a class="tag" taget="_blank" href="/search/%E5%89%8D%E7%AB%AF/1.htm">前端</a>
                            <div>Web前端开发技术描述网页设计题材,DIV+CSS布局制作,HTML+CSS网页设计期末课程大作业游景点介绍|旅游风景区|家乡介绍|等网站的设计与制作HTML期末大学生网页设计作业HTML:结构CSS:样式在操作方面上运用了html5和css3,采用了div+css结构、表单、超链接、浮动、绝对定位、相对定位、字体样式、引用视频等基础知识JavaScript:做与用户的交互行为文章目录前端学习路线</div>
                        </li>
                        <li><a href="/article/1835495170972413952.htm"
                               title="git - Webhook让部署自动化" target="_blank">git - Webhook让部署自动化</a>
                            <span class="text-muted">大猪大猪</span>
    
                            <div>我们现在有一个需求,将项目打包上传到gitlab或者github后,程序能自动部署,不用手动地去服务器中进行项目更新并运行,如何做到?这里我们可以使用gitlab与github的挂钩,挂钩的原理就是,每当我们有请求到gitlab与github服务器时,这时他俩会根据我们配置的挂钩地扯进行访问,webhook挂钩程序会一直监听着某个端口请求,一但收到他们发过来的请求,这时就知道用户有请求提交了,这时</div>
                        </li>
                        <li><a href="/article/1835493267907637248.htm"
                               title="webpack图片等资源的处理" target="_blank">webpack图片等资源的处理</a>
                            <span class="text-muted">dmengmeng</span>
    
                            <div>需要的loaderfile-loader(让我们可以引入这些资源文件)url-loader(其实是file-loader的二次封装)img-loader(处理图片所需要的)在没有使用任何处理图片的loader之前,比如说css中用到了背景图片,那么最后打包会报错的,因为他没办法处理图片。其实你只想能够使用图片的话。只加一个file-loader就可以,打开网页能准确看到图片。{test:/\.(p</div>
                        </li>
                        <li><a href="/article/1835491349571399680.htm"
                               title="被带偏的家人,可气又感动" target="_blank">被带偏的家人,可气又感动</a>
                            <span class="text-muted">艾孤璟</span>
    
                            <div>当我还是个严肃且内敛的孩子时,爷爷也是个严谨且和蔼的人,虽然不苟言笑,但没有距离感。当我接触的人越来越多,知道怎么调动气氛,家人们就被我带偏了。家里人本来没有外号的,后来都被我给取了各种各样的名字,“骂人”时就相对应的有了暗号。村里的小孩,本来不知道怎么使用假动作“打人”,怎么给人取合适的外号,后来也被我带偏了。老人常说我,古灵精怪,好的不学非得学坏的,带着不良风气。而我对他的话总是想生气又觉得搞</div>
                        </li>
                        <li><a href="/article/1835480678255390720.htm"
                               title="2019-01-19" target="_blank">2019-01-19</a>
                            <span class="text-muted">王小康KK</span>
    
                            <div>姓名:王康公司:扬州市方圆建筑工程有限公司2018年3月16日~3月18日上海361期《六项精进》感谢二组学员【日精进打卡第307天】【知~学习】《六项精进》大纲3遍共862遍《大学》通篇3遍共860遍《六项精进》全书40页【经典名句】思想决定行为,行为决定习惯,习惯决定性格,性格决定命运。【行~实践】一、修身:(对自己个人)1、践行六项精进的理念。二、齐家:(对家庭和家人)1、和女朋友视频聊天。</div>
                        </li>
                        <li><a href="/article/1835472402407059456.htm"
                               title="读书为什么这么难,听拆书帮赵周怎么说。" target="_blank">读书为什么这么难,听拆书帮赵周怎么说。</a>
                            <span class="text-muted">董小萌读书</span>
    
                            <div>赵周的《这样读书就够了》提炼了成年人读书难的三个问题。问题一:没时间、没精力这是压力与学习的矛盾问题二:看不懂、记不住这是搞错了学习主体其实,我们大多数人在学习主体是谁的问题一直都很模糊。问题三:看不下去这是学习目的不明确,说白了就是不知道为啥而看。也许你会觉得这话有点一竿子打死一片的劲头。不急着反驳,可以回忆一下,哪本书,哪类书,是你曾经读完了,并在脑海中至今还留下痕迹的?是的。成年人的读书,是</div>
                        </li>
                        <li><a href="/article/1835472149528276992.htm"
                               title="小说《灰色年代》第三章、书中自有黄金屋/第二节(1)/作者:邵明" target="_blank">小说《灰色年代》第三章、书中自有黄金屋/第二节(1)/作者:邵明</a>
                            <span class="text-muted">房作者_0970</span>
    
                            <div>——第三章、第二节、科举与国考(1)科举制的简介:科举制度是古代读书人,参加选拔考试的制度,它是历代通过考试选拔官吏的一种手段,由于采用分科取士的办法,所以叫做科举。科举制从隋代开始实行,到清光绪三十一年(1905年)举行最后一科进士考试为止,经历了1300年,1905年9月2日,清政府废除科举制度。科举考前三名,分别为状元、榜眼、探花。这种划分和称谓是在元朝时确定下来的,明清时期沿袭了元朝的这种</div>
                        </li>
                        <li><a href="/article/1835471689929027584.htm"
                               title="关于Mysql 中 Row size too large (> 8126) 错误的解决和理解" target="_blank">关于Mysql 中 Row size too large (> 8126) 错误的解决和理解</a>
                            <span class="text-muted">秋刀prince</span>
    <a class="tag" taget="_blank" href="/search/mysql/1.htm">mysql</a><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>
                            <div>提示:啰嗦一嘴,数据库的任何操作和验证前,一定要记得先备份!!!不会有错;文章目录问题发现一、问题导致的可能原因1、页大小2、行格式2.1compact格式2.2Redundant格式2.3Dynamic格式2.4Compressed格式3、BLOB和TEXT列二、解决办法1、修改页大小(不推荐)2、修改行格式3、修改数据类型为BLOB和TEXT列4、其他优化方式(可以参考使用)4.1合理设置数据</div>
                        </li>
                        <li><a href="/article/1835470931783413760.htm"
                               title="「豆包Marscode体验官」 | 云端 IDE 启动 & Rust 体验" target="_blank">「豆包Marscode体验官」 | 云端 IDE 启动 & Rust 体验</a>
                            <span class="text-muted">张风捷特烈</span>
    <a class="tag" taget="_blank" href="/search/ide/1.htm">ide</a><a class="tag" taget="_blank" href="/search/rust/1.htm">rust</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%90%8E%E7%AB%AF/1.htm">后端</a>
                            <div>theme:cyanosis我正在参加「豆包MarsCode初体验」征文活动MarsCode可以看作一个运行在服务端的远程VSCode开发环境。对于我这种想要学习体验某些语言,但不想在电脑里装环境的人来说非常友好。本文就来介绍一下在MarsCode里,我的体验rust开发体验。一、MarsCode是什么它的本质是:提供代码助手和云端IDE服务的web网站,可通过下面的链接访问https://www</div>
                        </li>
                        <li><a href="/article/1835462232612368384.htm"
                               title="python语法——三目运算符" target="_blank">python语法——三目运算符</a>
                            <span class="text-muted">HappyRocking</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/%E4%B8%89%E7%9B%AE%E8%BF%90%E7%AE%97%E7%AC%A6/1.htm">三目运算符</a>
                            <div>在java中,有三目运算符,如:intc=(a>b)?a:b表示c取两者中的较大值。但是在python,不能直接这样使用,估计是因为冒号在python有分行的关键作用。那么在python中,如何实现类似功能呢?可以使用ifelse语句,也是一行可以完成,格式为:aifbelsec表示如果b为True,则表达式等于a,否则等于c。如:c=(aif(a>b)elseb)同样是完成了取最大值的功能。</div>
                        </li>
                        <li><a href="/article/1835455048277127168.htm"
                               title="Python神器!WEB自动化测试集成工具 DrissionPage" target="_blank">Python神器!WEB自动化测试集成工具 DrissionPage</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>一、前言用requests做数据采集面对要登录的网站时,要分析数据包、JS源码,构造复杂的请求,往往还要应付验证码、JS混淆、签名参数等反爬手段,门槛较高。若数据是由JS计算生成的,还须重现计算过程,体验不好,开发效率不高。使用浏览器,可以很大程度上绕过这些坑,但浏览器运行效率不高。因此,这个库设计初衷,是将它们合而为一,能够在不同须要时切换相应模式,并提供一种人性化的使用方法,提高开发和运行效率</div>
                        </li>
                        <li><a href="/article/1835454921990828032.htm"
                               title="Java爬虫框架(一)--架构设计" target="_blank">Java爬虫框架(一)--架构设计</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/%E6%A1%86%E6%9E%B6/1.htm">框架</a><a class="tag" taget="_blank" href="/search/java/1.htm">java</a><a class="tag" taget="_blank" href="/search/%E4%BB%BB%E5%8A%A1/1.htm">任务</a><a class="tag" taget="_blank" href="/search/html%E8%A7%A3%E6%9E%90%E5%99%A8/1.htm">html解析器</a><a class="tag" taget="_blank" href="/search/%E5%AD%98%E5%82%A8/1.htm">存储</a><a class="tag" taget="_blank" href="/search/%E7%94%B5%E5%AD%90%E5%95%86%E5%8A%A1/1.htm">电子商务</a>
                            <div>一、架构图那里搜网络爬虫框架主要针对电子商务网站进行数据爬取,分析,存储,索引。爬虫:爬虫负责爬取,解析,处理电子商务网站的网页的内容数据库:存储商品信息索引:商品的全文搜索索引Task队列:需要爬取的网页列表Visited表:已经爬取过的网页列表爬虫监控平台:web平台可以启动,停止爬虫,管理爬虫,task队列,visited表。二、爬虫1.流程1)Scheduler启动爬虫器,TaskMast</div>
                        </li>
                        <li><a href="/article/1835454543471669248.htm"
                               title="Java:爬虫框架" target="_blank">Java:爬虫框架</a>
                            <span class="text-muted">dingcho</span>
    <a class="tag" taget="_blank" href="/search/Java/1.htm">Java</a><a class="tag" taget="_blank" href="/search/java/1.htm">java</a><a class="tag" taget="_blank" href="/search/%E7%88%AC%E8%99%AB/1.htm">爬虫</a>
                            <div>一、ApacheNutch2【参考地址】Nutch是一个开源Java实现的搜索引擎。它提供了我们运行自己的搜索引擎所需的全部工具。包括全文搜索和Web爬虫。Nutch致力于让每个人能很容易,同时花费很少就可以配置世界一流的Web搜索引擎.为了完成这一宏伟的目标,Nutch必须能够做到:每个月取几十亿网页为这些网页维护一个索引对索引文件进行每秒上千次的搜索提供高质量的搜索结果简单来说Nutch支持分</div>
                        </li>
                        <li><a href="/article/1835451016456269824.htm"
                               title="MongoDB知识概括" target="_blank">MongoDB知识概括</a>
                            <span class="text-muted">GeorgeLin98</span>
    <a class="tag" taget="_blank" href="/search/%E6%8C%81%E4%B9%85%E5%B1%82/1.htm">持久层</a><a class="tag" taget="_blank" href="/search/mongodb/1.htm">mongodb</a>
                            <div>MongoDB知识概括MongoDB相关概念单机部署基本常用命令索引-IndexSpirngDataMongoDB集成副本集分片集群安全认证MongoDB相关概念业务应用场景:传统的关系型数据库(如MySQL),在数据操作的“三高”需求以及应对Web2.0的网站需求面前,显得力不从心。解释:“三高”需求:①Highperformance-对数据库高并发读写的需求。②HugeStorage-对海量数</div>
                        </li>
                        <li><a href="/article/1835448464004182016.htm"
                               title="Day777--【这届年轻人很懒,“但在你面前,我可以多受些麻烦。”】" target="_blank">Day777--【这届年轻人很懒,“但在你面前,我可以多受些麻烦。”】</a>
                            <span class="text-muted">卖小妞的饼干</span>
    
                            <div>图片发自App中学时期,会因为朋友一句误会,手写三页信件解释来龙去脉,必须每天一起上学放学吃饭上洗手间,永远腻在一起才能彰显关系密切。而现在,相比每段关系都闹得轰轰烈烈,我们更喜欢顺其自然。懒得耗费大量时间去维护一段关系,懒得在与朋友产生矛盾后去辩解,懒得因为朋友做出背叛友谊的行为而愤怒诘问。不再把目光放在朋友的数量上,更在乎每一个还在身边的人是否饱含真心。我们都在期待着更舒服自然没有杂质的关系,</div>
                        </li>
                        <li><a href="/article/1835443823287824384.htm"
                               title="Python实现下载当前年份的谷歌影像" target="_blank">Python实现下载当前年份的谷歌影像</a>
                            <span class="text-muted">sand&wich</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>在GIS项目和地图应用中,获取最新的地理影像数据是非常重要的。本文将介绍如何使用Python代码从Google地图自动下载当前年份的影像数据,并将其保存为高分辨率的TIFF格式文件。这个过程涉及地理坐标转换、多线程下载和图像处理。关键功能该脚本的核心功能包括:坐标转换:支持WGS-84与WebMercator投影之间转换,以及处理中国GCJ-02偏移。自动化下载:多线程下载地图瓦片,提高效率。图像</div>
                        </li>
                        <li><a href="/article/1835443569968640000.htm"
                               title="Spring MVC 全面指南:从入门到精通的详细解析" target="_blank">Spring MVC 全面指南:从入门到精通的详细解析</a>
                            <span class="text-muted">一杯梅子酱</span>
    <a class="tag" taget="_blank" href="/search/%E6%8A%80%E6%9C%AF%E6%A0%88%E5%AD%A6%E4%B9%A0/1.htm">技术栈学习</a><a class="tag" taget="_blank" href="/search/spring/1.htm">spring</a><a class="tag" taget="_blank" href="/search/mvc/1.htm">mvc</a><a class="tag" taget="_blank" href="/search/java/1.htm">java</a>
                            <div>引言:SpringMVC,作为Spring框架的一个重要模块,为构建Web应用提供了强大的功能和灵活性。无论是初学者还是有一定经验的开发者,掌握SpringMVC都将显著提升你的Web开发技能。本文旨在为初学者提供一个全面且易于理解的学习路径,通过详细的知识点分析和实际案例,帮助你快速上手SpringMVC,让学习过程既深刻又高效。一、SpringMVC简介1.1什么是SpringMVC?Spri</div>
                        </li>
                        <li><a href="/article/1835438028768768000.htm"
                               title="Spring Boot中实现跨域请求" target="_blank">Spring Boot中实现跨域请求</a>
                            <span class="text-muted">BABA8891</span>
    <a class="tag" taget="_blank" href="/search/spring/1.htm">spring</a><a class="tag" taget="_blank" href="/search/boot/1.htm">boot</a><a class="tag" taget="_blank" href="/search/%E5%90%8E%E7%AB%AF/1.htm">后端</a><a class="tag" taget="_blank" href="/search/java/1.htm">java</a>
                            <div>在SpringBoot中实现跨域请求(CORS,Cross-OriginResourceSharing)可以通过多种方式,以下是几种常见的方法:1.使用@CrossOrigin注解在SpringBoot中,你可以在控制器或者具体的请求处理方法上使用@CrossOrigin注解来允许跨域请求。在控制器上应用:importorg.springframework.web.bind.annotation.</div>
                        </li>
                        <li><a href="/article/1835438028009598976.htm"
                               title="WebMagic:强大的Java爬虫框架解析与实战" target="_blank">WebMagic:强大的Java爬虫框架解析与实战</a>
                            <span class="text-muted">Aaron_945</span>
    <a class="tag" taget="_blank" href="/search/Java/1.htm">Java</a><a class="tag" taget="_blank" href="/search/java/1.htm">java</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%BC%80%E5%8F%91%E8%AF%AD%E8%A8%80/1.htm">开发语言</a>
                            <div>文章目录引言官网链接WebMagic原理概述基础使用1.添加依赖2.编写PageProcessor高级使用1.自定义Pipeline2.分布式抓取优点结论引言在大数据时代,网络爬虫作为数据收集的重要工具,扮演着不可或缺的角色。Java作为一门广泛使用的编程语言,在爬虫开发领域也有其独特的优势。WebMagic是一个开源的Java爬虫框架,它提供了简单灵活的API,支持多线程、分布式抓取,以及丰富的</div>
                        </li>
                        <li><a href="/article/1835435506645692416.htm"
                               title="00. 这里整理了最全的爬虫框架(Java + Python)" target="_blank">00. 这里整理了最全的爬虫框架(Java + Python)</a>
                            <span class="text-muted">有一只柴犬</span>
    <a class="tag" taget="_blank" href="/search/%E7%88%AC%E8%99%AB%E7%B3%BB%E5%88%97/1.htm">爬虫系列</a><a class="tag" taget="_blank" href="/search/%E7%88%AC%E8%99%AB/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>
                            <div>目录1、前言2、什么是网络爬虫3、常见的爬虫框架3.1、java框架3.1.1、WebMagic3.1.2、Jsoup3.1.3、HttpClient3.1.4、Crawler4j3.1.5、HtmlUnit3.1.6、Selenium3.2、Python框架3.2.1、Scrapy3.2.2、BeautifulSoup+Requests3.2.3、Selenium3.2.4、PyQuery3.2</div>
                        </li>
                        <li><a href="/article/1835428317084348416.htm"
                               title="最简单将静态网页挂载到服务器上(不用nginx)" target="_blank">最简单将静态网页挂载到服务器上(不用nginx)</a>
                            <span class="text-muted">全能全知者</span>
    <a class="tag" taget="_blank" href="/search/%E6%9C%8D%E5%8A%A1%E5%99%A8/1.htm">服务器</a><a class="tag" taget="_blank" href="/search/nginx/1.htm">nginx</a><a class="tag" taget="_blank" href="/search/%E8%BF%90%E7%BB%B4/1.htm">运维</a><a class="tag" taget="_blank" href="/search/%E5%89%8D%E7%AB%AF/1.htm">前端</a><a class="tag" taget="_blank" href="/search/html/1.htm">html</a><a class="tag" taget="_blank" href="/search/%E7%AC%94%E8%AE%B0/1.htm">笔记</a>
                            <div>最简单将静态网页挂载到服务器上(不用nginx)如果随便弄个静态网页挂在服务器都要用nignx就太麻烦了,所以直接使用Apache来搭建一些简单前端静态网页会相对方便很多检查Web服务器服务状态:sudosystemctlstatushttpd#ApacheWeb服务器如果发现没有安装web服务器:安装Apache:sudoyuminstallhttpd启动Apache:sudosystemctl</div>
                        </li>
                        <li><a href="/article/1835426624628158464.htm"
                               title="阿里云服务器4核8G配置购买及价格类文章汇总(10篇)" target="_blank">阿里云服务器4核8G配置购买及价格类文章汇总(10篇)</a>
                            <span class="text-muted">阿里云最新优惠和活动汇总</span>
    
                            <div>阿里云服务器4核8G配置如何购买?价格是多少?4核8G配置的阿里云服务器可以通过云服务器产品页购买也可以通过阿里云活动去下单购买,一般通过活动购买的用户比较多,但是不同实例规格的阿里云服务器价格不一样,带宽不同价格也不一样,本文为大家汇总了10篇关于阿里云服务器4核8G配置购买教程文章和价格类文章,分为购买类文章和价格类文章,以供大家参考如何购买阿里云服务器4核8G配置和最新优惠价格是多少。阿里云</div>
                        </li>
                        <li><a href="/article/1835403376498667520.htm"
                               title="《道德经》第七十二章 民不畏威" target="_blank">《道德经》第七十二章 民不畏威</a>
                            <span class="text-muted">AleoR</span>
    
                            <div>民不畏威,则大威至。无狭其所居,无厌其所生。夫唯不厌,是以不厌。是以圣人自知不自见,自爱不自责。故去彼取此。</div>
                        </li>
                                    <li><a href="/article/65.htm"
                                           title="Java常用排序算法/程序员必须掌握的8大排序算法" target="_blank">Java常用排序算法/程序员必须掌握的8大排序算法</a>
                                        <span class="text-muted">cugfy</span>
    <a class="tag" taget="_blank" href="/search/java/1.htm">java</a>
                                        <div>分类: 
     
    1)插入排序(直接插入排序、希尔排序) 
    2)交换排序(冒泡排序、快速排序) 
    3)选择排序(直接选择排序、堆排序) 
    4)归并排序 
    5)分配排序(基数排序) 
     
    所需辅助空间最多:归并排序 
    所需辅助空间最少:堆排序 
    平均速度最快:快速排序 
     
    不稳定:快速排序,希尔排序,堆排序。 
     
    先来看看8种排序之间的关系: 
     
      
     
     1.直接插入排序 
     
    (1</div>
                                    </li>
                                    <li><a href="/article/192.htm"
                                           title="【Spark102】Spark存储模块BlockManager剖析" target="_blank">【Spark102】Spark存储模块BlockManager剖析</a>
                                        <span class="text-muted">bit1129</span>
    <a class="tag" taget="_blank" href="/search/manager/1.htm">manager</a>
                                        <div>Spark围绕着BlockManager构建了存储模块,包括RDD,Shuffle,Broadcast的存储都使用了BlockManager。而BlockManager在实现上是一个针对每个应用的Master/Executor结构,即Driver上BlockManager充当了Master角色,而各个Slave上(具体到应用范围,就是Executor)的BlockManager充当了Slave角色</div>
                                    </li>
                                    <li><a href="/article/319.htm"
                                           title="linux 查看端口被占用情况详解" target="_blank">linux 查看端口被占用情况详解</a>
                                        <span class="text-muted">daizj</span>
    <a class="tag" taget="_blank" href="/search/linux/1.htm">linux</a><a class="tag" taget="_blank" href="/search/%E7%AB%AF%E5%8F%A3%E5%8D%A0%E7%94%A8/1.htm">端口占用</a><a class="tag" taget="_blank" href="/search/netstat/1.htm">netstat</a><a class="tag" taget="_blank" href="/search/lsof/1.htm">lsof</a>
                                        <div>经常在启动一个程序会碰到端口被占用,这里讲一下怎么查看端口是否被占用,及哪个程序占用,怎么Kill掉已占用端口的程序 
      
    1、lsof -i:port 
    port为端口号 
      
    [root@slave /data/spark-1.4.0-bin-cdh4]# lsof -i:8080 
    COMMAND   PID USER   FD   TY</div>
                                    </li>
                                    <li><a href="/article/446.htm"
                                           title="Hosts文件使用" target="_blank">Hosts文件使用</a>
                                        <span class="text-muted">周凡杨</span>
    <a class="tag" taget="_blank" href="/search/hosts/1.htm">hosts</a><a class="tag" taget="_blank" href="/search/locahost/1.htm">locahost</a>
                                        <div>     一切都要从localhost说起,经常在tomcat容器起动后,访问页面时输入http://localhost:8088/index.jsp,大家都知道localhost代表本机地址,如果本机IP是10.10.134.21,那就相当于http://10.10.134.21:8088/index.jsp,有时候也会看到http: 127.0.0.1:</div>
                                    </li>
                                    <li><a href="/article/573.htm"
                                           title="java excel工具" target="_blank">java excel工具</a>
                                        <span class="text-muted">g21121</span>
    <a class="tag" taget="_blank" href="/search/Java+excel/1.htm">Java excel</a>
                                        <div>直接上代码,一看就懂,利用的是jxl: 
    import java.io.File;
    import java.io.IOException;
    import jxl.Cell;
    import jxl.Sheet;
    import jxl.Workbook;
    import jxl.read.biff.BiffException;
    import jxl.write.Label;
    import </div>
                                    </li>
                                    <li><a href="/article/700.htm"
                                           title="web报表工具finereport常用函数的用法总结(数组函数)" target="_blank">web报表工具finereport常用函数的用法总结(数组函数)</a>
                                        <span class="text-muted">老A不折腾</span>
    <a class="tag" taget="_blank" href="/search/finereport/1.htm">finereport</a><a class="tag" taget="_blank" href="/search/web%E6%8A%A5%E8%A1%A8/1.htm">web报表</a><a class="tag" taget="_blank" href="/search/%E5%87%BD%E6%95%B0%E6%80%BB%E7%BB%93/1.htm">函数总结</a>
                                        <div>ADD2ARRAY 
    ADDARRAY(array,insertArray, start):在数组第start个位置插入insertArray中的所有元素,再返回该数组。 
    示例: 
    ADDARRAY([3,4, 1, 5, 7], [23, 43, 22], 3)返回[3, 4, 23, 43, 22, 1, 5, 7]. 
    ADDARRAY([3,4, 1, 5, 7], "测试&q</div>
                                    </li>
                                    <li><a href="/article/827.htm"
                                           title="游戏服务器网络带宽负载计算" target="_blank">游戏服务器网络带宽负载计算</a>
                                        <span class="text-muted">墙头上一根草</span>
    <a class="tag" taget="_blank" href="/search/%E6%9C%8D%E5%8A%A1%E5%99%A8/1.htm">服务器</a>
                                        <div>家庭所安装的4M,8M宽带。其中M是指,Mbits/S 
    其中要提前说明的是: 
    8bits = 1Byte 
    即8位等于1字节。我们硬盘大小50G。意思是50*1024M字节,约为 50000多字节。但是网宽是以“位”为单位的,所以,8Mbits就是1M字节。是容积体积的单位。 
    8Mbits/s后面的S是秒。8Mbits/s意思是 每秒8M位,即每秒1M字节。 
    我是在计算我们网络流量时想到的</div>
                                    </li>
                                    <li><a href="/article/954.htm"
                                           title="我的spring学习笔记2-IoC(反向控制 依赖注入)" target="_blank">我的spring学习笔记2-IoC(反向控制 依赖注入)</a>
                                        <span class="text-muted">aijuans</span>
    <a class="tag" taget="_blank" href="/search/Spring+3+%E7%B3%BB%E5%88%97/1.htm">Spring 3 系列</a>
                                        <div>IoC(反向控制 依赖注入)这是Spring提出来了,这也是Spring一大特色。这里我不用多说,我们看Spring教程就可以了解。当然我们不用Spring也可以用IoC,下面我将介绍不用Spring的IoC。 
    IoC不是框架,她是java的技术,如今大多数轻量级的容器都会用到IoC技术。这里我就用一个例子来说明: 
    如:程序中有 Mysql.calss 、Oracle.class 、SqlSe</div>
                                    </li>
                                    <li><a href="/article/1081.htm"
                                           title="高性能mysql 之 选择存储引擎(一)" target="_blank">高性能mysql 之 选择存储引擎(一)</a>
                                        <span class="text-muted">annan211</span>
    <a class="tag" taget="_blank" href="/search/mysql/1.htm">mysql</a><a class="tag" taget="_blank" href="/search/InnoDB/1.htm">InnoDB</a><a class="tag" taget="_blank" href="/search/MySQL%E5%BC%95%E6%93%8E/1.htm">MySQL引擎</a><a class="tag" taget="_blank" href="/search/%E5%AD%98%E5%82%A8%E5%BC%95%E6%93%8E/1.htm">存储引擎</a>
                                        <div>  1 没有特殊情况,应尽可能使用InnoDB存储引擎。   原因:InnoDB 和 MYIsAM 是mysql 最常用、使用最普遍的存储引擎。其中InnoDB是最重要、最广泛的存储引擎。她   被设计用来处理大量的短期事务。短期事务大部分情况下是正常提交的,很少有回滚的情况。InnoDB的性能和自动崩溃   恢复特性使得她在非事务型存储的需求中也非常流行,除非有非常</div>
                                    </li>
                                    <li><a href="/article/1208.htm"
                                           title="UDP网络编程" target="_blank">UDP网络编程</a>
                                        <span class="text-muted">百合不是茶</span>
    <a class="tag" taget="_blank" href="/search/UDP%E7%BC%96%E7%A8%8B/1.htm">UDP编程</a><a class="tag" taget="_blank" href="/search/%E5%B1%80%E5%9F%9F%E7%BD%91%E7%BB%84%E6%92%AD/1.htm">局域网组播</a>
                                        <div>  
    UDP是基于无连接的,不可靠的传输   与TCP/IP相反 
      
      
      
    UDP实现私聊,发送方式客户端,接受方式服务器 
    package netUDP_sc;
    
    import java.net.DatagramPacket;
    import java.net.DatagramSocket;
    import java.net.Ine</div>
                                    </li>
                                    <li><a href="/article/1335.htm"
                                           title="JQuery对象的val()方法执行结果分析" target="_blank">JQuery对象的val()方法执行结果分析</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/js/1.htm">js</a><a class="tag" taget="_blank" href="/search/jquery/1.htm">jquery</a>
                                        <div>        JavaScript中,如果id对应的标签不存在(同理JAVA中,如果对象不存在),则调用它的方法会报错或抛异常。在实际开发中,发现JQuery在id对应的标签不存在时,调其val()方法不会报错,结果是undefined。 
            </div>
                                    </li>
                                    <li><a href="/article/1462.htm"
                                           title="http请求测试实例(采用json-lib解析)" target="_blank">http请求测试实例(采用json-lib解析)</a>
                                        <span class="text-muted">bijian1013</span>
    <a class="tag" taget="_blank" href="/search/json/1.htm">json</a><a class="tag" taget="_blank" href="/search/http/1.htm">http</a>
                                        <div>        由于fastjson只支持JDK1.5版本,因些对于JDK1.4的项目,可以采用json-lib来解析JSON数据。如下是http请求的另外一种写法,仅供参考。 
    package com;
    
    import java.util.HashMap;
    import java.util.Map;
    
    import </div>
                                    </li>
                                    <li><a href="/article/1589.htm"
                                           title="【RPC框架Hessian四】Hessian与Spring集成" target="_blank">【RPC框架Hessian四】Hessian与Spring集成</a>
                                        <span class="text-muted">bit1129</span>
    <a class="tag" taget="_blank" href="/search/hessian/1.htm">hessian</a>
                                        <div>在【RPC框架Hessian二】Hessian 对象序列化和反序列化一文中介绍了基于Hessian的RPC服务的实现步骤,在那里使用Hessian提供的API完成基于Hessian的RPC服务开发和客户端调用,本文使用Spring对Hessian的集成来实现Hessian的RPC调用。 
      定义模型、接口和服务器端代码 
    |---Model 
       &nb</div>
                                    </li>
                                    <li><a href="/article/1716.htm"
                                           title="【Mahout三】基于Mahout CBayes算法的20newsgroup流程分析" target="_blank">【Mahout三】基于Mahout CBayes算法的20newsgroup流程分析</a>
                                        <span class="text-muted">bit1129</span>
    <a class="tag" taget="_blank" href="/search/Mahout/1.htm">Mahout</a>
                                        <div>1.Mahout环境搭建 
     1.下载Mahout 
    http://mirror.bit.edu.cn/apache/mahout/0.10.0/mahout-distribution-0.10.0.tar.gz 
      
     2.解压Mahout 
     3. 配置环境变量 
    vim /etc/profile
    
    export HADOOP_HOME=/home</div>
                                    </li>
                                    <li><a href="/article/1843.htm"
                                           title="nginx负载tomcat遇非80时的转发问题" target="_blank">nginx负载tomcat遇非80时的转发问题</a>
                                        <span class="text-muted">ronin47</span>
    
                                        <div>  nginx负载后端容器是tomcat(其它容器如WAS,JBOSS暂没发现这个问题)非80端口,遇到跳转异常问题。解决的思路是:$host:port 
           详细如下: 
        
    该问题是最先发现的,由于之前对nginx不是特别的熟悉所以该问题是个入门级别的:    
    ?       1   2   3   4   5   </div>
                                    </li>
                                    <li><a href="/article/1970.htm"
                                           title="java-17-在一个字符串中找到第一个只出现一次的字符" target="_blank">java-17-在一个字符串中找到第一个只出现一次的字符</a>
                                        <span class="text-muted">bylijinnan</span>
    <a class="tag" taget="_blank" href="/search/java/1.htm">java</a>
                                        <div>
    
    public class FirstShowOnlyOnceElement {
    
    	/**Q17.在一个字符串中找到第一个只出现一次的字符。如输入abaccdeff,则输出b
    	 * 1.int[] count:count[i]表示i对应字符出现的次数
    	 * 2.将26个英文字母映射:a-z <--> 0-25
    	 * 3.假设全部字母都是小写
    	 */
    	pu</div>
                                    </li>
                                    <li><a href="/article/2097.htm"
                                           title="mongoDB 复制集" target="_blank">mongoDB 复制集</a>
                                        <span class="text-muted">开窍的石头</span>
    <a class="tag" taget="_blank" href="/search/mongodb/1.htm">mongodb</a>
                                        <div>mongo的复制集就像mysql的主从数据库,当你往其中的主复制集(primary)写数据的时候,副复制集(secondary)会自动同步主复制集(Primary)的数据,当主复制集挂掉以后其中的一个副复制集会自动成为主复制集。提供服务器的可用性。和防止当机问题 
           
     
         mo</div>
                                    </li>
                                    <li><a href="/article/2224.htm"
                                           title="[宇宙与天文]宇宙时代的经济学" target="_blank">[宇宙与天文]宇宙时代的经济学</a>
                                        <span class="text-muted">comsci</span>
    <a class="tag" taget="_blank" href="/search/%E7%BB%8F%E6%B5%8E/1.htm">经济</a>
                                        <div> 
        宇宙尺度的交通工具一般都体型巨大,造价高昂。。。。。 
     
         在宇宙中进行航行,近程采用反作用力类型的发动机,需要消耗少量矿石燃料,中远程航行要采用量子或者聚变反应堆发动机,进行超空间跳跃,要消耗大量高纯度水晶体能源 
     
         以目前地球上国家的经济发展水平来讲,</div>
                                    </li>
                                    <li><a href="/article/2351.htm"
                                           title="Git忽略文件" target="_blank">Git忽略文件</a>
                                        <span class="text-muted">Cwind</span>
    <a class="tag" taget="_blank" href="/search/git/1.htm">git</a>
                                        <div>     有很多文件不必使用git管理。例如Eclipse或其他IDE生成的项目文件,编译生成的各种目标或临时文件等。使用git status时,会在Untracked files里面看到这些文件列表,在一次需要添加的文件比较多时(使用git add . / git add -u),会把这些所有的未跟踪文件添加进索引。  
       ==== ==== ==== 一些牢骚</div>
                                    </li>
                                    <li><a href="/article/2478.htm"
                                           title="MySQL连接数据库的必须配置" target="_blank">MySQL连接数据库的必须配置</a>
                                        <span class="text-muted">dashuaifu</span>
    <a class="tag" taget="_blank" href="/search/mysql/1.htm">mysql</a><a class="tag" taget="_blank" href="/search/%E8%BF%9E%E6%8E%A5%E6%95%B0%E6%8D%AE%E5%BA%93%E9%85%8D%E7%BD%AE/1.htm">连接数据库配置</a>
                                        <div>MySQL连接数据库的必须配置 
      
    1.driverClass:com.mysql.jdbc.Driver 
      
    2.jdbcUrl:jdbc:mysql://localhost:3306/dbname 
      
    3.user:username 
      
    4.password:password 
      
    其中1是驱动名;2是url,这里的‘dbna</div>
                                    </li>
                                    <li><a href="/article/2605.htm"
                                           title="一生要养成的60个习惯" target="_blank">一生要养成的60个习惯</a>
                                        <span class="text-muted">dcj3sjt126com</span>
    <a class="tag" taget="_blank" href="/search/%E4%B9%A0%E6%83%AF/1.htm">习惯</a>
                                        <div>一生要养成的60个习惯 
    第1篇 让你更受大家欢迎的习惯 
    1 守时,不准时赴约,让别人等,会失去很多机会。 
    如何做到: 
    ①该起床时就起床, 
    ②养成任何事情都提前15分钟的习惯。 
    ③带本可以随时阅读的书,如果早了就拿出来读读。 
    ④有条理,生活没条理最容易耽误时间。 
    ⑤提前计划:将重要和不重要的事情岔开。 
    ⑥今天就准备好明天要穿的衣服。 
    ⑦按时睡觉,这会让按时起床更容易。 
    2 注重</div>
                                    </li>
                                    <li><a href="/article/2732.htm"
                                           title="[介绍]Yii 是什么" target="_blank">[介绍]Yii 是什么</a>
                                        <span class="text-muted">dcj3sjt126com</span>
    <a class="tag" taget="_blank" href="/search/PHP/1.htm">PHP</a><a class="tag" taget="_blank" href="/search/yii2/1.htm">yii2</a>
                                        <div>Yii 是一个高性能,基于组件的 PHP 框架,用于快速开发现代 Web 应用程序。名字 Yii (读作 易)在中文里有“极致简单与不断演变”两重含义,也可看作 Yes It Is! 的缩写。  
    Yii 最适合做什么? 
    Yii 是一个通用的 Web 编程框架,即可以用于开发各种用 PHP 构建的 Web 应用。因为基于组件的框架结构和设计精巧的缓存支持,它特别适合开发大型应</div>
                                    </li>
                                    <li><a href="/article/2859.htm"
                                           title="Linux SSH常用总结" target="_blank">Linux SSH常用总结</a>
                                        <span class="text-muted">eksliang</span>
    <a class="tag" taget="_blank" href="/search/linux+ssh/1.htm">linux ssh</a><a class="tag" taget="_blank" href="/search/SSHD/1.htm">SSHD</a>
                                        <div>转载请出自出处:http://eksliang.iteye.com/blog/2186931 一、连接到远程主机 
      
    格式:
    ssh name@remoteserver
    例如:
    ssh ickes@192.168.27.211 
      二、连接到远程主机指定的端口 
      
    格式:
    ssh name@remoteserver -p 22
    例如:
    ssh i</div>
                                    </li>
                                    <li><a href="/article/2986.htm"
                                           title="快速上传头像到服务端工具类FaceUtil" target="_blank">快速上传头像到服务端工具类FaceUtil</a>
                                        <span class="text-muted">gundumw100</span>
    <a class="tag" taget="_blank" href="/search/android/1.htm">android</a>
                                        <div>快速迭代用 
     
     
    
    import java.io.DataOutputStream;
    import java.io.File;
    import java.io.FileInputStream;
    import java.io.FileNotFoundException;
    import java.io.FileOutputStream;
    import java.io.IOExceptio</div>
                                    </li>
                                    <li><a href="/article/3113.htm"
                                           title="jQuery入门之怎么使用" target="_blank">jQuery入门之怎么使用</a>
                                        <span class="text-muted">ini</span>
    <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/jquery/1.htm">jquery</a><a class="tag" taget="_blank" href="/search/Web/1.htm">Web</a><a class="tag" taget="_blank" href="/search/css/1.htm">css</a>
                                        <div>jQuery的强大我何问起(个人主页:hovertree.com)就不用多说了,那么怎么使用jQuery呢? 
      
    首先,下载jquery。下载地址:http://hovertree.com/hvtart/bjae/b8627323101a4994.htm,一个是压缩版本,一个是未压缩版本,如果在开发测试阶段,可以使用未压缩版本,实际应用一般使用压缩版本(min)。然后就在页面上引用。</div>
                                    </li>
                                    <li><a href="/article/3240.htm"
                                           title="带filter的hbase查询优化" target="_blank">带filter的hbase查询优化</a>
                                        <span class="text-muted">kane_xie</span>
    <a class="tag" taget="_blank" href="/search/%E6%9F%A5%E8%AF%A2%E4%BC%98%E5%8C%96/1.htm">查询优化</a><a class="tag" taget="_blank" href="/search/hbase/1.htm">hbase</a><a class="tag" taget="_blank" href="/search/RandomRowFilter/1.htm">RandomRowFilter</a>
                                        <div> 
     问题描述 
     
    hbase scan数据缓慢,server端出现LeaseException。hbase写入缓慢。     
     
     问题原因 
     
    直接原因是:  hbase client端每次和regionserver交互的时候,都会在服务器端生成一个Lease,Lease的有效期由参数hbase.regionserver.lease.period确定。如果hbase scan需</div>
                                    </li>
                                    <li><a href="/article/3367.htm"
                                           title="java设计模式-单例模式" target="_blank">java设计模式-单例模式</a>
                                        <span class="text-muted">men4661273</span>
    <a class="tag" taget="_blank" href="/search/java/1.htm">java</a><a class="tag" taget="_blank" href="/search/%E5%8D%95%E4%BE%8B/1.htm">单例</a><a class="tag" taget="_blank" href="/search/%E6%9E%9A%E4%B8%BE/1.htm">枚举</a><a class="tag" taget="_blank" href="/search/%E5%8F%8D%E5%B0%84/1.htm">反射</a><a class="tag" taget="_blank" href="/search/IOC/1.htm">IOC</a>
                                        <div>         单例模式1,饿汉模式 
    //饿汉式单例类.在类初始化时,已经自行实例化
    public class Singleton1 {
        //私有的默认构造函数
        private Singleton1() {}
        //已经自行实例化
        private static final Singleton1 singl</div>
                                    </li>
                                    <li><a href="/article/3494.htm"
                                           title="mongodb 查询某一天所有信息的3种方法,根据日期查询" target="_blank">mongodb 查询某一天所有信息的3种方法,根据日期查询</a>
                                        <span class="text-muted">qiaolevip</span>
    <a class="tag" taget="_blank" href="/search/%E6%AF%8F%E5%A4%A9%E8%BF%9B%E6%AD%A5%E4%B8%80%E7%82%B9%E7%82%B9/1.htm">每天进步一点点</a><a class="tag" taget="_blank" href="/search/%E5%AD%A6%E4%B9%A0%E6%B0%B8%E6%97%A0%E6%AD%A2%E5%A2%83/1.htm">学习永无止境</a><a class="tag" taget="_blank" href="/search/mongodb/1.htm">mongodb</a><a class="tag" taget="_blank" href="/search/%E7%BA%B5%E8%A7%82%E5%8D%83%E8%B1%A1/1.htm">纵观千象</a>
                                        <div>// mongodb的查询真让人难以琢磨,就查询单天信息,都需要花费一番功夫才行。
    
    // 第一种方式:
    coll.aggregate([
              {$project:{sendDate: {$substr: ['$sendTime', 0, 10]}, sendTime: 1, content:1}},
              {$match:{sendDate: '2015-</div>
                                    </li>
                                    <li><a href="/article/3621.htm"
                                           title="二维数组转换成JSON" target="_blank">二维数组转换成JSON</a>
                                        <span class="text-muted">tangqi609567707</span>
    <a class="tag" taget="_blank" href="/search/java/1.htm">java</a><a class="tag" taget="_blank" href="/search/%E4%BA%8C%E7%BB%B4%E6%95%B0%E7%BB%84/1.htm">二维数组</a><a class="tag" taget="_blank" href="/search/json/1.htm">json</a>
                                        <div>原文出处:http://blog.csdn.net/springsen/article/details/7833596 
    public class Demo { 
        public static void main(String[] args) {        String[][] blogL</div>
                                    </li>
                                    <li><a href="/article/3748.htm"
                                           title="erlang supervisor" target="_blank">erlang supervisor</a>
                                        <span class="text-muted">wudixiaotie</span>
    <a class="tag" taget="_blank" href="/search/erlang/1.htm">erlang</a>
                                        <div>定义supervisor时,如果是监控celuesimple_one_for_one则删除children的时候就用supervisor:terminate_child (SupModuleName, ChildPid),如果shutdown策略选择的是brutal_kill,那么supervisor会调用exit(ChildPid, kill),这样的话如果Child的behavior是gen_</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>