【已解决】MyEclipse报错Cannot create PoolableConnectionFactory Access denied for user ‘root’@’localhost’

Cannot create PoolableConnectionFactory Access denied for user ‘root’@’localhost’

遇到这个错误可以在”C:\Program Files\Apache Software Foundation\Tomcat 7.0\conf\server.xml”文件中查找: username=”root”,将相关的password修改为正确的值就可以了。(其中粗体部分为安装路径。)

  <GlobalNamingResources>
    <!-- Editable user database that can also be used by
         UserDatabaseRealm to authenticate users
    -->
    <Resource name="UserDatabase" auth="Container"
              type="org.apache.catalina.UserDatabase"
              description="User database that can be updated and saved"
              factory="org.apache.catalina.users.MemoryUserDatabaseFactory"
              pathname="conf/tomcat-users.xml" />
    <Resource name="jdbc/webdb" auth="Container"
			  type="javax.sql.DataSource"
			  driverClassName="com.mysql.jdbc.Driver"
			  url="jdbc:mysql://localhost:3306/webdb?characterEncoding=utf-8"
			  username="root"
			  password="root"
			  maxActive="200"
			  maxIdle="50"
			  maxWait="3000"/>
  </GlobalNamingResources>

【已解决】戴尔笔记本wifi速度慢的问题。

我新买的戴尔笔记本电脑灵越游匣15PR-6648B的wifi速度很慢,连接5G网络只能达到200KB/s的速度,网络正常速度为11.2MB/s。

我试过很多办法,都没用,后来用360驱动大师装了下无线网卡Intel(R) Dual Band Wireless-AC 3165的版本为19.71.0.100的驱动并重新启动,好了一段时间。

但把笔记本带去外地一段时间后,再回到家里,即使使用上述驱动也不顶用了。

在外地的时候去网上查到一篇英文文章,说是戴尔笔记本开机无法超过24小时,结果禁用了SmartByte服务就好了。说这个服务是从killer移植过来的,而killer有的时候就会导致网络传输速度很慢。

这个是SmartByte软件运行的截图:

直接关掉开关的话仍会限速.

所以,这个问题的终极解决办法是卸载SmartByte及SmartByte Drivers And Services程序(我用的是360软件管家卸载的)。

当然,也可以禁用SmartByte Drivers And Services服务,这样也管用。下面是网络故障时的记录。

网络问题:

笔记本的wifi无线网卡网速很慢,只有200KB/S。

台式机使用无线网卡的速度就很快,能达到11MB/S。

笔记本的有线连接速度很快,能达到11MB/S。

笔记本连接wifi的时候,局域网文件的传输速度能达到11MB/S。

笔记本连接另一个wifi路由器的时候,网速能达到11MB/S。

笔记本用台式机的无线网卡的时候网速很快,能达到11MB/S。

已解决,是笔记本无线网卡驱动的问题,更换驱动后可以达到11MB/S。

有个问题,就是刚更新完驱动快了一阵,然后就又降到200KB/S了。

【已解决】在 本地计算机 无法启动 DCOM 服务器进程启动器 服务。

计算机有个问题,就是启动DCOM服务器进程启动器这个服务的时候提示:
在 本地计算机 无法启动 DCOM 服务器进程启动器 服务。
错误 1058: 无法启动服务,原因可能是已被禁用或与其相关联的设备没有启动。

解决方法是:找到DCOM服务并打开属性,选择登录选项卡,选择硬件设置文件Profile1,点击启用。

确定关闭对话框后再启动服务即可。

【已解决】httpwebrequest并发速度上不去的原因.

用VB.NET做httpwebrequest的多线程开发,照着网上的说明修改了ServicePointManager.DefaultConnectionLimit为512,可是速度还是上不去.

郁闷了一上午,最后找到原因了:原来是杀毒软件的缘故.

加了360和360杀毒的白名单后,速度提高了很多倍.

以下为测试数据:

2131个网址:
50 threads 860s=14.33min
100 threads 856s=14.26min 846s=14.1min
100 tasks 852s=14.2min

杀毒软件设置例外后:
50 threads 218s=3.63min
100 threads 146s=2.43min
100 tasks 147s=2.45min

CHM文件的搜索功能帮助(摘自MSDN).

通过全文搜索查找信息

主题搜索的基本表达式由所需查找的词或短语组成。用户还可使用通配符表达式、嵌套表达式、布尔操作符、相似字匹配、前一次搜索结果的列表、或是主题的标题来优化搜索。

若要执行全文搜索

  1. 单击定位窗格中的“搜索”选项卡,然后键入要查找的词或短语。可使用右向箭头按钮在搜索表达式中加入布尔操作符。

  2. 单击“列出主题”。搜索程序将返回前五百项符合搜索表达式的结果。单击“标题”、“位置”或“级别”按钮可对该主题列表进行排序。
  3. 突出显示所需的主题,然后单击“显示”按钮,也可双击某主题来显示它。

优化全文搜索

