前端学习第三十五课(ES6-Async函数)

目录

1.Async基本用法

2.语法

2.1 返回 Promise 对象

2.2 Promise 对象的状态变化

2.3 await 命令

2.4 错误处理

2.5 使用注意点

3. async函数实现原理

4.与其他异步处理方法的比较


1.Async基本用法

ES2017 标准引入了 async 函数,使得异步操作变得更加方便。

async函数返回一个 Promise 对象,可以使用then方法添加回调函数。当函数执行的时候,一旦遇到await就会先返回,等到异步操作完成,再接着执行函数体内后面的语句。

下面是一个例子。

async function getStockPriceByName(name) {
  const symbol = await getStockSymbol(name);
  const stockPrice = await getStockPrice(symbol);
  return stockPrice;
}

getStockPriceByName('goog').then(function (result) {
  console.log(result);
});

上面代码是一个获取股票报价的函数,函数前面的async关键字,表明该函数内部有异步操作。调用该函数时,会立即返回一个Promise对象。

下面是另一个例子,指定多少毫秒后输出一个值。

function timeout(ms) {
  return new Promise((resolve) => {
    setTimeout(resolve, ms);
  });
}

async function asyncPrint(value, ms) {
  await timeout(ms);
  console.log(value);
}

asyncPrint('hello world', 50);

上面代码指定 50 毫秒以后,输出hello world

由于async函数返回的是 Promise 对象,可以作为await命令的参数。所以,上面的例子也可以写成下面的形式。

async function timeout(ms) {
  await new Promise((resolve) => {
    setTimeout(resolve, ms);
  });
}

async function asyncPrint(value, ms) {
  await timeout(ms);
  console.log(value);
}

asyncPrint('hello world', 50);

async 函数有多种使用形式。

// 函数声明
async function foo() {}

// 函数表达式
const foo = async function () {};

// 对象的方法
let obj = { async foo() {} };
obj.foo().then(...)

// Class 的方法
class Storage {
  constructor() {
    this.cachePromise = caches.open('avatars');
  }

  async getAvatar(name) {
    const cache = await this.cachePromise;
    return cache.match(`/avatars/${name}.jpg`);
  }
}

const storage = new Storage();
storage.getAvatar('jake').then(…);

// 箭头函数
const foo = async () => {};

2.语法

async函数的语法规则总体上比较简单,难点是错误处理机制。

2.1 返回 Promise 对象

async函数返回一个 Promise 对象。

async函数内部return语句返回的值,会成为then方法回调函数的参数。

async function f() {
  return 'hello world';
}

f().then(v => console.log(v))
// "hello world"

上面代码中,函数f内部return命令返回的值,会被then方法回调函数接收到。

async函数内部抛出错误,会导致返回的 Promise 对象变为reject状态。抛出的错误对象会被catch方法回调函数接收到。

async function f() {
  throw new Error('出错了');
}

f().then(
  v => console.log('resolve', v),
  e => console.log('reject', e)
)
//reject Error: 出错了

2.2 Promise 对象的状态变化

async函数返回的 Promise 对象,必须等到内部所有await命令后面的 Promise 对象执行完,才会发生状态改变,除非遇到return语句或者抛出错误。也就是说,只有async函数内部的异步操作执行完,才会执行then方法指定的回调函数。

下面是一个例子。

async function getTitle(url) {
  let response = await fetch(url);
  let html = await response.text();
  return html.match(/([\s\S]+)<\/title>/i)[1];
}
getTitle('https://tc39.github.io/ecma262/').then(console.log)
// "ECMAScript 2017 Language Specification"</code></pre> 
  <p id="u74d5c18f">上面代码中,函数<code>getTitle</code>内部有三个操作:抓取网页、取出文本、匹配页面标题。只有这三个操作全部完成,才会执行<code>then</code>方法里面的<code>console.log</code>。</p> 
  <h3 id="2.3%C2%A0await%20%E5%91%BD%E4%BB%A4">2.3 await 命令</h3> 
  <p id="ud925ba5f">正常情况下,<code>await</code>命令后面是一个 Promise 对象,返回该对象的结果。如果不是 Promise 对象,就直接返回对应的值。</p> 
  <pre><code>async function f() {
  // 等同于
  // return 123;
  return await 123;
}

f().then(v => console.log(v))
// 123</code></pre> 
  <p id="u570acd3c">上面代码中,<code>await</code>命令的参数是数值<code>123</code>,这时等同于<code>return 123</code>。</p> 
  <p id="uea254036">另一种情况是,<code>await</code>命令后面是一个<code>thenable</code>对象(即定义了<code>then</code>方法的对象),那么<code>await</code>会将其等同于 Promise 对象。</p> 
  <pre><code>class Sleep {
  constructor(timeout) {
    this.timeout = timeout;
  }
  then(resolve, reject) {
    const startTime = Date.now();
    setTimeout(
      () => resolve(Date.now() - startTime),
      this.timeout
    );
  }
}

(async () => {
  const sleepTime = await new Sleep(1000);
  console.log(sleepTime);
})();
// 1000</code></pre> 
  <p id="u6074b312">上面代码中,<code>await</code>命令后面是一个<code>Sleep</code>对象的实例。这个实例不是 Promise 对象,但是因为定义了<code>then</code>方法,<code>await</code>会将其视为<code>Promise</code>处理。</p> 
  <p id="ud3a20eac">这个例子还演示了如何实现休眠效果。JavaScript 一直没有休眠的语法,但是借助<code>await</code>命令就可以让程序停顿指定的时间。下面给出了一个简化的<code>sleep</code>实现。</p> 
  <pre><code>function sleep(interval) {
  return new Promise(resolve => {
    setTimeout(resolve, interval);
  })
}

// 用法
async function one2FiveInAsync() {
  for(let i = 1; i <= 5; i++) {
    console.log(i);
    await sleep(1000);
  }
}

one2FiveInAsync();</code></pre> 
  <p id="u8071f1c3"><code>await</code>命令后面的 Promise 对象如果变为<code>reject</code>状态,则<code>reject</code>的参数会被<code>catch</code>方法的回调函数接收到。</p> 
  <pre><code>async function f() {
  await Promise.reject('出错了');
}

f()
.then(v => console.log(v))
.catch(e => console.log(e))
// 出错了</code></pre> 
  <p id="ude79cd02">注意,上面代码中,<code>await</code>语句前面没有<code>return</code>,但是<code>reject</code>方法的参数依然传入了<code>catch</code>方法的回调函数。这里如果在<code>await</code>前面加上<code>return</code>,效果是一样的。</p> 
  <p id="ud1738ff2">任何一个<code>await</code>语句后面的 Promise 对象变为<code>reject</code>状态,那么整个<code>async</code>函数都会中断执行。</p> 
  <pre><code>async function f() {
  await Promise.reject('出错了');
  await Promise.resolve('hello world'); // 不会执行
}</code></pre> 
  <p id="u63829848">上面代码中,第二个<code>await</code>语句是不会执行的,因为第一个<code>await</code>语句状态变成了<code>reject</code>。</p> 
  <p id="u5d2392f2">有时,我们希望即使前一个异步操作失败,也不要中断后面的异步操作。这时可以将第一个<code>await</code>放在<code>try...catch</code>结构里面,这样不管这个异步操作是否成功,第二个<code>await</code>都会执行。</p> 
  <pre><code>async function f() {  
try {    await Promise.reject('出错了'); 
 } catch(e) {  }  
return await Promise.resolve('hello world');
}f().then(v => console.log(v))
// hello world</code></pre> 
  <p id="ucb029056">另一种方法是<code>await</code>后面的 Promise 对象再跟一个<code>catch</code>方法,处理前面可能出现的错误。</p> 
  <pre><code>async function f() { 
 await Promise.reject('出错了')    
 .catch(e => console.log(e));  
 return await Promise.resolve('hello world');
}f().then(v => console.log(v))
// 出错了
// hello world</code></pre> 
  <h3 id="2.4%20%E9%94%99%E8%AF%AF%E5%A4%84%E7%90%86">2.4 错误处理</h3> 
  <p id="ubea62d9c">如果<code>await</code>后面的异步操作出错,那么等同于<code>async</code>函数返回的 Promise 对象被<code>reject</code>。</p> 
  <pre><code>async function f() {
  await new Promise(function (resolve, reject) {
    throw new Error('出错了');
  });
}

