数据结构思维 第六章 树的遍历

第六章 树的遍历

原文:Chapter 6 Tree traversal

译者:飞龙

协议:CC BY-NC-SA 4.0

自豪地采用谷歌翻译

本章将介绍一个 Web 搜索引擎,我们将在本书其余部分开发它。我描述了搜索引擎的元素,并介绍了第一个应用程序,一个从维基百科下载和解析页面的 Web 爬行器。本章还介绍了深度优先搜索的递归实现,以及迭代实现,它使用 JavaDeque实现“后入先出”的栈。

6.1 搜索引擎

网络搜索引擎,像谷歌搜索或 Bing,接受一组“检索项”,并返回一个网页列表,它们和这些项相关(之后我将讨论“相关”是什么意思)。你可以在 http://thinkdast.com/searcheng 上阅读更多内容,但是我会解释你需要什么。

搜索引擎的基本组成部分是:

抓取:我们需要一个程序,可以下载网页,解析它,并提取文本和任何其他页面的链接。
索引:我们需要一个数据结构,可以查找一个检索项,并找到包含它的页面。
检索:我们需要一种方法,从索引中收集结果,并识别与检索项最相关的页面。

我们以爬虫开始。爬虫的目标是查找和下载一组网页。对于像 Google 和 Bing 这样的搜索引擎,目标是查找所有网页,但爬虫通常仅限于较小的域。在我们的例子中,我们只会读取维基百科的页面。

作为第一步,我们将构建一个读取维基百科页面的爬虫,找到第一个链接,并跟着链接来到另一个页面,然后重复。我们将使用这个爬虫来测试“到达哲学”的猜想,它是:

点击维基百科文章正文中的第一个小写的链接,然后对后续文章重复这个过程,通常最终会到达“哲学”的文章。

这个猜想在 http://thinkdast.com/getphil 中阐述,你可以阅读其历史。

测试这个猜想需要我们构建爬虫的基本部分,而不必爬取整个网络,甚至是所有维基百科。而且我觉得这个练习很有趣!

在几个章节之内,我们将处理索引器,然后我们将到达检索器。

6.2 解析 HTML

当你下载网页时,内容使用超文本标记语言(即 HTML)编写。例如,这里是一个最小的 HTML 文档:



  
    This is a title
  
  
    

Hello world!

短语This is a titleHello world!是实际出现在页面上的文字;其他元素是指示文本应如何显示的标签。

当我们的爬虫下载页面时,它需要解析 HTML,以便提取文本并找到链接。为此,我们将使用jsoup,它是一个下载和解析 HTML 的开源 Java 库。

解析 HTML 的结果是文档对象模型(DOM)树,其中包含文档的元素,包括文本和标签。树是由节点组成的链接数据结构;节点表示文本,标签和其他文档元素。

节点之间的关系由文档的结构决定。在上面的例子中,第一个节点称为根,是标签,它包含指向所包含两个节点的链接, ;这些节点是根节点的子节点。

