深入理解async函数——ES6篇

含义及作用

引入了 函数,使得异步操作变得async更加方便。async函数就是将 Generator 函数的星号(*)替换成async,将yield替换成await,仅此而已。async函数对 Generator 函数的改进,体现在以下四点。

  • 内置执行器
  • 更好的语义
  • 更广的适用性
  • 返回值是 Promise

基本用法

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

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

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

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

async function getTitle(url) {
	let response = await fetch(url);
	let html = await resoponse.text();
	return html.match(/([\s\S] + ) <\/title>/i)[i];
}

getTitle('https://tc39.github.io/ecma262/').then(console.log)</code></pre> 
  <p>正常情况下,await命令后面是一个Promise对象,返回该对象的结果。如果不是promise对象,就直接返回对应的值<br> await命令后面是一个thenable对象(即定义then方法的对象),那么await会将其等同于Promise对象</p> 
  <pre class="has"><code class="language-javascript">class Sleep{
	constructor(timeout) {
		this.timout = timout;
	}
	then(resolve, reject) {
		const startTime = Date.now();
		setTimeout(
			() => resolve(Date.now() - startTime),
			this.timeout
		);
	}
}

(async () => {
	const.actualTime = await new Sleep(1000);
	console.log(actualTime);
})();
</code></pre> 
  <h3>错误处理</h3> 
  <p>使用 try...catch结构,实现多次重复尝试,await后面的promise对象会抛出一个错误对象,导致catch方法的回调函数被配出的错误对象调用。</p> 
  <pre class="has"><code class="language-javascript">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-throw-an-error');
			break;
		} catch (err) {

		}
	}
	console.log(i);
}

test();
</code></pre> 
  <p><strong>与其他异步处理方法的比较:</strong></p> 
  <p>async函数的实现原理:将Gennerator函数和自动执行器,包装在一个函数里</p> 
  <p>我们通过一个例子,来看 async 函数与 Promise、Generator 函数的比较。</p> 
  <p>假定某个 DOM 元素上面,部署了一系列的动画,前一个动画结束,才能开始后一个。如果当中有一个动画出错,就不再往下执行,返回上一个成功执行的动画的返回值。</p> 
  <p><strong>Promise 的写法</strong></p> 
  <pre class="has"><code class="language-javascript">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>虽然 Promise 的写法比回调函数的写法大大改进,但是一眼看上去, 代码完全都是 Promise 的 API(then、catch等等),操作本身的语义反而不容易看出来。</p> 
  <p><strong>Generator 函数的写法</strong></p> 
  <pre class="has"><code class="language-javascript">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>上面代码使用 Generator 函数遍历了每个动画,语义比 Promise 写法更清晰,用户定义的操作全部都出现在spawn函数的内部。这个写法的问题在于,必须有一个任务运行器,自动执行 Generator 函数,上面代码的spawn函数就是自动执行器,它返回一个 Promise 对象,而且必须保证yield语句后面的表达式,必须返回一个 Promise。</p> 
  <p><strong>async 函数的写法:</strong></p> 
  <pre class="has"><code class="language-javascript">async function chainAnimationsAsync(elem, animations){
	let ret = null;
	try {
		for(let anim of animations) {
			ret = await anim(elem);
		}
	} catch(e) {
		//忽略错误,继续执行
	}

	return ret;
}</code></pre> 
  <h3>实例</h3> 
  <p><strong>1) 按照顺序完成异步操作,并发执行(节省时间)</strong></p> 
  <pre class="has"><code class="language-javascript">async function logInOrder(urls) {
	//并发读取远程URL
	const textPromise = urls.map(async url => {
		const response = await fetch(url);
		return response.text();
	});

	//依次序输出
	for (const textPromise of textPromise) {
		console.log(await textPromise);
	}
}
</code></pre> 
  <p>虽然map方法的参数是async函数,但它是并发执行的,因为只有async函数内部是继发执行, 外部不受影响。后面的for..of循环内部使用了await,因此实现了按顺序输出。</p> 
  <p><strong>for await...of</strong><br> for...of 循环用于遍历同步的Iterator接口,新引入的for await...of 循环,则是用于遍历异步的Iterator接口</p> 
  <pre class="has"><code class="language-javascript">async function f() {
		for await (const x of createAsyncInterable(['a','b'])) {
			console.log(x);
		}
	}
	//a
	//b</code></pre> 
  <h3><strong>注意:</strong></h3> 
  <p>1)await 命令后面的promise对象,运行结果可能是rejected,所以最好把await命令放在 try...catch 代码块中</p> 
  <pre class="has"><code class="language-javascript">async function myFunction() {
	try {
		await somethingThatReturnAPromise();
	} catch(err) {
		console.log(err);
	}
}
//另一种写法
async function myFunction() {
	await somethingThatReturnAPromise()
	.catch(function (err) {
		console.log(err);
	});
}</code></pre> 
  <p>2 )多个await 命令后面的异步操作,如果不存在继发关系,最好让它们同时出发<br> 继发写法(不推荐):比较耗时,执行完一个才能执行下一个</p> 
  <pre class="has"><code class="language-javascript">let foo = await getFoo();
let bar = await getBar();
</code></pre> 
  <p>同时出发(推荐): 缩短程序的执行时间</p> 
  <pre class="has"><code class="language-javascript">//写法一
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>3 )await命令只能在async函数之中,如果在普通函数就会报错</p> 
  <pre class="has"><code class="language-javascript">async function dbFunc(db) {
	let docs = [{},{},{}];
//报错
	docs.forEach(function (doc) {
		await db.post(doc);
	});
}
//报错,因为await用在普通函数之中了

function dbFunc(db) {//这里奴需要async
	let docs = [{}, {}, {}];

	//可能得到错误结果
	docs.forEach(async function(doc) {
		await db.post(doc);
	});
}
//原因是这时三个db.post操作将是并发执行,也即是同时执行,而不是继发执行
//正确写法是采用for循环
async function dbFunc(db) {
	let docs = [{},{},{}];

	for (let doc of docs) {
		await db.post(doc);
	}
}</code></pre> 
  <p> </p> 
  <p> </p> 
  <p> </p> 
  <p> </p> 
 </div> 
</div>
                            </div>
                        </div>
                    </div>
                    <!--PC和WAP自适应版-->
                    <div id="SOHUCS" sid="1297219160903852032"></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/1881082285202141184.htm"
                           title="Prometheus Alertmanager设置与告警规则配置详解" target="_blank">Prometheus Alertmanager设置与告警规则配置详解</a>
                        <span class="text-muted">范范0825</span>
<a class="tag" taget="_blank" href="/search/prometheus/1.htm">prometheus</a>
                        <div>PrometheusAlertmanager设置与告警规则配置详解Prometheus是一个开源的监控和告警系统,其设计理念是通过时间序列数据库存储指标数据,并通过多维数据模型和查询语言进行数据分析。Prometheus的告警系统由两部分组成:Prometheus服务器本身和Alertmanager。Alertmanager负责接收来自Prometheus的告警,执行通知的分发、抑制和聚合。本文将</div>
                    </li>
                    <li><a href="/article/1881082029316042752.htm"
                           title="运行python程序的两种方式交互式和文件式_执行Python程序的两种方式" target="_blank">运行python程序的两种方式交互式和文件式_执行Python程序的两种方式</a>
                        <span class="text-muted">weixin_39610085</span>

                        <div>交互式(了解)交互式环境下,敲完一条命令按下enter键马上能看到结果,调试程序方便。程序无法永久保存,关掉cmd窗口数据就消失了。命令行式(了解)打开文本编辑器,在文本编辑器中写入一串字符。文本编辑器写的代码毫无意义,只是一堆字符,并且文件的后缀名没有影响。由于python语言是解释型语言,我们直接使用python打开文件,python会读一行翻译一行,并且这个文件是永久保存在硬盘中的。但是需要</div>
                    </li>
                    <li><a href="/article/1881073951359168512.htm"
                           title="Java与移动应用开发:Android与Kotlin" target="_blank">Java与移动应用开发:Android与Kotlin</a>
                        <span class="text-muted">Coder_Kevin_Vans</span>
