ES6新特性总结

ES6新特性

es6简介

ECMAScript 6.0 (以下简称ES6)是JavaScript语言的下一代标准,已经在2015年6月正式发布了。它的目标,是使得JavaScript语言可以用来编写复杂的大型应用程序,成为企业级开发语言

ES6既是一个历史名词,也是一个泛指,含义是5.1版以后的JavaScript的下代标准,涵盖了ES2015、ES2016、ES2017等等,而 ES2015则是正式名称,
特指该年发布的正式版本的语言标准

let和const命令

var关键字的变量提升

案例:

console.log(a)
var a = 2

输出:

undefined

Process finished with exit code 0

var关键字出现在console后却能打印undefined,这就是变量提升

以上案例等同于如下代码,变量提升即将变量提升到前面,先声明,后赋值:

var a;
console.log(a)
a = 2

显然,在es5之前频繁使用var声明变量,需要大量考虑变量提升的影响,因此es6引入了let和const

let

  1. let没有变量提升
  2. let是块级作用域
  3. let无法重复声明

简单应用:

  1. 如用var声明一个for循环,其变量提升会导致i成为全局变量,因此无论输出数组哪个成员,其调用函数的结果都是返回i=10

        //for循环
        var arr = [];
        for (var i = 0; i < 10; i++) {
            arr[i] = function () {
                return i;
            }
        }
        console.log(arr[5]())
    

    输出:

    10
    

    如果使用let,则能够避免:

        //for循环
        var arr = [];
        for (let i = 0; i < 10; i++) {
            arr[i] = function () {
                return i;
            }
        }
        console.log(arr[5]())
    

    输出:

    5
    
  2. let不会污染全局变量

    定义一个与系统函数同名的变量,系统函数会被var变量覆盖

    var RegExp = 10;
        console.log(RegExp);
        console.log(window.RegExp)
    

    输出:

    10
    10
    

    改用let声明:

    let RegExp = 10;
        console.log(RegExp);
        console.log(window.RegExp)
    

    输出:

    10
    ƒ RegExp() { [native code] }
    

const

const在拥有let的特性之外,还有一条自己的特性,即声明变量不可变,但声明的变量其成员属性可变

案例:

 const person = {
        name: "acerola"
    }
    const person = 1;
    person.name = "zhangsan"
    console.log(person)

输出:

Uncaught SyntaxError: Identifier 'person' has already been declared 
{name: 'zhangsan'}

es6的模板字符串

案例:

DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Titletitle>
head>
<body>

<div class="box">

div>
<script>
    const box = document.querySelector('.box');
    let id = 1, name = "acerola";
    let htmlStr = `
  • ${id}">${name}

`
box.innerHTML = htmlStr;
script> body> html>

增强函数

  1. 函数入参可以直接初始化值,也可以直接调用函数初始化值

    function bValue() {
        return 20;
    }
    
    function f(a, b = bValue(), c = 30) {
        return a + b + c;
    }
    console.log(f(10))
    

    输出:

    60
    
  2. 剩余参数可以使用...+具名参数的形式指代,替代了es5以前不太好用的arguements

    function pick(obj, ...keys) {
        let result = Object.create(null);
        for (let i = 0; i < keys.length; i++) {
            result[keys[i]] = obj[keys[i]];
        }
        return result;
    }
    
    let book = {
        title: "es6学习",
        author: 'acerola',
        year: 2022
    }
    let bookData = pick(book, 'year', 'author');
    console.log(bookData);
    

    输出:

    [Object: null prototype] { year: 2022, author: 'acerola' }
    

扩展的字符串,对象,数组功能

  1. 剩余运算符:把多个独立数组合并

  2. 将一个运算符分割,并将各个项作为分离的参数传给函数

    const arr = [10, 20, 30, 40];
    //es5做法
    console.log(Math.max.apply(null,arr))
    //es6做法,使用运算符分割数组
    console.log(Math.max(...arr))
    
  3. 箭头函数

    //es5
    let add = function (a, b) {
        return a + b;
    }
    //es6
    let add = (a, b) => {
        return a + b;
    }
    //更简洁的版本
    let add = (a, b) => (a + b)
    console.log(add(10, 20))
    //es6只有一个参数时
    let single = val => val
    console.log(single(10));
    

    注意事项:

    • 函数内部不再有arguments
    • 箭头函数无法使用new关键字实例化对象
  4. 扩展的对象的功能

    • is(),等价于===

      console.log(Object.is(1,2))
      
    • assign(), 对象合并

      let obj1 = {
          name: "莫",
          age: 18,
          family: {
              dady: "爸爸",
              mom: "妈妈"
          }
      }
      let obj2 = {
          name: "园",
          age: 18,
          sex: "女"
      }
      let result = Object.assign({}, obj1, obj2);
      console.log(result);
      

解构赋值

对象解构:

let obj = {
    a: {
        name: "张园",
        age: 18
    },
    b: [],
    c: "你好世界"
}
//es5完全解构
let aName = obj.a.name;
console.log(aName)
//es6不完全解构
let {name} = obj.a
console.log(name)

数组解构:

let arr = [1,2,3,4,5]
let [a,b,c] = arr
console.log(c);

Symbol

symbol简介

Symbol是ES6中引入的一种新的基本数据类型,用于表示一个独一无二的值。它是JavaScript中的第七种数据类型,与undefined、null、Number(数值)、String(字符串)、Boolean(布尔值)、Object(对象)并列。

创建一个symbol值

const a = Symbol('s1');
console.log(a);  //Symbol(s1)

symbol值的唯一性

尽管再创建一个Symbol(‘s1’),a和b也不相等,他们在内存中的地址是唯一的,可以使用is()验证

const a = Symbol('s1');
const b = Symbol('s1');

console.log(Object.is(a,b));  //false

只有通过引用他们自身,才能得到他们的地址,没有别的途径

const c = a;

Map和Set

map

Map 是 ES6 中新增的数据结构,Map 类似于对象,但普通对象的 key 必须是字符串或者数字,而 Map 的 key 可以是任何数据类型

Map的操作方法:

const map = new Map();
const obj = {p: 'Hello World'};
 
map.set(obj, 'OK')
map.get(obj) // "OK"
 
map.has(obj) // true
map.delete(obj) // true
map.has(obj) // false

Map 实例的遍历方法有:

  • keys():返回键名的遍历器。
  • values():返回键值的遍历器。
  • entries():返回所有成员的遍历器。
  • forEach():遍历 Map 的所有成员。
const map = new Map();
map.set('aaa', 100);
map.set('bbb', 200);
for (let key of map.keys()) {
    console.log(key);
}
// "aaa"
// "bbb"

for (let value of map.values()) {
    console.log(value);
}
// 100
// 200

for (let item of map.entries()) {
    console.log(item[0], item[1]);
}
// aaa 100

set

Set 对象允许你存储任何类型的唯一值,无论是原始值或者是对象引用

Set的操作方法:

add(value):添加某个值,返回Set结构本身。
delete(value):删除某个值,返回一个布尔值,表示删除是否成功。
has(value):返回一个布尔值,表示该值是否为Set的成员。
clear():清除所有成员,没有返回值

set转数组

let a = new Set([1,2,3]);
let arr = [...a];
console.log(arr)

还可以取交集并集差集

let a = new Set([1,2,3]);
let b = new Set([2,3,4]);
//并集
  let union = new Set([...a,...b]);
  console.log(union);//Set(4) {1, 2, 3, 4}

  //交集
  let intersect = new Set([...a].filter(x => b.has(x)));
  console.log(intersect);//Set(2) {2, 3}

  //差集
  let difference = new Set([...a].filter(x => !b.has(x)));
  console.log(difference);//Set(1) {1}

迭代器和生成器

迭代器

Iterator 是es6引入的一种新的遍历机制:

  • 迭代器是一个统一的接口,它的作用是使各种数据结构可被便捷的访问,它是通过一个键为 Symbol.iterator 的方法来实现;
  • 迭代器是用于遍历数据结构元素的指针(如数据库中的游标)。
  • 返回值有两个属性,value和done,value 是当前属性的值,done 用于判断是否遍历结束,done为false则继续遍历
const items = ["zero", "one", "two"];
const it = items[Symbol.iterator]();

it.next();
//{value: "zero", done: false}
it.next();
//{value: "one", done: false}
it.next();
//{value: "two", done: false}
it.next();
//{value: undefined, done: true}

生成器

生成器是ES6中新增的一种函数控制、使用的方案,它可以让我们更加灵活的控制函数什么时候继续执行、暂停执行等。平时我们会编写很多的函数,这些函数终止的条件通常是返回值或者发生了异常。

生成器函数也是一个函数,但是和普通的函数有一些区别:

首先,生成器函数需要在function的后面加一个符号:*
其次,生成器函数可以通过yield关键字来控制函数的执行流程:
最后,生成器函数的返回值是一个Generator(生成器):
生成器事实上是一种特殊的迭代器,最简单的用法就是用yield把流程分段,然后使用next一段一段执行方法

案例:

function* foo() {
  console.log("函数开始执行~")
 
  const value1 = 100
  console.log("第一段代码:", value1)
  yield
 
  const value2 = 200
  console.log("第二段代码:", value2)
  yield
 
  const value3 = 300
  console.log("第三段代码:", value3)
  yield
 
  console.log("函数执行结束~")
}
 
// 调用生成器函数时, 会给我们返回一个生成器对象
const generator = foo()
 
// 开始执行第一段代码
generator.next()
 
// 开始执行第二端代码
console.log("-------------")
generator.next()
generator.next()
console.log("----------")
generator.next()

