一.简介

1.JavaScript一种直译式脚本语言,是一种动态类型、弱类型、基于原型的语言,内置支持类型,js不能操作文件。

重要的开始啦!!!!!

引入javascript:

行间js

  1. <div onclick="console.log()"</div>(代码耦合)
  2. <script> **<script>标签建议写在</body> 之前**

2.. 外部文件引入:

<script src="./ " </script>

3. 标识符: 编码中所要用到的名称都可以叫作标签符

4. 关键字: 关键字是特殊的标识符,关键字js事件都赋予了特定的含义。

5. 保留字: 保留字也是特殊的标识符,与关键字不同的是保留字并没有特定的含义,只是为了以后的扩展使用。用户也不能作为普通的标识符使用

6.数据类型:

number string boolean undefined null object array

二.JS的自增,自减的案例(面试):

1.前自增和后自增、前自减和后自减的区别。

自增(++):将变量的值加1,分前缀式(如++i)和后缀式(如i++)。前缀式是先加1再使用;后缀式是先使用再加1。

自减(--):将变量的值减1,分前缀式(如--i)和后缀式(如i--)。前缀式是先减1再使用;后缀式是先使用再减1。

z = z - ((--y) -(x--))

根据上面的分析:前缀式和后缀式的区别,这里的--y就是1,x--就是1,我们也就能得出z =3。

  1. 看看这道题:
  1. console.log(a++ + a + ++a - a + a++);(6+7+8-8+8
  2. a++ //先计算再加一
  3. ++a //先加一后计算
  4. var a=6;
  5. console.log( a++ == 6) //true
  6. console.log(++a==7) //true
  1. 对于以下,有
  1. var x = 5, y = 6, z;
  2. 题目1z = ++x + y++;
  3. 题目2z = ++x + x++;
  4. 题目3x = ++x + x++;
  5. 同一优先级的运算符的计算顺序是从右往左。
  6. Q1z = ++x + y++; 可以转化为:
  7. x = x +1;
  8. z = x + y;
  9. y = y + 1;
  10. 带入x = 5, y = 6,可得x = 6; z = 12; y = 7;
  11. Q2z = ++x + x++; 可以转化为:
  12. x = x +1;
  13. z = x + x;
  14. x = x + 1;
  15. 带入x = 5,可得x = 6; z = 6+6=12; x = 7; x=7,z=12
  16. Q3x = ++x + x++; 可以转化为:
  17. x = x +1;
  18. x = x + x;
  19. x = x + 1;

带入x = 5,可得x = 5+1=6; x = 6+6=12; x = 12+1=13; 故x=13。

三.随机数的基础应用:

Math.pow() 公式就是求一个数字的几次方.

随机数生成:parseInt(Math.random()*100+9);//生成随机数区间在9-100之间

  1. <script>
  2. // parseInt(Math.random()*100+9);//生成随机数区间在9-100之间
  3. // console.log(parseInt(Math.random()*100));//在1-100之间的随机整数
  4. var i = 1;
  5. var count =0;
  6. while(i<=7){
  7. var a=parseInt(Math.random()*10);
  8. var b=prompt('input')
  9. if(a==b){
  10. alert('')
  11. }
  12. i++;
  13. }if(a==b){
  14. count++;
  15. alert('恭喜中奖'+Math.pow(10,count))
  16. }else if(a!=b){
  17. alert('你没有中奖')
  18. }
  19. </script>
  20. 公式:Math.random()*num
  21. 运用用于数组:
  22. function app(arr){
  23. var num = Math.floor(Math.random()*(arr.length-1));
  24. var name1 = arr[num].name
  25. return name1
  26. }

四.运算符的难点记忆点(基本用于面试,工作中也有用到)

关系运算符:

  1. Infinity + 1000 //Infinity
  2. Infinity - 1000 //Infinity
  3. Infinity / 1000 //Infinity
  4. Infinity - Infinity //NaN
  5. Infinity /Infinity //NaN
  6. Infinity * Infinity //Infinity
  7. 0 / 0 //NaN
  8. 6 / 0 //Infinity
  9. NaN / 8 //NaN
  10. null == 0
  11. NaN == NaN //false
  12. NaN === NaN //false

五.比较运算符的注意事项:

  • 0只是一个占位符;
  • string 和 number比,string会被隐式转换为number,反之一样.
  • === 是全等判断,要比较数值还有类型,
  • string 和 string 也能够进行关系运算,比较的就是字符编码顺序。(ASCII表可知)
  • false: null, 0, NaN, 空字符串(""),undefined(默认值为false),其他默认值为true.

六.三元运算符:

条件 ? val1 : val2 ;(判断为true时执行val,反之false执行val2)

七.自动类型转换和强制类型转换

a:自动类型转换:

除了 + 和++(自增) , --(自减)外,其他的都是运算时自动转换成number;

注意:特殊情况

  1. var str = '1';
  2. console.log(str++); // 1
  3. console.log(++str); // 3
  4. 这种时候不会报错,

b:强制类型转换:

1.构造函数 ----var num = new Number('11') ----typeof(object)

2.转换函数 ----var num = Number(' ') ----typeof(number)

3. parseInt() ----- parseFloat()

conlose.log(Number('123a')) //NaN

  1. var boo = new Boolean('false') //true
  2. var boo = Boolean(NaN)
  3. toString() (该方法返回对象的字符串)

    new string() string()
  4. value+=' ' (字符串拼接)

八.if.....else....的案例

  1. 1.if(这一年是100的整数倍){
  2. if(年份除以400能整除){
  3. alert("是闰年");
  4. }else{
  5. alert("不是闰年");
  6. }
  7. }else{
  8. //这年不是100的整数倍
  9. if(年份除以4能整除){
  10. alert("是闰年");
  11. }else{
  12. alert("不是闰年");
  13. }
  14. }

2.标准完整结构

  1. if(){ (写布尔值或者可以代替布尔的数字或者字符串)
  2. }else if(){
  3. }else if()
  4. }else{
  5. }

