2018-01-16创建人:Ruo_Xiao开发环境:VS2010一、源代码#include"stdafx.h"#includeusingnamespacestd;int_tmain(intargc,_TCHAR*argv[]){boolisOK1=true;_BoolisOK2=false;BOOLisOK3=TRUE;cout<<"sizeof(bool)="<
DYCom多平台聊天室Sample
内Cool超人
聊天平台silverlightmobilewindows2010
本示例演示了如何通过DYcom开发一个多平台的简单聊天室。本演示包括了一个silverlight客户端,一个Win客户端和一个windowMobile客户端。以下是应用截图:登陆后可从本文下载源代码。运行本示例前请先确定连接ip地址与你本机的地址一致。本示例两含两个项目。一个项目使用vs2010篇写,另一个windowsmobile项目使用的是vs2008篇写,请各位注意。谢谢。欢迎您参与更多关于
codefirst连接mysql_codefirst 连接数据库
每天痛苦与更好的
EFCodeFirst初体验原文:EFCodeFirst初体验CodeFirst顾名思义就是先代码,再由代码生成数据库的开发方式。废话不多说,直接来一发看看:在VS2010里新建一个空白解决方案,再依次添加两个类库项目:Model、DataAccess和一个控制台项目BreakAwayConsole。分别是实体...文章杰克.陈2014-02-25884浏览量EntityFramework5.0系
Learning hard C#学习笔记 孤军深入
GarfieldEr007
C#C#学习笔记
第2章来点C#的感觉在介绍C#语言的基本特性之前,让我们来点C#的感觉,通过亲手创建一个简单的控制台程序,叩开C#的大门!控制台应用程序没有图形化的界面,它类似于Windows操作系统中的命令行窗口。2.1开发环境的搭建用C#语言开发应用程序,首先要搭建好相应的开发环境。学过C语言的人都知道,TurboC是C语言的开发工具,而VisualStudio2010(简称VS2010)或者VisualSt
Windows Update检查更新时提示错误
Jelly-小丑鱼
windowswindows更新
我为什么要进行windows更新呢,是因为我要安装VS2010,没有更新就安装不了VS2010,其实如果不是必须要更新的,建议不用更新。WindowsUpdate检查更新时提示错误:【WindowsUpdate当前无法检查更新,因为未运行服务。你可能需要重新启动计算机。】如图所示怎样解决WindowsUpdate当前无法检查更新的问题方法/步骤1、依次单击【开始】——【所有程序】——【附件】——【
Vscode移植到VS2010遇到的问题C++
饿了就去喝水
c++开发语言visualstudiovscode
如果在vscode能运行,就是C++版本的问题,VS2010仅支持部分C++11及以上的功能,仍然有一小部分不支持,但是他的警告信息和错误信息又很不明显,所以花了很多时间纠错。总结:看这三种for循环for(constProduct&product:products){ if(product.type==TYPE_A){ sumA+=product.price; coun
Gnuplot安装与配置
饿了就去喝水
c++visualstudio编辑器
安装默认选项,下一步配置环境变量找到系统环境变量,找到PATH新建浏览将bin目录加进去如图再按win+R,输入cmd打开终端,输入gnuplot,如果提示以下信息就可以绘图如果要在VisualStudio中结合代码使用,需要把gunplot的安装包的c文件复制到VS的路径或者添加到头文件内(在属性配置),vscode同理。注意:仅C++11及以上版本支持!如果是vs2010建议升级编译器
GraphicsMagick 的 OpenCL 开发记录(二十五)
遍地是牛
GraphicsMagick的OpenCL开发GraphicsMagickImageMagickOpenCLc++windows
文章目录如何修复`R6025purevirtualfunctioncall`问题如何修复R6025purevirtualfunctioncall问题运气好,修复了这个问题。即,在ExitInstance()函数中调用一下MagickLib::DestroyMagick();即可。过程中也经历了尝试vs2010编译,尝试更换电脑环境等,均没有找到原因,同时我也在怀疑会不会是IMDisplay.exe
【C#】简单窗体程序,判断是否闰年,禁止窗体调整大小,关闭窗体前的判断
yongh701
C#C#窗体WinForm事件闰年
利用VS2010的C#.NET能够很简单创建一个窗体。同时可以很轻松地为这个窗体布局,添加事件,下面用一个简单的窗体程序,判断是否闰年,来说明这个问题。同时加一个关闭事件,在用户关闭窗体之前弹出对话框询问用户是否关闭此窗体?如下图:具体做法如下。1、打开VS2010之后,文件->新建->项目->选择其它语言中的->VisualC#->Windows->Windows窗体应用程序在最下方命名此项目的
Windows平台vs2010编译OpenSSL1.1.1
pony12
OpenDDS拓展开发指南OpenSSL1.1.1VC-WIN32libcrypto-1_1libssl-1_1.dllOpenDDS入门
OpenSSL1.1.1下载,https://www.openssl.org/source/old/1.1.1/openssl-1.1.1.tar.gz或https://www.openssl.org/source/openssl-1.1.1m.tar.gz,解压到E:\openssl-1.1.1l或E:\openssl-1.1.1m目录。(一)编译OpenSSL1.1.1x的前提准备条件:1)安
VC++ VS2010 MFC 配合串口控件MSCOMM 复选框CheckBox 下拉ComboBox来选择打开串口端口
jomoly
MFCMSCOMM复选框CheckBox下拉ComboBox打开串口端口
习惯性把例程放在评论一楼。关于串口的定义,声明和初始化,详见前几天贴的《VC++MFCMSCOMMVS2010手把手学会串口收发含例程》http://blog.csdn.net/jomoly/article/details/55046738多说两句,在VS2010中,使用MSComm控件,要注意:1)在资源视图右键->插入ACTIVEX控件:2)类向导-添加类-ActiveX控件中的MFC类;3)
VC++ VS2010 MFC配合串口控件MSCOMM 的实际应用 - 打码机上位机软件 Demo 含例程
jomoly
VC++VS2010串口控件MSCOMM打码机上位机例程
老习惯,例程在一楼.所谓打码机,其实就是一个输入设备,每次输入特定格式的一个字符串,并用显而易见的开头结尾标记来让上位机识别,从而实现输入输出的自动化。从这个角度讲,其实打码机的上位机软件,与其他串口助手一类的工具,只是多了一个对于字符串的分解分析和重新组合的过程。所谓Demo,就是说与实际的生产工具,还是有一定区别的,比如例程内,对于单个字串结束的字符的标记是连续两个‘1’,而生产中常用的是‘\
VC++ VS2010 MFC CString 追加append 写入文件 txt 捕捉键盘按键消息
jomoly
VC++VS2010MFC键盘按键写入文件
老规矩,例程在评论的一楼。如果键盘消息(以及HID键盘设备)的字符源源不断的涌来,那么单纯的把字符发到界面中是不够的,而且有些项目中,并不需要我们看到输入本身,只需要把相关的数据保存起来。这样,如何把输入字符进行一定的格式处理,并进一步保存在文件中就有意义了。每一个按键消息,都对应到虚拟按键表格中的一个键值,那么可以通过判断键值,利用WINDOWS的消息系统的WM_KEYDOWN消息,来实现字符的
VC++ MFC MSCOMM VS2010 手把手学会串口收发 含例程
jomoly
VC++VS2010MSCOMM手把手例程
老习惯,例程链接放在评论一楼。大部分情况下(毕设,实验室常用设备或传感器的上位机编程,工厂打码机/喷码机上位机编程,自己学习做串口助手的demo,等等90%情况),用到的都是占用一个端口的异步通讯。而这类工作用MSCOMM控件可以很方便的实现,并且在VS下面可以自己做一些定制的工作。而不少做这类工程的,都不是计算机科班,所以有一份好的教程和跑得通,并且逻辑清楚的完整源码,可以节约大把的时间。以下基
VC++ VS2010对比VC6 串口控件的方法变更
jomoly
VS2010对比VC6串口控件方法变更
这两天整理以往项目代码,正好朋友有个win平台下串口项目需求,不过他对win下面的开发IDE平台和MFC架构都没有概念,于是就开贴对部分demo做了手把手的备注。朋友使用的时候碰到了一些问题,这里梳理一下。也因为MSDN里面没有对VC++下面的CMSCOMM(或者新版本叫IMSCOMM)做出说明,这样有一份可用的相对正确的参考就很重要。1)部分源码是在VC6下面的,用VS2010可以直接兼容打开低
EtherNet/IP开发:JAVA、C#和C++开发源代码
金南瓜工业互联EAP SECS
tcp/ipc#c++
示例使用VS2010开发EtherNet/IP开发语言使用C++为什么选择C++呢?C++开发出来的程序,提供C标准API后,将可以提供给Dlphi、Labview、VB、QT、C#、C\C++、C#、Java等几乎所有编程语言使用。效率问题①在底层我们将采用socket和多线程方式开发,在数据处理方面使用指针为主。②EtherNet/IP在设计之初就是为高效,低延迟而设定③采用最基础的C++标准
使用c#.net实现打地鼠游戏和翻牌游戏
前端搬砖达人
c#.net知识运用c#.net小游戏实现翻牌游戏打地鼠游戏
***本程序通过vs2010建立窗体应用程序,通过控件建立记忆纸牌及打地鼠游戏窗口需求分析:为了用户给用户提供美观的游戏界面,本项目在游戏的开发实践中注重对界面的美观设计,并配有背景音乐,在打地鼠游戏中将指针变为锤子,满足玩家打地鼠的需求。游戏界面图如下***[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-8zuBKBfQ-1698114536747)(https:/
清除 VS 最近使用的项目和解决方案
csdn_now
工程管理
在.txt中,添加脚本,将txt后缀更为.bat。VS2010@echooffcd\@echoon@REGDeleteHKEY_CURRENT_USER\Software\Microsoft\VisualStudio\10.0\FileMRUList/va/f@REGDeleteHKEY_CURRENT_USER\Software\Microsoft\VisualStudio\10.0\Proje
清除VS2015工程不需要的文件
csdn_now
工程管理
以下为.bat文件的代码参考清除VS2010工程不需要的文件_u013719984的博客-CSDN博客echo正在清理VS2015工程中不需要的文件echo开始清理请稍等......@echooffrem清理attrib-s-h-r*opendbdel/s/q*.opendbdel/s/q*.dbdel/s/q.\ipch\*.*rd/s/q.\ipch\del/s/q.\Debug\*.*rd/
openmp matlab,matlab – 为什么在mex文件中的OpenMP只产生1个线程?
立夏之光
openmpmatlab
我是OpenMP的新手.我有以下代码使用配置了MSVS2010的Matlabmex进行编译.计算机有8个处理器(我也使用matlabpool检查过).#include"mex.h"#includetypedefunsignedcharuchar;typedefunsignedintuint;//Takesauint8inputarrayanduint32indexarrayandprealloca
初步了解win32界面库DuiLib
bcbobo21cn
VC++win32界面库duilibdirectUI
DuiLib是一个开源win32界面库;下载地址:https://github.com/duilib/duilib可以做类似一些杀毒软件的界面;效果还是比较好;先下载一个demo看一下;当前开发工具只有VS2010Express版本;打开看一下;DuiLib项目是源码;MFCDemo是示例;VS2010Express不支持MFC,所以有问题,不能运行demo;在解决方案中添加一个win32项目,空
视觉OpenCV-WIN7版本安装配置
老王工控笔记
视觉OpenCV-WIN7版本安装配置开源的OpenCV,有好多版本,最新是2020年12月的4.5.1版本,支持的VS版本最低V14以上,VS2015版本安装在WIN7上好像有点麻烦,所以只能下载个2015年4月的2.4.11版本,支持VS2010版本350M,以下是官方下载链接:https://opencv.org/releases/page/5/1.计算机--属性--高级系统设置--环境变量
多文档 添加菜单栏 工具栏 删除ribbon
密树
VS:vs2010工程类型:mfc多文档officeoffice20071、去掉ribbon在CMainFrame::OnCreate中删除//m_wndRibbonBar.Create(this);//Deletebypsq//m_wndRibbonBar.LoadFromResource(IDR_RIBBON);2、添加菜单栏删除ribbon,有时菜单栏就有了,要显示那个菜单栏在BOOL工程名
C/C++指针错误与调试相关学习总结
bcbobo21cn
VC++c语言指针visualstudio2010调试
使用VS2010调试技巧让C指针无处遁形http://blog.csdn.net/21aspnet/article/details/6723758Linux下调试远没有windows下的VS方便,不管是VC++6还是VS2003,2005,2008,2010,2012.VS2012自动格式化代码Ctrl+K+DVS下调试一定要注意尽量不要用F11,要用F10!不然需要引入库文件,提示的警告信息可以
mfc入门基础(四)对话框添加控件、创建对话框类和为对话框控件添加变量
Littlehero_121
MFC初学mfcc++
参考博客:VS2010/MFC编程入门之七(对话框:为对话框添加控件)-软件开发-鸡啄米VS2010/MFC编程入门之八(对话框:创建对话框类和添加控件变量)-软件开发-鸡啄米基于基础(三)中写的应用程序test02来讲,一、对话框添加控件1、找到资源视图,如下:进行双击2、删除系统给你新建好的静态文本框,找到工具箱,找到StaticText来进行拖动到界面上,实现效果如下:3、选中当前拖动过来的
Java 并发包之线程池和原子计数
lijingyao8206
Java计数ThreadPool并发包java线程池
对于大数据量关联的业务处理逻辑,比较直接的想法就是用JDK提供的并发包去解决多线程情况下的业务数据处理。线程池可以提供很好的管理线程的方式,并且可以提高线程利用率,并发包中的原子计数在多线程的情况下可以让我们避免去写一些同步代码。
这里就先把jdk并发包中的线程池处理器ThreadPoolExecutor 以原子计数类AomicInteger 和倒数计时锁C
java编程思想 抽象类和接口
百合不是茶
java抽象类接口
接口c++对接口和内部类只有简介的支持,但在java中有队这些类的直接支持
1 ,抽象类 : 如果一个类包含一个或多个抽象方法,该类必须限定为抽象类(否者编译器报错)
抽象方法 : 在方法中仅有声明而没有方法体
package com.wj.Interface;
[房地产与大数据]房地产数据挖掘系统
comsci
数据挖掘
随着一个关键核心技术的突破,我们已经是独立自主的开发某些先进模块,但是要完全实现,还需要一定的时间...
所以,除了代码工作以外,我们还需要关心一下非技术领域的事件..比如说房地产
&nb
数组队列总结
沐刃青蛟
数组队列
数组队列是一种大小可以改变,类型没有定死的类似数组的工具。不过与数组相比,它更具有灵活性。因为它不但不用担心越界问题,而且因为泛型(类似c++中模板的东西)的存在而支持各种类型。
以下是数组队列的功能实现代码:
import List.Student;
public class
Oracle存储过程无法编译的解决方法
IT独行者
oracle存储过程
今天同事修改Oracle存储过程又导致2个过程无法被编译,流程规范上的东西,Dave 这里不多说,看看怎么解决问题。
1. 查看无效对象
XEZF@xezf(qs-xezf-db1)> select object_name,object_type,status from all_objects where status='IN
重装系统之后oracle恢复
文强chu
oracle
前几天正在使用电脑,没有暂停oracle的各种服务。
突然win8.1系统奔溃,无法修复,开机时系统 提示正在搜集错误信息,然后再开机,再提示的无限循环中。
无耐我拿出系统u盘 准备重装系统,没想到竟然无法从u盘引导成功。
晚上到外面早了一家修电脑店,让人家给装了个系统,并且那哥们在我没反应过来的时候,
直接把我的c盘给格式化了 并且清理了注册表,再装系统。
然后的结果就是我的oracl
python学习二( 一些基础语法)
小桔子
pthon基础语法
紧接着把!昨天没看继续看django 官方教程,学了下python的基本语法 与c类语言还是有些小差别:
1.ptyhon的源文件以UTF-8编码格式
2.
/ 除 结果浮点型
// 除 结果整形
% 除 取余数
* 乘
** 乘方 eg 5**2 结果是5的2次方25
_&
svn 常用命令
aichenglong
SVN版本回退
1 svn回退版本
1)在window中选择log,根据想要回退的内容,选择revert this version或revert chanages from this version
两者的区别:
revert this version:表示回退到当前版本(该版本后的版本全部作废)
revert chanages from this versio
某小公司面试归来
alafqq
面试
先填单子,还要写笔试题,我以时间为急,拒绝了它。。时间宝贵。
老拿这些对付毕业生的东东来吓唬我。。
面试官很刁难,问了几个问题,记录下;
1,包的范围。。。public,private,protect. --悲剧了
2,hashcode方法和equals方法的区别。谁覆盖谁.结果,他说我说反了。
3,最恶心的一道题,抽象类继承抽象类吗?(察,一般它都是被继承的啊)
4,stru
动态数组的存储速度比较 集合框架
百合不是茶
集合框架
集合框架:
自定义数据结构(增删改查等)
package 数组;
/**
* 创建动态数组
* @author 百合
*
*/
public class ArrayDemo{
//定义一个数组来存放数据
String[] src = new String[0];
/**
* 增加元素加入容器
* @param s要加入容器
用JS实现一个JS对象,对象里有两个属性一个方法
bijian1013
js对象
<html>
<head>
</head>
<body>
用js代码实现一个js对象,对象里有两个属性,一个方法
</body>
<script>
var obj={a:'1234567',b:'bbbbbbbbbb',c:function(x){
探索JUnit4扩展:使用Rule
bijian1013
java单元测试JUnitRule
在上一篇文章中,讨论了使用Runner扩展JUnit4的方式,即直接修改Test Runner的实现(BlockJUnit4ClassRunner)。但这种方法显然不便于灵活地添加或删除扩展功能。下面将使用JUnit4.7才开始引入的扩展方式——Rule来实现相同的扩展功能。
1. Rule
&n
[Gson一]非泛型POJO对象的反序列化
bit1129
POJO
当要将JSON数据串反序列化自身为非泛型的POJO时,使用Gson.fromJson(String, Class)方法。自身为非泛型的POJO的包括两种:
1. POJO对象不包含任何泛型的字段
2. POJO对象包含泛型字段,例如泛型集合或者泛型类
Data类 a.不是泛型类, b.Data中的集合List和Map都是泛型的 c.Data中不包含其它的POJO
 
【Kakfa五】Kafka Producer和Consumer基本使用
bit1129
kafka
0.Kafka服务器的配置
一个Broker,
一个Topic
Topic中只有一个Partition() 1. Producer:
package kafka.examples.producers;
import kafka.producer.KeyedMessage;
import kafka.javaapi.producer.Producer;
impor
lsyncd实时同步搭建指南——取代rsync+inotify
ronin47
1. 几大实时同步工具比较 1.1 inotify + rsync
最近一直在寻求生产服务服务器上的同步替代方案,原先使用的是 inotify + rsync,但随着文件数量的增大到100W+,目录下的文件列表就达20M,在网络状况不佳或者限速的情况下,变更的文件可能10来个才几M,却因此要发送的文件列表就达20M,严重减低的带宽的使用效率以及同步效率;更为要紧的是,加入inotify
java-9. 判断整数序列是不是二元查找树的后序遍历结果
bylijinnan
java
public class IsBinTreePostTraverse{
static boolean isBSTPostOrder(int[] a){
if(a==null){
return false;
}
/*1.只有一个结点时,肯定是查找树
*2.只有两个结点时,肯定是查找树。例如{5,6}对应的BST是 6 {6,5}对应的BST是
MySQL的sum函数返回的类型
bylijinnan
javaspringsqlmysqljdbc
今天项目切换数据库时,出错
访问数据库的代码大概是这样:
String sql = "select sum(number) as sumNumberOfOneDay from tableName";
List<Map> rows = getJdbcTemplate().queryForList(sql);
for (Map row : rows
java设计模式之单例模式
chicony
java设计模式
在阎宏博士的《JAVA与模式》一书中开头是这样描述单例模式的:
作为对象的创建模式,单例模式确保某一个类只有一个实例,而且自行实例化并向整个系统提供这个实例。这个类称为单例类。 单例模式的结构
单例模式的特点:
单例类只能有一个实例。
单例类必须自己创建自己的唯一实例。
单例类必须给所有其他对象提供这一实例。
饿汉式单例类
publ
javascript取当月最后一天
ctrain
JavaScript
<!--javascript取当月最后一天-->
<script language=javascript>
var current = new Date();
var year = current.getYear();
var month = current.getMonth();
showMonthLastDay(year, mont
linux tune2fs命令详解
daizj
linuxtune2fs查看系统文件块信息
一.简介:
tune2fs是调整和查看ext2/ext3文件系统的文件系统参数,Windows下面如果出现意外断电死机情况,下次开机一般都会出现系统自检。Linux系统下面也有文件系统自检,而且是可以通过tune2fs命令,自行定义自检周期及方式。
二.用法:
Usage: tune2fs [-c max_mounts_count] [-e errors_behavior] [-g grou
做有中国特色的程序员
dcj3sjt126com
程序员
从出版业说起 网络作品排到靠前的,都不会太难看,一般人不爱看某部作品也是因为不喜欢这个类型,而此人也不会全不喜欢这些网络作品。究其原因,是因为网络作品都是让人先白看的,看的好了才出了头。而纸质作品就不一定了,排行榜靠前的,有好作品,也有垃圾。 许多大牛都是写了博客,后来出了书。这些书也都不次,可能有人让为不好,是因为技术书不像小说,小说在读故事,技术书是在学知识或温习知识,有
Android:TextView属性大全
dcj3sjt126com
textview
android:autoLink 设置是否当文本为URL链接/email/电话号码/map时,文本显示为可点击的链接。可选值(none/web/email/phone/map/all) android:autoText 如果设置,将自动执行输入值的拼写纠正。此处无效果,在显示输入法并输
tomcat虚拟目录安装及其配置
eksliang
tomcat配置说明tomca部署web应用tomcat虚拟目录安装
转载请出自出处:http://eksliang.iteye.com/blog/2097184
1.-------------------------------------------tomcat 目录结构
config:存放tomcat的配置文件
temp :存放tomcat跑起来后存放临时文件用的
work : 当第一次访问应用中的jsp
浅谈:APP有哪些常被黑客利用的安全漏洞
gg163
APP
首先,说到APP的安全漏洞,身为程序猿的大家应该不陌生;如果抛开安卓自身开源的问题的话,其主要产生的原因就是开发过程中疏忽或者代码不严谨引起的。但这些责任也不能怪在程序猿头上,有时会因为BOSS时间催得紧等很多可观原因。由国内移动应用安全检测团队爱内测(ineice.com)的CTO给我们浅谈关于Android 系统的开源设计以及生态环境。
1. 应用反编译漏洞:APK 包非常容易被反编译成可读
C#根据网址生成静态页面
hvt
Web.netC#asp.nethovertree
HoverTree开源项目中HoverTreeWeb.HVTPanel的Index.aspx文件是后台管理的首页。包含生成留言板首页,以及显示用户名,退出等功能。根据网址生成页面的方法:
bool CreateHtmlFile(string url, string path)
{
//http://keleyi.com/a/bjae/3d10wfax.htm
stri
SVG 教程 (一)
天梯梦
svg
SVG 简介
SVG 是使用 XML 来描述二维图形和绘图程序的语言。 学习之前应具备的基础知识:
继续学习之前,你应该对以下内容有基本的了解:
HTML
XML 基础
如果希望首先学习这些内容,请在本站的首页选择相应的教程。 什么是SVG?
SVG 指可伸缩矢量图形 (Scalable Vector Graphics)
SVG 用来定义用于网络的基于矢量
一个简单的java栈
luyulong
java数据结构栈
public class MyStack {
private long[] arr;
private int top;
public MyStack() {
arr = new long[10];
top = -1;
}
public MyStack(int maxsize) {
arr = new long[maxsize];
top
基础数据结构和算法八:Binary search
sunwinner
AlgorithmBinary search
Binary search needs an ordered array so that it can use array indexing to dramatically reduce the number of compares required for each search, using the classic and venerable binary search algori
12个C语言面试题,涉及指针、进程、运算、结构体、函数、内存,看看你能做出几个!
刘星宇
c面试
12个C语言面试题,涉及指针、进程、运算、结构体、函数、内存,看看你能做出几个!
1.gets()函数
问:请找出下面代码里的问题:
#include<stdio.h>
int main(void)
{
char buff[10];
memset(buff,0,sizeof(buff));
ITeye 7月技术图书有奖试读获奖名单公布
ITeye管理员
活动ITeye试读
ITeye携手人民邮电出版社图灵教育共同举办的7月技术图书有奖试读活动已圆满结束,非常感谢广大用户对本次活动的关注与参与。
7月试读活动回顾:
http://webmaster.iteye.com/blog/2092746
本次技术图书试读活动的优秀奖获奖名单及相应作品如下(优秀文章有很多,但名额有限,没获奖并不代表不优秀):
《Java性能优化权威指南》