同时,分段也可以有不同的参数传入,可以通过在next()加入参数向yield传递参数,这个参数作为yield的返回值,也就是可以作为下一段代码的参数使用

function* foo(num) {
    console.log("函数开始执行~")

    const value1 = 100 * num
    console.log("第一段代码:", value1)
    const n = yield value1

    console.log("n的值是" + n)
    const value2 = 200 * n
    console.log("第二段代码:", value2)
    const count = yield value2

    const value3 = 300 * count
    console.log("第三段代码:", value3)
    yield value3

    console.log("函数执行结束~")
    return "123"
}

// 生成器上的next方法可以传递参数
const generator = foo(5)
console.log(generator.next())
// // 第二段代码, 第二次调用next的时候执行的
console.log(generator.next(10))
// console.log(generator.next(25))

输出:

函数开始执行~
第一段代码: 500
{ value: 500, done: false }
n的值是10
第二段代码: 2000
{ value: 2000, done: false }

使用return提前终止

function* foo(num) {
    console.log("函数开始执行~")

    const value1 = 100 * num
    console.log("第一段代码:", value1)
    const n = yield value1


    console.log("n的值是" + n)
    const value2 = 200 * n
    console.log("第二段代码:", value2)
    const count = yield value2

    const value3 = 300 * count
    console.log("第三段代码:", value3)
    yield value3

    console.log("函数执行结束~")
    return "123"
}

// 生成器上的next方法可以传递参数
const generator = foo(5)
console.log(generator.next())

console.log(generator.return(15))
// // 第二段代码, 第二次调用next的时候执行的
console.log(generator.next(10))
// console.log(generator.next(25))

输出:

函数开始执行~
第一段代码: 500
{ value: 500, done: false }
{ value: 15, done: true }
{ value: undefined, done: true }

try-catch的异常抛出

function* foo() {
  console.log("代码开始执行~")
 
  const value1 = 100
  try {
    yield value1
  } catch (error) {
    console.log("捕获到异常情况:", error)
 
    yield "abc"
  }
 
  console.log("第二段代码继续执行")
  const value2 = 200
  yield value2
 
  console.log("代码执行结束~")
}
 
const generator = foo()
const result = generator.next()
generator.throw("error message")
 
// const result = generator.next()

Promise对象

promise简介

Promise是ES6异步编程的一种解决方案(目前最先进的解决方案是async和await的搭配(ES8),但是它们是基于promise的),从语法上讲,Promise是一个对象或者说是构造函数,用来封装异步操作并可以获取其成功或失败的结果。

promise的三种状态

  • pending: 等待中,或者进行中,表示还没有得到结果
  • resolved(Fulfilled): 已经完成,表示得到了我们想要的结果,可以继续往下执行
  • rejected: 也表示得到结果,但是由于结果并非我们所愿,因此拒绝执行
let pro = new Promise((resolve, reject) => {
    if (Math.random() > 0.5) {
        resolve("i'm resolve");
    } else {
        reject("i'm reject");
    }
})

pro.then((res) => {
    console.log(res);
}).catch((err) => {
    console.log(err);
})

使用案例(使用promise封装ajax)

目标:拿到关于 狙击手 电影的描述

过程:

1.先登录

2.请求 导演信息 找到张导的id

3.请求 电影信息 找到描述

<script src="https://cdn.bootcdn.net/ajax/libs/jquery/3.6.0/jquery.min.js"></script>
<script>
    // 1.登录
    // let myLogin = () => new Promise()
    function myLogin() {
        return new Promise((resolve, reject) => {
            $.ajax({
                type: 'get',
                url: '../json/login.json',
                success(res) {
                    resolve(res);
                },
                error(err) {
                    reject(err);
                }
            })
        })
    }
 
    // 2.导演列表
    function myDirector() {
        return new Promise((resolve, reject) => {
            $.ajax({
                type: 'get',
                url: '../json/director.json',
                success(res) {
                    resolve(res);
                },
                error(err) {
                    reject(err);
                }
            })
        })
    }
 
    // 3.电影信息
    function myFilm(id) {
        return new Promise((resolve, reject) => {
            $.ajax({
                type: 'get',
                url: '../json/' + id + '.json',
                success(res) {
                    resolve(res);
                },
                error(err) {
                    reject(err);
                }
            })
        })
    }
 
    myLogin().then(res => {
        return myDirector();
    }).then(res => {
        return myFilm(3);
    }).then(res => {
        console.log(res);
    }).catch(err => {
        console.log(err);
    })
</script>

promise.all()

处理多个异步任务,所有任务都执行完成才能得到结果

Promise.all( [p1,p2,p3] ) .then ( (result) => {
    consoleog (result)
})

promise.race()

并发处理多个异步任务,只要有一个任务完成就能得到结果

Promise.race ( [p1,p2,p3] ).then ( (result)=>{
     console. log (result)
})

async

async简介

async函数是使用async关键字声明的函数。 async函数是AsyncFunction构造函数的实例, 并且其中允许使用await关键字。async和await关键字让我们可以用一种更简洁的方式写出基于Promise的异步行为,而无需刻意地链式调用promise。

Async函数是generator函数的语法糖,在generator函数的基础上添加了一些更加方便用户操作的新特性。Async函数的执行和普通函数一致,只需要一行代码即可,因为他具有内置的执行。async与await对比*与yield有更好的语义

async 函数中可能会有 await 表达式,async 函数执行时,如果遇到 await 就会先暂停执行 ,等到触发的异步操作完成后,恢复 async 函数的执行并返回解析值。primise写法:await关键字只在async函数内有效。如果你在async函数体之外使用它,就会抛出语法错误 SyntaxError 。

function foo() {
   return Promise.resolve(1)
}

async写法:

//async函数返回一个 Promise 对象。
async function foo() {
   return 1
}

项目中常见用法

async function foo(){   
	return await $.get("http://47.106.244.1:8099/manager/category/findAllCategory"); 
}    
let f = foo();
// f就是获取到的后台接口的数据

异步任务同步化

某些时候,我们需要多个异步任务保证顺序执行,使用await控制:

async function getTitle(url) {
    //抓取网页
  let response = await fetch(url);
    //提取文本
  let html = await response.text();
    //匹配页面标题
  return html.match(/([\s\S]+)<\/title></span><span class="token regex-delimiter">/</span><span class="token regex-flags">i</span></span><span class="token punctuation">)</span><span class="token punctuation">[</span><span class="token number">1</span><span class="token punctuation">]</span><span class="token punctuation">;</span>
<span class="token punctuation">}</span>
<span class="token function">getTitle</span><span class="token punctuation">(</span><span class="token string">'https://tc39.github.io/ecma262/'</span><span class="token punctuation">)</span><span class="token punctuation">.</span><span class="token function">then</span><span class="token punctuation">(</span>console<span class="token punctuation">.</span>log<span class="token punctuation">)</span>
</code></pre> 
  <h3><strong>异步任务异步化</strong></h3> 
  <pre><code class="prism language-javascript"><span class="token keyword">function</span> <span class="token function">getFoo</span><span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token punctuation">{</span>
    console<span class="token punctuation">.</span><span class="token function">log</span><span class="token punctuation">(</span><span class="token string">"getFoo"</span><span class="token punctuation">)</span>
<span class="token punctuation">}</span>
<span class="token keyword">function</span> <span class="token function">getBar</span><span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token punctuation">{</span>
    console<span class="token punctuation">.</span><span class="token function">log</span><span class="token punctuation">(</span><span class="token string">"getBar"</span><span class="token punctuation">)</span>
<span class="token punctuation">}</span>
<span class="token keyword">async</span> <span class="token keyword">function</span> <span class="token function">test</span><span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token punctuation">{</span>
	<span class="token comment">//异步执行</span>
    <span class="token keyword">let</span> <span class="token punctuation">[</span>foo<span class="token punctuation">,</span> bar<span class="token punctuation">]</span> <span class="token operator">=</span> <span class="token keyword">await</span> Promise<span class="token punctuation">.</span><span class="token function">all</span><span class="token punctuation">(</span><span class="token punctuation">[</span><span class="token function">getFoo</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">,</span> <span class="token function">getBar</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">]</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
<span class="token punctuation">}</span>
</code></pre> 
  <h2>类class</h2> 
  <p>跟java一毛一样,不想记录了(我是搞后端的捏)</p> 
  <h2>模块化运行</h2> 
  <ul> 
   <li>export 命令:用于规定模块的对外接口</li> 
   <li>import 命令:用于输入其他模块提供的功能</li> 
  </ul> 
  <h3>export</h3> 
  <ol> 
   <li> <p>分别暴露</p> <pre><code class="prism language-javascript"> 	<span class="token keyword">export</span> <span class="token keyword">let</span> school <span class="token operator">=</span> <span class="token string">'gc'</span><span class="token punctuation">;</span>

	<span class="token keyword">export</span> <span class="token keyword">function</span> <span class="token function">teach</span><span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token punctuation">{</span>
    	console<span class="token punctuation">.</span><span class="token function">log</span><span class="token punctuation">(</span><span class="token string">"分别暴露"</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
	<span class="token punctuation">}</span><span class="token punctuation">;</span>
</code></pre> </li> 
   <li> <p>统一暴露</p> <pre><code class="prism language-javascript">	<span class="token keyword">let</span> school <span class="token operator">=</span> <span class="token string">'gc'</span><span class="token punctuation">;</span>

	<span class="token keyword">function</span> <span class="token function">findJob</span><span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token punctuation">{</span>
    	console<span class="token punctuation">.</span><span class="token function">log</span><span class="token punctuation">(</span><span class="token string">"统一暴露"</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
	<span class="token punctuation">}</span><span class="token punctuation">;</span>

	<span class="token keyword">export</span> <span class="token punctuation">{</span>school<span class="token punctuation">,</span> findJob<span class="token punctuation">}</span><span class="token punctuation">;</span>