注意:else只能有一个,并且放到最后.(可以没有else)

九.switch case语句

  1. switch(待检测值){
  2. case 1 :
  3. 1 待检测值 相同时做的事情(case后的常量会比较值和类型 ===)
  4. break;
  5. case 2 :
  6. 2 待检测值 相同时做的事情
  7. break;
  8. default:
  9. }

注意:如果没有break,程序就会一直执行下去.

注意:if while do/while for {}可以不写,但是这些的控制流语句有效输出范围只有离它最近的一条语句.

十.for循环

1.js中流程控制语句:条件分支,循环语句

  1. 2.for(var i=1 ; i<=n ; i++){
  2. console.log(i);
  3. }

注意:要在循环语句中写循环变量,才可循环输出.

3.var sum = 1; //累乘器,累乘器的初值是1; var sum = 0; //累加器(在for循环外面写,否则 会错误)

4.案例

a.求解1-100能被3整除的所有数字的和.

  1. <script>
  2. var sum = 0;(定义变量保存和)
  3. //遍历1-100的所有整数
  4. for(i=1 ; i<=100 ; i++){
  5. //判断是否能被3整除
  6. if(i%3==0){
  7. //求和
  8. sum+=i;
  9. }
  10. }
  11. console.log(sum);
  12. </script>

b.

  1. <script>
  2. // 遍历条件中的年份
  3. for(i=2000 ; i<=2100 ;i++){
  4. //判断是否是闰年
  5. if(i%4==0 && i%100!=0 || i%400==0){
  6. console.log(i)
  7. }
  8. }
  9. </script>

注意:先注意书写的规范和逻辑顺序,最后打印应在for循环外;输出的位置.

c.更新循环变量也可以双向增减

  1. <script>
  2. //打印1-10之间的整数,顺序为10-1;
  3. for(var i=10 ; 1>=1 ;i--){
  4. console.log(i)
  5. }
  6. </script>

