第一章 基础语法
1 javascript 的简介
* 是基于对象和事件驱动的语言,应用于客户端。
  - 基于对象:
    ** 提供好了很多对象,可以直接拿过来使用
  - 事件驱动:
    ** html 做网站静态效果,javascript 动态效果
  - 客户端:专门指的是浏览器
* 特点:
  (1) 交互性(信息的动态交互)
  (2) 安全性(不可以直接访问本地硬盘)
  (3) 跨平台性(只要是可以解析 js 的浏览器都可以执行,和平台无关)
* javascript 和 java 的区别:(雷锋和雷锋塔)
  (1) javascript 是基于对象,java 面向对象
  (2) javascript 是弱类型语言,java 是强类型语言
    - 比如 java 里面不可以 int i = “10”;
    - js: var i = 10; var m = “10”;都可以
  (3) javascript 只需解析就可以执行,而 java 需要先编译成字节码文件,再执行。
* javascript 的组成
  三部分组成:
    (1)ECMAScript
      a) ECMA: 欧洲计算机协会
      b) 由 ECMA 组织制定 js 的语法、语句……
    (2)BOM
      a) browser object model :浏览器对象模型
    (3)DOM
      a) document object model :文档对象模型
 
2 js 和 html 的结合方式(两种)
第一种:
  - 使用一个标签<script type=”text/javascript”> js 代码; </script>
第二种:
  - 使用 script 标签,引入一个外部的 js 文件
    ** 创建一个 js 文件,写 js 代码,然后导入  - <script type=”text/javascript” src=”1.js”></script>
    ** 使用第二种方式的时候,就不要在 script 标签里写代码了,不会执行。
 
3 js 的原始类型和声明变量
** java 的基本数据类型 byte short int long float double char boolean
 
** 定义变量 都使用关键字 var
** js 的原始类型(五个)
  - string:字符串
    *** var str = “abc”;
  - number: 数字类型
    ***var m=123;
  - boolean: true 和 false
    *** var flag = true;
  - null
    *** var date = new Date();
    *** 获取对象的引用,null 表示对象引用为空,所有对象的引用也是 object
  - undefined
    *** 定义一个变量,没有赋值
    *** var aa;
    ** typeof(); 查看当前变量的数据类型
 
4 js 的语句
- java 里的语句:
  ** if 判断
  ** switch 语句
  ** 循环 for while do-while
- js 里面的这些语句
  ** if 判断语句
    条件如果直接写=号,那就是赋值操作。
  ** switch 语句
    与 java 中的一样。
  ** for 循环也和 java 中的一样,但要注意定义变量时使用 var,不要写成 java 的 int。
  ** i++ ++i 和 java 里面一样
 
5 js 的运算符
** 运算符和 java 里一样
** js 里面不区分整数和小数
  var j = 123;
  Alert(j/1000*1000);
  在 java 里得到结果是 0;在 js 里得到结果是 123.
** 字符串的相加和相减的操作
  var str = “123”;
  *** 如果相加的时候,做的是字符串连接
  *** 如果相减,做的事相减的运算
* 提示 NaN:表示不是一个数字
** boolean 类型也可以操作
  ***如果设置成 true,相当于这个值是 1
  ***如果设置成 false,相当于这个值是 0
** ==和===区别
  ** 做判断
    ** ==比较的只是值
    ** === 比较的是值和类型
** 引入知识
  直接向页面输出的语句(可以把内容显示在页面上)
  document.write(“aaa”);
  document.write(“<hr/>”);
  可以向页面输出变量,固定值和 html 代码
 
6 js 的数组
* 定义方式(三种)
  第一种: var arr = [1,2,3] ; var arr = [1,”4”,true] ;
  第二种: 使用内置对象 Array 对象
    var arr1 =new Array(5) ;//定义一个数组,长度是 5
    arr1[0] = “1”;
  第三种: 使用内置对象 Array
    var arr2 = new Array(3,4,5) ; //定义一个数组,元素是 3,4,5