可使用通配符表达式、嵌套表达式、布尔操作符来优化基本的搜索方法。另外也可在前一次搜索的结果列表中进行相似字匹配搜索,或只在主题的标题目录中搜索。

  • 选中“搜索上一次结果”复选框可使搜索只在前一次搜索结果上进行。 

  • 选中“匹配相似的单词”复选框可在全文搜索中进行相似拼写匹配。选中“匹配相似的单词”复选框,查阅器将不仅能匹配所键入的词或短语,而且能匹配它们合乎语法规则的二级变形字。例如,如果选中此复选框后再键入“add”,则 Library 查阅器就会找到“add”、“adds”、和“added”。该选项是独立于其他选项或语法的。如果只对标题进行搜索,则标题中的各种变形字也可以匹配。如果使用西文引号(或任何其他查询操作符),则可以匹配出该短语的各种变形;例如“stemmed search”可以匹配“stemming search”。
  • 选中“仅搜索标题”复选框可只在文档标题中搜索所需的字。

将主题中的被搜索词突出显示

在帮助主题中搜索某个词或短语时,可指定将搜索到的主题中被搜索的词或短语突出显示。

  • 单击 Library 查阅器上的“查看”菜单,然后选中“突出显示”选项以突出显示搜索到的词或短语。 

  • 单击 Library 查阅器上的“查看”菜单,然后取消“突出显示”选项,即可关闭此功能。

搜索表达式的语法

以下是构造查询表达式的基本规则:

  • 搜索表达式中的字母是不分大小写的,因此键入搜索表达式时使用大写字母或小写字母的效果相同。 

  • 搜索表达式可以是字母 (a–z) 和数字 (0–9) 的任意组合,但不能搜索单个字母(a、b、c 等)及下列保留字: an、and、as、at、be、but、by、do、for、from、have、he、in、it、not、of、on、or、she、that、the、there、they、this、to、we、which、with 和 you。 

  • 忽略搜索表达式中的标点符号,如句号 (.)、冒号 (:)、分号 (;)、逗号 (,) 和连字符 (-)。 

  • 可使用西文双引号 (“) 或圆括号括起搜索表达式中的各元素。注意:不能搜索引号。

附注 如果搜索的文件名带有扩展名,则应将整个字串包含在双引号中,(例如”filename.ext”)。否则搜索程序将会把句号认作 OR 操作符。

词、短语、和通配符

可对词或短语进行搜索,也可使用通配符。下表是对各种不同方法搜索结果的说明。

搜索示例结果
单个词Select包含“select”的主题。同时也可找到该词合乎语法规则的各种变形,如“selector”和“selection”。
短语“new operator”– 或者 –’new operator’包含短语“new operator”及其符合语法规则的各种变形的主题。如果没有引号,则此查询等同于指定一个新的 AND 操作符,它找到的是同时包含短语中各个单字的主题,而不是短语本身。
通配符表达式Esc*包含“ESC”、“escape”、“escalation”等的主题。其中星号所代表的可能不止一个字符。
80?86包含“80186”、“80286”、“80386”等的主题。其中问号只能代表一个字符。
*86包含“386”、“486”、“x86”、“QEMM386”、“8086”等的主题。

操作符:AND、OR、NOT、和 NEAR

使用AND、OR、NOT、和 NEAR 操作符可优化搜索。下表列出了这些操作符的用法。

搜索示例结果
两项共存的主题dib AND palette– 或者 –dib & palette同时包含有“dib”和“palette”的主题。
两项中二者居一的主题raster OR vector– 或者 –raster | vector<包含有“raster”或“vector”的主题。
只有第一项,而没有第二项的主题ole NOT dde– 或者 –ole ! dde包含有“OLE”,但不含有“DDE”的主题。
两项同时存在,且位置相近的主题。user NEAR kernel包含有“user”的主题,同时在该主题中“user”前后 8 个词的范围内应有“kernel”这个词。

嵌套表达式的使用规则

以下是用嵌套表达式来搜索主题的基本规则:

  • 在查询中可使用圆括号来嵌套表达式,圆括号内表达式的求值会先于查询的其余部分。 

  • 如果查询中没有嵌套表达式,则其求值顺序为从左到右。例如,表达式“Control NOT active OR dde”找到的主题将包含“control”,而没有“active”;或者包含“control”,而没有“dde”。而表达式“control NOT (active OR dde)”找到的主题将包含“control”,而且既没有“active”,也没有“dde”。 

  • 嵌套方式可用于创建更复杂的搜索表达式。例如,“control AND ((active OR dde) NEAR window)”找到的主题将包含“control”,同时“active”和“window”两个字离得很近;或者包含“control”,同时“dde”和“window”两个字离得很近。 

  • 表达式的嵌套深度最多为 5 层。 

【已解决】X79主板E5-2660CPU装Win10关机变重启的问题.

前两年在网上买的台式机主机,CPU是E5 2660,主板是X79,价格不是很贵,性价比很高.

但是在安装Win10后出现一个问题:就是关机操作大概率情况下会变成重新启动.

咨询了卖家,按网上说的修改电源选项中的快速启动选项,没有解决问题.