d.更新循环变量是一个赋值运算

  1. <script>
  2. //打印1,4,7,10--100,之间的数字
  3. for(var i=1 ; i<=100 ; i+=3){
  4. console.log(i)
  5. }
  6. </script>

e.for循环的嵌套

外层循环代表行,内层循环代表列

  1. <script>
  2. //需求打印*****(五行)
  3. for(var i=1 ; i<=5 ;i++){
  4. for(var j=1 ; i<=5 ; j++){
  5. document.write("*")
  6. }
  7. document.write("<br>")
  8. }
  9. </script>
  10. i=1
  11. j=1 j=2 j=3 j=4 j=5

f.不规则的行和列计算(找规律)

*

**



行:i 列:j(j始终小于i)

  1. <script>
  2. for(var i=0 ; i<=3 ;i++){
  3. for(var j=0 ; j<=i ;j++){
  4. document.write("*")
  5. }
  6. document.write("<br>")
  7. }
  8. </script>

g.打印三行三列的表格

  1. <script>
  2. document.write("<table>")
  3. for (var i = 0; i < 3; i++) {
  4. document.write("<tr>")
  5. document.write("</tr>")
  6. }
  7. document.write("</table>")
  8. </script>

h.死循环

  1. for( ;; ){}
  2. while(ture){
  3. }

i.终止循环语句

break:强制跳出当前循环(跳出后面循环变量的所有取值)

注意:在没有指明跳出具体哪个循环,就默认跳出当前循环;

contiune:终止本次循环,继续下次循环.

g.

  1. for(var i = 1 ; i <= 10; i++){
  2. console.log(i);
  3. if(i == 5){
  4. break; //找到了一个,就立即终止循环输出1,2,3,4
  5. }
  6. }
  7. //换为continue;是不输出5;输出1,2,3,4,6,7,8,9,10

h.

  1. <script>
  2. wai:for(var i=1 ; i<=5 ;i++){
  3. nai:for(var j=1 ; j<=5 ;j++){
  4. if(j==3){
  5. break; (break wai;)
  6. }
  7. document.write("*")
  8. }
  9. document.write("<br>")//每行结束换行
  10. }
  11. </script>

换成 continue时就输出一行,跳过了
;

十一.简单函数

概念:对一段代码进行封装,函数不会主动运行(需要手动调用),并且可以多次使用(方法,API,功能)

函数也是一种数据类型(引用数据类型),把函数赋值给一个变量是可行.

a.减少代码的冗余

b.方便后期对代码的维护

1.函数声明式

  1. function 函数名(){
  2. 函数体
  3. }

2.函数调用: 函数名()

注意:定义函数时,定义好的函数会自动提升位置,提升到scricp开始标签的开始位置

可以在任意位置调用.

  1. <script>
  2. function printHello(){
  3. console.log("hello")
  4. }
  5. printHello();
  6. </script>

3.函数表达式

  1. var 变量 = function(){
  2. 函数体
  3. }

注意: 没有名称的函数,变量名相当于函数名.

函数定义好后不会提升位置,只能在定义的函数之后使用.

4.函数名的命名规则

a.不能使用简单字符(如a,b,c)

b.遵循小驼峰规则

c.

  1. var fun
  2. fun=myFun
  3. fun();
  4. console.log(fun())
  5. fun=null;语法错误,会调用失败因为null把它清空

十二.函数的作用域(案列)

  1. <script>
  2. var b=1;
  3. // var count=0;写在这里,函数里面计数器的第二次不会清零;
  4. var a = prompt('input');
  5. function yuege(num){
  6. var c=1;
  7. var count=0;//计数器放在函数中才会起到作用.
  8. for(var i=1 ; i<=num ;i++){
  9. if(num%i==0){
  10. count++;
  11. }
  12. }
  13. alert(count);
  14. console.log(b);
  15. // return count;
  16. }
  17. yuege(a);
  18. yuege(9);
  19. console.log(c);
  20. // alert(yuege(a));
  21. // alert(count);
  22. //函数的作用域中,函数之外的不能调用函数里面的
  23. //如果在函数外面要调用,就必须加return返回参数,才可以调用
  24. //在函数中可以调用函数
  25. </script>