<a class="tag" taget="_blank" href="/search/android/1.htm">android</a><a class="tag" taget="_blank" href="/search/kotlin/1.htm">kotlin</a><a class="tag" taget="_blank" href="/search/java/1.htm">java</a>
                        <div>1.环境设置:首先,安装和配置Java开发环境(JDK)和Android开发环境(AndroidStudio)。确保您的计算机上已经安装了Java开发工具和AndroidStudio开发环境。2.项目创建:使用AndroidStudio创建新的Android项目。选择适当的项目名称、包名和目标设备版本。选择Kotlin作为主要编程语言。3.UI设计:使用AndroidStudio的布局编辑器,设计</div>
                    </li>
                    <li><a href="/article/1881070801986318336.htm"
                           title="使用 Java 开发 Android 应用:Kotlin 与 Java 的混合编程" target="_blank">使用 Java 开发 Android 应用:Kotlin 与 Java 的混合编程</a>
                        <span class="text-muted">荆州克莱</span>
<a class="tag" taget="_blank" href="/search/%E9%9D%A2%E8%AF%95%E9%A2%98%E6%B1%87%E6%80%BB%E4%B8%8E%E8%A7%A3%E6%9E%90/1.htm">面试题汇总与解析</a><a class="tag" taget="_blank" href="/search/spring/1.htm">spring</a><a class="tag" taget="_blank" href="/search/cloud/1.htm">cloud</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/spring/1.htm">spring</a><a class="tag" taget="_blank" href="/search/%E6%8A%80%E6%9C%AF/1.htm">技术</a><a class="tag" taget="_blank" href="/search/css3/1.htm">css3</a>
                        <div>使用Java开发Android应用:Kotlin与Java的混合编程在开发Android应用程序时,我们通常可以选择使用Java或Kotlin作为主要的编程语言。然而,有些开发者可能会想要在同一个项目中同时使用这两种语言,这就是所谓的混合编程(mixedprogramming)。为什么要混合编程?混合编程的主要优势之一是,它可以让你利用Java和Kotlin两种语言的优势。Java作为一种老牌的编</div>
                    </li>
                    <li><a href="/article/1881070039768035328.htm"
                           title="【Javascript Day11】数组的内置方法、添加获取、元素查询及练习、排序方法数组的内置方法" target="_blank">【Javascript Day11】数组的内置方法、添加获取、元素查询及练习、排序方法数组的内置方法</a>
                        <span class="text-muted">clp20031101</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>数组的内置方法//js语法中所有的数据类型都是从对象演变而来的varstr="abc";console.log(typeofstr,str.constructor);//stringconsole.log(typeofstr=="string");varuser={};console.log(typeofuser,user.constructor);vararr=[1,2];console.log</div>
                    </li>
                    <li><a href="/article/1881068269566226432.htm"
                           title="ST编程指南详细写作大纲" target="_blank">ST编程指南详细写作大纲</a>
                        <span class="text-muted">阿凡工控分享</span>
<a class="tag" taget="_blank" href="/search/ST%E7%BC%96%E7%A8%8B%E6%8C%87%E5%8D%97/1.htm">ST编程指南</a><a class="tag" taget="_blank" href="/search/PLC/1.htm">PLC</a>
                        <div>从今天开始除了做视频,也是应一些后台观众的需求,希望我将ST编程单独说明,纵观网上这么多教程,大多很零散,而且不全面,所以我打算开个坑,自己写一个ST编程指南,希望能够帮助到大家,这里需要说明一点,这一次创作并不是免费的,因为做视频本身就很占用我的时间了,写作的话,也是希望大家多多赞赏或者付费支持下我,谢谢了!以下是我打算的一个大纲。引言1.1ST语言简介ST(StructuredText)的定义</div>
                    </li>
                    <li><a href="/article/1881067005193285632.htm"
                           title="用C语言 找完数" target="_blank">用C语言 找完数</a>
                        <span class="text-muted">回响N</span>
<a class="tag" taget="_blank" href="/search/%E7%AE%97%E6%B3%95/1.htm">算法</a><a class="tag" taget="_blank" href="/search/%E6%95%B0%E6%8D%AE%E7%BB%93%E6%9E%84/1.htm">数据结构</a>
                        <div>完数:一个数的所有因子(除本身外)之和等于这个数,称这个数为完数intmain()//{//inti,j,sum;//for(i=1;i<=1000;i++)//寻找1000之内的完数//{//sum=0;//因子之和的初始化//for(j=1;j<i;j++)//{//if(i%j==0)//{//sum=sum+j;//}//}//if(sum==i)//判断因子之和是否等于这个数//prin</div>
                    </li>
                    <li><a href="/article/1881066753052700672.htm"
                           title="玩转大模型的第一步——提示词(Prompt)工程【抛砖篇】" target="_blank">玩转大模型的第一步——提示词(Prompt)工程【抛砖篇】</a>
                        <span class="text-muted">AI大模型老林</span>
<a class="tag" taget="_blank" href="/search/prompt/1.htm">prompt</a><a class="tag" taget="_blank" href="/search/%E6%95%B0%E6%8D%AE%E6%8C%96%E6%8E%98/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/opencv/1.htm">opencv</a><a class="tag" taget="_blank" href="/search/%E8%AF%AD%E9%9F%B3%E8%AF%86%E5%88%AB/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>
                        <div>前言AI大模型提示词工程,又名LLMpromptsProject,指的是在使用大型语言模型(如OpenAI的GPT系列)时,用于引导模型生成特定响应的输入,是在使用AI大模型过程中非常重要的一个环节,是模型生成文本的起点。选择合适的Prompt对大模型回答的质量影响非常大,甚至可能会导致截然不同的结果。Prompt编写框架我们可以简单的看一下,分别使用下面两个Prompt在LLM的输出中分别会得到</div>
                    </li>
                    <li><a href="/article/1881065619265220608.htm"
                           title="docker buildx 构建arm64架构镜像_docker buildx 创建arm镜像" target="_blank">docker buildx 构建arm64架构镜像_docker buildx 创建arm镜像</a>
                        <span class="text-muted">蓉城垡</span>
<a class="tag" taget="_blank" href="/search/%E7%A8%8B%E5%BA%8F%E5%91%98/1.htm">程序员</a><a class="tag" taget="_blank" href="/search/docker/1.htm">docker</a><a class="tag" taget="_blank" href="/search/%E6%9E%B6%E6%9E%84/1.htm">架构</a><a class="tag" taget="_blank" href="/search/%E5%AE%B9%E5%99%A8/1.htm">容器</a>
                        <div>参考:Buildmulti-platformimages安装dockerrun--privileged--rmtonistiigi/binfmt--installall创建builderdockerbuildxcreate--use--namemybuilddefault构建镜像使用go语言为例子,参考这位大佬博客:cat>hello.goDockerfile<<EOFFROMgolang:alp</div>
                    </li>
                    <li><a href="/article/1881064735189823488.htm"
                           title="Imagen架构详解:理解其背后的技术与创新" target="_blank">Imagen架构详解:理解其背后的技术与创新</a>
                        <span class="text-muted">范范0825</span>