* length:获取数组长度
* 数组可以存放不同数据类型的数据
 
7 js 的函数
*在 js 里面定义函数(方法)有三种方式
  ** 第一种方式:
    *** 使用到一个关键字 function
function 方法名(参数列表){
   方法体;
   返回值可有可无(根据实际需要)
}
//使用第一种方式创建函数:
function test(){
   alert(“qqq”);
}
//调用方法
//test();
//定义一个有参数的方法 实现两个数相加
function add1(a,b){
var sum = a+b;
alert(sum);
}
//add1(2,3);
//有返回值的效果
function add2(a,b,c){
var sum1 = a+b+c;
return sum1;
}
alert( add2(3,4,5) );
** 第二种方式:
*** 匿名函数
var add = function(参数列表){
方法体和返回值;
}
//第二种方式创建函数:
var add3 = function(m,n){
alert(m+n);
}
//调用方法
add3(5,6);
** 第三种方式:(用的少,了解)
*** 动态函数
//使用到 js 里面的一个内置对象 Function
var add = new Function (“参数列表”,”方法体和返回值”);
8 js 的全局变量和局部变量
全局变量:在 script 标签里面定义一个变量,这个变量在页面中 js 部分都可以使用
  - 可以在方法外部使用,在方法内部使用,在另一个 script 标签使用
局部变量:在方法内部定义一个变量,只能在方法内部使用
 
9 script 标签放置的位置
建议把 script 标签放到</body>后面
 
10 js 的 String 对象
** 创建 String 对象
  ***var str = “abc”;
** 方法和属性(详见 w3school)
  ***属性 length: 字符串长度
  ***方法
    (1)与 html 相关的方法
      - bold():加粗
      - fontcolor():设置字符串颜色
      - fontsize():设置字体的大小
      - link():将字符串显示成超链接
        *** str4.link(“hello.html”)
      - sub() sup():下标和上标
    (2)与 java 相似的方法
      - concat() : 连接字符串
      - charAt() :返回指定位置的字符串。字符位置不存在,返回空字符串
      - indexOf() :返回字符串位置。字符不存在,返回-1
      - split() : 切分字符串,成数组
      - replace(): 替换字符串
      - substr():从第几位开始,向后截取几位
      - substring():从第几位开始,到第几位结束,包左不包右
  
11 js 的 Array 对象
** 方法(常用)
  - concat():数组的连接
  - join() : 根据指定的字符分割数组。如 document.write( arr.join(“-”) );
  - push() : 向数组末尾添加元素,返回数组的新的长度(如果添加一个数组,那么被添加的整个数组会被看作一个元素)
  - pop() : 删除最后一个元素,并返回删除的那个元素
  - reverse() : 颠倒数组中的元素的顺序
 
12 js 的 Date 对象
** 在 java 里面获取当前时间
  Date date = new Date();
  //格式化
  //toLocaleString(); 直接格式化为中式表示法。
** js 里面获取当前时间
  var date = new Date() ;
  //转换成习惯格式
  Document.write( date.toLocaleString() );
  **获取当前年:getFullYear()
  **获取当前月:getMonth()
    ***返回的是 0-11 月,如果得到精确的值,加 1
    *** var date1 = date.getMonth()+1;
  **获取当前的星期:getDay()
    ***返回的是 0-6.
    ***外国人,把星期日作为一周的第一天,星期日返回的是 0,而星期一到星期六,返回的是 1-6
  **获取当前的日:getDate()
    ***返回当前的天 1-31
  **获取当前的小时:getHours()
  **获取当前的分钟:getMinutes()
  **获取当前的秒:getSeconds()
  **获取毫秒数:getTime()
    ***返回的是 1970.01.01 至今的毫秒数
    ***应用场景:
    ***使用毫秒数处理缓存的结果
 
13 js 的 Math 对象
**数学的运算
**里面的都是静态方法,可以直接使用 Math.方法()
  ** ceil(x):向上舍入(进一法)
  ** floor(x):向下舍入
  ** round(x):四舍五入
  ** random():得到随机数(伪随机数) - 得到 0-9 的随机数
    Math.random()*10
    Math.floor(Math.random()*10)
  