十三.形参和实参

1.function 函数名(参数1,参数2,....,参数n){

函数体

}

函数名(参数1,参数2,....,参数n)

形参是一个变量,形参和实参是一一对应的关系

  1. <script>
  2. //打印任意行列的*的方法
  3. function printstar(a,b){
  4. for(var i=1 ; i<=a ;i++ ){
  5. for(var j=1 ; j<=b ;j++){
  6. document.write("*")
  7. }
  8. document.write("<br>")
  9. }
  10. }
  11. printstar(4,4)

十四.玩转函数逻辑思维方法

a.确定函数名

b.确定参数个数.

c.简单实现任意两个数的和方法

d.封装函数:用形参代替实际函数

e.调用函数,测试是否正确

//打印任意两个数和的方法

  1. function printSum(num1, num2) {
  2. var sum = num1 + num2;
  3. console.log(sum);
  4. }
  5. printSum(20,20);

f.带有返回值的函数

  1. function 函数名(参数1,参数2,....,参数n){
  2. return 函数执行后的结果
  3. }
  4. a.确定函数名
  5. b.确定参数个数.
  6. c.确定是否需要返回值,需要
  7. d.简单实现功能
  8. e.封装函数(首先形参代替实际数据 其次再用return替换输出)

注意: a:不管函数中有多少个返回值,函数执行遇到第一次return就结束;

b:但是在if的多条件判断中,每个else if下用return 对此并没有相互影响;

c:return后面可以没有返回数据(undifind)

十五.表格的封装

1.设计任意行数和列数表格的功能:

  1. function table(row, col) {
  2. d("<table>"); //d是引入的函数
  3. //设置表格中的行
  4. for (var i = 1; i <= row; i++) {
  5. d("<tr>")
  6. //设置表格中的列
  7. for (var j = 1; j <= col; j++) {
  8. //列开始
  9. d("<td>")
  10. //列结束
  11. d("</td>")
  12. }
  13. //行结束
  14. d("</tr>")
  15. }
  16. d("</table>")
  17. }
  18. table(3, 3);

十六.变量的作用域

作用范围不同:

a. 全局变量:在函数为外部定义的变量.

b.局部变量:在函数内部定义的变量.

作用范围:在整个脚本中可以使用

作用范围:只能在定义它的函数内使用

十七.递归函数

前提:

a.必须是一个函数

b.必须要有一个递归出口(对函数中的参数进行判断),参数需要满足一定条件才可调用函数.

  1. <script>
  2. /* let value = jiecheng(6)
  3. function jiecheng(num){
  4. if(1==num)
  5. return 1;
  6. return num * jiecheng(num -1)
  7. } */
  8. let jiecheng= (num)=>{return 1==num?1:num * jiecheng(num -1)}
  9. console.log(jiecheng(6))

十八.闭包(工作中,面试基本会问的)

以下是产生闭包的几个例子(自我体会):

  1. 1.function fn1() {
  2. var name = 'iceman';
  3. function fn2() {
  4. console.log(name);
  5. }
  6. fn2();
  7. }
  8. fn1();
  1. 2.function fn1() {
  2. var name = 'iceman';
  3. function fn2() {
  4. console.log(name);
  5. }
  6. return fn2;
  7. }
  8. var fn3 = fn1();
  9. fn3();

十九.数组

1.var arr = new Array() //空数组

使用new只写了一个数字,表示的是数组长度

  1. var arr = [ ];
  2. arr[0] = '1'; //赋值(利用下标,其中可放任意值)
  3. arr[" name "] = " " --->可以是字符串(不会改变长度,但是一些作用于数组元素的方法和属性不 能作用于它)
  4. arr [arr1.length - 1] // 找元素的位置
  5. for(i=0 ; i <arr.length ; i++)(++i, i+=)
  6. for(i=arr.length-1; i>=0 ;i--)
  7. arr[arr.length] = value (始终在最后添加元素)