<a class="tag" taget="_blank" href="/search/Imagen/1.htm">Imagen</a><a class="tag" taget="_blank" href="/search/%E6%9E%B6%E6%9E%84/1.htm">架构</a>
                        <div>Imagen架构详解:理解其背后的技术与创新引言近年来,生成式人工智能技术取得了飞速发展,特别是在图像生成领域。作为这一领域的重要创新之一,Imagen是由谷歌开发的一种基于文本生成图像的模型。它在生成高质量、逼真的图像方面表现出色,并通过其先进的架构和技术手段推动了图像生成的技术进步。Imagen不仅在图像生成质量上具有显著优势,还能够通过自然语言描述生成细致复杂的图像。本文将详细剖析Image</div>
                    </li>
                    <li><a href="/article/1881063218491748352.htm"
                           title="使用 Java 开发 Android 应用:Kotlin 与 Java 的混合编程" target="_blank">使用 Java 开发 Android 应用:Kotlin 与 Java 的混合编程</a>
                        <span class="text-muted">荆州克莱</span>
<a class="tag" taget="_blank" href="/search/%E9%9D%A2%E8%AF%95%E9%A2%98%E6%B1%87%E6%80%BB%E4%B8%8E%E8%A7%A3%E6%9E%90/1.htm">面试题汇总与解析</a><a class="tag" taget="_blank" href="/search/spring/1.htm">spring</a><a class="tag" taget="_blank" href="/search/cloud/1.htm">cloud</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/spring/1.htm">spring</a><a class="tag" taget="_blank" href="/search/%E6%8A%80%E6%9C%AF/1.htm">技术</a><a class="tag" taget="_blank" href="/search/css3/1.htm">css3</a>
                        <div>使用Java开发Android应用:Kotlin与Java的混合编程在开发Android应用程序时,我们通常可以选择使用Java或Kotlin作为主要的编程语言。然而,有些开发者可能会想要在同一个项目中同时使用这两种语言,这就是所谓的混合编程(mixedprogramming)。为什么要混合编程?混合编程的主要优势之一是,它可以让你利用Java和Kotlin两种语言的优势。Java作为一种老牌的编</div>
                    </li>
                    <li><a href="/article/1881059559225749504.htm"
                           title="C语言的那点事第三篇:数据类型脱口秀" target="_blank">C语言的那点事第三篇:数据类型脱口秀</a>
                        <span class="text-muted">暮雨哀尘</span>