14 js 的全局函数
* 由于不属于任何一个对象,直接写名称使用。(要执行的内容写在括号里面)
  ** eval() : 执行 js 代码(如果字符串是一个 js 代码,使用此方法直接执行,也就是说,此方法会自动识别字符串里的 js 方法并执行了)
    *** var str = “alert(‘1234’);”;
    alert(str);//输出:alert(‘1234’);
    eval(str);//输出:1234
  ** encodeURI() :对字符进行编码
    decodeURI() :对字符进行解码
    encodeURIComponent() 和 decodeURIComponent() 跟上面俩功能一样,只是少了几个不编码字符。
  ** isNaN() : 判断当前字符串是否是数字(NaN 的意思是:不是数字)
    -- var str2 = “aaaa”;
     alert( isNaN(str2) );
     *** 如果是数字,返回 false
     *** 如果不是数字,返回 true
  ** parseInt() : 类型转换
  *** var str3 = “123”;
  document.write( parseInt(str3)+1 );//输出:124
15 js的函数的重载
** js 的重载是否存在? 不存在
** 调用最后一个方法
** 把传递的参数保存到了 arguments 数组里面
** js 里面是否存在重载?(面试题目)
(1)js 里面不存在重载。
(2)但是可以通过其他方式模拟重载的效果(通过 arguments数组来实现)
function add(){
  if(arguments.length==2){
    return arguments[0]+arguments[1];
  }
}
alert( add(1,2) );输出 3
 
第二章 javascript的 bom对象
 
** bom:browser object model 浏览器对象模型
** 有哪些对象?
  *** navigator: 获取客户机的信息(浏览器的信息)
    - navigator.appName
    - document.write(navigator.appName);//输出:浏览器的名字
  *** screen:获取屏幕信息
    - document.write(screen.width);//输出宽度
    - document.write(screen.height);//输出高度
  *** location:请求 url 地址
    - href 属性 *** 获取到请求的 url 地址
    - document.write( location.href );
    **** 设置 url 地址
    - 页面上安置一个按钮,按钮上绑定一个事件,当我点击这个按钮,页面可以跳转到另外一个界面
      - location.href = “hello.html”; //这是 function 里的方法体
      *** <input type=”button” value=”跳转” onclick=” href1(); ”/>
      - 鼠标点击事件 onclick = “js 的方法; ”
  *** history :请求的 url 的历史记录
    - 到访问的上一个页面
      history.back() ;
      history.go(-1) ;
    - 到访问的下一个页面
      history.forward() ;
      history.go(1) ;
  ****window:
    * 窗口对象
    * 顶层对象(所有的 bom 对象都是在 window 里面操作的)
      ** 方法
        - window.alert() : 页面弹出一个框,显示内容
      ** 简写 alert()
        - confirm() : 确认框
        - var flag = window.confirm(“显示的内容”);//返回 boolean类型
        - prompt() : 输入的对话框
        - window.prompt( “显示的内容” , ”输入框里的默认值” ) ;
        - open() : 打开一个新的窗口
      ** open(“打开的新窗口的 url 地址”, ” ”,”窗口特征,比如宽高”)
        - 创建一个按钮,点击这个按钮,打开一个新的窗口
        - window.open(“hello.html”, “ “ ,”width=200,height=100”);
        - close() : 关闭窗口(浏览器兼容性比较差)
        - window.close();
        - 做定时器
      ** setInterval ( “js 代码”, 毫秒数)
        - window.setInterval (“alert(‘123’);” , 3000);//表示每三秒,执行一次 alert 方法
      ** setTimeout(“js 代码”, 毫秒数)
        - 表示在毫秒数之后执行,但是只会执行一次
      ** clearInteval() : 清除 setInterval 设置的定时器
        var id1 = setInterval (“alert(‘123’);”,3000);//通过setInterval会有个返回值
        clearInterval (id1);//清除它
      ** clearTimeout() : 清除 setTimeout 设置的定时器
        var id2 = setTimeout (“alert(‘abc’),4000);
        clearTimeout (id2);
 