f()
.then(v => console.log(v))
.catch(e => console.log(e))
// Error:出错了</code></pre> 
  <p id="u37b86ab4">上面代码中,<code>async</code>函数<code>f</code>执行后,<code>await</code>后面的 Promise 对象会抛出一个错误对象,导致<code>catch</code>方法的回调函数被调用,它的参数就是抛出的错误对象。具体的执行机制,可以参考后文的“async 函数的实现原理”。</p> 
  <p id="u8fe594a2">防止出错的方法,也是将其放在<code>try...catch</code>代码块之中。</p> 
  <pre><code>async function f() {
  try {
    await new Promise(function (resolve, reject) {
      throw new Error('出错了');
    });
  } catch(e) {
  }
  return await('hello world');
}</code></pre> 
  <p id="u486d2a69">如果有多个<code>await</code>命令,可以统一放在<code>try...catch</code>结构中。</p> 
  <pre><code>async function main() {
  try {
    const val1 = await firstStep();
    const val2 = await secondStep(val1);
    const val3 = await thirdStep(val1, val2);

    console.log('Final: ', val3);
  }
  catch (err) {
    console.error(err);
  }</code></pre> 
  <p id="u1bba5e7c">下面的例子使用<code>try...catch</code>结构,实现多次重复尝试。</p> 
  <pre><code>const superagent = require('superagent');
const NUM_RETRIES = 3;

async function test() {
  let i;
  for (i = 0; i < NUM_RETRIES; ++i) {
    try {
      await superagent.get('http://google.com/this-throws-an-error');
      break;
    } catch(err) {}
  }
  console.log(i); // 3
}

test();</code></pre> 
  <p id="u27554565">上面代码中,如果<code>await</code>操作成功,就会使用<code>break</code>语句退出循环;如果失败,会被<code>catch</code>语句捕捉,然后进入下一轮循环。</p> 
  <h3 id="2.5%20%E4%BD%BF%E7%94%A8%E6%B3%A8%E6%84%8F%E7%82%B9">2.5 使用注意点</h3> 
  <p id="uc8c30e95">第一点,前面已经说过,<code>await</code>命令后面的<code>Promise</code>对象,运行结果可能是<code>rejected</code>,所以最好把<code>await</code>命令放在<code>try...catch</code>代码块中。</p> 
  <pre><code>async function myFunction() {
  try {
    await somethingThatReturnsAPromise();
  } catch (err) {
    console.log(err);
  }
}

// 另一种写法

async function myFunction() {
  await somethingThatReturnsAPromise()
  .catch(function (err) {
    console.log(err);
  });
}</code></pre> 
  <p id="uefc36d79">第二点,多个<code>await</code>命令后面的异步操作,如果不存在继发关系,最好让它们同时触发。</p> 
  <pre><code>let foo = await getFoo();
let bar = await getBar();</code></pre> 
  <p id="uabd33340">上面代码中,<code>getFoo</code>和<code>getBar</code>是两个独立的异步操作(即互不依赖),被写成继发关系。这样比较耗时,因为只有<code>getFoo</code>完成以后,才会执行<code>getBar</code>,完全可以让它们同时触发。</p> 
  <pre><code>// 写法一
let [foo, bar] = await Promise.all([getFoo(), getBar()]);

// 写法二
let fooPromise = getFoo();
let barPromise = getBar();
let foo = await fooPromise;
let bar = await barPromise;</code></pre> 
  <p id="u03ccc39f">上面两种写法,<code>getFoo</code>和<code>getBar</code>都是同时触发,这样就会缩短程序的执行时间。</p> 
  <p id="u751f3fc3">第三点,<code>await</code>命令只能用在<code>async</code>函数之中,如果用在普通函数,就会报错。</p> 
  <pre><code>async function dbFuc(db) {
  let docs = [{}, {}, {}];

  // 报错
  docs.forEach(function (doc) {
    await db.post(doc);
  });
}</code></pre> 
  <p id="ude0d183c">上面代码会报错,因为<code>await</code>用在普通函数之中了。但是,如果将<code>forEach</code>方法的参数改成<code>async</code>函数,也有问题。</p> 
  <pre><code>function dbFuc(db) { //这里不需要 async
  let docs = [{}, {}, {}];

  // 可能得到错误结果
  docs.forEach(async function (doc) {
    await db.post(doc);
  });
}</code></pre> 
  <p id="uab44bd05">上面代码可能不会正常工作,原因是这时三个<code>db.post()</code>操作将是并发执行,也就是同时执行,而不是继发执行。正确的写法是采用<code>for</code>循环。</p> 
  <pre><code>async function dbFuc(db) {
  let docs = [{}, {}, {}];

  for (let doc of docs) {
    await db.post(doc);
  }
}async function dbFuc(db) {  let docs = [{}, {}, {}];  for (let doc of docs) {    await db.post(doc);  }}</code></pre> 
  <p id="uf943b56c">另一种方法是使用数组的<code>reduce()</code>方法。</p> 
  <pre><code>async function dbFuc(db) {
  let docs = [{}, {}, {}];

  await docs.reduce(async (_, doc) => {
    await _;
    await db.post(doc);
  }, undefined);
}</code></pre> 
  <p id="u26e71c15">上面例子中,<code>reduce()</code>方法的第一个参数是<code>async</code>函数,导致该函数的第一个参数是前一步操作返回的 Promise 对象,所以必须使用<code>await</code>等待它操作结束。另外,<code>reduce()</code>方法返回的是<code>docs</code>数组最后一个成员的<code>async</code>函数的执行结果,也是一个 Promise 对象,导致在它前面也必须加上<code>await</code>。</p> 
  <p id="u38d8bcc0">上面的<code>reduce()</code>的参数函数里面没有<code>return</code>语句,原因是这个函数的主要目的是<code>db.post()</code>操作,不是返回值。而且<code>async</code>函数不管有没有<code>return</code>语句,总是返回一个 Promise 对象,所以这里的<code>return</code>是不必要的。</p> 
  <p id="ufd0f4489">如果确实希望多个请求并发执行,可以使用<code>Promise.all</code>方法。当三个请求都会<code>resolved</code>时,下面两种写法效果相同。</p> 
  <pre><code>async function dbFuc(db) {
  let docs = [{}, {}, {}];
  let promises = docs.map((doc) => db.post(doc));

  let results = await Promise.all(promises);
  console.log(results);
}

// 或者使用下面的写法

async function dbFuc(db) {
  let docs = [{}, {}, {}];
  let promises = docs.map((doc) => db.post(doc));

  let results = [];
  for (let promise of promises) {
    results.push(await promise);
  }
  console.log(results);</code></pre> 
  <p id="u1b31012c">第四点,async 函数可以保留运行堆栈。</p> 
  <pre><code>const a = () => {
  b().then(() => c());
};</code></pre> 
  <p id="ue6386f0e">上面代码中,函数<code>a</code>内部运行了一个异步任务<code>b()</code>。当<code>b()</code>运行的时候,函数<code>a()</code>不会中断,而是继续执行。等到<code>b()</code>运行结束,可能<code>a()</code>早就运行结束了,<code>b()</code>所在的上下文环境已经消失了。如果<code>b()</code>或<code>c()</code>报错,错误堆栈将不包括<code>a()</code>。</p> 
  <p id="u79d7f1c6">现在将这个例子改成<code>async</code>函数。</p> 
  <pre><code>const a = async () => {
  await b();
  c();
};const a = async () => {  await b();  c();};</code></pre> 
  <p id="u4a130bed">上面代码中,<code>b()</code>运行的时候,<code>a()</code>是暂停执行,上下文环境都保存着。一旦<code>b()</code>或<code>c()</code>报错,错误堆栈将包括<code>a()</code>。</p> 
  <h2 id="3.%20async%E5%87%BD%E6%95%B0%E5%AE%9E%E7%8E%B0%E5%8E%9F%E7%90%86">3. async函数实现原理</h2> 
  <p id="u1d6733b1">async 函数的实现原理,就是将 Generator 函数和自动执行器,包装在一个函数里。</p> 
  <pre><code>async function fn(args) {
  // ...
}

// 等同于

function fn(args) {
  return spawn(function* () {
    // ...
  });
}</code></pre> 
  <p id="u4c130d68">所有的<code>async</code>函数都可以写成上面的第二种形式,其中的<code>spawn</code>函数就是自动执行器。</p> 
  <p id="u146d2ffa">下面给出<code>spawn</code>函数的实现,基本就是前文自动执行器的翻版。</p> 
  <pre><code>function spawn(genF) {
  return new Promise(function(resolve, reject) {
    const gen = genF();
    function step(nextF) {
      let next;
      try {
        next = nextF();
      } catch(e) {
        return reject(e);
      }
      if(next.done) {
        return resolve(next.value);
      }
      Promise.resolve(next.value).then(function(v) {
        step(function() { return gen.next(v); });
      }, function(e) {
        step(function() { return gen.throw(e); });
      });
    }
    step(function() { return gen.next(undefined); });
  });
}</code></pre> 
  <h2 id="4.%E4%B8%8E%E5%85%B6%E4%BB%96%E5%BC%82%E6%AD%A5%E5%A4%84%E7%90%86%E6%96%B9%E6%B3%95%E7%9A%84%E6%AF%94%E8%BE%83">4.与其他异步处理方法的比较</h2> 
  <p id="u5d102cfe">我们通过一个例子,来看 async 函数与 Promise、Generator 函数的比较。</p> 
  <p id="u7c507dd9">假定某个 DOM 元素上面,部署了一系列的动画,前一个动画结束,才能开始后一个。如果当中有一个动画出错,就不再往下执行,返回上一个成功执行的动画的返回值。</p> 
  <p id="u478fc99d">首先是 Promise 的写法。</p> 
  <pre><code>function chainAnimationsPromise(elem, animations) {

  // 变量ret用来保存上一个动画的返回值
  let ret = null;

  // 新建一个空的Promise
  let p = Promise.resolve();

  // 使用then方法,添加所有动画
  for(let anim of animations) {
    p = p.then(function(val) {
      ret = val;
      return anim(elem);
    });
  }

  // 返回一个部署了错误捕捉机制的Promise
  return p.catch(function(e) {
    /* 忽略错误,继续执行 */
  }).then(function() {
    return ret;
  });

}</code></pre> 
  <p id="u6b25d6d8">虽然 Promise 的写法比回调函数的写法大大改进,但是一眼看上去,代码完全都是 Promise 的 API(<code>then</code>、<code>catch</code>等等),操作本身的语义反而不容易看出来。</p> 
  <p id="uc81874f0">接着是 Generator 函数的写法。</p> 
  <pre><code>function chainAnimationsGenerator(elem, animations) {

  return spawn(function*() {
    let ret = null;
    try {
      for(let anim of animations) {
        ret = yield anim(elem);
      }
    } catch(e) {
      /* 忽略错误,继续执行 */
    }
    return ret;
  });

}</code></pre> 
  <p id="u8ca104a1">上面代码使用 Generator 函数遍历了每个动画,语义比 Promise 写法更清晰,用户定义的操作全部都出现在<code>spawn</code>函数的内部。这个写法的问题在于,必须有一个任务运行器,自动执行 Generator 函数,上面代码的<code>spawn</code>函数就是自动执行器,它返回一个 Promise 对象,而且必须保证<code>yield</code>语句后面的表达式,必须返回一个 Promise。</p> 
  <p id="u66ab54a9">最后是 async 函数的写法。</p> 
  <pre><code>async function chainAnimationsAsync(elem, animations) {
  let ret = null;
  try {
    for(let anim of animations) {
      ret = await anim(elem);
    }
  } catch(e) {
    /* 忽略错误,继续执行 */
  }
  return ret;
}</code></pre> 
  <p id="ua59c8a99">可以看到 Async 函数的实现最简洁,最符合语义,几乎没有语义不相关的代码。它将 Generator 写法中的自动执行器,改在语言层面提供,不暴露给用户,因此代码量最少。如果使用 Generator 写法,自动执行器需要用户自己提供。</p> 
 </div> 
</div>
                            </div>
                        </div>
                    </div>
                    <!--PC和WAP自适应版-->
                    <div id="SOHUCS" sid="1710569351142256640"></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,学习,ecmascript)</h4>
        <div id="paradigm-article-related">
            <div class="recommend-post mb30">
                <ul class="widget-links">
                    <li><a href="/article/1903898742252171264.htm"
                           title="深入浅出:序列化与反序列化的全面解析" target="_blank">深入浅出:序列化与反序列化的全面解析</a>
                        <span class="text-muted">进击的小白菜</span>
<a class="tag" taget="_blank" href="/search/%E4%B8%80%E4%BA%9B%E5%BC%80%E5%8F%91%E5%B8%B8%E8%AF%86/1.htm">一些开发常识</a><a class="tag" taget="_blank" href="/search/%E5%BC%80%E5%8F%91%E8%AF%AD%E8%A8%80/1.htm">开发语言</a><a class="tag" taget="_blank" href="/search/%E5%BC%80%E5%8F%91%E5%B8%B8%E8%AF%86/1.htm">开发常识</a>
                        <div>文章目录1.引言2.什么是序列化?2.1为什么需要序列化?3.什么是反序列化?3.1反序列化的重要性4.序列化与反序列化的实现4.1JSON(JavaScriptObjectNotation)4.2XML(eXtensibleMarkupLanguage)4.3ProtocolBuffers(Protobuf)4.4MessagePack5.安全性考虑6.性能优化7.结论附录:常见问题解答Q1:什</div>
                    </li>
                    <li><a href="/article/1903896852005187584.htm"
                           title="使用 Baseten 部署和运行机器学习模型的指南" target="_blank">使用 Baseten 部署和运行机器学习模型的指南</a>
                        <span class="text-muted">shuoac</span>
<a class="tag" taget="_blank" href="/search/%E6%9C%BA%E5%99%A8%E5%AD%A6%E4%B9%A0/1.htm">机器学习</a><a class="tag" taget="_blank" href="/search/%E4%BA%BA%E5%B7%A5%E6%99%BA%E8%83%BD/1.htm">人工智能</a><a class="tag" taget="_blank" href="/search/python/1.htm">python</a>
                        <div>随着机器学习模型在各个行业中的广泛应用,如何高效地部署和运行这些模型成为一个关键问题。本文将介绍如何使用Baseten平台来部署和服务机器学习模型。Baseten是LangChain生态系统中的一个重要提供者,它提供了所需的基础设施来高效地运行模型。无论是开源模型如Llama2和Mistral,还是专有或经过微调的模型,Baseten都能在专用GPU上运行。技术背景介绍Baseten提供了一种不同</div>
                    </li>
                    <li><a href="/article/1903896346037907456.htm"
                           title="Android :实现登录功能的思路" target="_blank">Android :实现登录功能的思路</a>
                        <span class="text-muted">前期后期</span>
<a class="tag" taget="_blank" href="/search/android/1.htm">android</a>
                        <div>android的登录功能和前端一样,需要保存登录的用户信息。创建一个工具类//用户工具类,用于管理用户登录状态和用户信息objectAppUserUtil{//常量定义privateconstvalLOGGED_FLAG="logged_flag"//登录状态的键名privateconstvalUSER_INFO="user_info"//用户信息的键名privateconstvalTAG="Ap</div>
                    </li>
                    <li><a href="/article/1903887452259545088.htm"
                           title="Jarslink 是一个 SOFA 方舟插件,用于管理多应用部署" target="_blank">Jarslink 是一个 SOFA 方舟插件,用于管理多应用部署</a>
                        <span class="text-muted"></span>
<a class="tag" taget="_blank" href="/search/%E5%90%8E%E7%AB%AFjava/1.htm">后端java</a>
                        <div>前言大家好,我是老马。sofastack其实出来很久了,第一次应该是在2022年左右开始关注,但是一直没有深入研究。最近想学习一下SOFA对于生态的设计和思考。sofaboot系列SOFABoot-00-sofaboot概览SOFABoot-01-蚂蚁金服开源的sofaboot是什么黑科技?SOFABoot-02-模块化隔离方案SOFABoot-03-sofaboot介绍SOFABoot-04-快</div>
                    </li>
                    <li><a href="/article/1903883482262728704.htm"
                           title="Electron打包文件生成.exe文件打开即可使用" target="_blank">Electron打包文件生成.exe文件打开即可使用</a>
                        <span class="text-muted">糕冷小美n</span>
<a class="tag" taget="_blank" href="/search/electron/1.htm">electron</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>1、Electron打包,包括需要下载的内容和环境配置步骤注意:Electron是一个使用JavaScript、HTML和CSS构建跨平台桌面应用程序的框架首先需要电脑环境有Node.js和npm我之前的文章有关nvm下载node的说明也可以去官网下载检查是否有node和npm环境命令node-vnpm-v输出版本号,说明安装成功2、创建Electron项目2.1创建项目目录打开命令行工具,创建一</div>
                    </li>
                    <li><a href="/article/1903883355305340928.htm"
                           title="JavaScript基础-事件对象" target="_blank">JavaScript基础-事件对象</a>
                        <span class="text-muted">難釋懷</span>
<a class="tag" taget="_blank" href="/search/javascript/1.htm">javascript</a><a class="tag" taget="_blank" href="/search/%E5%BC%80%E5%8F%91%E8%AF%AD%E8%A8%80/1.htm">开发语言</a>
                        <div>在现代Web开发中,事件处理是实现动态和交互式网页的核心。当用户与页面进行交互时(如点击按钮、提交表单等),浏览器会生成相应的事件。为了有效地响应这些事件,JavaScript提供了事件对象,它包含了关于事件的详细信息。本文将详细介绍事件对象的概念、重要的属性和方法,并通过实例展示其应用场景。一、什么是事件对象?每当一个事件被触发时,浏览器都会创建一个事件对象,这个对象包含了该事件的所有相关信息,</div>
                    </li>
                    <li><a href="/article/1903883222178131968.htm"
                           title="CCNP之IGP学习笔记(2022)" target="_blank">CCNP之IGP学习笔记(2022)</a>
                        <span class="text-muted">码龄4年 审核中</span>
<a class="tag" taget="_blank" href="/search/%E7%AC%94%E8%AE%B0/1.htm">笔记</a><a class="tag" taget="_blank" href="/search/OSPF/1.htm">OSPF</a><a class="tag" taget="_blank" href="/search/RIP/1.htm">RIP</a><a class="tag" taget="_blank" href="/search/EIGRP/1.htm">EIGRP</a><a class="tag" taget="_blank" href="/search/IGP/1.htm">IGP</a><a class="tag" taget="_blank" href="/search/CCNP/1.htm">CCNP</a>
                        <div>evecommunityedition2.0.3-92_v1.4.1.ovaOVF(OpenVirtualizationFormat:开放虚拟化格式)和OVA(OpenVirtualizationAppliance:开放虚拟化设备)appliance器具collaborative合作的;协力完成的translation翻译;译文;译本;转化CollaborativeTranslationFrame</div>
                    </li>
                    <li><a href="/article/1903881955158585344.htm"
                           title="学习-Java常用类之Calendar类" target="_blank">学习-Java常用类之Calendar类</a>
                        <span class="text-muted">AIains</span>
<a class="tag" taget="_blank" href="/search/Educoder%E2%80%94Java/1.htm">Educoder—Java</a><a class="tag" taget="_blank" href="/search/java/1.htm">java</a>
                        <div>第1关:学习-Java常用类之Calendar类任务描述相关知识编程要求测试说明任务描述本关任务:获取给定年月的最后一天。相关知识我们通过之前的学习已经能够格式化并创建一个日期对象了,但是我们如何才能设置和获取日期数据的特定部分呢,比如说小时,日,或者分钟?我们又如何在日期的这些部分加上或者减去值呢?calendar类是一个抽象类,是Java日期处理的核心类之一。Calendar类为操作日历字段,</div>
                    </li>
                    <li><a href="/article/1903881828633210880.htm"
                           title="高效快速教你DeepSeek如何进行本地部署并且可视化对话" target="_blank">高效快速教你DeepSeek如何进行本地部署并且可视化对话</a>
                        <span class="text-muted">大富大贵7</span>
<a class="tag" taget="_blank" href="/search/%E7%A8%8B%E5%BA%8F%E5%91%98%E7%9F%A5%E8%AF%86%E5%82%A8%E5%A4%871/1.htm">程序员知识储备1</a><a class="tag" taget="_blank" href="/search/%E7%A8%8B%E5%BA%8F%E5%91%98%E7%9F%A5%E8%AF%86%E5%82%A8%E5%A4%872/1.htm">程序员知识储备2</a><a class="tag" taget="_blank" href="/search/%E7%A8%8B%E5%BA%8F%E5%91%98%E7%9F%A5%E8%AF%86%E5%82%A8%E5%A4%873/1.htm">程序员知识储备3</a><a class="tag" taget="_blank" href="/search/%E7%BB%8F%E9%AA%8C%E5%88%86%E4%BA%AB/1.htm">经验分享</a>
                        <div>科技文章:高效快速教你DeepSeek如何进行本地部署并且可视化对话摘要:随着自然语言处理(NLP)技术的进步,DeepSeek作为一款基于深度学习的语义搜索技术,广泛应用于文本理解、对话系统及信息检索等多个领域。本文将探讨如何高效快速地在本地部署DeepSeek,并结合可视化工具实现对话过程的监控与分析。通过详尽的步骤、案例分析与代码示例,帮助开发者更好地理解和应用DeepSeek技术。同时,本</div>
                    </li>
                    <li><a href="/article/1903877042336755712.htm"
                           title="【嵌入式学习2】指针 - 数组" target="_blank">【嵌入式学习2】指针 - 数组</a>
                        <span class="text-muted">XYN5114</span>
<a class="tag" taget="_blank" href="/search/%E5%B5%8C%E5%85%A5%E5%BC%8F%E5%AD%A6%E4%B9%A0/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/%E7%AC%94%E8%AE%B0/1.htm">笔记</a><a class="tag" taget="_blank" href="/search/%E5%B5%8C%E5%85%A5%E5%BC%8F%E7%A1%AC%E4%BB%B6/1.htm">嵌入式硬件</a><a class="tag" taget="_blank" href="/search/c%E8%AF%AD%E8%A8%80/1.htm">c语言</a>
                        <div>目录##概述##指针###指针特点##指针变量###指针变量特点##区别##指针变量的使用定义指针变量时:使用指针变量时:##通过指针间接修改变量的值##指针大小指针大小与数据类型无关:无论指针指向什么类型的数据(int、char、double等),指针本身的大小只取决于系统的位数(32位或64位)。##指针步长###指针步长的计算方式##空指针和野指针##多级指针##指针与常量##函数参数传递内</div>
                    </li>
                    <li><a href="/article/1903876660910944256.htm"
                           title="Three.js世界中的三要素:场景、相机、渲染器" target="_blank">Three.js世界中的三要素:场景、相机、渲染器</a>
                        <span class="text-muted">Front_Yue</span>
<a class="tag" taget="_blank" href="/search/3D%E6%8A%80%E6%9C%AF%E5%AE%9E%E8%B7%B5%E6%8C%87%E5%8D%97/1.htm">3D技术实践指南</a><a class="tag" taget="_blank" href="/search/javascript/1.htm">javascript</a><a class="tag" taget="_blank" href="/search/three.js/1.htm">three.js</a><a class="tag" taget="_blank" href="/search/3d/1.htm">3d</a>
                        <div>一、Three.js简介Three.js是一个基于WebGL的JavaScript库,它允许开发者在网页上创建和显示复杂的3D图形和动画,而无需用户安装任何额外的插件或软件。Three.js在Web开发中的地位非常重要,它通过提供简单直观的API,极大地降低了3D图形开发的门槛,使得开发者可以更专注于实现创意。Three.js广泛应用于游戏开发、虚拟现实、数据可视化、艺术创作等多个领域。二、场景:</div>
                    </li>
                    <li><a href="/article/1903873888429862912.htm"
                           title="机器学习——分类、回归、聚类、LASSO回归、Ridge回归(自用)" target="_blank">机器学习——分类、回归、聚类、LASSO回归、Ridge回归(自用)</a>
                        <span class="text-muted">代码的建筑师</span>
<a class="tag" taget="_blank" href="/search/%E6%A8%A1%E5%9E%8B%E5%AD%A6%E4%B9%A0/1.htm">模型学习</a><a class="tag" taget="_blank" href="/search/%E6%A8%A1%E5%9E%8B%E8%AE%AD%E7%BB%83/1.htm">模型训练</a><a class="tag" taget="_blank" href="/search/%E6%9C%BA%E5%99%A8%E5%AD%A6%E4%B9%A0/1.htm">机器学习</a><a class="tag" taget="_blank" href="/search/%E6%9C%BA%E5%99%A8%E5%AD%A6%E4%B9%A0/1.htm">机器学习</a><a class="tag" taget="_blank" href="/search/%E5%88%86%E7%B1%BB/1.htm">分类</a><a class="tag" taget="_blank" href="/search/%E5%9B%9E%E5%BD%92/1.htm">回归</a><a class="tag" taget="_blank" href="/search/%E6%AD%A3%E5%88%99%E5%8C%96%E9%A1%B9/1.htm">正则化项</a><a class="tag" taget="_blank" href="/search/LASSO/1.htm">LASSO</a><a class="tag" taget="_blank" href="/search/Ridge/1.htm">Ridge</a><a class="tag" taget="_blank" href="/search/%E6%9C%B4%E7%B4%A0/1.htm">朴素</a>
                        <div>纠正自己的误区:机器学习是一个大范围,并不是一个小的方向,比如:线性回归预测、卷积神经网络和强化学都是机器学习算法在不同场景的应用。机器学习最为关键的是要有数据,也就是数据集名词解释:数据集中的一行叫一条样本或者实例,列名称为特征或者属性。样本的数量称为数据量,特征的数量称为特征维度机器学习常用库:Numpy和sklearn朴素的意思是特征的各条件都是相互独立的机器学习(模型、策略、算法)损失函数</div>
                    </li>
                    <li><a href="/article/1903873762076454912.htm"
                           title="PHP框架为基础的购物平台设计思路分步骤说明" target="_blank">PHP框架为基础的购物平台设计思路分步骤说明</a>
                        <span class="text-muted">星糖曙光</span>
<a class="tag" taget="_blank" href="/search/%E5%90%8E%E7%AB%AF%E8%AF%AD%E8%A8%80%EF%BC%88node/1.htm">后端语言(node</a><a class="tag" taget="_blank" href="/search/javascript/1.htm">javascript</a><a class="tag" taget="_blank" href="/search/vue%E7%AD%89%E7%AD%89%EF%BC%89/1.htm">vue等等)</a><a class="tag" taget="_blank" href="/search/%E5%AD%A6%E4%B9%A0/1.htm">学习</a><a class="tag" taget="_blank" href="/search/%E8%AF%BE%E7%A8%8B%E8%AE%BE%E8%AE%A1/1.htm">课程设计</a><a class="tag" taget="_blank" href="/search/vue.js/1.htm">vue.js</a><a class="tag" taget="_blank" href="/search/python/1.htm">python</a><a class="tag" taget="_blank" href="/search/php/1.htm">php</a>
                        <div>以下是以PHP框架为基础的购物平台设计思路分步骤说明:一、技术选型阶段技术栈={后端框架:Laravel/Yii2(提供ORM、路由、中间件支持)前端框架:Vue.js/React(可选SPA方案)数据库:MySQL8.0+(事务型数据存储)缓存:Redis(会话/商品缓存)队列:RabbitMQ(异步处理订单)\text{技术栈}=\begin{cases}后端框架:Laravel/Yii2(提</div>
                    </li>
                    <li><a href="/article/1903873756976181248.htm"
                           title="致现在的我与未来的我:编程长河中的摆渡手札" target="_blank">致现在的我与未来的我:编程长河中的摆渡手札</a>
                        <span class="text-muted">星糖曙光</span>
<a class="tag" taget="_blank" href="/search/%E5%90%8E%E7%AB%AF%E8%AF%AD%E8%A8%80%EF%BC%88node/1.htm">后端语言(node</a><a class="tag" taget="_blank" href="/search/javascript/1.htm">javascript</a><a class="tag" taget="_blank" href="/search/vue%E7%AD%89%E7%AD%89%EF%BC%89/1.htm">vue等等)</a><a class="tag" taget="_blank" href="/search/%E7%AC%94%E8%AE%B0/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/%E6%B7%B1%E5%BA%A6%E5%AD%A6%E4%B9%A0/1.htm">深度学习</a><a class="tag" taget="_blank" href="/search/%E4%BA%BA%E5%B7%A5%E6%99%BA%E8%83%BD/1.htm">人工智能</a><a class="tag" taget="_blank" href="/search/%E7%BD%91%E7%BB%9C/1.htm">网络</a>
                        <div>致现在的我与未来的我:编程长河中的摆渡手札一、技术积累:从萤火微光到星河初现(约3000字)前端的启蒙:HTML/CSS与"所见即所得"的魔法“代码是诗,但诗未必能成为产品”,初学编程时,我如《禅与摩托车维修艺术》中追寻"良质"的探索者,在W3School的教程中笨拙地敲下第一行。记得仿写京东首页时,一个浮动布局的错位让我通宵调试,最终发现竟是未闭合的标签——这让我想起《代码大全》中的警示:“计算</div>
                    </li>
                    <li><a href="/article/1903872748673888256.htm"
                           title="若依集成knife4j实现swagger文档增强" target="_blank">若依集成knife4j实现swagger文档增强</a>
                        <span class="text-muted">Roc-xb</span>
<a class="tag" taget="_blank" href="/search/knife4j/1.htm">knife4j</a>
                        <div>knife4j的前身是swagger-bootstrap-ui,为了契合微服务的架构发展,由于原来swagger-bootstrap-ui采用的是后端Java代码+前端Ui混合打包的方式,在微服务架构下显的很臃肿,因此项目正式更名为knife4j。目录一、单体版本1、ruoyi-admin\pom.xml模块添加整合依赖2、SwaggerController.java修改跳转访问地址二、前后端分离</div>
                    </li>
                    <li><a href="/article/1903868462443327488.htm"
                           title="RK平台下Buildroot驱动编译环境入门" target="_blank">RK平台下Buildroot驱动编译环境入门</a>
                        <span class="text-muted">ItJavawfc</span>
<a class="tag" taget="_blank" href="/search/RK%E7%B3%BB%E7%BB%9F-%E9%A9%B1%E5%8A%A8/1.htm">RK系统-驱动</a><a class="tag" taget="_blank" href="/search/%E9%A9%B1%E5%8A%A8%E5%AD%A6%E4%B9%A0/1.htm">驱动学习</a><a class="tag" taget="_blank" href="/search/Kernel/1.htm">Kernel</a><a class="tag" taget="_blank" href="/search/Ubuntu/1.htm">Ubuntu</a><a class="tag" taget="_blank" href="/search/Buildroot/1.htm">Buildroot</a>
                        <div>提示:低配置电脑下驱动编译环境搭建,驱动学习环境准备文章目录目的需求环境Ubuntu18Desk桌面开发环境Buildroot编译环境基本要求个人环境VM环境配置+Buildroot编译环境配置Buildroot编译总结目的搭建驱动开发编译环境硬件环境要求不达标如何进行配置规避,使编译环境编译OK为后续自己开发工作中,学习环境做一个简单的指导需求这里我需要搭建的环境是Ubuntu上面用Linux源</div>
                    </li>
                    <li><a href="/article/1903866571588169728.htm"
                           title="C++在线OJ负载均衡项目" target="_blank">C++在线OJ负载均衡项目</a>
                        <span class="text-muted">平凡的小y</span>
<a class="tag" taget="_blank" href="/search/c%2B%2B/1.htm">c++</a><a class="tag" taget="_blank" href="/search/%E5%BC%80%E5%8F%91%E8%AF%AD%E8%A8%80/1.htm">开发语言</a>
                        <div>1.演示项目项目源码链接:2.项目所用技术和开发环境所用技术C++STL标准库Boost准标准库(字符串切割)cpp-httplib第三方开源网络库ctemplate第三方开源前端网页渲染库jsoncpp第三方开源序列化、反序列化库负载均衡设计MySQLCconnectAce前端在线编辑器html/css/js/jquery/ajax开发环境Ubuntu云服务器vscodeMysqlWorkben</div>
                    </li>
                    <li><a href="/article/1903865186255695872.htm"
                           title="量化交易系统中如何处理机器学习模型的训练和部署?" target="_blank">量化交易系统中如何处理机器学习模型的训练和部署?</a>
                        <span class="text-muted">openwin_top</span>
<a class="tag" taget="_blank" href="/search/%E9%87%8F%E5%8C%96%E4%BA%A4%E6%98%93%E7%B3%BB%E7%BB%9F%E5%BC%80%E5%8F%91/1.htm">量化交易系统开发</a><a class="tag" taget="_blank" href="/search/%E6%9C%BA%E5%99%A8%E5%AD%A6%E4%B9%A0/1.htm">机器学习</a><a class="tag" taget="_blank" href="/search/%E4%BA%BA%E5%B7%A5%E6%99%BA%E8%83%BD/1.htm">人工智能</a><a class="tag" taget="_blank" href="/search/%E9%87%8F%E5%8C%96%E4%BA%A4%E6%98%93/1.htm">量化交易</a>
                        <div>microPythonPython最小内核源码解析NI-motion运动控制c语言示例代码解析python编程示例系列python编程示例系列二python的Web神器Streamlit如何应聘高薪职位量化交易系统中,机器学习模型的训练和部署需要遵循一套严密的流程,以确保模型的可靠性、性能和安全性。以下是详细描述以及相关的示例:1.数据收集和预处理数据收集在量化交易中,数据是最重要的资产。收集的数</div>
                    </li>
                    <li><a href="/article/1903860514971250688.htm"
                           title="不懂英语可以学编程吗?,不懂英文可以学编程吗" target="_blank">不懂英语可以学编程吗?,不懂英文可以学编程吗</a>
                        <span class="text-muted">P5688346</span>
<a class="tag" taget="_blank" href="/search/%E4%BA%BA%E5%B7%A5%E6%99%BA%E8%83%BD/1.htm">人工智能</a>
                        <div>大家好,给大家分享一下英语不好能学python编程吗,很多人还不知道这一点。下面详细解释一下。现在让我们来看看!Sourcecodedownload:本文相关源码提到人工智能,就不得不提Python编程语言,大多数人觉得编程语言肯定会涉及到很多代码,满屏的英文字母,想想就头疼,觉得自己不会英语,肯定学不好Python,但是不会英语到底能不能够学习Python呢,下面小编给大家分析分析。其实各位想要</div>
                    </li>
                    <li><a href="/article/1903850929363415040.htm"
                           title="JavaScript基础-DOM的一些基本常用语法" target="_blank">JavaScript基础-DOM的一些基本常用语法</a>
                        <span class="text-muted">Southern Wind</span>
<a class="tag" taget="_blank" href="/search/JavaScript/1.htm">JavaScript</a><a class="tag" taget="_blank" href="/search/javascript/1.htm">javascript</a>
                        <div>总结了一下JS一直到DOM中所用的单词的用法输入方式:window.prompt('请输入数据');输出方式:1、window.alert('HelloJavaScript');2、console.log输出到控制台3、输出数据到页面document.write('hello')JavaScript数据类型1、基本类型string:字符型number:数值型boolean:布尔型2、特殊类型und</div>
                    </li>
                    <li><a href="/article/1903850047431307264.htm"
                           title="C#基础学习(二)C#数组生存手册:从入门到“血压拉满“的奇妙旅程" target="_blank">C#基础学习(二)C#数组生存手册:从入门到“血压拉满“的奇妙旅程</a>
                        <span class="text-muted">FAREWELL00075</span>
<a class="tag" taget="_blank" href="/search/c%23/1.htm">c#</a><a class="tag" taget="_blank" href="/search/%E5%AD%A6%E4%B9%A0/1.htm">学习</a><a class="tag" taget="_blank" href="/search/%E5%BC%80%E5%8F%91%E8%AF%AD%E8%A8%80/1.htm">开发语言</a><a class="tag" taget="_blank" href="/search/%E6%95%B0%E7%BB%84/1.htm">数组</a><a class="tag" taget="_blank" href="/search/Array/1.htm">Array</a>
                        <div>作为一只C#萌新,当你试图用数组装下整个世界时,系统可能会温柔地弹出一句**"Indexwasoutsidetheboundsofthearray."**。别慌!这份求生指南将用段子教你玩转数组一、数组是什么数组简单来说就是由相同元素组成的一个集合,数组里面不一定是数,还可能是bool,string等类型组成的集合。那么他有些什么特点呢:本质:装着相同类型元素的集装箱(比如一箱肥宅快乐水)特性:长</div>
                    </li>
                    <li><a href="/article/1903848660005875712.htm"
                           title="笔记:代码随想录算法训练营day60:并查集理论基础、寻找存在的路径" target="_blank">笔记:代码随想录算法训练营day60:并查集理论基础、寻找存在的路径</a>
                        <span class="text-muted">jingjingjing1111</span>
<a class="tag" taget="_blank" href="/search/%E7%AC%94%E8%AE%B0/1.htm">笔记</a>
                        <div>本文为学习并查集理论基础|代码随想录、代码随想录过程中的思考find是找的顶头上司,而不是当前上司,最后怎么也得找到一个顶头上司的上司是自己,要不然这个结构也不成立使用issame替换会使被操作者为当前节点,而非根节点。join(u,v)的功能为将v的根节点挂到u的根节点下模拟过程可以看出,join中的find中的路径压缩要在长度大于2(路径大于1)的时候才会体现出来107.寻找存在的路径卡码网题</div>
                    </li>
                    <li><a href="/article/1903845255510290432.htm"
                           title="计算机基础:编码04,认识反码和补码" target="_blank">计算机基础:编码04,认识反码和补码</a>
                        <span class="text-muted">水饺编程</span>
<a class="tag" taget="_blank" href="/search/MFC%E5%AD%A6%E4%B9%A0%E7%AC%94%E8%AE%B0/1.htm">MFC学习笔记</a><a class="tag" taget="_blank" href="/search/Win32%E5%AD%A6%E4%B9%A0%E7%AC%94%E8%AE%B0/1.htm">Win32学习笔记</a><a class="tag" taget="_blank" href="/search/windows/1.htm">windows</a><a class="tag" taget="_blank" href="/search/c%2B%2B/1.htm">c++</a><a class="tag" taget="_blank" href="/search/mfc/1.htm">mfc</a><a class="tag" taget="_blank" href="/search/c%E8%AF%AD%E8%A8%80/1.htm">c语言</a>
                        <div>专栏导航本节文章分别属于《Win32学习笔记》和《MFC学习笔记》两个专栏,故划分为两个专栏导航。读者可以自行选择前往哪个专栏。(一)WIn32专栏导航上一篇:计算机基础:编码03,根据十进制数,求其原码回到目录下一篇:无(二)MFC专栏导航上一篇:计算机基础:编码03,根据十进制数,求其原码回到目录下一篇:无本节前言在前两节,我讲解了关于原码的知识。本节,我来讲解反码和补码。在学习本节之前,你需</div>
                    </li>
                    <li><a href="/article/1903843741874057216.htm"
                           title="【access开发】导入excel 并生成表" target="_blank">【access开发】导入excel 并生成表</a>
                        <span class="text-muted">Access开发易登软件</span>
<a class="tag" taget="_blank" href="/search/vba/1.htm">vba</a><a class="tag" taget="_blank" href="/search/Access%E5%BC%80%E5%8F%91/1.htm">Access开发</a><a class="tag" taget="_blank" href="/search/Excel/1.htm">Excel</a><a class="tag" taget="_blank" href="/search/html/1.htm">html</a><a class="tag" taget="_blank" href="/search/vba/1.htm">vba</a><a class="tag" taget="_blank" href="/search/access/1.htm">access</a><a class="tag" taget="_blank" href="/search/excel/1.htm">excel</a><a class="tag" taget="_blank" href="/search/%E5%89%8D%E7%AB%AF/1.htm">前端</a><a class="tag" taget="_blank" href="/search/access%E6%95%B0%E6%8D%AE%E5%BA%93/1.htm">access数据库</a><a class="tag" taget="_blank" href="/search/%E4%BD%8E%E4%BB%A3%E7%A0%81/1.htm">低代码</a>
                        <div>hi,大家好呀!最近天气越来越暖了,在这个春暖花开的季节了,每天心情应该都是美美的,正所谓一年之计在于春,在这个美好的季节,大家一起努力学习学习吧!那我们来看看今天学点啥呢?大家在刚接触access时,很多都是excel的高手,学习的过程中,总会想着,怎么把现在的excel数据导入到access,那这个时候该怎么来操作呢?如果是新手,那肯定是导入excel就可以了,那如果你是一个爱show技术的e</div>
                    </li>
                    <li><a href="/article/1903843363333926912.htm"
                           title="JavaScript基础-删除事件(解绑事件)" target="_blank">JavaScript基础-删除事件(解绑事件)</a>
                        <span class="text-muted">難釋懷</span>
<a class="tag" taget="_blank" href="/search/javascript/1.htm">javascript</a><a class="tag" taget="_blank" href="/search/%E5%89%8D%E7%AB%AF/1.htm">前端</a><a class="tag" taget="_blank" href="/search/%E5%BC%80%E5%8F%91%E8%AF%AD%E8%A8%80/1.htm">开发语言</a>
                        <div>在现代Web开发中,动态地添加和移除事件处理器是构建交互式网页的关键技能之一。虽然添加事件处理器相对直观,但了解如何有效地移除或“解绑”这些处理器同样重要。这不仅有助于优化性能,还能防止潜在的内存泄漏问题。本文将介绍几种方法来删除JavaScript中的事件处理器,并探讨它们的应用场景及最佳实践。一、为什么需要删除事件?随着页面复杂度的增加,不恰当地管理事件处理器可能会导致性能下降或出现意外行为。</div>
                    </li>
                    <li><a href="/article/1903843363883380736.htm"
                           title="Android Jetpack 应用架构指南" target="_blank">Android Jetpack 应用架构指南</a>
                        <span class="text-muted">小李子学编程</span>
<a class="tag" taget="_blank" href="/search/Android/1.htm">Android</a><a class="tag" taget="_blank" href="/search/%E5%BC%80%E5%8F%91%E6%96%87%E6%A1%A3%E6%8C%87%E5%8D%97/1.htm">开发文档指南</a><a class="tag" taget="_blank" href="/search/android/1.htm">android</a><a class="tag" taget="_blank" href="/search/android/1.htm">android</a><a class="tag" taget="_blank" href="/search/jetpack/1.htm">jetpack</a><a class="tag" taget="_blank" href="/search/%E5%AD%A6%E4%B9%A0/1.htm">学习</a>
                        <div>AndroidJetpack应用架构指南本指南涵盖Android应用开发的最佳实践和推荐架构,助力开发者构建健壮高效的应用程序。。前置要求本文假设您已具备Android框架基础知识。若需系统学习Android开发,建议先完成《Android基础知识》目录新架构设计背景移动应用交互特性核心架构原则分离关注点数据模型驱动界面单一数据源单向数据流分层架构设计界面层数据层领域层依赖管理方案工程实践指南参考</div>
                    </li>
                    <li><a href="/article/1903839583460716544.htm"
                           title="使用Python构建去中心化预测市场:从概念到实现" target="_blank">使用Python构建去中心化预测市场:从概念到实现</a>
                        <span class="text-muted">Echo_Wish</span>
<a class="tag" taget="_blank" href="/search/Python%EF%BC%81/1.htm">Python!</a><a class="tag" taget="_blank" href="/search/%E5%AE%9E%E6%88%98%EF%BC%81/1.htm">实战!</a><a class="tag" taget="_blank" href="/search/python/1.htm">python</a><a class="tag" taget="_blank" href="/search/%E5%8E%BB%E4%B8%AD%E5%BF%83%E5%8C%96/1.htm">去中心化</a><a class="tag" taget="_blank" href="/search/%E5%BC%80%E5%8F%91%E8%AF%AD%E8%A8%80/1.htm">开发语言</a>
                        <div>使用Python构建去中心化预测市场:从概念到实现大家好,我是Echo_Wish。今天,我们将深入探讨一个前沿的区块链应用——去中心化预测市场,并学习如何使用Python来构建一个简易的预测市场平台。预测市场是基于市场参与者对未来事件的预测来产生结果的地方,通常被用来预测政治事件、金融市场走向、体育比赛结果等。传统的预测市场如Augur、Polymarket等,基于去中心化平台,利用区块链技术确保</div>
                    </li>
                    <li><a href="/article/1903837439206682624.htm"
                           title="RocketMQ学习-Springboot整合RocketMQ" target="_blank">RocketMQ学习-Springboot整合RocketMQ</a>
                        <span class="text-muted">wechatt_fee1024</span>
<a class="tag" taget="_blank" href="/search/%E9%9D%A2%E8%AF%95/1.htm">面试</a><a class="tag" taget="_blank" href="/search/maven/1.htm">maven</a><a class="tag" taget="_blank" href="/search/spring/1.htm">spring</a><a class="tag" taget="_blank" href="/search/boot/1.htm">boot</a><a class="tag" taget="_blank" href="/search/java/1.htm">java</a>
                        <div>SpringBoot整合RocketMQ需要注意的是SpringBoot的starter集成包时,要注意版本。因为SpringBoot集成的RocketMQ的starter依赖由Spring社区提供,迭代比较快,版本之间的差异还是比较大的。可能版本不同,就导致使用的时候出现错误。maven依赖,直接把我的maven工程的配置放到这里了。普通消息maven工程创建我直接创建了一个空的maven工程,</div>
                    </li>
                    <li><a href="/article/1903830758372470784.htm"
                           title="rocketmq-client 4.3.0 在springboot中的使用" target="_blank">rocketmq-client 4.3.0 在springboot中的使用</a>
                        <span class="text-muted">Myueye</span>
<a class="tag" taget="_blank" href="/search/JAVA/1.htm">JAVA</a><a class="tag" taget="_blank" href="/search/java/1.htm">java</a>
                        <div>rocketmq-client4.3.0在springboot中的使用1、导入依赖2、配置文件属性3、编写配置类4、使用测试5、结果5.1RocketMQ后台显示5.2前端页面5.3后端后台1、导入依赖org.apache.rocketmqrocketmq-client4.3.02、配置文件属性mq.nameserverAdd=ip地址:9876mq.topic=top1(topic名称)mq.p</div>
                    </li>
                    <li><a href="/article/1903829499343073280.htm"
                           title="回答我!!!如何用“快递分拣”讲明白OSI五层模型?" target="_blank">回答我!!!如何用“快递分拣”讲明白OSI五层模型?</a>
                        <span class="text-muted">茫忙然</span>
<a class="tag" taget="_blank" href="/search/%E8%AE%A1%E7%AE%97%E6%9C%BA%E7%BD%91%E7%BB%9C/1.htm">计算机网络</a><a class="tag" taget="_blank" href="/search/%E7%BD%91%E7%BB%9C/1.htm">网络</a>
                        <div>刚开始学习计算机网络时,会比较难理解计算机网络的五层协议,毕竟确实挺抽象的,接下来我用寄快递的过程来类比计算机网络的五层协议(物理层、数据链路层、网络层、传输层、应用层),帮助大家理解每一层的功能和作用。1.物理层(PhysicalLayer)——交通工具和道路快递中的比喻:卡车、飞机、轮船等运输工具,以及高速公路、铁路、航线等物理路径。功能:负责将包裹(数据)从一个地点物理传输到另一个地点,不关</div>
                    </li>
                                <li><a href="/article/98.htm"
                                       title="微信开发者验证接口开发" target="_blank">微信开发者验证接口开发</a>
                                    <span class="text-muted">362217990</span>
<a class="tag" taget="_blank" href="/search/%E5%BE%AE%E4%BF%A1+%E5%BC%80%E5%8F%91%E8%80%85+token+%E9%AA%8C%E8%AF%81/1.htm">微信 开发者 token 验证</a>
                                    <div>微信开发者接口验证。 
Token,自己随便定义,与微信填写一致就可以了。 
 
根据微信接入指南描述 http://mp.weixin.qq.com/wiki/17/2d4265491f12608cd170a95559800f2d.html 
 第一步:填写服务器配置 
 第二步:验证服务器地址的有效性 
 第三步:依据接口文档实现业务逻辑 
 
这里主要讲第二步验证服务器有效性。 
 
建一个</div>
                                </li>
                                <li><a href="/article/225.htm"
                                       title="一个小编程题-类似约瑟夫环问题" target="_blank">一个小编程题-类似约瑟夫环问题</a>
                                    <span class="text-muted">BrokenDreams</span>
<a class="tag" taget="_blank" href="/search/%E7%BC%96%E7%A8%8B/1.htm">编程</a>
                                    <div>        今天群友出了一题: 
        一个数列,把第一个元素删除,然后把第二个元素放到数列的最后,依次操作下去,直到把数列中所有的数都删除,要求依次打印出这个过程中删除的数。 
 
     &</div>
                                </li>
                                <li><a href="/article/352.htm"
                                       title="linux复习笔记之bash shell (5) 关于减号-的作用" target="_blank">linux复习笔记之bash shell (5) 关于减号-的作用</a>
                                    <span class="text-muted">eksliang</span>
<a class="tag" taget="_blank" href="/search/linux%E5%85%B3%E4%BA%8E%E5%87%8F%E5%8F%B7%E2%80%9C-%E2%80%9D%E7%9A%84%E5%90%AB%E4%B9%89/1.htm">linux关于减号“-”的含义</a><a class="tag" taget="_blank" href="/search/linux%E5%85%B3%E4%BA%8E%E5%87%8F%E5%8F%B7%E2%80%9C-%E2%80%9D%E7%9A%84%E7%94%A8%E9%80%94/1.htm">linux关于减号“-”的用途</a><a class="tag" taget="_blank" href="/search/linux%E5%85%B3%E4%BA%8E%E2%80%9C-%E2%80%9D%E7%9A%84%E5%90%AB%E4%B9%89/1.htm">linux关于“-”的含义</a><a class="tag" taget="_blank" href="/search/linux%E5%85%B3%E4%BA%8E%E5%87%8F%E5%8F%B7%E7%9A%84%E5%90%AB%E4%B9%89/1.htm">linux关于减号的含义</a>
                                    <div>    转载请出自出处:
http://eksliang.iteye.com/blog/2105677     
    管道命令在bash的连续处理程序中是相当重要的,尤其在使用到前一个命令的studout(标准输出)作为这次的stdin(标准输入)时,就显得太重要了,某些命令需要用到文件名,例如上篇文档的的切割命令(split)、还有</div>
                                </li>
                                <li><a href="/article/479.htm"
                                       title="Unix(3)" target="_blank">Unix(3)</a>
                                    <span class="text-muted">18289753290</span>
<a class="tag" taget="_blank" href="/search/unix+ksh/1.htm">unix ksh</a>
                                    <div>1)若该变量需要在其他子进程执行,则可用"$变量名称"或${变量}累加内容 
什么是子进程?在我目前这个shell情况下,去打开一个新的shell,新的那个shell就是子进程。一般状态下,父进程的自定义变量是无法在子进程内使用的,但通过export将变量变成环境变量后就能够在子进程里面应用了。 
2)条件判断: &&代表and  ||代表or&nbs</div>
                                </li>
                                <li><a href="/article/606.htm"
                                       title="关于ListView中性能优化中图片加载问题" target="_blank">关于ListView中性能优化中图片加载问题</a>
                                    <span class="text-muted">酷的飞上天空</span>
<a class="tag" taget="_blank" href="/search/ListView/1.htm">ListView</a>
                                    <div>ListView的性能优化网上很多信息,但是涉及到异步加载图片问题就会出现问题。 
具体参看上篇文章http://314858770.iteye.com/admin/blogs/1217594 
  
如果每次都重新inflate一个新的View出来肯定会造成性能损失严重,可能会出现listview滚动是很卡的情况,还会出现内存溢出。 
现在想出一个方法就是每次都添加一个标识,然后设置图</div>
                                </li>
                                <li><a href="/article/733.htm"
                                       title="德国总理默多克:给国人的一堂“震撼教育”课" target="_blank">德国总理默多克:给国人的一堂“震撼教育”课</a>
                                    <span class="text-muted">永夜-极光</span>
<a class="tag" taget="_blank" href="/search/%E6%95%99%E8%82%B2/1.htm">教育</a>
                                    <div>http://bbs.voc.com.cn/topic-2443617-1-1.html德国总理默多克:给国人的一堂“震撼教育”课  
安吉拉—默克尔,一位经历过社会主义的东德人,她利用自己的博客,发表一番来华前的谈话,该说的话,都在上面说了,全世界想看想传播——去看看默克尔总理的博客吧! 
  德国总理默克尔以她的低调、朴素、谦和、平易近人等品格给国人留下了深刻印象。她以实际行动为中国人上了一堂</div>
                                </li>
                                <li><a href="/article/860.htm"
                                       title="关于Java继承的一个小问题。。。" target="_blank">关于Java继承的一个小问题。。。</a>
                                    <span class="text-muted">随便小屋</span>
<a class="tag" taget="_blank" href="/search/java/1.htm">java</a>
                                    <div>今天看Java 编程思想的时候遇见一个问题,运行的结果和自己想想的完全不一样。先把代码贴出来! 
//CanFight接口
interface Canfight {
    void fight();
}
//ActionCharacter类
class ActionCharacter {
    public void fight() {
        System.out.pr</div>
                                </li>
                                <li><a href="/article/987.htm"
                                       title="23种基本的设计模式" target="_blank">23种基本的设计模式</a>
                                    <span class="text-muted">aijuans</span>
<a class="tag" taget="_blank" href="/search/%E8%AE%BE%E8%AE%A1%E6%A8%A1%E5%BC%8F/1.htm">设计模式</a>
                                    <div>Abstract Factory:提供一个创建一系列相关或相互依赖对象的接口,而无需指定它们具体的类。    Adapter:将一个类的接口转换成客户希望的另外一个接口。A d a p t e r模式使得原本由于接口不兼容而不能一起工作的那些类可以一起工作。    Bridge:将抽象部分与它的实现部分分离,使它们都可以独立地变化。    Builder:将一个复杂对象的构建与它的表示分离,使得同</div>
                                </li>
                                <li><a href="/article/1114.htm"
                                       title="《周鸿祎自述:我的互联网方法论》读书笔记" target="_blank">《周鸿祎自述:我的互联网方法论》读书笔记</a>
                                    <span class="text-muted">aoyouzi</span>
<a class="tag" taget="_blank" href="/search/%E8%AF%BB%E4%B9%A6%E7%AC%94%E8%AE%B0/1.htm">读书笔记</a>
                                    <div>从用户的角度来看,能解决问题的产品才是好产品,能方便/快速地解决问题的产品,就是一流产品. 
  
商业模式不是赚钱模式 
一款产品免费获得海量用户后,它的边际成本趋于0,然后再通过广告或者增值服务的方式赚钱,实际上就是创造了新的价值链. 
  
商业模式的基础是用户,木有用户,任何商业模式都是浮云.商业模式的核心是产品,本质是通过产品为用户创造价值. 
商业模式还包括寻找需求</div>
                                </li>
                                <li><a href="/article/1241.htm"
                                       title="JavaScript动态改变样式访问技术" target="_blank">JavaScript动态改变样式访问技术</a>
                                    <span class="text-muted">百合不是茶</span>
<a class="tag" taget="_blank" href="/search/JavaScript/1.htm">JavaScript</a><a class="tag" taget="_blank" href="/search/style%E5%B1%9E%E6%80%A7/1.htm">style属性</a><a class="tag" taget="_blank" href="/search/ClassName%E5%B1%9E%E6%80%A7/1.htm">ClassName属性</a>
                                    <div>  
一:style属性 
格式:  
 HTML元素.style.样式属性="值"; 
  
创建菜单:在html标签中创建 或者 在head标签中用数组创建 
  
<html>
<head>
  <title>style改变样式</title>
</head>
&l</div>
                                </li>
                                <li><a href="/article/1368.htm"
                                       title="jQuery的deferred对象详解" target="_blank">jQuery的deferred对象详解</a>
                                    <span class="text-muted">bijian1013</span>
<a class="tag" taget="_blank" href="/search/jquery/1.htm">jquery</a><a class="tag" taget="_blank" href="/search/deferred%E5%AF%B9%E8%B1%A1/1.htm">deferred对象</a>
                                    <div>        jQuery的开发速度很快,几乎每半年一个大版本,每两个月一个小版本。 
        每个版本都会引入一些新功能,从jQuery 1.5.0版本开始引入的一个新功能----deferred对象。 
   &nb</div>
                                </li>
                                <li><a href="/article/1495.htm"
                                       title="淘宝开放平台TOP" target="_blank">淘宝开放平台TOP</a>
                                    <span class="text-muted">Bill_chen</span>
<a class="tag" taget="_blank" href="/search/C%2B%2B/1.htm">C++</a><a class="tag" taget="_blank" href="/search/c/1.htm">c</a><a class="tag" taget="_blank" href="/search/%E7%89%A9%E6%B5%81/1.htm">物流</a><a class="tag" taget="_blank" href="/search/C%23/1.htm">C#</a>
                                    <div>淘宝网开放平台首页:http://open.taobao.com/ 
淘宝开放平台是淘宝TOP团队的产品,TOP即TaoBao Open Platform, 
是淘宝合作伙伴开发、发布、交易其服务的平台。 
支撑TOP的三条主线为: 
   1.开放数据和业务流程 
 
    * 以API数据形式开放商品、交易、物流等业务; 
 
 &</div>
                                </li>
                                <li><a href="/article/1622.htm"
                                       title="【大型网站架构一】大型网站架构概述" target="_blank">【大型网站架构一】大型网站架构概述</a>
                                    <span class="text-muted">bit1129</span>
<a class="tag" taget="_blank" href="/search/%E7%BD%91%E7%AB%99%E6%9E%B6%E6%9E%84/1.htm">网站架构</a>
                                    <div>大型互联网特点 
 
 面对海量用户、海量数据 
 大型互联网架构的关键指标 
 
 高并发 
 高性能 
 高可用 
 高可扩展性 
 线性伸缩性 
 安全性 
 大型互联网技术要点 
  
 
 前端优化 
 CDN缓存 
 反向代理 
 KV缓存 
 消息系统 
 分布式存储 
 NoSQL数据库 
 搜索 
 监控 
 安全 
 想到的问题: 
1.对于订单系统这种事务型系统,如</div>
                                </li>
                                <li><a href="/article/1749.htm"
                                       title="eclipse插件hibernate tools安装" target="_blank">eclipse插件hibernate tools安装</a>
                                    <span class="text-muted">白糖_</span>
<a class="tag" taget="_blank" href="/search/Hibernate/1.htm">Hibernate</a>
                                    <div>  
 
 eclipse helios(3.6)版 
  1.启动eclipse   2.选择 Help > Install New Software...>   3.添加如下地址: 
http://download.jboss.org/jbosstools/updates/stable/helios/   4.选择性安装:hibernate tools在All Jboss tool</div>
                                </li>
                                <li><a href="/article/1876.htm"
                                       title="Jquery easyui Form表单提交注意事项" target="_blank">Jquery easyui Form表单提交注意事项</a>
                                    <span class="text-muted">bozch</span>
<a class="tag" taget="_blank" href="/search/jquery+easyui/1.htm">jquery easyui</a>
                                    <div>jquery easyui对表单的提交进行了封装,提交的方式采用的是ajax的方式,在开发的时候应该注意的事项如下: 
        1、在定义form标签的时候,要将method属性设置成post或者get,特别是进行大字段的文本信息提交的时候,要将method设置成post方式提交,否则页面会抛出跨域访问等异常。所以这个要</div>
                                </li>
                                <li><a href="/article/2003.htm"
                                       title="Trie tree(字典树)的Java实现及其应用-统计以某字符串为前缀的单词的数量" target="_blank">Trie tree(字典树)的Java实现及其应用-统计以某字符串为前缀的单词的数量</a>
                                    <span class="text-muted">bylijinnan</span>
<a class="tag" taget="_blank" href="/search/java%E5%AE%9E%E7%8E%B0/1.htm">java实现</a>
                                    <div>
import java.util.LinkedList;

public class CaseInsensitiveTrie {

	/**
	字典树的Java实现。实现了插入、查询以及深度优先遍历。 
    Trie tree's java implementation.(Insert,Search,DFS)
    
	Problem Description
	Igna</div>
                                </li>
                                <li><a href="/article/2130.htm"
                                       title="html css 鼠标形状样式汇总" target="_blank">html css 鼠标形状样式汇总</a>
                                    <span class="text-muted">chenbowen00</span>
<a class="tag" taget="_blank" href="/search/html/1.htm">html</a><a class="tag" taget="_blank" href="/search/css/1.htm">css</a>
                                    <div>css鼠标手型cursor中hand与pointer  
Example:CSS鼠标手型效果 <a href="#" style="cursor:hand">CSS鼠标手型效果</a><br/>  
Example:CSS鼠标手型效果 <a href="#" style=&qu</div>
                                </li>
                                <li><a href="/article/2257.htm"
                                       title="[IT与投资]IT投资的几个原则" target="_blank">[IT与投资]IT投资的几个原则</a>
                                    <span class="text-muted">comsci</span>
<a class="tag" taget="_blank" href="/search/it/1.htm">it</a>
                                    <div> 
      无论是想在电商,软件,硬件还是互联网领域投资,都需要大量资金,虽然各个国家政府在媒体上都给予大家承诺,既要让市场的流动性宽松,又要保持经济的高速增长....但是,事实上,整个市场和社会对于真正的资金投入是非常渴望的,也就是说,表面上看起来,市场很活跃,但是投入的资金并不是很充足的...... 
 
   </div>
                                </li>
                                <li><a href="/article/2384.htm"
                                       title="oracle with语句详解" target="_blank">oracle with语句详解</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/with/1.htm">with</a><a class="tag" taget="_blank" href="/search/with+as/1.htm">with as</a>
                                    <div>oracle with语句详解 转 
 
 
在oracle中,select 查询语句,可以使用with,就是一个子查询,oracle 会把子查询的结果放到临时表中,可以反复使用 
 
例子:注意,这是sql语句,不是pl/sql语句, 可以直接放到jdbc执行的 
 
----------------------------------------------------------------</div>
                                </li>
                                <li><a href="/article/2511.htm"
                                       title="hbase的简单操作" target="_blank">hbase的简单操作</a>
                                    <span class="text-muted">deng520159</span>
<a class="tag" taget="_blank" href="/search/%E6%95%B0%E6%8D%AE%E5%BA%93/1.htm">数据库</a><a class="tag" taget="_blank" href="/search/hbase/1.htm">hbase</a>
                                    <div>近期公司用hbase来存储日志,然后再来分析 ,把hbase开发经常要用的命令找了出来. 
用ssh登陆安装hbase那台linux后 
用hbase shell进行hbase命令控制台! 
表的管理 
1)查看有哪些表 
hbase(main)> list 
2)创建表 
  
# 语法:create <table>, {NAME => <family&g</div>
                                </li>
                                <li><a href="/article/2638.htm"
                                       title="C语言scanf继续学习、算术运算符学习和逻辑运算符" target="_blank">C语言scanf继续学习、算术运算符学习和逻辑运算符</a>
                                    <span class="text-muted">dcj3sjt126com</span>
<a class="tag" taget="_blank" href="/search/c/1.htm">c</a>
                                    <div>/*
	2013年3月11日20:37:32
	地点:北京潘家园
	功能:完成用户格式化输入多个值
	目的:学习scanf函数的使用

*/
# include <stdio.h>

int main(void)
{
	int i, j, k;

	printf("please input three number:\n");  //提示用</div>
                                </li>
                                <li><a href="/article/2765.htm"
                                       title="2015越来越好" target="_blank">2015越来越好</a>
                                    <span class="text-muted">dcj3sjt126com</span>
<a class="tag" taget="_blank" href="/search/%E6%AD%8C%E6%9B%B2/1.htm">歌曲</a>
                                    <div>越来越好

房子大了电话小了 感觉越来越好
假期多了收入高了 工作越来越好
商品精了价格活了 心情越来越好
天更蓝了水更清了 环境越来越好

活得有奔头人会步步高
想做到你要努力去做到

幸福的笑容天天挂眉梢 越来越好
婆媳和了家庭暖了 生活越来越好
孩子高了懂事多了 学习越来越好
朋友多了心相通了 大家越来越好
道路宽了心气顺了 日子越来越好

活的有精神人就不显</div>
                                </li>
                                <li><a href="/article/2892.htm"
                                       title="java.sql.SQLException: Value '0000-00-00' can not be represented as java.sql.Tim" target="_blank">java.sql.SQLException: Value '0000-00-00' can not be represented as java.sql.Tim</a>
                                    <span class="text-muted">feiteyizu</span>
<a class="tag" taget="_blank" href="/search/mysql/1.htm">mysql</a>
                                    <div>数据表中有记录的time字段(属性为timestamp)其值为:“0000-00-00 00:00:00” 
程序使用select 语句从中取数据时出现以下异常: 
java.sql.SQLException:Value '0000-00-00' can not be represented as java.sql.Date 
  
java.sql.SQLException: Valu</div>
                                </li>
                                <li><a href="/article/3019.htm"
                                       title="Ehcache(07)——Ehcache对并发的支持" target="_blank">Ehcache(07)——Ehcache对并发的支持</a>
                                    <span class="text-muted">234390216</span>
<a class="tag" taget="_blank" href="/search/%E5%B9%B6%E5%8F%91/1.htm">并发</a><a class="tag" taget="_blank" href="/search/ehcache/1.htm">ehcache</a><a class="tag" taget="_blank" href="/search/%E9%94%81/1.htm">锁</a><a class="tag" taget="_blank" href="/search/ReadLock/1.htm">ReadLock</a><a class="tag" taget="_blank" href="/search/WriteLock/1.htm">WriteLock</a>
                                    <div>Ehcache对并发的支持 
  
       在高并发的情况下,使用Ehcache缓存时,由于并发的读与写,我们读的数据有可能是错误的,我们写的数据也有可能意外的被覆盖。所幸的是Ehcache为我们提供了针对于缓存元素Key的Read(读)、Write(写)锁。当一个线程获取了某一Key的Read锁之后,其它线程获取针对于同</div>
                                </li>
                                <li><a href="/article/3146.htm"
                                       title="mysql中blob,text字段的合成索引" target="_blank">mysql中blob,text字段的合成索引</a>
                                    <span class="text-muted">jackyrong</span>
<a class="tag" taget="_blank" href="/search/mysql/1.htm">mysql</a>
                                    <div>  在mysql中,原来有一个叫合成索引的,可以提高blob,text字段的效率性能, 
但只能用在精确查询,核心是增加一个列,然后可以用md5进行散列,用散列值查找 
则速度快 
 
比如: 
 
create table abc(id varchar(10),context blog,hash_value varchar(40)); 
 
 insert into abc(1,rep</div>
                                </li>
                                <li><a href="/article/3273.htm"
                                       title="逻辑运算与移位运算" target="_blank">逻辑运算与移位运算</a>
                                    <span class="text-muted">latty</span>
<a class="tag" taget="_blank" href="/search/%E4%BD%8D%E8%BF%90%E7%AE%97/1.htm">位运算</a><a class="tag" taget="_blank" href="/search/%E9%80%BB%E8%BE%91%E8%BF%90%E7%AE%97/1.htm">逻辑运算</a>
                                    <div>源码:正数的补码与原码相同例+7 源码:00000111 补码 :00000111  (用8位二进制表示一个数)
 
 
 
负数的补码:
   符号位为1,其余位为该数绝对值的原码按位取反;然后整个数加1。   -7 源码: 10000111 ,其绝对值为00000111  取反加一:11111001 为-7补码 
 
已知一个数的补码,求原码的操作分两种情况:</div>
                                </li>
                                <li><a href="/article/3400.htm"
                                       title="利用XSD 验证XML文件" target="_blank">利用XSD 验证XML文件</a>
                                    <span class="text-muted">newerdragon</span>
<a class="tag" taget="_blank" href="/search/java/1.htm">java</a><a class="tag" taget="_blank" href="/search/xml/1.htm">xml</a><a class="tag" taget="_blank" href="/search/xsd/1.htm">xsd</a>
                                    <div>XSD文件 (XML Schema 语言也称作 XML Schema 定义(XML Schema Definition,XSD)。 具体使用方法和定义请参看: 
 
http://www.w3school.com.cn/schema/index.asp 
 
 
 
java自jdk1.5以上新增了SchemaFactory类 可以实现对XSD验证的支持,使用起来也很方便。 
 
以下代码可用在J</div>
                                </li>
                                <li><a href="/article/3527.htm"
                                       title="搭建 CentOS 6 服务器(12) - Samba" target="_blank">搭建 CentOS 6 服务器(12) - Samba</a>
                                    <span class="text-muted">rensanning</span>
<a class="tag" taget="_blank" href="/search/centos/1.htm">centos</a>
                                    <div>(1)安装 
 
# yum -y install samba
    Installed:
      samba.i686 0:3.6.9-169.el6_5
# pdbedit -a rensn
    new password:123456
    retype new password:123456
    …… 
 
 
(2)Home文件夹 
 
# mkdir /etc</div>
                                </li>
                                <li><a href="/article/3654.htm"
                                       title="Learn Nodejs 01" target="_blank">Learn Nodejs 01</a>
                                    <span class="text-muted">toknowme</span>
<a class="tag" taget="_blank" href="/search/nodejs/1.htm">nodejs</a>
                                    <div>(1)下载nodejs  
https://nodejs.org/download/   选择相应的版本进行下载           (2)安装nodejs   安装的方式比较多,请baidu下  
我这边下载的是“node-v0.12.7-linux-x64.tar.gz”这个版本  (1)上传服务器   (2)解压   tar -zxvf  node-v0.12.</div>
                                </li>
                                <li><a href="/article/3781.htm"
                                       title="jquery控制自动刷新的代码举例" target="_blank">jquery控制自动刷新的代码举例</a>
                                    <span class="text-muted">xp9802</span>
<a class="tag" taget="_blank" href="/search/jquery/1.htm">jquery</a>
                                    <div>1、html内容部分   复制代码代码示例:   <div id='log_reload'> 
<select name="id_s" size="1"> 
<option value='2'>-2s-</option> 
<option value='3'>-3s-</option</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>