</code></pre> </li> 
   <li> <p>默认暴露</p> <pre><code class="prism language-javascript">	<span class="token keyword">export</span> <span class="token keyword">default</span> <span class="token punctuation">{</span>
    	<span class="token literal-property property">school</span><span class="token operator">:</span> <span class="token string">'ATLUCA'</span><span class="token punctuation">,</span>
    	<span class="token function-variable function">change</span><span class="token operator">:</span> <span class="token keyword">function</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">{</span>
        	console<span class="token punctuation">.</span><span class="token function">log</span><span class="token punctuation">(</span><span class="token string">"默认暴露"</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
    	<span class="token punctuation">}</span>
	<span class="token punctuation">}</span>
</code></pre> </li> 
  </ol> 
  <h3>import</h3> 
  <ol> 
   <li> <p>通用导入</p> <pre><code class="prism language-javascript">	<span class="token keyword">import</span> <span class="token operator">*</span> <span class="token keyword">as</span> _m1 <span class="token keyword">from</span> <span class="token string">"js/m1.js"</span><span class="token punctuation">;</span>
	_m1<span class="token punctuation">.</span><span class="token function">teach</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span>

	<span class="token keyword">import</span> <span class="token operator">*</span> <span class="token keyword">as</span> _m2 <span class="token keyword">from</span> <span class="token string">"js/m2.js"</span><span class="token punctuation">;</span>
	_m2<span class="token punctuation">.</span><span class="token function">findJob</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
	console<span class="token punctuation">.</span><span class="token function">log</span><span class="token punctuation">(</span>_m2<span class="token punctuation">.</span>school<span class="token punctuation">)</span><span class="token punctuation">;</span>

	<span class="token keyword">import</span> <span class="token operator">*</span> <span class="token keyword">as</span> _m3 <span class="token keyword">from</span> <span class="token string">"js/m3.js"</span><span class="token punctuation">;</span>
	console<span class="token punctuation">.</span><span class="token function">log</span><span class="token punctuation">(</span>_m3<span class="token punctuation">)</span><span class="token punctuation">;</span>
	_m3<span class="token punctuation">.</span>default<span class="token punctuation">.</span><span class="token function">change</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span>

</code></pre> </li> 
   <li> <p>解构赋值</p> <pre><code class="prism language-javascript">	<span class="token keyword">import</span> <span class="token punctuation">{</span>school<span class="token punctuation">,</span> teach<span class="token punctuation">}</span> <span class="token keyword">from</span> <span class="token string">"js/m1.js"</span><span class="token punctuation">;</span>
	<span class="token keyword">import</span> <span class="token punctuation">{</span>school <span class="token keyword">as</span> gc<span class="token punctuation">,</span> findJob<span class="token punctuation">}</span> <span class="token keyword">from</span> <span class="token string">"js/m2.js"</span><span class="token punctuation">;</span>
	console<span class="token punctuation">.</span><span class="token function">log</span><span class="token punctuation">(</span>findJob<span class="token punctuation">)</span><span class="token punctuation">;</span>
	<span class="token keyword">import</span> <span class="token punctuation">{</span><span class="token keyword">default</span> <span class="token keyword">as</span> _m3<span class="token punctuation">}</span> <span class="token keyword">from</span> <span class="token string">"js/m3.js"</span><span class="token punctuation">;</span>
	console<span class="token punctuation">.</span><span class="token function">log</span><span class="token punctuation">(</span>_m3<span class="token punctuation">)</span><span class="token punctuation">;</span>
</code></pre> </li> 
   <li> <p>只针对默认暴露的导入</p> <pre><code class="prism language-javascript">	<span class="token keyword">import</span> _m3 <span class="token keyword">from</span> <span class="token string">"js/m3.js"</span><span class="token punctuation">;</span>
	console<span class="token punctuation">.</span><span class="token function">log</span><span class="token punctuation">(</span>_m3<span class="token punctuation">)</span><span class="token punctuation">;</span>
</code></pre> </li> 
  </ol> 
 </div> 
</div>
                            </div>
                        </div>
                    </div>
                    <!--PC和WAP自适应版-->
                    <div id="SOHUCS" sid="1574941098839719936"></div>
                    <script type="text/javascript" src="/views/front/js/chanyan.js"></script>
                    <!-- 文章页-底部 动态广告位 -->
                    <div class="youdao-fixed-ad" id="detail_ad_bottom"></div>
                </div>
                <div class="col-md-3">
                    <div class="row" id="ad">
                        <!-- 文章页-右侧1 动态广告位 -->
                        <div id="right-1" class="col-lg-12 col-md-12 col-sm-4 col-xs-4 ad">
                            <div class="youdao-fixed-ad" id="detail_ad_1"> </div>
                        </div>
                        <!-- 文章页-右侧2 动态广告位 -->
                        <div id="right-2" class="col-lg-12 col-md-12 col-sm-4 col-xs-4 ad">
                            <div class="youdao-fixed-ad" id="detail_ad_2"></div>
                        </div>
                        <!-- 文章页-右侧3 动态广告位 -->
                        <div id="right-3" class="col-lg-12 col-md-12 col-sm-4 col-xs-4 ad">
                            <div class="youdao-fixed-ad" id="detail_ad_3"></div>
                        </div>
                    </div>
                </div>
            </div>
        </div>
    </div>
    <div class="container">
        <h4 class="pt20 mb15 mt0 border-top">你可能感兴趣的:(菜鸡上路,javascript,es6,前端)</h4>
        <div id="paradigm-article-related">
            <div class="recommend-post mb30">
                <ul class="widget-links">
                    <li><a href="/article/1950232820773351424.htm"
                           title="移动端城市区县二级联动选择功能实现包" target="_blank">移动端城市区县二级联动选择功能实现包</a>
                        <span class="text-muted">good2know</span>

                        <div>本文还有配套的精品资源,点击获取简介:本项目是一套为移动端设计的jQuery实现方案,用于简化用户在选择城市和区县时的流程。它包括所有必需文件:HTML、JavaScript、CSS及图片资源。通过动态更新下拉菜单选项,实现城市到区县的联动效果,支持数据异步加载。开发者可以轻松集成此功能到移动网站或应用,并可基于需求进行扩展和优化。1.jQuery移动端解决方案概述jQuery技术简介jQuery</div>
                    </li>
                    <li><a href="/article/1950232190038110208.htm"
                           title="day15|前端框架学习和算法" target="_blank">day15|前端框架学习和算法</a>
                        <span class="text-muted">universe_01</span>