第三章 javascript的 dom对象
 
* dom: document object model 文档对象模型
  ** 文档:超文本文档(超文本标记文档)html 、xml
  ** 对象:提供了属性和方法
  ** 模型:使用属性和方法操作超文本标记型文档
    *** 可以使用 js 里面的 dom 里面提供的对象,使用这些对象的属性和方法,对标记型文档进行操作
    *** 要对标记型文档进行操作,首先需要对标记型文档里面的所以内容封装成对象
      -- 需要把 html 里面的标签、属性、文本内容都封装成对象
    *** 再解析标记型文档,解析过程如下
      根据 html 的层级结构,在内存中分配一个树形结构,需要把 html 中的每部分封装成对象:
        - document 对象:整个文档
        - element 对象:标签对象
        - 属性对象
        - 文本对象
          -- Node 节点对象:这个对象是这些对象的父对象
    *** 如果在对象里面找不到想要的方法,就去 Node 对象里找
 
** DOM 模型历史:
  DOM level 1:将 html 文档封装成对象。
  DOM level 2:在 level 1 的基础上添加新功能,如对事件和 css 样式的支持。
  DOM level 3:支持 xml1.0 的一些新特性。
*DHTML:是很多技术的简称
  ** html:封装数据
  ** css:属性值设置样式
  ** dom:操作 html 文档(标记型文档)
  **javascript:专门指的是 js 的语法语句(ECMAScript)
 
1 document 对象
* 表示整个的文档
  ** 常用方法
    *** write()方法:
      (1)向页面输出变量(值)
      (2)向页面输出 html 代码
    *** getElementById() ;
      - 通过 id 得到元素(标签)
      - //使用 getElementById 得到 input 标签
        var input1 = document.getElementById(“nameid”);//传递的参数是标签里面的 id 值
      //得到 input 里面的 value 值
        alert( input1.name ); // 标签对象.属性名称
      //向 input 里面设置一个值 value
        Input1.value = “bbb”;
    *** getElementsByName()
      - 通过标签的 name 的属性值得到标签
      - 返回的是一个集合(数组)
      - //使用 getElementsByName 得到标签     
var inputs = document.getElementsByName(“name1”);//传递的参数是标签里的 name 值
//alert(inputs.length);
//遍历数组
for(var i = 0;i<inputs.length;i++){ //通过遍历数组,得到每个标签里面的具体值
var input1 = inputs[i]; //每次循环得到 input 对象,赋值到 input1 里面
alert(input1.value); //得到每个 input 标签里面的 value 值
}
    *** getElementsByTagName(“标签名称”)
      - 通过标签名称得到元素
      - // 演示 getElementsByName
var inputs1 = document.getElementsByTagName(“input”); //传递的参数是标签名称
// alert(inputs1.length);
//遍历数组,得到每个 input 标签
for(var m=0;m<inputs1.length;m++){
//得到每个 input 标签
var input1 = inputs1(m);
//得到 value 值
alert(input1.value);
}
2 document 相关案例的补充方法:
  document.createElement(“标签名”) 创建相应标签
  document.createTextNode(“文本内容”) 创建文本
  要添加的.appendChild(被添加的对象) 添加子对象
 
3 元素对象(element 对象)
** 要操作 element 对象,首先必须要获取到 element
  - 使用 document 里面相应的方法获取
** 方法
  *** 获取属性里面的值
  getAttribute(“属性名称”)
    - var input1 = document.getElementById(“inputid”);
    //alert(input1.value);
    alert(input1.getAttribute(“value”));//此方法的优点在于,通过双引号,可以获取关键字的值。
  *** 设置属性的值
    input1.setAttribute(“class”,”haha”);//前面是属性名,后面是要设的值(也可以写成前面事件、后面方法)
  *** 删除属性
    input1.removeAttribute(“name”);
    ** 不能删除 value