无奈,只好重新装回了Win7,一直用Win7………………..

直到今天,发现华南金牌(X79主板)的官方网站,抱着试试看的态度找了找固件,看能不能刷新bios,结果没有找到.

然后发现网站上有客服电话,问了问客服,看能不能刷新bios,结果在得知是win10关机变重启后,客服告知是win10的问题,可以通过调整一个选项来解决:

1.鼠标右键点击Windows开始菜单图标,选择”设备管理器”->通用串行总线控制器->”VIA USB 3.0 可扩展控制器 – 1.0 (Microsoft)”->属性->电源管理选项卡.

2.将”允许计算机关闭此设备以节约电源(A)”选项关闭即可.

这是客服发给我的截图:

我试了试,发现真的很管用,问题一下子就解决了.

试了很多次,都能成功正常关机.

小度自定义技能播放音频文件(可以暂停/继续)的例子.

参考例子:

https://github.com/dueros/bot-sdk-node.js/blob/master/samples/audio_play/Bot.js

1.将例子的代码做了一些必要的修改:增加了this.setExpectSpeech(false);关闭麦克风,不加这句会莫名其妙的停止播放音频.

2.增加了AudioPlayer.PlaybackFinished事件的处理函数,如果不加则会在播放一遍后自动退出技能.

注意:this.waitAnswer();用于保持技能会话状态,是必须加的,不加会退出.

const Bot = require('bot-sdk');
const privateKey = require("./rsaKeys.js").privateKey;
const Play = Bot.Directive.AudioPlayer.Play;
const Stop = Bot.Directive.AudioPlayer.Stop;
 
class DuerOSBot extends Bot {
    constructor(postData) {
        super(postData);
 
        this.addLaunchHandler(() => {
            let card = new Bot.Card.TextCard('欢迎使用动物叫声合成,你可以说开始播放');
            this.waitAnswer();
            return {
                card: card,
                outputSpeech: '欢迎使用动物叫声合成,你可以说开始播放'
            };
        });
 
        this.addSessionEndedHandler(() => {
            let directive = new Stop();
            this.endSession();
            return {
                directives: [directive],
                outputSpeech: '退出动物叫声合成,欢迎下次再来'
            };
        });
 
        this.addIntentHandler('audio_play_intent', () => {
            let card = new Bot.Card.TextCard('开始播放动物叫声合成');
            this.waitAnswer();
            this.setExpectSpeech(false);
            return {
                card: card,
                directives: [this.playSound(0)],
                outputSpeech: '开始播放动物叫声合成'
            };
        });
 
        this.addIntentHandler('ai.dueros.common.pause_intent', () => {
            let card = new Bot.Card.TextCard('已暂停播放');
            let directive = new Stop();
            this.waitAnswer();
            this.setExpectSpeech(false);
            return {
                card: card,
                directives: [directive],
                outputSpeech: '已暂停播放'
            };
        });
 
        this.addIntentHandler('ai.dueros.common.continue_intent', () => {
            let offsetInMilliSeconds = this.getSessionAttribute('offsetInMilliSeconds',0);
            let card = new Bot.Card.TextCard('继续播放动物叫声合成');
            this.waitAnswer();
            this.setExpectSpeech(false);
            return {
                card: card,
                directives: [this.playSound(offsetInMilliSeconds)],
                outputSpeech: '继续播放动物叫声合成'
            };
        });
        
        this.addEventListener("AudioPlayer.PlaybackStarted", event => {
            this.waitAnswer();
            this.setExpectSpeech(false);
            this.setSessionAttr(event);
        });
 
        this.addEventListener("AudioPlayer.PlaybackStopped", event => {
            this.waitAnswer();
            this.setExpectSpeech(false);
            this.setSessionAttr(event);
        });
        
        this.addEventListener("AudioPlayer.PlaybackNearlyFinished", event => {
            this.waitAnswer();
            this.setExpectSpeech(false);
            return {
                directives: [this.playSound(0,Play.ENQUEUE)]
            };
        });
 
        this.addEventListener("AudioPlayer.PlaybackFinished", event => {
            this.waitAnswer();
            this.setExpectSpeech(false);
        });
    }
 
    playSound(offset, pb = Play.REPLACE_ALL) {
        let directive = new Play('http://...略...', pb);
        directive.setToken('1234567890abcdef');
        if (offset != 0) {
            directive.setOffsetInMilliSeconds(offset);
        }
        return directive;
    }
 
    setSessionAttr(event) {
        //this.setSessionAttribute('token',event.token);
        this.setSessionAttribute('offsetInMilliSeconds',event.offsetInMilliSeconds);
    }
}
 
exports.handler = function(event, context, callback) {
    try {
        let b = new DuerOSBot(event);
        // 0: debug  1: online
        b.botMonitor.setEnvironmentInfo(privateKey, 0);
        b.run().then(function(result) {
            callback(null, result);
        }).catch(callback);
    } catch (e) {
        callback(e);
    }
}

该技能已通过审核并上线,可以使用.