<a class="tag" taget="_blank" href="/search/c%E8%AF%AD%E8%A8%80/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><a class="tag" taget="_blank" href="/search/%E9%9D%92%E5%B0%91%E5%B9%B4%E7%BC%96%E7%A8%8B/1.htm">青少年编程</a><a class="tag" taget="_blank" href="/search/%E8%93%9D%E6%A1%A5%E6%9D%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%BC%96%E8%BE%91%E5%99%A8/1.htm">编辑器</a>
                        <div>咱们就来一场“编程界的脱口秀”,边抖包袱边写代码,让枯燥的语法也“活”起来。一、数据类型(一)基本数据类型1.整型整型就是那些规规矩矩、不带小数的数字,像1、2、3这种。在代码里,我们可以这样定义一个整型变量:intnum=10;这就相当于在数字王国里,我们抓了一个叫“num”的小兵,给它穿上了整型的制服,还让它站到10这个位置上。2.浮点型浮点型就有点“放荡不羁”,它带着小数点,像3.14这种。</div>
                    </li>
                    <li><a href="/article/1881058042414428160.htm"
                           title="typescript中为js文件提供类型声明" target="_blank">typescript中为js文件提供类型声明</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/vue3.x/1.htm">vue3.x</a><a class="tag" taget="_blank" href="/search/typescript/1.htm">typescript</a><a class="tag" taget="_blank" href="/search/vue.js/1.htm">vue.js</a><a class="tag" taget="_blank" href="/search/typescript/1.htm">typescript</a>
                        <div>案例:为JS文件提供类型声明场景描述假设我们有一个JavaScript文件utils.js,其中包含一些实用工具函数和变量。为了在TypeScript中使用这些函数和变量并获得类型提示,我们可以使用declare关键词为它们提供类型声明。1.创建JavaScript文件:utils.js//utils.jsconstgreeting="Hello,World!";functionadd(a,b){</div>
                    </li>
                    <li><a href="/article/1881057915809361920.htm"
                           title="可选链语法在javascript和typescript中的使用详解" target="_blank">可选链语法在javascript和typescript中的使用详解</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/javascript/1.htm">javascript</a><a class="tag" taget="_blank" href="/search/typescript/1.htm">typescript</a><a class="tag" taget="_blank" href="/search/%E5%BC%80%E5%8F%91%E8%AF%AD%E8%A8%80/1.htm">开发语言</a>
                        <div>可选链(OptionalChaining)在JavaScript和TypeScript中的使用非常相似。以下是一个详细的使用案例,包括解释和示例代码。使用案例假设我们有一个用户对象,包含用户的个人信息和地址信息。我们希望安全地访问用户的地址信息,特别是当某些属性可能不存在时。示例对象constuser={name:"Alice",address:{street:"123MainSt",city:"</div>
                    </li>
                    <li><a href="/article/1881057407757512704.htm"
                           title="Rust实现内网穿透工具:从原理到实现" target="_blank">Rust实现内网穿透工具:从原理到实现</a>
                        <span class="text-muted">余识-</span>
<a class="tag" taget="_blank" href="/search/Rust%E4%BB%8E%E5%85%A5%E9%97%A8%E5%88%B0%E7%B2%BE%E9%80%9A/1.htm">Rust从入门到精通</a><a class="tag" taget="_blank" href="/search/rust/1.htm">rust</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.内网穿透原理3.丐版实现3.1share3.2server3.3client3.4测试4.项目优化4.1工作空间4.2代码合并4.3无锁优化4.4数据分离4.5错误处理4.6测试代码4.7参数解析本篇原文为:Rust实现内网穿透工具:从原理到实现更多C++进阶、rust、python、逆向等等教程,可点击此链接查看:酷程网1.前言rust是一门非常适合写命令行工具的语言,本文将结合</div>
                    </li>
                    <li><a href="/article/1881057407099006976.htm"
                           title="C语言进阶复习" target="_blank">C语言进阶复习</a>
                        <span class="text-muted">Zhe_lianxi</span>
<a class="tag" taget="_blank" href="/search/c%E8%AF%AD%E8%A8%80/1.htm">c语言</a><a class="tag" taget="_blank" href="/search/%E7%AE%97%E6%B3%95/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>今天复习了指针相关概念,前几天有个gets警告的问题,今天来解决一下。对此写一个GetStr函数,参数1:需要获取字符串的字符数组参数2:此字符数组的大小对此,这个编译警告的问题就解决了。#includevoidGetStr(char*Str,intlen);//函数声明intmain(void){charstr[128]={0};GetStr(str,sizeof(str));printf("%</div>
                    </li>
                    <li><a href="/article/1881056899164598272.htm"
                           title="音视频开发——FFmpeg 实现MP4转FLV文件 C语言实现" target="_blank">音视频开发——FFmpeg 实现MP4转FLV文件 C语言实现</a>
                        <span class="text-muted">Trump. yang</span>
<a class="tag" taget="_blank" href="/search/%E9%9F%B3%E8%A7%86%E9%A2%91%E5%BC%80%E5%8F%91/1.htm">音视频开发</a><a class="tag" taget="_blank" href="/search/%E9%9F%B3%E8%A7%86%E9%A2%91/1.htm">音视频</a><a class="tag" taget="_blank" href="/search/ffmpeg/1.htm">ffmpeg</a><a class="tag" taget="_blank" href="/search/c%E8%AF%AD%E8%A8%80/1.htm">c语言</a>
                        <div>文章目录转换步骤关键代码完整代码转换步骤初始化FFmpeg库打开输入文件找到输入文件的流信息打开输出文件并设置输出格式创建输出文件的流初始化解码器和编码器读取输入文件的帧并写入输出文件释放资源关键代码1初始化FFmpeg库:av_register_all();打开输入文件:if((ret=avformat_open_input(&input_format_ctx,input_filename,NU</div>
                    </li>
                    <li><a href="/article/1881055257870528512.htm"
                           title="leetcode 66 :加一【JavaScript/JS解法】" target="_blank">leetcode 66 :加一【JavaScript/JS解法】</a>
                        <span class="text-muted">yuri.css</span>
<a class="tag" taget="_blank" href="/search/%E7%AE%97%E6%B3%95/1.htm">算法</a><a class="tag" taget="_blank" href="/search/leetcode/1.htm">leetcode</a><a class="tag" taget="_blank" href="/search/%E7%AE%97%E6%B3%95/1.htm">算法</a><a class="tag" taget="_blank" href="/search/javascript/1.htm">javascript</a>
                        <div>还是先上题给定一个由整数组成的非空数组所表示的非负整数,在该数的基础上加一。最高位数字存放在数组的首位,数组中每个元素只存储单个数字。你可以假设除了整数0之外,这个整数不会以零开头。看完题之后感受就是join和split来回跳return(Number(digits.join(""))+1n).toString().split("");然后出现两个问题:1存在[0,0]这样的输入,如果直接转换为零</div>
                    </li>
                    <li><a href="/article/1881054375393161216.htm"
                           title="华为OD机试2024年E卷-喊7的次数重排[100分]( Java | Python3 | C++ | C语言 | JsNode | Go)实现100%通过率" target="_blank">华为OD机试2024年E卷-喊7的次数重排[100分]( Java | Python3 | C++ | C语言 | JsNode | Go)实现100%通过率</a>
                        <span class="text-muted">梅花C</span>
<a class="tag" taget="_blank" href="/search/%E5%8D%8E%E4%B8%BAOD%E9%A2%98%E5%BA%93/1.htm">华为OD题库</a><a class="tag" taget="_blank" href="/search/%E5%8D%8E%E4%B8%BAod/1.htm">华为od</a>
                        <div>题目描述喊7是一个传统的聚会游戏,N个人围成一圈,按顺时针从1到N编号。编号为1的人从1开始喊数,下一个人喊的数字为上一个人的数字加1,但是当将要喊出来的数字是7的倍数或者数字本身含有7的话,不能把这个数字直接喊出来,而是要喊"过"。假定玩这个游戏的N个人都没有失误地在正确的时机喊了"过",当喊到数字K时,可以统计每个人喊"过"的次数。现给定一个长度为N的数组,存储了打乱顺序的每个人喊"过"的次数</div>
                    </li>
                    <li><a href="/article/1881054249048141824.htm"
                           title="用c语言写出变色的心形图案" target="_blank">用c语言写出变色的心形图案</a>
                        <span class="text-muted">凌龍墨</span>
<a class="tag" taget="_blank" href="/search/C%E8%AF%AD%E8%A8%80/1.htm">C语言</a><a class="tag" taget="_blank" href="/search/c%E8%AF%AD%E8%A8%80/1.htm">c语言</a><a class="tag" taget="_blank" href="/search/%E5%BF%83%E5%BD%A2%E5%9B%BE%E6%A1%88/1.htm">心形图案</a><a class="tag" taget="_blank" href="/search/%E5%8F%98%E8%89%B2%E5%BF%83%E5%BD%A2%E5%9B%BE%E6%A1%88/1.htm">变色心形图案</a>
                        <div>直接上代码啦!#include#include#include#defineI20#defineR340intmain(){inti,j,e;inta;longtime;for(i=1,a=I;i0;j--)printf("");for(e=1;e0;j--)printf("");for(e=1;e0;j--)printf("");for(e=1;e<=2*(sqrt(R*R-i*i)-(R-2*</div>
                    </li>
                    <li><a href="/article/1881047683142053888.htm"
                           title="实战千问2大模型第五天——VLLM 运行 Qwen2-VL-7B(多模态)" target="_blank">实战千问2大模型第五天——VLLM 运行 Qwen2-VL-7B(多模态)</a>
                        <span class="text-muted">学术菜鸟小晨</span>
<a class="tag" taget="_blank" href="/search/%E5%8D%83%E9%97%AE/1.htm">千问</a><a class="tag" taget="_blank" href="/search/%E5%A4%9A%E6%A8%A1%E5%9E%8B/1.htm">多模型</a><a class="tag" taget="_blank" href="/search/qwen2/1.htm">qwen2</a><a class="tag" taget="_blank" href="/search/vl/1.htm">vl</a>
                        <div>一、简介VLLM是一种高效的深度学习推理库,通过PagedAttention算法有效管理大语言模型的注意力内存,其特点包括24倍的吞吐提升和3.5倍的TGI性能,无需修改模型结构,专门设计用于加速大规模语言模型(LLM)的推理过程。它通过优化显存管理、支持大模型的批处理推理以及减少不必要的内存占用,来提高多GPU环境下的推理速度和效率。VLLM的核心特点包括:显存高效性:VLLM能够动态管理显存,</div>
                    </li>
                    <li><a href="/article/1881047556088197120.htm"
                           title="python语言souhushipin爬虫程序代码QZQ" target="_blank">python语言souhushipin爬虫程序代码QZQ</a>
                        <span class="text-muted">EasySoft易软</span>
<a class="tag" taget="_blank" href="/search/python/1.htm">python</a><a class="tag" taget="_blank" href="/search/%E7%88%AC%E8%99%AB/1.htm">爬虫</a><a class="tag" taget="_blank" href="/search/%E6%95%B0%E6%8D%AE%E5%BA%93/1.htm">数据库</a>
                        <div>importrequests#第一步搜索视频名称,找第2个这个ip?k=Xilmz93BsHYDhRYmz913t6O…开头的文件,url=‘https://data.vod.itc.cn/ip?k=Xilmz93BsHYDhRYmz913t6OUXpCGhROCzHaRsAOdjpCGhRYAtUxIgYeiwmemZDyOwmXAyB2HWhdt5BvOWFcvf2PNNef6q2vUo8fV</div>
                    </li>
                    <li><a href="/article/1881042126234513408.htm"
                           title="使用Python实现LLM的文本生成:风格迁移与内容控制" target="_blank">使用Python实现LLM的文本生成:风格迁移与内容控制</a>
                        <span class="text-muted">二进制独立开发</span>
<a class="tag" taget="_blank" href="/search/GenAI%E4%B8%8EPython/1.htm">GenAI与Python</a><a class="tag" taget="_blank" href="/search/%E9%9D%9E%E7%BA%AF%E7%B2%B9GenAI/1.htm">非纯粹GenAI</a><a class="tag" taget="_blank" href="/search/python/1.htm">python</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/%E4%BA%BA%E5%B7%A5%E6%99%BA%E8%83%BD/1.htm">人工智能</a><a class="tag" taget="_blank" href="/search/%E8%87%AA%E7%84%B6%E8%AF%AD%E8%A8%80%E5%A4%84%E7%90%86/1.htm">自然语言处理</a><a class="tag" taget="_blank" href="/search/%E5%88%86%E5%B8%83%E5%BC%8F/1.htm">分布式</a><a class="tag" taget="_blank" href="/search/%E8%AF%AD%E8%A8%80%E6%A8%A1%E5%9E%8B/1.htm">语言模型</a><a class="tag" taget="_blank" href="/search/transformer/1.htm">transformer</a>
                        <div>文章目录引言1.大型语言模型(LLM)概述1.1Transformer架构1.2预训练与微调2.文本生成基础2.1无条件生成2.2条件生成3.风格迁移3.1风格迁移的基本原理3.2使用Python实现风格迁移4.内容控制4.1内容控制的基本原理4.2使用Python实现内容控制5.高级技巧与优化5.1多轮对话生成5.2生成参数优化6.应用场景与未来展望结论引言随着自然语言处理(NLP)技术的快速发</div>
                    </li>
                    <li><a href="/article/1881040992753217536.htm"
                           title="VM-UNet: 基于Vision Mamba UNet的医学图像分割项目推荐" target="_blank">VM-UNet: 基于Vision Mamba UNet的医学图像分割项目推荐</a>
                        <span class="text-muted">翟洁英</span>

                        <div>VM-UNet:基于VisionMambaUNet的医学图像分割项目推荐VM-UNet项目地址:https://gitcode.com/gh_mirrors/vm/VM-UNet1.项目基础介绍和主要编程语言VM-UNet是一个基于VisionMambaUNet架构的开源项目,专门用于医学图像分割。该项目的主要编程语言是Python。VM-UNet结合了状态空间模型(StateSpaceModel</div>
                    </li>
                    <li><a href="/article/1881038974114394112.htm"
                           title="JavaScript 操作符与表达式" target="_blank">JavaScript 操作符与表达式</a>
                        <span class="text-muted">布兰妮甜</span>
<a class="tag" taget="_blank" href="/search/%23/1.htm">#</a><a class="tag" taget="_blank" href="/search/JavaScript/1.htm">JavaScript</a><a class="tag" taget="_blank" href="/search/%E5%9F%BA%E7%A1%80/1.htm">基础</a><a class="tag" taget="_blank" href="/search/javascript/1.htm">javascript</a><a class="tag" taget="_blank" href="/search/%E6%93%8D%E4%BD%9C%E7%AC%A6/1.htm">操作符</a><a class="tag" taget="_blank" href="/search/%E8%A1%A8%E8%BE%BE%E5%BC%8F/1.htm">表达式</a><a class="tag" taget="_blank" href="/search/%E7%AE%AD%E5%A4%B4%E5%87%BD%E6%95%B0/1.htm">箭头函数</a><a class="tag" taget="_blank" href="/search/%E5%89%8D%E7%AB%AF%E5%BC%80%E5%8F%91/1.htm">前端开发</a>
                        <div>Hi,我是布兰妮甜,编写流畅、愉悦用户体验的程序员。JavaScript是一种功能强大且灵活的编程语言,广泛应用于前端和后端开发。它提供了一系列丰富的操作符和表达式来处理数据、执行逻辑判断以及控制程序流程。理解这些概念对于编写高效、可读性强的代码至关重要。下面将详细探讨JavaScript中的操作符与表达式。文章目录一、操作符(Operators)二、表达式(Expressions)三、总结一、操</div>
                    </li>
                    <li><a href="/article/1881034435181211648.htm"
                           title="保留字-python" target="_blank">保留字-python</a>
                        <span class="text-muted">殇在山风</span>
<a class="tag" taget="_blank" href="/search/python/1.htm">python</a><a class="tag" taget="_blank" href="/search/%E7%A8%8B%E5%BA%8F%E5%91%98%E5%88%9B%E5%AF%8C/1.htm">程序员创富</a><a class="tag" taget="_blank" href="/search/%E5%AD%A6%E4%B9%A0%E6%96%B9%E6%B3%95/1.htm">学习方法</a>
                        <div>保留字也称为关键字,是指被编程语言内部定义并保留使用的标识符python.x有35个保留字,如下and,as,await,break,class,continue,def,del,elif,else,except,False,finally,global,if,import,in,is,lambda,None,nonlocal,not,or,pass,raise,return,True,try,w</div>
                    </li>
                    <li><a href="/article/1881033930002460672.htm"
                           title="MYSQL数据库(二)" target="_blank">MYSQL数据库(二)</a>
                        <span class="text-muted">python小桦</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/mysql/1.htm">mysql</a><a class="tag" taget="_blank" href="/search/oracle/1.htm">oracle</a>
                        <div>SQL分类:分类全称解释DDLDataDefinitionLanguage数据定义语言,用来定义数据库对象(数据库,表,字段)DMLDataManipulationLanguage数据操作语言,用来对数据库表中的数据进行增删改DQLDataQueryLanguage数据查询语言,用来查询数据库中表的记录DCLDataControlLanguage数据控制语言,用来创建数据库用户,控制数据库的访问权</div>
                    </li>
                    <li><a href="/article/1881032543839514624.htm"
                           title="PL/SQL语言的文件操作" target="_blank">PL/SQL语言的文件操作</a>
                        <span class="text-muted">云端 架构师</span>
<a class="tag" taget="_blank" href="/search/%E5%8C%85%E7%BD%97%E4%B8%87%E8%B1%A1/1.htm">包罗万象</a><a class="tag" taget="_blank" href="/search/golang/1.htm">golang</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%90%8E%E7%AB%AF/1.htm">后端</a>
                        <div>PL/SQL语言的文件操作引言PL/SQL(ProceduralLanguage/SQL)是Oracle数据库提供的一种过程化编程语言,它结合了SQL的强大数据处理能力和过程性编程的灵活性。PL/SQL不仅可以用于数据库的操作和处理用户输入的数据,还可以进行丰富的文件操作。随着数据量的增加和信息处理需求的提高,掌握PL/SQL中的文件操作技术,对于数据库管理员和开发人员而言,显得尤为重要。本文将对</div>
                    </li>
                    <li><a href="/article/1881030272779087872.htm"
                           title="【LGR-196-Div.4】洛谷入门赛 #26 题A - H 详细题解--优化思路简洁代码(C++,Python语言描述)" target="_blank">【LGR-196-Div.4】洛谷入门赛 #26 题A - H 详细题解--优化思路简洁代码(C++,Python语言描述)</a>
                        <span class="text-muted">多思考少编码</span>
<a class="tag" taget="_blank" href="/search/%E6%B4%9B%E8%B0%B7%E5%85%A5%E9%97%A8%E8%B5%9B%E9%A2%98%E8%A7%A3/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/c%2B%2B/1.htm">c++</a><a class="tag" taget="_blank" href="/search/python/1.htm">python</a><a class="tag" taget="_blank" href="/search/%E5%BC%80%E5%8F%91%E8%AF%AD%E8%A8%80/1.htm">开发语言</a>
                        <div>前言:觉得这个比赛很有意思的,都是暴力题,涉及一些细节,难度比较适合刚学编程语言的,可以很好的锻炼基础还有手速,最后两题也是比较有意思,之后也准备更新atc的比赛题解和洛谷的一些高质量比赛题解(算法网瘾就是想参加各种比赛)如果觉得有帮助,或者觉得我写的好,可以点个赞或关注,也可以看看我的一些其他文章,我之后也会更新一些基础算法详细解释比赛链接:【LGR-196-Div.4】洛谷入门赛#26-洛谷|</div>
                    </li>
                    <li><a href="/article/1881024475588259840.htm"
                           title="SCALA学习手册.pdf(JasonSwartz)" target="_blank">SCALA学习手册.pdf(JasonSwartz)</a>
                        <span class="text-muted">zxfxghfd</span>
<a class="tag" taget="_blank" href="/search/scala/1.htm">scala</a><a class="tag" taget="_blank" href="/search/%E5%AD%A6%E4%B9%A0/1.htm">学习</a><a class="tag" taget="_blank" href="/search/pdf/1.htm">pdf</a>
                        <div>书:python33com(<----web)Scala概述:“Scala是‘可扩展语言’(SCAlableLanguage)的缩写,于2003年创建,为JVM平台上的函数式编程以及面向对象编程提供一个高性能开发环境。”值与变量:“值(val)是不可变、有类型的存储单元;变量(var)是可变、有类型的存储单元。”数据类型与转换:“Scala支持多种数据类型,包括Byte、Short、Int、Lon</div>
                    </li>
                                <li><a href="/article/14.htm"
                                       title="Spring4.1新特性——综述" target="_blank">Spring4.1新特性——综述</a>
                                    <span class="text-muted">jinnianshilongnian</span>
<a class="tag" taget="_blank" href="/search/spring+4.1/1.htm">spring 4.1</a>
                                    <div>目录 
Spring4.1新特性——综述 
Spring4.1新特性——Spring核心部分及其他 
Spring4.1新特性——Spring缓存框架增强 
Spring4.1新特性——异步调用和事件机制的异常处理 
Spring4.1新特性——数据库集成测试脚本初始化 
Spring4.1新特性——Spring MVC增强 
Spring4.1新特性——页面自动化测试框架Spring MVC T</div>
                                </li>
                                <li><a href="/article/141.htm"
                                       title="Schema与数据类型优化" target="_blank">Schema与数据类型优化</a>
                                    <span class="text-muted">annan211</span>
<a class="tag" taget="_blank" href="/search/%E6%95%B0%E6%8D%AE%E7%BB%93%E6%9E%84/1.htm">数据结构</a><a class="tag" taget="_blank" href="/search/mysql/1.htm">mysql</a>
                                    <div>

目前商城的数据库设计真是一塌糊涂,表堆叠让人不忍直视,无脑的架构师,说了也不听。
在数据库设计之初,就应该仔细揣摩可能会有哪些查询,有没有更复杂的查询,而不是仅仅突出
很表面的业务需求,这样做会让你的数据库性能成倍提高,当然,丑陋的架构师是不会这样去考虑问题的。

选择优化的数据类型
 1 更小的通常更好
   更小的数据类型通常更快,因为他们占用更少的磁盘、内存和cpu缓存,</div>
                                </li>
                                <li><a href="/article/268.htm"
                                       title="第一节 HTML概要学习" target="_blank">第一节 HTML概要学习</a>
                                    <span class="text-muted">chenke</span>
<a class="tag" taget="_blank" href="/search/html/1.htm">html</a><a class="tag" taget="_blank" href="/search/Web/1.htm">Web</a><a class="tag" taget="_blank" href="/search/css/1.htm">css</a>
                                    <div>第一节 HTML概要学习 
 
1. 什么是HTML 
 
HTML是英文Hyper Text Mark-up Language(超文本标记语言)的缩写,它规定了自己的语法规则,用来表示比“文本”更丰富的意义,比如图片,表格,链接等。浏览器(IE,FireFox等)软件知道HTML语言的语法,可以用来查看HTML文档。目前互联网上的绝大部分网页都是使用HTML编写的。 
 
打开记事本 输入一下内</div>
                                </li>
                                <li><a href="/article/395.htm"
                                       title="MyEclipse里部分习惯的更改" target="_blank">MyEclipse里部分习惯的更改</a>
                                    <span class="text-muted">Array_06</span>
<a class="tag" taget="_blank" href="/search/eclipse/1.htm">eclipse</a>
                                    <div>继续补充中---------------------- 
 
 
 
1.更改自己合适快捷键windows-->prefences-->java-->editor-->Content Assist--> 
     Activation triggers for java的右侧“.”就可以改变常用的快捷键 
 
选中 Text </div>
                                </li>
                                <li><a href="/article/522.htm"
                                       title="近一个月的面试总结" target="_blank">近一个月的面试总结</a>
                                    <span class="text-muted">cugfy</span>
<a class="tag" taget="_blank" href="/search/%E9%9D%A2%E8%AF%95/1.htm">面试</a>
                                    <div>本文是在学习中的总结,欢迎转载但请注明出处:http://blog.csdn.net/pistolove/article/details/46753275 
 
 
前言 
      打算换个工作,近一个月面试了不少的公司,下面将一些面试经验和思考分享给大家。另外校招也快要开始了,为在校的学生提供一些经验供参考,希望都能找到满意的工作。 </div>
                                </li>
                                <li><a href="/article/649.htm"
                                       title="HTML5一个小迷宫游戏" target="_blank">HTML5一个小迷宫游戏</a>
                                    <span class="text-muted">357029540</span>
<a class="tag" taget="_blank" href="/search/html5/1.htm">html5</a>
                                    <div>     通过《HTML5游戏开发》摘抄了一个小迷宫游戏,感觉还不错,可以画画,写字,把摘抄的代码放上来分享下,喜欢的同学可以拿来玩玩! 
 
<html> 
 <head> 
 <title>创建运行迷宫</title> 
 <script type="text/javascript"</div>
                                </li>
                                <li><a href="/article/776.htm"
                                       title="10步教你上传githib数据" target="_blank">10步教你上传githib数据</a>
                                    <span class="text-muted">张亚雄</span>
<a class="tag" taget="_blank" href="/search/git/1.htm">git</a>
                                    <div>官方的教学还有其他博客里教的都是给懂的人说得,对已我们这样对我大菜鸟只能这么来锻炼,下面先不玩什么深奥的,先暂时用着10步干净利索。等玩顺溜了再用其他的方法。 
操作过程(查看本目录下有哪些文件NO.1)ls 
(跳转到子目录NO.2)cd+空格+目录 
(继续NO.3)ls 
(匹配到子目录NO.4)cd+ 目录首写字母+tab键+(首写字母“直到你所用文件根就不再按TAB键了”) 
(查看文件</div>
                                </li>
                                <li><a href="/article/903.htm"
                                       title="MongoDB常用操作命令大全" target="_blank">MongoDB常用操作命令大全</a>
                                    <span class="text-muted">adminjun</span>
<a class="tag" taget="_blank" href="/search/mongodb/1.htm">mongodb</a><a class="tag" taget="_blank" href="/search/%E6%93%8D%E4%BD%9C%E5%91%BD%E4%BB%A4/1.htm">操作命令</a>
                                    <div>成功启动MongoDB后,再打开一个命令行窗口输入mongo,就可以进行数据库的一些操作。输入help可以看到基本操作命令,只是MongoDB没有创建数据库的命令,但有类似的命令   如:如果你想创建一个“myTest”的数据库,先运行use myTest命令,之后就做一些操作(如:db.createCollection('user')),这样就可以创建一个名叫“myTest”的数据库。   
一</div>
                                </li>
                                <li><a href="/article/1030.htm"
                                       title="bat调用jar包并传入多个参数" target="_blank">bat调用jar包并传入多个参数</a>
                                    <span class="text-muted">aijuans</span>

                                    <div>下面的主程序是通过eclipse写的: 
1.在Main函数接收bat文件传递的参数(String[] args) 
 如:   String ip =args[0];          String user=args[1];       &nbs</div>
                                </li>
                                <li><a href="/article/1157.htm"
                                       title="Java中对类的主动引用和被动引用" target="_blank">Java中对类的主动引用和被动引用</a>
                                    <span class="text-muted">ayaoxinchao</span>
<a class="tag" taget="_blank" href="/search/java/1.htm">java</a><a class="tag" taget="_blank" href="/search/%E4%B8%BB%E5%8A%A8%E5%BC%95%E7%94%A8/1.htm">主动引用</a><a class="tag" taget="_blank" href="/search/%E5%AF%B9%E7%B1%BB%E7%9A%84%E5%BC%95%E7%94%A8/1.htm">对类的引用</a><a class="tag" taget="_blank" href="/search/%E8%A2%AB%E5%8A%A8%E5%BC%95%E7%94%A8/1.htm">被动引用</a><a class="tag" taget="_blank" href="/search/%E7%B1%BB%E5%88%9D%E5%A7%8B%E5%8C%96/1.htm">类初始化</a>
                                    <div>  
在Java代码中,有些类看上去初始化了,但其实没有。例如定义一定长度某一类型的数组,看上去数组中所有的元素已经被初始化,实际上一个都没有。对于类的初始化,虚拟机规范严格规定了只有对该类进行主动引用时,才会触发。而除此之外的所有引用方式称之为对类的被动引用,不会触发类的初始化。虚拟机规范严格地规定了有且仅有四种情况是对类的主动引用,即必须立即对类进行初始化。四种情况如下:1.遇到ne</div>
                                </li>
                                <li><a href="/article/1284.htm"
                                       title="导出数据库 提示 outfile disabled" target="_blank">导出数据库 提示 outfile disabled</a>
                                    <span class="text-muted">BigBird2012</span>
<a class="tag" taget="_blank" href="/search/mysql/1.htm">mysql</a>
                                    <div>在windows控制台下,登陆mysql,备份数据库: 
  
mysql>mysqldump -u root -p test test > D:\test.sql 
使用命令 mysqldump 格式如下: mysqldump -u root -p *** DBNAME > E:\\test.sql。 
注意:执行该命令的时候不要进入mysql的控制台再使用,这样会报</div>
                                </li>
                                <li><a href="/article/1411.htm"
                                       title="Javascript 中的 && 和 ||" target="_blank">Javascript 中的 && 和 ||</a>
                                    <span class="text-muted">bijian1013</span>
<a class="tag" taget="_blank" href="/search/JavaScript/1.htm">JavaScript</a><a class="tag" taget="_blank" href="/search/%26%26/1.htm">&&</a><a class="tag" taget="_blank" href="/search/%7C%7C/1.htm">||</a>
                                    <div>        准备两个对象用于下面的讨论 
var alice = {
    name: "alice",
    toString: function () {
        return this.name;
    }
}
var smith = {
    name: "smith",
 </div>
                                </li>
                                <li><a href="/article/1538.htm"
                                       title="[Zookeeper学习笔记之四]Zookeeper Client Library会话重建" target="_blank">[Zookeeper学习笔记之四]Zookeeper Client Library会话重建</a>
                                    <span class="text-muted">bit1129</span>
<a class="tag" taget="_blank" href="/search/zookeeper/1.htm">zookeeper</a>
                                    <div>为了说明问题,先来看个简单的示例代码: 
  
package com.tom.zookeeper.book;

import com.tom.Host;
import org.apache.zookeeper.WatchedEvent;
import org.apache.zookeeper.ZooKeeper;
import org.apache.zookeeper.Wat</div>
                                </li>
                                <li><a href="/article/1665.htm"
                                       title="【Scala十一】Scala核心五:case模式匹配" target="_blank">【Scala十一】Scala核心五:case模式匹配</a>
                                    <span class="text-muted">bit1129</span>
<a class="tag" taget="_blank" href="/search/scala/1.htm">scala</a>
                                    <div>package spark.examples.scala.grammars.caseclasses

object CaseClass_Test00 {

  def simpleMatch(arg: Any) = arg match {
    case v: Int => "This is an Int"
    case v: (Int, String)</div>
                                </li>
                                <li><a href="/article/1792.htm"
                                       title="运维的一些面试题" target="_blank">运维的一些面试题</a>
                                    <span class="text-muted">yuxianhua</span>
<a class="tag" taget="_blank" href="/search/linux/1.htm">linux</a>
                                    <div>1、Linux挂载Winodws共享文件夹 
  
mount -t cifs //1.1.1.254/ok /var/tmp/share/ -o username=administrator,password=yourpass
或
mount -t cifs -o username=xxx,password=xxxx //1.1.1.1/a /win 
  
 </div>
                                </li>
                                <li><a href="/article/1919.htm"
                                       title="Java lang包-Boolean" target="_blank">Java lang包-Boolean</a>
                                    <span class="text-muted">BrokenDreams</span>
<a class="tag" taget="_blank" href="/search/boolean/1.htm">boolean</a>
                                    <div>         Boolean类是Java中基本类型boolean的包装类。这个类比较简单,直接看源代码吧。 
 

public final class Boolean implements java.io.Serializable,
                                      </div>
                                </li>
                                <li><a href="/article/2046.htm"
                                       title="读《研磨设计模式》-代码笔记-命令模式-Command" target="_blank">读《研磨设计模式》-代码笔记-命令模式-Command</a>
                                    <span class="text-muted">bylijinnan</span>
<a class="tag" taget="_blank" href="/search/java/1.htm">java</a><a class="tag" taget="_blank" href="/search/%E8%AE%BE%E8%AE%A1%E6%A8%A1%E5%BC%8F/1.htm">设计模式</a>
                                    <div>声明: 本文只为方便我个人查阅和理解,详细的分析以及源代码请移步 原作者的博客http://chjavach.iteye.com/ 
 
 


import java.util.ArrayList;
import java.util.Collection;
import java.util.List;

/**
 * GOF 在《设计模式》一书中阐述命令模式的意图:“将一个请求封装</div>
                                </li>
                                <li><a href="/article/2173.htm"
                                       title="matlab下GPU编程笔记" target="_blank">matlab下GPU编程笔记</a>
                                    <span class="text-muted">cherishLC</span>
<a class="tag" taget="_blank" href="/search/matlab/1.htm">matlab</a>
                                    <div>不多说,直接上代码 
 
gpuDevice   %   查看系统中的gpu,,其中的DeviceSupported会给出matlab支持的GPU个数。
g=gpuDevice(1);    %会清空 GPU 1中的所有数据,,将GPU1 设为当前GPU
reset(g)  %也可以清空GPU中数据。

a=1;
a=gpuArray(a);    %将a从CPU移到GPU中
onGP</div>
                                </li>
                                <li><a href="/article/2300.htm"
                                       title="SVN安装过程" target="_blank">SVN安装过程</a>
                                    <span class="text-muted">crabdave</span>
<a class="tag" taget="_blank" href="/search/SVN/1.htm">SVN</a>
                                    <div>SVN安装过程 
  
subversion-1.6.12 
  
./configure --prefix=/usr/local/subversion --with-apxs=/usr/local/apache2/bin/apxs --with-apr=/usr/local/apr --with-apr-util=/usr/local/apr --with-openssl=/</div>
                                </li>
                                <li><a href="/article/2427.htm"
                                       title="sql 行列转换" target="_blank">sql 行列转换</a>
                                    <span class="text-muted">daizj</span>
<a class="tag" taget="_blank" href="/search/sql/1.htm">sql</a><a class="tag" taget="_blank" href="/search/%E8%A1%8C%E5%88%97%E8%BD%AC%E6%8D%A2/1.htm">行列转换</a><a class="tag" taget="_blank" href="/search/%E8%A1%8C%E8%BD%AC%E5%88%97/1.htm">行转列</a><a class="tag" taget="_blank" href="/search/%E5%88%97%E8%BD%AC%E8%A1%8C/1.htm">列转行</a>
                                    <div>行转列的思想是通过case when 来实现 
列转行的思想是通过union all 来实现 
 
下面具体例子: 
 
假设有张学生成绩表(tb)如下: 
Name Subject Result 
张三 语文  74 
张三 数学  83 
张三 物理  93 
李四 语文  74 
李四 数学  84 
李四 物理  94 
*/ 
/* 
想变成 
姓名   &</div>
                                </li>
                                <li><a href="/article/2554.htm"
                                       title="MySQL--主从配置" target="_blank">MySQL--主从配置</a>
                                    <span class="text-muted">dcj3sjt126com</span>
<a class="tag" taget="_blank" href="/search/mysql/1.htm">mysql</a>
                                    <div>   linux下的mysql主从配置:   说明:由于MySQL不同版本之间的(二进制日志)binlog格式可能会不一样,因此最好的搭配组合是Master的MySQL版本和Slave的版本相同或者更低,   Master的版本肯定不能高于Slave版本。(版本向下兼容)   
   mysql1  : 192.168.100.1    //master   mysq</div>
                                </li>
                                <li><a href="/article/2681.htm"
                                       title="关于yii 数据库添加新字段之后model类的修改" target="_blank">关于yii 数据库添加新字段之后model类的修改</a>
                                    <span class="text-muted">dcj3sjt126com</span>
<a class="tag" taget="_blank" href="/search/Model/1.htm">Model</a>
                                    <div>rules: 
array('新字段','safe','on'=>'search') 
1、array('新字段', 'safe')//这个如果是要用户输入的话,要加一下, 
2、array('新字段', 'numerical'),//如果是数字的话 
3、array('新字段', 'length', 'max'=>100),//如果是文本 
1、2、3适当的最少要加一条,新字段才会被</div>
                                </li>
                                <li><a href="/article/2808.htm"
                                       title="sublime text3 中文乱码解决" target="_blank">sublime text3 中文乱码解决</a>
                                    <span class="text-muted">dyy_gusi</span>
<a class="tag" taget="_blank" href="/search/Sublime+Text/1.htm">Sublime Text</a>
                                    <div>sublime text3中文乱码解决 
原因:缺少转换为UTF-8的插件 
目的:安装ConvertToUTF8插件包 
第一步:安装能自动安装插件的插件,百度“Codecs33”,然后按照步骤可以得到以下一段代码: 
import urllib.request,os,hashlib; h = 'eb2297e1a458f27d836c04bb0cbaf282' + 'd0e7a30980927</div>
                                </li>
                                <li><a href="/article/2935.htm"
                                       title="概念了解:CGI,FastCGI,PHP-CGI与PHP-FPM" target="_blank">概念了解:CGI,FastCGI,PHP-CGI与PHP-FPM</a>
                                    <span class="text-muted">geeksun</span>
<a class="tag" taget="_blank" href="/search/PHP/1.htm">PHP</a>
                                    <div>CGI 
CGI全称是“公共网关接口”(Common Gateway Interface),HTTP服务器与你的或其它机器上的程序进行“交谈”的一种工具,其程序须运行在网络服务器上。 
CGI可以用任何一种语言编写,只要这种语言具有标准输入、输出和环境变量。如php,perl,tcl等。 FastCGI 
FastCGI像是一个常驻(long-live)型的CGI,它可以一直执行着,只要激活后,不</div>
                                </li>
                                <li><a href="/article/3062.htm"
                                       title="Git push 报错 "error: failed to push some refs to " 解决" target="_blank">Git push 报错 "error: failed to push some refs to " 解决</a>
                                    <span class="text-muted">hongtoushizi</span>
<a class="tag" taget="_blank" href="/search/git/1.htm">git</a>
                                    <div>Git push 报错 "error: failed to push some refs to " . 
此问题出现的原因是:由于远程仓库中代码版本与本地不一致冲突导致的。 
由于我在第一次git pull --rebase 代码后,准备push的时候,有别人往线上又提交了代码。所以出现此问题。 
解决方案: 
1: git pull    
2:</div>
                                </li>
                                <li><a href="/article/3189.htm"
                                       title="第四章 Lua模块开发" target="_blank">第四章 Lua模块开发</a>
                                    <span class="text-muted">jinnianshilongnian</span>
<a class="tag" taget="_blank" href="/search/nginx/1.htm">nginx</a><a class="tag" taget="_blank" href="/search/lua/1.htm">lua</a>
                                    <div>在实际开发中,不可能把所有代码写到一个大而全的lua文件中,需要进行分模块开发;而且模块化是高性能Lua应用的关键。使用require第一次导入模块后,所有Nginx 进程全局共享模块的数据和代码,每个Worker进程需要时会得到此模块的一个副本(Copy-On-Write),即模块可以认为是每Worker进程共享而不是每Nginx Server共享;另外注意之前我们使用init_by_lua中初</div>
                                </li>
                                <li><a href="/article/3316.htm"
                                       title="java.lang.reflect.Proxy" target="_blank">java.lang.reflect.Proxy</a>
                                    <span class="text-muted">liyonghui160com</span>

                                    <div>  
1.简介 
  
Proxy 提供用于创建动态代理类和实例的静态方法 
(1)动态代理类的属性 
 
 代理类是公共的、最终的,而不是抽象的 
 未指定代理类的非限定名称。但是,以字符串 "$Proxy" 开头的类名空间应该为代理类保留 
 代理类扩展 java.lang.reflect.Proxy  
 代理类会按同一顺序准确地实现其创建时指定的接口</div>
                                </li>
                                <li><a href="/article/3443.htm"
                                       title="Java中getResourceAsStream的用法" target="_blank">Java中getResourceAsStream的用法</a>
                                    <span class="text-muted">pda158</span>
<a class="tag" taget="_blank" href="/search/java/1.htm">java</a>
                                    <div>1.Java中的getResourceAsStream有以下几种: 1. Class.getResourceAsStream(String path) : path 不以’/'开头时默认是从此类所在的包下取资源,以’/'开头则是从ClassPath根下获取。其只是通过path构造一个绝对路径,最终还是由ClassLoader获取资源。     2. Class.getClassLoader.get</div>
                                </li>
                                <li><a href="/article/3570.htm"
                                       title="spring 包官方下载地址(非maven)" target="_blank">spring 包官方下载地址(非maven)</a>
                                    <span class="text-muted">sinnk</span>
<a class="tag" taget="_blank" href="/search/spring/1.htm">spring</a>
                                    <div>SPRING官方网站改版后,建议都是通过 Maven和Gradle下载,对不使用Maven和Gradle开发项目的,下载就非常麻烦,下给出Spring Framework jar官方直接下载路径: 
  
 http://repo.springsource.org/libs-release-local/org/springframework/spring/ 
  
s</div>
                                </li>
                                <li><a href="/article/3697.htm"
                                       title="Oracle学习笔记(7) 开发PLSQL子程序和包" target="_blank">Oracle学习笔记(7) 开发PLSQL子程序和包</a>
                                    <span class="text-muted">vipbooks</span>
<a class="tag" taget="_blank" href="/search/oracle/1.htm">oracle</a><a class="tag" taget="_blank" href="/search/sql/1.htm">sql</a><a class="tag" taget="_blank" href="/search/%E7%BC%96%E7%A8%8B/1.htm">编程</a>
                                    <div>    哈哈,清明节放假回去了一下,真是太好了,回家的感觉真好啊!现在又开始出差之旅了,又好久没有来了,今天继续Oracle的学习! 
     这是第七章的学习笔记,学习完第六章的动态SQL之后,开始要学习子程序和包的使用了……,希望大家能多给俺一些支持啊! 
    编程时使用的工具是PLSQL</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>