** 想要获取标签下面的子标签,使用属性 childNodes,但是这个属性兼容性很差
** 获 得 标 签 下 面 子 标 签 的 唯 一 有 效 方 法 , 使 用 getElementByTagName 方法
    //获取 ul 下面的子标签
    //var lis = ulll.childNodes;
    //alert( lis.length );
    var lis = ulll.getElementsByTagName(“li”);
    alert(lis.length);
4 Node 对象属性
* nodeName
* nodeType
* nodeValue
* 使用 dom 解析 html 时候,需要 html 里面的标签,属性和文本都封装成对象
* 标签节点对应的值
  nodeType: 1
  nodeName:大写标签名称 比如 SPAN
  nodeValue:null
* 属性节点对应的值
  nodeType:2
  nodeName: 属性名称
  nodeValue: 属性的值
* 文本节点对应的值
  nodeType: 3
  nodeName: #text
  nodeValue: 文本内容
 
5 Node 对象属性
* 父节点
  - 如 ul 是 li 的父节点
  - parentNode 得到父节点
* 子节点
  - 如 li 是 ul 的子节点
  - childNodes: 得到所有子节点,但是兼容性很差
  - firstChild: 获取第一个子节点
  -//得到 ul
    var ul1 = document.getElementById( “ulid” ) ;
    //第一个子节点
    var li1 = ul1.firstChild;
  - lastChild: 获取最后一个子节点
* 同辈节点
  - nextSibling: 返回一个给定节点的下一个兄弟节点
  - previousSiling: 返回一个给定节点的上一个兄弟节点
6 操作 DOM 节点树
* 插入节点
  ** appendChild()
    - 添加子节点到末尾
    - 特点:类似于剪切粘贴的效果
  ** insertBefore( newNode, oldNode )
    - 在某个节点之前插入一个新的节点
    - 通过父节点插入
      // 如 ul.insertBefore( li2,li3);
    - 两个参数
      * 要插入的节点
      * 在谁之前插入
    - 插入一个节点,节点不存在,创建(标准的固定模式)
      1、创建标签
      2、创建文本
      3、把文本添加到标签下面
      // 没有 insertAfter()方法
* 删除节点
  ** removeChild()
    - 通过父节点删除,不能自己删除自己
    // 如 ul.removeChild( li2 );
* 替换节点
  ** replaceChild( newNode, oldNode )
    - 不能自己替换自己,通过父节点替换(跟插入的操作相似)
    - 两个参数
      ** 第一个参数:新的节点(替换成的节点)
      ** 第二个参数:旧的节点(被替换的节点)
* cloneNode( boolean) : 复制节点
    - 复制完后还是通过父节点去 appendChild()添加
    - 如 var ul2 = ul1.cloneNote( true );
7 innerHTML 属性
- 这个属性不是 dom 的组成部分,但是大多数浏览器都支持
第一个作用:获取文本内容
  *** //获取 span 标签
   var span1 = document.getElementById( “sid” );
   alert( span1.innerHTML );
第二个作用:向标签里面设置内容(可以是 html 代码)
  *** //向 div 里面设置内容<h1>AAA</h1>
    //获取到 div
    var div1 = document.getElementById( “div1” );
    //设置内容
    div1.innerHTML = “<h1>AAA</h1>”;
  *** 练习 :向 div 里添加一个表格
    var tab = “<table>”;
    tab += “</table>”;
    //相当于 var tab = “<table></table>”;
    div1.innerHTML = tab;
 
8 其他知识点:
* 复选框被选中: id.checked = true; (否则 false)
* 省市联动:
  *创建一个页面,有两个下拉选择框
  *在第一个下拉框里面有一个事件:改变事件 onchange 事件
    -方法 add(this.value);表示当前改变的 option 里面的 value 值
  写这道题得到的教训:
    (不知为何,这个 add 方法要加数字才行,如 add1(),不然显示参数错误)
    (js 代码要写一层 alert 一层,不然写完再调试有错会累死人的)
    (每层得到的值都要 var 一个新变量去接收,不然会出错,自己还看不出来)
