Web学习之开篇

Web开发需要用到哪些技术?

这套系统介绍使用JavaScript来完成Web开发,我们在学习js之前需要了解一下相关HTML、CSS。
HTML:定义网页内容
CSS:描述网页的布局
JavaScript:网页的行为

HTML 学习

 HTML学习网站

  HTML不是编程语言,而是标记语言。类似Markdown一样也是标记语言(不要被吓到,这个语法很简单,此文就是Markdown写的)。
&empt; 注意先声明当前HTML版本,其次就通过标签内声明源文件,声明浏览器展示内容。
标签中通过声明文本标题、<meta>声明元数据,如定义王爷编码格式为utf-8等<br> <body>标签中涉及标题格式、段落格式<br> <a href="http://www.baidu.com"> 这是百度网地址 </a><br> <img src="/images/logo.png" width="258" height="39" /><br> <hr /> 画水平线<br> <font size="1">这是1号字体文本</font><br> <sub> 下标</sub> 和 <sup> 上标</sup><br> <head> 元素包含了所有的头部标签元素。在 <head>元素中你可以插入脚本(scripts), 样式文件(CSS),及各种meta信息。<br> 可以添加在头部区域的元素标签为: <title>, <style>, <meta>, <link>, <script>, <noscript> 和 <base>。<br> <link> 标签定义了文档与外部资源之间的关系。</p> <p><link rel="stylesheet" type="text/css" href="https://www.baidu.com/css/bcd<sub>bcmobile</sub>bcpc.9837752f.css"></p> <p>内联样式- 在HTML元素中使用"style" 属性<br> <p style="color:blue;margin-left:20px;">这是一个段落。</p><br> 内部样式表:</p> <pre><code><head> <style type="text/css"> body {background-color:yellow;} p {color:blue;} </style> </head> </code></pre> <p>外部样式表:</p> <pre><code><head> <link rel="stylesheet" type="text/css" href="mystyle.css"> </head> </code></pre> <p><table>表格标签<br> <tr>若干行<br> <td>单元格的内容</p> <pre><code><table border="1"> <tr> <td>row 1, cell 1</td> <td>row 1, cell 2</td> </tr> <tr> <td>row 2, cell 1</td> <td>row 2, cell 2</td> </tr> </table> </code></pre> <p><div>定义块级<br> <span>组合文档的行内元素,内联元素<br> <form> 表单标签 里面经常包含的元素有,input输入的文本域、密码字段、单选按钮、复选框、提交按钮</p> <h3>CSS 学习</h3> <p> CSS学习网站<br> CSS 规则由两个主要的部分构成:选择器,以及一条或多条声明:<br> 选择器通常是您需要改变样式的 HTML 元素。<br> 每条声明由一个属性和一个值组成。<br> 在head标签中,通过style标签给不同的body、h、p等元素进行编辑。<br> css中id 选择器(指定特定id的样式)、class 选择器(指定一组元素的样式)<br> id是通过#来进行标记的<br> class通过一个点 . 来表示。也可以指定某个标签的所有元素使用某个样式例如:p.center。指定所有p元素使用<br> 外部样式表:很多页面时,外部样式表将是理想的选择<link rel="xxx"><br> 内部样式表:单个文档需要特殊的样式时,就应该使用内部样式表。< style ><br> 内联样式:内联样式会损失掉样式表的许多优势。请慎用这种方法<p style="color:sienna;margin-left:20px">这是一个段落。</p><br> 多重样式:<br> <strong>CSS盒子模型:</strong><br> Margin(外边距) - 清除边框外的区域,外边距是透明的。<br> Border(边框) - 围绕在内边距和内容外的边框。<br> Padding(内边距) - 清除内容周围的区域,内边距是透明的。<br> 总元素的宽度=宽度+左填充+右填充+左边框+右边框+左边距+右边距<br> <strong>重要:</strong> 当您指定一个 CSS 元素的宽度和高度属性时,你只是设置内容区域的宽度和高度。要知道,完整大小的元素,你还必须添加内边距,边框和边距。<br> <strong>border-style:</strong> 默认无边框 none</p> <h3>JavaScript 学习</h3> <p>JavaScript 学习网站</p> <p>document.getElementById("demo").innerHTML = "段落已修改。"; 插入元素内容<br> 请使用 document.write() 仅仅向文档输出写内容。<br> 如果在文档已完成加载后执行 document.write,整个 HTML 页面将被覆盖。</p> <pre><code>//button 添加点击事件 <button onclick="myFunction()"> <script> function myFunction() { document.write(Date()); } </script> </code></pre> <p>写到控制台<br> console.log(c);</p> <p>数组<br> [40, 100, 1, 5, 25, 10]</p> <p>对象<br> {firstName:"John", lastName:"Doe", age:50, eyeColor:"blue"}</p> <p>函数<br> function myFunction(a, b) { return a * b;}</p> <p>变量<br> var x, length</p> <p>= + - * / 运算<br> == != < > 判断</p> <p><strong>JavaScript 语句</strong><br> JavaScript 语句是发给浏览器的命令。</p> <p><strong>JavaScript 代码</strong><br> 浏览器按照编写顺序依次执行每条语句。</p> <p><strong>JavaScript 代码块</strong><br> JavaScript 可以分批地组合起来。<br> 代码块以左花括号开始,以右花括号结束。<br> 代码块的作用是一并地执行语句序列。</p> <p><strong>JavaScript 语句标识符</strong><br> try 实现错误处理,与 catch 一同使用。<br> catch 语句块,在 try 语句块执行出错时执行 catch 语句块。</p> <p>您可以在文本字符串中使用反斜杠对代码行进行换行</p> <p>提示:JavaScript 是脚本语言。浏览器会在读取代码时,逐行地执行脚本代码。而对于传统编程来说,会在执行前对所有代码进行编译。</p> <p>注释<br> 注释用于阻止其中一条代码行的执行(可用于调试)</p> <p><strong>JavaScript 数据类型</strong><br> 值类型(基本类型):字符串(String)、数字(Number)、布尔(Boolean)、对空(Null)、未定义(Undefined)、Symbol。<br> 引用数据类型:对象(Object)、数组(Array)、函数(Function)。</p> <p><strong>JavaScript 对象</strong><br> 在 JavaScript中,几乎所有的事物都是对象。</p> <p>var person = {<br> firstName: "John",<br> lastName : "Doe",<br> id : 5566,<br> fullName : function()<br> {<br> return this.firstName + " " + this.lastName;<br> }<br> };</p> <p>对象属性<br> JavaScript 对象是键值对的容器</p> <p>访问对象属性<br> name=person.lastname;<br> 或<br> name=person["lastname"];</p> <p>访问对象方法<br> objectName.methodName()</p> <p><strong>JavaScript 函数</strong><br> 函数是由事件驱动的或者当它被调用时执行的可重复使用的代码块。</p> <p>带参数函数 myFunction(argument1,argument2)</p> <p><strong>带有返回值的函数</strong><br> 函数将值返回调用它的地方</p> <pre><code>function myFunction() { var x=5; return x; } </code></pre> <p>注意: 整个 JavaScript 并不会停止执行,仅仅是函数。JavaScript 将继续执行代码,从调用函数的地方。</p> <p>仅仅希望退出函数时 ,也可使用 return 语句</p> <p><strong>局部 JavaScript 变量</strong><br> 在 JavaScript 函数内部声明的变量(使用 var)是局部变量,所以只能在函数内部访问它。(该变量的作用域是局部的)。<br> 您可以在不同的函数中使用名称相同的局部变量,因为只有声明过该变量的函数才能识别出该变量。<br> 只要函数运行完毕,本地变量就会被删除。</p> <p><strong>全局 JavaScript 变量</strong><br> 在函数外声明的变量是全局变量,网页上的所有脚本和函数都能访问它。</p> <p><strong>JavaScript 作用域</strong><br> 在 JavaScript 中, 对象和函数同样也是变量。<br> 在 JavaScript 中, 作用域为可访问变量,对象,函数的集合。<br> JavaScript 函数作用域: 作用域在函数内修改。</p> <p>变量在函数内声明,变量为局部作用域。<br> 局部变量:只能在函数内部访问。<br> 因为局部变量只作用于函数内,所以不同的函数可以使用相同名称的变量。<br> 局部变量在函数开始执行时创建,函数执行完后局部变量会自动销毁。</p> <p><strong>JavaScript 全局变量</strong><br> 变量在函数外定义,即为全局变量。<br> 全局变量有 全局作用域: 网页中所有脚本和函数均可使用。</p> <p>如果变量在函数内没有声明(没有使用 var 关键字),该变量为全局变量。<br> 以下实例中 carName 在函数内,但是为全局变量。</p> <pre><code>// 此处可调用 carName 变量 function myFunction() { carName = "Volvo"; // 此处可调用 carName 变量 } </code></pre> <p><strong>JavaScript 事件</strong><br> HTML 事件是发生在 HTML 元素上的事情。<br> 当在 HTML 页面中使用 JavaScript 时, JavaScript 可以触发这些事件。</p> <p><strong>HTML 事件</strong><br> HTML 事件可以是浏览器行为,也可以是用户行为。</p> <p>事件:<br> HTML 页面完成加载<br> HTML input 字段改变时<br> HTML 按钮被点击</p> <p>可以做的事情。在事件触发时 JavaScript 可以执行一些代码。<br> HTML 元素中可以添加事件属性,使用 JavaScript 代码来添加 HTML 元素。</p> <p><code><some-HTML-element some-event='JavaScript 代码'></code><br> 或者 双引号<br> <code><some-HTML-element some-event="JavaScript 代码"></code></p> <p>举例:<br> JavaScript 代码将修改 id="demo" 元素的内容。<br> <code><button onclick="getElementById('demo').innerHTML=Date()">现在的时间是?</button></code></p> <p>修改自身元素的内容 (使用 this.innerHTML):<br> <code><button onclick="this.innerHTML=Date()">现在的时间是?</button></code></p> <p><strong>常见的HTML事件</strong><br> onchange -----> HTML 元素改变<br> onclick -----> 用户点击 HTML 元素<br> onmouseover ----> 用户在一个HTML元素上移动鼠标<br> onmouseout ----> 用户从一个HTML元素上移开鼠标<br> onkeydown -----> 用户按下键盘按键<br> onload -----> 浏览器已完成页面的加载</p> <p><strong>JavaScript 可以做什么?</strong><br> 事件可以用于处理表单验证,用户输入,用户行为及浏览器动作:</p> <ul> <li>页面加载时触发事件</li> <li>页面关闭时触发事件</li> <li>用户点击按钮执行动作</li> <li>验证用户输入内容的合法性</li> <li>等等 ...</li> </ul> <p>可以使用多种方法来执行 JavaScript 事件代码:</p> <ul> <li>HTML 事件属性可以直接执行 JavaScript 代码</li> <li>HTML 事件属性可以调用 JavaScript 函数</li> <li>你可以为 HTML 元素指定自己的事件处理程序</li> </ul> <p><strong>JavaScript 字符串</strong></p> <p>字符串长度:<br> 可以使用内置属性 length 来计算字符串的长度:</p> <p>特殊字符<br> 因为这样,以下实例 JavaScript 无法解析:<br> "We are the so-called "Vikings" from the north."</p> <p>可以使用反斜杠 () 来转义 "Vikings" 字符串中的双引号,如下:<br> "We are the so-called "Vikings" from the north."<br> charAt() ---> 返回指定索引位置的字符<br> charCodeAt() ---> 返回指定索引位置字符的 Unicode 值<br> concat() ---> 连接两个或多个字符串,返回连接后的字符串<br> fromCharCode() ---> 将 Unicode 转换为字符串<br> indexOf() ---> 返回字符串中检索指定字符第一次出现的位置<br> lastIndexOf() ---> 返回字符串中检索指定字符最后一次出现的位置<br> localeCompare() ---> 用本地特定的顺序来比较两个字符串<br> match() ---> 找到一个或多个正则表达式的匹配<br> replace() ---> 替换与正则表达式匹配的子串<br> search() ---> 检索与正则表达式相匹配的值<br> slice() ---> 提取字符串的片断,并在新的字符串中返回被提取的部分<br> split() ---> 把字符串分割为子字符串数组<br> substr() ---> 从起始索引号提取字符串中指定数目的字符<br> substring() ---> 提取字符串中两个指定的索引号之间的字符<br> toLocaleLowerCase() ---> 根据主机的语言环境把字符串转换为小写,只有几种语言(如土耳其语)具有地方特有的大小写映射<br> toLowerCase() ---> 把字符串转换为小写<br> toString() ---> 返回字符串对象值<br> toUpperCase() ---> 把字符串转换为大写<br> trim() ---> 移除字符串首尾空白<br> valueOf() ----> 返回某个字符串对象的原始值</p> <p><strong>JavaScript 运算符</strong></p> <ul> <li> <ul> <li> <ul> <li>/ % ++ --</li> </ul></li> </ul></li> </ul> <p>用于字符串的 + 运算符<br> 如需把两个或多个字符串变量连接起来,请使用 + 运算符:</p> <p>或者把空格插入表达式中:<br> txt3=txt1+" "+txt2;</p> <p>对字符串和数字进行加法运算<br> 两个数字相加,返回数字相加的和,如果数字与字符串相加,返回字符串,如下实例:<br> x=5+5;<br> y="5"+5;<br> z="Hello"+5;</p> <p>10<br> 55<br> Hello5</p> <p><strong>JavaScript 比较 和 逻辑运算符</strong><br> 比较和逻辑运算符用于测试 true 或者 false。</p> <p>比较运算符</p> <p>== 等于<br> === 绝对等于(值和类型均相等)<br> != 不等于<br> !== 不绝对等于(值和类型有一个不相等,或两个都不相等)</p> <blockquote> <p>大于<br> < 小于<br> = 大于或等于<br> <= 小于或等于</p> </blockquote> <p>逻辑运算符<br> && || !</p> <p>条件运算符<br> voteable=(age<18)?"年龄太小":"年龄已达到";</p> <p><strong>JavaScript if...Else 语句</strong><br> if 语句 - 只有当指定条件为 true 时,使用该语句来执行代码<br> if...else 语句 - 当条件为 true 时执行代码,当条件为 false 时执行其他代码<br> if...else if....else 语句- 使用该语句来选择多个代码块之一来执行<br> switch 语句 - 使用该语句来选择多个代码块之一来执行</p> <p>JavaScript switch 语句<br> 工作原理:首先设置表达式 n(通常是一个变量)。随后表达式的值会与结构中的每个 case 的值做比较。如果存在匹配,则与该 case 关联的代码块会被执行。请使用 break 来阻止代码自动地向下一个 case 运行。</p> <pre><code>var d=new Date().getDay(); switch (d) { case 0:x="今天是星期日"; break; case 1:x="今天是星期一"; break; case 2:x="今天是星期二"; break; case 3:x="今天是星期三"; break; case 4:x="今天是星期四"; break; case 5:x="今天是星期五"; break; case 6:x="今天是星期六"; break; } </code></pre> <p>default 关键词<br> 使用 default 关键词来规定匹配不存在时做的事情:</p> <pre><code>var d=new Date().getDay(); switch (d) { case 6:x="今天是星期六"; break; case 0:x="今天是星期日"; break; default: x="期待周末"; } document.getElementById("demo").innerHTML=x; </code></pre> <p><strong>JavaScript for 循环</strong></p> <pre><code>for (var i=0;i<cars.length;i++) { document.write(cars[i] + "<br>"); } </code></pre> <p><strong>不同类型的循环</strong></p> <ul> <li>for - 循环代码块一定的次数</li> <li>for/in - 循环遍历对象的属性</li> <li>while - 当指定的条件为 true 时循环指定的代码块</li> <li>do/while - 同样当指定的条件为 true 时循环指定的代码块</li> </ul> <pre><code>for (var i=0,len=cars.length; i<len; i++) { document.write(cars[i] + "<br>"); } </code></pre> <ul> <li>for/in - 循环遍历对象的属性,只是遍历对象内部的属性</li> </ul> <pre><code> var x; var txt=""; var person={fname:"Bill",lname:"Gates",age:56}; for (x in person){ txt=txt + person[x]; } document.getElementById("demo").innerHTML=txt; </code></pre> <ul> <li>while - 当指定的条件为 true 时循环指定的代码块</li> </ul> <pre><code>while (i<5) { x=x + "The number is " + i + "<br>"; i++; } </code></pre> <ul> <li>do/while - 同样当指定的条件为 true 时循环指定的代码块</li> </ul> <pre><code> var x="",i=0; do{ x=x + "该数字为 " + i + "<br>"; i++; } while (i<5) document.getElementById("demo").innerHTML=x; </code></pre> <p><strong>JavaScript break 和 continue 语句</strong><br> break 语句用于跳出循环。<br> continue 用于跳过循环中的一个迭代。</p> <p><strong>JavaScript 标签</strong><br> 如需标记 JavaScript 语句,请在语句之前加上冒号:</p> <pre><code>label: statements </code></pre> <pre><code><script> cars=["BMW","Volvo","Saab","Ford"]; list:{ document.write(cars[0] + "<br>"); break list; document.write(cars[1] + "<br>"); document.write(cars[2] + "<br>"); document.write(cars[3] + "<br>"); document.write(cars[4] + "<br>"); document.write(cars[5] + "<br>"); } </script> </code></pre> <p><strong>JavaScript typeof, null, 和 undefined</strong></p> <p>null是一个只有一个值的特殊类型。表示一个空对象引用。<br> var person = null; // 值为 null(空), 但类型为对象</p> <p>你可以设置为 undefined 来清空对象:<br> var person = undefined; // 值为 undefined, 类型为 undefined</p> <p>undefined 是一个没有设置值的变量。<br> 任何变量都可以通过设置值为 undefined 来清空。 类型为 undefined.</p> <p>null 和 undefined 的值相等,但类型不等:</p> <p>你可以使用 constructor 属性来查看对象是否为数组 (包含字符串 "Array"):<br> <code>return myArray.constructor.toString().indexOf("Array") > -1;</code></p> <p><strong>将数字转换为字符串</strong><br> String(x) // 将变量 x 转换为字符串并返回</p> <p>Number 方法 toString() 也是有同样的效果。<br> x.toString()<br> (123).toString()</p> <p>Date 方法<br> 将字符串转换为数字<br> Number("3.14") // 返回 3.14<br> Number 方法</p> <p>一元运算符 +<br> Operator + 可用于将变量转换为数字:</p> <p>将布尔值转换为数字<br> Number(false) // 返回 0<br> Number(true) // 返回 1</p> <p>d = new Date();<br> Number(d) // 返回 1404568027739<br> 日期方法 getTime() 也有相同的效果。</p> <p><strong>JavaScript 正则表达式</strong><br> 正则表达式(英语:Regular Expression,在代码中常简写为regex、regexp或RE)使用单个字符串来描述、匹配一系列符合某个句法规则的字符串搜索模式。<br> 搜索模式可用于文本搜索和文本替换。</p> <p><strong>什么是正则表达式?</strong><br> 正则表达式是由一个字符序列形成的搜索模式。<br> 当你在文本中搜索数据时,你可以用搜索模式来描述你要查询的内容。<br> 正则表达式可以是一个简单的字符,或一个更复杂的模式。<br> 正则表达式可用于所有文本搜索和文本替换的操作。</p> <p><strong>语法</strong><br> /正则表达式主体/修饰符(可选)<br> var patt = /runoob/i</p> <p>/runoob/i 是一个正则表达式。<br> runoob 是一个正则表达式主体 (用于检索)。<br> i 是一个修饰符 (搜索不区分大小写)。</p> <p>在 JavaScript 中,正则表达式通常用于两个字符串方法 : search() 和 replace()。</p> <p>search() 方法使用正则表达式</p> <pre><code> var str = "Visit Runoob!"; var n = str.search(/Runoob/i); document.getElementById("demo").innerHTML = n; </code></pre> <p>search() 方法使用字符串</p> <pre><code> var str = "Visit Runoob!"; var n = str.search("Runoob"); document.getElementById("demo").innerHTML = n; </code></pre> <p>replace() 方法使用正则表达式</p> <pre><code> var str = document.getElementById("demo").innerHTML; var txt = str.replace(/microsoft/i,"Runoob"); document.getElementById("demo").innerHTML = txt; </code></pre> <p>replace() 方法使用正则表达式</p> <pre><code> var str = document.getElementById("demo").innerHTML; var txt = str.replace(/microsoft/i,"Runoob"); document.getElementById("demo").innerHTML = txt; </code></pre> <p><strong>JavaScript 错误 - throw、try 和 catch</strong><br> try 语句测试代码块的错误。<br> catch 语句处理错误。<br> throw 语句创建自定义错误。<br> finally 语句在 try 和 catch 语句之后,无论是否有触发异常,该语句都会执行。</p> <p><strong>JavaScript try 和 catch</strong><br> catch 块会捕捉到 try 块中的错误,并执行代码来处理它。</p> <pre><code> try { adddlert("Welcome guest!"); } catch(err) { txt="本页有一个错误。\n\n"; txt+="错误描述:" + err.message + "\n\n"; txt+="点击确定继续。\n\n"; alert(txt); } </code></pre> <p>finally 语句<br> finally 语句不论之前的 try 和 catch 中是否产生异常都会执行该代码块。</p> <p>Throw 语句<br> throw 语句允许我们创建自定义错误。<br> 如果把 throw 与 try 和 catch 一起使用,那么您能够控制程序流,并生成自定义的错误消息。</p> <pre><code>function myFunction() { var message, x; message = document.getElementById("message"); message.innerHTML = ""; x = document.getElementById("demo").value; try { if(x == "") throw "值为空"; if(isNaN(x)) throw "不是数字"; x = Number(x); if(x < 5) throw "太小"; if(x > 10) throw "太大"; } catch(err) { message.innerHTML = "错误: " + err; } } </code></pre> <p><strong>JavaScript 调试工具</strong><br> 浏览器启用调试工具一般是按下 F12 键,并在调试菜单中选择 "Console" 。<br> mac 调起是按 option+command+i</p> <p><strong>console.log() 方法</strong><br> 如果浏览器支持调试,你可以使用 console.log() 方法在调试窗口上打印 JavaScript 值</p> <p><strong>设置断点</strong><br> 在调试窗口中,你可以设置 JavaScript 代码的断点。<br> 在每个断点上,都会停止执行 JavaScript 代码,以便于我们检查 JavaScript 变量的值。<br> 在检查完毕后,可以重新执行代码(如播放按钮)。</p> <p><strong>debugger 关键字</strong><br> debugger 关键字用于停止执行 JavaScript,并调用调试函数。<br> 注意前提条件: 调试环境</p> <p><strong>Undefined 不是 Null</strong><br> 在 JavaScript 中, null 用于对象, undefined 用于变量,属性和方法。<br> 对象只有被定义才有可能为 null,否则为 undefined。<br> 如果我们想测试对象是否存在,在对象还没定义时将会抛出一个错误。<br> <code>if (typeof myObj !== "undefined" && myObj !== null)</code></p> <p><strong>JavaScript 表单</strong><br> HTML 表单验证可以通过 JavaScript 来完成。<br> 以下实例代码用于判断表单字段(fname)值是否存在, 如果不存在,就弹出信息,阻止表单提交:</p> <pre><code><html> <head> <meta charset="utf-8"> <script> function validateForm() { var x = document.forms["myForm"]["fname"].value; if (x == null || x == "") { alert("需要输入名字。"); return false; } } </script> </head> <body> <form name="myForm" action="demo_form.php" onsubmit="return validateForm()" method="post"> 名字: <input type="text" name="fname"> <input type="submit" value="提交"> </form> </body> </html> </code></pre> <p><strong>数据验证</strong><br> <strong>服务端数据验证</strong>是在数据提交到服务器上后再验证。<br> <strong>客户端数据验证</strong>是在数据发送到服务器前,在浏览器上完成验证。</p> <p><strong>HTML 约束验证</strong><br> 约束验证是表单被提交时浏览器用来实现验证的一种算法。<br> HTML 输入属性<br> CSS 伪类选择器<br> DOM 属性和方法</p> <p>有关的查:HTML 输入属性<br> 有关的查: CSS 伪类</p> <p><strong>JavaScript 表单验证</strong><br> JavaScript 可用来在数据被送往服务器前对 HTML 表单中的这些输入数据进行验证。</p> <ul> <li>验证表单数据是否为空?</li> <li>验证输入是否是一个正确的email地址?</li> <li>验证日期是否输入正确?</li> <li>验证表单输入内容是否为数字型?</li> </ul> <p><strong>JavaScript 验证 API</strong><br> 约束验证 DOM 方法:<br> checkValidity() ---> 如果 input 元素中的数据是合法的返回 true,否则返回 false。</p> <p>setCustomValidity() --->设置 input 元素的 validationMessage 属性,用于自定义错误提示信息的方法。<br> 使用 setCustomValidity 设置了自定义提示后,validity.customError 就会变成true,则 checkValidity 总是会返回false。如果要重新判断需要取消自定义提示.</p> <p><strong>约束验证 DOM 属性</strong><br> validity<br> validationMessage<br> willValidate</p> <p><strong>Validity 属性</strong><br> customError ---> 设置为 true, 如果设置了自定义的 validity 信息。<br> patternMismatch ---> 设置为 true, 如果元素的值不匹配它的模式属性。<br> rangeOverflow ---> 设置为 true, 如果元素的值大于设置的最大值。<br> rangeUnderflow ---> 设置为 true, 如果元素的值小于它的最小值。<br> stepMismatch ---> 设置为 true, 如果元素的值不是按照规定的 step 属性设置。<br> tooLong ---> 设置为 true, 如果元素的值超过了 maxLength 属性设置的长度。<br> typeMismatch ---> 设置为 true, 如果元素的值不是预期相匹配的类型。<br> valueMissing ---> 设置为 true,如果元素 (required 属性) 没有值。<br> valid ---> 设置为 true,如果元素的值是合法的。</p> <p><strong>JavaScript this 关键字</strong><br> 面向对象语言中 this 表示当前对象的一个引用。<br> 但在 JavaScript 中 this 不是固定不变的,它会随着执行环境的改变而改变。</p> <ul> <li>在方法中,this 表示该方法所属的对象。</li> <li>如果单独使用,this 表示全局对象。</li> <li>在函数中,this 表示全局对象。</li> <li>在函数中,在严格模式下,this 是未定义的(undefined)。</li> <li>在事件中,this 表示接收事件的元素。</li> <li>类似 call() 和 apply() 方法可以将 this 引用到任何对象。</li> </ul> <p>方法中的 this<br> 在对象方法中, this 指向调用它所在方法的对象。 下面代码中this指向的是person</p> <pre><code>var person = { firstName: "John", lastName : "Doe", id : 5566, fullName : function() { return this.firstName + " " + this.lastName; } }; </code></pre> <p>单独使用 this<br> 单独使用 this,则它指向全局(Global)对象。<br> 在浏览器中,window 就是该全局对象为 [object Window]:</p> <pre><code><script> var x = this; document.getElementById("demo").innerHTML = x; </script> </code></pre> <p>函数中使用 this(默认)<br> 在函数中,函数的所属者默认绑定到 this 上。<br> 在浏览器中,window 就是该全局对象为 [object Window]:</p> <pre><code><script> document.getElementById("demo").innerHTML = myFunction(); function myFunction() { return this; } </script> </code></pre> <p>函数中使用 this(严格模式)<br> 严格模式下函数是没有绑定到 this 上,这时候 this 是 undefined。</p> <p>事件中的 this<br> 在 HTML 事件句柄中,this 指向了接收事件的 HTML 元素:<br> <code><button onclick="this.style.display='none'">点我后我就消失了</button></code></p> <p>对象方法中绑定<br> this 是 person 对象,person 对象是函数的所有者</p> <p>显式函数绑定<br> 在 JavaScript 中函数也是对象,对象则有方法,apply 和 call 就是函数对象的方法。这两个方法异常强大,他们允许切换函数执行的上下文环境(context),即 this 绑定的对象。<br> 在下面实例中,当我们使用 person2 作为参数来调用 person1.fullName 方法时, this 将指向 person2, 即便它是 person1 的方法:</p> <pre><code>var person1 = { fullName: function() { return this.firstName + " " + this.lastName; } } var person2 = { firstName:"John", lastName: "Doe", } person1.fullName.call(person2); // 返回 "John Doe" </code></pre> <p><strong>JavaScript let 和 const</strong><br> let 声明的变量只在 let 命令所在的代码块内有效。<br> const 声明一个只读的常量,一旦声明,常量的值就不能改变。<br> 函数内使用 var 声明的变量只能在函数内容访问,如果不使用 var 则是全局变量。</p> <p><strong>JavaScript JSON</strong><br> JSON 指的是 JavaScript 对象表示法(JavaScript Object Notation)<br> JSON 通常用于服务端向网页传递数据 。</p> <p>JSON 语法规则</p> <ul> <li>数据为 键/值 对。</li> <li>数据由逗号分隔。</li> <li>大括号保存对象</li> <li>方括号保存数组</li> </ul> <p><strong>JSON 字符串转换为 JavaScript 对象</strong><br> 首先,创建 JavaScript 字符串,字符串为 JSON 格式的数据:<br> 然后,使用 JavaScript 内置函数 JSON.parse() 将字符串转换为 JavaScript 对象:</p> <pre><code>var text = '{ "sites" : [' + '{ "name":"Runoob" , "url":"www.runoob.com" },' + '{ "name":"Google" , "url":"www.google.com" },' + '{ "name":"Taobao" , "url":"www.taobao.com" } ]}'; var obj = JSON.parse(text); document.getElementById("demo").innerHTML = obj.sites[1].name + " " + obj.sites[1].url; </code></pre> <p>相关参数<br> JSON.parse() ----> 用于将一个 JSON 字符串转换为 JavaScript 对象。<br> JSON.stringify() ---> 用于将 JavaScript 值转换为 JSON 字符串。</p> <p><strong>javascript:void(0) 含义</strong><br> 该操作符指定要计算一个表达式但是不返回值</p> <p>void()仅仅是代表不返回任何值,但是括号内的表达式还是要运行,如<br> void(alert("Warnning!"))</p> <p><strong>JavaScript 异步编程</strong><br> 异步:异步就是从主线程发射一个子线程来完成任务</p> <p>子线程有一个局限:一旦发射了以后就会与主线程失去同步,我们无法确定它的结束,如果结束之后需要处理一些事情,比如处理来自服务器的信息,我们是无法将它合并到主线程中去的。<br> 为了解决这个问题,JavaScript 中的异步操作函数往往通过回调函数来实现异步任务的结果处理。</p> <p><strong>回调函数</strong><br> 回调函数就是一个函数,它是在我们启动一个异步任务的时候就告诉它:等你完成了这个任务之后要干什么。这样一来主线程几乎不用关心异步任务的状态了,他自己会善始善终。</p> <pre><code>function print() { document.getElementById("demo").innerHTML="RUNOOB!"; } setTimeout(print, 3000); </code></pre> <p>这段程序中的 setTimeout 就是一个消耗时间较长(3 秒)的过程,它的第一个参数是个回调函数,第二个参数是毫秒数,这个函数执行之后会产生一个子线程,子线程会等待 3 秒,然后执行回调函数 "print",在命令行输出 "Time out"。<br> 在 setTimeout 函数执行之后主线程并没有停止</p> <p><strong>异步 AJAX</strong><br> XMLHttpRequest 的 onload 和 onerror 属性都是函数,分别在它请求成功和请求失败时被调用。</p> <p>GET 请求</p> <pre><code>xmlhttp.open("GET","/try/ajax/demo_get.php",true); xmlhttp.send(); </code></pre> <p>在上面的例子中,您可能得到的是缓存的结果。<br> 为了避免这种情况,请向 URL 添加一个唯一的 ID:</p> <pre><code>xmlhttp.open("GET","/try/ajax/demo_get.php?t=" + Math.random(),true); xmlhttp.send(); </code></pre> <p>POST 请求</p> <pre><code>xmlhttp.open("POST","/try/ajax/demo_post.php",true); xmlhttp.send(); </code></pre> <pre><code>xmlhttp.open("POST","/try/ajax/demo_post2.php",true); xmlhttp.setRequestHeader("Content-type","application/x-www-form-urlencoded"); xmlhttp.send("fname=Henry&lname=Ford"); </code></pre> <p><strong>JavaScript Promise</strong><br> Promise:目的是更加<strong>优雅地书写复杂的异步任务</strong><br> 构建Promise 对象:</p> <pre><code>new Promise(function (resolve, reject) { // 要做的事情... }); </code></pre> <p>Promise 可以将嵌套格式的代码变成了顺序格式的代码</p> <p><strong>Promise 的使用</strong><br> Promise 构造函数只有一个参数,是一个函数,这个函数在构造之后会直接被异步运行,所以我们称之为起始函数。起始函数包含两个参数 resolve 和 reject。<br> 当 Promise 被构造时,起始函数会被异步执行:</p> <pre><code>new Promise(function (resolve, reject) { console.log("Run"); }); </code></pre> <p>这段程序会直接输出 Run。<br> resolve 和 reject 都是函数,其中调用 resolve 代表一切正常,reject 是出现异常时所调用的</p> <pre><code>new Promise(function (resolve, reject) { var a = 0; var b = 1; if (b == 0) reject("Diveide zero"); else resolve(a / b); }).then(function (value) { console.log("a / b = " + value); }).catch(function (err) { console.log(err); }).finally(function () { console.log("End"); }); </code></pre> <p>Promise 类有 .then() .catch() 和 .finally() 三个方法,这三个方法的参数都是一个函数,.then() 可以将参数中的函数添加到当前 Promise 的正常执行序列,.catch() 则是设定 Promise 的异常处理序列,.finally() 是在 Promise 执行的最后一定会执行的序列。 .then() 传入的函数会按顺序依次执行,有任何异常都会直接跳到 catch 序列:</p> <p><strong>Q: 什么时候适合用 Promise 而不是传统回调函数?</strong><br> A: 当需要<strong>多次顺序执行异步操作</strong>的时候,例如,如果想通过异步方法先后检测用户名和密码,需要先异步检测用户名,然后再异步检测密码的情况下就很适合 Promise。</p> <p><strong>函数表达式</strong></p> <p>JavaScript 函数可以通过一个表达式定义。<br> 函数表达式可以存储在变量中:<br> 以下函数实际上是一个 匿名函数 (函数没有名称)。<br> 函数存储在变量中,不需要函数名称,通常通过变量名来调用。</p> <pre><code>var x = function (a, b) {return a * b}; var z = x(4, 3); </code></pre> <p><strong>arguments 对象</strong><br> JavaScript 函数有个内置的对象 arguments 对象。<br> argument 对象包含了函数调用的参数数组。<br> 通过这种方式你可以很方便的找到最大的一个参数的值</p> <p>在函数中调用的参数是函数的隐式参数。<br> 隐式参数的改变在函数外是不可见的。</p> <p>call() 和 apply() 是预定义的函数方法。 两个方法可用于调用函数,两个方法的第一个参数必须是对象本身。</p> <pre><code><script> var myObject; function myFunction(a, b) { return a * b; } myObject = myFunction.call(myObject, 10, 2); // 返回 20 document.getElementById("demo").innerHTML = myObject; </script> </code></pre> <pre><code><script> var myObject, myArray; function myFunction(a, b) { return a * b; } myArray = [10, 2] myObject = myFunction.apply(myObject, myArray); // 返回 20 document.getElementById("demo").innerHTML = myObject; </script> </code></pre> <p>两个方法都使用了对象本身作为第一个参数。 两者的区别在于第二个参数: apply传入的是一个参数数组,也就是将多个参数组合成为一个数组传入,而call则作为call的参数传入(从第二个参数开始)。</p> <p><strong>this 笔记</strong><br> this 是 JavaScript 语言的一个关键字。<br> 它代表函数运行时,自动生成的一个内部对象,只能在函数内部使用。比如:</p> <pre><code>function test() { this.x = 1; } </code></pre> <p>变量声明时如果不使用 var 关键字,那么它就是一个全局变量,即便它在函数内定义。</p> <p>JavaScript支持嵌套函数,内部函数可以访问父函数的变量。</p> <p><strong>JavaScript 闭包</strong><br> 什么叫闭包,闭包有什么用</p> <pre><code>function aaa() { var a = 5; function bbb() { alert(a) } return bbb } var c = aaa(); c(); </code></pre> <pre><code><script> var add = (function () { var counter = 0; return function () {return counter += 1;} })(); function myFunction(){ document.getElementById("demo").innerHTML = add(); } </script> </code></pre> <p><strong>实例解析</strong><br> 变量 add 指定了函数自我调用的返回字值。<br> 自我调用函数只执行一次。设置计数器为 0。并返回函数表达式。<br> add变量可以作为一个函数使用。非常棒的部分是它可以访问函数上一层作用域的计数器。<br> 这个叫作 JavaScript 闭包。它使得函数拥有私有变量变成可能。<br> 计数器受匿名函数的作用域保护,只能通过 add 方法修改。<br> <code>闭包是一种保护私有变量的机制,在函数执行时形成私有的作用域,保护里面的私有变量不受外界干扰。 直观的说就是形成一个不销毁的栈环境。</code></p> <h3>Vue.js 学习</h3> <p>Vue框架参考了MVVM架构,所以vm扮演一个数据视图的实例。<br> watch('属性',function(newVal,oldVal));会观察实例某个属性,并通过回调获取最新的值、旧值</p> <p>实例生命周期钩子<br> 将实例挂在到DOM,并在数据变化更新DOM。在这个过程中运行 <strong>声明周期钩子</strong>函数,给用户在不同阶段添加自己代码的机会。</p> <p>生命周期函数内不能使用箭头函数<br> 属性函数<br> //页面创建之前<br> beforeCreate</p> <p>//实例创建之后<br> created</p> <p>//挂载之前进行的<br> beforeMount</p> <p>//挂载成功之后<br> mounted</p> <p>//数据变化更新之前调用<br> beforeUpdate</p> <p>//组件 DOM 已经更新,组件更新完毕<br> updated</p> <p>setTimeout(function(),3000),三分钟后执行function</p> <p><strong>模板语法</strong></p> <p>文本插值 {{ }}<br> v-onec执行一次插值<br> v-html 将变量文本输出为真正的HTML<br> v-bind (帮助标签动态绑定属性)</p> <p>v-if 指令 根据表达式的值的真假来判断 元素的执行</p> <h3>Node.js 学习</h3> </article> </div> </div> </div> <!--PC和WAP自适应版--> <div id="SOHUCS" sid="1698610799423074304"></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/1901907272603332608.htm" title="c++STL常用算法之排序算法——全面总结(附案例解析)(二十四)" target="_blank">c++STL常用算法之排序算法——全面总结(附案例解析)(二十四)</a> <span class="text-muted">磊磊cpp</span> <a class="tag" taget="_blank" href="/search/C%2FC%2B%2B/1.htm">C/C++</a><a class="tag" taget="_blank" href="/search/STL%E8%AF%A6%E7%BB%86%E6%95%99%E5%AD%A6/1.htm">STL详细教学</a><a class="tag" taget="_blank" href="/search/C%2B%2BSTL/1.htm">C++STL</a> <div>这里有C++STL——全面总结详细教程(附案例解析)(持续更新中)常用排序算法学习目标:掌握常用的排序算法算法简介:sort//对容器内元素进行排序random_shuffle//洗牌指定范围内的元素随机调整次序merge//容器元素合并,并存储到另一容器中reverse//反转指定范围的元素sort功能描述:对容器内元素进行排序函数原型:sort(iteratorbeg,iteratorend,</div> </li> <li><a href="/article/1901896059022536704.htm" title="[18] C++STL容器篇之链表list" target="_blank">[18] C++STL容器篇之链表list</a> <span class="text-muted">Cukor丘克</span> <a class="tag" taget="_blank" href="/search/C%2B%2B%E5%AD%A6%E4%B9%A0/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/%E9%93%BE%E8%A1%A8/1.htm">链表</a><a class="tag" taget="_blank" href="/search/c%2B%2B/1.htm">c++</a><a class="tag" taget="_blank" href="/search/list/1.htm">list</a> <div>C++STL容器篇之链表list文章目录C++STL容器篇之链表listC++STL的list的底层原理list的创建方式list的遍历方式list的一些常用的成员函数主函数测试一下C++STL的list的底层原理其实它的底层就是数据结构的双向链表。可以从头遍历,也可以从尾遍历的那个,但不是循环的。在STL中就把这样的一个双向链表封装成一个类,方便开发人员直接使用,避免重复造轮子。list的创建方</div> </li> <li><a href="/article/1901893407941390336.htm" title="DeepSeek重构产业生态:餐饮、金融与短视频的智能跃迁" target="_blank">DeepSeek重构产业生态:餐饮、金融与短视频的智能跃迁</a> <span class="text-muted">放逐者-保持本心,方可放逐</span> <a class="tag" taget="_blank" href="/search/%E5%85%B6%E4%BB%96/1.htm">其他</a><a class="tag" taget="_blank" href="/search/%E9%87%8D%E6%9E%84/1.htm">重构</a><a class="tag" taget="_blank" href="/search/%E9%87%91%E8%9E%8D/1.htm">金融</a> <div>引言:智能时代的产业共振在数字技术浪潮席卷全球的当下,DeepSeek作为人工智能领域的重要参与者,正以其强大的算法能力和多模态交互特性,深度渗透至餐饮、金融、短视频等民生关键领域。从长江之畔的烟火气到陆家嘴的金融脉搏,从市井小店的智能排班到跨国银行的风险定价,从美食博主的AI替身到探店经济的虚实融合,DeepSeek不仅重塑了传统行业的运营逻辑,更在消费升级与技术创新的交汇处,催生出新的商业范式</div> </li> <li><a href="/article/1901889373180325888.htm" title="B站SEO优化:解锁流量密码,让创作之花绽放" target="_blank">B站SEO优化:解锁流量密码,让创作之花绽放</a> <span class="text-muted">ckx666666cky</span> <a class="tag" taget="_blank" href="/search/%E6%90%9C%E7%B4%A2%E5%BC%95%E6%93%8E/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%B0%8F%E7%A8%8B%E5%BA%8F/1.htm">小程序</a><a class="tag" taget="_blank" href="/search/%E6%80%A7%E8%83%BD%E4%BC%98%E5%8C%96/1.htm">性能优化</a> <div>B站已从二次元爱好者的小众天地,蜕变为容纳百川的内容海洋。无数创作者如繁星般闪烁,而B站关键词排名优化(SEO)则是让你的星光更为璀璨的秘术。掌握这门技艺,你的创作便能穿越信息的迷雾,直达知音心间;忽视它,再精彩的内容也可能如珍珠沉入海底,无人问津。ckx666想象B站的算法如同一位严苛而公正的评委,666cky它用冷静的眼光审视每一件作品,通过复杂的评分体系决定内容的命运。了解这位评委的喜好,便</div> </li> <li><a href="/article/1901889372731535360.htm" title="iOS底层原理之Category分类实现原理解析" target="_blank">iOS底层原理之Category分类实现原理解析</a> <span class="text-muted">UaCode</span> <a class="tag" taget="_blank" href="/search/ios/1.htm">ios</a><a class="tag" taget="_blank" href="/search/%E5%88%86%E7%B1%BB/1.htm">分类</a><a class="tag" taget="_blank" href="/search/objective-c/1.htm">objective-c</a><a class="tag" taget="_blank" href="/search/%E7%BC%96%E8%AF%91%E5%8E%9F%E7%90%86/1.htm">编译原理</a> <div>Category是Objective-C中一种强大的特性,它允许我们向现有的类中添加新的方法,而无需修改原始类的源代码。在本文中,我们将深入探讨Category的实现原理,并提供相应的源代码示例。在Objective-C中,Category是一种用于扩展现有类的机制。通过Category,我们可以为现有的类添加新的方法,或者重写现有类的方法。使用Category,我们能够在不修改原始类的情况下,为</div> </li> <li><a href="/article/1901887101163597824.htm" title="探索高效查找的艺术:解锁二分查找的神奇力量" target="_blank">探索高效查找的艺术:解锁二分查找的神奇力量</a> <span class="text-muted">孤舟独钓寒江</span> <a class="tag" taget="_blank" href="/search/%E7%AE%97%E6%B3%95/1.htm">算法</a><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%BC%80%E5%8F%91%E8%AF%AD%E8%A8%80/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>在这个信息爆炸的时代,每一秒都有海量数据在我们指尖穿梭。想象一下,若能在眨眼间从这浩瀚数据中精准捕获所需信息,岂不是如同拥有超能力一般?而这,正是“二分查找”——这一算法界璀璨明珠所赋予我们的力量!文章目录跨越数据海洋的极速之旅:揭秘二分查找的非凡魅力!一、超速直击:二分查找,时间的魔术师!二、简约而不简单:算法之美,尽在掌握!三、解密二分查找的魔法公式向未来进发跨越数据海洋的极速之旅:揭秘二分查</div> </li> <li><a href="/article/1901868184336658432.htm" title="网络爬虫之urllib库" target="_blank">网络爬虫之urllib库</a> <span class="text-muted">db_zwm_2035</span> <a class="tag" taget="_blank" href="/search/%E7%88%AC%E8%99%AB/1.htm">爬虫</a> <div>目录前言:一、urllib库简介二、使用urllib.request获取网页内容三、处理URL和请求头部四、解析URLs和查询参数五、处理异常七、总结前言:随着互联网的快速发展,网络数据已经成为我们获取信息、解决问题的重要来源。网络爬虫作为获取网络数据的重要工具,越来越受到人们的关注。Python作为一种简单易学、功能强大的编程语言,在网络爬虫领域也得到了广泛的应用。在Python中,urllib</div> </li> <li><a href="/article/1901847239588900864.htm" title="Bluetooth Profile Specification之(AVRCP篇)5.0 AVRCP简介" target="_blank">Bluetooth Profile Specification之(AVRCP篇)5.0 AVRCP简介</a> <span class="text-muted">心跳包</span> <a class="tag" taget="_blank" href="/search/%E8%93%9D%E7%89%99%E7%AF%87%E4%B9%8B%E8%93%9D%E7%89%99%E5%8D%8F%E8%AE%AE%E8%A7%84%E8%8C%83/1.htm">蓝牙篇之蓝牙协议规范</a><a class="tag" taget="_blank" href="/search/%E8%93%9D%E7%89%99/1.htm">蓝牙</a> <div>蓝牙篇之BluetoothProfileSpecification深入详解汇总目录1.什么是AVRCP?2.协议栈模型关注文末微信公众号,回复【蓝牙规范】,即可获取AVRCP英文版协议。1.什么是AVRCP?字面意思音频/视频远程控制协议。AVRCP定义的命令和信息是通过AVCTP通过传输出去的。AVRCP协议不处理音视频流,支持这个协议的设备可以通过A2DP来分发流媒体数据。1.5版本到1.6版</div> </li> <li><a href="/article/1901806741943808000.htm" title="spring框架学习 - spring IoC 之 Bean定义继承 及 容器扩展点" target="_blank">spring框架学习 - spring IoC 之 Bean定义继承 及 容器扩展点</a> <span class="text-muted">TyuIn</span> <a class="tag" taget="_blank" href="/search/spring%E6%A1%86%E6%9E%B6/1.htm">spring框架</a><a class="tag" taget="_blank" href="/search/spring/1.htm">spring</a><a class="tag" taget="_blank" href="/search/java/1.htm">java</a><a class="tag" taget="_blank" href="/search/%E5%90%8E%E7%AB%AF/1.htm">后端</a><a class="tag" taget="_blank" href="/search/intellij-idea/1.htm">intellij-idea</a> <div>接上一篇博客:https://blog.csdn.net/qq_43605444/article/details/121948260?spm=1001.2014.3001.55028、Bean定义继承一个bean定义可以包含很多配置信息,包括构造函数参数、属性值和容器特定的信息,例如初始化方法、静态工厂方法名称等。子bean定义继承父定义的配置数据。子定义可以根据需要覆盖某些值或添加其他值。使用父</div> </li> <li><a href="/article/1901804845006909440.htm" title="5个月的精华:Spring/SpringBoot扩展点手册:手册在手,编码无忧:全网独一份 - 第451篇" target="_blank">5个月的精华:Spring/SpringBoot扩展点手册:手册在手,编码无忧:全网独一份 - 第451篇</a> <span class="text-muted">悟纤</span> <a class="tag" taget="_blank" href="/search/%E4%BB%8E%E9%9B%B6%E5%BC%80%E5%A7%8B%E5%AD%A6Spring/1.htm">从零开始学Spring</a><a class="tag" taget="_blank" href="/search/Boot/1.htm">Boot</a><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/spring/1.htm">spring</a><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/mybatis/1.htm">mybatis</a> <div>历史文章(文章累计450+)《国内最全的SpringBoot系列之一》《国内最全的SpringBoot系列之二》《国内最全的SpringBoot系列之三》《国内最全的SpringBoot系列之四》《国内最全的SpringBoot系列之五》导读第一篇扩展点文章发表于2022-05-16,至今到这一篇文章耗时5个月左右一方面是总结之前的文章,本文主要是对于这系列的扩展点概念和实战做个汇总。对于Spri</div> </li> <li><a href="/article/1901804088291553280.htm" title="Spring容器初始化之BeanFactoryPostProcessor和BeanPostProcessor" target="_blank">Spring容器初始化之BeanFactoryPostProcessor和BeanPostProcessor</a> <span class="text-muted">eighthspace</span> <a class="tag" taget="_blank" href="/search/Spring%E6%BA%90%E7%A0%81%E5%88%86%E6%9E%90%E8%AE%B0%E5%BD%95/1.htm">Spring源码分析记录</a><a class="tag" taget="_blank" href="/search/java/1.htm">java</a><a class="tag" taget="_blank" href="/search/spring/1.htm">spring</a> <div>本文仍然以ClasspathXmlApplicationContext为入口进行记录,通过之前对Spring的学习,我们已知ClasspathXmlApplicationContext构造方法中调用的this.refresh()方法是整个Spring容器初始化的核心方法,refresh()方法调用过程如下:publicvoidrefresh()throwsBeansException,Illega</div> </li> <li><a href="/article/1901798796875067392.htm" title="数据结构之栈" target="_blank">数据结构之栈</a> <span class="text-muted">泽0202</span> <a class="tag" taget="_blank" href="/search/%E6%95%B0%E6%8D%AE%E7%BB%93%E6%9E%84%E4%B8%8E%E7%AE%97%E6%B3%95/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.栈1.1定义:1.2基本操作:1.3代码实现1.3.1栈的初始化1.3.2栈的销毁1.3.3入栈1.3.4出栈1.3.5返回栈顶元素以及栈元素个数1.3.6判断栈是否为空1.栈1.1定义:栈是一种线性数据结构,它按照“先进后出”(FirstInLastOut,FILO)的原则存储和操作数据。这意味着最后插入栈中的元素会最先被取出,就像一摞盘子,最后放上去的盘子会最先被拿走。1.2基本操</div> </li> <li><a href="/article/1901794883862065152.htm" title="从零开始写C++3D游戏引擎(开发环境VS2022+OpenGL)之十一 从打光到材质 细嚼慢咽逐条读代码系列" target="_blank">从零开始写C++3D游戏引擎(开发环境VS2022+OpenGL)之十一 从打光到材质 细嚼慢咽逐条读代码系列</a> <span class="text-muted">金沙阳</span> <a class="tag" taget="_blank" href="/search/c%2B%2B/1.htm">c++</a><a class="tag" taget="_blank" href="/search/3d/1.htm">3d</a><a class="tag" taget="_blank" href="/search/%E6%B8%B8%E6%88%8F%E5%BC%95%E6%93%8E/1.htm">游戏引擎</a> <div>写在篇前的话作为一个曾经在代码堆里面苦苦挣扎的萌新,困惑的事情在于库,各种依赖,包换文件,链接库,纠结于代码的作用意义。尤其在3D引擎开发的问题上,很多人都被各种困难给阻拦,放弃了在3D渲染,3D游戏引擎上大涨鸿图的机会。当然关于3D游戏引擎的教程已经汗牛充栋,但是大部分的教程都是由过来人写的,代码中的逻辑与实现,在过来人眼中自然且简单,在初学者眼里却是晦涩繁杂,因此从一个初学者的角度来写一篇关于</div> </li> <li><a href="/article/1901790467410948096.htm" title="core-v-verif系列之cva6 cva6.py (5)" target="_blank">core-v-verif系列之cva6 cva6.py (5)</a> <span class="text-muted">CDerL</span> <a class="tag" taget="_blank" href="/search/core-v-verif/1.htm">core-v-verif</a> <div>cva6.pycva6.py文件是一个用于CORE-VCVA6项目的RISC-V随机指令生成器的回归测试脚本。它负责设置、编译和运行RISC-V指令集模拟器(ISS)和RTL模拟器的测试。以下是主要功能及其作用:SeedGen类:生成测试迭代的伪随机种子。get_generator_cmd:根据提供的模拟器和配置文件设置编译和模拟指令生成器的命令。parse_iss_yaml:解析ISS的YAML</div> </li> <li><a href="/article/1901782650620801024.htm" title="PyTorch 生态概览:为什么选择动态计算图框架?" target="_blank">PyTorch 生态概览:为什么选择动态计算图框架?</a> <span class="text-muted">小诸葛IT课堂</span> <a class="tag" taget="_blank" href="/search/pytorch/1.htm">pytorch</a><a class="tag" taget="_blank" href="/search/%E4%BA%BA%E5%B7%A5%E6%99%BA%E8%83%BD/1.htm">人工智能</a><a class="tag" taget="_blank" href="/search/python/1.htm">python</a> <div>一、PyTorch的核心价值PyTorch作为深度学习框架的后起之秀,通过动态计算图技术革新了传统的静态图模式。其核心优势体现在:动态灵活性:代码即模型,支持即时调试Python原生支持:无缝衔接Python生态高效的GPU加速:通过CUDA实现透明的硬件加速活跃的社区生态:GitHub贡献者超1.8万人,日均更新100+次二、动态计算图VS静态计算图对比#动态计算图示例(PyTorch)impo</div> </li> <li><a href="/article/1901781135835328512.htm" title="Manus工作原理:从“思考”到“执行”的AI智能体革命" target="_blank">Manus工作原理:从“思考”到“执行”的AI智能体革命</a> <span class="text-muted">rider189</span> <a class="tag" taget="_blank" href="/search/%E6%9D%82%E8%B0%88/1.htm">杂谈</a><a class="tag" taget="_blank" href="/search/java/1.htm">java</a><a class="tag" taget="_blank" href="/search/python/1.htm">python</a><a class="tag" taget="_blank" href="/search/%E4%BA%BA%E5%B7%A5%E6%99%BA%E8%83%BD/1.htm">人工智能</a> <div>读者专属福利:500G+java从入门到精通全套视频课程,加关注提供免费答疑——解析全球首款通用AI代理的底层逻辑引言:AI智能体的新标杆2025年3月,一款名为Manus的AI智能体横空出世,凭借其“自主思考并执行任务”的能力,迅速引爆科技圈与资本市场。它不仅能在云端异步处理复杂任务,还能交付完整成果,从简历筛选到旅行规划,从股票分析到教育课件制作,其应用场景之广令人惊叹。然而,Manus的爆火</div> </li> <li><a href="/article/1901777856556494848.htm" title="python之requests库" target="_blank">python之requests库</a> <span class="text-muted">qq_44659804</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/%E5%BC%80%E5%8F%91%E8%AF%AD%E8%A8%80/1.htm">开发语言</a> <div>python之requests库requests库请求方法示例get方法get方法访问百度的输出指定方法发送请求简单的requests请求例子response响应对象的text和content之间的区别发送带header的请求发送带参数的请求在headers参数中携带Cookie两种使用cookie的形式:1.2.超时参数(timeout)使用代理IP(proxies)使用verify参数忽略CA</div> </li> <li><a href="/article/1901764992454160384.htm" title="C++学习——动态内存与智能指针" target="_blank">C++学习——动态内存与智能指针</a> <span class="text-muted">十月翊安</span> <a class="tag" taget="_blank" href="/search/C%2B%2B%E5%AD%A6%E4%B9%A0/1.htm">C++学习</a><a class="tag" taget="_blank" href="/search/c%2B%2B/1.htm">c++</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>C++学习——动态内存与智能指针动态内存与智能指针shared_ptr类直接内存管理shared_ptr和new结合使用智能指针和异常unique_ptrweak_ptr动态内存与智能指针动态内存的管理是通过一对运算符来完成:new,在动态内存中为对象分配空间并返回一个指向该对象的指针,可以选择对对象进行初始化:delete,接受一个动态对象的指针,销毁该对象,并释放与之关联的内存。为了更容易(同</div> </li> <li><a href="/article/1901763732506210304.htm" title="大数据开发之Kubernetes篇----安装部署Kubernetes&dashboard" target="_blank">大数据开发之Kubernetes篇----安装部署Kubernetes&dashboard</a> <span class="text-muted">豆豆总</span> <a class="tag" taget="_blank" href="/search/kubernetes/1.htm">kubernetes</a> <div>Kubernetes简介由于公司有需要,需要将外后的服务外加Tensorflow模型部署加训练全部集成到k8s上,所以特意记录下这次简单部署的过程。k8s安装部署首先,我们在部署任何大型的组件前都必须要做的事情就是关闭防火墙和设置hostname了vi/etc/hostsk8s001xxx.xxx.xxx.xxk8s002xxx.xxx.xxx.xx...systemctlstopfirewall</div> </li> <li><a href="/article/1901757804910276608.htm" title="天道酬勤系列之Ruby 字符串(String)介绍" target="_blank">天道酬勤系列之Ruby 字符串(String)介绍</a> <span class="text-muted">技术小咖龙</span> <a class="tag" taget="_blank" href="/search/Ruby%E7%BC%96%E7%A8%8B%E9%A6%86/1.htm">Ruby编程馆</a><a class="tag" taget="_blank" href="/search/Ruby/1.htm">Ruby</a><a class="tag" taget="_blank" href="/search/%E5%AD%97%E7%AC%A6%E4%B8%B2%EF%BC%88String%EF%BC%89%E4%BB%8B%E7%BB%8D/1.htm">字符串(String)介绍</a> <div>Ruby字符串(String)Ruby中的String对象用于存储或操作一个或多个字节的序列。Ruby字符串分为单引号字符串(')和双引号字符串("),区别在于双引号字符串能够支持更多的转义字符。单引号字符串最简单的字符串是单引号字符串,即在单引号内存放字符串:'这是一个Ruby程序的字符串'如果您需要在单引号字符串内使用单引号字符,那么需要在单引号字符串使用反斜杠(\),这样Ruby解释器就不会</div> </li> <li><a href="/article/1901751753980833792.htm" title="《Python程序设计基础 》课堂笔记整理" target="_blank">《Python程序设计基础 》课堂笔记整理</a> <span class="text-muted">金土火</span> <a class="tag" taget="_blank" href="/search/Python/1.htm">Python</a><a class="tag" taget="_blank" href="/search/python/1.htm">python</a> <div>1数据1.1基本数据类型1.1.2数字类型x//yx与y整数商,即不大于x与y之商的最大整数x的y次幂,即(x+yj).real复数的实部;(x+yj).imag复数的虚部1.1.3优先级等于,顺序从右向左1.2组合数据类型1.2.1序列类型列表类型字符串使用双引号或单引号括起来的零个或多个字符,字符串是字符的序。1.正向递增序号:正向递增以最左侧字符序号为0,向右依次递增,最右侧字符序号为L-1</div> </li> <li><a href="/article/1901747459273584640.htm" title="DeepSeek 助力 Vue3 开发:打造丝滑的表格(Table)之添加列宽调整功能,示例Table14_14树形数据的固定表头表格" target="_blank">DeepSeek 助力 Vue3 开发:打造丝滑的表格(Table)之添加列宽调整功能,示例Table14_14树形数据的固定表头表格</a> <span class="text-muted">宝码香车</span> <a class="tag" taget="_blank" href="/search/javascript/1.htm">javascript</a><a class="tag" taget="_blank" href="/search/%E5%89%8D%E7%AB%AF/1.htm">前端</a><a class="tag" taget="_blank" href="/search/vue.js/1.htm">vue.js</a><a class="tag" taget="_blank" href="/search/ecmascript/1.htm">ecmascript</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/DeepSeek/1.htm">DeepSeek</a> <div>前言:哈喽,大家好,今天给大家分享一篇文章!并提供具体代码帮助大家深入理解,彻底掌握!创作不易,如果能帮助到大家或者给大家一些灵感和启发,欢迎收藏+关注哦目录DeepSeek助力Vue3开发:打造丝滑的表格(Table)之添加列宽调整功能,示例Table14_14树形数据的固定表头表格页面效果组件代码代码测试测试代码正常跑通,附其他基本代码编写路由src\router\index.js编写展示入口</div> </li> <li><a href="/article/1901747454584352768.htm" title="DeepSeek 助力 Vue3 开发:打造丝滑的表格(Table)之添加列宽调整功能,示例Table14_12自定义表头的固定表头表格" target="_blank">DeepSeek 助力 Vue3 开发:打造丝滑的表格(Table)之添加列宽调整功能,示例Table14_12自定义表头的固定表头表格</a> <span class="text-muted">宝码香车</span> <a class="tag" taget="_blank" href="/search/%23/1.htm">#</a><a class="tag" taget="_blank" href="/search/DeepSeek/1.htm">DeepSeek</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/vue.js/1.htm">vue.js</a><a class="tag" taget="_blank" href="/search/ecmascript/1.htm">ecmascript</a><a class="tag" taget="_blank" href="/search/DeepSeek/1.htm">DeepSeek</a> <div>前言:哈喽,大家好,今天给大家分享一篇文章!并提供具体代码帮助大家深入理解,彻底掌握!创作不易,如果能帮助到大家或者给大家一些灵感和启发,欢迎收藏+关注哦目录DeepSeek助力Vue3开发:打造丝滑的表格(Table)之添加列宽调整功能,示例Table14_12自定义表头的固定表头表格页面效果组件代码代码测试测试代码正常跑通,附其他基本代码编写路由src\router\index.js编写展示入</div> </li> <li><a href="/article/1901732833634873344.htm" title="手撕力扣之排序:排序数组、数组中的逆序对、排序链表、最小的k个数、数组中的第K个最大元素、前 K 个高频元素、根据身高重建队列、最大数、下一个排列、下一个更大元素 III、最大交换、字典序的第K小数字" target="_blank">手撕力扣之排序:排序数组、数组中的逆序对、排序链表、最小的k个数、数组中的第K个最大元素、前 K 个高频元素、根据身高重建队列、最大数、下一个排列、下一个更大元素 III、最大交换、字典序的第K小数字</a> <span class="text-muted">weixin_39770712</span> <a class="tag" taget="_blank" href="/search/%E6%95%B0%E6%8D%AE%E7%BB%93%E6%9E%84%E4%B8%8E%E7%AE%97%E6%B3%95/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><a class="tag" taget="_blank" href="/search/%E6%8E%92%E5%BA%8F%E7%AE%97%E6%B3%95/1.htm">排序算法</a><a class="tag" taget="_blank" href="/search/%E7%AE%97%E6%B3%95/1.htm">算法</a> <div>力扣912.排序数组给你一个整数数组nums,请你将该数组升序排列。方法一:归并排序classSolution{public:vectortmp;voidmergeSort(vector&nums,intl,intr){if(l>=r)return;intmid=(l+r)>>1;mergeSort(nums,l,mid);mergeSort(nums,mid+1,r);inti=l,j=mid+</div> </li> <li><a href="/article/1901710247647571968.htm" title="白话设计模式之(95):状态模式——优化代码状态管理的利器" target="_blank">白话设计模式之(95):状态模式——优化代码状态管理的利器</a> <span class="text-muted">一杯年华@编程空间</span> <a class="tag" taget="_blank" href="/search/%E7%99%BD%E8%AF%9D%E8%AE%BE%E8%AE%A1%E6%A8%A1%E5%BC%8F/1.htm">白话设计模式</a><a class="tag" taget="_blank" href="/search/%E8%AE%BE%E8%AE%A1%E6%A8%A1%E5%BC%8F/1.htm">设计模式</a><a class="tag" taget="_blank" href="/search/%E7%8A%B6%E6%80%81%E6%A8%A1%E5%BC%8F/1.htm">状态模式</a><a class="tag" taget="_blank" href="/search/ui/1.htm">ui</a> <div>白话设计模式之(95):状态模式——优化代码状态管理的利器大家好!在软件开发的学习过程中,我们都在不断探索如何让代码更加高效、灵活且易于维护。设计模式作为编程领域的重要工具,为我们解决各种复杂问题提供了有效的方案。今天,咱们深入探讨状态模式,它是一种优化代码状态管理的利器,能帮助我们处理对象在不同状态下的复杂行为。希望通过这篇博客,能和大家一起全面掌握状态模式,从基础概念到实际应用,深入理解其原理</div> </li> <li><a href="/article/1901694858536480768.htm" title="python之tkinter库的frame组件" target="_blank">python之tkinter库的frame组件</a> <span class="text-muted">谷晓光</span> <a class="tag" taget="_blank" href="/search/python/1.htm">python</a> <div>frame作用就是为了布局,将一组组件作为一个整体放在一个frame中,也方便对这一组组件进行控制。frame组件作为其他组件的框架,将布局分为一个个单独的空间,配合其他布局函数以实现复杂的界面布局。语法:Frame(父对象,参数列表,……)Frame(master=none,**options)(class)参数:参数名称属性举例或备注background或bg组件背景颜色borderwidth</div> </li> <li><a href="/article/1901692712852189184.htm" title="编程提示工程高级技巧:从入门到精通" target="_blank">编程提示工程高级技巧:从入门到精通</a> <span class="text-muted">SuperMale-zxq</span> <a class="tag" taget="_blank" href="/search/AI%E7%BC%96%E7%A8%8B%E2%80%94%E2%80%94%E7%A8%8B%E5%BA%8F%E5%91%98%E7%9A%84%E8%BF%9B%E9%98%B6%E4%B9%8B%E8%B7%AF/1.htm">AI编程——程序员的进阶之路</a><a class="tag" taget="_blank" href="/search/java/1.htm">java</a><a class="tag" taget="_blank" href="/search/python/1.htm">python</a><a class="tag" taget="_blank" href="/search/c%2B%2B/1.htm">c++</a><a class="tag" taget="_blank" href="/search/AI%E7%BC%96%E7%A8%8B/1.htm">AI编程</a><a class="tag" taget="_blank" href="/search/%E4%BA%BA%E5%B7%A5%E6%99%BA%E8%83%BD/1.htm">人工智能</a> <div>编程提示工程高级技巧:从入门到精通开篇:当代码与语言的边界变得模糊想象这样一个场景:一位开发者坐在电脑前,面对一个复杂的数据处理任务。传统做法是打开IDE,花几小时编写、调试和优化代码。但今天,他只是打开了AI编程助手,输入了这样一段文字:“创建一个Python函数,读取CSV文件中的销售数据,按季度汇总,并生成一个显示趋势的可交互图表。数据包含日期、产品ID、销售额和区域字段。”几秒钟后,屏幕上</div> </li> <li><a href="/article/1901669391649533952.htm" title="【 <二> 丹方改良:Spring 时代的 JavaWeb】之 Spring Boot 的自动配置:约定优于配置的设计美学" target="_blank">【 <二> 丹方改良:Spring 时代的 JavaWeb】之 Spring Boot 的自动配置:约定优于配置的设计美学</a> <span class="text-muted">Foyo Designer</span> <a class="tag" taget="_blank" href="/search/spring/1.htm">spring</a><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/java/1.htm">java</a><a class="tag" taget="_blank" href="/search/HikariCP/1.htm">HikariCP</a><a class="tag" taget="_blank" href="/search/Logback/1.htm">Logback</a> <div>点击此处查看合集https://blog.csdn.net/foyodesigner/category_12907601.html?fromshare=blogcolumn&sharetype=blogcolumn&sharerId=12907601&sharerefer=PC&sharesource=FoyoDesigner&sharefrom=from_link一、SpringBoot的自动配</div> </li> <li><a href="/article/1901649844427091968.htm" title="MYSQL数据备份与恢复(mysqldump)" target="_blank">MYSQL数据备份与恢复(mysqldump)</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/linux/1.htm">linux</a><a class="tag" taget="_blank" href="/search/adb/1.htm">adb</a> <div>MySQL备份之mysqldump表级别备份还原格式:mysqldump[OPTIONS]database[tables]实例:把db_user数据库中的tb_student数据表进行备份备份:#mysqldumpdb_usertb_student>/tmp/sqlbak/tb_student.sql-p还原:#mysql数据库名称/tmp/sqlbak/db_itheima.sql-p还原:#m</div> </li> <li><a href="/article/1901648073340284928.htm" title="python-git- GitHub" target="_blank">python-git- GitHub</a> <span class="text-muted">45度看我</span> <a class="tag" taget="_blank" href="/search/github/1.htm">github</a> <div>python之git-GitHub一:github原文链接二:WhatisGitHub1>创建仓库2>创建分支3>提交修改4>发起PullRequest三:理解GitHub流四:创建你的GitHub主页1>setting-->“Commitchanges”按钮五:典型的项目1>社区(TheCommunity)2>文档(TheDocs)3>Issue创建一个问题单4>PullRequest六:Git</div> </li> <li><a href="/article/119.htm" title="Spring中@Value注解,需要注意的地方" target="_blank">Spring中@Value注解,需要注意的地方</a> <span class="text-muted">无量</span> <a class="tag" taget="_blank" href="/search/spring/1.htm">spring</a><a class="tag" taget="_blank" href="/search/bean/1.htm">bean</a><a class="tag" taget="_blank" href="/search/%40Value/1.htm">@Value</a><a class="tag" taget="_blank" href="/search/xml/1.htm">xml</a> <div>Spring 3以后,支持@Value注解的方式获取properties文件中的配置值,简化了读取配置文件的复杂操作 1、在applicationContext.xml文件(或引用文件中)中配置properties文件 <bean id="appProperty" class="org.springframework.beans.fac</div> </li> <li><a href="/article/246.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>    mongoDB的分片。要mongos查询数据时候 先查询configsvr看数据在那台shard上,configsvr上边放的是metar信息,指的是那条数据在那个片上。由此可以看出mongo在做分片的时候咱们至少要有一个configsvr,和两个以上的shard(片)信息。     第一步启动两台以上的mongo服务 &nb</div> </li> <li><a href="/article/373.htm" title="OVER(PARTITION BY)函数用法" target="_blank">OVER(PARTITION BY)函数用法</a> <span class="text-muted">0624chenhong</span> <a class="tag" taget="_blank" href="/search/oracle/1.htm">oracle</a> <div>这篇写得很好,引自 http://www.cnblogs.com/lanzi/archive/2010/10/26/1861338.html OVER(PARTITION BY)函数用法 2010年10月26日 OVER(PARTITION BY)函数介绍 开窗函数        &nb</div> </li> <li><a href="/article/500.htm" title="Android开发中,ADB server didn't ACK 解决方法" target="_blank">Android开发中,ADB server didn't ACK 解决方法</a> <span class="text-muted">一炮送你回车库</span> <a class="tag" taget="_blank" href="/search/Android%E5%BC%80%E5%8F%91/1.htm">Android开发</a> <div>首先通知:凡是安装360、豌豆荚、腾讯管家的全部卸载,然后再尝试。   一直没搞明白这个问题咋出现的,但今天看到一个方法,搞定了!原来是豌豆荚占用了 5037 端口导致。 参见原文章:一个豌豆荚引发的血案——关于ADB server didn't ACK的问题 简单来讲,首先将Windows任务进程中的豌豆荚干掉,如果还是不行,再继续按下列步骤排查。 &nb</div> </li> <li><a href="/article/627.htm" title="canvas中的像素绘制问题" target="_blank">canvas中的像素绘制问题</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/canvas/1.htm">canvas</a> <div>pixl的绘制,1.如果绘制点正处于相邻像素交叉线,绘制x像素的线宽,则从交叉线分别向前向后绘制x/2个像素,如果x/2是整数,则刚好填满x个像素,如果是小数,则先把整数格填满,再去绘制剩下的小数部分,绘制时,是将小数部分的颜色用来除以一个像素的宽度,颜色会变淡。所以要用整数坐标来画的话(即绘制点正处于相邻像素交叉线时),线宽必须是2的整数倍。否则会出现不饱满的像素。 2.如果绘制点为一个像素的</div> </li> <li><a href="/article/754.htm" title="编码乱码问题" target="_blank">编码乱码问题</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/jvm/1.htm">jvm</a><a class="tag" taget="_blank" href="/search/jsp/1.htm">jsp</a><a class="tag" taget="_blank" href="/search/%E7%BC%96%E7%A0%81/1.htm">编码</a> <div>1、JVM中单个字符占用的字节长度跟编码方式有关,而默认编码方式又跟平台是一一对应的或说平台决定了默认字符编码方式;2、对于单个字符:ISO-8859-1单字节编码,GBK双字节编码,UTF-8三字节编码;因此中文平台(中文平台默认字符集编码GBK)下一个中文字符占2个字节,而英文平台(英文平台默认字符集编码Cp1252(类似于ISO-8859-1))。 3、getBytes()、getByte</div> </li> <li><a href="/article/881.htm" title="java 求几个月后的日期" target="_blank">java 求几个月后的日期</a> <span class="text-muted">darkranger</span> <a class="tag" taget="_blank" href="/search/calendar/1.htm">calendar</a><a class="tag" taget="_blank" href="/search/getinstance/1.htm">getinstance</a> <div>Date plandate = planDate.toDate(); SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd"); Calendar cal = Calendar.getInstance(); cal.setTime(plandate); // 取得三个月后时间 cal.add(Calendar.M</div> </li> <li><a href="/article/1008.htm" title="数据库设计的三大范式(通俗易懂)" target="_blank">数据库设计的三大范式(通俗易懂)</a> <span class="text-muted">aijuans</span> <a class="tag" taget="_blank" href="/search/%E6%95%B0%E6%8D%AE%E5%BA%93%E5%A4%8D%E4%B9%A0/1.htm">数据库复习</a> <div>关系数据库中的关系必须满足一定的要求。满足不同程度要求的为不同范式。数据库的设计范式是数据库设计所需要满足的规范。只有理解数据库的设计范式,才能设计出高效率、优雅的数据库,否则可能会设计出错误的数据库. 目前,主要有六种范式:第一范式、第二范式、第三范式、BC范式、第四范式和第五范式。满足最低要求的叫第一范式,简称1NF。在第一范式基础上进一步满足一些要求的为第二范式,简称2NF。其余依此类推。</div> </li> <li><a href="/article/1135.htm" title="想学工作流怎么入手" target="_blank">想学工作流怎么入手</a> <span class="text-muted">atongyeye</span> <a class="tag" taget="_blank" href="/search/jbpm/1.htm">jbpm</a> <div>工作流在工作中变得越来越重要,很多朋友想学工作流却不知如何入手。 很多朋友习惯性的这看一点,那了解一点,既不系统,也容易半途而废。好比学武功,最好的办法是有一本武功秘籍。研究明白,则犹如打通任督二脉。 系统学习工作流,很重要的一本书《JBPM工作流开发指南》。 本人苦苦学习两个月,基本上可以解决大部分流程问题。整理一下学习思路,有兴趣的朋友可以参考下。 1  首先要</div> </li> <li><a href="/article/1262.htm" title="Context和SQLiteOpenHelper创建数据库" target="_blank">Context和SQLiteOpenHelper创建数据库</a> <span class="text-muted">百合不是茶</span> <a class="tag" taget="_blank" href="/search/android/1.htm">android</a><a class="tag" taget="_blank" href="/search/Context%E5%88%9B%E5%BB%BA%E6%95%B0%E6%8D%AE%E5%BA%93/1.htm">Context创建数据库</a> <div>       一直以为安卓数据库的创建就是使用SQLiteOpenHelper创建,但是最近在android的一本书上看到了Context也可以创建数据库,下面我们一起分析这两种方式创建数据库的方式和区别,重点在SQLiteOpenHelper     一:SQLiteOpenHelper创建数据库:   1,SQLi</div> </li> <li><a href="/article/1389.htm" title="浅谈group by和distinct" target="_blank">浅谈group by和distinct</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/group+by/1.htm">group by</a><a class="tag" taget="_blank" href="/search/distinct/1.htm">distinct</a> <div>        group by和distinct只了去重意义一样,但是group by应用范围更广泛些,如分组汇总或者从聚合函数里筛选数据等。         譬如:统计每id数并且只显示数大于3 select id ,count(id) from ta</div> </li> <li><a href="/article/1516.htm" title="vi opertion" target="_blank">vi opertion</a> <span class="text-muted">征客丶</span> <a class="tag" taget="_blank" href="/search/mac/1.htm">mac</a><a class="tag" taget="_blank" href="/search/opration/1.htm">opration</a><a class="tag" taget="_blank" href="/search/vi/1.htm">vi</a> <div>进入 command mode (命令行模式) 按 esc 键 再按 shift + 冒号 注:以下命令中 带 $ 【在命令行模式下进行】,不带 $ 【在非命令行模式下进行】 一、文件操作 1.1、强制退出不保存 $ q! 1.2、保存 $ w 1.3、保存并退出 $ wq 1.4、刷新或重新加载已打开的文件 $ e 二、光标移动 2.1、跳到指定行 数字</div> </li> <li><a href="/article/1643.htm" title="【Spark十四】深入Spark RDD第三部分RDD基本API" target="_blank">【Spark十四】深入Spark RDD第三部分RDD基本API</a> <span class="text-muted">bit1129</span> <a class="tag" taget="_blank" href="/search/spark/1.htm">spark</a> <div>  对于K/V类型的RDD,如下操作是什么含义?   val rdd = sc.parallelize(List(("A",3),("C",6),("A",1),("B",5)) rdd.reduceByKey(_+_).collect  reduceByKey在这里的操作,是把</div> </li> <li><a href="/article/1770.htm" title="java类加载机制" target="_blank">java类加载机制</a> <span class="text-muted">BlueSkator</span> <a class="tag" taget="_blank" href="/search/java/1.htm">java</a><a class="tag" taget="_blank" href="/search/%E8%99%9A%E6%8B%9F%E6%9C%BA/1.htm">虚拟机</a> <div>java类加载机制 1.java类加载器的树状结构 引导类加载器 ^ | 扩展类加载器 ^ | 系统类加载器 java使用代理模式来完成类加载,java的类加载器也有类似于继承的关系,引导类是最顶层的加载器,它是所有类的根加载器,它负责加载java核心库。当一个类加载器接到装载类到虚拟机的请求时,通常会代理给父类加载器,若已经是根加载器了,就自己完成加载。 虚拟机区分一个Cla</div> </li> <li><a href="/article/1897.htm" title="动态添加文本框" target="_blank">动态添加文本框</a> <span class="text-muted">BreakingBad</span> <a class="tag" taget="_blank" href="/search/%E6%96%87%E6%9C%AC%E6%A1%86/1.htm">文本框</a> <div>  <script>     var num=1; function AddInput() {      var str="";     str+="<input </div> </li> <li><a href="/article/2024.htm" title="读《研磨设计模式》-代码笔记-单例模式" target="_blank">读《研磨设计模式》-代码笔记-单例模式</a> <span class="text-muted">bylijinnan</span> <a class="tag" taget="_blank" href="/search/java/1.htm">java</a><a class="tag" taget="_blank" href="/search/%E8%AE%BE%E8%AE%A1%E6%A8%A1%E5%BC%8F/1.htm">设计模式</a> <div>声明: 本文只为方便我个人查阅和理解,详细的分析以及源代码请移步 原作者的博客http://chjavach.iteye.com/ public class Singleton { } /* * 懒汉模式。注意,getInstance如果在多线程环境中调用,需要加上synchronized,否则存在线程不安全问题 */ class LazySingleton</div> </li> <li><a href="/article/2151.htm" title="iOS应用打包发布常见问题" target="_blank">iOS应用打包发布常见问题</a> <span class="text-muted">chenhbc</span> <a class="tag" taget="_blank" href="/search/ios/1.htm">ios</a><a class="tag" taget="_blank" href="/search/iOS%E5%8F%91%E5%B8%83/1.htm">iOS发布</a><a class="tag" taget="_blank" href="/search/iOS%E4%B8%8A%E4%BC%A0/1.htm">iOS上传</a><a class="tag" taget="_blank" href="/search/iOS%E6%89%93%E5%8C%85/1.htm">iOS打包</a> <div>这个月公司安排我一个人做iOS客户端开发,由于急着用,我先发布一个版本,由于第一次发布iOS应用,期间出了不少问题,记录于此。   1、使用Application Loader 发布时报错:Communication error.please use diagnostic mode to check connectivity.you need to have outbound acc</div> </li> <li><a href="/article/2278.htm" title="工作流复杂拓扑结构处理新思路" target="_blank">工作流复杂拓扑结构处理新思路</a> <span class="text-muted">comsci</span> <a class="tag" taget="_blank" href="/search/%E8%AE%BE%E8%AE%A1%E6%A8%A1%E5%BC%8F/1.htm">设计模式</a><a class="tag" taget="_blank" href="/search/%E5%B7%A5%E4%BD%9C/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/%E4%BC%81%E4%B8%9A%E5%BA%94%E7%94%A8/1.htm">企业应用</a><a class="tag" taget="_blank" href="/search/OO/1.htm">OO</a> <div> 我们走的设计路线和国外的产品不太一样,不一样在哪里呢?  国外的流程的设计思路是通过事先定义一整套规则(类似XPDL)来约束和控制流程图的复杂度(我对国外的产品了解不够多,仅仅是在有限的了解程度上面提出这样的看法),从而避免在流程引擎中处理这些复杂的图的问题,而我们却没有通过事先定义这样的复杂的规则来约束和降低用户自定义流程图的灵活性,这样一来,在引擎和流程流转控制这一个层面就会遇到很</div> </li> <li><a href="/article/2405.htm" title="oracle 11g新特性Flashback data archive" target="_blank">oracle 11g新特性Flashback data archive</a> <span class="text-muted">daizj</span> <a class="tag" taget="_blank" href="/search/oracle/1.htm">oracle</a> <div>1. 什么是flashback data archive Flashback data archive是oracle 11g中引入的一个新特性。Flashback archive是一个新的数据库对象,用于存储一个或多表的历史数据。Flashback archive是一个逻辑对象,概念上类似于表空间。实际上flashback archive可以看作是存储一个或多个表的所有事务变化的逻辑空间。 </div> </li> <li><a href="/article/2532.htm" title="多叉树:2-3-4树" target="_blank">多叉树:2-3-4树</a> <span class="text-muted">dieslrae</span> <a class="tag" taget="_blank" href="/search/%E6%A0%91/1.htm">树</a> <div>    平衡树多叉树,每个节点最多有4个子节点和3个数据项,2,3,4的含义是指一个节点可能含有的子节点的个数,效率比红黑树稍差.一般不允许出现重复关键字值.2-3-4树有以下特征:     1、有一个数据项的节点总是有2个子节点(称为2-节点)     2、有两个数据项的节点总是有3个子节点(称为3-节</div> </li> <li><a href="/article/2659.htm" title="C语言学习七动态分配 malloc的使用" target="_blank">C语言学习七动态分配 malloc的使用</a> <span class="text-muted">dcj3sjt126com</span> <a class="tag" taget="_blank" href="/search/c/1.htm">c</a><a class="tag" taget="_blank" href="/search/language/1.htm">language</a><a class="tag" taget="_blank" href="/search/malloc/1.htm">malloc</a> <div>/* 2013年3月15日15:16:24 malloc 就memory(内存) allocate(分配)的缩写 本程序没有实际含义,只是理解使用 */ # include <stdio.h> # include <malloc.h> int main(void) { int i = 5; //分配了4个字节 静态分配 int * p </div> </li> <li><a href="/article/2786.htm" title="Objective-C编码规范[译]" target="_blank">Objective-C编码规范[译]</a> <span class="text-muted">dcj3sjt126com</span> <a class="tag" taget="_blank" href="/search/%E4%BB%A3%E7%A0%81%E8%A7%84%E8%8C%83/1.htm">代码规范</a> <div>  原文链接 : The official raywenderlich.com Objective-C style guide 原文作者 : raywenderlich.com Team 译文出自 : raywenderlich.com Objective-C编码规范 译者 : Sam Lau </div> </li> <li><a href="/article/2913.htm" title="0.性能优化-目录" target="_blank">0.性能优化-目录</a> <span class="text-muted">frank1234</span> <a class="tag" taget="_blank" href="/search/%E6%80%A7%E8%83%BD%E4%BC%98%E5%8C%96/1.htm">性能优化</a> <div>从今天开始笔者陆续发表一些性能测试相关的文章,主要是对自己前段时间学习的总结,由于水平有限,性能测试领域很深,本人理解的也比较浅,欢迎各位大咖批评指正。 主要内容包括: 一、性能测试指标 吞吐量、TPS、响应时间、负载、可扩展性、PV、思考时间 http://frank1234.iteye.com/blog/2180305 二、性能测试策略 生产环境相同 基准测试 预热等 htt</div> </li> <li><a href="/article/3040.htm" title="Java父类取得子类传递的泛型参数Class类型" target="_blank">Java父类取得子类传递的泛型参数Class类型</a> <span class="text-muted">happyqing</span> <a class="tag" taget="_blank" href="/search/java/1.htm">java</a><a class="tag" taget="_blank" href="/search/%E6%B3%9B%E5%9E%8B/1.htm">泛型</a><a class="tag" taget="_blank" href="/search/%E7%88%B6%E7%B1%BB/1.htm">父类</a><a class="tag" taget="_blank" href="/search/%E5%AD%90%E7%B1%BB/1.htm">子类</a><a class="tag" taget="_blank" href="/search/Class/1.htm">Class</a> <div>  import java.lang.reflect.ParameterizedType; import java.lang.reflect.Type; import org.junit.Test; abstract class BaseDao<T> { public void getType() { //Class<E> clazz =</div> </li> <li><a href="/article/3167.htm" title="跟我学SpringMVC目录汇总贴、PDF下载、源码下载" target="_blank">跟我学SpringMVC目录汇总贴、PDF下载、源码下载</a> <span class="text-muted">jinnianshilongnian</span> <a class="tag" taget="_blank" href="/search/springMVC/1.htm">springMVC</a> <div>  ----广告-------------------------------------------------------------- 网站核心商详页开发 掌握Java技术,掌握并发/异步工具使用,熟悉spring、ibatis框架; 掌握数据库技术,表设计和索引优化,分库分表/读写分离; 了解缓存技术,熟练使用如Redis/Memcached等主流技术; 了解Ngin</div> </li> <li><a href="/article/3294.htm" title="the HTTP rewrite module requires the PCRE library" target="_blank">the HTTP rewrite module requires the PCRE library</a> <span class="text-muted">流浪鱼</span> <a class="tag" taget="_blank" href="/search/rewrite/1.htm">rewrite</a> <div>./configure: error: the HTTP rewrite module requires the PCRE library. 模块依赖性Nginx需要依赖下面3个包 1. gzip 模块需要 zlib 库 ( 下载: http://www.zlib.net/ ) 2. rewrite 模块需要 pcre 库 ( 下载: http://www.pcre.org/ ) 3. s</div> </li> <li><a href="/article/3421.htm" title="第12章 Ajax(中)" target="_blank">第12章 Ajax(中)</a> <span class="text-muted">onestopweb</span> <a class="tag" taget="_blank" href="/search/Ajax/1.htm">Ajax</a> <div>index.html <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/</div> </li> <li><a href="/article/3548.htm" title="Optimize query with Query Stripping in Web Intelligence" target="_blank">Optimize query with Query Stripping in Web Intelligence</a> <span class="text-muted">blueoxygen</span> <a class="tag" taget="_blank" href="/search/BO/1.htm">BO</a> <div>http://wiki.sdn.sap.com/wiki/display/BOBJ/Optimize+query+with+Query+Stripping+in+Web+Intelligence and a very straightfoward video http://www.sdn.sap.com/irj/scn/events?rid=/library/uuid/40ec3a0c-936</div> </li> <li><a href="/article/3675.htm" title="Java开发者写SQL时常犯的10个错误" target="_blank">Java开发者写SQL时常犯的10个错误</a> <span class="text-muted">tomcat_oracle</span> <a class="tag" taget="_blank" href="/search/java/1.htm">java</a><a class="tag" taget="_blank" href="/search/sql/1.htm">sql</a> <div>1、不用PreparedStatements   有意思的是,在JDBC出现了许多年后的今天,这个错误依然出现在博客、论坛和邮件列表中,即便要记住和理解它是一件很简单的事。开发者不使用PreparedStatements的原因可能有如下几个:   他们对PreparedStatements不了解   他们认为使用PreparedStatements太慢了   他们认为写Prepar</div> </li> <li><a href="/article/3802.htm" title="世纪互联与结盟有感" target="_blank">世纪互联与结盟有感</a> <span class="text-muted">阿尔萨斯</span> <div> 10月10日,世纪互联与(Foxcon)签约成立合资公司,有感。 全球电子制造业巨头(全球500强企业)与世纪互联共同看好IDC、云计算等业务在中国的增长空间,双方迅速果断出手,在资本层面上达成合作,此举体现了全球电子制造业巨头对世纪互联IDC业务的欣赏与信任,另一方面反映出世纪互联目前良好的运营状况与广阔的发展前景。 众所周知,精于电子产品制造(世界第一),对于世纪互联而言,能够与结盟</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>