四、JavaScript HTML DOM

通过 HTML DOM,可访问 JavaScript HTML 文档的所有元素。

HTML DOM (文档对象模型):
HTML 的标准对象模型
HTML 的标准编程接口
W3C 标准

HTML DOM 定义了所有 HTML 元素的对象和属性,以及访问它们的方法。

换言之,HTML DOM 是关于如何获取、修改、添加或删除 HTML 元素的标准。
当网页被加载时,浏览器会创建页面的文档对象模型(Document Object Model)。
HTML DOM 模型被构造为对象的树。

四、JavaScript HTML DOM_第1张图片
HTML DOM 树

通过可编程的对象模型,JavaScript 获得了足够的能力来创建动态的 HTML。

JavaScript 能够改变页面中的所有 HTML 元素
JavaScript 能够改变页面中的所有 HTML 属性
JavaScript 能够改变页面中的所有 CSS 样式
JavaScript 能够对页面中的所有事件做出反应

一、查找 HTML 元素

通常,通过 JavaScript,您需要操作 HTML 元素。
为了做到这件事情,您必须首先找到该元素。有三种方法来做这件事:

  • 通过 id 找到 HTML 元素
  • 通过标签名找到 HTML 元素
  • 通过类名找到 HTML 元素

如果找到该元素,则该方法将以对象(在 x 中)的形式返回该元素。
如果未找到该元素,则 x 将包含 null。

实例
本例查找 id="main" 的元素,然后查找 "main" 中的所有

标签元素:





Hello World!

The DOM is very useful.

本例演示 getElementsByTagName 方法。

二、改变 HTML 元素的内容

改变 HTML 输出流
JavaScript 能够创建动态的 HTML 内容:
今天的日期是: Mon Aug 27 2018 02:56:06 GMT+0800 (中国标准时间)
在 JavaScript 中,document.write() 可用于直接向 HTML 输出流写内容。

实例









改变 HTML 内容
修改 HTML 内容的最简单的方法时使用 innerHTML 属性。
如需改变 HTML 元素的内容,请使用这个语法:
document.getElementById(id).innerHTML=new HTML
实例
本例改变了

元素的内容:




Hello World!

改变 HTML 属性
如需改变 HTML 元素的属性,请使用这个语法:
document.getElementById(id).attribute=new value
实例
本例改变了 元素的 src 属性:











三、改变 HTML 元素的样式

改变 HTML 样式
如需改变 HTML 元素的样式,请使用这个语法:
document.getElementById(id).style.property=new style

本例改变了 id="id1" 的 HTML 元素的样式,当用户点击按钮时:





My Heading 1

四、对 HTML 事件做出反应

我们可以在事件发生时执行 JavaScript,比如当用户在 HTML 元素上点击时。

如需在用户点击某个元素时执行代码,请向一个 HTML 事件属性添加 JavaScript 代码:
onclick=JavaScript

HTML 事件的例子:
当用户点击鼠标时
当网页已加载时
当图像已加载时
当鼠标移动到元素上时
当输入字段被改变时
当提交 HTML 表单时
当用户触发按键时

在本例中,当用户在

元素上点击时,会改变其内容:







请点击该文本

HTML 事件分配
HTML DOM 允许您通过使用 JavaScript 来向 HTML 元素分配事件。

实例
向 button 元素分配 onclick 事件:

在上面的例子中,名为 displayDate 的函数将在按钮被点击时执行。
或者这样写:

常用HTML DOM Event 对象
Event 对象
Event 对象代表事件的状态,比如事件在其中发生的元素、键盘按键的状态、鼠标的位置、鼠标按钮的状态。
事件通常与函数结合使用,函数不会在事件发生前被执行!

事件句柄 (Event Handlers)
HTML 4.0 的新特性之一是能够使 HTML 事件触发浏览器中的行为,比如当用户点击某个 HTML 元素时启动一段 JavaScript。下面是一个属性列表,可将之插入 HTML 标签以定义事件的行为。

属性 此事件发生在何时...
onfocus 元素获得焦点。
onblur 元素失去焦点。
onchange 域的内容被改变。
onclick 当用户点击某个对象时调用的事件句柄。
ondblclick 当用户双击某个对象时调用的事件句柄。
onerror 在加载文档或图像时发生错误。
onabort 图像的加载被中断。
onload 一张页面或一幅图像完成加载。
onkeydown 某个键盘按键被按下。
onkeypress 某个键盘按键被按下并松开。
onkeyup 某个键盘按键被松开。
onmousedown 鼠标按钮被按下。
onmousemove 鼠标被移动。
onmouseout 鼠标从某元素移开。
onmouseover 鼠标移到某元素之上。
onmouseup 鼠标按键被松开。
onreset 重置按钮被点击。
onresize 窗口或框架被重新调整大小。
onselect 文本被选中。
onsubmit 确认按钮被点击。
onunload 用户退出页面。

鼠标 / 键盘属性

属性 描述
altKey 返回当事件被触发时,"ALT" 是否被按下。
button 返回当事件被触发时,哪个鼠标按钮被点击。
clientX 返回当事件被触发时,鼠标指针的水平坐标。
clientY 返回当事件被触发时,鼠标指针的垂直坐标。
ctrlKey 返回当事件被触发时,"CTRL" 键是否被按下。
metaKey 返回当事件被触发时,"meta" 键是否被按下。
relatedTarget 返回与事件的目标节点相关的节点。
screenX 返回当某个事件被触发时,鼠标指针的水平坐标。
screenY 返回当某个事件被触发时,鼠标指针的垂直坐标。
shiftKey 返回当事件被触发时,"SHIFT" 键是否被按下。

IE 属性
除了上面的鼠标/事件属性,IE 浏览器还支持下面的属性:

属性 描述
cancelBubble 如果事件句柄想阻止事件传播到包容对象,必须把该属性设为 true。
fromElement 对于 mouseover 和 mouseout 事件,fromElement 引用移出鼠标的元素。
keyCode 对于 keypress 事件,该属性声明了被敲击的键生成的 Unicode 字符码。对于 keydown 和 keyup 事件,它指定了被敲击的键的虚拟键盘码。虚拟键盘码可能和使用的键盘的布局相关。
offsetX,offsetY 发生事件的地点在事件源元素的坐标系统中的 x 坐标和 y 坐标。
returnValue 如果设置了该属性,它的值比事件句柄的返回值优先级高。把这个属性设置为 fasle,可以取消发生事件的源元素的默认动作。
srcElement 对于生成事件的 Window 对象、Document 对象或 Element 对象的引用。
toElement 对于 mouseover 和 mouseout 事件,该属性引用移入鼠标的元素。
x,y 事件发生的位置的 x 坐标和 y 坐标,它们相对于用CSS动态定位的最内层包容元素。

标准 Event 属性
下面列出了 2 级 DOM 事件标准定义的属性。

属性 描述
bubbles 返回布尔值,指示事件是否是起泡事件类型。
cancelable 返回布尔值,指示事件是否可拥可取消的默认动作。
currentTarget 返回其事件监听器触发该事件的元素。
eventPhase 返回事件传播的当前阶段。
target 返回触发此事件的元素(事件的目标节点)。
timeStamp 返回事件生成的日期和时间。
type 返回当前 Event 对象表示的事件的名称。

标准 Event 方法
下面列出了 2 级 DOM 事件标准定义的方法。IE 的事件模型不支持这些方法:

方法 描述
initEvent() 初始化新创建的 Event 对象的属性。
preventDefault() 通知浏览器不要执行与事件关联的默认动作。
stopPropagation() 不再派发事件。

五、添加和删除HTML 节点

在 HTML DOM 中,所有事物都是节点。DOM 是被视为节点树的 HTML。
根据 W3C 的 HTML DOM 标准,HTML 文档中的所有内容都是节点:
整个文档是一个文档节点
每个 HTML 元素是元素节点
HTML 元素内的文本是文本节点
每个 HTML 属性是属性节点
注释是注释节点

HTML DOM 将 HTML 文档视作树结构。这种结构被称为节点树:


四、JavaScript HTML DOM_第2张图片
节点树

通过 HTML DOM,树中的所有节点均可通过 JavaScript 进行访问。所有 HTML 元素(节点)均可被修改,也可以创建或删除节点。

节点父、子和同胞
节点树中的节点彼此拥有层级关系。

父(parent)、子(child)和同胞(sibling)等术语用于描述这些关系。父节点拥有子节点。同级的子节点被称为同胞(兄弟或姐妹)。

在节点树中,顶端节点被称为根(root)
每个节点都有父节点、除了根(它没有父节点)
一个节点可拥有任意数量的子
同胞是拥有相同父节点的节点
下面的图片展示了节点树的一部分,以及节点之间的关系:


四、JavaScript HTML DOM_第3张图片
节点之间的关系

请看下面的 HTML 片段:


  
    DOM 教程
  
  
    

DOM 第一课

Hello world!

从上面的 HTML 中:

  • 节点没有父节点;它是根节点
  • 和 的父节点是 节点
  • 文本节点 "Hello world!" 的父节点是

    节点
    并且:

  • 节点拥有两个子节点: 和
  • 节点拥有一个子节点: 节点</li> <li><title> 节点也拥有一个子节点:文本节点 "DOM 教程"</li> <li><h1> 和 <p> 节点是同胞节点,同时也是 <body> 的子节点<br> 并且:</li> <li><head> 元素是 <html> 元素的首个子节点</li> <li><body> 元素是 <html> 元素的最后一个子节点</li> <li><h1> 元素是 <body> 元素的首个子节点</li> <li><p> 元素是 <body> 元素的最后一个子节点</li> </ul> <p><strong>创建新的 HTML 节点</strong><br> 如需向 HTML DOM 添加新元素,您必须首先创建该元素(元素节点),然后向一个已存在的元素追加该元素。<br> 实例</p> <pre><code><div id="div1"> <p id="p1">这是一个段落</p> <p id="p2">这是另一个段落</p> </div> <script> var para=document.createElement("p"); var node=document.createTextNode("这是新段落。"); para.appendChild(node); var element=document.getElementById("div1"); element.appendChild(para); </script> </code></pre> <p>例子解释:<br> 这段代码创建新的 <p> 元素:<br> var para=document.createElement("p");</p> <p>如需向 <p> 元素添加文本,您必须首先创建文本节点。这段代码创建了一个文本节点:<br> var node=document.createTextNode("这是新段落。");</p> <p>然后您必须向 <p> 元素追加这个文本节点:<br> para.appendChild(node);</p> <p>最后您必须向一个已有的元素追加这个新元素。<br> 这段代码找到一个已有的元素:<br> var element=document.getElementById("div1");<br> 这段代码向这个已有的元素追加新元素:<br> element.appendChild(para);</p> <p><strong>删除已有的 HTML 节点</strong><br> 如需删除 HTML 元素,您必须首先获得该元素的父元素:</p> <p>实例</p> <pre><code><div id="div1"> <p id="p1">这是一个段落。</p> <p id="p2">这是另一个段落。</p> </div> <script> var parent=document.getElementById("div1"); var child=document.getElementById("p1"); parent.removeChild(child); </script> </code></pre> <p>例子解释:</p> <p>这个 HTML 文档含有拥有两个子节点(两个 <p> 元素)的 <div> 元素:<br> <div id="div1"><br> <p id="p1">这是一个段落。</p><br> <p id="p2">这是另一个段落。</p><br> </div></p> <p>找到 id="div1" 的元素:<br> var parent=document.getElementById("div1");<br> 找到 id="p1" 的 <p> 元素:<br> var child=document.getElementById("p1");</p> <p>从父元素中删除子元素:<br> parent.removeChild(child);<br> 提示:如果能够在不引用父元素的情况下删除某个元素,就太好了。</p> <p>不过很遗憾。DOM 需要清楚您需要删除的元素,以及它的父元素。<br> 这是常用的解决方案:找到您希望删除的子元素,然后使用其 parentNode 属性来找到父元素:<br> var child=document.getElementById("p1");<br> child.parentNode.removeChild(child);</p> <p><strong>HTML DOM 节点列表</strong><br> getElementsByTagName() 方法返回节点列表。节点列表是一个节点数组。<br> 下面的代码选取文档中的所有 <p> 节点:<br> 实例<br> var x=document.getElementsByTagName("p");<br> 可以通过下标号访问这些节点。如需访问第二个 <p>,您可以这么写:<br> y=x[1];<br> 注释:下标号从 0 开始。</p> <p>length 属性定义节点列表中节点的数量。<br> 您可以使用 length 属性来循环节点列表。<br> 实例:获取所有 <p> 元素节点,输出每个 <p> 元素的文本节点的值</p> <pre><code>x=document.getElementsByTagName("p"); for (i=0;i<x.length;i++) { document.write(x[i].innerHTML); document.write("<br />"); } </code></pre> <p><strong>导航节点关系</strong><br> 您能够使用三个节点属性:parentNode、firstChild 以及 lastChild ,在文档结构中进行导航。</p> <p>请看下面的 HTML 片段:</p> <pre><code><html> <body> <p>Hello World!</p> <div> <p>DOM 很有用!</p> <p>本例演示节点关系。</p> </div> </body> </html> </code></pre> <ul> <li>首个 <p> 元素是 <body> 元素的首个子元素(firstChild)</li> <li><div> 元素是 <body> 元素的最后一个子元素(lastChild)</li> <li><body> 元素是首个 <p> 元素和 <div> 元素的父节点(parentNode)</li> </ul> <p>firstChild 属性可用于访问元素的文本:</p> <pre><code><html> <body> <p id="intro">Hello World!</p> <script> x=document.getElementById("intro"); document.write(x.firstChild.nodeValue); </script> </body> </html> </code></pre> <p><strong>DOM 根节点</strong><br> 这里有两个特殊的属性,可以访问全部文档:</p> <ul> <li>document.documentElement - 全部文档</li> <li>document.body - 文档的主体</li> </ul> <pre><code><html> <body> <p>Hello World!</p> <div> <p>DOM 很有用!</p> <p>本例演示 <b>document.body</b> 属性。</p> </div> <script> alert(document.body.innerHTML); </script> </body> </html> </code></pre> <p><strong>childNodes 和 nodeValue</strong><br> 除了 innerHTML 属性,您也可以使用 childNodes 和 nodeValue 属性来获取元素的内容。</p> <p>下面的代码获取 id="intro" 的 <p> 元素的值:</p> <pre><code><html> <body> <p id="intro">Hello World!</p> <script> var txt=document.getElementById("intro").childNodes[0].nodeValue; document.write(txt); </script> </body> </html> </code></pre> <h3>六、JavaScript HTML DOM常用方法</h3> <table> <thead> <tr> <th>方法</th> <th>描述</th> </tr> </thead> <tbody> <tr> <td>getElementById()</td> <td>返回带有指定 ID 的元素。</td> </tr> <tr> <td>getElementsByTagName()</td> <td>返回包含带有指定标签名称的所有元素的节点列表(集合/节点数组)。</td> </tr> <tr> <td>getElementsByClassName()</td> <td>返回包含带有指定类名的所有元素的节点列表。</td> </tr> <tr> <td>appendChild()</td> <td>把新的子节点添加到指定节点。</td> </tr> <tr> <td>removeChild()</td> <td>删除子节点。</td> </tr> <tr> <td>replaceChild()</td> <td>替换子节点。</td> </tr> <tr> <td>insertBefore()</td> <td>在指定的子节点前面插入新的子节点。</td> </tr> <tr> <td>createAttribute()</td> <td>创建属性节点。</td> </tr> <tr> <td>createElement()</td> <td>创建元素节点。</td> </tr> <tr> <td>createTextNode()</td> <td>创建文本节点。</td> </tr> <tr> <td>getAttribute()</td> <td>返回指定的属性值。</td> </tr> <tr> <td>setAttribute()</td> <td>把指定属性设置或修改为指定的值。</td> </tr> </tbody> </table> <h3>七、HTML DOM 属性</h3> <p>属性是节点(HTML 元素)的值,您能够获取或设置。</p> <p>可通过 JavaScript (以及其他编程语言)对 HTML DOM 进行访问。<br> 所有 HTML 元素被定义为对象,而编程接口则是对象方法和对象属性。<br> 方法是您能够执行的动作(比如添加或修改元素)。<br> 属性是您能够获取或设置的值(比如节点的名称或内容)。</p> <ul> <li><p>innerHTML 属性<br> 获取元素内容的最简单方法是使用 innerHTML 属性。<br> innerHTML 属性对于获取或替换 HTML 元素的内容很有用。</p></li> <li><p>nodeName 属性<br> nodeName 属性规定节点的名称。<br> nodeName 是只读的<br> 元素节点的 nodeName 与标签名相同<br> 属性节点的 nodeName 与属性名相同<br> 文本节点的 nodeName 始终是 #text<br> 文档节点的 nodeName 始终是 #document<br> 注释:nodeName 始终包含 HTML 元素的大写字母标签名。</p></li> <li><p>nodeValue 属性<br> nodeValue 属性规定节点的值。<br> 元素节点的 nodeValue 是 undefined 或 null<br> 文本节点的 nodeValue 是文本本身<br> 属性节点的 nodeValue 是属性值</p></li> <li><p>nodeType 属性<br> nodeType 属性返回节点的类型。nodeType 是只读的。<br> 比较重要的节点类型有:</p></li> </ul> <table> <thead> <tr> <th>元素类型</th> <th>NodeType</th> </tr> </thead> <tbody> <tr> <td>元素</td> <td>1</td> </tr> <tr> <td>属性</td> <td>2</td> </tr> <tr> <td>文本</td> <td>3</td> </tr> <tr> <td>注释</td> <td>8</td> </tr> <tr> <td>文档</td> <td>9</td> </tr> </tbody> </table> </article> </div> </div> </div> <!--PC和WAP自适应版--> <div id="SOHUCS" sid="1289104210213806080"></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">你可能感兴趣的:(四、JavaScript HTML DOM)</h4> <div id="paradigm-article-related"> <div class="recommend-post mb30"> <ul class="widget-links"> <li><a href="/article/1881346359013994496.htm" title="Vue.js 的组合式 API 与状态管理" target="_blank">Vue.js 的组合式 API 与状态管理</a> <span class="text-muted"></span> <div>随着现代前端开发的不断发展,Vue.js作为一个渐进式JavaScript框架,已经成为开发动态和交互式用户界面的流行选择之一。Vue.js的设计旨在通过简洁的语法和强大的功能来提升开发者的生产力。在Vue3中引入的组合式API(CompositionAPI)及其状态管理功能,为开发者提供了一种灵活且可扩展的方式来构建复杂的应用程序。本文将深入探讨Vue.js的组合式API,并结合状态管理的概念,</div> </li> <li><a href="/article/1881345848982433792.htm" title="2024年美国App Store下载榜单:AI代码生成器助力Temu蝉联冠军背后的秘密" target="_blank">2024年美国App Store下载榜单:AI代码生成器助力Temu蝉联冠军背后的秘密</a> <span class="text-muted"></span> <a class="tag" taget="_blank" href="/search/%E5%89%8D%E7%AB%AF/1.htm">前端</a> <div>2024年美国区AppStore下载榜单揭晓,Temu再次蝉联免费应用下载榜冠军,这已经是它连续两年取得的辉煌成就!紧随其后的是Threads和TikTok,而ChatGPT更是以黑马之姿超越Google,位列第四。这份榜单不仅反映了美国用户的应用偏好,更折射出2024年移动应用市场的几大关键趋势。本文将深入分析Temu、Threads、ChatGPT等热门应用的成功秘诀,并探讨未来AppStor</div> </li> <li><a href="/article/1881345737116151808.htm" title="JavaScript 运算符详解:各类运算符及优先级。" target="_blank">JavaScript 运算符详解:各类运算符及优先级。</a> <span class="text-muted">前端基地</span> <a class="tag" taget="_blank" href="/search/javascript/1.htm">javascript</a><a class="tag" taget="_blank" href="/search/%E8%BF%90%E7%AE%97%E7%AC%A6%E4%BC%98%E5%85%88%E7%BA%A7/1.htm">运算符优先级</a><a class="tag" taget="_blank" href="/search/%E7%AE%97%E6%95%B0%E8%BF%90%E7%AE%97%E7%AC%A6/1.htm">算数运算符</a><a class="tag" taget="_blank" href="/search/%E9%80%BB%E8%BE%91%E8%BF%90%E7%AE%97%E7%AC%A6/1.htm">逻辑运算符</a><a class="tag" taget="_blank" href="/search/%E4%B8%80%E5%85%83%E8%BF%90%E7%AE%97%E7%AC%A6/1.htm">一元运算符</a><a class="tag" taget="_blank" href="/search/%E6%AF%94%E8%BE%83%E8%BF%90%E7%AE%97%E7%AC%A6/1.htm">比较运算符</a><a class="tag" taget="_blank" href="/search/%E8%B5%8B%E5%80%BC%E8%BF%90%E7%AE%97%E7%AC%A6/1.htm">赋值运算符</a> <div>目录非VIP用户可前往公众号“前端基地”进行免费阅读运算符介绍运算符优先级算数运算符赋值运算符比较运算符逻辑运算符介绍a&&b和a||b一元运算符非VIP用户可前往公众号“前端基地”进行免费阅读运算符介绍以下是各类运算符的详细介绍:运算符描述算术运算符加(+)、减(-)、乘(*)、除(/)、求余数并保留整数(%)、累加(++)、递减(--)赋值运算符=、+=(num+=5等同于num=num+5)</div> </li> <li><a href="/article/1881333118611288064.htm" title="你不知道的javascript-13(var的接替者let与const)" target="_blank">你不知道的javascript-13(var的接替者let与const)</a> <span class="text-muted">我爱学习_zwj</span> <a class="tag" taget="_blank" href="/search/%E4%BD%A0%E4%B8%8D%E7%9F%A5%E9%81%93%E7%9A%84javascript/1.htm">你不知道的javascript</a><a class="tag" taget="_blank" href="/search/javascript/1.htm">javascript</a><a class="tag" taget="_blank" href="/search/%E5%89%8D%E7%AB%AF/1.htm">前端</a><a class="tag" taget="_blank" href="/search/%E5%BC%80%E5%8F%91%E8%AF%AD%E8%A8%80/1.htm">开发语言</a><a class="tag" taget="_blank" href="/search/%E9%9D%A2%E8%AF%95/1.htm">面试</a> <div>1.let与const的基本使用在ES5中我们声明变量都是使用的var(variable)关键字,从ES6开始新增了两个关键字可以声明变量:let、constlet、const在其他编程语言中都是有的,所以也并不是新鲜的关键字但是let、const确确实实给JavaScript带来一些不一样的东西从使用角度来说,只是在原有基础上换一个名字而已,使用的位置和方式是一样的varname='zs'let</div> </li> <li><a href="/article/1881325809973653504.htm" title="177.累加和校验" target="_blank">177.累加和校验</a> <span class="text-muted">Reigrow</span> <a class="tag" taget="_blank" href="/search/xdoj/1.htm">xdoj</a> <div>问题描述数据传输中一种常见的校验方式是累加和校验。其实现方式是在一次通讯数据包的最后加入一个字节的校验数据。这个校验字节内容为前面数据包中所有数据按字节累加所得结果的最后一个字节。例如:要传输的信息为:TEST(ASCII码为0x54,0x45,0x53,0x54)四个字节的累加和为:0x54+0x45+0x53+0x54=0x140校验和为累加和的最后一个字节,即0x40,也就是十进制的64现在</div> </li> <li><a href="/article/1881323787211829248.htm" title="国产海光CPU平台兼容性指南-基础软件分册-20231013(附各系统下载链接)" target="_blank">国产海光CPU平台兼容性指南-基础软件分册-20231013(附各系统下载链接)</a> <span class="text-muted">技术瘾君子1573</span> <a class="tag" taget="_blank" href="/search/%E6%9C%8D%E5%8A%A1%E5%99%A8%26amp%3B%E5%AD%98%E5%82%A8/1.htm">服务器&存储</a><a class="tag" taget="_blank" href="/search/%E6%9C%8D%E5%8A%A1%E5%99%A8/1.htm">服务器</a><a class="tag" taget="_blank" href="/search/%E5%85%BC%E5%AE%B9%E5%88%97%E8%A1%A8/1.htm">兼容列表</a><a class="tag" taget="_blank" href="/search/%E6%B5%B7%E5%85%89/1.htm">海光</a><a class="tag" taget="_blank" href="/search/CPU/1.htm">CPU</a><a class="tag" taget="_blank" href="/search/%E4%BA%91%E8%AE%A1%E7%AE%97/1.htm">云计算</a><a class="tag" taget="_blank" href="/search/%E5%A4%A7%E6%95%B0%E6%8D%AE/1.htm">大数据</a><a class="tag" taget="_blank" href="/search/%E6%93%8D%E4%BD%9C%E7%B3%BB%E7%BB%9F/1.htm">操作系统</a> <div>目录声明一、操作系统二、虚拟化和云2.1虚拟化和云2.2虚拟机上的操作系统2.2.1VMwarevSphere上的虚拟机操作系统2.2.2KVM上的虚拟机操作系统2.2.3WindowsHyper-V上的虚拟机操作系统2.2.4VirtualBox上的虚拟机操作系统三、分布式存储四、数据库五、中间件六、大数据七、平台组件7.1云平台7.2大数据平台7.3人工智能平台7.4科学与工程计算平台八、其它</div> </li> <li><a href="/article/1881322653764087808.htm" title="四大.NET ORM框架深度对比:EF Core、SqlSugar、FreeSql与Dapper的性能、功能与适用场景" target="_blank">四大.NET ORM框架深度对比:EF Core、SqlSugar、FreeSql与Dapper的性能、功能与适用场景</a> <span class="text-muted">m0_74823983</span> <a class="tag" taget="_blank" href="/search/.net/1.htm">.net</a> <div>在对比EntityFrameworkCore(EFCore)、SqlSugar、FreeSql和Dapper这四种常用的.NETORM框架时,我们可以从多个维度进行详细的梳理和总结。以下是对这些框架的对比,包括应用场景、优势、劣势,并尝试通过表格形式展示关键数据(尽管ORM框架的对比通常难以直接量化到具体的数据点,但我会尽量通过描述性信息来呈现)。ORM框架对比总结框架名称应用场景优势劣势EFCo</div> </li> <li><a href="/article/1881322527129661440.htm" title="一文搞定postgreSQL" target="_blank">一文搞定postgreSQL</a> <span class="text-muted">m0_74823595</span> <a class="tag" taget="_blank" href="/search/postgresql/1.htm">postgresql</a><a class="tag" taget="_blank" href="/search/%E6%95%B0%E6%8D%AE%E5%BA%93/1.htm">数据库</a> <div>一文搞定postgreSQLPostgreSQL全面指南一、什么是PostgreSQL?二、PostgreSQL的核心概念三、安装PostgreSQL1.在Linux上安装(例如Ubuntu)2.在macOS上安装(使用Homebrew)3.在Windows上安装四、基本操作1.启动和停止PostgreSQL服务2.连接到PostgreSQL3.创建数据库和用户4.基本SQL操作五、高级功能1.事</div> </li> <li><a href="/article/1881316597990223872.htm" title="Apache2 搭建 WebDAV 服务器" target="_blank">Apache2 搭建 WebDAV 服务器</a> <span class="text-muted">cnlenglan</span> <a class="tag" taget="_blank" href="/search/apache/1.htm">apache</a> <div>Apache2搭建WebDAV服务器本文本参考了https://blog.csdn.net/fengchao_2009/article/details/7531856https://www.cnblogs.com/anArtist/articles/5462951.html最近使用unRaid安装了Webdav,考虑到本人不熟悉Linux系统以及这个unRaid就准备放弃使用该系统。查询资料发现W</div> </li> <li><a href="/article/1881311807231029248.htm" title="JavaScript的那些不可不知的知识" target="_blank">JavaScript的那些不可不知的知识</a> <span class="text-muted">遇见~未来</span> <a class="tag" taget="_blank" href="/search/JavaScript/1.htm">JavaScript</a><a class="tag" taget="_blank" href="/search/javascript/1.htm">javascript</a><a class="tag" taget="_blank" href="/search/%E5%BC%80%E5%8F%91%E8%AF%AD%E8%A8%80/1.htm">开发语言</a><a class="tag" taget="_blank" href="/search/ecmascript/1.htm">ecmascript</a> <div>目录JavaScript基础JavaScript高级JavaScript基础数据类型:JavaScript的数据类型分为基本数据类型和引用数据类型。基本数据类型包含number(数字)、string(字符串)、boolean(布尔值)、null(空值)、undefined(未定义)。而像array(数组)、function(函数)等则属于引用数据类型。在内存存储方面,基本类型是按值存储在栈中,引用</div> </li> <li><a href="/article/1881308270820388864.htm" title="数据复制二(多主复制详解)" target="_blank">数据复制二(多主复制详解)</a> <span class="text-muted">风清扬-独孤九剑</span> <a class="tag" taget="_blank" href="/search/mysql/1.htm">mysql</a><a class="tag" taget="_blank" href="/search/%E5%A4%9A%E6%B4%BB/1.htm">多活</a><a class="tag" taget="_blank" href="/search/%E5%A4%9A%E4%B8%BB/1.htm">多主</a><a class="tag" taget="_blank" href="/search/%E5%A4%9A%E6%95%B0%E6%8D%AE%E4%B8%AD%E5%BF%83/1.htm">多数据中心</a> <div>目录一、多主复制二、多主复制常用的场景三、多主复制处理写冲突四、自定义冲突解决一、多主复制在上一篇文章谈到了主从复制,对于一个超大规模应用,主从往往是不够用的。还需要多个数据中心,这些数据中心可能部署的全球的任何一个位置。每个数据中心都是主从配置,数据中心的主节点对于其他数据中心来说就是从节点。一个数据中心数据发生变化,异步同步到其他的数据中心的主节点。为了容忍整个数据中心级别故障或者更接近用户,</div> </li> <li><a href="/article/1881308262775713792.htm" title="数据复制一(主从复制详解)" target="_blank">数据复制一(主从复制详解)</a> <span class="text-muted">风清扬-独孤九剑</span> <a class="tag" taget="_blank" href="/search/mysql/1.htm">mysql</a><a class="tag" taget="_blank" href="/search/%E6%95%B0%E6%8D%AE%E5%A4%8D%E5%88%B6/1.htm">数据复制</a><a class="tag" taget="_blank" href="/search/%E4%B8%BB%E4%BB%8E%E5%A4%8D%E5%88%B6/1.htm">主从复制</a> <div>目录一、主从复制二、同步复制和异步复制三、节点失效处理方案四、复制日志的实现五、复制滞后问题读自己的写单调读前缀一致读数据复制就是相同的数据在多台机器上传输,多台机器可以在一个机房也不可以跨区域。通过数据复制有以下好处:降低访问延迟(数据复制到离用户更近的地方)、当机器出现故障时,可以切换到副本机器,从而提高可用性、多台机器可以同时提供服务,从而提高吞吐量。现在计算机技术来说数据复制就几种方法:主</div> </li> <li><a href="/article/1881304856182976512.htm" title="python多进程编程实例_Python多进程编程multiprocessing代码实例" target="_blank">python多进程编程实例_Python多进程编程multiprocessing代码实例</a> <span class="text-muted">weixin_39791386</span> <a class="tag" taget="_blank" href="/search/python%E5%A4%9A%E8%BF%9B%E7%A8%8B%E7%BC%96%E7%A8%8B%E5%AE%9E%E4%BE%8B/1.htm">python多进程编程实例</a> <div>在多线程与多进程的比较这一篇中记录了多进程编程的一种方式.下面记录一下多进程编程的别一种方式,即使用multiprocessing编程importmultiprocessingimporttimedefget_html(n):time.sleep(n)print('subprocess%s'%n)returnnif__name__=='__main__':#多进程编程process=multipr</div> </li> <li><a href="/article/1881300439362760704.htm" title="《中型 Vue 项目:挑战与成长》" target="_blank">《中型 Vue 项目:挑战与成长》</a> <span class="text-muted">计算机毕设定制辅导-无忧学长</span> <a class="tag" taget="_blank" href="/search/%23/1.htm">#</a><a class="tag" taget="_blank" href="/search/Vue/1.htm">Vue</a><a class="tag" taget="_blank" href="/search/vue.js/1.htm">vue.js</a><a class="tag" taget="_blank" href="/search/flutter/1.htm">flutter</a><a class="tag" taget="_blank" href="/search/%E5%89%8D%E7%AB%AF/1.htm">前端</a> <div>一、引言在当今的前端开发领域,Vue作为一款渐进式JavaScript框架,以其强大的功能和灵活性备受开发者青睐。对于中型Vue项目而言,其重要性不言而喻。中型Vue项目通常在功能复杂度和规模上介于小型项目和大型项目之间,既需要应对一定的业务需求挑战,又要考虑开发效率和可维护性。中型Vue项目面临着诸多挑战与机遇。挑战方面,随着项目规模的扩大,代码的复杂性增加,如何进行有效的状态管理、组件化开发以</div> </li> <li><a href="/article/1881299427663081472.htm" title="npm介绍" target="_blank">npm介绍</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/js/1.htm">js</a><a class="tag" taget="_blank" href="/search/npm/1.htm">npm</a><a class="tag" taget="_blank" href="/search/%E5%89%8D%E7%AB%AF/1.htm">前端</a><a class="tag" taget="_blank" href="/search/node.js/1.htm">node.js</a> <div>npm(NodePackageManager)是Node.js的默认包管理工具,用于管理JavaScript和Node.js项目的依赖关系。它既是一个包管理工具,又是一个在线仓库,开发者可以通过它分享和下载开源的JavaScript库和工具。npm是世界上最大的开源软件注册表,托管着超过一百万个包。主要功能和特点1.包管理npm的核心功能是管理依赖包。它允许开发者方便地安装、更新和删除项目中的依赖</div> </li> <li><a href="/article/1881297279973912576.htm" title="httpslocalhostindex 配置的nginx,一刷新就报404了" target="_blank">httpslocalhostindex 配置的nginx,一刷新就报404了</a> <span class="text-muted">m0_74824112</span> <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> <div>当你的Nginx配置导致页面刷新时报404错误时,通常是由于以下几个原因造成的:静态文件路径配置错误:Nginx没有正确地指向静态文件的目录。前端路由问题:如果是SPA(单页应用),刷新页面时Nginx没有正确地将请求重定向到入口文件(如index.html)。反向代理配置错误:如果Nginx作为反向代理,后端服务可能没有正确处理请求。检查和解决步骤1.检查静态文件路径配置确保Nginx配置文件中</div> </li> <li><a href="/article/1881295390129582080.htm" title="通过python代码实现向钉钉群内自动推送消息,详细步骤及代码,超实用教学!!!" target="_blank">通过python代码实现向钉钉群内自动推送消息,详细步骤及代码,超实用教学!!!</a> <span class="text-muted">盲敲代码的阿豪</span> <a class="tag" taget="_blank" href="/search/python%E5%AE%9E%E7%94%A8%E7%9F%A5%E8%AF%86%E7%82%B9/1.htm">python实用知识点</a><a class="tag" taget="_blank" href="/search/python/1.htm">python</a><a class="tag" taget="_blank" href="/search/%E9%92%89%E9%92%89/1.htm">钉钉</a><a class="tag" taget="_blank" href="/search/%E8%87%AA%E5%8A%A8%E5%8C%96%E5%8F%91%E6%B6%88%E6%81%AF/1.htm">自动化发消息</a> <div>文章目录前言一、创建钉钉群机器人二、以文本格式发送信息三、以MarkDown格式发送信息四、以Link格式发送信息前言我们在使用钉钉时,通常会创建或加入多个群聊,身为群聊的管理者,当我们需要及时、并按时的向这些群聊推送一些固定信息,若通过人力来解决肯定非常耗时、耗力,这时我们就可以考虑开发一个自动化脚本来实现这个功能,本篇文章我将教会大家,如何使用python开发程序,实现向钉钉群内自动发送消息。</div> </li> <li><a href="/article/1881289205112434688.htm" title="【YashanDB知识库】关于表空间压缩" target="_blank">【YashanDB知识库】关于表空间压缩</a> <span class="text-muted"></span> <a class="tag" taget="_blank" href="/search/%E6%95%B0%E6%8D%AE%E5%BA%93/1.htm">数据库</a> <div>本文内容来自YashanDB官网,原文内容请见https://www.yashandb.com/newsinfo/7106886.html?templateId=171...实现方法1、YashanDB的表空间压缩通过文件打洞(HolePunching)实现。2、“文件打洞”简单地说,如果文件中有连续字节0x00出现,只需要记录0字节数据块开始出现位置和块长度,而不需要实际保存原数据块。3、表空间</div> </li> <li><a href="/article/1881289200955879424.htm" title="HTML<form>标签" target="_blank">HTML<form>标签</a> <span class="text-muted">新生派</span> <a class="tag" taget="_blank" href="/search/html/1.htm">html</a><a class="tag" taget="_blank" href="/search/%E5%89%8D%E7%AB%AF/1.htm">前端</a><a class="tag" taget="_blank" href="/search/javascript/1.htm">javascript</a> <div>例子具有两个输入字段和一个提交按钮的HTML表单:Firstname:Lastname:下面有更多“自己尝试”的示例。定义和用法标签用于创建供用户输入的HTML表单。元素可以包含下列一个或多个表单元素:浏览器支持属性全局属性标签支持HTML中的全局属性。事件属性标签支持HTML中的事件属性。更多示例例子带有复选框的HTML表单:IhaveabikeIhaveacarIhaveaboat例子带有单选</div> </li> <li><a href="/article/1881288571218882560.htm" title="HTML<blockquote>标签" target="_blank">HTML<blockquote>标签</a> <span class="text-muted">新生派</span> <a class="tag" taget="_blank" href="/search/html/1.htm">html</a><a class="tag" taget="_blank" href="/search/%E5%89%8D%E7%AB%AF/1.htm">前端</a> <div>例子引用自其他来源的部分:For50years,WWFhasbeenprotectingthefutureofnature.Theworld'sleadingconservationorganization,WWFworksin100countriesandissupportedby1.2millionmembersintheUnitedStatesandcloseto5millionglobal</div> </li> <li><a href="/article/1881288193186263040.htm" title="HTML<!DOCTYPE>声明" target="_blank">HTML<!DOCTYPE>声明</a> <span class="text-muted">新生派</span> <a class="tag" taget="_blank" href="/search/html/1.htm">html</a><a class="tag" taget="_blank" href="/search/%E5%89%8D%E7%AB%AF/1.htm">前端</a><a class="tag" taget="_blank" href="/search/javascript/1.htm">javascript</a> <div>例子TitleofthedocumentThecontentofthedocument......定义和用法所有HTML文档都必须以声明开始。声明不是HTML标签。它是向浏览器提供的有关预期文档类型的“信息”。在HTML5中,声明很简单:浏览器支持较旧的HTML文档在较旧的文档(HTML4或XHTML)中,声明更为复杂,因为声明必须引用DTD(文档类型定义)。HTML4.01:XHTML1.1:提</div> </li> <li><a href="/article/1881288067185176576.htm" title="深度解析 React 合成事件:机制、作用及与 Vue 事件机制的对比" target="_blank">深度解析 React 合成事件:机制、作用及与 Vue 事件机制的对比</a> <span class="text-muted"></span> <a class="tag" taget="_blank" href="/search/%E5%89%8D%E7%AB%AFvue.jsreact/1.htm">前端vue.jsreact</a> <div>在前端开发领域,React与Vue作为两款备受瞩目的框架,凭借独特的设计理念和技术架构,为开发者打造出截然不同的开发体验。React的合成事件是其核心亮点之一,Vue则采用了别具一格的事件处理机制,二者的差异背后蕴藏着多方面的考量。一、React合成事件的底层剖析(一)事件创建与封装细节当DOM事件触发,React会第一时间在内部事件池中检索对应的合成事件实例。若未找到,便依据原生事件类型,像cl</div> </li> <li><a href="/article/1881282243914166272.htm" title="AI时代的前端开发:技能提升与职业发展之路" target="_blank">AI时代的前端开发:技能提升与职业发展之路</a> <span class="text-muted"></span> <a class="tag" taget="_blank" href="/search/%E5%89%8D%E7%AB%AF/1.htm">前端</a> <div>在瞬息万变的科技时代,个人职业发展的重要性日益凸显。提升技能,不断学习,已经不再是锦上添花,而是立足之本,是我们在竞争激烈的职场中脱颖而出的关键。而人工智能(AI)技术的快速发展,为我们提供了前所未有的机遇,特别是对于前端开发领域,AI正以前所未有的速度改变着我们的工作方式和学习方式。AI赋能前端开发:个性化学习路径前端开发领域的技术栈庞大而复杂,涵盖HTML、CSS、JavaScript、各种框</div> </li> <li><a href="/article/1881280633116880896.htm" title="HTML<img>标签" target="_blank">HTML<img>标签</a> <span class="text-muted">新生派</span> <a class="tag" taget="_blank" href="/search/html/1.htm">html</a><a class="tag" taget="_blank" href="/search/%E5%89%8D%E7%AB%AF/1.htm">前端</a> <div>例子如何插入图片:下面有更多“自己尝试”的示例。定义和用法该标签用于在HTML页面中嵌入图像。从技术上讲,图像并非插入网页;图像链接到网页。标签为引用的图像创建了一个保存空间。该标签具有两个必需属性:src——指定图像的路径alt-如果图像由于某种原因无法显示,则指定图像的替代文本注意:另外,请务必指定图像的宽度和高度。如果未指定宽度和高度,则图像加载时页面可能会闪烁。提示:要将图像链接到另一个文</div> </li> <li><a href="/article/1881280506755084288.htm" title="为AI聊天工具添加一个知识系统 之54 为事务处理 设计 基于DDD的一个 AI操作系统 来处理维度" target="_blank">为AI聊天工具添加一个知识系统 之54 为事务处理 设计 基于DDD的一个 AI操作系统 来处理维度</a> <span class="text-muted">一水鉴天</span> <a class="tag" taget="_blank" href="/search/%E4%BA%BA%E5%B7%A5%E8%AF%AD%E8%A8%80/1.htm">人工语言</a><a class="tag" taget="_blank" href="/search/%E8%BD%AF%E4%BB%B6%E6%99%BA%E8%83%BD/1.htm">软件智能</a><a class="tag" taget="_blank" href="/search/%E6%99%BA%E8%83%BD%E5%88%B6%E9%80%A0/1.htm">智能制造</a><a class="tag" taget="_blank" href="/search/%E5%A4%A7%E6%95%B0%E6%8D%AE/1.htm">大数据</a><a class="tag" taget="_blank" href="/search/%E5%BC%80%E5%8F%91%E8%AF%AD%E8%A8%80/1.htm">开发语言</a> <div>本文要点要点Architecture程序它被设计为一个双面神结构的控制器,它的两侧一侧编译执行另一侧解释执行,自已则是一个翻译器--通过提供两个不同取向之间的结构映射的显示器(带图形用户接口GUI和命令行接口CLI两种接口)。一个Architecture模型(表面模型接口类)一个Architecture模型采用“本”“迹”二分法,对应一个html模板。该模板中提供三个动态区划>>>代表html占位</div> </li> <li><a href="/article/1881280090252308480.htm" title="AscendC从入门到精通系列(四)使用Pybind调用AscendC算子" target="_blank">AscendC从入门到精通系列(四)使用Pybind调用AscendC算子</a> <span class="text-muted"></span> <a class="tag" taget="_blank" href="/search/%E4%BA%BA%E5%B7%A5%E6%99%BA%E8%83%BD%E6%B7%B1%E5%BA%A6%E5%AD%A6%E4%B9%A0/1.htm">人工智能深度学习</a> <div>如果已经通过AscendC编程语言实现了算子,那该如何通过pybind进行调用呢?1Pybind调用介绍通过PyTorch框架进行模型的训练、推理时,会调用很多算子进行计算,其中的调用方式与kernel编译流程有关。对于自定义算子工程,需要使用PyTorchAscendAdapter中的OP-Plugin算子插件对功能进行扩展,让torch可以直接调用自定义算子包中的算子,详细内容可以参考PyTo</div> </li> <li><a href="/article/1881261955583373312.htm" title="【2023华为OD-C卷-第三题-跳马】100%通过率(JavaScript&Java&Python&C++)" target="_blank">【2023华为OD-C卷-第三题-跳马】100%通过率(JavaScript&Java&Python&C++)</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/%E5%8D%8E%E4%B8%BAod/1.htm">华为od</a><a class="tag" taget="_blank" href="/search/c%E8%AF%AD%E8%A8%80/1.htm">c语言</a> <div>本题已有网友报告代码100%通过率OJ&答疑服务购买任意专栏,即可私信博主,获取答疑/辅导服务题目描述马是象棋(包括中国象棋和国际象棋)中的棋子,走法是每步直一格再斜一格,即先横着或直着走一格,然后再斜着走一个对角线,可进可退,可越过河界,俗称马走“日”字。给定mmm行n</div> </li> <li><a href="/article/1881255896705724416.htm" title="QWebEngineView之加载html打印PDF" target="_blank">QWebEngineView之加载html打印PDF</a> <span class="text-muted">学习,学习,在学习</span> <a class="tag" taget="_blank" href="/search/%E7%AC%94%E8%AE%B0/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/qt5/1.htm">qt5</a> <div>QWebEngineView通过QWebEngineView加载html文件打印pdf相比自己手动绘制pdf简单的多,制作好对应的html文件,然后Qfile读取html文件模板,替换函数需要替换的value,存成html文件,然后QWebEngineView加载,就直接能够打印成对应格式的pdf了。//读取html文件QFileoutFile(QStringLiteral("C://Users/</div> </li> <li><a href="/article/1881255644527390720.htm" title="Anthropic运维工程师的IT基础设施总结清单(上)" target="_blank">Anthropic运维工程师的IT基础设施总结清单(上)</a> <span class="text-muted">CloudPilotAI</span> <a class="tag" taget="_blank" href="/search/IT%E5%9F%BA%E7%A1%80%E8%AE%BE%E6%96%BD/1.htm">IT基础设施</a><a class="tag" taget="_blank" href="/search/%E8%BF%90%E7%BB%B4/1.htm">运维</a><a class="tag" taget="_blank" href="/search/kubernetes/1.htm">kubernetes</a><a class="tag" taget="_blank" href="/search/%E5%B7%A5%E7%A8%8B%E5%B8%88/1.htm">工程师</a> <div>Karpenter开源地址:https://github.com/kubernetes-sigs/karpenter本文由Anthropic工程师JackLindamood撰写,分享了他之前在一家初创公司中负责IT基础设施的经验,包括从中吸取的教训和一些最佳实践。过去四年里,我负责了一家初创公司的基础设施建设工作。这家公司当时正寻求快速扩大规模。从一开始,我们就做出了一些核心决策,这些决策在过去四</div> </li> <li><a href="/article/1881248333519974400.htm" title="MySQL锁机制" target="_blank">MySQL锁机制</a> <span class="text-muted">ᅟᅠ  ᅟᅠ</span> <a class="tag" taget="_blank" href="/search/MySQL/1.htm">MySQL</a><a class="tag" taget="_blank" href="/search/mysql/1.htm">mysql</a><a class="tag" taget="_blank" href="/search/%E6%95%B0%E6%8D%AE%E5%BA%93/1.htm">数据库</a><a class="tag" taget="_blank" href="/search/java/1.htm">java</a> <div>系列文章目录一、MySQL数据结构选择二、MySQL性能优化explain关键字详解三、MySQL索引优化四、MySQL事务五、MySQL锁机制六、MySQL多版本并发(MVCC)机制文章目录系列文章目录一、MySQL锁机制概述二、悲观锁三、乐观锁四、表锁、行锁、页锁4.1、表锁4.2、行锁4.3、页锁五、读锁、写锁、意向锁5.1、读锁5.2、写锁5.3、意向锁六、间隙锁、临键锁一、MySQL锁机</div> </li> <li><a href="/article/29.htm" title="SQL的各种连接查询" target="_blank">SQL的各种连接查询</a> <span class="text-muted">xieke90</span> <a class="tag" taget="_blank" href="/search/UNION+ALL/1.htm">UNION ALL</a><a class="tag" taget="_blank" href="/search/UNION/1.htm">UNION</a><a class="tag" taget="_blank" href="/search/%E5%A4%96%E8%BF%9E%E6%8E%A5/1.htm">外连接</a><a class="tag" taget="_blank" href="/search/%E5%86%85%E8%BF%9E%E6%8E%A5/1.htm">内连接</a><a class="tag" taget="_blank" href="/search/JOIN/1.htm">JOIN</a> <div>一、内连接   概念:内连接就是使用比较运算符根据每个表共有的列的值匹配两个表中的行。                 内连接(join 或者inner join )       SQL语法:       select * fron</div> </li> <li><a href="/article/156.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/%E7%BB%A7%E6%89%BF/1.htm">继承</a><a class="tag" taget="_blank" href="/search/%E4%BB%A3%E7%90%86/1.htm">代理</a><a class="tag" taget="_blank" href="/search/%E7%BB%84%E5%90%88/1.htm">组合</a><a class="tag" taget="_blank" href="/search/final%E7%B1%BB/1.htm">final类</a> <div>      复用类看着标题都不知道是什么,再加上java编程思想翻译的比价难懂,所以知道现在才看这本软件界的奇书   一:组合语法:就是将对象的引用放到新类中即可     代码:     package com.wj.reuse; /** * * @author Administrator 组</div> </li> <li><a href="/article/283.htm" title="[开源与生态系统]国产CPU的生态系统" target="_blank">[开源与生态系统]国产CPU的生态系统</a> <span class="text-muted">comsci</span> <a class="tag" taget="_blank" href="/search/cpu/1.htm">cpu</a> <div>       计算机要从娃娃抓起...而孩子最喜欢玩游戏....       要让国产CPU在国内市场形成自己的生态系统和产业链,国家和企业就不能够忘记游戏这个非常关键的环节....       投入一些资金和资源,人力和政策,让游</div> </li> <li><a href="/article/410.htm" title="JVM内存区域划分Eden Space、Survivor Space、Tenured Gen,Perm Gen解释" target="_blank">JVM内存区域划分Eden Space、Survivor Space、Tenured Gen,Perm Gen解释</a> <span class="text-muted">商人shang</span> <a class="tag" taget="_blank" href="/search/jvm%E5%86%85%E5%AD%98/1.htm">jvm内存</a> <div>jvm区域总体分两类,heap区和非heap区。heap区又分:Eden Space(伊甸园)、Survivor Space(幸存者区)、Tenured Gen(老年代-养老区)。 非heap区又分:Code Cache(代码缓存区)、Perm Gen(永久代)、Jvm Stack(java虚拟机栈)、Local Method Statck(本地方法栈)。 HotSpot虚拟机GC算法采用分代收</div> </li> <li><a href="/article/537.htm" title="页面上调用 QQ" target="_blank">页面上调用 QQ</a> <span class="text-muted">oloz</span> <a class="tag" taget="_blank" href="/search/qq/1.htm">qq</a> <div><A href="tencent://message/?uin=707321921&amp;Site=有事Q我&amp;Menu=yes">   <img style="border:0px;" src=http://wpa.qq.com/pa?p=1:707321921:1></a></div> </li> <li><a href="/article/664.htm" title="一些问题" target="_blank">一些问题</a> <span class="text-muted">文强chu</span> <a class="tag" taget="_blank" href="/search/%E9%97%AE%E9%A2%98/1.htm">问题</a> <div>1.eclipse 导出 doc  出现“The Javadoc command does not exist.” javadoc command 选择 jdk/bin/javadoc.exe 2.tomcate 配置 web 项目 ..... SQL:3.mysql  * 必须得放前面 否则  select&nbs</div> </li> <li><a href="/article/791.htm" title="生活没有安全感" target="_blank">生活没有安全感</a> <span class="text-muted">小桔子</span> <a class="tag" taget="_blank" href="/search/%E7%94%9F%E6%B4%BB/1.htm">生活</a><a class="tag" taget="_blank" href="/search/%E5%AD%A4%E7%8B%AC/1.htm">孤独</a><a class="tag" taget="_blank" href="/search/%E5%AE%89%E5%85%A8%E6%84%9F/1.htm">安全感</a> <div>       圈子好小,身边朋友没几个,交心的更是少之又少。在深圳,除了男朋友,没几个亲密的人。不知不觉男朋友成了唯一的依靠,毫不夸张的说,业余生活的全部。现在感情好,也很幸福的。但是说不准难免人心会变嘛,不发生什么大家都乐融融,发生什么很难处理。我想说如果不幸被分手(无论原因如何),生活难免变化很大,在深圳,我没交心的朋友。明</div> </li> <li><a href="/article/918.htm" title="php 基础语法" target="_blank">php 基础语法</a> <span class="text-muted">aichenglong</span> <a class="tag" taget="_blank" href="/search/php+%E5%9F%BA%E6%9C%AC%E8%AF%AD%E6%B3%95/1.htm">php 基本语法</a> <div>1 .1 php变量必须以$开头 <?php $a=” b”; echo ?> 1 .2 php基本数据库类型 Integer  float/double Boolean string 1 .3 复合数据类型 数组array和对象 object 1 .4 特殊数据类型  null 资源类型(resource)    $co</div> </li> <li><a href="/article/1045.htm" title="mybatis tools 配置详解" target="_blank">mybatis tools 配置详解</a> <span class="text-muted">AILIKES</span> <a class="tag" taget="_blank" href="/search/mybatis/1.htm">mybatis</a> <div>MyBatis Generator中文文档 MyBatis Generator中文文档地址: http://generator.sturgeon.mopaas.com/ 该中文文档由于尽可能和原文内容一致,所以有些地方如果不熟悉,看中文版的文档的也会有一定的障碍,所以本章根据该中文文档以及实际应用,使用通俗的语言来讲解详细的配置。 本文使用Markdown进行编辑,但是博客显示效</div> </li> <li><a href="/article/1172.htm" title="继承与多态的探讨" target="_blank">继承与多态的探讨</a> <span class="text-muted">百合不是茶</span> <a class="tag" taget="_blank" href="/search/JAVA%E9%9D%A2%E5%90%91%E5%AF%B9%E8%B1%A1+%E7%BB%A7%E6%89%BF+%E5%AF%B9%E8%B1%A1/1.htm">JAVA面向对象 继承 对象</a> <div>继承 extends   多态 继承是面向对象最经常使用的特征之一:继承语法是通过继承发、基类的域和方法 //继承就是从现有的类中生成一个新的类,这个新类拥有现有类的所有extends是使用继承的关键字:     在A类中定义属性和方法; class A{ //定义属性 int age; //定义方法 public void go</div> </li> <li><a href="/article/1299.htm" title="JS的undefined与null的实例" target="_blank">JS的undefined与null的实例</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/JavaScript/1.htm">JavaScript</a> <div><form name="theform" id="theform"> </form> <script language="javascript"> var a alert(typeof(b)); //这里提示undefined if(theform.datas</div> </li> <li><a href="/article/1426.htm" title="TDD实践(一)" target="_blank">TDD实践(一)</a> <span class="text-muted">bijian1013</span> <a class="tag" taget="_blank" href="/search/java/1.htm">java</a><a class="tag" taget="_blank" href="/search/%E6%95%8F%E6%8D%B7/1.htm">敏捷</a><a class="tag" taget="_blank" href="/search/TDD/1.htm">TDD</a> <div>一.TDD概述         TDD:测试驱动开发,它的基本思想就是在开发功能代码之前,先编写测试代码。也就是说在明确要开发某个功能后,首先思考如何对这个功能进行测试,并完成测试代码的编写,然后编写相关的代码满足这些测试用例。然后循环进行添加其他功能,直到完全部功能的开发。     </div> </li> <li><a href="/article/1553.htm" title="[Maven学习笔记十]Maven Profile与资源文件过滤器" target="_blank">[Maven学习笔记十]Maven Profile与资源文件过滤器</a> <span class="text-muted">bit1129</span> <a class="tag" taget="_blank" href="/search/maven/1.htm">maven</a> <div>什么是Maven Profile Maven Profile的含义是针对编译打包环境和编译打包目的配置定制,可以在不同的环境上选择相应的配置,例如DB信息,可以根据是为开发环境编译打包,还是为生产环境编译打包,动态的选择正确的DB配置信息   Profile的激活机制 1.Profile可以手工激活,比如在Intellij Idea的Maven Project视图中可以选择一个P</div> </li> <li><a href="/article/1680.htm" title="【Hive八】Hive用户自定义生成表函数(UDTF)" target="_blank">【Hive八】Hive用户自定义生成表函数(UDTF)</a> <span class="text-muted">bit1129</span> <a class="tag" taget="_blank" href="/search/hive/1.htm">hive</a> <div>1. 什么是UDTF   UDTF,是User Defined Table-Generating Functions,一眼看上去,貌似是用户自定义生成表函数,这个生成表不应该理解为生成了一个HQL Table, 貌似更应该理解为生成了类似关系表的二维行数据集   2. 如何实现UDTF 继承org.apache.hadoop.hive.ql.udf.generic</div> </li> <li><a href="/article/1807.htm" title="tfs restful api 加auth 2.0认计" target="_blank">tfs restful api 加auth 2.0认计</a> <span class="text-muted">ronin47</span> <div>  目前思考如何给tfs的ngx-tfs api增加安全性。有如下两点:   一是基于客户端的ip设置。这个比较容易实现。   二是基于OAuth2.0认证,这个需要lua,实现起来相对于一来说,有些难度。   现在重点介绍第二种方法实现思路。    前言:我们使用Nginx的Lua中间件建立了OAuth2认证和授权层。如果你也有此打算,阅读下面的文档,实现自动化并获得收益。SeatGe</div> </li> <li><a href="/article/1934.htm" title="jdk环境变量配置" target="_blank">jdk环境变量配置</a> <span class="text-muted">byalias</span> <a class="tag" taget="_blank" href="/search/java/1.htm">java</a><a class="tag" taget="_blank" href="/search/jdk/1.htm">jdk</a> <div>进行java开发,首先要安装jdk,安装了jdk后还要进行环境变量配置: 1、下载jdk(http://java.sun.com/javase/downloads/index.jsp),我下载的版本是:jdk-7u79-windows-x64.exe 2、安装jdk-7u79-windows-x64.exe 3、配置环境变量:右击"计算机"-->&quo</div> </li> <li><a href="/article/2061.htm" title="《代码大全》表驱动法-Table Driven Approach-2" target="_blank">《代码大全》表驱动法-Table Driven Approach-2</a> <span class="text-muted">bylijinnan</span> <a class="tag" taget="_blank" href="/search/java/1.htm">java</a> <div>package com.ljn.base; import java.io.BufferedReader; import java.io.FileInputStream; import java.io.InputStreamReader; import java.util.ArrayList; import java.util.Collections; import java.uti</div> </li> <li><a href="/article/2188.htm" title="SQL 数值四舍五入 小数点后保留2位" target="_blank">SQL 数值四舍五入 小数点后保留2位</a> <span class="text-muted">chicony</span> <a class="tag" taget="_blank" href="/search/%E5%9B%9B%E8%88%8D%E4%BA%94%E5%85%A5/1.htm">四舍五入</a> <div> 1.round() 函数是四舍五入用,第一个参数是我们要被操作的数据,第二个参数是设置我们四舍五入之后小数点后显示几位。 2.numeric 函数的2个参数,第一个表示数据长度,第二个参数表示小数点后位数。 例如:   select   cast(round(12.5,2)   as   numeric(5,2))  </div> </li> <li><a href="/article/2315.htm" title="c++运算符重载" target="_blank">c++运算符重载</a> <span class="text-muted">CrazyMizzz</span> <a class="tag" taget="_blank" href="/search/C%2B%2B/1.htm">C++</a> <div>一、加+,减-,乘*,除/ 的运算符重载 Rational operator*(const Rational &x) const{ return Rational(x.a * this->a); } 在这里只写乘法的,加减除的写法类似 二、<<输出,>>输入的运算符重载      &nb</div> </li> <li><a href="/article/2442.htm" title="hive DDL语法汇总" target="_blank">hive DDL语法汇总</a> <span class="text-muted">daizj</span> <a class="tag" taget="_blank" href="/search/hive/1.htm">hive</a><a class="tag" taget="_blank" href="/search/%E4%BF%AE%E6%94%B9%E5%88%97/1.htm">修改列</a><a class="tag" taget="_blank" href="/search/DDL/1.htm">DDL</a><a class="tag" taget="_blank" href="/search/%E4%BF%AE%E6%94%B9%E8%A1%A8/1.htm">修改表</a> <div>hive DDL语法汇总 1、对表重命名 hive> ALTER TABLE table_name RENAME TO new_table_name;   2、修改表备注 hive> ALTER TABLE table_name SET TBLPROPERTIES ('comment' = new_comm</div> </li> <li><a href="/article/2569.htm" title="jbox使用说明" target="_blank">jbox使用说明</a> <span class="text-muted">dcj3sjt126com</span> <a class="tag" taget="_blank" href="/search/Web/1.htm">Web</a> <div>参考网址:http://www.kudystudio.com/jbox/jbox-demo.html jBox v2.3 beta [ 点击下载]  技术交流QQGroup:172543951 100521167 [2011-11-11] jBox v2.3 正式版 - [调整&修复] IE6下有iframe或页面有active、applet控件</div> </li> <li><a href="/article/2696.htm" title="UISegmentedControl 开发笔记" target="_blank">UISegmentedControl 开发笔记</a> <span class="text-muted">dcj3sjt126com</span> <div>  //    typedef NS_ENUM(NSInteger, UISegmentedControlStyle) {     //        UISegmentedControlStylePlain,     // large plain   &</div> </li> <li><a href="/article/2823.htm" title="Slick生成表映射文件" target="_blank">Slick生成表映射文件</a> <span class="text-muted">ekian</span> <a class="tag" taget="_blank" href="/search/scala/1.htm">scala</a> <div>Scala添加SLICK进行数据库操作,需在sbt文件上添加slick-codegen包 "com.typesafe.slick" %% "slick-codegen" % slickVersion 因为我是连接SQL Server数据库,还需添加slick-extensions,jtds包 "com.typesa</div> </li> <li><a href="/article/2950.htm" title="ES-TEST" target="_blank">ES-TEST</a> <span class="text-muted">gengzg</span> <a class="tag" taget="_blank" href="/search/test/1.htm">test</a> <div>package com.MarkNum; import java.io.IOException; import java.util.Date; import java.util.HashMap; import java.util.Map; import javax.servlet.ServletException; import javax.servlet.annotation</div> </li> <li><a href="/article/3077.htm" title="为何外键不再推荐使用" target="_blank">为何外键不再推荐使用</a> <span class="text-muted">hugh.wang</span> <a class="tag" taget="_blank" href="/search/mysql/1.htm">mysql</a><a class="tag" taget="_blank" href="/search/DB/1.htm">DB</a> <div>表的关联,是一种逻辑关系,并不需要进行物理上的“硬关联”,而且你所期望的关联,其实只是其数据上存在一定的联系而已,而这种联系实际上是在设计之初就定义好的固有逻辑。 在业务代码中实现的时候,只要按照设计之初的这种固有关联逻辑来处理数据即可,并不需要在数据库层面进行“硬关联”,因为在数据库层面通过使用外键的方式进行“硬关联”,会带来很多额外的资源消耗来进行一致性和完整性校验,即使很多时候我们并不</div> </li> <li><a href="/article/3204.htm" title="领域驱动设计" target="_blank">领域驱动设计</a> <span class="text-muted">julyflame</span> <a class="tag" taget="_blank" href="/search/VO/1.htm">VO</a><a class="tag" taget="_blank" href="/search/DAO/1.htm">DAO</a><a class="tag" taget="_blank" href="/search/%E8%AE%BE%E8%AE%A1%E6%A8%A1%E5%BC%8F/1.htm">设计模式</a><a class="tag" taget="_blank" href="/search/DTO/1.htm">DTO</a><a class="tag" taget="_blank" href="/search/po/1.htm">po</a> <div>概念: VO(View Object):视图对象,用于展示层,它的作用是把某个指定页面(或组件)的所有数据封装起来。 DTO(Data Transfer Object):数据传输对象,这个概念来源于J2EE的设计模式,原来的目的是为了EJB的分布式应用提供粗粒度的数据实体,以减少分布式调用的次数,从而提高分布式调用的性能和降低网络负载,但在这里,我泛指用于展示层与服务层之间的数据传输对</div> </li> <li><a href="/article/3331.htm" title="单例设计模式" target="_blank">单例设计模式</a> <span class="text-muted">hm4123660</span> <a class="tag" taget="_blank" href="/search/java/1.htm">java</a><a class="tag" taget="_blank" href="/search/Singleton/1.htm">Singleton</a><a class="tag" taget="_blank" href="/search/%E5%8D%95%E4%BE%8B%E8%AE%BE%E8%AE%A1%E6%A8%A1%E5%BC%8F/1.htm">单例设计模式</a><a class="tag" taget="_blank" href="/search/%E6%87%92%E6%B1%89%E5%BC%8F/1.htm">懒汉式</a><a class="tag" taget="_blank" href="/search/%E9%A5%BF%E6%B1%89%E5%BC%8F/1.htm">饿汉式</a> <div>       单例模式是一种常用的软件设计模式。在它的核心结构中只包含一个被称为单例类的特殊类。通过单例模式可以保证系统中一个类只有一个实例而且该实例易于外界访问,从而方便对实例个数的控制并节约系统源。如果希望在系统中某个类的对象只能存在一个,单例模式是最好的解决方案。      &nb</div> </li> <li><a href="/article/3458.htm" title="logback" target="_blank">logback</a> <span class="text-muted">zhb8015</span> <a class="tag" taget="_blank" href="/search/log/1.htm">log</a><a class="tag" taget="_blank" href="/search/logback/1.htm">logback</a> <div>一、logback的介绍      Logback是由log4j创始人设计的又一个开源日志组件。logback当前分成三个模块:logback-core,logback- classic和logback-access。logback-core是其它两个模块的基础模块。logback-classic是log4j的一个 改良版本。此外logback-class</div> </li> <li><a href="/article/3585.htm" title="整合Kafka到Spark Streaming——代码示例和挑战" target="_blank">整合Kafka到Spark Streaming——代码示例和挑战</a> <span class="text-muted">Stark_Summer</span> <a class="tag" taget="_blank" href="/search/spark/1.htm">spark</a><a class="tag" taget="_blank" href="/search/storm/1.htm">storm</a><a class="tag" taget="_blank" href="/search/zookeeper/1.htm">zookeeper</a><a class="tag" taget="_blank" href="/search/PARALLELISM/1.htm">PARALLELISM</a><a class="tag" taget="_blank" href="/search/processing/1.htm">processing</a> <div>作者Michael G. Noll是瑞士的一位工程师和研究员,效力于Verisign,是Verisign实验室的大规模数据分析基础设施(基础Hadoop)的技术主管。本文,Michael详细的演示了如何将Kafka整合到Spark Streaming中。 期间, Michael还提到了将Kafka整合到 Spark Streaming中的一些现状,非常值得阅读,虽然有一些信息在Spark 1.2版</div> </li> <li><a href="/article/3712.htm" title="spring-master-slave-commondao" target="_blank">spring-master-slave-commondao</a> <span class="text-muted">王新春</span> <a class="tag" taget="_blank" href="/search/DAO/1.htm">DAO</a><a class="tag" taget="_blank" href="/search/spring/1.htm">spring</a><a class="tag" taget="_blank" href="/search/dataSource/1.htm">dataSource</a><a class="tag" taget="_blank" href="/search/slave/1.htm">slave</a><a class="tag" taget="_blank" href="/search/master/1.htm">master</a> <div>互联网的web项目,都有个特点:请求的并发量高,其中请求最耗时的db操作,又是系统优化的重中之重。 为此,往往搭建 db的 一主多从库的 数据库架构。作为web的DAO层,要保证针对主库进行写操作,对多个从库进行读操作。当然在一些请求中,为了避免主从复制的延迟导致的数据不一致性,部分的读操作也要到主库上。(这种需求一般通过业务垂直分开,比如下单业务的代码所部署的机器,读去应该也要从主库读取数</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>