<a class="tag" taget="_blank" href="/search/%E5%89%8D%E7%AB%AF/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/%E7%AC%94%E8%AE%B0/1.htm">笔记</a>
                        <div>T22括号生成先把所有情况都画出来,然后(在满足什么情况下)把不符合条件的删除。T78子集要画树状图,把思路清晰。可以用暴力法、回溯法和DFS做这个题DFS深度搜索:每个边都走完,再回溯应用:二叉树搜索,图搜索回溯算法=DFS+剪枝T200岛屿数量(非常经典BFS宽度把树状转化成队列形式,lambda匿名函数“一次性的小函数,没有名字”setup语法糖:让代码更简洁好写的语法ref创建:基本类型的</div>
                    </li>
                    <li><a href="/article/1950213052171350016.htm"
                           title="2021-10-23" target="_blank">2021-10-23</a>
                        <span class="text-muted">赵甄文的幸福</span>

                        <div>秀荣感恩日记Day42[烟花]感恩语录感恩自己有能力有好身体,可以到处走动,做自己想做的事情10.23感恩日记今天做的事情瑜伽一小时户外散步一小时泡脚20分钟学习打卡和孩子沟通[爱心]感动的瞬间今天瑜伽回来,发现老公在厨房里做鱼。每次老公有时间休息的时候都会给我做硬菜。刘姐约我一起去公园散步晒太阳。虽然完美错过,但心里还是暖暖的。每天睁开眼打开手机,先去自己的群里逛一逛,每每发现有人点赞或者互动都</div>
                    </li>
                    <li><a href="/article/1950194742100815872.htm"
                           title="用代码生成艺术字:设计个性化海报的秘密" target="_blank">用代码生成艺术字:设计个性化海报的秘密</a>
                        <span class="text-muted"></span>

                        <div>本文围绕“用代码生成艺术字:设计个性化海报的秘密”展开,先概述代码生成艺术字在海报设计中的独特价值,接着介绍常用的代码工具(如HTML、CSS、JavaScript等),详细阐述从构思到实现的完整流程,包括字体样式设计、动态效果添加等,还分享了提升艺术字质感的技巧及实际案例。最后总结代码生成艺术字的优势,为设计师提供打造个性化海报的实用指南,助力提升海报设计的独特性与吸引力,符合搜索引擎SEO标准</div>
                    </li>
                    <li><a href="/article/1950191208873652224.htm"
                           title="vue element 封装表单" target="_blank">vue element 封装表单</a>
                        <span class="text-muted">影子信息</span>
<a class="tag" taget="_blank" href="/search/vue/1.htm">vue</a><a class="tag" taget="_blank" href="/search/vue.js/1.htm">vue.js</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>
                        <div>背景:在前端系统开发中,系统页面涉及到的表单组件比较多,所以进行了简单的封装。封装的包括一些Form表单组件,如下:input输入框、select下拉框、等实现效果:理论知识:表单组件官方链接:点击跳转封装组件:封装组件的思路:不封装element组件,每一个input组件绑定一个form对象,例如官网。简单封装element组件,利用for循环生成form表单的每一项el-form-item。进</div>
                    </li>
                    <li><a href="/article/1950191165710069760.htm"
                           title="前端面试每日 3+1 —— 第39天" target="_blank">前端面试每日 3+1 —— 第39天</a>
                        <span class="text-muted">浪子神剑</span>

                        <div>今天的面试题(2019.05.25)——第39天[html]title与h1、b与strong、i与em的区别分别是什么?[css]写出你知道的CSS水平和垂直居中的方法[js]说说你对模块化的理解[软技能]公钥加密和私钥加密是什么?《论语》,曾子曰:“吾日三省吾身”(我每天多次反省自己)。前端面试每日3+1题,以面试题来驱动学习,每天进步一点!让努力成为一种习惯,让奋斗成为一种享受!欢迎在Iss</div>
                    </li>
                    <li><a href="/article/1950183907987091456.htm"
                           title="家常菜的简单做法(三)" target="_blank">家常菜的简单做法(三)</a>
                        <span class="text-muted">教孩做饭开伙仓</span>

                        <div>荤菜类的菜由于特有的口感醇香、营养的丰富而得到大多数人的喜爱,特别是年青人,甚至荤菜摄入量大于素菜的摄入量,从而造成营养代谢失衡。荤菜中的猪肉、牛肉、鸡、鸭通常烹饪前必须洗净后用冷水煮开,把水倒掉再烧、这样有去腥味、减少嘌呤的摄入,减少痛风的发生,还可减少油脂的摄入,有利于我们饱了口腹,又增加了健康,减少了不利因素。鱼虾类烧就是根据清蒸、水煮还是红烧来安排制作了。红烧肉类的菜,在焯水后放炉子上加入</div>
                    </li>
                    <li><a href="/article/1950182379968589824.htm"
                           title="活在過去" target="_blank">活在過去</a>
                        <span class="text-muted">辣妈正传555</span>

                        <div>活在過去過去到現在一切都在變化。有了家與娃,生活比原來更讓人牽掛。可不知道,心怎么了常常活在過去的快樂時光。媽媽吃了苦菜留給我一碗稀飯。趕集回來的一顆糖。生日里偷偷吃著的雞蛋。大年三十的晚上,穿上媽媽縫的鞋子衣裳,------甜甜的睡在床上。思想怎么了跟不上時代的步伐。常常活在過去,美麗、痛苦的---------快樂時光。安然</div>
                    </li>
                    <li><a href="/article/1950178477592342528.htm"
                           title="前端数据库:IndexedDB从基础到高级使用指南" target="_blank">前端数据库:IndexedDB从基础到高级使用指南</a>
                        <span class="text-muted"></span>

                        <div>文章目录前端数据库:IndexedDB从基础到高级使用指南引言一、IndexedDB概述1.1什么是IndexedDB1.2与其他存储方案的比较二、基础使用2.1打开/创建数据库2.2基本CRUD操作添加数据读取数据更新数据删除数据三、高级特性3.1复杂查询与游标3.2事务高级用法3.3性能优化技巧四、实战案例:构建离线优先的待办事项应用4.1数据库设计4.2同步策略实现五、常见问题与解决方案5.</div>
                    </li>
                    <li><a href="/article/1950169524384886784.htm"
                           title="【Java Web实战】从零到一打造企业级网上购书网站系统 | 完整开发实录(三)" target="_blank">【Java Web实战】从零到一打造企业级网上购书网站系统 | 完整开发实录(三)</a>
                        <span class="text-muted">笙囧同学</span>
<a class="tag" taget="_blank" href="/search/java/1.htm">java</a><a class="tag" taget="_blank" href="/search/%E5%89%8D%E7%AB%AF/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>
                        <div>核心功能设计用户管理系统用户管理是整个系统的基础,我设计了完整的用户生命周期管理:用户注册流程验证失败验证通过验证失败验证通过用户名已存在用户名可用失败成功用户访问注册页面填写注册信息前端表单验证显示错误提示提交到后端后端数据验证返回错误信息用户名唯一性检查提示用户名重复密码加密处理保存用户信息保存成功?显示系统错误注册成功跳转登录页面登录认证机制深度解析我实现了一套企业级的多层次安全认证机制:认</div>
                    </li>
                    <li><a href="/article/1950169526440095744.htm"
                           title="从零到一:打造基于GigaChat AI的艺术创作平台 | 笙囧同学的全栈开发实战" target="_blank">从零到一:打造基于GigaChat AI的艺术创作平台 | 笙囧同学的全栈开发实战</a>
                        <span class="text-muted"></span>

                        <div>作者简介:笙囧同学,中科院计算机大模型方向硕士,全栈开发爱好者联系方式:3251736703@qq.com各大平台账号:笙囧同学座右铭:偷懒是人生进步的阶梯前言在AI技术飞速发展的今天,如何将前沿的大模型技术与实际应用相结合,一直是我们开发者关注的焦点。今天,笙囧同学将带大家从零开始,构建一个基于GigaChatAI的艺术创作平台,实现React前端+Django后端的完整全栈解决方案。这不仅仅是</div>
                    </li>
                    <li><a href="/article/1950165348053479424.htm"
                           title="12月20日打卡" target="_blank">12月20日打卡</a>
                        <span class="text-muted">小小冰棍儿</span>

                        <div>当我拿着手机的时候眼睛已经睁不开了,下午给社团的家长们发照片时已经迷糊的不行了,眼皮子几乎是要用手掰开才行。今天一天跟打仗一样,不光是今天,其实从昨天我和露露老师一起赶制发簪开始就已经是在打着鸡血向前冲了。为了筹备郑州市校本课程展,社团的每个老师都为之付出了很多时间和精力。翁老师和原老师的时间几乎都用在参展的节目的排演和修改上。尤其是一二年级小朋友们展示的《梦娃》,更是花费了很多精力和心思。也就是</div>
                    </li>
                    <li><a href="/article/1950164483057971200.htm"
                           title="14.tornado操作之应用Websocket协议实现聊天室功能" target="_blank">14.tornado操作之应用Websocket协议实现聊天室功能</a>
                        <span class="text-muted">孤寒者</span>
<a class="tag" taget="_blank" href="/search/Tornado%E6%A1%86%E6%9E%B6%E4%BB%8E%E5%85%A5%E9%97%A8%E5%88%B0%E5%AE%9E%E6%88%98/1.htm">Tornado框架从入门到实战</a><a class="tag" taget="_blank" href="/search/websocket/1.htm">websocket</a><a class="tag" taget="_blank" href="/search/tornado/1.htm">tornado</a><a class="tag" taget="_blank" href="/search/%E8%81%8A%E5%A4%A9%E5%AE%A4%E5%8A%9F%E8%83%BD%E5%AE%9E%E7%8E%B0/1.htm">聊天室功能实现</a><a class="tag" taget="_blank" href="/search/python/1.htm">python</a>
                        <div>目录:每篇前言:1.什么是WebSocket(1)定义(2)优点(3)和HTTP对比(4)适用场景2.WebSocket关键方法3.本tornado项目中使用WebSocket(1)准备一个聊天室的页面:第一步:编写视图:第二步:编写接口:(app.py中加入以下接口!)第三步:编写前端页面:测试接口——响应OK!(2)使用WebSocket:(3)聊天室的聊天功能的最终实现:第一步:战前准备第二</div>
                    </li>
                    <li><a href="/article/1950144218282389504.htm"
                           title="为什么学习Web前端一定要掌握JavaScript?" target="_blank">为什么学习Web前端一定要掌握JavaScript?</a>
                        <span class="text-muted">web前端学习指南</span>

                        <div>为什么学习Web前端一定要掌握JavaScript?在前端的世界里,没有什么是JavaScript实现不了的,关于JS有一句话:凡是可以用JavaScript来写的应用,最终都会用JavaScript,JavaScript可运行在所有主要平台的所有主流浏览器上,也可运行在每一个主流操作系统的服务器端上。现如今我们在为网站写任何一个主要功能的时候都需要有懂能够用JavaScript写前端的开发人员。</div>
                    </li>
                    <li><a href="/article/1950143305194991616.htm"
                           title="小架构step系列25:错误码" target="_blank">小架构step系列25:错误码</a>
                        <span class="text-muted">秋千码途</span>
<a class="tag" taget="_blank" href="/search/%E6%9E%B6%E6%9E%84/1.htm">架构</a><a class="tag" taget="_blank" href="/search/java/1.htm">java</a>
                        <div>1概述一个系统中,可能产生各种各样的错误,对这些错误进行编码。当错误发生时,通过这个错误码就有可能快速判断是什么错误,不一定需要查看代码就可以进行处理,提高问题处理效率。有了统一的错误码,还可以标准化错误信息,方便把错误信息纳入文档管理和对错误信息进行国际化等。没有错误码的管理,开发人员就会按自己的理解处理这些错误。有些直接把堆栈直接反馈到前端页面上,使用看不懂这些信息体验很差,也暴露了堆栈信息有</div>
                    </li>
                    <li><a href="/article/1950140903616212992.htm"
                           title="Java朴实无华按天计划从入门到实战(强化速战版-66天)" target="_blank">Java朴实无华按天计划从入门到实战(强化速战版-66天)</a>
                        <span class="text-muted">岫珩</span>
<a class="tag" taget="_blank" href="/search/Java/1.htm">Java</a><a class="tag" taget="_blank" href="/search/%E5%90%8E%E7%AB%AF/1.htm">后端</a><a class="tag" taget="_blank" href="/search/java/1.htm">java</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%AD%A6%E4%B9%A0/1.htm">学习</a><a class="tag" taget="_blank" href="/search/Java/1.htm">Java</a><a class="tag" taget="_blank" href="/search/%E6%97%B6%E9%97%B4%E5%AE%89%E6%8E%92/1.htm">时间安排</a><a class="tag" taget="_blank" href="/search/%E5%AD%A6%E4%B9%A0%E8%AE%A1%E5%88%92/1.htm">学习计划</a>
                        <div>致敬读者感谢阅读笑口常开生日快乐⬛早点睡觉博主相关博主信息博客首页专栏推荐活动信息文章目录Java朴实无华按天计划从入门到实战(强化速战版-66天)1.基础(18)1.1JavaSE核心(5天)1.2数据库与SQL(5天)1.3前端基础(8天)2.进阶(17天)2.1JavaWeb核心(5天)2.2Mybatis与Spring全家桶(6天)2.3中间件入门(4天)2.4实践项目(2天)3.高阶(1</div>
                    </li>
                    <li><a href="/article/1950139641550139392.htm"
                           title="神奇的平静" target="_blank">神奇的平静</a>
                        <span class="text-muted">漫步的小马驹</span>

                        <div>我们七组色香味俱全的特色菜百家宴我们七组的仙女们仙女们在舞动上图是今晚上海nlp课堂的晚会照片。熟悉的场地,熟悉的伙伴们。只是,我从画面里,跑到了画面外。决定不去二阶的时候,我以为在这样的时刻,我会有很多情绪:郁闷、遗憾、羡慕、纠结……没想到,这一刻真的来临的时候,我心里是满满的喜悦、平静。其实,在读到惠安的时,我内心有些小波动:惠安和我工作类似,她也面临突击检查,她因为领导的理解、同事的护援而得</div>
                    </li>
                    <li><a href="/article/1950132204336115712.htm"
                           title="《跨域资源共享CORS的深层逻辑与前端实践精要》" target="_blank">《跨域资源共享CORS的深层逻辑与前端实践精要》</a>
                        <span class="text-muted"></span>

                        <div>不同源头的资源交互已成为常态,而跨域资源共享(CORS)正是支撑这种交互的隐形架构。现代Web安全体系中平衡开放与防护的精妙设计。理解CORS的深层逻辑,不仅能解决实际开发中的跨域难题,更能触及网络安全与资源流通的核心矛盾,为前端工程师构建稳健的应用提供底层认知支撑。跨域资源共享的诞生,源于网络安全与应用发展的必然冲突。浏览器的同源策略,作为早期网络安全的基石,通过限制不同源文档的交互,有效阻挡了</div>
                    </li>
                    <li><a href="/article/1950131321980383232.htm"
                           title="深入了解 Kubernetes(k8s):从概念到实践" target="_blank">深入了解 Kubernetes(k8s):从概念到实践</a>
                        <span class="text-muted"></span>

                        <div>目录一、k8s核心概念二、k8s的优势三、k8s架构组件控制平面组件节点组件四、k8s+docker运行前后端分离项目的例子1.准备前端项目2.准备后端项目3.创建k8s部署配置文件4.部署应用到k8s集群在当今云计算和容器化技术飞速发展的时代,Kubernetes(简称k8s)已成为容器编排领域的事实标准。无论是互联网巨头、传统企业还是初创公司,都在广泛采用k8s来管理和部署容器化应用。本文将带</div>
                    </li>
                    <li><a href="/article/1950130692448907264.htm"
                           title="Vue CSR 到 Nuxt 3 SSR 迁移:技术实现与问题解决实录" target="_blank">Vue CSR 到 Nuxt 3 SSR 迁移:技术实现与问题解决实录</a>
                        <span class="text-muted">二倍速播放</span>
<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>
                        <div>1.迁移动机与技术选型1.1CSR架构的局限性基于Vue3和Vite构建的客户端渲染(CSR)单页应用(SPA)提供了良好的开发体验和用户交互流畅性。但是其核心局限在于:搜索引擎优化(SEO):初始HTML响应仅包含一个根div元素,实际内容由JavaScript在浏览器端动态生成。虽然主流搜索引擎(如Google)能够执行部分JavaScript,但其抓取效率和稳定性不如直接获取完整HTML。非</div>
                    </li>
                    <li><a href="/article/1950123707351494656.htm"
                           title="年夜饭凉菜首选这道,简单又好看,不管是自己吃还是待客都不错!" target="_blank">年夜饭凉菜首选这道,简单又好看,不管是自己吃还是待客都不错!</a>
                        <span class="text-muted">美食达人计划</span>

                        <div>今天来介绍一款我个人特别喜欢吃的凉菜,即使只有一道菜也会让我吃得津津有味,它就是我们传说中的皮蛋拌豆腐。首先它的做法极其简单,食材要求也不高,几乎每个人都能轻松搞定,但是做出来之后不但是颜值和口感都是一等一的棒!即使是在吃年夜饭的时候端上桌,每个人都会很喜欢的哟!过年期间大家肯定都是天天大鱼大肉,但是这道凉菜同样也是必不可少的,调节一下胃口才能让我们吃得更加舒心呢!方便又快捷的家常凉菜,清爽解馋,</div>
                    </li>
                    <li><a href="/article/1950123448156090368.htm"
                           title="年初五" target="_blank">年初五</a>
                        <span class="text-muted">温言女士</span>

                        <div>年初五,太阳终于露出了笑意。阴霾永远不会成为常态,人生也是如此。不管处在什么样的境况里,记得相信美好终会到来,记得对自己好一点。年,总是这样,轰轰烈烈,悄无声息。物质丰富了,精神上的牵绊少了,年味也就淡了。更何况,我并不喜欢传统菜式和穿新衣放鞭炮走亲戚。除夕夜早早入睡,一年的疲惫和奔波,好好休息才最重要。年初五,生活恢复正常的样子:跑步,读书,做饭,打扫。要控制玩手机的时间,也不会再专心只看电视。</div>
                    </li>
                    <li><a href="/article/1950122942239141888.htm"
                           title="猫熊宝贝膳食分享1月7日-1月11日" target="_blank">猫熊宝贝膳食分享1月7日-1月11日</a>
                        <span class="text-muted">猫熊宝贝国际儿童之家</span>

                        <div>周一早点:华西鲜牛奶,胚芽蛋糕午餐:南瓜饭,葱香肉沫土豆泥,腐竹三丁,炝炒瓢儿白,海味冬瓜汤午点:苹果晚餐:肉哨菌汤面,薯泥卷,香酥鸡米花图片发自App周二早点:华西鲜牛奶,红豆餐包午餐:桃仁芝麻米饭,彩椒牛柳,蚝油鲍菇肉园,蒜蓉菜心,萝卜银丝肉片汤午点:香蕉晚餐:鲜肉什锦焖饭,热拌豉汁豆干,白菜豆腐汤图片发自App周三早点:华西鲜牛奶,原味蛋糕午餐:红薯米饭,海带烧肉,土豆回锅肉,脆炒西芹,紫菜</div>
                    </li>
                    <li><a href="/article/1950119224630374400.htm"
                           title="大厂都在用的前端缓存策略,你掌握了吗?" target="_blank">大厂都在用的前端缓存策略,你掌握了吗?</a>
                        <span class="text-muted">AI架构全栈开发实战笔记</span>
<a class="tag" taget="_blank" href="/search/%E5%89%8D%E7%AB%AF/1.htm">前端</a><a class="tag" taget="_blank" href="/search/%E7%BC%93%E5%AD%98/1.htm">缓存</a><a class="tag" taget="_blank" href="/search/ai/1.htm">ai</a>
                        <div>大厂都在用的前端缓存策略,你掌握了吗?关键词:前端缓存、HTTP缓存、ServiceWorker、CDN缓存、缓存策略、性能优化、浏览器缓存摘要:本文将深入探讨前端开发中常用的缓存策略,从浏览器缓存到ServiceWorker,从HTTP缓存头到CDN缓存,全面解析大厂都在使用的高效缓存技术。通过生动的比喻和实际代码示例,帮助开发者理解并掌握这些提升Web应用性能的关键技术。背景介绍目的和范围本文</div>
                    </li>
                    <li><a href="/article/1950115062781898752.htm"
                           title="26. 什么是雪碧图,作用和原理了解吗" target="_blank">26. 什么是雪碧图,作用和原理了解吗</a>
                        <span class="text-muted">yqcoder</span>
<a class="tag" taget="_blank" href="/search/%E5%89%8D%E7%AB%AF%E9%9D%A2%E8%AF%95-CSS/1.htm">前端面试-CSS</a><a class="tag" taget="_blank" href="/search/css/1.htm">css</a><a class="tag" taget="_blank" href="/search/%E5%89%8D%E7%AB%AF/1.htm">前端</a><a class="tag" taget="_blank" href="/search/html/1.htm">html</a>
                        <div>总结小图合成一张,使用background来使用,减少资源请求一、什么是雪碧图?雪碧图(CSSSprite)是一种前端优化技术,指的是将多个小图标合并成一张大图,通过CSS控制显示其中的某一部分。它常用于网站中图标、按钮等小图较多的场景。二、雪碧图的作用作用说明✅减少HTTP请求次数合并多个图片为一张图,减少请求资源数✅提升页面加载速度尤其在图片较多时效果明显✅避免图片加载闪烁鼠标悬停切换图片时不</div>
                    </li>
                    <li><a href="/article/1950114810557427712.htm"
                           title="12. 什么是事件委托" target="_blank">12. 什么是事件委托</a>
                        <span class="text-muted">yqcoder</span>
<a class="tag" taget="_blank" href="/search/%E5%89%8D%E7%AB%AF%E9%9D%A2%E8%AF%95-CSS/1.htm">前端面试-CSS</a><a class="tag" taget="_blank" href="/search/css/1.htm">css</a><a class="tag" taget="_blank" href="/search/%E9%9D%A2%E8%AF%95/1.htm">面试</a>
                        <div>总结事件委托(EventDelegation)是JavaScript中一种重要的事件处理机制,它利用了事件冒泡的特性,将事件的处理程序绑定到父元素或祖先元素上,而不是直接绑定到具体的子元素上。什么是事件委托?事件冒泡:在DOM中,事件通常会从触发元素开始,然后逐级向上冒泡到其父元素、祖先元素,直到window对象。核心思想:事件委托的核心思想是利用事件冒泡机制,在父元素上监听事件,而不是在每个子元</div>
                    </li>
                    <li><a href="/article/1950112039502409728.htm"
                           title="H5UI微信小程序前端框架实战指南" target="_blank">H5UI微信小程序前端框架实战指南</a>
                        <span class="text-muted">ai</span>

                        <div>本文还有配套的精品资源,点击获取简介:H5UI是一个为微信小程序开发设计的前端框架,基于H5技术,提供简洁高效的组件库。框架集成了丰富的UI元素,如按钮、表格、导航栏等,简化了界面布局和交互的实现。通过安装、引入、使用组件和事件绑定四个步骤,开发者可以轻松构建功能齐全的应用。了解性能优化等注意事项对于高效开发同样重要。1.微信小程序前端开发框架介绍微信小程序概述微信小程序是微信官方推出的一种无需下</div>
                    </li>
                    <li><a href="/article/1950104854819041280.htm"
                           title="Ubuntu安装LAMP" target="_blank">Ubuntu安装LAMP</a>
                        <span class="text-muted">L_h1</span>
<a class="tag" taget="_blank" href="/search/%E6%B5%8B%E8%AF%95/1.htm">测试</a><a class="tag" taget="_blank" href="/search/ubuntu/1.htm">ubuntu</a><a class="tag" taget="_blank" href="/search/linux/1.htm">linux</a>
                        <div>在安装vim时遇到了一个问题:E:无法获得锁/var/lib/dpkg/lock-frontend-open(11:资源暂时不可用)E:无法获取dpkg前端锁(/var/lib/dpkg/lock-frontend),是否有其他进程正占用它?解决办法:强制解锁sudorm/var/lib/dpkg/lock-frontendsudorm/var/cache/apt/archives/locksud</div>
                    </li>
                    <li><a href="/article/1950104727928762368.htm"
                           title="震惊!DOM变化监控神器MutationObserver,前端开发必知的隐藏武器!" target="_blank">震惊!DOM变化监控神器MutationObserver,前端开发必知的隐藏武器!</a>
                        <span class="text-muted">coding随想</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/javascript/1.htm">javascript</a><a class="tag" taget="_blank" href="/search/html5/1.htm">html5</a>
                        <div>一、什么是MutationObserver?如果你是一个前端开发者,一定会遇到这样的场景:页面动态加载内容后,某些操作失效了。比如,你写了一个监听按钮点击的代码,但按钮是通过AJAX动态加载的,你的代码根本无法触发。这个时候,你就需要一个“监控哨兵”——MutationObserver,它能实时监听DOM树的变化,帮你捕获那些“暗中作祟”的节点变动。MutationObserver是HTML5引入</div>
                    </li>
                    <li><a href="/article/1950098631990243328.htm"
                           title="2020-02-09" target="_blank">2020-02-09</a>
                        <span class="text-muted">2020奥利给</span>

                        <div>正月十六天气晴好下午和老妈跑到老房子那去摘艾草,远远望着,竟到处都是人,我们去的地方根本没找到艾草,胡乱转了一圈就回来了。好在主要目的是去活动下,便于消化。明天又要开始工作啦,铆足了劲儿,干就是了!又想去看国超文集了,打打鸡血哈哈哈</div>
                    </li>
                                <li><a href="/article/95.htm"
                                       title="PHP,安卓,UI,java,linux视频教程合集" target="_blank">PHP,安卓,UI,java,linux视频教程合集</a>
                                    <span class="text-muted">cocos2d-x小菜</span>
<a class="tag" taget="_blank" href="/search/java/1.htm">java</a><a class="tag" taget="_blank" href="/search/UI/1.htm">UI</a><a class="tag" taget="_blank" href="/search/linux/1.htm">linux</a><a class="tag" taget="_blank" href="/search/PHP/1.htm">PHP</a><a class="tag" taget="_blank" href="/search/android/1.htm">android</a>
                                    <div>╔-----------------------------------╗┆                           </div>
                                </li>
                                <li><a href="/article/222.htm"
                                       title="zookeeper admin 笔记" target="_blank">zookeeper admin 笔记</a>
                                    <span class="text-muted">braveCS</span>
<a class="tag" taget="_blank" href="/search/zookeeper/1.htm">zookeeper</a>
                                    <div>  
Required Software 
1) JDK>=1.6 
2)推荐使用ensemble的ZooKeeper(至少3台),并run on separate machines 
3)在Yahoo!,zk配置在特定的RHEL boxes里,2个cpu,2G内存,80G硬盘 
   