*创建一个二维数组,存储数据
* 每个数组中第一个元素是国家名称,后面的元素是国家里面的城市
  /*  1、遍历二维数组
    2、得到也是一个数组(国家对应关系)
    3、拿到数组中的第一个值和传递过来的值作比较
    4、如果相同,获取到第一个值后面的元素
    5、得到 city 的 select
    6、添加过去(使用)appendChild 方法
    - 创建 option(三步) */
  注意:由于每次都要向 city 里面添加 option,第二次添加,会追加。所以每次添加前,判断一下 city 里面是否有 option,如果有,删除
 
9 表单提交方式
* 使用 submit 提交
<form>
……
<input type=”submit”/>
</form>
* 使用 button 提交表单
- 代码
 //实现提交方法
function form1() {
//获取 form
var form1 = document.getElementById( “form1” );
//设置 action
form1.action = “hello.html”;
//提交 form 表单
form1.submit();
}
* 使用超链接提交
- 代码
<a href = “hello.html ? username = 123456”>使用超链接提交</a>
(问号后面是要提交的信息)
* onclick : 鼠标点击事件
onchange :改变内容(一般和 select 一起使用)
onfocus:得到焦点
onblur:失去焦点
(比如 input 的文本输入,设置这两个方法,点击输入框,value=””,文
本框清空,点别的地方,value=”默认文字” ,文本框恢复显示默认文本)
注意点:
1、js 中 的 方法 也 可以用 href 调用 , 比如做 图 片 轮播 案 例时, 出 现 :href=”javascript:chang(1)”
2、找父节点的小方法:
例如
var obj ;
obj.parentNode.removeChild( obj );
此外想获取某些标签都不需要用 id,例如直接写 document.body
3、这个字符串拼接时的引号是一大问题:
双引号里面是一般是单引号(这里面可以再写双引号)
或者 \” 内容\” (然后内容里再单引号,再往里则双引号)。
例如: onclick = \” 方法名( ‘ 字符串 ”+变量值+ ” ‘ ) \”
总之,要想在字符串里拼入数值,引号得加到数值变色才行。
我觉得,在多层引号的情况下,一般都是单引号里面是字符串,双引号里面是数值

快速上手系列:JavaScript的更多相关文章

  1. 快速上手系列-C语言之指针篇(一)

    快速上手系列-C语言之指针篇(一) 浊酒敬风尘 发布时间:18-06-2108:29 指针的灵活运用使得c语言更加强大,指针是C语言中十分重要的部分,可以说指针是C语言的灵魂.当然指针不是万能的,但没 ...

  2. JS快速上手-基础Javascript

    1.1背景 1.1.1 ECMAScript与javascript ECMAScript是javascript的官方命名.因为java已经是一个商标.如今,一些早前收到过授权的公司,如Moailla, ...

  3. 使用 mongodb 的 Docker Image 快速上手系列 lab

    Docker 主要的概念 Dockerfile => 用來產生 docker image 用的(介紹) Image => 可以用來產生 docker container Container ...

  4. SpringBoot快速上手系列01:入门

    1.环境准备 1.1.Maven安装配置 Maven项目对象模型(POM),可以通过一小段描述信息来管理项目的构建,报告和文档的项目管理工具软件. 下载Maven可执行文件 cd /usr/local ...

  5. 【新手】【十分钟上手系列-一】快速开发vue插件

    2018.6.28 在这浮躁的前端娱乐圈,不会三两个新框架都觉得自己不是前端.哦,不是我说的.说到底.原生才是重中之重.加油. vue用了大半年多,一直在用ui库,插件等,没有自己的东西. 想想连个v ...

  6. [Android开发学iOS系列] 快速上手UIKit

    快速上手iOS UIKit UIKit是苹果官方的framework, 其中包含了各种UI组件, window和view, 事件处理, 交互, 动画, 资源管理等基础设施支持. 按照前面的介绍, 用U ...

  7. 从零开始学 Web 之 Ajax(三)Ajax 概述,快速上手

    大家好,这里是「 从零开始学 Web 系列教程 」,并在下列地址同步更新...... github:https://github.com/Daotin/Web 微信公众号:Web前端之巅 博客园:ht ...

  8. [Full-stack] 快速上手开发 - React

    故事背景 [1] 博客笔记结合<React快速上手开发>再次系统地.全面地走一遍. [2] React JS Tutorials:包含了JS --> React --> Red ...

  9. 快速上手 Echarts

    最近使用到了 百度的 Echarts 数据可视化工具,这里简单介绍如何快速上手. 一.下载 这里选择目前最新版本,4.2.1 地址:https://github.com/apache/incubato ...

  10. 前端开发工具包 WijmoJS 2019V1正式发布:全新的在线 Demo 系统,助您快速上手,开发无忧

    ​ 前端开发工具包WijmoJS在2019年的第一个主要版本2019V1已经发布,本次发布包括了更加易用的在线Demo系统.各控件新增功能.NPM 包的改动,以及全新的浏览器API组件. WijmoJ ...