节点有一个子节点,</code>,<code><body></code>节点有一个子节点, <code><p></code>(代表“段落”)。图 6.1 以图形方式表示该树。</p> <div class="image-package"> <div class="image-container" style="max-width: 394px; max-height: 339px;"> <div class="image-view"> <a href="http://img.e-com-net.com/image/info10/dea66adc8cd0423599f87eae109690fe.jpg" target="_blank"><img src="http://img.e-com-net.com/image/info10/dea66adc8cd0423599f87eae109690fe.jpg" width="394" height="339" alt="数据结构思维 第六章 树的遍历_第1张图片" style="border:1px solid black;"></a> </div> </div> <div class="image-caption"></div> </div> <p>图 6.1 简单 HTML 页面的 DOM 树</p> <p>每个节点包含其子节点的链接; 此外,每个节点都包含其父节点的链接,所以任何节点都可以向上或向下浏览树。实际页面的 DOM 树通常比这个例子更复杂。</p> <p>大多数网络浏览器提供了工具,用于检查你正在查看的页面的 DOM。在 Chrome 中,你可以右键单击网页的任何部分,然后从弹出的菜单中选择<code>Inspect</code>(检查)。在 Firefox 中,你可以右键单击并从菜单中选择<code>Inspect Element</code>(检查元素)。Safari 提供了一个名为 Web Inspector 的工具,你可以阅读 http://thinkdast.com/safari。对于 Internet Explorer,你可以阅读 http://thinkdast.com/explorer 上的说明 。</p> <div class="image-package"> <div class="image-container" style="max-width: 566px; max-height: 605px;"> <div class="image-view"> <a href="http://img.e-com-net.com/image/info10/acdf53780e9b44cbb52f6b0a0f21b7d8.jpg" target="_blank"><img src="http://img.e-com-net.com/image/info10/acdf53780e9b44cbb52f6b0a0f21b7d8.jpg" width="566" height="605" alt="数据结构思维 第六章 树的遍历_第2张图片" style="border:1px solid black;"></a> </div> </div> <div class="image-caption"></div> </div> <p>图 6.2:Chrome DOM 查看器的截图</p> <p>图 6.2 展示了维基百科 Java 页面(http://thinkdast.com/java)的 DOM 截图。高亮的元素是文章正文的第一段,它包含在一个<code><div></code>元素中 ,带有<code>id="mw-content-text"</code>。我们将使用这个元素 ID 来标识我们下载的每篇文章的正文。</p> <h2>6.3 使用<code>jsoup</code> </h2> <p><code>jsoup</code>非常易于下载,和解析 Web 页面,以及访问 DOM 树。这里是一个例子:</p> <pre><code class="java">String url = "http://en.wikipedia.org/wiki/Java_(programming_language)"; // download and parse the document Connection conn = Jsoup.connect(url); Document doc = conn.get(); // select the content text and pull out the paragraphs. Element content = doc.getElementById("mw-content-text"); Elements paragraphs = content.select("p"); </code></pre> <p><code>Jsoup.connect</code>接受<code>String</code>形式的<code>url</code>,并连接 Web 服务器。<code>get</code>方法下载 HTML,解析,并返回<code>Document</code>对象,他表示 DOM。</p> <p><code>Document</code>提供了导航树和选择节点的方法。其实它提供了很多方法,可能会把人搞晕。此示例演示了两种选择节点的方式:</p> <ul> <li> <code>getElementById</code>接受<code>String</code>并在树中搜索匹配<code>id</code>字段的元素。在这里,它选择节点<code><div id="mw-content-text" lang="en" dir="ltr" class="mw-content-ltr"></code>,它出现在每个维基页面上,来确定包含文章正文的<code><div></code>元素,而不是导航边栏和其他元素。<code>getElementById</code>的返回值是一个<code>Element</code>对象,代表这个<code><div></code>,并包含<code><div></code>中的元素作为后继节点。</li> <li> <code>select</code>接受<code>String</code>,遍历树,并返回与所有元素,它的标签与<code>String</code>匹配。在这个例子中,它返回所有<code>content</code>中的段落标签。返回值是一个<code>Elements</code>对象。</li> </ul> <blockquote> <p>译者注:<code>select</code>方法接受 CSS 选择器,不仅仅能按照标签选择。请见 https://jsoup.org/apidocs/org/jsoup/select/Selector.html。</p> </blockquote> <p>在你继续之前,你应该仔细阅读这些类的文档,以便知道他们能做什么。最重要的类是<code>Element</code>,<code>Elements</code>和<code>Node</code>,你可以阅读 http://thinkdast.com/jsoupelt,http://thinkdast.com/jsoupelts 和 http://thinkdast.com/jsoupnode。</p> <p><code>Node</code>表示 DOM 树中的一个节点;有几个扩展<code>Node</code>的子类,其中包括 <code>Element</code>,<code>TextNode</code>,<code>DataNode</code>,和<code>Comment</code>。<code>Elements</code>是<code>Element</code>对象的<code>Collection</code>。</p> <div class="image-package"> <div class="image-container" style="max-width: 700px; max-height: 292px;"> <div class="image-view"> <a href="http://img.e-com-net.com/image/info10/c3e3494829744230b659e7054687b7a6.jpg" target="_blank"><img src="http://img.e-com-net.com/image/info10/c3e3494829744230b659e7054687b7a6.jpg" width="711" height="292" alt="数据结构思维 第六章 树的遍历_第3张图片" style="border:1px solid black;"></a> </div> </div> <div class="image-caption"></div> </div> <p>图 6.3:被选类的 UML 图,由<code>jsoup</code>提供。编辑:<ttp://yuml.me/edit/4bc1c919></p> <p>图 6.3 是一个 UML 图,展示了这些类之间的关系。在 UML 类图中,带有空心箭头的线表示一个类继承另一个类。例如,该图表示<code>Elements</code>继承<code>ArrayList</code>。我们将在第 11.6 节中再次接触 UML 图。</p> <h2>6.4 遍历 DOM</h2> <p>为了使你变得更轻松,我提供了一个<code>WikiNodeIterable</code>类,可以让你遍历 DOM 树中的节点。以下是一个示例,展示如何使用它:</p> <pre><code class="java">Elements paragraphs = content.select("p"); Element firstPara = paragraphs.get(0); Iterable<Node> iter = new WikiNodeIterable(firstPara); for (Node node: iter) { if (node instanceof TextNode) { System.out.print(node); } } </code></pre> <p>这个例子紧接着上一个例子。它选择<code>paragraphs</code>中的第一个段落,然后创建一个<code>WikiNodeIterable</code>,它实现<code>Iterable<Node></code>。<code>WikiNodeIterable</code>执行“深度优先搜索”,它按照它们将出现在页面上的顺序产生节点。</p> <p>在这个例子中,仅当<code>Node</code>是<code>TextNode</code>时,我们打印它,并忽略其他类型的<code>Node</code>,特别是代表标签的<code>Element</code>对象。结果是没有任何标记的 HTML 段落的纯文本。输出为:</p> <pre><code>Java is a general-purpose computer programming language that is concurrent, class-based, object-oriented,[13] and specifically designed … </code></pre> <blockquote> <p>Java 是一种通用的计算机编程语言,它是并发的,基于类的,面向对象的,[13] 和特地设计的...</p> </blockquote> <h2>6.5 深度优先搜索</h2> <p>有几种方式可以合理地遍历一个树,每个都有不同的应用。我们从“深度优先搜索”(DFS)开始。DFS 从树的根节点开始,并选择第一个子节点。如果子节点有子节点,则再次选择第一个子节点。当它到达没有子节点的节点时,它回溯,沿树向上移动到父节点,在那里它选择下一个子节点,如果有的话;否则它会再次回溯。当它探索了根节点的最后一个子节点,就完成了。</p> <p>有两种常用的方式来实现 DFS,递归和迭代。递归实现简单优雅:</p> <pre><code class="java">private static void recursiveDFS(Node node) { if (node instanceof TextNode) { System.out.print(node); } for (Node child: node.childNodes()) { recursiveDFS(child); } } </code></pre> <p>这个方法对树中的每一个<code>Node</code>调用,从根节点开始。如果<code>Node</code>是一个<code>TextNode</code>,它打印其内容。如果<code>Node</code>有任何子节点,它会按顺序在每一个子节点上调用<code>recursiveDFS</code>。</p> <p>在这个例子中,我们在遍历子节点之前打印每个<code>TextNode</code>的内容,所以这是一个“前序”遍历的例子。你可以在 http://thinkdast.com/treetrav 上了解“前序”,“后序”和“中序”遍历。对于此应用程序,遍历顺序并不重要。</p> <p>通过进行递归调用,<code>recursiveDFS</code>使用调用栈(http://thinkdast.com/callstack)来跟踪子节点并以正确的顺序处理它们。作为替代,我们可以使用栈数据结构自己跟踪节点;如果我们这样做,我们可以避免递归并迭代遍历树。</p> <h2>6.6 Java 中的栈</h2> <p>在我解释 DFS 的迭代版本之前,我将解释栈数据结构。我们将从栈的一般概念开始,我将使用小写<code>s</code>指代“栈”。然后我们将讨论两个 Java<code>interfaces</code>,它们定义了栈的方法:<code>Stack</code>和<code>Deque</code>。</p> <p>栈是与列表类似的数据结构:它是维护元素顺序的集合。栈和列表之间的主要区别是栈提供的方法较少。在通常的惯例中,它提供:</p> <p><code>push</code>:它将一个元素添加到栈顶。<br> <code>pop</code>:它从栈中删除并返回最顶部的元素。<br> <code>peek</code>:它返回最顶部的元素而不修改栈。<br> <code>isEmpty</code>:表示栈是否为空。<br> 因为<code>pop</code>总是返回最顶部的元素,栈也称为 LIFO,代表“后入先出”。栈的替代品是“队列”,它返回的元素顺序和添加顺序相同;即“先入先出(FIFO)。</p> <p>为什么栈和队列是有用的,可能不是很明显:它们不提供任何列表没有的功能;实际上它们提供的功能更少。那么为什么不使用列表的一切?有两个原因:</p> <ul> <li>如果你将自己限制于一小部分方法 - 也就是小型 API - 你的代码将更加易读,更不容易出错。例如,如果使用列表来表示栈,则可能会以错误的顺序删除元素。使用栈 API,这种错误在字面上是不可能的。避免错误的最佳方法是使它们不可能。</li> <li>如果一个数据结构提供了小型 API,那么它更容易实现。例如,实现栈的简单方法是单链表。当我们压入一个元素时,我们将它添加到列表的开头;当我们弹出一个元素时,我们在开头删除它。对于链表,在开头添加和删除是常数时间的操作,因此这个实现是高效的。相反,大型 API 更难实现高效。</li> </ul> <p>为了在 Java 中实现栈,你有三个选项:</p> <ul> <li>继续使用<code>ArrayList</code>或<code>LinkedList</code>。如果使用<code>ArrayList</code>,请务必从最后添加和删​​除,这是一个常数时间的操作。并且小心不要在错误的地方添加元素,或以错误的顺序删除它们。</li> <li>Java 提供了一个<code>Stack</code>类,它提供了一组标准的栈方法。但是这个类是 Java 的一个旧部分:它与 Java 集合框架不兼容,后者之后才出现。</li> <li>最好的选择可能是使用<code>Deque</code>接口的一个实现,如<code>ArrayDeque</code>。</li> </ul> <p><code>Deque</code>代表“双向队列”;它应该被发音为“deck”,但有些人叫它“deek”。在 Java 中, <code>Deque</code>接口提供<code>push</code>,<code>pop</code>,<code>peek</code>和<code>isEmpty</code>,因此你可以将<code>Deque</code>用作栈。它提供了其他方法,你可以阅读 http://thinkdast.com/deque,但现在我们不会使用它们。</p> <h2>6.7 迭代式 DFS</h2> <p>这里是 DFS 的迭代版本,它使用<code>ArrayDeque</code>来表示<code>Node</code>对象的栈。</p> <pre><code class="java">private static void iterativeDFS(Node root) { Deque<Node> stack = new ArrayDeque<Node>(); stack.push(root); while (!stack.isEmpty()) { Node node = stack.pop(); if (node instanceof TextNode) { System.out.print(node); } List<Node> nodes = new ArrayList<Node>(node.childNodes()); Collections.reverse(nodes); for (Node child: nodes) { stack.push(child); } } } </code></pre> <p>参数<code>root</code>是我们想要遍历的树的根节点,所以我们首先创建栈并将根节点压入它。</p> <p>循环持续到栈为空。每次迭代,它会从栈中弹出<code>Node</code>。如果它得到<code>TextNode</code>,它打印内容。然后它把子节点们压栈。为了以正确的顺序处理子节点,我们必须以相反的顺序将它们压栈; 我们通过将子节点复制成一个<code>ArrayList</code>,原地反转元素,然后遍历反转的<code>ArrayList</code>。</p> <p>DFS 的迭代版本的一个优点是,更容易实现为 Java<code>Iterator</code>;你会在下一章看到如何实现。</p> <p>但是首先,有一个<code>Deque</code>接口的最后的注意事项:除了<code>ArrayDeque</code>,Java 提供另一个<code>Deque</code>的实现,我们的老朋友<code>LinkedList</code>。<code>LinkedList</code>实现两个接口,<code>List</code>和<code>Deque</code>(还有<code>Queue</code>)。你得到哪个接口,取决于你如何使用它。例如,如果将<code>LinkedList</code>对象赋给<code>Deque</code>变量,如下所示:</p> <pre><code class="java">Deqeue<Node> deque = new LinkedList<Node>(); </code></pre> <p>你可以使用<code>Deque</code>接口中的方法,但不是所有<code>List</code>中的方法。如果你将其赋给<code>List</code>变量,像这样:</p> <pre><code class="java">List<Node> deque = new LinkedList<Node>(); </code></pre> <p>你可以使用<code>List</code>接口中的方法,但不是所有<code>Deque</code>中的方法。并且如果像这样赋值:</p> <pre><code class="java">LinkedList<Node> deque = new LinkedList<Node>(); </code></pre> <p>你可以使用所有方法,但是混合了来自不同接口的方法。你的代码会更不可读,并且更易于出错。</p> </article> </div> </div> </div> <!--PC和WAP自适应版--> <div id="SOHUCS" sid="1187422153780338688"></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">你可能感兴趣的:(数据结构思维 第六章 树的遍历)</h4> <div id="paradigm-article-related"> <div class="recommend-post mb30"> <ul class="widget-links"> <li><a href="/article/1950231381485350912.htm" title="《极简思维》第三部分" target="_blank">《极简思维》第三部分</a> <span class="text-muted">小洋苏兮</span> <div>整理你的人际关系如何改善人际关系?摘录:因为人际关系问题是人们生活中不快乐的主要原因。感想:感觉这个说的挺对,之前我总是埋头学习,不管舍友不管自己的合作伙伴的一些事情,但实际上,这学期关注了之后好多了摘录:“亲密关系与社交会让你健康而快乐。这是基础。太过于关注成就或不太关心人际关系的人都不怎么快乐。基本上来说,人类就是建立在人脉关系上的。”感想:但是如果有时想的太多就不太好,要以一个开放的心态跟别</div> </li> <li><a href="/article/1950223243570900992.htm" title="12张思维导图读懂《关键对话》" target="_blank">12张思维导图读懂《关键对话》</a> <span class="text-muted">蜜蜂学堂</span> <div>你一定遇到过下列情况:·向上司提出你精心设计的方案,却被泼了一头冷水。·要求下属加班,下属以沉默相对抗。·和家人谈“开源节流”,他却只当是耳边风。·要邻居遵守公德,对方却依然我行我素。·要你的另一半浪漫些,对方却还是像根木头一样。·请朋友还钱,朋友却总是找各种借口推托。当你遇到这些情况时,你是沉默以对,还是尖刻批评,抑或拍案而起?别觉得灰心丧气,因为大部分人都和你一样,在面对难以解决却又会对生活产</div> </li> <li><a href="/article/1950215918101524480.htm" title="第二十二天(数据结构,无头节点的单项链表)" target="_blank">第二十二天(数据结构,无头节点的单项链表)</a> <span class="text-muted">肉夹馍不加青椒</span> <a class="tag" taget="_blank" href="/search/c%E8%AF%AD%E8%A8%80/1.htm">c语言</a><a class="tag" taget="_blank" href="/search/%E6%95%B0%E6%8D%AE%E7%BB%93%E6%9E%84/1.htm">数据结构</a> <div>线性表:一个线性表里面可以是任意的数据元素,但是同一个线性表里面数据应该是同类型的1存在一个/唯一被称为第一个节点的节点2存在一个/唯一被称为最后一个节点的节点3除了第一个以外,每一个元素都有一个前驱节点4除了最后一个,每一个元素都有一个后继节点满足以上性质,这个表就被称为线性表数组就是一个线性表想实现线性表的保存,我们需要考虑下面的事情1元素要保存2元素与元素之间的序偶关系谁是前面的谁是后面的我</div> </li> <li><a href="/article/1950194363741040640.htm" title="文科生转行编程:从月薪 3 千到 2 万的真实经历" target="_blank">文科生转行编程:从月薪 3 千到 2 万的真实经历</a> <span class="text-muted"></span> <div>在当下就业市场中,文科生往往面临诸多挑战,薪资水平也不尽如人意。然而,有不少勇敢的文科生成功实现了向编程领域的转行,薪资更是实现了从月薪3千到2万的飞跃。本文将深入剖析文科生转行编程的真实经历,从最初对现状的不满萌生出转行念头,到如何艰难地开启学习之旅,克服基础薄弱、思维转换难等重重困难,再到求职时凭借策略与努力获得宝贵机会,以及入职后持续学习保持竞争力。希望通过这些真实历程,为有志于转行编程的文</div> </li> <li><a href="/article/1950188494836002816.htm" title="好可怕୧( ⁼̴̶̤̀ω⁼̴̶̤́ )૭人会因为思维狭隘而限制自己的选择范围,并且导致做出糟糕选择" target="_blank">好可怕୧( ⁼̴̶̤̀ω⁼̴̶̤́ )૭人会因为思维狭隘而限制自己的选择范围,并且导致做出糟糕选择</a> <span class="text-muted">寻世良方Cc_Sandy拎0</span> <div>人间天堂举个例子,希思兄弟指出,青少年们的决定中,有65%左右都属于表决心式和“是否式”决定。表决心式决定是类似于“我再也不吃垃圾食品”这种;“是否式”决定指的是像“我要不要吃炸鸡”,或者“我要不要跟男朋友分手”这种决定。作者说,这其实是一种“认知气泡”。在“认知气泡”里面,人们看不到更多的选择,相当于思维被局限住。而且,这种现象不仅仅是青少年中会出现,成熟的组织也会犯同样的错误。比如,公司在收购</div> </li> <li><a href="/article/1950187221080403968.htm" title="《终身成长》之每日领读" target="_blank">《终身成长》之每日领读</a> <span class="text-muted">恩佳一</span> <div>【昵称】锡安之燕【书名】《终身成长》【阅读时长】30分钟【阅读内容】第四章《天赋与天才》【原文金句】1.人的思维模式比天赋更重要。2.在我们的文化中,无论怎么强调个人努力和自我提高的重要性,人们在心灵深处,依然崇尚天赋。【三个问题】:1、结合之前学过的知识,说一说固定型思维模式的人,在面对失败的时候会怎样做?固定型思维模式的人面对失败会自卑,不自信,会停滞不前或就此被打倒。2、身体上的天赋是显而易</div> </li> <li><a href="/article/1950186586658369536.htm" title="5.2 20190503" target="_blank">5.2 20190503</a> <span class="text-muted">MaggieFeng1988</span> <div>姓名:冯进平公司:上海晋名实业有限公司【日精进打卡第403天】六项精进221期努力一组学员六项精进410期乐观三组志工六项精进423期反省三组志工六项精进469期努力二组志工【知~学习】诵读《六项精进》大纲0遍,共513遍;诵读《六项精进》通篇0遍,共33遍;背诵《大学》0遍,共492遍;阅读《活法》贰第053–063也;荔枝阅读《思维方式》020-036《敬天爱人》手抄第十二天【经典名句】1.放</div> </li> <li><a href="/article/1950184804079169536.htm" title="思维导图中的3A" target="_blank">思维导图中的3A</a> <span class="text-muted">画画的小常</span> <div>图片发自App在学习思维导图3A之前,我们先来看看东方古国传统教书过程。分三步:听话,合作,变化。听话,学生摹仿老师,在这个过程中除非必需问题需要老师澄清解释,其他所有的都要求先行记忆。合作,这一阶段大多已经掌握基本知识点,允许学生提出问题,老师引导学生采用合适的方法,让学生亲自动手,解决问题。变化,经历了前面2个阶段,知识已经彻底掌握,此阶段要充分发挥洞察力和生发出新的思想以回馈老师。较之传统教</div> </li> <li><a href="/article/1950184799020838912.htm" title="初探数学思维(一):数学概括" target="_blank">初探数学思维(一):数学概括</a> <span class="text-muted">JackyFuu</span> <div>数学培养规则意识;培养周密思维和创新能力“现代电子计算机之父”冯·诺依曼对微积分的评价:微积分是现代数学的第一个成就,而且怎样评价它的重要性都不为过。我认为,微积分比其他任何事物都更清楚地表明了现代数学的发端;而且,作为其逻辑发展的数学分析体系仍然构成了精密思维中最伟大的技术进展。《GEB-一条永恒的金带》,普利策奖,1979,美国,指出有一条永恒的金带把数理逻辑、绘画、音乐等不同领域之间的共同规</div> </li> <li><a href="/article/1950179451039969280.htm" title="《应对焦虑》做好4点帮你轻松化解焦虑,并从焦虑中走出来" target="_blank">《应对焦虑》做好4点帮你轻松化解焦虑,并从焦虑中走出来</a> <span class="text-muted">程杰读书</span> <div>你焦虑过吗?有被焦虑困扰过吗?那么什么是焦虑呢?焦虑就是对亲人或自己生命安全,前途命运等的过度担心,而产生的一种烦躁情绪。我曾经有一段时间也特别焦虑。那是在一年前由于孩子的数学成绩很差,思维跟不上。我经常辅导她,就是不开窍。把我气的心脏快炸了。怎么办呢?眼看就要上小学高年级了。心里那个着急啊,真的是无处可说。于是就在网校上报了名,让专业老师来辅导。可她对待作业都是马马虎虎,一点都不认真。眼看一学期</div> </li> <li><a href="/article/1950175508729753600.htm" title="08.学习闭环三部曲:预习、实时学习、复习" target="_blank">08.学习闭环三部曲:预习、实时学习、复习</a> <span class="text-muted">0058b195f4dc</span> <div>人生就是一本效率手册,你怎样对待时间,时间就会给你同比例的回馈。单点突破法。预习,实时学习,复习。1、预习:凡事提前【计划】(1)前一晚设置三个当日目标。每周起始于每周日。(2)提前学习。预习法进行思考。预不预习效果相差20%,预习法学会提问。(3)《学会提问》。听电子书。2.实时学习(1)(10%)相应场景,思维导图,快速笔记。灵感笔记。(2)大纲,基本记录,总结篇。3.复习法则,(70%),最</div> </li> <li><a href="/article/1950172590916038656.htm" title="领略商业之美" target="_blank">领略商业之美</a> <span class="text-muted">苏黛_love</span> <div>从明天起,我要做一个会育儿、懂商业的妈妈。学习商业大课之《认知商业》《觉性智慧》的收获:1、商业是帮助我们赚钱的必备技能,从此不再排斥商业,对财富说是。2、老王说,普通人的商业思维就是:你能用已经验证的商业规则来帮助自己赚钱。我的理解:有模板,永就好了。3、有的人喜欢钱,不喜欢赚钱··········哈哈哈——现在,我认为这是对没有挣钱的能力和怕辛苦的掩饰罢了。4、商业大课上要转变的一个思维:挣钱</div> </li> <li><a href="/article/1950166876634017792.htm" title="如何在 Ubuntu 24.04 或 22.04 Linux 上安装和运行 Redis 服务器" target="_blank">如何在 Ubuntu 24.04 或 22.04 Linux 上安装和运行 Redis 服务器</a> <span class="text-muted">山岚的运维笔记</span> <a class="tag" taget="_blank" href="/search/Linux/1.htm">Linux</a><a class="tag" taget="_blank" href="/search/%E8%BF%90%E7%BB%B4%E5%8F%8A%E4%BD%BF%E7%94%A8/1.htm">运维及使用</a><a class="tag" taget="_blank" href="/search/linux/1.htm">linux</a><a class="tag" taget="_blank" href="/search/%E6%9C%8D%E5%8A%A1%E5%99%A8/1.htm">服务器</a><a class="tag" taget="_blank" href="/search/ubuntu/1.htm">ubuntu</a><a class="tag" taget="_blank" href="/search/redis/1.htm">redis</a><a class="tag" taget="_blank" href="/search/%E6%95%B0%E6%8D%AE%E5%BA%93/1.htm">数据库</a> <div>Redis(RemoteDictionaryServer,远程字典服务器)是一种内存数据结构存储,通常用作NoSQL数据库、缓存和消息代理。它是开源的,因此用户可以免费安装,无需支付任何费用。Redis旨在为需要快速数据访问和低延迟的应用程序提供速度和效率。Redis支持多种数据类型,包括字符串(Strings)、列表(Lists)、集合(Sets)、哈希(Hashes)、有序集合(SortedS</div> </li> <li><a href="/article/1950161707464716288.htm" title="Ubuntu Docker 安装Redis" target="_blank">Ubuntu Docker 安装Redis</a> <span class="text-muted">LLLL96</span> <a class="tag" taget="_blank" href="/search/Ubuntu/1.htm">Ubuntu</a><a class="tag" taget="_blank" href="/search/docker/1.htm">docker</a><a class="tag" taget="_blank" href="/search/docker/1.htm">docker</a><a class="tag" taget="_blank" href="/search/redis/1.htm">redis</a><a class="tag" taget="_blank" href="/search/ubuntu/1.htm">ubuntu</a> <div>目录介绍1.数据结构丰富2.高性能3.持久化1.拉取Redis镜像2.创建挂载目录(可选)3.配置Redis持久化(可选)4.使用配置文件运行容器5.查看redis日志介绍1.数据结构丰富Redis支持多种数据结构,包括:字符串(String):可以用来存储任何类型的数据,例如文本、数字或二进制数据。哈希(Hash):存储字段和值的映射,适合用于表示对象。列表(List):有序的字符串列表,可以用</div> </li> <li><a href="/article/1950160766531334144.htm" title="38岁,男,月薪3500:受害者思维,正在透支你的人生" target="_blank">38岁,男,月薪3500:受害者思维,正在透支你的人生</a> <span class="text-muted">阿聊不见了</span> <div>大家好,我是阿聊。前段时间回老家的时候,碰到一个以前的邻居。这位邻居,曾经一度是妈妈口中的“别人家的孩子”。在大学生还没泛滥的时候,考上了大学,毕业后听从家里安排,回到小县城,进了一家事业单位。谁知,工作后,他的人生仿佛突然就开始走起了下坡路。工作多年,岗位就没挪动过,近二十年的职场生涯,甚至只被提拔了一次,如今38岁了,月薪3500,且涨薪无望。婚姻也不顺利,30岁左右成婚,婚后不到3年,妻子跟</div> </li> <li><a href="/article/1950160194403102720.htm" title="Java:数据结构-ArrayList和顺序表(2)" target="_blank">Java:数据结构-ArrayList和顺序表(2)</a> <span class="text-muted">blammmp</span> <a class="tag" taget="_blank" href="/search/java/1.htm">java</a><a class="tag" taget="_blank" href="/search/%E6%95%B0%E6%8D%AE%E7%BB%93%E6%9E%84/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>一ArrayList的使用1.ArrayList的构造方法第一种(指定容量的构造方法)创建一个空的ArrayList,指定容量为initialCapacity。publicArrayList(intinitialCapacity){if(initialCapacity>0){this.elementData=newObject[initialCapacity];}elseif(initialCap</div> </li> <li><a href="/article/1950155407980818432.htm" title="谈谈自己在成长过程中所经历的最大的一次转变" target="_blank">谈谈自己在成长过程中所经历的最大的一次转变</a> <span class="text-muted">镜子写作</span> <div>人生所经历过的转变,我觉得最大的转变是思维上的转变。2019年4月12号,我去到了深圳,参加了慰安老师的超级演说家,三天两夜,这三天两夜改变了我人生的思想局限,以前的我一直认为,所有的不好都是别人造成的。在生活和工作上一直处于埋怨的状态,从来都没有想过改变自己,环境是无法改变的,改变自己才能够让自己过得更好。曾经的我一直都是躲在最让人看不见的位置,老师讲我负责听,讲台离我很远,我也从没想过要站到讲</div> </li> <li><a href="/article/1950154776767426560.htm" title="【数据结构】--ArrayList与顺序表" target="_blank">【数据结构】--ArrayList与顺序表</a> <span class="text-muted">bubu__</span> <a class="tag" taget="_blank" href="/search/%E6%95%B0%E6%8D%AE%E7%BB%93%E6%9E%84/1.htm">数据结构</a><a class="tag" taget="_blank" href="/search/%E6%95%B0%E6%8D%AE%E7%BB%93%E6%9E%84/1.htm">数据结构</a> <div>文章目录1.线性表2.顺序表3.ArrayList简介4.MyArrayList的实现5.ArrayList使用5.1ArrayList的构造5.2ArrayList常见操作5.3ArrayList的遍历5.4ArrayList的扩容机制6.ArrayList的具体使用6.1简单的洗牌算法6.2杨辉三角1.线性表线性表(linearlist)是n个具有相同特性的数据元素的有限序列。线性表是一种在实</div> </li> <li><a href="/article/1950151117719531520.htm" title="数据结构2-集合类ArrayList与洗牌算法" target="_blank">数据结构2-集合类ArrayList与洗牌算法</a> <span class="text-muted"></span> <div>文章目录★引言:一.MyArrayList模拟实现(一)IList(二)MyArrayList(1)add(Tdata)(2)add(intpos,Tdata)(3)IllgalPosException(4)indexOf(ObjecttoFind)(5)contains(ObjecttoFind)(6)get(intpos)(7)set(intpos,Tvalue)(8)remove(Objec</div> </li> <li><a href="/article/1950144086069538816.htm" title="世上无难事,只要肯放弃" target="_blank">世上无难事,只要肯放弃</a> <span class="text-muted">七宝不离十</span> <div>大力出奇迹的解释,是指在解决单个问题上投入了很大的力量,但最终获得了影响力、竞争优势、护城河……然后我脑子里闪现的第一个男人头像是愚公,女人头像是居里夫人。他(她)们的故事已经广为传颂,这种不为所动,努力搞事情的精神可以投射到各个领域。我的理解,是不畏困难,不随机应变。我认为大力出奇迹的赚钱案例,首推罗胖---罗振宇的逻辑思维。我最早知道逻辑思维,是因为罗胖每天60秒的语音播报,然后一直跟着他《得</div> </li> <li><a href="/article/1950138760230400000.htm" title="C语言基础-数组和指针的区别" target="_blank">C语言基础-数组和指针的区别</a> <span class="text-muted">阿部春光</span> <a class="tag" taget="_blank" href="/search/C%E8%AF%AD%E8%A8%80/1.htm">C语言</a><a class="tag" taget="_blank" href="/search/%E6%95%B0%E6%8D%AE%E7%BB%93%E6%9E%84/1.htm">数据结构</a><a class="tag" taget="_blank" href="/search/%E7%AE%97%E6%B3%95/1.htm">算法</a> <div>在C语言中,数组和指针是两个密切相关但又有显著区别的概念。下面我会详细解释它们之间的区别和联系。区别数组和指针在C语言中虽然经常一起使用,但它们是两个不同的概念,具有一些关键的区别:本质不同:数组:数组是一种数据结构,用于存储固定数量的同类型元素的连续内存块。数组名在某些上下文中(如取地址操作或sizeof操作符)代表整个数组,但在其他上下文中(如作为函数参数或用于指针算术)通常退化为指向数组第一</div> </li> <li><a href="/article/1950134096558616576.htm" title="Python STL概念学习与代码实践" target="_blank">Python STL概念学习与代码实践</a> <span class="text-muted">体制教科书</span> <div>本文还有配套的精品资源,点击获取简介:通过”py_stl_learning”项目,学习者可以使用Python实现和理解C++STL的概念,包括数据结构、算法、容器适配器、模板和泛型容器等。Python中的列表、集合、字典等数据结构与STL中的vector、set、map等类似,而Python的itertools和functools模块提供了STL风格的算法功能。Python通过其面向对象的特性以及</div> </li> <li><a href="/article/1950132504585367552.htm" title="普通人,现在想快挣钱、挣快钱,这几个小生意都比较靠谱!" target="_blank">普通人,现在想快挣钱、挣快钱,这几个小生意都比较靠谱!</a> <span class="text-muted">高省APP珊珊</span> <div>时代不同了,挣钱的规则和途径都在迭代,那么,对于普通人而言,改变思维和行动,自然成为其挣钱多少的关键。我是建议,在当前市场经济形势下,资源匮乏、资金短缺、没有人脉背景的普通人,还是去做一些离钱近的小生意,这样不仅仅可以快挣钱、挣快钱,而且没有太大压力,譬如下面这几个小生意,都比较靠谱一些,建议考察。高省APP,是2021年推出的平台,0投资,0风险、高省APP佣金更高,模式更好,终端用户不流失。【</div> </li> <li><a href="/article/1950128298788974592.htm" title="Redis五大基本数据类型" target="_blank">Redis五大基本数据类型</a> <span class="text-muted">ruan114514</span> <a class="tag" taget="_blank" href="/search/redis/1.htm">redis</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/%E7%BC%93%E5%AD%98/1.htm">缓存</a><a class="tag" taget="_blank" href="/search/java/1.htm">java</a> <div>Redis作为高性能的键值存储系统,其核心价值在于丰富的数据结构。本文将深入剖析Redis的五种基本数据类型,揭示其内部实现原理,并提供实际应用场景和最佳实践。一、字符串(String):Redis的基石底层实现Redis字符串使用简单动态字符串(SDS)结构:structsdshdr{intlen;//已使用长度intfree;//未使用空间charbuf[];//字节数组};优势特性:O(1)</div> </li> <li><a href="/article/1950111155183742976.htm" title="跳表:来自概率的优雅平衡" target="_blank">跳表:来自概率的优雅平衡</a> <span class="text-muted">allenXer</span> <a class="tag" taget="_blank" href="/search/%E7%AE%97%E6%B3%95%E4%B8%8E%E6%95%B0%E6%8D%AE%E7%BB%93%E6%9E%84/1.htm">算法与数据结构</a><a class="tag" taget="_blank" href="/search/redis/1.htm">redis</a><a class="tag" taget="_blank" href="/search/%E6%95%B0%E6%8D%AE%E7%BB%93%E6%9E%84/1.htm">数据结构</a><a class="tag" taget="_blank" href="/search/%E7%AE%97%E6%B3%95/1.htm">算法</a><a class="tag" taget="_blank" href="/search/python/1.htm">python</a><a class="tag" taget="_blank" href="/search/%E5%AD%A6%E4%B9%A0/1.htm">学习</a> <div>跳表:来自概率的优雅平衡从抛硬币到Redis核心,跳表如何用随机性颠覆数据结构设计引言:平衡的艺术在计算机科学的世界里,数据结构的设计者一直在追求一种完美平衡:快速查询的同时保持高效的插入和删除。平衡树(如AVL树、红黑树)曾是这个领域的王者,但它们的复杂性令人望而生畏。直到1989年,计算机科学家WilliamPugh提出了一种革命性的数据结构——跳表(SkipList),它用概率的魔力实现了近</div> </li> <li><a href="/article/1950108456342056960.htm" title="第六天作业" target="_blank">第六天作业</a> <span class="text-muted">宇宇妈妈_e088</span> <div>对换框法中的“二者兼得”的理解和认识。二者兼得:无论我面对怎样的情况,无论选择是多么的困难,我都努力的去让更多的可能出现,我要始终去思考,怎样才能够更全面,怎样都会达到我想要的,我要灵活的去做,我要有效的去努力,我要坚持的去付出。如果没有达到我想要的,我要不断去检视我自己,我的思维是否灵活我是否去行动了,我的方法是否有效,我是否够努力,我的行动是否坚持,我是否够付出当您深刻感悟到了“二者兼得”背后</div> </li> <li><a href="/article/1950099932132208640.htm" title="vue2中实现leader-line-vue连线文章对应字符" target="_blank">vue2中实现leader-line-vue连线文章对应字符</a> <span class="text-muted">小莉爱编程</span> <a class="tag" taget="_blank" href="/search/vue/1.htm">vue</a><a class="tag" taget="_blank" href="/search/bug%E8%AE%B0%E5%BD%95/1.htm">bug记录</a><a class="tag" taget="_blank" href="/search/vue.js/1.htm">vue.js</a><a class="tag" taget="_blank" href="/search/%E5%89%8D%E7%AB%AF/1.htm">前端</a><a class="tag" taget="_blank" href="/search/javascript/1.htm">javascript</a> <div>效果展示通过点击右边的tag,触发连接操作第一步:获取右边tag展示1.右边的tag列表展示,我这边是分为两个list嵌套的数据结构;{"人员":[{</div> </li> <li><a href="/article/1950099528199761920.htm" title="京东返利平台推荐,京东返利app哪个最好?" target="_blank">京东返利平台推荐,京东返利app哪个最好?</a> <span class="text-muted">古楼</span> <div>京东作为中国知名的电商平台,为广大消费者提供了丰富的商品和服务。在购物过程中,一些细心的消费者可能会发现,京东也有返利平台,那么,京东有没有返利APP呢?如果有的话,哪个返利APP最好呢?本文将为您解答这些问题。月入十万必看!都在挣钱!推荐几个月入几千到几万的靠谱副业项目!(公众号:善士思维笔记)【高省】APP(高佣金领导者)是一个自用省钱佣金高,分享推广赚钱多的平台,2000万用户信赖的四年老平</div> </li> <li><a href="/article/1950099272712122368.htm" title="2021-6-1晨间日记" target="_blank">2021-6-1晨间日记</a> <span class="text-muted">倏尔挥锋至</span> <div>今天是什么日子起床:六点就寝:七点天气:晴心情:大好纪念日:六一国际儿童节任务清单昨日完成的任务,最重要的三件事:成本估算,备案资料,和心仪女孩表白改进:更高效,更全面,更真诚习惯养成:每天写文章,整理自己的思维,每天跑步,锻炼意志周目标·完成进度完成备案资料编写,完成百分之二十学习·信息·阅读学习文章写作方法,精析健康·饮食·锻炼每日坚持快走工作·思考人生是一场旅行,沿途的风景很美,终点必然到来</div> </li> <li><a href="/article/1950092623129669632.htm" title="零基础学习性能测试第六章:性能难点-Jmeter实现海量用户压测" target="_blank">零基础学习性能测试第六章:性能难点-Jmeter实现海量用户压测</a> <span class="text-muted"></span> <div>目录一、海量压测核心挑战与解决思路二、分布式压测集群搭建(百倍性能提升)1.架构设计2.实战步骤三、百万级用户参数化方案1.Redis预生成测试数据2.JMeter分段读取(避免内存溢出)3.CSV分片策略四、高并发优化配置模板1.`jmeter.properties`关键修改2.线程组配置技巧五、结果收集与监控方案1.轻量级结果存储2.实时监控看板六、海量压测实战案例:双11级流量模拟测试目标:</div> </li> <li><a href="/article/87.htm" title="面向对象面向过程" target="_blank">面向对象面向过程</a> <span class="text-muted">3213213333332132</span> <a class="tag" taget="_blank" href="/search/java/1.htm">java</a> <div>面向对象:把要完成的一件事,通过对象间的协作实现。 面向过程:把要完成的一件事,通过循序依次调用各个模块实现。 我把大象装进冰箱这件事为例,用面向对象和面向过程实现,都是用java代码完成。 1、面向对象 package bigDemo.ObjectOriented; /** * 大象类 * * @Description * @author FuJian</div> </li> <li><a href="/article/214.htm" title="Java Hotspot: Remove the Permanent Generation" target="_blank">Java Hotspot: Remove the Permanent Generation</a> <span class="text-muted">bookjovi</span> <a class="tag" taget="_blank" href="/search/HotSpot/1.htm">HotSpot</a> <div>  openjdk上关于hotspot将移除永久带的描述非常详细,http://openjdk.java.net/jeps/122   JEP 122: Remove the Permanent Generation Author Jon Masamitsu Organization Oracle Created 2010/8/15 Updated 2011/</div> </li> <li><a href="/article/341.htm" title="正则表达式向前查找向后查找,环绕或零宽断言" target="_blank">正则表达式向前查找向后查找,环绕或零宽断言</a> <span class="text-muted">dcj3sjt126com</span> <a class="tag" taget="_blank" href="/search/%E6%AD%A3%E5%88%99%E8%A1%A8%E8%BE%BE%E5%BC%8F/1.htm">正则表达式</a> <div>向前查找和向后查找 1. 向前查找:根据要匹配的字符序列后面存在一个特定的字符序列(肯定式向前查找)或不存在一个特定的序列(否定式向前查找)来决定是否匹配。.NET将向前查找称之为零宽度向前查找断言。     对于向前查找,出现在指定项之后的字符序列不会被正则表达式引擎返回。 2. 向后查找:一个要匹配的字符序列前面有或者没有指定的</div> </li> <li><a href="/article/468.htm" title="BaseDao" target="_blank">BaseDao</a> <span class="text-muted">171815164</span> <a class="tag" taget="_blank" href="/search/seda/1.htm">seda</a> <div> import java.sql.Connection; import java.sql.DriverManager; import java.sql.SQLException; import java.sql.PreparedStatement; import java.sql.ResultSet; public class BaseDao { public Conn</div> </li> <li><a href="/article/595.htm" title="Ant标签详解--Java命令" target="_blank">Ant标签详解--Java命令</a> <span class="text-muted">g21121</span> <a class="tag" taget="_blank" href="/search/Java%E5%91%BD%E4%BB%A4/1.htm">Java命令</a> <div>        这一篇主要介绍与java相关标签的使用         终于开始重头戏了,Java部分是我们关注的重点也是项目中用处最多的部分。           1</div> </li> <li><a href="/article/722.htm" title="[简单]代码片段_电梯数字排列" target="_blank">[简单]代码片段_电梯数字排列</a> <span class="text-muted">53873039oycg</span> <a class="tag" taget="_blank" href="/search/%E4%BB%A3%E7%A0%81/1.htm">代码</a> <div>       今天看电梯数字排列是9 18 26这样呈倒N排列的,写了个类似的打印例子,如下:       import java.util.Arrays; public class 电梯数字排列_S3_Test { public static void main(S</div> </li> <li><a href="/article/849.htm" title="Hessian原理" target="_blank">Hessian原理</a> <span class="text-muted">云端月影</span> <a class="tag" taget="_blank" href="/search/hessian%E5%8E%9F%E7%90%86/1.htm">hessian原理</a> <div>Hessian 原理分析 一.      远程通讯协议的基本原理 网络通信需要做的就是将流从一台计算机传输到另外一台计算机,基于传输协议和网络 IO 来实现,其中传输协议比较出名的有 http 、 tcp 、 udp 等等, http 、 tcp 、 udp 都是在基于 Socket 概念上为某类应用场景而扩展出的传输协</div> </li> <li><a href="/article/976.htm" title="区分Activity的四种加载模式----以及Intent的setFlags" target="_blank">区分Activity的四种加载模式----以及Intent的setFlags</a> <span class="text-muted">aijuans</span> <a class="tag" taget="_blank" href="/search/android/1.htm">android</a> <div>  在多Activity开发中,有可能是自己应用之间的Activity跳转,或者夹带其他应用的可复用Activity。可能会希望跳转到原来某个Activity实例,而不是产生大量重复的Activity。 这需要为Activity配置特定的加载模式,而不是使用默认的加载模式。 加载模式分类及在哪里配置 Activity有四种加载模式: standard singleTop</div> </li> <li><a href="/article/1103.htm" title="hibernate几个核心API及其查询分析" target="_blank">hibernate几个核心API及其查询分析</a> <span class="text-muted">antonyup_2006</span> <a class="tag" taget="_blank" href="/search/html/1.htm">html</a><a class="tag" taget="_blank" href="/search/.net/1.htm">.net</a><a class="tag" taget="_blank" href="/search/Hibernate/1.htm">Hibernate</a><a class="tag" taget="_blank" href="/search/xml/1.htm">xml</a><a class="tag" taget="_blank" href="/search/%E9%85%8D%E7%BD%AE%E7%AE%A1%E7%90%86/1.htm">配置管理</a> <div>(一)  org.hibernate.cfg.Configuration类         读取配置文件并创建唯一的SessionFactory对象.(一般,程序初始化hibernate时创建.)         Configuration co</div> </li> <li><a href="/article/1230.htm" title="PL/SQL的流程控制" target="_blank">PL/SQL的流程控制</a> <span class="text-muted">百合不是茶</span> <a class="tag" taget="_blank" href="/search/oracle/1.htm">oracle</a><a class="tag" taget="_blank" href="/search/PL%2FSQL%E7%BC%96%E7%A8%8B/1.htm">PL/SQL编程</a><a class="tag" taget="_blank" href="/search/%E5%BE%AA%E7%8E%AF%E6%8E%A7%E5%88%B6/1.htm">循环控制</a> <div>PL/SQL也是一门高级语言,所以流程控制是必须要有的,oracle数据库的pl/sql比sqlserver数据库要难,很多pl/sql中有的sqlserver里面没有   流程控制; 分支语句 if 条件 then 结果 else 结果 end if ; 条件语句 case when 条件 then 结果; 循环语句 loop </div> </li> <li><a href="/article/1357.htm" title="强大的Mockito测试框架" target="_blank">强大的Mockito测试框架</a> <span class="text-muted">bijian1013</span> <a class="tag" taget="_blank" href="/search/mockito/1.htm">mockito</a><a class="tag" taget="_blank" href="/search/%E5%8D%95%E5%85%83%E6%B5%8B%E8%AF%95/1.htm">单元测试</a> <div>一.自动生成Mock类        在需要Mock的属性上标记@Mock注解,然后@RunWith中配置Mockito的TestRunner或者在setUp()方法中显示调用MockitoAnnotations.initMocks(this);生成Mock类即可。二.自动注入Mock类到被测试类  &nbs</div> </li> <li><a href="/article/1484.htm" title="精通Oracle10编程SQL(11)开发子程序" target="_blank">精通Oracle10编程SQL(11)开发子程序</a> <span class="text-muted">bijian1013</span> <a class="tag" taget="_blank" href="/search/oracle/1.htm">oracle</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/plsql/1.htm">plsql</a> <div>/* *开发子程序 */ --子程序目是指被命名的PL/SQL块,这种块可以带有参数,可以在不同应用程序中多次调用 --PL/SQL有两种类型的子程序:过程和函数 --开发过程 --建立过程:不带任何参数 CREATE OR REPLACE PROCEDURE out_time IS BEGIN DBMS_OUTPUT.put_line(systimestamp); E</div> </li> <li><a href="/article/1611.htm" title="【EhCache一】EhCache版Hello World" target="_blank">【EhCache一】EhCache版Hello World</a> <span class="text-muted">bit1129</span> <a class="tag" taget="_blank" href="/search/Hello+world/1.htm">Hello world</a> <div>本篇是EhCache系列的第一篇,总体介绍使用EhCache缓存进行CRUD的API的基本使用,更细节的内容包括EhCache源代码和设计、实现原理在接下来的文章中进行介绍   环境准备 1.新建Maven项目   2.添加EhCache的Maven依赖 <dependency> <groupId>ne</div> </li> <li><a href="/article/1738.htm" title="学习EJB3基础知识笔记" target="_blank">学习EJB3基础知识笔记</a> <span class="text-muted">白糖_</span> <a class="tag" taget="_blank" href="/search/bean/1.htm">bean</a><a class="tag" taget="_blank" href="/search/Hibernate/1.htm">Hibernate</a><a class="tag" taget="_blank" href="/search/jboss/1.htm">jboss</a><a class="tag" taget="_blank" href="/search/webservice/1.htm">webservice</a><a class="tag" taget="_blank" href="/search/ejb/1.htm">ejb</a> <div>最近项目进入系统测试阶段,全赖袁大虾领导有力,保持一周零bug记录,这也让自己腾出不少时间补充知识。花了两天时间把“传智播客EJB3.0”看完了,EJB基本的知识也有些了解,在这记录下EJB的部分知识,以供自己以后复习使用。   EJB是sun的服务器端组件模型,最大的用处是部署分布式应用程序。EJB (Enterprise JavaBean)是J2EE的一部分,定义了一个用于开发基</div> </li> <li><a href="/article/1865.htm" title="angular.bootstrap" target="_blank">angular.bootstrap</a> <span class="text-muted">boyitech</span> <a class="tag" taget="_blank" href="/search/AngularJS/1.htm">AngularJS</a><a class="tag" taget="_blank" href="/search/AngularJS+API/1.htm">AngularJS API</a><a class="tag" taget="_blank" href="/search/angular%E4%B8%AD%E6%96%87api/1.htm">angular中文api</a> <div>angular.bootstrap 描述:     手动初始化angular。     这个函数会自动检测创建的module有没有被加载多次,如果有则会在浏览器的控制台打出警告日志,并且不会再次加载。这样可以避免在程序运行过程中许多奇怪的问题发生。   使用方法:     angular .</div> </li> <li><a href="/article/1992.htm" title="java-谷歌面试题-给定一个固定长度的数组,将递增整数序列写入这个数组。当写到数组尾部时,返回数组开始重新写,并覆盖先前写过的数" target="_blank">java-谷歌面试题-给定一个固定长度的数组,将递增整数序列写入这个数组。当写到数组尾部时,返回数组开始重新写,并覆盖先前写过的数</a> <span class="text-muted">bylijinnan</span> <a class="tag" taget="_blank" href="/search/java/1.htm">java</a> <div> public class SearchInShiftedArray { /** * 题目:给定一个固定长度的数组,将递增整数序列写入这个数组。当写到数组尾部时,返回数组开始重新写,并覆盖先前写过的数。 * 请在这个特殊数组中找出给定的整数。 * 解答: * 其实就是“旋转数组”。旋转数组的最小元素见http://bylijinnan.iteye.com/bl</div> </li> <li><a href="/article/2119.htm" title="天使还是魔鬼?都是我们制造" target="_blank">天使还是魔鬼?都是我们制造</a> <span class="text-muted">ducklsl</span> <a class="tag" taget="_blank" href="/search/%E7%94%9F%E6%B4%BB/1.htm">生活</a><a class="tag" taget="_blank" href="/search/%E6%95%99%E8%82%B2/1.htm">教育</a><a class="tag" taget="_blank" href="/search/%E6%83%85%E6%84%9F/1.htm">情感</a> <div>----------------------------剧透请原谅,有兴趣的朋友可以自己看看电影,互相讨论哦!!!     从厦门回来的动车上,无意中瞟到了书中推荐的几部关于儿童的电影。当然,这几部电影可能会另大家失望,并不是类似小鬼当家的电影,而是关于“坏小孩”的电影!     自己挑了两部先看了看,但是发现看完之后,心里久久不能平</div> </li> <li><a href="/article/2246.htm" title="[机器智能与生物]研究生物智能的问题" target="_blank">[机器智能与生物]研究生物智能的问题</a> <span class="text-muted">comsci</span> <a class="tag" taget="_blank" href="/search/%E7%94%9F%E7%89%A9/1.htm">生物</a> <div>       我想,人的神经网络和苍蝇的神经网络,并没有本质的区别...就是大规模拓扑系统和中小规模拓扑分析的区别....       但是,如果去研究活体人类的神经网络和脑系统,可能会受到一些法律和道德方面的限制,而且研究结果也不一定可靠,那么希望从事生物神经网络研究的朋友,不如把</div> </li> <li><a href="/article/2373.htm" title="获取Android Device的信息" target="_blank">获取Android Device的信息</a> <span class="text-muted">dai_lm</span> <a class="tag" taget="_blank" href="/search/android/1.htm">android</a> <div> String phoneInfo = "PRODUCT: " + android.os.Build.PRODUCT; phoneInfo += ", CPU_ABI: " + android.os.Build.CPU_ABI; phoneInfo += ", TAGS: " + android.os.Build.TAGS; ph</div> </li> <li><a href="/article/2500.htm" title="最佳字符串匹配算法(Damerau-Levenshtein距离算法)的Java实现" target="_blank">最佳字符串匹配算法(Damerau-Levenshtein距离算法)的Java实现</a> <span class="text-muted">datamachine</span> <a class="tag" taget="_blank" href="/search/java/1.htm">java</a><a class="tag" taget="_blank" href="/search/%E7%AE%97%E6%B3%95/1.htm">算法</a><a class="tag" taget="_blank" href="/search/%E5%AD%97%E7%AC%A6%E4%B8%B2%E5%8C%B9%E9%85%8D/1.htm">字符串匹配</a> <div>原文:http://www.javacodegeeks.com/2013/11/java-implementation-of-optimal-string-alignment.html------------------------------------------------------------------------------------------------------------</div> </li> <li><a href="/article/2627.htm" title="小学5年级英语单词背诵第一课" target="_blank">小学5年级英语单词背诵第一课</a> <span class="text-muted">dcj3sjt126com</span> <a class="tag" taget="_blank" href="/search/english/1.htm">english</a><a class="tag" taget="_blank" href="/search/word/1.htm">word</a> <div>long 长的 show 给...看,出示 mouth 口,嘴 write 写   use 用,使用 take 拿,带来 hand 手 clever 聪明的   often 经常 wash 洗 slow 慢的 house 房子   water 水 clean 清洁的 supper 晚餐 out 在外   face 脸,</div> </li> <li><a href="/article/2754.htm" title="macvim的使用实战" target="_blank">macvim的使用实战</a> <span class="text-muted">dcj3sjt126com</span> <a class="tag" taget="_blank" href="/search/mac/1.htm">mac</a><a class="tag" taget="_blank" href="/search/vim/1.htm">vim</a> <div>macvim用的是mac里面的vim, 只不过是一个GUI的APP, 相当于一个壳   1. 下载macvim https://code.google.com/p/macvim/   2. 了解macvim :h               vim的使用帮助信息 :h macvim  </div> </li> <li><a href="/article/2881.htm" title="java二分法查找" target="_blank">java二分法查找</a> <span class="text-muted">蕃薯耀</span> <a class="tag" taget="_blank" href="/search/java%E4%BA%8C%E5%88%86%E6%B3%95%E6%9F%A5%E6%89%BE/1.htm">java二分法查找</a><a class="tag" taget="_blank" href="/search/%E4%BA%8C%E5%88%86%E6%B3%95/1.htm">二分法</a><a class="tag" taget="_blank" href="/search/java%E4%BA%8C%E5%88%86%E6%B3%95/1.htm">java二分法</a> <div>java二分法查找 >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> 蕃薯耀 2015年6月23日 11:40:03 星期二 http:/</div> </li> <li><a href="/article/3008.htm" title="Spring Cache注解+Memcached" target="_blank">Spring Cache注解+Memcached</a> <span class="text-muted">hanqunfeng</span> <a class="tag" taget="_blank" href="/search/spring/1.htm">spring</a><a class="tag" taget="_blank" href="/search/memcached/1.htm">memcached</a> <div>Spring3.1 Cache注解  依赖jar包: <!-- simple-spring-memcached --> <dependency> <groupId>com.google.code.simple-spring-memcached</groupId> <artifactId>simple-s</div> </li> <li><a href="/article/3135.htm" title="apache commons io包快速入门" target="_blank">apache commons io包快速入门</a> <span class="text-muted">jackyrong</span> <a class="tag" taget="_blank" href="/search/apache+commons/1.htm">apache commons</a> <div>原文参考 http://www.javacodegeeks.com/2014/10/apache-commons-io-tutorial.html   Apache Commons IO 包绝对是好东西,地址在http://commons.apache.org/proper/commons-io/,下面用例子分别介绍:   1)  工具类   2</div> </li> <li><a href="/article/3262.htm" title="如何学习编程" target="_blank">如何学习编程</a> <span class="text-muted">lampcy</span> <a class="tag" taget="_blank" href="/search/java/1.htm">java</a><a class="tag" taget="_blank" href="/search/%E7%BC%96%E7%A8%8B/1.htm">编程</a><a class="tag" taget="_blank" href="/search/C%2B%2B/1.htm">C++</a><a class="tag" taget="_blank" href="/search/c/1.htm">c</a> <div>首先,我想说一下学习思想.学编程其实跟网络游戏有着类似的效果.开始的时候,你会对那些代码,函数等产生很大的兴趣,尤其是刚接触编程的人,刚学习第一种语言的人.可是,当你一步步深入的时候,你会发现你没有了以前那种斗志.就好象你在玩韩国泡菜网游似的,玩到一定程度,每天就是练级练级,完全是一个想冲到高级别的意志力在支持着你.而学编程就更难了,学了两个月后,总是觉得你好象全都学会了,却又什么都做不了,又没有</div> </li> <li><a href="/article/3389.htm" title="架构师之spring-----spring3.0新特性的bean加载控制@DependsOn和@Lazy" target="_blank">架构师之spring-----spring3.0新特性的bean加载控制@DependsOn和@Lazy</a> <span class="text-muted">nannan408</span> <a class="tag" taget="_blank" href="/search/Spring3/1.htm">Spring3</a> <div>1.前言。    如题。 2.描述。    @DependsOn用于强制初始化其他Bean。可以修饰Bean类或方法,使用该Annotation时可以指定一个字符串数组作为参数,每个数组元素对应于一个强制初始化的Bean。 @DependsOn({"steelAxe","abc"}) @Comp</div> </li> <li><a href="/article/3516.htm" title="Spring4+quartz2的配置和代码方式调度" target="_blank">Spring4+quartz2的配置和代码方式调度</a> <span class="text-muted">Everyday都不同</span> <a class="tag" taget="_blank" href="/search/%E4%BB%A3%E7%A0%81/1.htm">代码</a><a class="tag" taget="_blank" href="/search/%E9%85%8D%E7%BD%AE/1.htm">配置</a><a class="tag" taget="_blank" href="/search/spring4/1.htm">spring4</a><a class="tag" taget="_blank" href="/search/quartz2.x/1.htm">quartz2.x</a><a class="tag" taget="_blank" href="/search/%E5%AE%9A%E6%97%B6%E4%BB%BB%E5%8A%A1/1.htm">定时任务</a> <div>前言:这些天简直被quartz虐哭。。因为quartz 2.x版本相比quartz1.x版本的API改动太多,所以,只好自己去查阅底层API……   quartz定时任务必须搞清楚几个概念: JobDetail——处理类 Trigger——触发器,指定触发时间,必须要有JobDetail属性,即触发对象 Scheduler——调度器,组织处理类和触发器,配置方式一般只需指定触发</div> </li> <li><a href="/article/3643.htm" title="Hibernate入门" target="_blank">Hibernate入门</a> <span class="text-muted">tntxia</span> <a class="tag" taget="_blank" href="/search/Hibernate/1.htm">Hibernate</a> <div>  前言   使用面向对象的语言和关系型的数据库,开发起来很繁琐,费时。由于现在流行的数据库都不面向对象。Hibernate 是一个Java的ORM(Object/Relational Mapping)解决方案。   Hibernte不仅关心把Java对象对应到数据库的表中,而且提供了请求和检索的方法。简化了手工进行JDBC操作的流程。   如</div> </li> <li><a href="/article/3770.htm" title="Math类" target="_blank">Math类</a> <span class="text-muted">xiaoxing598</span> <a class="tag" taget="_blank" href="/search/Math/1.htm">Math</a> <div>一、Java中的数字(Math)类是final类,不可继承。 1、常数 PI:double圆周率 E:double自然对数 2、截取(注意方法的返回类型) double ceil(double d) 返回不小于d的最小整数 double floor(double d) 返回不大于d的整最大数 int round(float f) 返回四舍五入后的整数 long round</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>