数据和日志目录  
1)数据目录里的文件是zk节点的持久化备份,包括快照和事务日</div>
                                </li>
                                <li><a href="/article/349.htm"
                                       title="Spring配置多个连接池" target="_blank">Spring配置多个连接池</a>
                                    <span class="text-muted">easterfly</span>
<a class="tag" taget="_blank" href="/search/spring/1.htm">spring</a>
                                    <div>项目中需要同时连接多个数据库的时候,如何才能在需要用到哪个数据库就连接哪个数据库呢? 
Spring中有关于dataSource的配置: 
    <bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource" 
  &nb</div>
                                </li>
                                <li><a href="/article/476.htm"
                                       title="Mysql" target="_blank">Mysql</a>
                                    <span class="text-muted">171815164</span>
<a class="tag" taget="_blank" href="/search/mysql/1.htm">mysql</a>
                                    <div>例如,你想myuser使用mypassword从任何主机连接到mysql服务器的话。 
 
GRANT ALL PRIVILEGES ON *.* TO 'myuser'@'%'IDENTIFIED BY 'mypassword' WI 
 
TH GRANT OPTION; 
 
如果你想允许用户myuser从ip为192.168.1.6的主机连接到mysql服务器,并使用mypassword作</div>
                                </li>
                                <li><a href="/article/603.htm"
                                       title="CommonDAO(公共/基础DAO)" target="_blank">CommonDAO(公共/基础DAO)</a>
                                    <span class="text-muted">g21121</span>