随机推荐

  1. JS leetcode 回文数 题解分析,数学不好是硬伤

    壹 ❀ 引 每日一题环节,今天的一道是让我相信自己数学薄弱的题目,题目来源leetcode9. 回文数,题目描述如下: 判断一个整数是否是回文数.回文数是指正序(从左向右)和倒序(从右向左)读都是一样 ...

  2. NC15172 情人节的电灯泡

    题目链接 题目 题目描述 情人节到了,小芳和小明手牵手,打算过一个完美的情人节,但是小刚偏偏也来了,当了一个明晃晃的电灯泡,小明很尴尬,就和小刚说,我交给你个任务,你完成了我俩就带你玩,否则你就回家吧 ...

  3. Spring Boot图书管理系统项目实战-6.图书管理

    导航: pre:  5.读者管理 next:7.借阅图书 只挑重点的讲,具体的请看项目源码. 1.项目源码 需要源码的朋友,请捐赠任意金额后留下邮箱发送:) 2.页面设计 2.1 book.html ...

  4. 从零开始写 Docker(一)---实现 mydocker run 命令

    本文为从零开始写 Docker 系列第一篇,主要实现 mydocker run 命令,构造了一个具有基本的 Namespace 隔离的简单容器. 如果你对云原生技术充满好奇,想要深入了解更多相关的文章 ...

  5. windbg 学习

    常用的 windbg 命令 .ecxr 用来切换到异常发生时的上下文,主要用在分析静态 dump 文件的时候.当我们使用 .reload 命令去强制加载库的 pdb 文件后,需要执行 .ecxr 命令 ...

  6. 【Android 逆向】【攻防世界】Ph0en1x-100

    1. apk 安装到手机,老套路需要输入flag 2. jadx 打开apk,没有加壳 ...... public void onGoClick(View v) { String sInput = t ...

  7. maketrans和translate按规则一次性替换多个字符,用来替代replace

    str_ = 'i love you' compiler_ = str_.maketrans('i l y', 'I L Y') print(str_.translate(compiler_))

  8. java+文件实现的超市管理系统

    一.需求 1.使用java语言实现系统 2.数据存储使用io读写文件 3.超市的商品管理+销售功能 二.效果 商品列表 商品增删改查 购买 三.说明 1.开发工具/技术 java  eclipse 2 ...

  9. React 组件之属性

    如果你想要实现自己的梦想,就必须先拥有勇气去追求它. 1. React Props 属性 props 主要解决两个问题:复用性问题以及可以让组件之间通信. 属性 props 正常是外部传入的,组件内部 ...

  10. Entity Framework发布到IIS报错

    参考资料:https://www.cnblogs.com/mrma/p/5404584.html 报错信息 The Entity Framework provider type 'System.Dat ...