JavaScript知识点总结[部分]
变量
局部变量必须一个 var 开头,如果未使用var,则默认表示声明的是全局变量。
- <script type="text/javascript">
- // 全局变量
- name = 'musker';
- function func(){
- // 局部变量
- var age = 18;
- // 全局变量
- gender = "man"
- }
- </script>
注释
JavaScript中代码注释:
- 单行 //
- 多行 /* */
注意:此注释仅在Script块中生效。
数据类型
javascript中的数据类型分为原始类型和对象类型:
原始类型:字符串、数字、布尔值
对象类型:字典,数组 ......
特别的,数字、布尔值、null、undefined、字符串是不可变
- // null、undefined
- null是JavaScript语言的关键字,它表示一个特殊值,常用来描述“空值”。
- undefined是一个特殊值,表示变量未定义。
null和undefined
1.字符串(string)
字符串是由字符组成的数组,但在JavaScript中字符串是不可变的:可以访问字符串任意位置的文本,但是JavaScript并未提供修改已知字符串内容的方法。
常见功能:
- obj.length 长度
- obj.trim() 移除空白
- obj.trimLeft()
- obj.trimRight)
- obj.charAt(n) 返回字符串中的第n个字符
- obj.concat(value, ...) 拼接
- obj.indexOf(substring,start) 子序列位置
- obj.lastIndexOf(substring,start) 子序列位置
- obj.substring(from, to) 根据索引获取子序列
- obj.slice(start, end) 切片
- obj.toLowerCase() 大写
- obj.toUpperCase() 小写
- obj.split(delimiter, limit) 分割
- obj.search(regexp) 从头开始匹配,返回匹配成功的第一个位置(g无效)
- obj.match(regexp) 全局搜索,如果正则中有g表示找到全部,否则只找到第一个。
- obj.replace(regexp, replacement) 替换,正则中有g则替换所有,否则只替换第一个匹配项,
- $数字:匹配的第n个组内容;
- $&:当前匹配的内容;
- $`:位于匹配子串左侧的文本;
- $':位于匹配子串右侧的文本
- $$:直接量$符号
2. 数字(number)
JavaScript中不区分整数值和浮点数值,JavaScript中所有数字均用浮点数值表示。
- 转换:
- parseInt(..) 将某值转换成数字,不成功则NaN
- parseFloat(..) 将某值转换成浮点数,不成功则NaN
- 特殊值:
- NaN,非数字。可使用 isNaN(num) 来判断。
- Infinity,无穷大。可使用 isFinite(num) 来判断。
更多数值计算
- 常量
- Math.E
- 常量e,自然对数的底数。
- Math.LN10
- 10的自然对数。
- Math.LN2
- 2的自然对数。
- Math.LOG10E
- 以10为底的e的对数。
- Math.LOG2E
- 以2为底的e的对数。
- Math.PI
- 常量figs/U03C0.gif。
- Math.SQRT1_2
- 2的平方根除以1。
- Math.SQRT2
- 2的平方根。
- 静态函数
- Math.abs( )
- 计算绝对值。
- Math.acos( )
- 计算反余弦值。
- Math.asin( )
- 计算反正弦值。
- Math.atan( )
- 计算反正切值。
- Math.atan2( )
- 计算从X轴到一个点的角度。
- Math.ceil( )
- 对一个数上舍入。
- Math.cos( )
- 计算余弦值。
- Math.exp( )
- 计算e的指数。
- Math.floor( )
- 对一个数下舍人。
- Math.log( )
- 计算自然对数。
- Math.max( )
- 返回两个数中较大的一个。
- Math.min( )
- 返回两个数中较小的一个。
- Math.pow( )
- 计算xy。
- Math.random( )
- 计算一个随机数。
- Math.round( )
- 舍入为最接近的整数。
- Math.sin( )
- 计算正弦值。
- Math.sqrt( )
- 计算平方根。
- Math.tan( )
- 计算正切值。
3. 布尔类型(Boolean)
- 布尔类型仅包含真假
- == 比较值相等
- != 不等于
- === 比较值和类型相等
- !=== 不等于
- || 或
- && 且
4. 数组
常见功能:
- obj.length 数组的大小
- obj.push(ele) 尾部追加元素
- obj.pop() 尾部获取一个元素
- obj.unshift(ele) 头部插入元素
- obj.shift() 头部移除元素
- obj.splice(start, deleteCount, value, ...) 插入、删除或替换数组的元素
- obj.splice(n,0,val) 指定位置插入元素
- obj.splice(n,1,val) 指定位置替换元素
- obj.splice(n,1) 指定位置删除元素
- obj.slice( ) 切片
- obj.reverse( ) 反转
- obj.join(sep) 将数组元素连接起来以构建一个字符串
- obj.concat(val,..) 连接数组
- obj.sort( ) 对数组元素进行排序
语句
1. 条件语句
javascript中支持两个中条件语句,分别是:if 和 switch
- if(条件){
- }else if(条件){
- }else{
- }
if语句
- switch(name){
- case '1':
- age = 28;
- break;
- case '2':
- age = 38;
- break;
- default :
- age = 18;
- }
switch语句
2. 循环语句
javascript中for循环支持两种形式,同时也支持while循环
- var names = ["name1", "name2", "name3"];
- for(var i=0;i<names.length;i++){
- console.log(i);
- console.log(names[i]);
- }
for循环1
- var names = ["name1", "name2", "name3"];
- for(var index in names){
- console.log(index);
- console.log(names[index]);
- }
for循环2
- while(条件){
- // break;
- // continue;
- }
while循环
三元运算
格式:
- var v = 条件?成立:不成立
函数
1、基本函数
JavaScript中函数基本上可以分为一下三类:
- // 普通函数
- function func(arg){
- return true;
- }
- // 匿名函数
- var func = function(arg){
- return "tony";
- }
- // 自执行函数
- (function(arg){
- console.log(arg);
- })('123')
注意:对于JavaScript中函数参数,实际参数的个数可能小于形式参数的个数,函数内的特殊值arguments中封装了所有实际参数。
2、作用域
JavaScript中每个函数都有自己的作用域,当出现函数嵌套时,就出现了作用域链。当内层函数使用变量时,会根据作用域链从内到外一层层的循环,如果不存在,则异常。
切记:所有的作用域在创建函数且未执行时候就已经存在。
四句话理解javascript的作用域:
- 以函数为作用域(let)
- 函数的作用域在函数未被调用之前,已经创建
- 函数的作用域存在作用域链,并且也是在未被调用之前已被创建
- 函数内局部变量提前声明
- function f2(){
- var arg= 111;
- function f3(){
- console.log(arg);
- }
- return f3;
- }
- ret = f2();
- ret();
- function f2(){
- var arg= [11,22];
- function f3(){
- console.log(arg);
- }
- arg = [44,55];
- return f3;
- }
- ret = f2();
- ret();
注:声明提前,在JavaScript引擎“预编译”时进行。
3、闭包
闭包是指可以包含自由(未绑定到特定对象)变量的代码块。
「闭包」,是指拥有多个变量和绑定了这些变量的环境的表达式(通常是一个函数),因而这些变量也是该表达式的一部分。
闭包是个函数,而它「记住了周围发生了什么」。表现为由「一个函数」体中定义了「另个函数」
由于作用域链只能从内向外找,默认外部无法获取函数内部变量。闭包,在外部获取函数内部的变量。
- function f2(){
- var arg= [11,22];
- function f3(){
- return arg;
- }
- return f3;
- }
- ret = f2();
- ret();
4、面向对象
- function Foo (name,age) {
- this.Name = name;
- this.Age = age;
- this.Func = function(arg){
- return this.Name + arg;
- }
- }
- var obj = new Foo('musker', 18);
- var ret = obj.Func("dd");
- console.log(ret);
对于上述代码需要注意:
- Foo充当的构造函数
- this代指对象
- 创建对象时需要使用 new
上述代码中每个对象中均保存了一个相同的Func函数,从而浪费内存。使用原型和可以解决该问题:
- function Foo (name,age) {
- this.Name = name;
- this.Age = age;
- }
- Foo.prototype = {
- GetInfo: function(){
- return this.Name + this.Age
- },
- Func : function(arg){
- return this.Name + arg;
- }
- }
异常处理
- try {
- //这段代码从上往下运行,其中任何一个语句抛出异常该代码块就结束运行
- }
- catch (e) {
- // 如果try代码块中抛出了异常,catch代码块中的代码就会被执行。
- //e是一个局部变量,用来指向Error对象或者其他抛出的对象
- }
- finally {
- //无论try中代码是否有异常抛出(甚至是try代码块中有return语句),finally代码块中始终会被执行。
- }
注:主动抛出异常 throw Error('xxx')
其他
1. 转义
- decodeURI( ) URl中未转义的字符
- decodeURIComponent( ) URI组件中的未转义字符
- encodeURI( ) URI中的转义字符
- encodeURIComponent( ) 转义URI组件中的字符
- escape( ) 对字符串转义
- unescape( ) 给转义字符串解码
- URIError 由URl的编码和解码方法抛出
2.输入、输出
- 输入:
- prompt('提示内容') 弹窗输入
- 输出:
- alert('输出内容') 弹窗输出
- console.log('输出内容') console终端输出
3. 序列化
- JSON.stringify(obj) 序列化
- JSON.parse(str) 反序列化
4. eval
JavaScript中的eval是Python中eval和exec的合集,既可以编译代码也可以获取返回值。
- eval()
- EvalError 执行字符串中的JavaScript代码
5.正则表达式
1、定义正则表达式
- /.../ 用于定义正则表达式
- /.../g 表示全局匹配
- /.../i 表示不区分大小写
- /.../m 表示多行匹配
- JS正则匹配时本身就是支持多行,此处多行匹配只是影响正则表达式^和$,m模式也会使用^$来匹配换行的内容
- var pattern = /^Java\w*/gm;
- var text = "JavaScript is more fun than \nJavaEE or JavaBeans!";
- result = pattern.exec(text)
- result = pattern.exec(text)
- result = pattern.exec(text)
注:定义正则表达式也可以 reg= new RegExp()
2、匹配
JavaScript中支持正则表达式,其主要提供了两个功能:
- test(string) 检查字符串中是否和正则匹配
- n = 'uui99sdf'
- reg = /\d+/
- reg.test(n) ---> true
- # 只要正则在字符串中存在就匹配,如果想要开头和结尾匹配的话,就需要在正则前后加 ^和$
- exec(string) 获取正则表达式匹配的内容,如果未匹配,值为null,否则,获取匹配成功的数组。
- 获取正则表达式匹配的内容,如果未匹配,值为null,否则,获取匹配成功的数组。
- 非全局模式
- 获取匹配结果数组,注意:第一个元素是第一个匹配的结果,后面元素是正则子匹配(正则内容分组匹配)
- var pattern = /\bJava\w*\b/;
- var text = "JavaScript is more fun than Java or JavaBeans!";
- result = pattern.exec(text)
- var pattern = /\b(Java)\w*\b/;
- var text = "JavaScript is more fun than Java or JavaBeans!";
- result = pattern.exec(text)
- 全局模式
- 需要反复调用exec方法,来一个一个获取结果,直到匹配获取结果为null表示获取完毕
- var pattern = /\bJava\w*\b/g;
- var text = "JavaScript is more fun than Java or JavaBeans!";
- result = pattern.exec(text)
- var pattern = /\b(Java)\w*\b/g;
- var text = "JavaScript is more fun than Java or JavaBeans!";
- result = pattern.exec(text)
3、字符串中相关方法
- obj.search(regexp) 获取索引位置,搜索整个字符串,返回匹配成功的第一个位置(g模式无效)
- obj.match(regexp) 获取匹配内容,搜索整个字符串,获取找到第一个匹配内容,如果正则是g模式找到全部
- obj.replace(regexp, replacement) 替换匹配替换,正则中有g则替换所有,否则只替换第一个匹配项,
- $数字:匹配的第n个组内容;
- $&:当前匹配的内容;
- $`:位于匹配子串左侧的文本;
- $':位于匹配子串右侧的文本
- $$:直接量$符号
DOM
文档对象模型(Document Object Model,DOM)是一种用于HTML和XML文档的编程接口。它给文档提供了一种结构化的表示方法,可以改变文档的内容和呈现方式。我们最为关心的是,DOM把网页和脚本以及其他的编程语言联系了起来。DOM属于浏览器,而不是JavaScript语言规范里的规定的核心内容。
1.查找元素
1) 直接查找
- document.getElementById 根据ID获取一个标签
- document.getElementsByName 根据name属性获取标签集合
- document.getElementsByClassName 根据class属性获取标签集合
- document.getElementsByTagName 根据标签名获取标签集合
2) 间接查找
- parentNode // 父节点
- childNodes // 所有子节点
- firstChild // 第一个子节点
- lastChild // 最后一个子节点
- nextSibling // 下一个兄弟节点
- previousSibling // 上一个兄弟节点
- parentElement // 父节点标签元素
- children // 所有子标签
- firstElementChild // 第一个子标签元素
- lastElementChild // 最后一个子标签元素
- nextElementtSibling // 下一个兄弟标签元素
- previousElementSibling // 上一个兄弟标签元素
2.操作
1) 内容
- innerText 文本
- outerText
- innerHTML HTML内容
- innerHTML
- value 值
2) 属性
- attributes // 获取所有标签属性
- setAttribute(key,value) // 设置标签属性
- getAttribute(key) // 获取指定标签属性
- /*
- var atr = document.createAttribute("class");
- atr.nodeValue="democlass";
- document.getElementById('n1').setAttributeNode(atr);
- */
- <!DOCTYPE html>
- <html lang="en">
- <head>
- <meta charset="UTF-8">
- <title>Title</title>
- <style>
- .hide {
- display: none;
- }
- .c1 {
- position: fixed;
- left: 0;
- top: 0;
- right: 0;
- bottom: 0;
- background-color: black;
- opacity: 0.6;
- z-index: 9;
- }
- .c2 {
- wight: 500px;
- height: 400px;
- background-color: white;
- position: fixed;
- top: 50%;
- left: 50%;
- margin-left: -250px;
- margin-top: -200px;
- z-index: 10;
- }
- </style>
- </head>
- <body style="margin: 0;">
- <div>
- <input type="button" value="添加" onclick="showModel();">
- <input type="button" value="全选" onclick="ChooseAll();"/>
- <input type="button" value="取消" onclick="CleanAll();"/>
- <input type="button" value="反选" onclick="ReverseAll();"/>
- </div>
- <table border="1px">
- <thead>
- <tr>
- <!--<td><select><option>请选择</option></select></td>-->
- <td>请选择</td>
- <td>主机名</td>
- <td>端口</td>
- </tr>
- </thead>
- <tbody id="s1">
- <tr>
- <td><input type="checkbox"/></td>
- <td>1.1.1.1</td>
- <td>91</td>
- </tr>
- <tr>
- <td><input type="checkbox"/></td>
- <td>1.1.1.2</td>
- <td>92</td>
- </tr>
- <tr>
- <td><input type="checkbox" /></td>
- <td>1.1.1.3</td>
- <td>93</td>
- </tr>
- <tr>
- <td><input type="checkbox"/></td>
- <td>1.1.1.4</td>
- <td>94</td>
- </tr>
- </tbody>
- </table>
- </div>
- <!-- 遮罩层开始-->
- <div id='i1' class="c1 hide"></div>
- <!-- 遮罩层结束-->
- <!-- 弹框开始-->
- <div id='i2' class="c2 hide">
- <p><input type="text" value=" 主机名" /></p>
- <p><input type="text" value="端口" /></p>
- <p>
- <input type="button" value="确认" />
- <input type="button" value="取消" onclick="removeModel();" />
- </p>
- </div>
- <!-- 弹框结束-->
- <script>
- function showModel(){
- document.getElementById('i1').classList.remove('hide');
- document.getElementById('i2').classList.remove('hide');
- }
- function removeModel(){
- document.getElementById('i1').classList.add('hide');
- document.getElementById('i2').classList.add('hide');
- }
- function ChooseAll(){
- var tag = document.getElementById('s1');
- var tag_tr = tag.children;
- for (var i=0;i<tag_tr.length;i++){
- var tag_td = tag_tr[i].children;
- var input_tag = tag_td[0].children;
- input_tag[0].checked = true;
- }
- }
- function CleanAll() {
- var tag = document.getElementById('s1');
- var tag_tr = tag.children;
- for (var i=0;i<tag_tr.length;i++){
- var tag_td = tag_tr[i].children;
- var input_tag = tag_td[0].children;
- input_tag[0].checked = false;
- }
- }
- function ReverseAll(){
- var tag = document.getElementById('s1');
- var tag_tr = tag.children;
- for (var i=0;i<tag_tr.length;i++){
- var tag_td = tag_tr[i].children;
- var input_tag = tag_td[0].children;
- if (input_tag[0].checked){
- input_tag[0].checked = false;
- }else{
- input_tag[0].checked = true;
- }
- }
- }
- </script>
- </body>
- </html>
demo
3) class
- className // 获取所有类名
- classList.remove(cls) // 删除指定类
- classList.add(cls) // 添加类
4) 标签操作
- function addTag1(){ //使用字符串的方式添加标签
- var tag = "<p><input type='text' />";
- document.getElementById('i1').insertAdjacentHTML('beforeEnd',tag);
- //注意:第一个参数只能是'beforeBegin'、 'afterBegin'、 'beforeEnd'、 'afterEnd'
- }
- function addTag2() { //使用对象的方式添加标签
- var tag = document.createElement('input'); //添加input标签
- tag.setAttribute('type','text');
- tag.style.fontSize = '16px';
- tag.style.color = 'red'
- var p = document.createElement('p'); //添加p标签
- p.appendChild(tag); //将input标签添加到p标签内部
- document.getElementById('i1').appendChild(p);
- }
5) 样式操作
- var obj = document.getElementById('i1')
- obj.style.fontSize = "32px";
- obj.style.backgroundColor = "red";
6) 位置操作
- 总文档高度
- document.documentElement.offsetHeight
- 当前文档占屏幕高度
- document.documentElement.clientHeight
- 自身高度
- tag.offsetHeight
- 距离上级定位高度
- tag.offsetTop
- 父定位标签
- tag.offsetParent
- 滚动高度
- tag.scrollTop
- /*
- clientHeight -> 可见区域:height + padding
- clientTop -> border高度
- offsetHeight -> 可见区域:height + padding + border
- offsetTop -> 上级定位标签的高度
- scrollHeight -> 全文高:height + padding
- scrollTop -> 滚动高度
- 特别的:
- document.documentElement代指文档根节点
7) 提交表单
- document.geElementById('form').submit()
8) 其他操作
- console.log 输出框
- alert 弹出框
- confirm 确认框
- // URL和刷新
- location.href 获取URL
- location.href = "url" 重定向
- location.reload() 重新加载
- // 定时器
- setInterval 多次定时器
- clearInterval 清除多次定时器
- setTimeout 单次定时器
- clearTimeout 清除单次定时器
2.事件
属性 | 此事件发生在何时... |
onabort | 图像的加载被中断 |
onblur | 元素失去焦点 |
onchange | 域的内容被改变 |
onclick | 当前用户点击某个对象时调用的事件句柄 |
ondblclick | 当用户双击某个对象时调用的事件句柄 |
onerror | 在加载文档或图像时发生错误 |
onfocus | 元素获得焦点 |
onkeydown | 某个键盘按键按下 |
onkeypress | 某个键盘按钮被按下并松开 |
onkeyup | 某个键盘按键被松开 |
onload | 一张页面或一幅图像完成加载 |
onmousedown | 鼠标按钮被按下 |
onmousermove | 鼠标被移动 |
onmouseout | 鼠标从某个元素移开 |
onmouseover | 鼠标到某元素之上 |
onmouseup | 鼠标按键被松开 |
onreser | 重置按钮被点击 |
onresize | 窗口或框架被重新调整大小 |
onselect | 文本被选中 |
onsubmit | 确认按钮被点击 |
onunload | 用户退出页面 |
javascript词法分析
JavaScript代码运行前有一个类似编译的过程即词法分析,词法分析主要有三个步骤:
- 分析参数
- 再分析变量的声明
- 分析函数声明
具体步骤如下:
- 函数在运行的瞬间,生成一个活动对象(Active Object),简称AO
- 第一步:分析参数:
- 函数接收形式参数,添加到AO的属性,并且这个时候值为undefine,即AO.age=undefine
- 接收实参,添加到AO的属性,覆盖之前的undefine
- 第二步:分析变量声明:如var age;或var age=18;
- 如果上一步分析参数中AO还没有age属性,则添加AO属性为undefine,即AO.age=undefine
- 如果AO上面已经有age属性了,则不作任何修改
- 第三步:分析函数的声明:
- 如果有function age(){}把函数赋给AO.age ,覆盖上一步分析的值
下面以一个例子进行练练手:
- function func(age) {
- console.log(age);
- var age = 25;
- console.log(age);
- function age() {
- }
- console.log(age);
- }
- func(18);
分析:
1.分析函数参数
形式参数:AO.age = undefined
实参:AO.age = 18
2. 分析局部参数
因为第一步已有AO.age = 18,故第三行代码中的` var age = 25;`不做人格改变
即AO.age = 18
3. 分析函数声明
在第5行代码中有`function age() {};`函数,则将`function age() {};`交给AO.age
即AO.age = function age() {};
代码执行过程
在第2行代码运行时那道的age是词法分析后的AO.age,则结果为 function age() {};
在第3行代码运行时 值25赋给age,此时age = 25;
在第四行代码运行时,age已被赋值为25,则结果为25;
在第5、6行代码时,因为是一个函数表达式,不做任何的操作
在第7行代码运行时,age的值依然时25,故结果还为25
下面我们看一下运行结果:
JavaScript知识点总结[部分]的更多相关文章
- JavaScript知识点整理(一)
JavaScript知识点(一)包括 数据类型.表达式和运算符.语句.对象.数组. 一.数据类型 1) js中6种数据类型:弱类型特性 5种原始类型:number(数字).string(字符串).bo ...
- javascript知识点积累
8年javascript知识点积累 08年毕业就开始接触javascript,当时是做asp.net发现很多功能用asp.net控件解决不了,比如checkbox单选,全选问题,自动计算总价问题, ...
- Javascript:必须知道的Javascript知识点之“单线程事件驱动”
heiboard: Javascript:必须知道的Javascript知识点之“单线程事件驱动”
- Javascript知识点记录(三)设计模式
Javascript设计模式记录,这个方面确实是没写过,工作中也没有用到js设计模式的地方. prototype与面向对象取舍 使用prototype原型继承和使用面向对象,都可以实现闭包的效果.那么 ...
- Javascript知识点记录(二)
Javascript入门易,精通难,基本上是共识的一个观点.在这个篇幅里,主要对一些难点进行记录. 鸭子类型 Javascript属于动态类型语言的一种.对变量类型的宽容,给了很大的灵活性.由于无需类 ...
- 8年javascript知识点积累
08年毕业就开始接触javascript,当时是做asp.net发现很多功能用asp.net控件解决不了,比如checkbox单选,全选问题,自动计算总价问题,刷新问题,等等.那时感觉javascri ...
- javascript知识点记录(1)
javascript一些知识点记录 1.substring,slice,substr的用法 substring 和slice 都有startIndex 和 endIndex(不包括endInex),区 ...
- JavaScript知识点总结(命名规范,变量的作用域)
命名规范 有人说JavaScript的宽容性是这个语言最糟糕的方面之一.比如说想把2个数字加在一起,JavaScript会把其中一个数字解析成字符串,那么就会得到一个奇怪的字符串,而不是2个数字的和. ...
- 这些Javascript知识点,面试和平时开发都需要
No1.语法和类型 1.声明定义 变量类型:var,定义变量:let,定义块域(scope)本地变量:const,定义只读常量. 变量格式:以字母.下划线“_”或者$符号开头,大小写敏感. ...
- JavaScript知识点
Day 01 1.Javascript 概述 1.什么是Javascript (JS) Javascript 是一种运行于 JS解释器/引擎 中的解释型脚本语言 JS解释器/引擎 :JS运行环境 1. ...
随机推荐
- xxtea---单片机数据加密算法
转:https://www.cnblogs.com/LittleTiger/p/4384741.html 各位大侠在做数据传输时,有没有考虑过把数据加密起来进行传输,若在串口或者无线中把所要传的数据加 ...
- Java多线程编程核心技术(二)对象及变量的并发访问
本文主要介绍Java多线程中的同步,也就是如何在Java语言中写出线程安全的程序,如何在Java语言中解决非线程安全的相关问题.阅读本文应该着重掌握如下技术点: synchronized对象监视器为O ...
- Nginx+keepalived高可用配置实战(内附彩蛋)
1.整体架构图如下 2.环境准备 今天所配置的是keepalived+nginx 的负载均衡 下载keepalived软件 [root@LB01 tools]# wget http://www.kee ...
- windows 命令行操作 Mysql 数据库
1 前言 有接手一个新项目,项目中到了 Mysql 数据库 ,这里总结下 windows 命令行操作 Mysql 数据库. 2 Cmd操作数据库 2.1 连接Mysql服务器,命令如下:(root用户 ...
- mybatis入门 配置文件解释 及测试
这里介绍一下mybatis 根据mybatis的官网说明,mybatis是一款优秀的持久层框架,它支持定制化 SQL.存储过程以及高级映射.MyBatis 避免了几乎所有的 JDBC 代码和手动设置 ...
- mysql触发器,视图,游标
什么事触发器: 触发器是一中特殊的存储过程,主要是通过事件来触发而被执行的.它可以强化约束,来维护数据的完整性和一致性,可以跟踪数据库内的操作从而不允许未经许可的更新和变化.可以联级运算.如,某表上的 ...
- 18-vue-cli脚手架项目中组件的使用
在webpack-simple模板中,包括webpck模板.一个.vue文件就是一个组件. 为什么会这样呢?因为webpack干活了!webpack的将我们所有的资源文件进行打包.同时webpack还 ...
- lumen 5.6 设置APP_KEY为32位长的随机字符串
在 App\Console\Commands下 添加以下内容的KeyGenerateCommand.php文件 <?php namespace App\Console\Commands; use ...
- [转帖]Windows 操作系统有哪些原生的工具和软件不被人了解却很有用?
Windows 操作系统有哪些原生的工具和软件不被人了解却很有用? 蛋蛋 司马米青E1E1九木 https://www.zhihu.com/question/25343481/answer/30798 ...
- Linux(CentOS7)命令学习摘要
1. 修改机器名 hostnamectl set-hostname newname 2. hosts主机存放位置 /etc/hosts 3. 安装tigervncserver, 然后使用vncserv ...