<a class="tag" taget="_blank" href="/search/DAO/1.htm">DAO</a>
                                    <div>        好久没有更新博客了,最近一段时间工作比较忙,所以请见谅,无论你是爱看呢还是爱看呢还是爱看呢,总之或许对你有些帮助。 
        DAO(Data Access Object)是一个数据访问(顾名思义就是与数据库打交道)接口,DAO一般在业</div>
                                </li>
                                <li><a href="/article/730.htm"
                                       title="直言有讳" target="_blank">直言有讳</a>
                                    <span class="text-muted">永夜-极光</span>
<a class="tag" taget="_blank" href="/search/%E6%84%9F%E6%82%9F/1.htm">感悟</a><a class="tag" taget="_blank" href="/search/%E9%9A%8F%E7%AC%94/1.htm">随笔</a>
                                    <div>  
1.转载地址:http://blog.csdn.net/jasonblog/article/details/10813313 
  
精华: 
“直言有讳”是阿里巴巴提倡的一种观念,而我在此之前并没有很深刻的认识。为什么呢?就好比是读书时候做阅读理解,我喜欢我自己的解读,并不喜欢老师给的意思。在这里也是。我自己坚持的原则是互相尊重,我觉得阿里巴巴很多价值观其实是基本的做人</div>
                                </li>
                                <li><a href="/article/857.htm"
                                       title="安装CentOS 7 和Win 7后,Win7 引导丢失" target="_blank">安装CentOS 7 和Win 7后,Win7 引导丢失</a>
                                    <span class="text-muted">随便小屋</span>
<a class="tag" taget="_blank" href="/search/centos/1.htm">centos</a>
                                    <div>一般安装双系统的顺序是先装Win7,然后在安装CentOS,这样CentOS可以引导WIN 7启动。但安装CentOS7后,却找不到Win7 的引导,稍微修改一点东西即可。 
一、首先具有root 的权限。 
     即进入Terminal后输入命令su,然后输入密码即可 
二、利用vim编辑器打开/boot/grub2/grub.cfg文件进行修改 
v</div>
                                </li>
                                <li><a href="/article/984.htm"
                                       title="Oracle备份与恢复案例" target="_blank">Oracle备份与恢复案例</a>
                                    <span class="text-muted">aijuans</span>
<a class="tag" taget="_blank" href="/search/oracle/1.htm">oracle</a>
                                    <div>Oracle备份与恢复案例 