2.数组最后一个元素后面不要添加 , (逗号)--->兼容性问·题导致下标不同

  1. var arr=[ .... ]
  2. var newArr = [arr.length+1]
  3. newArr[0] = num
  4. for(var i=0;i<arr.length;i++){
  5. newArr[i+1]= arr[i]
  6. }
  7. arr = newArr

(从首位开始添加元素)

3.删除其中的某个元素

  1. var arr = [1,2,5,3,8,9,7]
  2. for(i=0 ; i<arr.length ;i++){
  3. if(2<i){
  4. arr[i-1]=arr[i]
  5. }
  6. }
  7. arr.length = arr.length-1
  8. console.log(arr)

4.查询数组中指定元素的下标

  1. var arr = ['s', 'g', 'd', 'e']
  2. var index = myIndexOf(arr,'g')
  3. console.log(index)
  4. console.log(arr[index])
  5. function myIndexOf(arr, str) {
  6. index = -1;
  7. for (i = 0; i < arr.length; i++) {
  8. if(str==arr[i]){
  9. index=i
  10. return index
  11. }
  12. }
  13. return -1; //找不到返回-1
  14. }

注意:

a.数组下标从0开始计数 -1结束(不存在下标越界)

b.arr.length表示数组的长度(从1计数,长度可以任意增加)

c.数组先定义了长度值,给一个超过该长度的-1的元素赋值,那么这个数组长度会变长,新的越界元素下标加1,(访问一个越界元素并不会使长度增加)

d.可利用模板字符串 ${ }

5.多维数组

a.二维数组:在一维数组的元素中再嵌入一个一维数组.

var arr1 = [ [1,2,3],[4,5,6,],[7,8,9] ]

访问5的方法:arr1[2][2] //利用下标

arr1.lenth = 4; arr1[2].length; //长度

arr1[0][1] = 10; 改值; //用下标改值

可以利用循环嵌套改值:

  1. for(var i =0 ; i<arr1.length ;i++){
  2. for(j=0 ; j<arr[i].length ,j++)
  3. }

6.三维数组

利用循环遍历

  1. for(var i =0 ; i<arr1.length ;i++){
  2. for(j=0 ; j<arr[i].length ,j++){
  3. for(z=0 ; z<arrji].length zj++){
  4. str +=`${arr[i] [j] [z]}`
  5. }
  6. }
  7. }

7.数组的常用方法

1.shift:删除原数组第一项,并返回删除元素的值;如果数组为空则返回undefined

unshift:将参数添加到原数组开头,并返回数组的长度

2.pop() 删除一个数组中的最后的一个元素

3.reverse() 颠倒数组中元素的顺序

4.splice() 添加/删除数组元素

5.slice() 浅拷贝数组的元素

6.indexOf()方法可返回数组中某个指定的元素位置,如果在数组中没找到指定元素则返回 -1

二十一.对象(简单描述)

  1. 1.var .... = new ....( )
  2. var .... = new Object( )
  3. var .... = { }
  4. var ... = { (josn格式下)
  5. "name" :.... , (每一行用逗号隔开)
  6. }

必须用new 这个操作符,才能构造出对象

构造函数必须要按照大驼峰式命名规则,但凡是构造函数就要大写.

定义好对象后还可以在外层添加属性和方法.

2.构造函数内部原理

(构造函数构造函数跟函数结构上没有任何区别)

前提必须要加new,以下三步都是隐式的:

a.在函数体最前面隐式的加上var this = {} 空对象

b.执行 this.xxx = xxx;

c.隐式的返回return this

3.对象选择两种写法

  1. var obj = {name:"小明",age:19, run:function(){
  2. console.log('run...')
  3. }}
  4. console.log( obj.name )
  5. console.log( obj["name"] )
  6. obj['run']()