一. 理解什么是数据库恢复当我们使用一个数据库时,总希望数据库的内容是可靠的、正确的,但由于计算机系统的故障(硬件故障、软件故障、网络故障、进程故障和系统故障)影响数据库系统的操作,影响数据库中数据的正确性,甚至破坏数据库,使数据库中全部或部分数据丢失。因此当发生上述故障后,希望能重构这个完整的数据库,该处理称为数据库恢复。恢复过程大致可以分为复原(Restore)与</div>
                                </li>
                                <li><a href="/article/1111.htm"
                                       title="JavaEE开源快速开发平台G4Studio v5.0发布" target="_blank">JavaEE开源快速开发平台G4Studio v5.0发布</a>
                                    <span class="text-muted">無為子</span>

                                    <div>  
我非常高兴地宣布,今天我们最新的JavaEE开源快速开发平台G4Studio_V5.0版本已经正式发布。 
  
访问G4Studio网站  
http://www.g4it.org       
2013-04-06 发布G4Studio_V5.0版本 
功能新增 
(1). 新增了调用Oracle存储过程返回游标,并将游标映射为Java List集合对象的标</div>
                                </li>
                                <li><a href="/article/1238.htm"
                                       title="Oracle显示根据高考分数模拟录取" target="_blank">Oracle显示根据高考分数模拟录取</a>
                                    <span class="text-muted">百合不是茶</span>
<a class="tag" taget="_blank" href="/search/PL%2FSQL%E7%BC%96%E7%A8%8B/1.htm">PL/SQL编程</a><a class="tag" taget="_blank" href="/search/oracle%E4%BE%8B%E5%AD%90/1.htm">oracle例子</a><a class="tag" taget="_blank" href="/search/%E6%A8%A1%E6%8B%9F%E9%AB%98%E8%80%83%E5%BD%95%E5%8F%96/1.htm">模拟高考录取</a><a class="tag" taget="_blank" href="/search/%E5%AD%A6%E4%B9%A0%E4%BA%A4%E6%B5%81/1.htm">学习交流</a>
                                    <div>题目要求: 
1,创建student表和result表
2,pl/sql对学生的成绩数据进行处理
3,处理的逻辑是根据每门专业课的最低分线和总分的最低分数线自动的将录取和落选 
  
  
1,创建student表,和result表 
学生信息表; 
create table student(
   student_id number primary key,--学生id</div>
                                </li>
                                <li><a href="/article/1365.htm"
                                       title="优秀的领导与差劲的领导" target="_blank">优秀的领导与差劲的领导</a>
                                    <span class="text-muted">bijian1013</span>
<a class="tag" taget="_blank" href="/search/%E9%A2%86%E5%AF%BC/1.htm">领导</a><a class="tag" taget="_blank" href="/search/%E7%AE%A1%E7%90%86/1.htm">管理</a><a class="tag" taget="_blank" href="/search/%E5%9B%A2%E9%98%9F/1.htm">团队</a>
                                    <div>责任 

  优秀的领导:优秀的领导总是对他所负责的项目担负起责任。如果项目不幸失败了,那么他知道该受责备的人是他自己,并且敢于承认错误。 
  
 差劲的领导:差劲的领导觉得这不是他的问题,因此他会想方设法证明是他的团队不行,或是将责任归咎于团队中他不喜欢的那几个成员身上。 
 
努力工作 

  优秀的领导:团队领导应该是团队成员的榜样。至少,他应该与团队中的其他成员一样努力工作。这仅仅因为他</div>
                                </li>
                                <li><a href="/article/1492.htm"
                                       title="js函数在浏览器下的兼容" target="_blank">js函数在浏览器下的兼容</a>
                                    <span class="text-muted">Bill_chen</span>
<a class="tag" taget="_blank" href="/search/jquery/1.htm">jquery</a><a class="tag" taget="_blank" href="/search/%E6%B5%8F%E8%A7%88%E5%99%A8/1.htm">浏览器</a><a class="tag" taget="_blank" href="/search/IE/1.htm">IE</a><a class="tag" taget="_blank" href="/search/DWR/1.htm">DWR</a><a class="tag" taget="_blank" href="/search/ext/1.htm">ext</a>
                                    <div>  做前端开发的工程师,少不了要用FF进行测试,纯js函数在不同浏览器下,名称也可能不同。对于IE6和FF,取得下一结点的函数就不尽相同: 
 
  IE6:node.nextSibling,对于FF是不能识别的; 
 
  FF:node.nextElementSibling,对于IE是不能识别的; 
 
兼容解决方式:var Div = node.nextSibl</div>
                                </li>
                                <li><a href="/article/1619.htm"
                                       title="【JVM四】老年代垃圾回收:吞吐量垃圾收集器(Throughput GC)" target="_blank">【JVM四】老年代垃圾回收:吞吐量垃圾收集器(Throughput GC)</a>
                                    <span class="text-muted">bit1129</span>
<a class="tag" taget="_blank" href="/search/%E5%9E%83%E5%9C%BE%E5%9B%9E%E6%94%B6/1.htm">垃圾回收</a>
                                    <div>吞吐量与用户线程暂停时间 
  
衡量垃圾回收算法优劣的指标有两个: 
 
 吞吐量越高,则算法越好 
 暂停时间越短,则算法越好 
 
首先说明吞吐量和暂停时间的含义。 
  
垃圾回收时,JVM会启动几个特定的GC线程来完成垃圾回收的任务,这些GC线程与应用的用户线程产生竞争关系,共同竞争处理器资源以及CPU的执行时间。GC线程不会对用户带来的任何价值,因此,好的GC应该占</div>
                                </li>
                                <li><a href="/article/1746.htm"
                                       title="J2EE监听器和过滤器基础" target="_blank">J2EE监听器和过滤器基础</a>
                                    <span class="text-muted">白糖_</span>
<a class="tag" taget="_blank" href="/search/J2EE/1.htm">J2EE</a>
                                    <div> Servlet程序由Servlet,Filter和Listener组成,其中监听器用来监听Servlet容器上下文。 
监听器通常分三类:基于Servlet上下文的ServletContex监听,基于会话的HttpSession监听和基于请求的ServletRequest监听。 
  
 
 ServletContex监听器 
   ServletContex又叫application</div>
                                </li>
                                <li><a href="/article/1873.htm"
                                       title="博弈AngularJS讲义(16) - 提供者" target="_blank">博弈AngularJS讲义(16) - 提供者</a>
                                    <span class="text-muted">boyitech</span>
<a class="tag" taget="_blank" href="/search/js/1.htm">js</a><a class="tag" taget="_blank" href="/search/AngularJS/1.htm">AngularJS</a><a class="tag" taget="_blank" href="/search/api/1.htm">api</a><a class="tag" taget="_blank" href="/search/Angular/1.htm">Angular</a><a class="tag" taget="_blank" href="/search/Provider/1.htm">Provider</a>
                                    <div>  Angular框架提供了强大的依赖注入机制,这一切都是有注入器(injector)完成. 注入器会自动实例化服务组件和符合Angular API规则的特殊对象,例如控制器,指令,过滤器动画等。 
  那注入器怎么知道如何去创建这些特殊的对象呢? Angular提供了5种方式让注入器创建对象,其中最基础的方式就是提供者(provider), 其余四种方式(Value, Fac</div>
                                </li>
                                <li><a href="/article/2000.htm"
                                       title="java-写一函数f(a,b),它带有两个字符串参数并返回一串字符,该字符串只包含在两个串中都有的并按照在a中的顺序。" target="_blank">java-写一函数f(a,b),它带有两个字符串参数并返回一串字符,该字符串只包含在两个串中都有的并按照在a中的顺序。</a>
                                    <span class="text-muted">bylijinnan</span>
<a class="tag" taget="_blank" href="/search/java/1.htm">java</a>
                                    <div>

public class CommonSubSequence {

	/**
	 * 题目:写一函数f(a,b),它带有两个字符串参数并返回一串字符,该字符串只包含在两个串中都有的并按照在a中的顺序。
	 * 写一个版本算法复杂度O(N^2)和一个O(N) 。
	 * 
	 * O(N^2):对于a中的每个字符,遍历b中的每个字符,如果相同,则拷贝到新字符串中。
	 * O(</div>
                                </li>
                                <li><a href="/article/2127.htm"
                                       title="sqlserver 2000 无法验证产品密钥" target="_blank">sqlserver 2000 无法验证产品密钥</a>
                                    <span class="text-muted">Chen.H</span>
<a class="tag" taget="_blank" href="/search/sql/1.htm">sql</a><a class="tag" taget="_blank" href="/search/windows/1.htm">windows</a><a class="tag" taget="_blank" href="/search/SQL+Server/1.htm">SQL Server</a><a class="tag" taget="_blank" href="/search/Microsoft/1.htm">Microsoft</a>
                                    <div>在 Service Pack 4 (SP 4), 是运行 Microsoft Windows Server 2003、 Microsoft Windows Storage Server 2003 或 Microsoft Windows 2000 服务器上您尝试安装 Microsoft SQL Server 2000 通过卷许可协议 (VLA) 媒体。 这样做, 收到以下错误信息CD KEY的 SQ</div>
                                </li>
                                <li><a href="/article/2254.htm"
                                       title="[新概念武器]气象战争" target="_blank">[新概念武器]气象战争</a>
                                    <span class="text-muted">comsci</span>

                                    <div> 
 
       气象战争的发动者必须是拥有发射深空航天器能力的国家或者组织.... 
 
       原因如下: 
 
       地球上的气候变化和大气层中的云层涡旋场有密切的关系,而维持一个在大气层某个层次</div>
                                </li>
                                <li><a href="/article/2381.htm"
                                       title="oracle 中 rollup、cube、grouping 使用详解" target="_blank">oracle 中 rollup、cube、grouping 使用详解</a>
                                    <span class="text-muted">daizj</span>
<a class="tag" taget="_blank" href="/search/oracle/1.htm">oracle</a><a class="tag" taget="_blank" href="/search/grouping/1.htm">grouping</a><a class="tag" taget="_blank" href="/search/rollup/1.htm">rollup</a><a class="tag" taget="_blank" href="/search/cube/1.htm">cube</a>
                                    <div>oracle 中 rollup、cube、grouping 使用详解 -- 使用oracle 样例表演示 转自namesliu 
 
-- 使用oracle 的样列库,演示 rollup, cube, grouping 的用法与使用场景  
  
--- ROLLUP , 为了理解分组的成员数量,我增加了 分组的计数  COUNT(SAL)  
 </div>
                                </li>
                                <li><a href="/article/2508.htm"
                                       title="技术资料汇总分享" target="_blank">技术资料汇总分享</a>
                                    <span class="text-muted">Dead_knight</span>
<a class="tag" taget="_blank" href="/search/%E6%8A%80%E6%9C%AF%E8%B5%84%E6%96%99%E6%B1%87%E6%80%BB+%E5%88%86%E4%BA%AB/1.htm">技术资料汇总 分享</a>
                                    <div>本人汇总的技术资料,分享出来,希望对大家有用。 
 
http://pan.baidu.com/s/1jGr56uE 
 
资料主要包含: 
Workflow->工作流相关理论、框架(OSWorkflow、JBPM、Activiti、fireflow...) 
Security->java安全相关资料(SSL、SSO、SpringSecurity、Shiro、JAAS...) 
Ser</div>
                                </li>
                                <li><a href="/article/2635.htm"
                                       title="初一下学期难记忆单词背诵第一课" target="_blank">初一下学期难记忆单词背诵第一课</a>
                                    <span class="text-muted">dcj3sjt126com</span>
<a class="tag" taget="_blank" href="/search/english/1.htm">english</a><a class="tag" taget="_blank" href="/search/word/1.htm">word</a>
                                    <div>could 能够 
minute 分钟 
Tuesday 星期二 
February 二月 
eighteenth 第十八 
listen 听 
careful 小心的,仔细的 
short 短的 
heavy 重的 
empty 空的 
certainly 当然 
carry 携带;搬运 
tape 磁带 
basket 蓝子 
bottle 瓶 
juice 汁,果汁 
head 头;头部 
</div>
                                </li>
                                <li><a href="/article/2762.htm"
                                       title="截取视图的图片, 然后分享出去" target="_blank">截取视图的图片, 然后分享出去</a>
                                    <span class="text-muted">dcj3sjt126com</span>
<a class="tag" taget="_blank" href="/search/OS/1.htm">OS</a><a class="tag" taget="_blank" href="/search/Objective-C/1.htm">Objective-C</a>
                                    <div>OS 7 has a new method that allows you to draw a view hierarchy into the current graphics context. This can be used to get an UIImage very fast. 
I implemented a category method on UIView to get the vi</div>
                                </li>
                                <li><a href="/article/2889.htm"
                                       title="MySql重置密码" target="_blank">MySql重置密码</a>
                                    <span class="text-muted">fanxiaolong</span>
<a class="tag" taget="_blank" href="/search/MySql%E9%87%8D%E7%BD%AE%E5%AF%86%E7%A0%81/1.htm">MySql重置密码</a>
                                    <div>方法一: 
 在my.ini的[mysqld]字段加入: 
skip-grant-tables 
重启mysql服务,这时的mysql不需要密码即可登录数据库 
 然后进入mysql 
mysql>use mysql; 
 mysql>更新 user set password=password('新密码') WHERE User='root'; 
mysq</div>
                                </li>
                                <li><a href="/article/3016.htm"
                                       title="Ehcache(03)——Ehcache中储存缓存的方式" target="_blank">Ehcache(03)——Ehcache中储存缓存的方式</a>
                                    <span class="text-muted">234390216</span>
<a class="tag" taget="_blank" href="/search/ehcache/1.htm">ehcache</a><a class="tag" taget="_blank" href="/search/MemoryStore/1.htm">MemoryStore</a><a class="tag" taget="_blank" href="/search/DiskStore/1.htm">DiskStore</a><a class="tag" taget="_blank" href="/search/%E5%AD%98%E5%82%A8/1.htm">存储</a><a class="tag" taget="_blank" href="/search/%E9%A9%B1%E9%99%A4%E7%AD%96%E7%95%A5/1.htm">驱除策略</a>
                                    <div>Ehcache中储存缓存的方式 
  
目录 
1     堆内存(MemoryStore) 
1.1     指定可用内存 
1.2     驱除策略 
1.3     元素过期 
2   &nbs</div>
                                </li>
                                <li><a href="/article/3143.htm"
                                       title="spring mvc中的@propertysource" target="_blank">spring mvc中的@propertysource</a>
                                    <span class="text-muted">jackyrong</span>
<a class="tag" taget="_blank" href="/search/spring+mvc/1.htm">spring mvc</a>
                                    <div>  在spring mvc中,在配置文件中的东西,可以在java代码中通过注解进行读取了: 
 
@PropertySource  在spring 3.1中开始引入 
 
比如有配置文件 
config.properties 
 
mongodb.url=1.2.3.4 
mongodb.db=hello 
 
则代码中 
  

@PropertySource(&</div>
                                </li>
                                <li><a href="/article/3270.htm"
                                       title="重学单例模式" target="_blank">重学单例模式</a>
                                    <span class="text-muted">lanqiu17</span>
<a class="tag" taget="_blank" href="/search/%E5%8D%95%E4%BE%8B/1.htm">单例</a><a class="tag" taget="_blank" href="/search/Singleton/1.htm">Singleton</a><a class="tag" taget="_blank" href="/search/%E6%A8%A1%E5%BC%8F/1.htm">模式</a>
                                    <div>最近在重新学习设计模式,感觉对模式理解更加深刻。觉得有必要记下来。 
	第一个学的就是单例模式,单例模式估计是最好理解的模式了。它的作用就是防止外部创建实例,保证只有一个实例。
	单例模式的常用实现方式有两种,就人们熟知的饱汉式与饥汉式,具体就不多说了。这里说下其他的实现方式
	静态内部类方式: 
package test.pattern.singleton.statics;

publ</div>
                                </li>
                                <li><a href="/article/3397.htm"
                                       title=".NET开源核心运行时,且行且珍惜" target="_blank">.NET开源核心运行时,且行且珍惜</a>
                                    <span class="text-muted">netcome</span>
<a class="tag" taget="_blank" href="/search/java/1.htm">java</a><a class="tag" taget="_blank" href="/search/.net/1.htm">.net</a><a class="tag" taget="_blank" href="/search/%E5%BC%80%E6%BA%90/1.htm">开源</a>
                                    <div>背景 
2014年11月12日,ASP.NET之父、微软云计算与企业级产品工程部执行副总裁Scott Guthrie,在Connect全球开发者在线会议上宣布,微软将开源全部.NET核心运行时,并将.NET 扩展为可在 Linux 和 Mac OS 平台上运行。.NET核心运行时将基于MIT开源许可协议发布,其中将包括执行.NET代码所需的一切项目——CLR、JIT编译器、垃圾收集器(GC)和核心</div>
                                </li>
                                <li><a href="/article/3524.htm"
                                       title="使用oscahe缓存技术减少与数据库的频繁交互" target="_blank">使用oscahe缓存技术减少与数据库的频繁交互</a>
                                    <span class="text-muted">Everyday都不同</span>
<a class="tag" taget="_blank" href="/search/Web/1.htm">Web</a><a class="tag" taget="_blank" href="/search/%E9%AB%98%E5%B9%B6%E5%8F%91/1.htm">高并发</a><a class="tag" taget="_blank" href="/search/oscahe%E7%BC%93%E5%AD%98/1.htm">oscahe缓存</a>
                                    <div>此前一直不知道缓存的具体实现,只知道是把数据存储在内存中,以便下次直接从内存中读取。对于缓存的使用也没有概念,觉得缓存技术是一个比较”神秘陌生“的领域。但最近要用到缓存技术,发现还是很有必要一探究竟的。 
  
缓存技术使用背景:一般来说,对于web项目,如果我们要什么数据直接jdbc查库好了,但是在遇到高并发的情形下,不可能每一次都是去查数据库,因为这样在高并发的情形下显得不太合理——</div>
                                </li>
                                <li><a href="/article/3651.htm"
                                       title="Spring+Mybatis 手动控制事务" target="_blank">Spring+Mybatis 手动控制事务</a>
                                    <span class="text-muted">toknowme</span>
<a class="tag" taget="_blank" href="/search/mybatis/1.htm">mybatis</a>
                                    <div>@Override 
   public boolean testDelete(String jobCode) throws Exception { 
      boolean flag = false; 
 &nbs</div>
                                </li>
                                <li><a href="/article/3778.htm"
                                       title="菜鸟级的android程序员面试时候需要掌握的知识点" target="_blank">菜鸟级的android程序员面试时候需要掌握的知识点</a>
                                    <span class="text-muted">xp9802</span>
<a class="tag" taget="_blank" href="/search/android/1.htm">android</a>
                                    <div>熟悉Android开发架构和API调用 
掌握APP适应不同型号手机屏幕开发技巧 
熟悉Android下的数据存储  
熟练Android Debug Bridge Tool 
熟练Eclipse/ADT及相关工具  
熟悉Android框架原理及Activity生命周期 
熟练进行Android UI布局 
熟练使用SQLite数据库; 
熟悉Android下网络通信机制,S</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>