二十二.定时器

会被放入任务队列执行,只有当主程序执行完才执行,定时器不会阻塞主程序执行

setInterval(); //注意:setInterval("func ( )",1000);定时循环器

1.setInerval(function () { },1000);定时器,意思是1000 毫秒执行一次这个函数

2.注意:setInterval( );是window 的方法,在全局上就算不写window. setInterval();他

也会上全局的GO 里面查找,所以不写window.也行。

每一个setInterval();都会返回一个一个数字,作为唯一的标识,有唯一标识就可以把

他清除掉(利用clearInerval 清除)

3.setTimeout(); //正真的定时器,隔了一段时间后再执行(起推迟作用),并且

只执行一次

例隔了1000 毫秒才执行,并且只执行一次

  1. 4.使用setTimeout模拟setInterval
  2. setTimeout (function(){
  3. // console.log('吓我一跳')
  4. setTimeout(arguments.callee,500)
  5. },500)

5.setInterval( ) ;setTimeout ();clearInterval();clearTimeout();这四个都是全局对象,都是window 上的方法,内部函数this 指向window

6.注意I是全局变量

  1. for(i=0 ; i<=10 ;i++){
  2. setTimeout( function(){
  3. console.log(i) //输出11个11 }, 0);
  4. }

7.for循环中steTimeout的区别

  1. for(var i=0 ;i<10 ;i++){
  2. setTimeout(console.log(i),0);//0、1、2、3、4、5、6、7、8、9
  3. }
  4. for(var i=0;i<10;i++){
  5. setTimeout(function(){
  6. console.log(i);//连续的10个10
  7. },0);
  8. }
  1. for(var i=0;i<10;i++){
  2. setTimeout("console.log(i)",1000);//连续的10个10
  3. }

二十三.json简单应用:

1.JSON 是一种传输数据的格式(以对象为样板,本质上就是对象,但用途有区别,

对象就是本地用的,json 是用来传输的)

将对象转化为字符串-----序列化

将字符串转化为对象-----反序列化

2、JSON.parse(); string — > json

3、JSON.stringify(); json — > string

var arr2 = JSON.parse(JSON.stringify(arr) )(数组备份)

例json 的属性名必须加双引号(传的是二进制文本)

4.var obj = JSON.parse('{"hello" : "hello"}')

刚开始学习Javascript的一些基础小知识,从入门到崩溃,希望对大家有帮助(只适合初学者)的更多相关文章

  1. JavaScript 性能优化的小知识总结

    前言 一直在学习 javascript,也有看过<犀利开发 Jquery 内核详解与实践>,对这本书的评价只有两个字犀利,可能是对 javascript 理解的还不够透彻异或是自己太笨,更 ...

  2. Java基础小知识(一)

     序言:“不积跬步,无以至千里.不积小流,无以成江海.”每一个庞大的知识架构都是由无数个小知识点慢慢积累起来的,没有量变的积累,就没有质变上的飞跃,成功往往离不开积累. 今天就和大家分享一些我在学习J ...

  3. 学习笔记:Java的一些基础小知识之JVM与GC

      一.JVM是什么 Java虚拟机(英语:Java Virtual Machine,缩写为JVM),又名爪哇虚拟器,一种能够运行Java bytecode的虚拟机,以堆栈结构机器来进行实做.最早由太 ...

  4. 关于浏览器内核与javascript引擎的一些小知识

    浏览器是我们每天几乎都必须使用的软件产品,可是对于自己每天都接触的浏览器,很多同学其实对其一无所知.今天异次元就跟大家说说关于浏览器内核的一些事儿吧,好让你了解多一点稍微内在的东西. 在下面的文章中主 ...

  5. java基础小知识

    1.1常量: 基本数据类型常量 字符常量 整数常量的表现形式:一进制的形式来表示(二进制,八进制,十进制,十六进制) 生活中:十进制(0-9)  ,星期(七进制(0-6)) ,时间(十二进制(0-11 ...

  6. Java的一些基础小知识之JVM与GC (转)

    一.JVM是什么 Java虚拟机(英语:Java Virtual Machine,缩写为JVM),又名爪哇虚拟器,一种能够运行Java bytecode的虚拟机,以堆栈结构机器来进行实做.最早由太阳微 ...

  7. salesforce 零基础学习(六十九)当新增/修改一条记录以后发生了什么(适合初学者)

    salesforce开发中,我们会对object进行很多的操作,比如对object设置字段的必填性唯一性等,设置validation rule实现一下相关的字段的逻辑校验,设置workflow实现某个 ...

  8. Java基础小知识笔记

    1. Integer转进制的一个类2. toBinaryString,toOctalString,toHexString.(转为二进制,八进制,十六进制的方法)3. 如果·数据的大小没有超过byte/ ...

  9. python基础小知识,is和==的区别,编码和解码

    1.is和==的区别 1)id() 通过id()我们可以查看到一个变量表示的值在内存中的地址 >>> s1 = "Tanxu" >>> s2 = ...

随机推荐

  1. 基于FFmpeg的Dxva2硬解码及Direct3D显示(五)

    解码及显示 目录 解码及显示 解码 显示 资源清理 解码 循环读取视频帧 AVPacket packet = { 0 }; while (av_read_frame(m_pFmtCtx, &p ...

  2. 我要进大厂之大数据MapReduce知识点(1)

    01 我们一起学大数据 老刘今天分享的是大数据Hadoop框架中的分布式计算MapReduce模块,MapReduce知识点有很多,大家需要耐心看,用心记,这次先分享出MapReduce的第一部分.老 ...

  3. elasticsearch快速安装启动

    准备 docker docker内安装centos容器,模拟服务器环境 centos容器安装 下载centos容器 docker pull centos 启动docker容器 docker run - ...

  4. 重闯Sqli-labs关卡第二天(5关)

    第五关(双注入GET单引号字符型注入-报错时间注入) 盲注盲注,Blind SQL Injection基于布尔SQL盲注基于时间的SQL盲注基于报错的SQL盲注 核心代码:(不会返回数据库中的数据) ...

  5. MindManager使用教程:如何导出HTML5交互式导图

    Mindmanager思维导图软件有着友好的用户界面以及丰富的思维导图制作功能.再搭配与Microsoft 软件的无缝集成功能,使得这款思维导图软件越来越受到职场人士的喜爱. 不仅是作为制作思维导图的 ...

  6. 如何使用MindManager更改思维导图布局

    思维导图可以帮您直观地捕捉想法和信息,并将其组织起来,进一步创建行动计划,思维导图软件MindManager不仅可以帮您分析问题.使用头脑风暴得出解决方案,还可以规划复杂的项目.下面是MindMana ...

  7. css3系列之transform 详解scale

    scale() scaleX() scaleY() scaleZ() scale3d() 改变的不是元素的宽高,而是 X 和 Y 轴的刻度 本章有个很冷门的知识点 → scale 和 rotate 一 ...

  8. gitlab private-token利用工具

    在渗透测试中,经常会遇到只获得gitlab PRIVATE-TOKEN的情况,而gitlab提供了一系列的api给我们通过这个token去访问gitlab. 所以做了个简单的gitlab工具,以供紧获 ...

  9. 分布式监控系统之Zabbix proxy

    前文我们了解了zabbix 使用snmp和jmx信道采集数据的相关使用配置,回顾请参考https://www.cnblogs.com/qiuhom-1874/p/14029864.html:今天我们来 ...

  10. Jmeter-记一次AES加密登录实例

    前言 公司有个网站系统,用户名是明文,密码是加密的,所以搞了好久才登录进去,因此记录下艰辛过程. Part 1   了解加密算法 找研发同事去了解这个是怎样一个加密过程,最后得到的结论是:后端会生成一 ...